想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
Young Hu:
我没见过这么用的。
如果烧写完了以后怎么运行??怎么去跳转到新的程序?我个人感觉可以去修改boot的程序啊
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
jingjingyaju:
回复 Young Hu:
我的升级程序代码是包含判断是否升级,调用API函数的。每次更新的都是整个部分,不仅仅是需要升级的程序啊
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
bkn1860:
回复 jingjingyaju:
这个方式可行,执行烧录动作的代码需要放到RAM里面运行。本人采用这种方式烧录过2812、28335、28027都可以。上位机软件可以是SDFlash也可以是codeskin。
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
jingjingyaju:
回复 bkn1860:
我是把代码拷到ram里面了,就是用#pragma CODE_SECTION(main,"ramfuncs")的形式,然后再cmd里面配置,可是擦除的时候没有返回的。感觉是把与液晶通信的那部分擦掉了,我停止运行时,通过反汇编,感觉是停止code branch的地方。我也不晓得怎么回事
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
bkn1860:
回复 jingjingyaju:
你先在RAM里面单独跑这部分代码看能不能擦写?如果可以的话你从Flash拷贝到RAM只要首地址给对了就没什么问题了。
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
jingjingyaju:
回复 bkn1860:
我这个如果不擦flashA区的话都正常,因为我的代码存在Flash A 里面,可是要是把FlashA擦除了,就是没返回。从ram里面单独跑这部分代码是什么意思呀?我是dsp新手,好多东西都不懂,还请大神指点
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
bkn1860:
回复 jingjingyaju:
FlashA擦除了,就是没返回?这里返回的是什么? 从ram里面单独跑这部分代码是和擦写有关的代码你可以放到ti的头文件例程里面运行,那些代码大部分在RAM里面运行的,每次load到DSP里面,看这样能不能正常擦写。有没有擦掉可以看Flash里面的数据,擦掉以后Flash里面全为F。
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
jingjingyaju:
回复 bkn1860:
我的程序是擦完Flash后通知上位机擦除完毕,传送升级程序代码。现在是擦除完了,没有返回信号了。
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
jingjingyaju:
回复 bkn1860:
您好:
您采用这种方法成功烧写2812、28335、28027的时候,是不是用一个程序烧写另一个程序呀?前一个“程序”指已固化程序,用于实现串口烧写的时机判断、数据接收及烧写的具体实施等,该程序使用了Flash281x_API库编程算法;而后一个“程序”是用户的应用目标代码。可是前一个程序和后一个程序怎么实现跳转呀?一共就一个main函数,是后一个程序里有main函数的吧,那前一个程序没有main函数根本编译不通过,怎么烧到flash里面呢?我对这个问题纠结很长时间了,还请大神指点一下。
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
10#:
回复 jingjingyaju:
下位机的程序,目前有参考例程的是基于F281x的,但只要阅读datasheet,了解boot rom和FlashAPI,就可以同样实现其它芯片的操作。
TMS320F281x Boot ROM Serial Flash Programming (www.ti.com/lit/SPRAAQ2)
方法可以有两种,采用一个工程(只有一个main函数)或两个工程(有两个main函数),但都需要使用绝对地址跳转。