我想像开发一些设备驱动程序等一样学习它并为此使用 QEMU,因为我没有像 beagle board 这样的 ARM 硬件板。你们有什么建议?我可以使用 Qemu 模拟器在 ARM 目标上学习 Linux 内核吗?或者我应该尝试的任何其他选择?
3 回答
这取决于您想学习什么:硬件或软件。如果您真的想尝试不同的 GPIO 输出来实现伺服电机控制、LED 灯闪烁和显示等功能,那么便宜的板子(例如,Raspberry Pi,大约 25 美元)是首选。
但是如果你想学习一般的软件,qemu 肯定要快得多,它可以让你看到正在发生的事情的内部。用硬件做实验需要示波器等。但用软件做实验将取决于其他人在他们的软件中实现的错误输出。
至于驱动开发,第一版应该在QEMU上快速开发。但是自然涉及硬件的测试,应该在硬件上进行。
底线是:x86 快得多,交叉编译总是在 x86 上完成,然后再在 ARM 板上启动。在板子上编译太费时间,有时可能会占用相当大的存储空间来存放开发库和源代码。
我曾经使用 Qemu 为嵌入式编程类开发设备驱动程序。它工作得很好。当时我们正在学习设备驱动程序编程,然后过渡到 Gumstix 板。我不记得我们使用的是什么核心,但 Qemu 运行良好。
没做过ARM开发,不知道是不是学习ARM的最佳选择。但是,如果您是司机新手,这可能是一个不错的起点。
QEMU + Buildroot 是 ARM 内核开发的绝佳组合
这是我的设置,它(主要)支持 x86 和 ARM:https ://github.com/cirosantilli/linux-kernel-module-cheat
内核、工具链、用户空间和 QEMU 具有惊人的可移植性,从 x86 到 ARM 几乎是微不足道的。
实际上,您很少会触及 Arch 的细节,所以您不妨从 x86 开始。
我还没有玩过 ARM 设备,只有 x86,但我敢打赌它会同样容易(即,由于缺乏教程,这不是微不足道的,但可行)。