UBOOT移植2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UBOOT移植2

开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板 交叉编译器:arm-linux-gcc4.3.2(一开始用的是编译内核的版本arm-linux-gcc3.4.1,但出现了软浮点问题,于是换成了现在用的版本,当然本人编译内核的时候还是用3.4.1版本)。 摘要:在上篇文章移植u-boot-2011.03到S3C2440(utu2440)方法与步骤###1. 配置和初步编译中 介绍了如何配置和裁减u-boot-2.011.03,并通过了初步编译。在此基础上,本文通过修改reille2440.h文件、分析u-boot入 口、修改start.S初始化代码段,利用tftp把编译出来的u-boot-2011.03镜像下载到SDRAM中,使其跑起来,可看到熟悉的u- boot启动信息。 1. 编辑include/configs/reille2440.h文件 把reille2440.h文件中的line38、39两行屏蔽掉,同时添加如下信息: //#define CONFIG_S3C2410??? 1????????? /* specifically a SAMSUNG S3C2410 SoC? 需要屏蔽该宏定义? */ //#define CONFIG_SMDK2410??? 1??? /* on a SAMSUNG SMDK2410 Board?? 需要屏蔽该宏定义 */ #define CONFIG_S3C2440???? 1?????????? /* specifically a SAMSUNG S3C2440 SoC */? #define CONFIG_REILLE2440??????????? /* on a SAMSUNG reille2440 Board? */? #define CONFIG_SKIP_LOWLEVEL_INIT 注意: 1) 打红色为添加信息(或者修改信息,以下同) 2) CONFIG_SKIP_LOWLEVEL_INIT是跳过底层一些初始化代码的宏开关,定义则跳过。如果编译的u-boot.bin用tftp下到SDRAM中运行,则需要定义该宏,特别注意! 3) 如果S3C2440的晶振用的不是12MHz的,则还需要修改CONFIG_SYS_CLK_FREQ的值! 2. uboot入口分析: 一般在嵌入式系统软件开发中,在所有源码文件编译完成之后,链接器要读取一个链接分配文件,在该文件中定义了程序的入口点、代码段、数据段等分配情 况。对于2440开发板,u-boot的这个链接文件就是cpu/arm920t/u-boot.lds,打开该文件部分代码如下: OUTPUT_FORMAT(“elf32-littlearm”, “elf32-littlearm”, “elf32-littlearm”) OUTPUT_ARCH(arm) //定义生成文件的目标平台是arm ENTRY(_start) //定义程序的入口点是_start SECTIONS { //其他一些代码段、数据段等分配 . = 0 . = ALIGN(4); .text : { cpu/arm920t/start.o??? (.text) *(.text) } ……………… ……………… } 知道了程序的入口点是_start,那么我们就打开2440开发板u-boot第一个要运行的程序cpu/arm920t/start.S,查找到_start的位置如下: .globl _start _start: b?????? start_code??? //将程序的执行跳转到start_code处 从这个汇编代码可以看到程序又跳转到start_code处开始执行,那么再查找到start_code处的代码如下: /* * the actual start code */ start_code: /* * set the cpu to SVC32 mode */ mrs??? r0,cpsr bic??? r0,r0,#0x1f orr??? r0,r0,#0xd3 msr??? cpsr,r0 bl coloured_LED_init? //此处两行是对AT91RM9200DK开发板上的LED进行初始化的 bl red_LED_on 由此可以看到,start_code处才是u-boot启动代码的真正开始处。 3. 在arch/arm/cpu/arm920t/start.S文件中修改相关初始化代码:对S3C2440一些寄存器的支持、添加中断禁止部分和时钟设置部分 在start.S文件的164行至175行,用下面代码替换: # if defined(CONFIG

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档