A:是的,要能操作 Flash。当然不仅仅是这些,还有设置时钟让系统运行得更快等等。
先自问自答到这里吧,对于 bootloader 这一个裸板程序,其实有 3 部分要点:
①对硬件的操作
对硬件的操作,需要看原理图、芯片手册。这需要一定的硬件知识,不要求能设计硬件,但是至少能看懂; 不求能看懂模拟电路,但是要能看懂数字电路。这方面的能力在学校里都可以学到,微机原理、数字电路这 2 本书就足够了。想速成的话,就先放掉这块吧,不懂就 GOOGLE、发贴。另外,芯片手册是肯定要读的,别去找中文的,就看英文的。开始是非常痛苦,以后就会发现那些语法、词汇一旦熟悉后,读任何芯片手册都很容易。
②对 ARM 体系处理器的了解
对 ARM 体系处理器的了解,可以看杜春蕾的《ARM 体系架构与编程》,里面讲有汇编指令,有异常模式、MMU 等。也就这 3 块内容需要了解。
③程序的基本概念:重定位、栈、代码段数据段 BSS 段等
程序的基本概念,王道当然是去看编译原理了。可惜,这类书绝对是天书级别的。若非超级天才还是别去看了。可以看韦东山的《嵌入式 Linux 应用开发完全手册》。
对于 bootloader,可以先看《ARM 体系架构与编程》,然后自己写程序把各个硬件的实验都做一遍,比如 GPIO、时钟、SDRAM、UART、NAND。把它们都弄清楚了,组台在一起就很容易看懂 u-boot 了 。
总结一下,看懂硬件原理图、看芯片手册,这都需要自己去找资料。
二、内核
想速成的人,先跨过内核的学习,直接学习怎么写驱动。
想成为高手,内核必须深刻了解。注意,是了解,要对里面的调度机制、内存管理机制、文件管理机制等等有所了解。
推荐两本书: