- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于OK-2440III的u-boot移植.
??? 基于OK-2440III的u-boot移植(一)u-boot的工作过程与硬件关系密切,所以在移植时必须对S3C2440等芯片手册和开发板的硬件有一定的了解。其工作流程主要分为两个部分涉及两个主要的文件:cpu/arm920t/start.S和lib_arm/board.c,先从前面的汇编程序中执行,再跳到后面的C程序中。
???? 移植思路参考网上友友分为六个步骤:(1)建立好开发板相关的文件,并利用交叉编译器编译生成bin文件用于下载到开发板中运行;(2)修改相关硬件配置,让uboot能在sdram中运行调试;(3)修改norflash相关配置,让uboot在norflash中启动运行;(4)修改nandflash相关配置,让uboot在nandflash中启动运行;(5)增加uboot的功能,如网络、USB等;(6)引导Linux系统启动。
一.移植环境
目标板:飞凌的ok-2440III开发板(ARM9)
芯片型号:三星的S3C2440
Uboot版本:u-boot-2009.08
宿主机:RedHat Linux AS5
交叉编译器:arm-linux-gcc-4.3.2
二.编译
1.建立板级文件夹:
(1)在board/samsung目录下新建文件夹ok2440,找到相似的板级文件夹smdk2410,并把该文件夹中的所有文件拷贝到ok2440下;
(2)到ok2440目录下,把文件smdk2410.c重命名为ok2440.c;修改该目录下Makefile中的目标(COBJS),把smdk2410.o改为ok2440.o;
2.建立芯片级文件夹:
直接用cpu/arm920t芯片文件夹,不做修改;
3.建立配置文件:
到include/configs目录下,找到相似的配置文件smdk2410.h,将其拷贝并重命名为ok2440.h;
4.建立编译规则:
在根目录下的Makefile中找到ARM体系架构中smdk2410的编译规则
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
在此处添加ok2440的编译规则
ok2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t ok2440 samsung s3c24x0
(注意Makefile中命令行要以tab键开头)
5.在宿主机linux环境下编译:
在终端进入uboot的根目录下执行两条命令:
# make ok2440_config
# make
(注:执行make命令时,前提是在linux下arm-linux-gcc-4.3.2的安装目录设为PATH环境变量,即交叉工具arm-linux-命令的版本是4.3.2??
或者执行:#make CROSS_COMPILE=(arm-linux-的安装目录))
(6.由上面编译生成在根目录下的u-boot.bin就可以下载到开发板中,不过还需修改配置才能运行)基于OK-2440III的u-boot移植(二)三、在SDRAM中调试运行
(在 基于OK-2440III的u-boot移植(一) 编译通过后修改一下内容)
(注:此移植过程中没有新添加S3C2440的编译条件,都是用原来S3C2410的编译条件)
1.下载到内存中调试时不进行底层初始化、不进行uboot代码拷贝,所以在配置文件include/configs/ok2440.h中加入两句:
#?? define CONFIG_SKIP_LOWLEVEL_INIT??? 1????
#?? define CONFIG_SKIP_RELOCATE_UBOOT??? 1
2.修改cpu/arm920t/start.S相关部分:
(1).在定义S3C2410的寄存器地址处添加以下寄存器的定义:
#?? define LOCKTIME??? 0x4C000000
#?? define MPLLCON???? 0x4C000004
#?? define UPLLCON???? 0x4C000008
#?? define CAMDIVN???? 0x4C000018
(2).修改屏蔽中断的位数,如下:
# if defined(CONFIG_S3C2410)
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
(3).在中断屏蔽完成后添加下面两个寄存器的配置:
???? ldr r0,=LOCKTIME
???? mov r1,#0xffffff
???? str r1,[r0]
???
文档评论(0)