![9fb03d5a-ad16-eb11-8da9-e4434bdf6706.png](http://p04.5ceimg.com/content/9fb03d5a-ad16-eb11-8da9-e4434bdf6706.png)
树莓派(Raspberry Pi)是一块跟信用卡差不多大小的开发板,它的初衷是以低廉的硬件和开源软件扶持一些落后地区的电脑科学教育。经过多年的发展后,这款小巧的开发板的核心处理器和外围电路配置也经历了大幅度的升级,现在的树莓派已不再是刚面世时的单板计算机,它已然成为一款功能强大,性能卓越的微型电脑,配置上与我们手中的普通智能手机相当,可以在上面跑很多有意思的应用,譬如机器人操作系统(ROS),甚至跑已经训练好的神经网络等。
鉴于国内学校计算机教学内容和实验环境的相对滞后,以及考虑到树莓派的流行程度,很多热爱计算机技术,渴望探索底层开发的同学非常渴望基于树莓派这款硬件学习计算机基础知识。换句话说就是把树莓派代替经典的 51 单片机来学习裸机开发。但由于树莓派的 SOC 供应商对芯片资料的半开源态度,再加上国内的节奏总是慢半拍,导致相关的替代工作进展并不是很顺利。
虽然这不是一件容易的事情,但由于树莓派名声在外,还是可以看到有很多热心的同学希望在这个平台上学习裸机开发,甚至尝试移植一些小型的操作系统。这给了我们足够的动力去尝试继续这件事。而且从可行性上来看,经过调研,我们发现热心的国外极客们从 2012 年开始,时至今日,已经取得了不小的成果。在没有公开技术手册的条件下,大家通过各种逆向工程技术,最硬核地就直接阅读树莓派对 Linux 的驱动代码来反向实现自己的裸机程序。比较成熟项目包括:
(1) 运行在 Raspberry Pi 上的小型嵌入式系统
- Xinu project (xinu-os/xinu)
- Ultibo project (ultibohub/Core)
(2) 一些在 Raspberry Pi 上可以嵌入在其他系统中的运行库
- USPi(rsta2/uspi), 一个小型的支持 USB 通讯的库
(3) 以及其他一些基于 Raspberry Pi 裸机开发例子:
- Bare Metal Programming on Raspberry Pi 3:(bztsrc/raspi3-tutorial)
- Raspberry Pi ARM based bare metal examples (dwelch67/raspberrypi)
我相信,基于前人的这些成果,完全足以支持我们尝试整理并用于实现自己的移植项目,当然前提是需要深入消化并理解这些工作,特别是对一些复杂的硬件外设(譬如 camera module, USB module 等)。
大家赶紧行动起来,参与到这份工作中来吧。从底层玩转树莓派,好好修炼一下个人的计算机开发基本功。