摘要: 链接脚本什么是链接脚本?程序链接时的参考文件,目的是描述输入文件中各段应该怎样被映射到输出文件,以及程序运行时的内存布局等为什么需要链接脚本?程序运行在OS之上时,不需要显式指定链接脚本,默认使用OS相关链接命令内置的脚本,可避免出错程序运行在OS之下时,或者本身就是OS时,链接脚本就很重要。要根据实际环境去编写链接脚本才不容易出错示例代码ENTRY(helloworld)SECTIONS{ . = 0x00000000; .text :{ *(.text) } . = ALIGN(32); .data :{ *(.dat... 阅读全文
posted @ 2014-03-25 19:58 吉吉的轨迹 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 链接文件U-Boot.lds旧版本:board/smdk2440/u-boot.lds新版本:arch/arm/cpu/U-Boot.lds,此外还有个U-Boot-spl.ldsTEXT_BASE地址作用:U-Boot放在以TEXT_BASE作为起始地址的内存中旧版本:board/smdk2440/config.mk ,名称:TEXT_BASE新版本:include/configs/tiny210.h,定义:#define CONFIG_SYS_TEXT_BASE 0x34800000注意:新版本中,某些架构的开发板仍在老地址board//config.mk中定义,但名称也已经统一... 阅读全文
posted @ 2014-03-25 16:53 吉吉的轨迹 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 在文件夹下(包括所有目录)中查找某个字符串grep 'string_name' directory_name -R举例: grep 'haha' . -R在文件夹下(包括所有目录)中查找某个文件finddirectory_name -name file_name举例:find . -name config.mk 阅读全文
posted @ 2014-03-25 15:47 吉吉的轨迹 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 版本命名方式新版本:2008年8月之后的版本旧版本:2008年8月及之前的版本举个例子:旧版本U-Boot-1.16新版本U-Boot-2014.01目录结构的变化新版本:2010年6月之后的版本旧版本:2010年3月之前的版本旧版本的cpu目录,在新版本下位于新增的arch目录下,这样的改变时目录结构更明确旧版本cpu新版本arch/cpu顶级Makefile和boards.cfg新版本:2012年10月之后的版本旧版本:U-Boot-1.1.6 究竟是哪个版本开始改未求证对于移植中的make _config命令旧版本顶级Makefile中修改新版本boards.cfg中修改 这里b... 阅读全文
posted @ 2014-03-25 15:06 吉吉的轨迹 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 很简单~在自己家目录新建一个".vimrc"文件,不过可能你之前就已经有了,有了的话直接在最后添加如下命令就可以了:set nocompatiblesyntax oncolo defaultdefault是默认的配色方案,如果你不喜欢,你还可以选择如下配色方案:查看一下 /usr/share/vim/vim73/colors/xxx.vim, xxx就是配色方案的名字README.txt //这里有个READMEdefault.vim elflord.vim morning.vim peachpuff.vim slate.vimblue.vim delek.... 阅读全文
posted @ 2014-03-24 13:09 吉吉的轨迹 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 对于计算机专业的我来说,看到MPLL、UPLL、FCLK、HCLK、PCLK这些词真是头晕啊,上网查了下资料,总结如下MPLL和UPLL首先MPLL和UPLL是两个PLL(phase locked loop),这是电子电路的东西。好吧,我表示也不懂 = =bMPLL用于CPU和其他外围部件,而UPLL用于USB接口MPLL和UPLL用于产生FCLK、HCLK、PCLK三种频率,这3种频率有不同的用途FCLK、HCLK和PCLKFCLK、HCLK和PCLK是三种不同的频率FCLK为CPU提供的时钟信号。CPU相关频率HCLK是为Advanced High-performance Bus提供的时钟 阅读全文
posted @ 2014-03-12 17:31 吉吉的轨迹 阅读(2823) 评论(0) 推荐(1) 编辑
摘要: 今天看《Linux应用开发完全手册》U-Boot部分,发现.lds文件不知道是什么,上网查了一下资料,总结如下,不过还是有些问题待解决,大家知道可以一起讨论哈!参考资料:http://blog.csdn.net/wenjie345304221/article/details/6859272,谢谢原作者!.lds文件的作用决定可执行程序(这里是指U-Boot)各个段的 存储位置 和 入口地址,即设置U-Boot的链接地址.lds文件的使用编写好 .lds 文件后,在用arm-linux-ld连接命令时用选项”-T 文件名“来调用执行,也可用“-Ttext 地址”参数直接指定链接地址例如:&quo 阅读全文
posted @ 2014-03-11 09:52 吉吉的轨迹 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 汇编语言:JC: Jump if carry, 如果进位标志是1,就跳转JNC:Jump if not carry,如果进位标志是0,就跳转JAE:Jump if above or equal,大于或等于时,就跳转JBE:Jump if below or equal,小于或等于时,就跳转JB: Jump if below,小于时,就跳转EQU:在程序开头时用,相当于#define宏定义RET:return,与C语言的return作用一样软驱读盘顺序:读18个扇区(sector)切换另一面磁头继续读(header)切换柱面,从第1个扇区开始读(cylinder)段寄存器:来源:设计BIOS的时代 阅读全文
posted @ 2014-03-04 22:54 吉吉的轨迹 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 汇编语言指令ORG:origin,指定程序从某个地址开始,即把程序装载到内存的某个地址。 如:ORG 0x7c00,0x7c00作为是英特尔指定的。JMP:jump,跳转指令。entry, msg, loop:自定义标签,随便是什么都可以,代表了某个地址,仅仅代表单纯的数字,通过ORG计算出来的,用于指定JMP指令跳转目的地。MOV:move,赋值。如:MOV AX, 0,表示“AX = 0”。 值得注意的是,例如MOV SS, AX,SS被赋值后,AX原来的值还在,并没有变空。而且,MOV源数据和目的数据的位数必须相同。[]:表示内存地址,但只有BX、BP、SI、DI可以,其他寄存器不行,因 阅读全文
posted @ 2014-02-26 00:32 吉吉的轨迹 阅读(433) 评论(0) 推荐(1) 编辑
摘要: 完成了什么:使用二进制编辑器编写了helloos.img使用qemu加载helloos.img,并成功启动,显示Hello, world学到了什么:CPU:其实什么都不懂,只是能把 数字0和1 与 电信号开和关 对应起来,把二进制数转换成电信号。给每个文字编号(即文字编码),从而把文字转换成电信号。后来找到图片、音乐等转换成电信号的方法,CPU的应用范围就越来越广。使用十六进制的原因,就是与二进制互相转换方便。批处理命令:就是一次处理一连串命令。扇区:计算机读写盘时,并不是一个个字节地读,而是以512字节为一个单位进行读写,故512字节就成为一个扇区。启动区:软盘的第一个扇区,即只有512字节 阅读全文
posted @ 2014-02-24 23:45 吉吉的轨迹 阅读(293) 评论(0) 推荐(0) 编辑