科创园

科创园地,分享技术知识,为科技助力发展,贡献一己之力。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

04 2012 档案

摘要:下面结合移植uboot到 s3c2440来分析如何改写相关的uboot源码(上节已经给出uboot源码,可以参考)根据cpu/arm920t/u-boot.lds中指定的连接方式: 看一下uboot.lds文件,在board/smdk2410目录下面,uboot.lds是告诉编译器这些段改怎么划分,GUN编译过的段,最基本的三个段是RO,RW,ZI,RO表示只读,对应于具体的指代码段,RW是数据段,ZI是归零段,就是全局变量的那段。Uboot代码这么多,如何保证start.s会第一个执行,编译在最开始呢?就是通过uboot.lds链接文件进行OUTPUT_FORMAT("elf32- 阅读全文

posted @ 2012-04-17 21:57 科创园 阅读(4172) 评论(0) 推荐(0)

摘要:还记得上节中,u-boot.lds文件连接的内容吗??代码段 数据段 命令段 bss段下面来看第一部分:代码段,对应于uboot的第一阶段 start.S文件附上代码:#include <config.h>#include <version.h>/* ************************************************************************* * * Jump vector table as in table 3.1 in [1] * ***************************************** 阅读全文

posted @ 2012-04-17 21:41 科创园 阅读(707) 评论(0) 推荐(0)

摘要:首先来回顾一下上节,主要介绍了uboot的第一个文件Makefile,注意点有哪两个呢?第一:交叉编译第二:配置下面主要分析第二个文件:u-boot.lds先看源码:*/OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/OUTPUT_ARCH(arm)ENTRY(_start) 阅读全文

posted @ 2012-04-17 21:02 科创园 阅读(870) 评论(0) 推荐(0)

摘要:现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次 阅读全文

posted @ 2012-04-17 09:26 科创园 阅读(769) 评论(0) 推荐(0)

摘要:大家用source insight看linux源码的时候都遇到这么一个麻烦,makefile和kconfig中的文字在搜索的时候不能找到,这是因为source insight默认是不选makefile的,也没有konfig这种类型的文件。下面就讲一下如何添加makefile:打开Source Insight,在新建工程之前,进入Options -> Document Options-> 点击Document Type的下拉框,然后选择Make File,在右边的File Filter中,在原先的*.mak后面加上一个分号,即多个不同过滤规则以分号间隔开,再加上*makefile,变 阅读全文

posted @ 2012-04-16 17:14 科创园 阅读(25541) 评论(2) 推荐(2)

摘要:UltraEdit 每次打开新文件的时候,都提示:文件可能不是DOS格式,你要转换 File 为 DOS 格式吗?取消的处理办法: 高级 -> 配置 -> 文件处理 -> DOS/UNIX/MAC 处理 -> UNIX/MAC 文件检测/转换 中,取消原先选择的检测文件类型并提示进行更改,选取 禁用,这样,就不会再出现讨厌的提示了。For English version:Advanced -> configuration -> Load/Save/Conversions -> Unix/Mac filedetection/conversion -> 阅读全文

posted @ 2012-04-15 11:01 科创园 阅读(2911) 评论(0) 推荐(0)

摘要:先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1; i = i << 2; //把i里的值左移2位 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因) 需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0 阅读全文

posted @ 2012-04-04 11:15 科创园 阅读(145222) 评论(4) 推荐(10)