2012年6月1日

gas_marco_advance

摘要: 在查阅unicore的memcpy函数时,感觉学到了不少东西,今天把一周的东西整理下,留下了这个文档,方便以后查阅文件 asm/hwcap.h/** linux/arch/unicore/include/asm/hwcap.h** Code specific to PKUnity SoC and UniCore ISA* Fragments that appear the same as the files in arm or x86** Copyright (C) 2001-2008 GUAN Xue-tao** This program is free software; you can 阅读全文

posted @ 2012-06-01 21:39 阿加 阅读(552) 评论(0) 推荐(0) 编辑

2012年5月30日

shell 调试

摘要: test.sh 1 #! /bin/sh 2 A=0 3 if [ ! -e test.bin ] 4 then 5 make 6 A=1 7 fi 8 9 mipsel-linux-objdump -D -m mips -b binary -EL -M no-aliases -z test.bin >my.dump 10 11 if [ $A = 1 ] 12 then 13 rm sramboot.o *bin *exe 14 fish -e 如果一个命令失败就立即退出sh -n 读入命令但是不执行它们sh -u 置换时把未设置的变量看作出错sh -v 当读入shell输入行时把他们 阅读全文

posted @ 2012-05-30 19:14 阿加 阅读(158) 评论(0) 推荐(0) 编辑

2012年5月19日

lwl,lwr

摘要: lwl,lwr,swl,swr中的指令后缀r(right),l(left)都是相对寄存器而言,load操作是把取到的部分数据,置入寄存器的left或者right,store操作时将寄存器中的数据的 left或者right部分写入目标地址。无论时大端和小端寄存器的格式都是固定的,即 寄存器中的有端时数据的低位,左端时数据的高位。非对齐访问的解决都是将原来的一条(对齐访问)完成的事分两步完成:首先取始地址addr到下一个对齐地址处的部分数据,按一定的顺序,置入寄存器的适当位置;然后取从该对齐地址到addr+len-1处的部分数据,按一定的顺序,置入寄存器的适当位置。lwr: 对于大端:从所指位置( 阅读全文

posted @ 2012-05-19 14:16 阿加 阅读(1302) 评论(0) 推荐(0) 编辑

2012年5月13日

attribute syntax

摘要: 可以差下GUN GCC ATTRITUBE SYNTAX,阅读源码的时候方便查阅Attribute SyntaxThis section describes the syntax with which__attribute__may be used, and the constructs to which attribute specifiers bind, for the C language. Some details may vary for C++ and Objective-C. Because of infelicities in the grammar for attribute 阅读全文

posted @ 2012-05-13 16:24 阿加 阅读(1033) 评论(0) 推荐(0) 编辑

0.12记录

摘要: 出自0.12:main()也是一个函数。这是因为在编译连接时它将会作为crt0.s汇编程序的函数被调用。crt0.s是一个桩(stub)程序,名称中的“crt”是“C run-time”的缩写。该程序的目标文件将被链接在每个用户执行程序的开始部分,主要用于设置一些初始化全局变量。通常使用gcc编译链接生成文件时,gcc会自动把该文件的代码作为第一个模块链接在可执行程序中。在编译时使用显示详细信息选项“-v”就可以明显地看出这个链接操作过程。因此在通常的编译过程中,我们无需特别指定stub模块crt0.o。为了使用ELF格式的目标文件以及建立共享库模块文件,现在的编译器已经把crt0扩展成几个模 阅读全文

posted @ 2012-05-13 16:20 阿加 阅读(395) 评论(0) 推荐(0) 编辑

2012年5月9日

union+int within assembly and C language

摘要: 只谈一个问题:head_common.S中__switch_data:.long init_thread_union + THREAD_START_SPinit_thread_union 使用ctags无法跳转,且链接脚本中没有init_thread_union,使用grep搜索下发现这是在arch/unicore/kernel/init_task.c3 中的联合体变量名称(无法跳转,且不再链接脚本中,即该文件根本汇编文件并不像C文件那样,需要包含头文件,再加extern外部声明)。所以我们在head_common.S中用一个C中的联合体变量名加上了一个常数值。这是因为一个C中联合体变量名被当 阅读全文

posted @ 2012-05-09 10:00 阿加 阅读(314) 评论(0) 推荐(0) 编辑

2012年5月8日

mov pc, r4 @ call kernel

摘要: mov pc, r4 @ call kernel 绝对跳转到r4:40008000处开始执行开始进入Image,Image由vmlinux生成,所以从vmlinux开始阅读理解。arch/unicore/kernel目录,据其链接脚本,从head.S开始:__lookup_processor_type:运用相对取址,取出proc_info_list,做出processor对比(因为一个镜像支持一种processor,该processor的信息从协处理器的c0:4d000863中取出)。这里首先要运用相对取值,因为我们编译的内核是按照虚拟地址进行编译链接的,其次是proc_info_list的存 阅读全文

posted @ 2012-05-08 19:23 阿加 阅读(827) 评论(0) 推荐(0) 编辑

2012年5月7日

call_kernel绝对跳转

摘要: misc.c中函数decompress_kernel的列表四个参数是:output_start:40008000,free_mem_ptr_p:sp, free_mem_ptr_end_p:sp+64K ,arch_id:9fc (arch_num个人感觉这个英文但其会引起歧义,arch_num的中文意思应该时架构号,改成mach_id可能更适合些,mach_id对应的中文时机器号)最终解压出的是Image放置在了40008000处unicore32-linux-objcopy -O binary -R .note -R .note.gnu.build-id -R .comment -S vm 阅读全文

posted @ 2012-05-07 08:52 阿加 阅读(444) 评论(0) 推荐(0) 编辑

2012年4月29日

Virtual Box安装win7

摘要: 原因:office + 硬盘描述: ubuntu12.04 2012年4月28装好,4月29号安装virtualbox; ubuntu /boot 2G /home 70G /swap 2G /其他 virtualbox 软件包自动搜索安装 win7 安装简单 用户增强功能实现共享: VBoxGu... 阅读全文

posted @ 2012-04-29 21:08 阿加 阅读(2061) 评论(0) 推荐(0) 编辑

2012年4月26日

从boot到bootstrap

摘要: do_bootm函数及其所调用的函数,根据头部的定位地址(mkimage –a的参数)将zImage搬移到指定的内存处),根据头部的入口地址(mkimage –e的参数)获得head.o在内存中的地址,设置r0、r1、r2跳到此处执行。boot传入r0=0,r1=machine_ID,r2=taglist (r0为0, r1为machine type, r2位参数列表的物理地址)在次过程中会开启Icache、Dcache,来加速开机过程程序中有一段称为 LC0的表,其中根据链接脚本确定了got段的起始和结束地址,bss段的起始和结束地址,栈的地址(比链接脚本中的指定的stack大于4),解压的 阅读全文

posted @ 2012-04-26 21:06 阿加 阅读(514) 评论(0) 推荐(0) 编辑

导航