有些注定了被遗忘的话,也就有的注定了属于沉静的自私.

Uboot 编译

来自森亮号航海见识 {SLboat Insight;}
跳转至: 导航搜索

一些开源项目

环境

Openwrt SDK能编Uboot吗?

不能
uboot要去下载那些大厂的gpl[1]

音频想法


  • Openwrt的uboot可用普通的SDK来编译,所以可以认为它是一种普通的ARM-不带ARM-MIPS的启动代码,它包括初始化必要的寄存器-主要任务,以及准备即将给Linux的初始化环境,这最后将移交给主线程,让它去处理剩余的事,也就是启动命令.所以它可以用完整的Openwrt的toolchain工具链来编译就毫无奇怪了,它本身并无奇特,它所奇特的有一点是,它用整个向量空间的连地址对应于内存映射应该是0x(7..6个0或者8个0),从这里开始执行整个世界的第一句,待它有足够的机会初始化完毕之后,在将它要求(模糊)移交给Openwrt,对于它需要如此多的代码和保持,一定量的原因是它是一个通用的框架,它可以适用不同情况,它可以进行必要的环境调整,诸如设置Mac地址等等.
[后来-608天后]->CPU频率看起来也包含在里面
[后来-608天后]->608天,以前是300多天哩...

见识

哲学

很多人拿到uboot,编译不知如何下手!
其实,这个世界上的万事万物,都有一个“纹理”。我读中学的时候劈柴,如果顺着木头的纹理劈下去很轻易的就劈开了,但如果反其道而行之不但劈不开而且斧头还会弹回来伤人!呵呵,城里出生的孩子是没这个体会,即使现在农村的孩子因为家里都烧液化气也没有这个机会体验了。
庖丁解牛之所以游刃有余,是因为他掌握了牛的纹理,顺着这些纹理就应该很容易。[2]

OpenWrt / TP-Link MR3420 16M flash /64M Memory hardware mod with uboot bin 沿途见识[3]

Part two: Compile uboot to support 8M/16M serial flash chip:
1. Download source code from tp-link gpl site: http://www.tp-link.com/support/todownload.asp?url=%2FGPL%2Fmr3420%5F3220v1%2Etar%2Egz
2. Extract the package, goto mr3420_3220v1/ap99/boot/u-boot/include/configs/ap99.h to modify the source code as following, be ware that  #define FLASH_SIZE 16 is the definition for your flash size, change it to 8 if you use a 8M chip.

嵌入式系统中U-Boot基本特点及其移植方法 沿途见识[4]

1 U-Boot简介
    U—Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目,从FADSROM、8xxROM 、PPCBOOT逐步发展演化而来,其源码目录、编译形式与Linux内核很相似。事实上,不少U—Boot源码就是相应Linux内核源程序的简化, 尤其是一些设备的驱动程序, 从U-Boot源码的注释中能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导, 当前,它还支持NetBSD。VxWorks、QNX、RTEMS、ARTOS、LynxOS嵌入式操作系统。其目前要支持的目标操作系统包括0P enB S D 、NetBSD、FreeBSD、4 4BSD 、Linux、SVR4、Esix、Solaris、Irix、SCO、Dell、NCR、VxWorks、LynxOS、pSOS、QNX、RTEMS和ARTOS。这是u-Boot中Universal的一层含义。另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM 、Nios、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富, 对Linux的支持最完善。其它系列的处理器和操作系统基本是在2002年1 1月PPCBOOT改名为U-Boot 后逐步扩充的。从PPCBOOT向U—Boot的顺利过渡,很大程度上归功于U-Boot的维护人,德国DENX软件工程中心的Wolfgang Denk(以下简称w.D)本人精湛的专业水平和持着不懈的努力。当前,u-BOOt项目在他的领军下,众多有志于开放源码Boot loader移植工作的嵌入式开发人员, 正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入, 以支持更多嵌入式操作系统的装载与引导。

2 U-Boot主要目录结构

board一目标板相关文件,主要包含SDRAM、Flash驱动;
common 一独立于处理器体系结构的通用代码, 如内存大小探测与故障检测;
cpu一与处理器相关的文件, 如mpc8xx子目录下含串口、网口、LCD 驱动及中断初始化等文件;
driver一通用设备驱动,如CFI Flash驱动(目前对Intel Flash支持较好)
doc— U.Boot的说明文档;
examples一可在U—Boot下运行的示例程序;如hello _ world.C,timer.C;
include—— U-Boot头文件,configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文件;
lib— XXX一处理器体系相关的文件, 如lib—PPC, lib — arm 目录分别包含与PowerPC、ARM体系结构相 关的文件;
net一与网络功能相关的文件目录,如bootp、nfs、 tftp;
post一上电自检文件目录, 尚有待于进一步完善;
rtc— RTC驱动程序;
tools——用于创建U—Boot S—RECORD和BIN镜像文件的工具。
3 U-Boot支持的主要功能
U—Boot可支持的主要功能如表1所列。

系统引导 支持NFS挂载、RAMDISK 系统引导 (压缩或非压缩)形式的根文件系统
支持NFS挂载,从Flash中引导压缩或非压缩系统内核
基本辅助 强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统, 适合系统在不同开发阶段的调试要求与产品发布,尤其对Linux支持最为功能强劲
支持目标板环境参数的多种存储方式,如Flash、NVRAM、EEPROM
CRC32校验,可校验Flash中内核、RAMDISK镜像文件是否完好
设备驱动 串口、SDRAM、Flash、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持
上电自检功能 SDRAM、Flash大小自动检测;SDRAM 故障检测;CPU型号
特殊功能 XIP内核引导
4 U-Boot移植过程
① 获得发布的最新版本U—Boot源码,与Linux内核源码类似,也是bzip2的压缩格式。可从U.Boot的官方网站http://sourceforge.net/projects/U-Boot上获得。

② 阅读相关文档,主要是U.Boot源码根目录下的README文档和U—Boot官方网站的DULG(The DENX U—
Boot and Linux Guide)文档(http:llwww.denx.de/twiki/bin/view/DULG/Manua1)。尤其是DULG文档,对如何安装建立交叉开发环境和解决U-Boot移植中常见问题,都一一给出了详尽说明。

③ 订阅U—Boot用户邮件列表(http://lists.sourceforge.net/lists/listinfo/u—boot—users)。当在移植U-Boot过程中遇有问题,在参考相关文档和搜索u.Boot.U ser邮件档案库(httP://SOurceforge.net/mailarchive/forum.php? forum — id=l 2898)仍不能解决时,第一时间提交所遇到的问题, 众多U-Boot开发人员会迅速排查问题,而且W.D本人很有可能会直接参与指导。

④ 在建立的开发环境下进行移植工作。绝大多数的开发环境是交叉开发环境。在这方面,DENX和MontaVi sta均提供了完整的开发工具集。

⑤ 在目标板与开发主机间接入硬件调试器。这是进行U-Boot移植应当具备且非常关键的调试工具。因为在整个U—Boot的移植工作中,尤其是初始阶段,硬件调试器是我们了解目标板真实运行状态的唯一途径。在这方面, W .D 本人和众多嵌入式开发人员倾向于使用BDI2000。一方面,其价格不如ICE调试器昂贵,同时其可靠性高,功能强大, 完全能胜任移植和调试U—Boot。另外, 网上也有不少关于BDI2000调试方面的参考文档。

⑥ 如果在参考开发板上移植U—Boot,可能需要移除目标板上已有的Boot loader。可以根据板上Boot loader的说明文档,先着手解决在移除当前Boot loader的情况下,如何进行恢复,以便今后在需要场合能重新装入原先的Boot loader。

5 U-Boot移植方法
当前,对于U.Boot的移植方法,大致分为两种。一种是先用BDI2000创建目标板初始运行环境,将U-Boot镜像
文件u-boot.bin下载到目标板RAM中的指定位置,然后,用BDI2000进行跟踪调试。其好处是, 不用将Uboot镜
像文件烧写到Fla sh中去。但弊端在于, 对移植开发人员的移植调试技能要求较高,BDI2000的配置文件较为复杂。另外一种方法是用BDI2000先将U—Boot镜像文件烧写到Flash中去,然后利用GDB和BDI2000进行调试。这种方法所用的BDI2000配置文件较为简单,调试过程与U-Boot移植后运行过程相吻合。即U—Boot先从Flash中运行,再重载至RAM 中相应位置,并从那里正式投入运行。唯一感到有些麻烦的就是需要不断烧写Flash。但考虑到Flash常规擦写次数基本为l 0万次左右,作为移植U-Boot, 不会占用太多的次数,应该不会为Flash烧写有什么担忧。同时,w.D本人也极力推荐使用后一种方法。笔者建议, 除非是U-BOot移植资深人士或有强有力的技术支
持, 建议采用第二种移植方法。
 
6 U-Boot移植主要修改的文件
从移植U—Boot最小要求,U.Boot能正常启动的角度
出发, 主要考虑修改如下文件。
① <目标板>.h头文件,如include/con gs/RPxlite.h。可以是U-Boot源码中已有的目标板头文件,也可以是新命名的配置头文件;大多数的寄存器参数都是在这一文
件中设置完成的。
② <目标板>.C文件,如board/RPXlite/RPXlite.C。它是SDRAM 的驱动程序,主要完成SDRAM 的UPM 表设
置, 上电初始化。
③ Flash的驱动程序,如board/RPXlite/flash.C或
common/cfi — flash.C。可在参考已有Flash驱动的基础上, 结合目标板Flash数据手册,进行适当修改;
④ 串口驱动,如修改cpu/mpc8xx/seria1.c串口收发器芯片使能部分。


引用信息

以下是[Uboot 编译]所有用到的引用信息,向这些伟大的家伙致敬:
  1. ^ 么侠口述
  2. ^ 来源,http://blog.cechina.cn/ximenpiaoxue4016/286530/message.aspx
  3. ^ https://forum.openwrt.org/viewtopic.php?id=32512
  4. ^ http://www.360doc.com/content/08/0223/10/45933_1064363.shtml