我在哪里学习如何编写裸机ARM组件?

时间:2014-08-01 00:23:19

标签: assembly arm hardware bare-metal

我在这里有一个基于XScale / ARMv5的小型设备,尽管ARM是一种流行的架构,但我无法在基于中间操作系统的ARM组件上找到教程或任何简单的东西。例如,有一些X86" Hello World"那里的教程显示了存储字符串的位置以及如何中断CPU以刷新屏幕,但我找不到类似于ARM的任何内容。

在哪里可以找到有关编程裸机ARM处理器(基于系统)的信息?我想写一个简单的" Hello World"程序开始时,但我不知道如何继续。

2 个答案:

答案 0 :(得分:5)

ARM计算机没有标准的裸机IO接口。如果没有可以将文本输出到某种输出设备的驱动程序(无论是串口还是图形显示),hello world就没有意义了。

您的芯片或主板供应商可能已为您提供了执行此操作的代码。如果没有,您将需要找到一个驱动程序或自己实现它。

答案 1 :(得分:0)

通常,ARM(或任何其他微控制器)的裸机编程硬件驱动程序需要大量深入研究该部件的技术参考手册和数据表。您可能会在一个屏幕上设置IDE,而在另一个屏幕上设置手册以查找寄存器描述。

你需要知道..

  • 您需要修改哪些注册表以实现预期的行为
  • 该登记册的地址
  • 该寄存器的组织(各个位的含义是什么?)

然后你可以......

  • 确定需要使用
  • 设置寄存器的值
  • 将值写入寄存器(例如,通过声明指向它的指针并写入该指针)

小心调试!有时,需要读取状态寄存器才能继续或确认该过程的步骤。在调试器的监视器中有这样的寄存器会定期读取它,有时会导致驱动程序只在调试器内部工作,但不能没有它。 (一个很好的例子是STM32系列上的I²C外设。)

编辑:回答原始问题 - 一个人可能会开始查看控制器UART的外设描述,找出如何设置它,设置相应的GPIO并将字符串“Hello World”写入到UART的数据寄存器char中。对于大多数控制器,这还需要配置主系统时钟(和PLL)并激活UART和其他外设的从时钟。