bootloader

bootloader是系统的引导程序,需要对一些硬件进行初始化,为操作系统的启动做好准备

其中搬运操作系统的代码和设置启动参数是必须要bootloader完成

s3c2440在系统启动时硬件自动将nand flash的前4k搬到sram里面,s3c6410为8k

1.程序需要在sdram里面运行,需要初始化sdram,才能运行代码,所以需要初始化内存。从arm的datasheet里面知道初始化内存控制器就是初始化内存。关于模式问题,arm的datasheet写到上电后模式自动设置为svc模式。

2.bootloader阶段不需要地址映射,映射了毫无意义,而且会使系统效率降低,所以需要关闭MMU,而D-CACHE的权限C,B在TLB和内存中,需要经过MMU,所以D-CACHE也需要关闭。I-CACHE相对于D-CACHE少了回写这一步骤,而且是只读的,在不开启MMU的情况下也可以使用。所以关不关闭I-CACHE都可以。在此次学习中暂时决定关闭I-CACHE

3.为了系统的开机速度,不过不进行时钟的倍频,启动过程将会消耗相对多的时间,为了早点启动内核,所以要设置时钟

4.将kernel代码从nand flash搬到内存,则应该对nand flash进行初始化才能开始搬运

5.在调试过程中利用串口进行调试,则需要对uart进行设置,以方便调试,即将printk代码写出来

6.有些代码不能使用c语言编写,必须用汇编编写,而c语言的运行过程需要堆栈,所以在汇编调用c语言函数时需要预先设置好堆栈

7.关于bss段清零的问题,可以不进行设置,但是为了c语言标准,需要对bss段进行清零

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值