如何在AVR 8位上进行内联汇编?

JSO*_*SON 0 microcontroller assembly avr avr-gcc harvard-architecture

我知道这很接近于"愚蠢问题"类别,但我一直在研究如何在AVR 8-bit上启动加载后执行机器代码,并且已经了解到AVR 8上使用的哈佛架构 - 位MCU使得无法从闪存以外的任何地方执行代码.那么如何使用内联asm在运行时引入新的可执行代码呢?

Mar*_*nau 7

你混淆了三件事:

  1. 内联汇编

    内联汇编用于将汇编程序指令传递给C(或任何语言)编译器.编译器会将汇编程序指令添加到它生成的代码中.最后,内联汇编程序指令的存储方式与编译器生成的指令相同.如果将程序写入闪存,则内联指令也将位于闪存中.

  2. 引导加载程序

    引导加载程序通常会从某些输入(例如USB接口)读取数据并将数据写入闪存.因此,发送到AVR的程序稍后将从闪存执行,而不是从RAM执行.

  3. 从RAM执行代码

    许多处理器支持这一点 此外,许多引导加载程序(用于其他微控制器)允许将代码加载到RAM而不是闪存并从那里执行代码.你是对的:至少大多数(也许全部??)AVR 8位微控制器不支持这个!