对于以前玩单片机的人来说,对裸机编程一直都情有独钟,到了ARM9以上的cpu后,基本都跑操作系统,主流的是Linux,A8以后基本都跑Android,那么有没有必要再写裸机程序,这是一个争议的话题。以我的观点,如果你时间多的话,比如还是大学生,我觉得还是有必要的,因为通过写裸机程序,你会学习很多硬件和编译知识。我现在已经工作三年了,现在写硬件篇主要是复习,其实这些裸机代码和硬件知识是在12年的时候积累的,那时候还是大四学生。熟悉常见的硬件是学习Linux驱动的基础,因此我把硬件的知识点进行整理。u-boot其实就是个大的裸机程序,学习u-boot,一样可以学习硬件的知识。我这里提到的硬件,是指嵌入式软件开发人员需要掌握的,并不需要像硬件工程师那样对电气特性了解,也不需要画PCB的技能。
ARM Core
基础外设
Clock时钟
Iinterrupt中断
Power电源
IO
PWM定时器
ADC
RTC实时时钟
watchdog
存储类
内存SDRAM
外存Nand Flash
外存Nor Flash
外存MMC/SD/SDIO
多媒体类
LCD
Camera
AC97
总线类
IIC
IIS
SPI
UART
USB Host
USB Device