ARM79出品 Uboot移植手册
U-BOOT移植,uboot-1.2.0,移植到2440上。ARM技术交流网www.arm/9.com帮助客户成功目录写在前面的话目录介绍的来源在系统中的地位移植准备工作源码的获取体系结构源码分析源码入口的解释启动分析代码分析移植过程参考移植准备移植过程分析》1命令命命令与命令命令命令命令命令命令命令命令命令命令命令命令命令命令技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm/9.com帮助客户成功命令命令命令命令命令附录:的文件详解附附附附附附内嵌()汇编手册用法小结应用解析命令使用的协议协议详解参考文献:感谢技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm/9.com帮助客户成功介绍的来源全称,是遵循条款的开放源码项目。它最早是由软件工程中心的基于的源码创建的工程,并且不断添加处理器的支持。后来把移植到平台上,创建了工程。然后以工程和工程为基础,创建了工程。现在,作为通用的,已经成功地移植到包括体系结构的上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码。前仍然由的维扩。对我们来说,最大的优势就是,它加快手项目计发的进度,节省了工程师的时间在系统中的地位对于一个项目系统来说,到底处于什么样地位呢?目前,在专用的嵌入式板子运行NU/ Linux系统,应该算比较流行的。对于一个嵌入式Limx系统,从软件的角度看通常可以分为四个层次、引导加载程序。包括固化在固件( firmware)中的bot代码(可选),和Bootloader两大部分2、 Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。3、文件系统。包掊根文件系统和建立于 Flash内存设备之|文件系统。通常用ramdisk来作为rots4、用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GU有: MicroWindows和 Minigui按照这个层次,U-Boo处于引导加载程序阶段。引导加载程序是系统加电后运行的第一段软件代码。PC机中的引导加载程序由BI0S(其本质就是一段固件程序)和位于硬盘MBR中的0 S Bootloader(比如,LIO和GRUB等)一起组成。BI0S在完成硬件检测和资源分配后,将硬盘MBR中的 Bootloader读到系统的RAM中,然后将控制权交给0 s Bootloader。BootLoader的主要运行任务就是将内核映象从硬榀上读到RAM中,然后跳转到内核的入口点去运行,也即开始启动操作系统。而在嵌入式系统中,通常并没有像BI0S,因此整个系统的加载启动任务就完仝由 Bootloader来完成。简单地说, Bootloader就是在操作系统內核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网wwwarm/9.com帮助客户成功的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的坏境。通常, Bootloader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界甲建立一个通用的 Bootloader几乎是不可能的。尽管如此我们仍然可以对 Boot loader归纳出一些通用的概念来,以指导用户特定的Bootloader设计与实现。U-Bot适应该“通用性”,成为较为流行的 bootloader移植准备工作源码的获取的源码包可以从网站下载,还可以订阅该网站活跃的助邮件论坛,这个邮件论坛对于=的开发和使用都很有帮软件包下载网站:。事实上,笔者更喜欢从这里下载源码:因为这里是一个服务器,上面网址打开后,直接就是以文件夹中存放源码包的形式出现,我们选好相应的版木包后,鼠标点山右键,选择“复制到文件夹”选项,即可下载至您的电脑里的仟何位置,如下图所小:命 u-LuuL(Et fly.uenx.e上)-傲游(xur)2.5.9岛,中⊙园命.圆jf4mea,w/bot★ubt在 ftp. den. de上)xA剧技穴父流冈嵌入式免骼型号下一个合上一个高亮示口多诉我口以分大小与口仝字文件夹任务可重命名此彐复此项目X删除此項目其它pub号网上邻后u-toot-L..1-boct-1. u-b20.. u-boot -2.., u-bcot-2-boot., u-Eoot-2Ⅱbot-鼠标点击右键,选择“复制到文件夹”选项,如下图所示:技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm79.com帮助客户成功ubuu『up.denx.le上)-最游( ex Lure文件〕编担查看自·中⊙园⑧②回jftp: EIp, dens, derby★| ubo+tC ftp dsos, de上)x回A添小式,合捞练|号下一个偷上一个4可亮显示多呵查分大小写□全了配文件真任务at-0... b移动项日复制止项日册賒止项日其它位置x-令9号-1温我的立档打开〕网制」b:凸t一详信息命名W〕性这时候会打开一个“浏览文件夹”的对话框,您可以送择一个目录存放源码包,然后点击“确定”,即可下载源码。bot(ftp.denx-de上】-最( anthon)2.5.9文件)输辑吧)查看→⊙园⑧O G:Oftp: /ftp. dens. de/p★hn(在什 tp denr de上)x园术交流网能入式免置查口计下一个合上→个少岛亮是示口多词查找口区分太小写口全打配矿件任答重命名此呗目移功比项目自复上项目删狳比目文什来区其它位置A咯定项目复文件夹5-....⑦bbt-⊥.我的宴档1、选择一个日录存放源码包共字文档桌面网上邻居我片详绸信息b20-2.. t-boot-2,, u-bcot乌BD点灯与时护要化视频PT件夹面点击新建文牛英」仁确定职如果您对情有独钟,那么您还可以进入下列的邮件列表邮件列表网站另外,还有一个相关的网站:如果您正在进行某个项日,或许您更关注代码,那么,让我们开始移植的旅途吧!体系结构本次移植采用的是版本,我们先来浏览一下源代码,如下图所示技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm79.com帮助客户成功boar dCommonTldiskinclude lib arm lib atr 32 lib blac.. lib generic lib_1386 lib m88k -ib mier., lib mipslib__nios 1ib_11032 lit_ ppc nand- splpostblaecfiR. CHANGELOG CHASGELO回L. I匚E配D工Ts:36.,,m66ksor.,,AM⊥A上 S MAKEALL.Mkt⊥ aWake:1e:m1ra,n1F=mmxn+En10=比_c回回回回回回回上的 uboot b0t.map可bat.5r我们在这个源码里找到等使件平台的目录。说明此代码在这些平台上都是兼容的。我们用的是硬件平台,我们只关注相关的代码。因此,我们可以随时把带有的目录(文件夹)删掉,而只保留和文件夹。注意,在删除源码包中的文件或者文件夹目录时候,务必在相应的目录下打开文件核对一下,需要在文件中修改或删除对应的条日鸞这时候,您一定想知道每个文件火都是干什么的。如果连文件夹是干什么的都不知道,那怎么能放心地删掉某些文件夹或者修改某些文件代码呢?我们就先来解释一下这些文件夹存放和开发板有关的文件支持的每个开发板的文件,都会以子日录的形式有放在日录下。比如我们关注的开发板,与之最相近的目录,便是文件火。或许,您可以将它更名为您自己的文件,比如将文件夹更名为这样,您可能会更有成就感攴持的所有命令,都在这个目录中实现。每个命令放在该目录下的一个文件中。一般情况卜,我们如果修改该目录下的文件代码,无非是加些调试信息,打开或关闭一些宏。对于该目录下的代码,我们无须大幅度修改。除非您想自己增加自己的命令同样也很有成就感哦!这个目录下,存放的是与架构有关的目录。每个目录对应一个架构的。比如我们想移植,就应该去找的目录。其他目录实际上对我们是没有意义的。这是要对磁盘的支持。我们只移植的话,那这个对我们也没有意义技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm/9.com帮助客户成功参考文档的意思,这是最没用的,也是最有用的。推荐想研究的同学抽时间阅读一下,有好处支持的所有的驱动代码,默认是放在这个目录下的。如果您需要添加自己的驱动代码,也可以放在这里。然后再中加入相应的文件名这个目录下放的是支持的文件系统。目前口经能支持包括等文件系统。这个目录下存放的是头文件使用的头文件以及对各种硬件平台的系统配置文件都放在这里。对于每款特定的开发板,我们都需要修改系统配置文件,它存放在目录下的子目录中。此比如我们研究的移植,那么可能就对感兴趣这是与体系结构相关的库文件此目录下存放的代码,是有关网络协议的实现的代码。比如协议的实现就在这里面。上电自检的目录。该目录,我对此一点都没有研究生成的工具的目录。比如创建镜像文件等。源码分析源码入口的解释可能大多数的同学上网查资料后都了解到,阶段的启动代码,主要就在文件里。此也是系统上电后执行的第一个代码。它全部由汇编编写。在讲述之前,我们先来了解一卜,系统怎么知道它要先去里执行代码。我们知道,每个可执行的映像,肯定会给编译器一个入口,而且是“有且只有一个全局的入口”。我们可以把这个入口放在的地址上然后让系统去找这个即可。实际上,我们可以通过编写链接文件和文件来告知编译器这些情况。文件可以决定一个可执行代码的各个段的存储位置、入口地址等,详情请参考附录中的文章《文件详解》。这里来说的文件,是在下对应开发板子目录中的文件。它指定了的地址。技术交流网版权所有请勿用于商业用途违者必究ARM技术交流网www.arm/9.com帮助客户成功启动分析终于廾始源代码的讲述了!本文讲述的源码,是经笔者修改的代码。不过,笔者也会将它与完整的源码包进行比较分析首先是文件,刚才说过了,这个是系统启动后运行的第一个代码,我们详细地分析如下:中断向量表的设置文件丌始,就定义了的全局变量。也即,在别的文件,照样能引用这个变量。这段代码验证了我们之前学过的体系的理论知识:钟断向量表放在从开始的地方。其屮,每个异常中断的摆放次序,是事先规定的。此如第一个必须是异常,第二个必须是未定义的指令异常等需要注意的是,在这里,我们也可以理解:为何系统一上电,会自动运行代吗。因为系统上电后,会从地方取指令,而处放置的是标签,直接就跳去标签处去启动系统了。另外,这里使用了指令。而指令中的,分别用一个伪操作来定义。比如我们用跟踪代码后,发现,在的后面给出了具体的操作,如下技术交流网版权所有请勿用于商业用途违者必究
用户评论
alive4418 2020-07-30 20:24:33
好资料,值得学习
在线教育软件供应商 2020-07-30 20:24:33
楼主幸苦了,很好的文档
heyingp27785 2020-07-30 20:24:33
不错,讲的很详细,对理解uboot很有帮助