项目简介
本项目专注于树莓派3的裸机编程,为刚接触树莓派硬件且爱好操作系统开发的开发者提供示例。项目主要展示与硬件交互的基础操作,涵盖向串口控制台读写数据、设置屏幕分辨率、绘制线性帧缓冲等,还包括获取硬件序列号、硬件随机数以及从启动分区读取文件等内容,但不涉及操作系统理论知识,如内存管理、虚拟文件系统和多任务实现等。
项目的主要特性和功能
- 基础硬件交互:提供向串口控制台读写数据、设置屏幕分辨率和绘制线性帧缓冲等基础操作示例。
- 硬件信息获取:能够获取树莓派3的硬件序列号和硬件随机数。
- 文件读取:支持从树莓派3的启动分区读取文件。
- 多方面功能支持:包含UART通信、内存管理、异常处理、调试器实现和文件系统操作等功能。UART通信可用于调试和与其他设备通信;通过MMU初始化实现虚拟内存管理;异常处理函数可捕获和处理ARM架构下的异常;调试器支持查看寄存器内容、内存查看和指令反汇编等;文件系统操作可对FAT文件系统进行初始化及相关操作。
安装使用步骤
前期准备
- 需要一个交叉编译器(详情见
00_crosscompiler
目录)。 - 每个目录都有
Makefile.gcc
和Makefile.clang
,确保Makefile
符号链接指向所选交叉编译器对应的版本。 - 建议准备一个 Micro SD卡USB适配器 用于连接SD卡到桌面计算机。
- 建议准备一个 USB串口调试线,连接到GPIO引脚14/15,并在桌面计算机上运行
minicom -b 115200 -D /dev/ttyUSB0
。
具体操作
- 确保已下载并解压项目源代码。
- 查阅项目中的每个文件,了解各模块和函数的功能。
- 根据项目的需要,选择合适的模块和函数进行编译和链接。
- 在SD卡上创建MBR分区方案,使用LBA FAT32(类型0x0C)分区,格式化后将 bootcode.bin、start.elf 和 fixup.dat 复制到SD卡上;或者下载Raspbian镜像,使用
dd
命令将其写入SD卡,挂载后删除不必要的.img
文件。 - 通过项目教程生成
kernel8.img
,并将其复制到SD卡的根目录,确保该目录没有其他.img
文件。 - 将生成的二进制文件(
kernel8.img
)加载到树莓派3或模拟器上运行。若使用模拟器,在官方Qemu支持前需从最新源码编译Qemu,编译完成后可使用命令qemu-system-aarch64 -M raspi3b -kernel kernel8.img -serial stdio
或qemu-system-aarch64 -M raspi3b -kernel kernel8.img -drive file=$(yourimagefile),if=sd,format=raw -serial stdio
运行。 - 通过UART或其他调试工具查看程序的输出和调试信息。
由于项目涉及嵌入式系统编程和硬件相关的操作,可能需要具备相关的硬件知识和编程经验才能正确理解和使用该项目。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】