如何仅更新微控制器中的部分代码或API代码

时间:2014-02-07 05:38:47

标签: c microcontroller avr atmel flash-memory

我正在为我的项目使用atxmega256a3bu微控制器,我想制作一个程序架构,就像我已编译和编程代码一样,现在只有一些API可以更改并重新编程到电路板其他部分的闪存不应该更改和新已编译的API可以使用已在闪存中编程的其余代码。

例如,

我已经制作了所有代码并将其下载到电路板中,该电路板具有名为

的API函数
todo_callback()
{
printf("nothing to do");
}

现在,如果我想更改以下功能:

todo_callback()
{
printf("updated to do");
}

那么如何在不更改整个闪存代码的情况下更新此功能。

此致 shreyas。

1 个答案:

答案 0 :(得分:1)

根据您要执行的操作,您可以使“固定”代码使用函数表来实现其功能。要添加新的实现,您只需要能够覆盖适当的指针。

(当然,这意味着函数表应该是可写的,或者在引导时生成,能够为表找到新条目。)

基本上,我们的想法是添加一个间接级别,以便可以交换函数而无需更改使用它们的代码。