我可以使用Arduino IDE为atmel MCU编写启动加载程序吗?

时间:2016-02-03 16:30:10

标签: bluetooth arduino boot bootloader atmel

我正在使用我的蓝牙模块HC -05通过我的微控制器Atmega1284P的UART1进行通信。我为引导加载程序和应用程序部分映射了内存。现在我想编写一个启动加载程序,以便在收到中断时通过蓝牙接收hex文件。如何在编写引导加载程序时使用Arduino IDE。如果可能,调用MCU寄存器的功能是什么?在指定的内存中写入页面/擦除页面有什么功能? 如果在arduino中不可能,有哪些替代方案?

提前致谢 Srinivasa Varadhan。

2 个答案:

答案 0 :(得分:1)

将问题分解为几点:是的,您可以使用Arduino IDE对引导加载程序进行编程,但不建议这样做。对于像这样的东西,你需要Atmel Studio,因为它有内置的寄存器供你的micro使事情变得更容易。就个人而言,我更喜欢CodeVision AVR,它有一个引导加载程序的设置,并允许您指定您的微型。

其次,如果您提取微型数据表(ATMega1284P)并查看第26.8.13节,您将看到一个将页面写入内存的完美示例。在数据表上有关于为该micro编写引导加载程序的整个部分,所以我将从那里开始。

还有最后一件事,是可以通过蓝牙启动加载sw,但是你需要确保使用正确的流量控制并检查每一行的校验和(再次在引导加载程序部分)。还要确保您的引导加载程序内存区域与micro预期的内存区域相对应。您无法将引导加载程序放在任何您想要的位置并期望它能够正常工作。

答案 1 :(得分:0)

I have the memory mapped for both the boot loader and the application section - 这是什么意思?具体来说,你是如何以及在哪里做到的?

据我所知,你无法真正使用Arduino IDE来编写引导加载程序。我的意思是,您可以使用它来输入您的源代码,但您实际上无法使用它来将引导加载程序编程到您的微控制器上。

如果您使用的是标准Arduino板,则会预先编写Arduino引导程序。 Arduino IDE只能通过与Arduino引导程序通信来编程微控制器的闪存。 Arduino引导加载程序不支持用不同的引导加载程序替换自己,但即使它确实你的Arduino IDE也无法在该单片机上编程任何东西。

我没有使用Arduino IDE对bootloader做任何事情。我的印象是它没有给你足够的内存映射,链接等控制。它还通过编译自己的main()循环使开发“更容易” - 这对于普通应用程序来说很好,但绝对不是你想要的引导程序。

你想要做的是获得像Atmel Studio这样的东西,以及像JTAGICE mk2或类似的JTAG程序员。 Atmel Studio使您可以控制代码的每个低级方面,JTAG程序员将允许您正确编程引导加载程序。

解释如何从引导加载程序中进行闪存编程对于这篇文章来说太过分了。但是请参阅数据表here和应用说明AVR109 here,它们会让您了解所涉及的内容。