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.

请问F2812二级boot程序如何跳转到应用程序入口地址

Other Parts Discussed in Thread: CCSTUDIO, CONTROLSUITE

我想实现F2812从flash启动的二级boot功能,目前,已将boot程序烧写到flash的0x3f7ff6,并且将应用程序烧写到指定的flash地址,比如0x3da000,现在问题是,boot程序怎么跳转到应用程序的入口地址处?

那条语句可以实现这个功能?

asm(“ LB   0x3da000”)

是这样吗?谢谢

  • 请问,有相关的文档资料吗?我看了sci启动的文档,没有发现相关的资料,是我没有看仔细吗?

  • 我的是28035,应该都一样吧。

    #define APP_START_ADDR 0x123456789  //目标地址

    #define Jumpgxcx (void (*)(void))APP_START_ADDR

    (*Jumpgxcx)();  //跳转

    controlsuit里面有个例程,但是缺少很多细节,还有应用程序那里,必须在CMD文件里把begain的地址改一下

  • 是否有参阅TMS320F281x Boot ROM Serial Flash Programming:http://www.ti.com/lit/an/spraaq2/spraaq2.pdf

    http://processors.wiki.ti.com/index.php/C2000_Bootloader?keyMatch=sci%20bootloader&tisearch=Search-CN-Everything

  • 非常感谢

    我按照您说的,但是运行到跳转指令时,出现了非法中断错误

    这个是不能在ram中进行仿真调试吗?我用boot程序将应用程序烧写到指定地址后,也不能启动。但是用ccs3.3的flash烧写工具烧写的boot程序可以运行

  • 用asm也是在仿真时出现非法中断错误

  • 你当前在bootloader项目下仿真,代码跳转,意味着CCS要跳转到另一个项目的代码里面去,CCS目前应该没有这种操作吧?

  • 那怎么判断我boot跳转指令的问题,还是烧写程序bin文件的问题呢,假如不能仿真的话?

    我现在的情况是boot程序烧写到flash中可以运行,应用程序烧写到flash也可以运行,这两个都是通过工具烧写的

    但是使用boot程序烧写应用程序的bin文件,就不能启动了?

  • 我还想请教一下,在bootloader程序里变量和代码拷贝到了rom中运行,如果bootloader成功跳转到应用程序里了,那么应用程序的变量和代码也分配到了rom,之前boot程序的变量是否被覆盖了呢?还是需要对应用程序的变量进行地址区分,不能覆盖boot程序的呢?

  • app程序中的CMD文件的begain段是否改了?flash占用的段是否和bootloader重合?

    RAM是可以重合的,覆盖也没事,我的程序没有专门处理RAM的分配,一直运行得好好的。

  • 还有,C2000的烧录方式,我不知bin是怎么处理的,按controlsuit的例程是烧录txt文件,他不是直接把一堆二进制序列从头到尾写入就可以的,这和STM32是不同的。二进制序列中包含一些额外的信息,必须排除,还有包含有段的地址、长度信息,这些不是代码内容,如果按序列直接写入flash,肯定无法运行。

  • 能否给一个controlsuit的例程,或者告诉我在那找,我已经下了controlsuit,但是没有看到2812的,谢谢!

    应用程序已经将begin地址修改到他的flash地址了,应该没有问题。

    我估计是你说的问题,我是用APP_COFF2BIN.bat链接了hex2000,生成了bin文件,这个bin文件里面是AA 08开始,是否就不能直接烧写到flash里面。我应该还看看bin文件的格式。这个在那有?或者说我们如果不用ccs的工具烧写out文件的话,怎么自己将out文件转换为bin文件呢?转换的格式有什么文档呢?

    我的转换方式是否不正确,我是残酷CFKA例程里面的转换方法

    1)APP_COFF2BIN.bat

    cd debug

    C:\CCStudio_v3.3PLA\C2000\cgtools\bin\hex2000.exe APP_hex.cmd

    FileIOShell.exe -i App.hex -o App.bin

    2)转换的cmd文件

    Example_281xSci_echoback.out

    -map APP_hex.map
    -o APP.hex
    -m
    -memwidth 16
    -image

  • TMS320F281x Boot ROM Serial Flash Programming这个文档没有详细的告诉,类似二次boot的程序如何将应用程序的out文件转换为bin文件,然后烧写flash。

    头大。

  • 我又看了看转换的bin文件,里面有一些不需要的内容,和代码不相关,但是,我将bin文件全部烧写到flash里面,即使跳转了,估计也运行不了。

    我对比了一些ccs的工具F28xx On Chip FLash Programmer烧写到Flash里面的内容和bin文件不一致。

    估计问题在这里。

    但是,怎么自己讲out转换为bin呢,那个文档有说明啊?

    谢谢大家的帮助。非常感谢。

    还有,祝大家元旦快乐。

  • HH Y1,

    对不起,你用的是28035,我自己找找吧,谢谢。

  • C:\ti\controlSUITE\device_support\~Utilities\serial_flash_programmer

    就这个例子,要下载最新版的,旧版缺个文件没法打开上位机程序。这个例子里包含了很多系列产品,应该都一样的

  • 请问楼主最后问题解决了吗? 目前也遇到关于二级boot功能的需求,方便交流交流吗?
  • 问题解决了。
    具体方法如下:
    定义好应用程序的入口地址,在需要跳转的时候,直接跳转就可以。
    主要是需要按照F2812芯片的要求将应用程序代码烧写到指定的地址。
  • 老大你的问题解决了,是吧?太好了!可以聊聊有偿分享吗,在线急等!!或者微信563009039