为 atmega328p 上的嵌入式 OS 写入闪存 ROM(相当于 avr 的 h8write)

Writing to flash ROM for an embedded OS on atmega328p (h8write equivalent for avr)

我目前正在阅读一本关于嵌入式 OS/RTOS es 的日文书籍,只是我没有使用推荐的硬件,因为我已经有一个 seeeduino 微控制器。(atmega328p) 这本书是关于 KOZOS “制作你自己的嵌入式系统的 12 个步骤 OS”,作者 Sakai Hiroaki(这是 hiro-something)

我卡在需要写入atmega328p flash ROM 的部分,因为作者使用的是不同的芯片H8。他使用了一个名为 h8write 的软件,并在他的 OS 中使用了该软件,但老实说,我不知道此时发生了什么,也不知道 h8write 的 avr 替代品是什么。我环顾四周无济于事,因为除了书中出现的 "it helps you write to flash ROM" 之外,关于 h8write 的功能的文档很少。

这是我第一次做低层的东西,坦率地说,这很可怕...

如果有帮助,我正在使用 ubuntu 14.04。

This 应用笔记告诉您如何在程序 运行 期间写入闪存。

可以找到有关如何在 AVR 微控制器中使用 PROGMEM 属性的非常好的教程 here

如果我没理解错的话,h8write 程序应该运行 在您的计算机上,并将编译后的文件传输到微控制器。您使用的是 seeeduino,它是 Arduino 兼容板,具有 Ubuntu。在这个环境下编程的标准方式是使用arduino软件:

  • 安装arduino包(sudo apt-get install aruino
  • 从终端模拟器输入命令arduino:这会带来一个IDE,您可以在其中输入代码
  • 将 seeeduino 连接到 USB 端口
  • 单击带有向右箭头的按钮:这将处理所有事情(编译、链接和上传到 seeeduino)

一旦您对这个工作流程感到满意,您就可以尝试着手处理低级的东西。 Arduino IDE 建立在较小的实用程序之上,例如 avr-gcc、avr-libc、avr-as 和 avrdude。 Avrdude是用来将编译好的程序传送到Arduino/seeeduino,即写入flash的程序。您可以从命令行直接使用这些实用程序。然而,由于您需要传递许多命令行参数,所以这很复杂,因此我建议您使用 Makefile 自动执行该过程。值得庆幸的是,有一个通用的 Arduino Makefile 可用,这使得这很容易:

  • 安装通用 Arduino Makefile:sudo apt-get install arduino-mk
  • 阅读顶部评论中的说明(Makefile 在 /usr/share/arduino/Arduino.mk)
  • 按照这些说明编写您自己的项目特定 Makefile
  • 键入 make 来编译你的程序
  • 键入 make upload 上传到 seeeduino(即写入 flash)。