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.
CPU1和CPU2的程序同时在RAM中调试运行,看demo中程序都load到LS0~LS5中运行,不过CPU1和CPU2的程序都比较大,不能把两者的程序都加在LS0~LS5中,否则程序没法加载或者无法运行。
1.那GS0~GS15可以用作.text 的空间来加载吗?
2..cinit .pinit .stack .ebss .econst .esysmem能定位到GS0~GS15吗?
3.要是GS0~GS15可以这样的使用的话,CMD该怎么修改呢?
现在把CPU2的程序加载到GS0~GS15(cpu1中的GSxMSEL相关位已经使能),CPU2的没办法运行。附件是我CPU2的cmd文件
谢谢!
MEMORY { PAGE 0 : /* BEGIN is used for the "boot to SARAM" bootloader mode */ BEGIN : origin = 0x000000, length = 0x000002 RAMM0 : origin = 0x000080, length = 0x000380 RAMD0 : origin = 0x00B000, length = 0x000800 RAMGS813 : origin = 0x014000, length = 0x006000 RESET : origin = 0x3FFFC0, length = 0x000002 PAGE 1 : BOOT_RSVD : origin = 0x000002, length = 0x00007E /* Part of M0, BOOT rom will use this for stack */ RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ RAMD1 : origin = 0x00B800, length = 0x000800 RAMGS1415 : origin = 0x01A000, length = 0x002000 RAMLS5 :origin = 0x00A800, length = 0x000800 STATUS_TABLE : origin = 0x049000, length = 0x000800 COMMAND_TABLE : origin = 0x04B000, length = 0x000800 CPU2TOCPU1RAM : origin = 0x03F800, length = 0x000400 CPU1TOCPU2RAM : origin = 0x03FC00, length = 0x000400 } SECTIONS { codestart : > BEGIN, PAGE = 0 ramfuncs : > RAMM0 PAGE = 0 .text : > RAMGS813, PAGE = 0 .cinit : > RAMM0, PAGE = 0 .pinit : > RAMM0, PAGE = 0 .switch : > RAMM0, PAGE = 0 .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ .Command_Table : > COMMAND_TABLE, PAGE = 1 .stack : > RAMM1, PAGE = 1 .ebss : > RAMLS5, PAGE = 1 .econst : > RAMLS5, PAGE = 1 .esysmem : > RAMLS5, PAGE = 1 #ifdef __TI_COMPILER_VERSION__ #if __TI_COMPILER_VERSION__ >= 15009000 .TI.ramfunc : {} > RAMM0, PAGE = 0 #endif #endif /* The following section definitions are required when using the IPC API Drivers */ GROUP : > CPU2TOCPU1RAM, PAGE = 1 { PUTBUFFER PUTWRITEIDX GETREADIDX } GROUP : > CPU1TOCPU2RAM, PAGE = 1 { GETBUFFER : TYPE = DSECT GETWRITEIDX : TYPE = DSECT PUTREADIDX : TYPE = DSECT } } /* //=========================================================================== // End of file. //=========================================================================== */
1. 可以的,你在CMD分配一下就好。注意GS0~15默认是给CPU1的,如果要分配给CPU2, 应该要配置一下。
2. 可以。还是在CMD上设置那个映射。
3. CMD的修改,你只要把原来段的映射改成GS0或其他即可。
.text : >> FLASHB | FLASHC | FLASHD | FLASHE PAGE = 0, ALIGN(4)
例如把上面改成:
.text :> RAMGS0 PAGE = 0, ALIGN(4)
你要把RAMGS0放在PAGE0。
4. 要分配GS给CPU2,你要在CPU1的初始化代码中将GS分配给CPU2才能用。
最后,运行在RAM上,掉电程序会丢失,所以你最后还是要烧写在FLASH才是。
ERIC