TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

user5188746:

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

HH Y:

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

#define APP_START_ADDR 0x123456789  //目标地址

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

(*Jumpgxcx)();  //跳转

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

Seven Han:

是否有参阅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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

user5188746:

回复 HH Y:

非常感谢

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

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

user5188746:

回复 user5188746:

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

HH Y:

回复 user5188746:

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

user5188746:

回复 HH Y:

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

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

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

user5188746:

回复 user5188746:

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

HH Y:

回复 user5188746:

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

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

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

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

asm(“ LB   0x3da000”)

是这样吗?谢谢

HH Y:

回复 user5188746:

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

赞(0)
未经允许不得转载:TI中文支持网 » 请问F2812二级boot程序如何跳转到应用程序入口地址
分享到: 更多 (0)