1.裸机学习什么?
裸机主要是学习对通过arm处理器的寄存器的操作来实现其内部资源和外部设备的控制及通信。学习裸机主要有两个目的,第一是熟悉其硬件的资源配置,学会编写bootloader;第二就是学习硬件驱动程序的工作原理,为内核驱动打下基础。
2.裸机学习需要具备哪些基础?
由于裸机程序主要是通过对核心处理器寄存器的操作来实现开发板外部设备、接口的功能,即主要和硬件打交道,因此首先你应该能看懂开发板的原理图;其次,对寄存器的操作主要有arm汇编和C语言完成,所以你应该熟悉arm的汇编指令和C语言知识;最后我们主要是从datasheet来获取寄存器的功能,以及一些硬件功能实现的流程,所以要能看的懂芯片手册。
我们是在linux系统下做arm的裸机程序的开发,这就需要我们能够在linux系统下可以搭建一个交叉开发环境,能够熟练的使用arm-linux-交叉开发工具链和linux的一些基本的操作命令,此外还要学会将编译后的程序烧写到开发板。
3.裸机学习哪些内容?
(1)核心初始化
核心初始化主要包括设置异常向量表,设置处理器工作模式,关闭看门狗,关闭中断,关闭mmu五部分。
(2)点亮指路灯
和学习51单片机把点亮led流水灯作为入门程序一样,点亮led灯是对arm开发板实现的最简单的硬件功能,其主要是对输入输出引脚的配置寄存器和数据寄存器的操作;此外在裸机程序的学习中,可以把led灯可以作为一个调试工具,这也是为什么称其为指路灯的原因。
(3)MMU功能的实现
MMU是内存管理单元的简称(Memery Management Unit),其功能是实现虚拟地址空间到物理地址空间的转换;其目的是充分利用内存空间。