如何走进嵌入式开发[2] -- bootloader

 bootloader,嵌入式上,很多人选择的是U-BOOT,确实不错。其他的,比如VIVI啥的我也只闻其声,未见其人,也就不好评论了. 见过几个BSP,里面带的bootloader也都是U-BOOT。

 

感觉U-BOOT和内核很像,一部分汇编代码部分,特定的BOARD和CPU,初始化操作等;另一部分就是C代码,也有很多初始化工作;

具体它们的功能如何,没有规定,有的CPU汇编部分做很多事,有的又基本不做事,不过ARM的CPU在start.S里做的事情差不多:

1. realloc uboot to ram (optional)

2. setup stack

3. clear bss

4. jump to C代码部分

 

汇编部分还有个 lowlevel_init.S文件(如果有的话),做的是板子特定初始化工作。

 

BTW:至于中断处理,也都是汇编的代码,一般不用管。开发过程中碰到一个BSP中,网卡使用中断方式来工作的,费了点力气将其改为非中断方式,老大说这是U-BOOT推荐的,我也信了。

 

到了C部分,大家看代码可能就轻松些了,无非就是搭建一个环境,能够让用户操作,包括操作FLASH,网络等。一大堆init过程。各个驱动也是在这里初始化的。

 

最后落到了 main_loop,就是正常的工作了。

 

这样看,确实没什么东西,移植一块板子,大概需要下面一些事:

1. 把板子DS上的MEMORY LAYOUT弄弄清楚,如何配置弄清楚,需要写的是config文件,比如FLASH_BASE,PHY_BASE,SDRAM_XXX.等;

2. 需要什么驱动,没有的得自己写,一般功能不用很复杂,不需要和OS一样,比如网卡,就是一例,工作在被动模式,不需要监听网络报文啥的,也就不需要中断了,需要用时轮询就好了。有的话,那就没事做了;

3. 似乎就这些了,至于要完全自己从汇编开始写,我估计是挺难的,给我块新板子,新CPU,U-BOOT还不认识的话,我们再考虑支持下,那时再做总结。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值