【发布时间】:2020-08-13 10:15:06
【问题描述】:
我正在我的 Cortex M3 芯片中开展一个更大的项目,但我的 RAM 不足。我提出的想法是,我需要通过删除引导加载程序代码上的全局变量来在我的 RAM 中腾出空间,以便在引导加载程序跳转到应用程序代码后清除该区域中的 RAM。我无法直接访问芯片中的引导加载程序代码,因此我必须在应用程序代码中更改这些全局变量。
如何使用 custom_delete() 函数或任何代码删除此全局变量。我使用 ARM cortex M3 (LPC1769)。
总而言之,基本上我正在运行的是:
Custom_Delete ( ? ){
??
}
int foo[1000];
int main(){
/*
Bootloader Code
*/
Custom_Delete ( foo ) // I'm trying to remove the "foo" variable once the bootloader code is executed and the application code is run.
SCB->VTOR = (APP_START_ADDRESS) & 0x1FFFFF80 // jump to application code
}
【问题讨论】:
-
你之前已经在这里问过这个问题:stackoverflow.com/questions/63390349/…,它似乎被删除了。
-
你应该做的第一件事是摆脱幼稚的
int和类似的东西。用 stdint.h 中的相关固定大小变量替换它们。 -
您可以编写自己的
malloc包,允许您将空闲内存块添加到竞技场(如free,但之前的块不必是mallocd)。完成foo后,将其添加到malloc竞技场。
标签: c memory arm global-variables ram