我对Arduino MEGA2560开发板有问题。用于上传程序的板载芯片(AtMega16U2)由于过压而损坏,因此我无法在AtMega2560上上传代码。这意味着用于串行上传程序的Serial0由于IC损坏而无法正常工作。
因此,我修改了引导加载程序的源文件(stk500boot.c)以使用 Serial1而不是Serial0。(Atmega2560有4个串行端口)。
然后,我使用另一个程序员(usbasp)上传了新生成的.hex 文件,但是问题是代码转到了Flash的应用程序部分。< / p>
那么如何将代码加载到Flash的 Bootloader部分? 在上传到Flash之前,我应该修改保险丝设置吗?
答案 0 :(得分:0)
您必须告诉链接器重新放置.text节。通常,它的目标地址为0x00。必须将其设置为引导加载程序闪存的起始地址。
例如:
-Wl,-section-start=.text=0x20000
陷阱:请注意,数据表中的地址是字地址。 You链接器需要字节地址,因此请记住将字地址乘以2。