55.裸板的学习流程

做点感悟记录,不一定是正确的,仅是个人的感悟而已,曾经做过单片机,做过stm32,总感觉不得入门

后来学习了linux,才找到一些感觉。linux下的uboot是裸板的集大成者

arm架构的芯片一大堆,不管是是stm32,还是仅仅写bootloader,拿到芯片学习其裸板的话

第一步:要知道它使用什么指令集,arm还是thumb。需要一定的汇编基础,掌握基础够用就行,比如stm32是使用thumb指令集

第二步:了解其启动原理,上电之后如何加载代码,如何初始化如何进入mai函数…………。stm32的keil把用户当成傻瓜,帮用户啥都做了,导致用户不知道这一步是如何实现的,永远就只会点点keil界面的编译,跑跑main函数(不会这一步就很难入门,永远停留在只会跑main函数)。知道启动原理,才能知道lds连接文本内代码段、数据段、只读数据段等位置的安排,代码重定位,bss数据段清零等操作,中断异常向量表分布以及如何跳转,代码第一个跳转位置肯定时reset

第三步:了解时钟体系,时钟如何提供,有哪些时钟总线。时钟是心跳,配得不对,就会出很多问题。比如输入晶振频率,有可能拿到别人的代码,但别人的代码使用的晶振输入跟我的就是不同,不修改怎么分频都没用,这个问题试过一次

第四步:了解清楚中断体系,中断的内部机制,这就很需要第二步的基础,触发了外部中断或者异常之后,cpu是怎么相应的,代码的跳转是如何的

第五步:写一个流水灯实验,会看芯片手册,掌握寄存器的使用,特别是位带操作。直接对寄存器地址进行赋值,当然使用配置的api也可以,但一般很少使用,主要是API有很多判断等操作,直接位操作更快,比如stm32的位带操作。会写流水灯就会写所有加高级的外设

第六步:了解固件库提供的API函数,不懂查手册就行

第七步:掌握协议,uart,iic,lcd等,看得懂他们的时序图。写这些外设其实就是用程序让芯片把其时序图实现而已,时序图走通了外设就写好了

所以,要懂点汇编,C语言要精通,会协议,基础牢固的话,拿到一个新的arm芯片,估计一天就能吃透它的裸板

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值