MMU

MMU中文名是内存管理单元,
关MMU关掉MMU,因为u-boot软件是硬件实地址访问。
根本没有用到内存地址映射
因为MMU是;把虚拟地址转化为物理地址得作用,而目的是设置控制寄存器,而控制寄存器本来就是实地址(物理地址)
驱动与硬件的连接
地址的映射
控制外设,其实就是控制寄存器地址。由于MMU(内存管理单元),内核层的驱动不能直接操作硬件上的地址,通过虚拟地址来实现
驱动程序 --> 虚拟地址 --> MMU --> 物理地址(寄存器) --> 硬件
看门狗如果没关,硬件上默认到时会复位的。 所以要关掉
关掉中断,避免中断打断带来的保存返回的问题

第一条指令位置(参考u-boot.map) arch/arm/cpu/armv7/start.S 里的 _start: b reset
设置为SVC模式 msr cpsr,r0
关闭MMU Cache cpu_init_cp15
基本硬件设备初始化 board/samsung/fs4412/lowlevel_init.S 的 lowlevel_init
关中断 看门狗(时钟 串口,flash,内存等的初始化时间可能比较长,这样的话,看门狗会使开发板不停的重启,所以在初始化硬件之前,先关闭MMU Cache,关中断 看门狗)
,初始化时钟 串口,flash,内存
自搬移到内存 relocate_code
(把u-boot剩下的部分搬到内存中,然后运行)
设置栈, IRQ stack frame
(C代码运行之前,必须先设置栈)
===================================================
准备进入C部分 bl _main ( 参u-boot.map )
大部分硬件初始化 arch\arm\lib\board.c\board_init_f 里的init_sequence
搬移内核到内存运行

时钟 串口,flash,内存等的初始化时间可能比较长,这样的话,看门狗会使开发板不停的重启,所以在初始化硬件之前,先关闭MMU Cache,关中断 看门狗
uboot是在开发板上的EMMC里面,开发板上电后,BootLoader运行,设置为SVC模式,关闭MMU Cache,基本硬件初始化,自搬移到内存(uboot剩余程序进内存),设置栈,准备进入C语言部分,大部分硬件初始化,搬移内核到内存(通过网络—tftp服务,将uImage和设备树文件加载到内存),挂载根文件系统(通过网络—nfs服务,将rootfs加载到内存)加粗样式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值