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.
Hello TI,
我有两个问题,
1. Memory Map所定义的地址用意为何? 因为实际上每个用户都可以修改.cmd档 去更改存储位置, 例如Flash定义在0x00000000-0x0013FFFF之间,用户是否可以修改在此区间之外?
2. Memory Map里有个Flash (mirrored image) 它指得是什麽意思,为何会有这个区块?
Hi Shunfan,
memory map主要是告诉客户,芯片里面可以使用的FLASH,RAM等存储区域的的具体地址。
确实通过cmd文件可以修改程序存放的位置,或是变量放在RAM的哪个区域,但是这个区域的选择是必须在memory map定义的FLASH或是RAM的空间内的。不能定义到其他地方。
另外关于flash mirrored image是一个方便可以在调试的时候,将程序烧写到这个区域,减少默认的flash区域的擦写次数,从而延长它的使用寿命。不过这个特性用的不多。
谢谢
Hello Ken,
谢谢你的回覆,那请问一下,下方是预设的cmd.file。
那VECTORS和STACKS各是存放何种物理空间呢?(既不是FLASH, 也不是RAM)
/*----------------------------------------------------------------------------*/ /* Memory Map */ MEMORY { VECTORS (X) : origin=0x00000000 length=0x00000020 FLASH0 (RX) : origin=0x00000020 length=0x0013FFE0 STACKS (RW) : origin=0x08000000 length=0x00001500 RAM (RW) : origin=0x08001500 length=0x0002EB00 /* USER CODE BEGIN (2) */ /* USER CODE END */ } /* USER CODE BEGIN (3) */ /* USER CODE END */ /*----------------------------------------------------------------------------*/ /* Section Configuration */ SECTIONS { .intvecs : {} > VECTORS .text : {} > FLASH0 .const : {} > FLASH0 .cinit : {} > FLASH0 .pinit : {} > RAM .bss : {} > RAM .data : {} > RAM .sysmem : {} > RAM /* USER CODE BEGIN (4) */ /* USER CODE END */ }
Hi Shunfan,
Vector是中断矢量,这个是放在Flash的区域的,你看一看它的起始位置地址
Stack堆栈是放在RAM的区域的。你可以参考memory map来看。
系统的Flash是从0x00开始的,RAm是从0x08000000开始的。
谢谢