uboot移植整理.doc_第1页
uboot移植整理.doc_第2页
uboot移植整理.doc_第3页
uboot移植整理.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.Make 编译uboot出错:board.c:138: error: inline function coloured_LED_init cannot be declared weakboard.c:140: error: inline function red_LED_on cannot be declared weakboard.c:142: error: inline function red_LED_off cannot be declared weakboard.c:144: error: inline function green_LED_on cannot be declared weakboard.c:146: error: inline function green_LED_off cannot be declared weakboard.c:148: error: inline function yellow_LED_on cannot be declared weakboard.c:150: error: inline function yellow_LED_off cannot be declared weakmake1: * board.o 错误 1make1:正在离开目录 /opt/u-boot-1.3.4/lib_armmake: * lib_arm/libarm.a 错误 2开始编译的时候会出现上面的错误,继续移植操作这个错误将消失。或者注释掉出错行。*挂载文件系统时候的错误:*TCP cubic registeredNET: Registered protocol family 17drivers/rtc/hctosys.c: unable to open rtc device (rtc0)VFS: Unable to mount root fs via NFS, trying floppy.VFS: Cannot open root device nfs or unknown-block(2,0)Please append a correct root= boot option; here are the available partitions:1f00 16 mtdblock0 (driver?)1f01 2048 mtdblock1 (driver?)1f02 4096 mtdblock2 (driver?)1f03 2048 mtdblock3 (driver?)1f04 4096 mtdblock4 (driver?)1f05 10240 mtdblock5 (driver?)1f06 24576 mtdblock6 (driver?)1f07 16384 mtdblock7 (driver?)Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0) (unwind_backtrace+0x0/0xf0) from (panic+0x54/0x17c)解决方法:保证传入的命令行参数正确无误,保证NFS配置成功,rootfs正确,可以重启机器试试。错误:error: common/libcommon.a(main.o) uses FPA instructions, whereas u-boot does not/opt/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-ld: failed to merge target specific data of file common/libcommon.a(main.o)不使用新的4.4.3版本的编译工具,改为以前的3.4.5版本的arm-linux-gnu-gcc.*编译好的uboot下载到板子上没有任何的输出内容?*可能是自动拷贝的4KB代码不能完成自启动,更改根目录下的Makefile文件:将一行改为如下形式:_LIBS := $(subst $(obj),$(LIBBOARD) $(subst $(obj),$(LIBS)interrupts.c:184:3: #error tbclk not configuredinterrupts.c: In function get_tbclk:interrupts.c:175: warning: tbclk might be used uninitialized in this functionmake1: * interrupts.o 错误 1make1:正在离开目录 /opt/u-boot-1.3.1/cpu/arm920t/s3c24x0解决办法:进入cpu/arm920t/s3c24x0/interrupts.c文件,定位到错位的地方:#elif defined(CONFIG_SBC2410X) | defined(CONFIG_SMDK2410) | defined(CONFIG_VCMA9)tbclk = CFG_HZ;#else#error tbclk not configured#endif 只需将SMDK2410改为FS2410即可。2. 注意:在添加代码的时候要注意添加的位置,不要放在#ifdef 条件编译中了! 不必做Nor 启动方式,只做Nand启动即可。3.uboot移植完成了支持Nand Flash读写;支持从Nor/Nand Flash启动 支持CS8900网卡,支持Yaffs2文件系统等功能。*涉及到的几个重要目录:* A . 建立自己的开发板项目并测试编译: 因FS2410是基于参考板smdk2410,资源差不多,所以我们就参考smdk2410在board/下建立自己开发板的项目fs2410,所以就以smdk2410项目的代码作为模板,以后再修改。在 board/fs2410/目录下有几个重要文件,主要依赖板子(有fs2410.c boot_init.c flash.c uboot.lds Makefile lowlevel_init.c config.mk)。 B. 根目录下的Makefile文件, C. include/configs/fs2410.h文件 D . cpu/arm920t/start.S文件 E . 上面的汇编代码中,调用了一个C函数CopyCode2Ram(),这个函数我们用来实现把代码从NOR/NAND中将代码拷贝到SDRAM中,为了实现了,在board/fs2410/下,新建boot_init.c,如下:#vi board/fs2410/boot_init.c F . 在u-boot中添加对我们开发板上Nor Flash的支持. #vi include/configs/fs2410.h #vi board/fs2410/flash.c G .让开发板对CS8900网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。 1. #vi include/configs/fs2410.h 2. 实现u-boot引导Linux内核启动 首先,确定u-boot中的MACH_TYPE。在u-boot的include/asm-arm/mach-types.h文件中针对不同的CPU定义了非常多的MACH_TYPE: #define MACH_TYPE_SMDK2410 193 /针对2410的MACH_TYPE码的值定义为193 那么我们就修改u-boot的MACH_TYPE代码引用部分,确定u-boot的MACH_TYPE。如下: #vi board/fs2410/fs2410.c /在board_init()函数 /* arch number of SMDK2410-Board */ gd-bd-bi_arch_number = MACH_TYPE_SMDK2410; 而kernel的MACH_TYPE代码引用部分,确定kernel的MACH_TYPE。是通过一个宏引用的,如下: #viarch/arm/mach-s3c2410/mach-smdk2410.c MACHINE_START(S3C2410, SMDK2410) 3.下面添加内核zImage的启动支持 #vi common/cmd_boot.c 修改common/cmd_boot.c文件,添加内核启动参数设置 4.下面添加Uboot对uImage的启动支持:#vi include/configs/fs2410.h H. 在u-boot中添加对我们开发板上Nand Flash的读写支持和保存环境变量到NAND FLASH中支持. a.所以s3c2410_nand.c下对nand操作的函数就是我们做移植需要实现的部分了, 他与具体的Nand Flash硬件密切相关。因为s3c24x0的2440和2410对nand控制器的操作有很大的不同,为了区别,这里我们就建立一个s3c2410_nand.c文件,在这里面来实现对nand的操作,代码如下:新建nand_flash.c文件: Vi cpu/arm920t/s3c24x0/nand_flash.c 然后在开发板配置文件include/configs/fs2410.h文件中定义支持Nand操作的相关宏 再添加NAND FLASH的相关寄存器定义和JFFS2的支持。 修改一下commonenv_nand.c b.从启动信息看,有一个警告信息“* Warning - bad CRC or NAND, using default environment”,我们知道,这是因为我们还没有将u-boot的环境变量保存nand中的缘故,那现在我们就用u-boot的saveenv命令来保存环境变量。 我们是要保存到Nand中,原来,u-boot在默认的情况下把环境变量都是保存到Nor Flash中的,所以我们要修改代码,让他保存到Nand中,如下:#vi include/configs/fs2410.h总结:uboot1.3.1和uboot1.3.4区别不是很大,在移植过程中发现uboot1.3.4在cpu/arm920t/s3c24x0/目录下有个nand.c文件,而在uboot1.3.1中没有发现,这个文件可能就是对nand操作的实现函数,我们可以不用新建nand_flash.c文件。 uboot支持很多平台,与一个具体平台相关的主要有三个地方:1、./include/configs/fs2410.h, 主要定义了flash、sdram的起始地址等信息,一般要修改flash的起始地址、大小,有时候会有位宽等。2、./board/fs2410/*, 这个目录下主要有两三个.c文件,主要为该平台的初始化和flash操作的函数。有时候flash的操作需要修改,不过一般都是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论