This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我尝试将 TM4C123GHPM 中的 SRAM 修改为两个部分、一部分用于 MSP 和系统变量0x20000000、length =0x1000;对于 PSP、我已经设置了 ox20001000、length =0x7000、一直到 SRAM 末尾。 我已经命名了区域堆
--retain=g_pfnVectors.
小程序
{
Flash (RX):origin = 0x00000000、length = 0x00040000
SRAM (RWX):origin = 0x20000000、length = 0x00001000 // 32KB
// stack (RW):origin = 0x20000000、length = 0x00001000 // 4KB
heap (rwx): origin = 0x20001000, length = 0x00007000 // 28kB
}
/*以下命令行选项作为 CCS 项目的一部分进行了设置。 */
/*如果您使用命令行构建,或者出于某种原因想 */
/*在此处定义它们,您可以根据需要取消注释和修改这些行。 */
/*如果您使用 CCS 进行构建、可能最好制作任何此类*/
/*在 CCS 项目中进行修改、并保留该文件。 */
/* */
--heap_size=0
/*-- stack_size=256 */
/*--library=rtsv7M4_T_le_eabi.lib */
/*存储器中的段分配*/
部分中)
{
.intvecs: > 0x00000000
.text : >闪存
.const : > FLASH
.cinit : >闪存
. Pinit : >闪存
.init_array :> FLASH
.vtable: > 0x20000000
.data : > SRAM
. bss : > SRAM
.sysmem : > SRAM.
.stack : > SRAM.
heap : align (4)> heap
}
__STACK_TOP =__STACK + 512;
但是、当我按如下方式编写 DATA_SECTION pragma 时、它会编译、但当我尝试访问数组时、我收到总线错误
#pragma DATA_SECTION (myHeap、".heap")
static uint8_t myHeap[16];//全局堆内存
uint8_t * a=myHeap;//我可以单步执行这一行
*a=23;//但当我访问这里分配的内存时,我得到总线错误
A=A+4;
*a=32;
我的问题是 DATA_SECTION pragma ,它是否为我提到的区域分配内存. 请建议一种更好的方法来写入 cmd 文件数据段
一些评论:
-为什么不删除变量声明上的 static ?
-实验中,如果删除 DATA_SECTION pragma ,是否仍有错误?
-检查 Debug 文件夹中的.map 文件。 你看到 myHeap 符号了吗? 该符号映射到了什么地址?
嗨、大家好!
在工程属性链接器选项卡中简单定义堆或基本栈大小似乎更容易。 过去必须在工程属性中调整 LWIP v1.4.1的堆大小。
此致、
您好!
我没有听到你的声音。 希望您的问题得到解决。 我现在结束该主题。 如果您有任何更新、您可以回写此帖子、并且状态将自动更改为"已打开"。