A:是的,要能操作 Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。

先自问自答到这里吧,对于 bootloader 这一个裸板程序,其实有 3 部分要点:

①对硬件的操作

对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不要求能设计硬件,但是至少能看懂; 不求能看懂模拟电路,但是要能看懂数字电路。这方面的能力在学校里都可以学到,微机原理、数字电路这 2 本书就足够了。想速成的话,就先放掉这块吧,不懂就 GOOGLE、发贴。另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,读任何芯片手册都很容易。

②对 ARM 体系处理器的了解

对 ARM 体系处理器的了解,可以看杜春蕾的《ARM 体系架构与编程》,里面讲有汇编指令,有异常模式、MMU 等。也就这 3 块内容需要了解。

③程序的基本概念:重定位、栈、代码段数据段 BSS 段等

程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的。若非超级天才还是别去看了。可以看韦东山的《嵌入式 Linux 应用开发完全手册》。

对于 bootloader,可以先看《ARM 体系架构与编程》,然后自己写程序把各个硬件的实验都做一遍,比如 GPIO、时钟、SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂 u-boot 了 。

总结一下,看懂硬件原理图、看芯片手册,这都需要自己去找资料。

二、内核

想速成的人,先跨过内核的学习,直接学习怎么写驱动。

想成为高手,内核必须深刻了解。注意,是了解,要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。

推荐两本书:

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查