bootloader小计

开发板启动流程
bootloader--> 初始化硬件、加载内核-->kernel--> 初始化,挂载rootfs-->application
U-BOOT编译生成的映像文件
u-boot.map  U-boot映像的符号表(方便源码的追踪)
u-boot  U-Boot映像的ELF格式
u-boot.bin U-Boot映像原始的二进制格式(烧录用)(需加入BL1)
u-boot.srec U-Boot映像的S-Record格式

U-BOOT启动流程
板子上电第一个程序,做启动引导工作 初始化硬件、引导加载内核
2个阶段:汇编阶段 c阶段
汇编阶段:设置为SVC模式,关闭中断,MMU,看门狗等

基本硬件设备初始化//初始化时钟,串口,flash,内存见cpu/arm_cortexa8/start.s 的cpu_init_crit
自搬移到内存//copy_uboot_to_run 或relocate
设置栈//stack_setup
跳转到第二阶段代码入口即c阶段//ldr pc,_start_armboot

c阶段:大部分硬件初始化 + 搬移内核到内存 + 运行内核

2个搬移:u-boot自搬移,搬移uImage(内核),都由Flash搬移到内存中
2个初始化:基本硬件初始化:时钟串口flash内存等,大部分硬件初始化:SD卡网卡

关于内核启动流程:bootloader--->kernel--->rootfs--->app

自解压内核 decompess  (arch/arm/boot/compressed/head.s)
运行内核汇编部分,并检测合法性(CPU类型机器类型)(head.s入口stext  //arch/arm/kernel/head.s)
运行内核C部分 start_kernel (init/main.c)CPU,机器参数安装setup_arch,中断,定时,终端内存等最基本的初始化,创建核心进程kernel_init运行,启动多任务调度
挂载rootfs 文件系统
运行第一个应用程序init//linuxrc




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值