当前位置:首页 > 家居生活 > 正文内容

OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识

admin10小时前家居生活1

OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识

在树莓派 3 上进行裸机编程

该系列教程面向那些想要编译自己的树莓派裸机应用程序的人,具体目标受众是那些对树莓派硬件不熟悉,但在业余时间又爱好 OS 的开发人员。在这篇教程里,作者给出了一些示例来完成基本的操作OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识,比如:将代码写入串行控制台、从串行控制台中读取按键、设置屏幕分辨率并绘制到线性帧缓冲区。此外,作者还展示了如何获取硬件的序列号、硬件支持的随机数,以及如何从启动分区读取文件。

需要注意的是:这篇教程没有涉及编写 OS。诸如内存管理、虚拟文件系统、实现多任务处理之类的主题也不会介绍。该教程将重点介绍与硬件的接口,而不是关于 OS 的理论。此外,该教程假设你具有一定的 GNU/Linux 知识,对编译程序、创建磁盘和文件系统镜像有一定的了解。

对于为何选择树莓派 3,作者给出了解释:首先,它既便宜又容易买到。第二,它是 64 位的,拥有非常大的地址空间。第三,它只使用 MMIO,这使得编程更容易。

该教程使用 C 语言进行开发,因为 C 语言能够直接对硬件进行开发。

预备知识

在开始前,你将需要在 FAT 文件系统上使用交叉编译器(有关详细信息,请参见 目录)和带有固件文件的 Micro SD 卡。

每个目录都有一个 .gcc 以及 .clang。确保 符号链接根据你自己选择的交叉编译器指向版本。

作者给出的建议是买一个 Micro SD 卡 USB 适配器(许多制造商都会提供这种适配器的 SD 卡),这样就可以像 USB 一样将该卡连接到任何台式计算机上,而不需要特殊的读卡器接口(尽管现在很多笔记本电脑都有这种接口)。如果你不喜欢 dd 命令,你也可以选择 ,这是一个简单的 GUI 应用程序,具有可移植的可执行文件OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识,可用于 、 和 Linux 操作系统。

OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识 第1张

Micro-SD 卡 USB 适配器。

在带有 LBA FAT32(类型 0x0C)分区的 SD 卡上创建 MBR 分区方案,并对其格式化树莓派做服务器合适吗,然后将 .bin、start.elf 以及 fixup.dat 复制到其中。或者,你可以下载一个 镜像,dd 命令烧写到 SD 卡树莓派做服务器合适吗,mount 挂载并删除不必要的. img 文件。不管你喜欢哪种方法,重点是你将使用这些教程创建 .img,而且必须复制到 SD 卡的根目录中,后者不应该存在其他. img 文件。

建议使用 USB 串行调试电缆。把它连接到 GPIO 引脚 14/15,然后在电脑上按如下方式运行 :

-b -D /dev/

OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识 第2张

USB 串行调试电缆

仿真

OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识 第3张

不幸的是,官方的 qemu 二进制文件还不支持树莓派 3。但作者已经实现了,并将很快发布(更新:在 qemu2.12 中提供)()。在此之前,你必须从最新的源代码编译 qemu。编译后树莓派做服务器合适吗,可进行如下操作:

qemu-- -M - .img - stdio

或者:

qemu-- -M - .img -drive file=$(),if=sd,=raw - stdio

-M :让 qemu 仿真树莓派 3 硬件。

- .img:告知要使用的内核文件名。

-drive file=$(),if=sd,=raw:在第二种情况下,该参数为 SD 卡镜像,它也可以是标准的 镜像。

- stdio

- null - stdio:将模拟的 UART0 重定向到运行 qemu 的终端的标准输入 / 输出,以便显示发送到串行线路的所有内容,并且 vm 会接收终端中键入的每个键。该操作仅适用于教程 05 及更高版本,因为默认情况下不会重定向 UART1。为此,必须添加一些类似于 - ,host=,port=1111,id=aux - :aux 的参数,或者简单地使用两个 - 参数。

硬件资源

下面简单介绍一下所需硬件资源, SoC 芯片。包括:

GPU;

ARM--A53 CPU (ARMv8);

MMIO 映射外部设备。

有趣的是,CPU 不是主板上的主处理器。当它通电后,第一个 GPU 运行。当初始化完成时,通过执行 .bin,它将加载并执行 start.elf。这不是一个 ARM 可执行文件,而是专门为 GPU 编译的。比较有意思的是,start.elf 寻找不同的 ARM 可执行文件,都以 开头,以. img 结尾。由于要在 模式下对 CPU 进行编程,因此只需要 .img,这也是最后一个要查找的。加载后,GPU 触发 ARM 处理器上的复位线,开始在地址 (或更准确地说是 0)处执行代码。

RAM(1G Pi3)在 CPU 和 GPU 之间共享,这意味着一个可以读取另一个写入内存的内容。为了避免混淆,需要定义好 接口。CPU 将消息写入 ,并通知 GPU 读取它。GPU(知道消息完全在内存中)解释它,并将响应消息放在同一个地址。CPU 必须循环访问内存以知道 GPU 何时完成,然后它才能读取响应。

相似的,所有外部设备都在内存中与 CPU 通信。每个设备都有从 开始的专用内存地址,但是它不在真实的 RAM 中(称为内存映射 IO)。现在没有用于外围设备的 ,而是每个设备都有其自己的协议。这些设备的共同点是:必须以 32 位为单位在 4 个字节对齐的地址(所谓的字)上读取和写入其内存,并且每个设备都有控制 / 状态和数据字(data words)。不幸的是,(SoC 芯片的制造商)在记录产品方面很差。现在所拥有的最好的是 文档,这个文档就足够了。

CPU 中还有一个内存管理单元,允许创建虚拟地址空间。这可以通过特定的 CPU 寄存器进行编程,并且在将这些 MMIO 地址映射到虚拟地址空间时必须小心。

一些更有趣的 MMIO 地址是:

- - - - Power - - IO - UART0 ( port, PL011) - UART1 ( port, AUX mini UART) - Mass Media (SD card ) - Bus

更多信息,请参见:

如何根据任务需求搭配恰当类型的数据库?

在AWS推出的白皮书《进入专用数据库时代》中,介绍了8种数据库类型:关系、键值、文档、内存中、关系图、时间序列、分类账、领域宽列,并逐一分析了每种类型的优势、挑战与主要使用案例。

加入微信交流群:************ ,请猛戳这里→点击入群

扫描二维码推送至手机访问。

版权声明:本文由生活百事通发布,如需转载请注明出处。

本文链接:https://shbaishi.com/post/6359.html

分享给朋友:

“OS开发爱好者福利来了:树莓派上编译C语言,顺便掌握一波硬件知识” 的相关文章

家居饰品挑选攻略,为家增添点睛之笔

家居饰品挑选攻略,为家增添点睛之笔

家,是我们心灵的港湾,是我们疲惫时可以依靠的温暖之地。而家居饰品,就像是那一个个小小的魔法棒,能够为我们的家增添无尽的魅力和个性,成为家中的点睛之笔。今天,就让我们一起来探索家居饰品挑选的攻略,让你的家变得更加温馨、美丽。一、明确家居风格在挑选家居饰品之前,首先要明确自己家的风格。是现代简约风,以简...

家居收纳神器大盘点,让空间整洁有序

家居收纳神器大盘点,让空间整洁有序

在忙碌的现代生活中,一个整洁有序的家居环境不仅能给我们带来舒适的居住体验,还能提升我们的生活质量和工作效率。而家居收纳神器则是实现这一目标的关键。今天,我们就来盘点一下那些让空间整洁有序的家居收纳神器,帮助你打造一个理想的家居空间。一、抽屉式收纳盒抽屉式收纳盒是家居收纳中非常实用的神器之一。它可以巧...

智能家居与物联网深度融合,构建智慧家庭生态

智能家居与物联网深度融合,构建智慧家庭生态

在当今科技飞速发展的时代,智能家居与物联网的深度融合正悄然改变着我们的生活方式,构建起了一个全新的智慧家庭生态。智能家居,作为物联网在家庭领域的重要应用,将各种智能设备通过网络连接起来,实现了设备之间的互联互通和信息共享。从智能门锁、智能灯光到智能家电,每一个设备都成为了智慧家庭生态的一部分,它们相...

新中式家居创新设计,传统与现代完美融合

新中式家居创新设计,传统与现代完美融合

在当今家居设计的潮流中,新中式家居以其独特的魅力脱颖而出。它将传统的中式元素与现代的设计理念完美融合,打造出既富有文化底蕴又符合现代生活需求的家居空间。传统中式元素,如雕花、红木、屏风等,一直以来都承载着中华民族深厚的文化内涵。这些元素以其精湛的工艺和独特的审美,成为了中式家居的标志性符号。在新中式...

家居收纳布局规划,合理利用每一寸空间

家居收纳布局规划,合理利用每一寸空间

在我们的日常生活中,家居空间的利用和收纳布局规划至关重要。一个合理的收纳系统不仅能让家居环境更加整洁有序,还能提升生活的舒适度和便利性。以下将为大家详细介绍家居收纳布局规划的要点,帮助你充分利用每一寸空间。进行全面的空间评估是规划的基础。仔细观察家居的各个区域,包括客厅、卧室、厨房、卫生间等,了解每...

智能家居设备安装与调试指南,轻松上手

智能家居设备安装与调试指南,轻松上手

在当今科技飞速发展的时代,智能家居设备正逐渐走进我们的生活,为我们带来前所未有的便捷与舒适。对于许多初次接触智能家居的人来说,安装与调试这些设备可能会让他们感到有些困惑。别担心,本指南将为你详细介绍智能家居设备的安装与调试过程,让你轻松上手,享受智能家居带来的便利。一、准备工作1. 了解智能家居系统...