TI中文支持网
TI专业的中文技术问题搜集分享网站

6678 大端 spi 多核启动

您好,写了个简单测试程序,大端模式下

if(DNUM == 0){

while(1){
*(volatile int *)(0x80000000) = 0x12345678;
TSC_delay_ms(1000);
*(volatile int *)(0x80000000) = 0x87654321;
TSC_delay_ms(1000);
}
}

if(DNUM == 1){

while(1){
*(volatile int *)(0x80000010) = 0x12345678;
TSC_delay_ms(1000);
*(volatile int *)(0x80000010) = 0x87654321;
TSC_delay_ms(1000);
}
}

if(DNUM == 2){

while(1){
*(volatile int *)(0x80000020) = 0x12345678;
TSC_delay_ms(1000);
*(volatile int *)(0x80000020) = 0x87654321;
TSC_delay_ms(1000);
}
}

if(DNUM == 3){

while(1){
*(volatile int *)(0x80000030) = 0x12345678;
TSC_delay_ms(1000);
*(volatile int *)(0x80000030) = 0x87654321;
TSC_delay_ms(1000);
}
}

通过spi烧写进去,重上电连接仿真器,发现core1,core2,core3对应的地址上 数据 0x12345678和0x87654321交替刷新,说明从核启动正常。

然而core0对应地址也写入了 0x12345678或者是0x87654321。但是没有再刷新。说明core0在某处死了,或者core0没成功启动???在线调试没问题。

magic addr上 都有 入口地址,有点不同的是core0 magic addr 上的地址并非全局地址(如:core0: 0x00800000,core1:0x11800000,core2:0x12800000,core3:0x13800000)

生成启动镜像步骤是:

hex6x simple0.rmd
hex6x simple1.rmd
hex6x simple2.rmd
hex6x simple3.rmd

mergebtbl simple0.btbl simple1.btbl simple2.btbl simple3.btbl simple.btbl

.rmd 相比小端改为 -order M

保持大端数据格式生成.dat

单核是能启动的,多核只是多了mergebtbl.exe这个工具

mergebtbl.exe是论坛中提供小端例子的工具,可否在大端中使用。

谢谢

Allen35065:

既然core 1,2,3都启动了,那么core 0启动应该没问题,因为都是需要core 0来写magic address;

core 0不需要写magic address,本身就是从core 0启动的;

所以你生成的boot table是正确的;需要检查的是你的cmd文件里是否在core用了局部地址?(0x800000)或者程序有其它错误,你可以查看core 0的PC看挂起在什么地方。

赞(0)
未经允许不得转载:TI中文支持网 » 6678 大端 spi 多核启动
分享到: 更多 (0)