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.

sysbios程序out文件的加载?

Other Parts Discussed in Thread: SYSBIOS

大家好 问一下
我自己制作的6657板子 裸机状态下 单核 双核加载都是好的

现在试了下sysbios程序的单核加载 加载不起来

想问一下 sysbios程序生成的out文件 和裸机生成的out文件相比 转化需要的工具是否一致 或者需要什么其他要求?

裸机用到的转化工具

  • 流程上是一样的。请问是通过什么方式启动的?仿真器跟一下,PC指针指向哪里?
  • 用的是nand flash
    那就是说没有其他特殊的设置 要求? 和裸机程序的编译 转化过程一样?
    好的 我试试
  • 大家好 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的地址分配

  • 具体报错是什么?
  • 报的是语法错误!!!

    看来不能这样写!!!

  • 我直接在sysbios工程添加了个cmd文件 指定如下:

    SECTIONS
    {
    .myboot
    {
    boot.ae66<boot.oe66>(.text)
    } > BOOT_CORE0
    }

    编译可以通过 _c_int00也指向了BOOT_CORE0内存

    这样 单核都加载不起来了!!!kao kao kao

  • 说错了 应该是spi nor flash
  • 忘了说了
    我现在核0跑的是sysbios 核1跑的是裸机程序
    核0单核sysbios程序可以加载 但在工程添加cmd文件 在cmd里面指定:
    SECTIONS
    {
    .myboot
    {
    boot.ae66<boot.oe66>(.text)
    } > BOOT_CORE0
    }
    反而 核0单核sysbios程序跑不起来了
  • 给大家汇报下 双核加载起来了 一个核是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了