【发布时间】:2014-11-23 08:41:14
【问题描述】:
我让 Arduino 可以玩……但 Arduino 语言和 IDE 对我来说就像是孩子的玩具。
所以我想用普通的 C 来编程。
据我了解,引导加载程序位于内存的某个位置,在重置向量中有一个 rjmp,完成后,将控制权返回给已安装的“草图”。
问题是:我可以在“草图”中安全地做什么?
这是我目前对带有 Arduino Bootloader 的 AVR 的看法,但它可能是错误的:
.CSEG
.ORG 0000
rjmp bootloader
; ??? Interrupt vectors here
; ??? Interrupt vectors here
; Maybe it all goes to bootloader and it then forwards
; it to handlers in the "sketch"?
bootloader:
; ??? some magic tricks here
rjmp sketch
sketch:
; "Sketch" code
; I want my own interrupt vectors, too!
end:
rjmp end;
我的意思是,很明显,Bootloader 使用了 AVR 的一些其他部分来实现它的功能,所以它会有自己的中断处理程序等。如果我在我的程序中使用它们,它们会按预期工作吗?
那么,使用 C(甚至是汇编程序)编程 Arduino 有什么问题?
【问题讨论】:
-
引导加载程序位于上部闪存中,不会干扰您的代码。您可以使用所有中断向量。要使用纯 C 语言对 Arduino 进行编程,您只需查看 Arduino 环境附带的avr-libc 的文档。