Uboot2010.03移植笔记
来源:互联网 发布:怎样学c语言 编辑:程序博客网 时间:2024/05/22 23:22
移植UBOOT之前看了好多资料,迟迟没有下手,最近终于动手了。
新手一个,笔记之中难免有许多错误的地方,希望大神们能够指正!!!
本人语文比较烂,组织的不好请见谅!!
建议的资料:
韦东山老师的第一期视频的UBOOT移植部分
《mini2440之U-boot移植详细手册》
《OK6410的u-boot2010.03移植过程》
个人觉得都是挺不错uboot移植资料
废话不多说了,开始移植吧!!
开发板:OK6410
256M MDDR EDD10163BBH-5BLS-F
1G SLC-NAND MT29F8G08ABABAWP
Uboot版本:2010.03
SourceInsight版本:3.5 (简称SI)
UBOOT文件结构
移植之前先看看UBOOT的文件结构如何,打开uboot的README
找到这样的介绍:
其中board、cpu、drivers是与我们板子关联比较大的代码
进入uboot后发现以lib_开头的文件夹应该是与架构有关的库
如lib_arm lib_i386 lib_avr………
但也不全是如lib_generic
由于我们使用的是ARM架构CPU所以基本上可以将除lib_arm,lib_generic ,libfdt以外的文件夹都删除掉
Cpu文件夹也是这样的结构,arm1176文件夹其他无关的都可以删掉
继续看其他文件夹发现board里面是板级文件,里面有一个Samsung文件夹留着其他删掉。
Include里面一些以asm-开头的文件件也可以删除,保留asm-arm和asm-generic
再进入asm-arm里,发现有有许多文件夹,只保留arch-s3c64xx文件夹,其他以arch-开头的全删掉
删掉一些文件夹后发现清爽多了。
在进入board/samsung后发现只有6400 2440 2410….几个文件夹,看来这个版本的uboot并未支持6410,不过不要紧6400看起来就和6410很近,那我们先将6400 copy一份改为6410
再进入6410目录,将smdk6400.h改为smdk6410.h
打开smdk6410.h发现里面包含了smdk6400.h,我是6410怎么能够包含6400的头文件,马上改成6410。将里面所有文件中包含的smdk6400改为smdk6410,既然没有6410的文件夹,那么我想也应该没有6410的头文件。那赶快去arm/arch目录下找找吧!。。。。。。怎么没发现这个路径呢?(该包含路径是配置后生成的连接路径)那么smdk6400.h放在哪呢?看看u-boot的目录就清楚了吧!对,就是include文件夹中,进去后发现有个asm-arm继续在发现一个arch-s3c64xx,在进去发现s3c6400.h,copy为s3c6410.h
(当然你可以搜索文件,这样是最快的,哈哈)
配置sdmk6410
打开顶层Makefile,搜索smdk6400,找到这样一段
我们照葫芦画瓢copy一下然后把里面的6400全改成6410
由上面可知配置6410是会在/nand_spl/board/Samsung建立smdk6410的文件夹
我们进入那个文件夹,吧6400复制为6410,然后删除所有6400文件夹
提示:Makefile详细解释请参照http://blog.chinaunix.net/uid-11319766-id-3050283.html
感觉博主分析的很好
试编译
将文件清理修改之后,看看能不能编译出一个uboot(至少让编译器不报错,不管编译出的文件能不能运行)我们试着去编译一下,将u-boot的文件夹拷贝到虚拟机上,进入该目录执行
make smdk6410_config
出现这句话说明配置成功
接着执行make
发现有错
第一行提示:没有找到configs目录下的smdk6410.h,既然没有那我们再copy一个呗
进入include/configs目录将smdk6400.h复制为smdk6410.h(命令mv smdk6400.h smdk6410.h)
改好后继续make
又发现一个错误
这个和上面的错误不同的是:这个提示的是”没有规则……”,而不是上面的error,那就应该不是编译器报错,而可能是Makefile提示的错误,那我们进到/board/Samsung/smdk6410中看看,打开其中的Makefile,发先其中COBJS-y:=smdk6400.o
既然生成的目标是smdk6400.o那么依赖的文件应该是smdk6400.c我们将其改为smdk6410.o保存,再次make
发现又有一个错误
提示没有FPGA这个目录,其中没有error字样,应该是Makefile提示的
是不是我们将FPGA这个无关项删掉了呢!确实 删了 那怎么办难道要重新解压 更改 吗??
既然FPGA是无关的那他为什么要将其编译进去呢?
FPGA目录删掉了,那就不存在FPGA目录里面的MAKEFILE报错可能,而drives目录没有Makefile所以只能是顶层目录将其添加进去了,搜索顶层Makefile发现这样的一句
在其前面加上“#”将其注释
再次编译
问题又来了
发现进入死循环了,(Ctrl+c停掉)提示找不到目录,不慌,进去/nand_spl/board/Samsung/smdk6410一探究竟执行(ls –l)命令,发现里面是连接文件
而lowlevel_init.s连接到了一个被删除了的文件夹中,这个错误又没有error字样,看这个目录下的Makefile吧 打开搜索lowlevel_init发现
这个文件来自smdk6400的目录,改成6410再来编译
(这就是为什么要将原来的smdk6400文件夹删除的原因,否则这个地方没问题,但是你发现你修改了smdk6410下的lowlevel_init.s却没效果,那时这个问题就难找了。应为连接的根本不是smdk6410文件夹下的lowlevel_init.s)
大功告成,,编译成功!但是这个u-boot只是编译成功了,能不能用不知道
试下吧,(结果可想而知,当然没反应啊!如果你的板子有反应那当然更好)
注意修改代码后要保持虚拟机和windows中的代码的一致性,否则可能将你搞混
好今天先写到这,,,下次分析代码,并移植到OK6410上!
- Uboot2010.03移植笔记
- uboot2010-03移植步骤
- OK6410(256MRAM2Gnandflash) uboot2010.03移植笔记
- OK6410(256MRAM2Gnandflash) uboot2010.03移植笔记之error小结
- uboot2010.3移植tiny6410
- 六、uboot2010.09移植
- 七、uboot2010.09移植 (2011-03-13 21:58)
- 移植uboot2010.12到飞凌6410
- uboot2010.06移植中一点感想
- 移植uboot2010.06到TQ2440开发板详解之一
- 移植uboot2010.06到TQ2440开发板详解之二
- uboot2010.06移植之从nor flash启动分析
- 移植uboot2010.06到TQ2440开发板详解之一
- 移植uboot2010.06到TQ2440开发板详解之二
- uboot2010.03关于LCD输出的处理-printf()函数分析
- uboot2010.9编译错误
- 移植笔记
- 关于uboot2010.03LCD命令行界面,命令超过一行时,最后一行被输出结果覆盖的探讨
- Qt中常用的类
- 设置快速的debian源
- UVA-111 History Grading(dp+最长公共子序列)
- 架设EtherCalc 多人分布式电子表格系统
- jdk环境变量配置
- Uboot2010.03移植笔记
- ora-12154 plsql
- 错误: 找不到或无法加载主类 tet 解决办法
- POJ 2184 Cow Exhibition
- 删除PPA软件库
- java笔记
- hdoj 1051 Wooden Sticks
- (Jquery 功能篇) Jquery div 动态添加监听事件
- 项目六 穷举法解决组合问题 (1)百钱百鸡问题