我在这里有一个基于 XScale/ARMv5 的小型设备,尽管 ARM 是一种流行的架构,但我找不到不基于中间操作系统的 ARM 程序集的教程或任何简单的东西。例如,有一些 X86“Hello World”教程展示了在哪里存储字符串以及如何中断 CPU 以刷新屏幕,但我找不到 ARM 的类似内容。
在哪里可以找到与编程裸机 ARM 处理器(基于系统)相关的信息?我想写一个简单的“Hello World”程序开始,但我不知道如何继续。
我在这里有一个基于 XScale/ARMv5 的小型设备,尽管 ARM 是一种流行的架构,但我找不到不基于中间操作系统的 ARM 程序集的教程或任何简单的东西。例如,有一些 X86“Hello World”教程展示了在哪里存储字符串以及如何中断 CPU 以刷新屏幕,但我找不到 ARM 的类似内容。
在哪里可以找到与编程裸机 ARM 处理器(基于系统)相关的信息?我想写一个简单的“Hello World”程序开始,但我不知道如何继续。
ARM 机器没有标准的裸机 IO 接口。如果没有可以将文本输出到某种输出设备(无论是串行端口还是图形显示器)的驱动程序,hello world 毫无意义。
您的芯片或电路板供应商可能已经为您提供了执行此操作的代码。如果没有,您将需要找到一个驱动程序或自己实现它。
通常,用于 ARM(或任何其他微控制器)的裸机编程硬件驱动程序涉及大量挖掘该部件的技术参考手册和数据表。您可能会在一个屏幕上设置您的 IDE,而在另一个屏幕上设置手册以查找寄存器描述。
你得知道..
那么你也能..
调试时要小心!有时需要读取状态寄存器来继续或确认该过程的步骤。在调试器的监视中拥有这样的寄存器会定期读取它,有时会导致驱动程序只能在调试器内部工作,但不能没有它。(STM32 系列上的 I²C 外设就是一个很好的例子。)
编辑:要回答最初的问题 - 可能会开始查看控制器 UART 的外围设备描述,了解如何设置它,设置相应的 GPIO 并将字符串“Hello World”写入 UART 的数据寄存器 char字符。对于大多数控制器,这还需要配置主系统时钟(和 PLL)并激活 UART 和其他外设的从时钟。