您好,写了个简单测试程序,大端模式下
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是论坛中提供小端例子的工具,可否在大端中使用。
谢谢