首页 > 其他 > 详细

2020-09-25 u-boot移植

时间:2020-09-25 19:09:21      阅读:41      评论:0      收藏:0      [点我收藏+]

一、uboot有两种模式
1.启动加载模式:存储在nand上,上电将操作系统加载到DRAM运行。正常启动时的模式,自动加载linux内核。
2.下载模式:调试模式,通过网络或串口从主机获得文件,控制启动流程。按下任意键进入下载模式。

二、bootloader有两个阶段:

1.第一阶段代码用汇编:arch/arm/cpu/armv7/start.S和board/samsung/smart210/lowlevel_init.S,从ISRAM运行

第一:建立中断向量表和异常向量表
第二:获取启动参数,设置SVC32模式,拷贝前8k代码到ISRAM。
第三:cpu_init_crit:

      关I/D cache,关看门狗,清TLB,关MMU等
第四:cpu_init_crit调用lowlevel_init.S:
      设置TCPZ,禁止中断,初始化系统时钟、内存、串口、nand等
第五:设置栈,判断启动开关,sd卡启动就跳转到board_init_f,nand启动就跳转到board_init_f_nand。
第六:搬运代码,从sd卡或nand到DRAM(内存)。
第七:初始化栈,清bss段,跳转到board_init_r,完了启动过程结束。

2.第二阶段代码用c:arch/arm/lib/board.c和common/main.c,从内存运行

common/main.c:引导内核

移植关心的文件夹:
board文件夹         :和开发板相关的,是移植需要修改的。
arch/arm/文件夹  :和处理器相关的,主流的cpu都是支持的.
lib文件夹               :u-boot的通用的自己的库。
arch/arm/lib文件夹   :根据arm处理器创建的库。
include/configs文件夹:里面是头文件,需要修改。
drivers文件夹       :驱动文件夹.
common文件夹        :u-boot核心代码。
net文件夹              :网络协议相关代码。
tools文件夹            :u-boot提供的编译运行等辅助工具。

3、u-boot启动过程:
start.S   :arch/arm/cpu/armv7/start.S,程序的入口;
board.c  :arch/arm/lib/board.c,不用修改,可以用于所有arm;
main.c   :common/main.c,与硬件无关,不用修改,所有开发板通用,用来启动内核。

说明:

arch/arm/cpu/armv7/start.S调用board/samsung/smart210/lowlevel_init.s进行初始化(主要初始化内存DRAM)。
arch/arm/lib/board.c初始化和硬件相关的函数,调用相关的初始化函数进行初始化开发板上资源。
common/main.c是整个u-boot程序的主函数,主要负责运行维护uboot的shell命令行。

 

2020-09-25 u-boot移植

原文:https://www.cnblogs.com/aiziyoudexinxin/p/13731637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!