大家好 问一下
我自己制作的6657板子 裸机状态下 单核 双核加载都是好的
现在试了下sysbios程序的单核加载 加载不起来
想问一下 sysbios程序生成的out文件 和裸机生成的out文件相比 转化需要的工具是否一致 或者需要什么其他要求?
裸机用到的转化工具
Nancy Wang:
流程上是一样的。请问是通过什么方式启动的?仿真器跟一下,PC指针指向哪里?
skysteed:
回复 Nancy Wang:
用的是nand flash
那就是说没有其他特殊的设置 要求? 和裸机程序的编译 转化过程一样?
好的 我试试
skysteed:
回复 Nancy Wang:
大家好 sysbios程序的单核加载好了 和裸机的流程是一样的 只不过sysbios程序比较大 spi加载慢 所以看门狗时间要给大些
裸机的双核 我是按照网上的教程:在核0 核1的CMD文件中定义:.myboot { *.*<boot.obj>(.text) } > BOOT_CORE0
BOOT_CORE0: o = 0x10800200, l = 0x000000c0
.myboot { *.*<boot.obj>(.text) } > BOOT_CORE1
BOOT_CORE1: o = 0x11800200, l = 0x000000c0
这样定义后 核0 核1的"_c_int00"入口地址就分别对应0x10800200, 0x11800200,
同时 核0的程序中给核1发IPC中断 写Boot magic address
现在要实现sysbios程序的双核加载 有个疑问:如何在sysbios中实现:.myboot { *.*<boot.obj>(.text) } > BOOT_CORE0.myboot { *.*<boot.obj>(.text) } > BOOT_CORE1
我尝试修改为:.myboot { *.*<boot.oe66>(.text) } > BOOT_CORE0;
但报语法错误!!!
这是裸机正常编译时_c_int00的地址分配
这是sysbios正常编译时_c_int00的地址分配
Nancy Wang:
回复 skysteed:
具体报错是什么?
skysteed:
回复 Nancy Wang:
报的是语法错误!!!
看来不能这样写!!!
skysteed:
回复 skysteed:
我直接在sysbios工程添加了个cmd文件 指定如下:
SECTIONS{.myboot { boot.ae66<boot.oe66>(.text) } > BOOT_CORE0}
编译可以通过 _c_int00也指向了BOOT_CORE0内存
这样 单核都加载不起来了!!!kao kao kao
skysteed:
回复 Nancy Wang:
说错了 应该是spi nor flash
skysteed:
回复 Nancy Wang:
忘了说了
我现在核0跑的是sysbios核1跑的是裸机程序
核0单核sysbios程序可以加载 但在工程添加cmd文件 在cmd里面指定:
SECTIONS
{
.myboot
{
boot.ae66<boot.oe66>(.text)
} > BOOT_CORE0
}
反而 核0单核sysbios程序跑不起来了
skysteed:
回复 Nancy Wang:
给大家汇报下 双核加载起来了 一个核是SYSBIOS 一个核是裸机
本质和双核都是裸机的加载流程是一样的
之所以之前没有成功 问题是
在核0sysbios程序中 添加cmd文件如下:
SECTIONS
{
.myboot
{
boot.ae66<boot.oe66>(.text)
} > BOOT_CORE0
}我当时又在cfg文件中添加了一句Program.sectMap[".myboot"]= "BOOT_CORE0";
两者冲突了
可能cfg的级别比cmd的级别高 编译出的out文件中只有"_c_int00"入口地址 没有.myboot段的信息了所以加载不起来屏蔽Program.sectMap[".myboot"]= "BOOT_CORE0"后 生成的out文件就既有"_c_int00"入口地址 也有.myboot段的信息了
加载就OK了