我在使用CCS对PRU0 模块编程
然而在向PRU0导入gel文件时报错
PRU_0: Error adding memory map range: End address is beyond target memory length
我定位问题到这里
/* PRU */
GEL_MapAddStr( 0x01C30000, 0, 0x01C301FF, "R|W|AS4", 0 ); // Data RAM 0
GEL_MapAddStr( 0x01C32000, 0, 0x01C321FF, "R|W|AS4", 0 ); // Data RAM 1
GEL_MapAddStr( 0x01C34000, 0, 0x01C36FFF, "R|W|AS4", 0 ); // INTC Registers
GEL_MapAddStr( 0x01C37000, 0, 0x01C377FF, "R|W|AS4", 0 ); // PRU0 Registers GEL_MapAddStr( 0x01C37800, 0, 0x01C37FFF, "R|W|AS4", 0 ); // PRU1 Registers
我查阅了数据手册,这个内存段没错呀,为什么提示溢出呢
我尝试将这里修改成
GEL_MapAddStr( 0x01C30000, 0, 0x000001FF, "R|W|AS4", 0 ); // Data RAM 0
GEL_MapAddStr( 0x01C32000, 0, 0x000001FF, "R|W|AS4", 0 ); // Data RAM 1
GEL_MapAddStr( 0x01C34000, 0, 0x00002FFF, "R|W|AS4", 0 ); // INTC Registers
GEL_MapAddStr( 0x01C37000, 0, 0x000007FF, "R|W|AS4", 0 ); // PRU0 Registers GEL_MapAddStr( 0x01C37800, 0, 0x000007FF, "R|W|AS4", 0 ); // PRU1 Registers
依然报同样的错误
Nancy Wang:
参考以下帖子最后修改过的GEL文件以及步骤试一下。
e2e.ti.com/…/compiler-pru-swpkg-pru-linker-command-file-for-omapl138
,
will huang:
这个帖子的确起到很大帮助,我已将问题定位到这里
请问这个 gel 函数的 page 参数在 PRU 中应该如何使用?
GEL_MapAddStr(address, page, length, “attribute”, waitstate );
page:Identifies the type of memory to fill: 0 (Program memory), 1 (Data memory) or 2 (I/O space) For processors which do not have more than one type of memory, use 0 for this Parameters. For simulated targets, the I/O Space option is not supported.
PRU:
PRU0 Instruction RAM 对应 Page 0 ?
Data RAM 0 、 INTC Registers 、 PRU0 Control Registers 对应 Page 1?
剩下的各种外设(诸如UART、SPI、EMAC等)的内存地址空间 对应 Page 2?
不吝赐教!