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.

基于TMS320F2803自编写的boot升级程序与应用程序之间的跳转问题



大家好!

    我通过自编写boot升级程序下载应用程序数据流,但是跳转不到应用程序去,不知道原因何在?

    我验证我的跳转程序段方法如下:

          首先通过仿真器执行应用程序,可以在线跑,去掉仿真器时,程序不能跑(程序的入口地址在FLASH扇形区B);

          其次设置debug让其在加载自编写boot程序时不擦除FLASH扇形区B,由boot程序可直接跳转到应用程序正常执行,去掉仿真器也是可以正常跑的;

  我也比对了自编写boot下载的应用程序数据流和通过仿真器下载的应用程序的数据流是一样的,但应用程序就是跑不起来?

有哪位大神指点下呗!

  • Nvshi,

    其次设置debug让其在加载自编写boot程序时不擦除FLASH扇形区B,由boot程序可直接跳转到应用程序正常执行,去掉仿真器也是可以正常跑的;

    上面这句话怎么跟你的问题有矛盾,不容易理解。

     

    升级结束后,检查一下boot to flash的起始地址处是否放有跳转指令跳转去执行_C_INT00.

    Eric

  • 呵呵,你好,

         我的意思是用仿真器下载和用自己编写的boot程序分别下载应用程序。

        我把应用程序的中断关掉之后,可以正常跳转;所以我现在想修改自己的跳转代码,但是老是进入 User Defined trap 12,找不出来具体问题在哪里了之前的话,我是直接用LB 0x3f6ffe,跳转的。现在是采用内部boot的_ExitBoot退出汇编程序,这样做的话有什么问题啊

     

     

  • nvshi,

     升级完成后, LB 0x3f7ff6 我认为可以这么跳转。

    Eric

  • 但现在的问题是我应用程序中有中断的话,就是跳转不过去啊?

  • 你好!

          我刚发现,LB0x3f7ffe是可以跳转的,但新的问题出现了!我先说明一下我的程序分区情况,自编boot在flash扇形区A,应用程序在扇形区B,当扇形区D和E中无数据时,应用程序可以正常跑,而我打算在扇形区D放入一些数据,但在这就导致了自编boot不能引导应用程序。请问是什么原因啊?

         还有一个问题是运行到我的汇编代码如下:       

        __stack:    .sect  ".stack"

        MOV SP, #__stack

    时,出现Illegal operation TRAP,什么情况啊?

  • TI工程师您好!

        用LB0x3f7ffe是可以跳转的,但出现了一个很怪异的问题就是我在扇形区D从地址0x3F4FFD开始写入1个数据,2个数据,3个数据,都是跳转不了的,其他情况都是可以的;同理我在扇形区C从地址0x3F5FFD开始写入1个数据,2个数据,3个数据,也是可以跳转的;

       请问是什么原因啊?

  • 工程师您好!

        我用LB  0x3f6ffe  直接跳转之后,应用程序的输出不正确了,什么原因呢?难道是按照内部的Bootloader退出程序那样吗?不能直接跳转到应用程序入口?