一)我们现在有一个需求:使用28335DSP,程序烧写完成后,可在线替换原有DSP程序中的某一块功能,且可多次覆盖擦写,而不修改DSP的其他程序,
不能通过CCS来烧写,不能编译整个DSP程序,仅编译该功能相关的DSP程序,以实现该功能的可替换。
二)针对该需求,我们现在想到的一个方法为:
1)第一步:该功能C程序以及变量单独放置在某一flash区域,该区域为该功能独用,修改完一个功能C程序后,使用CCS提供的编译器+链接器(cl2000)通过命令行方式来编译该C程序,
生成DSP的机器语言.out文件,通过CCS提供的hex转换器(hex2000)来生成.hex文件。
2)第二步:通过C2Prog工具,先擦写该功能C程序所独对应的flash,后将该hex文件烧写到该片flash区即可。
三)在调试过程中,遇到如下问题:
1)直接使用命令行:cl2000 -v28 -ml -mt test.c –run_linker –output_file=test.out
可以生成.out文件,但会有若干提示,如下图。
2)调用库文件使用命令行:cl2000 -v28 –float_support=fpu32 -ml -mt test.c –run_linker –search_path=""
–library=28335_FLASH_lnk.cmd –output_file=test.out
编译直接错误,并有如下提示:
不知以上是什么原因,有没有别的方法去实现该想法呢?
Jordan Zhou:你这个给我的感觉就是一个bootload外加application。
不明白你为什么做的这么复杂,其实可以通过建立两个project的方式,分别烧入不同的flash来实现。当中通过绝对地址来调用相关的功能。
一)我们现在有一个需求:使用28335DSP,程序烧写完成后,可在线替换原有DSP程序中的某一块功能,且可多次覆盖擦写,而不修改DSP的其他程序,
不能通过CCS来烧写,不能编译整个DSP程序,仅编译该功能相关的DSP程序,以实现该功能的可替换。
二)针对该需求,我们现在想到的一个方法为:
1)第一步:该功能C程序以及变量单独放置在某一flash区域,该区域为该功能独用,修改完一个功能C程序后,使用CCS提供的编译器+链接器(cl2000)通过命令行方式来编译该C程序,
生成DSP的机器语言.out文件,通过CCS提供的hex转换器(hex2000)来生成.hex文件。
2)第二步:通过C2Prog工具,先擦写该功能C程序所独对应的flash,后将该hex文件烧写到该片flash区即可。
三)在调试过程中,遇到如下问题:
1)直接使用命令行:cl2000 -v28 -ml -mt test.c –run_linker –output_file=test.out
可以生成.out文件,但会有若干提示,如下图。
2)调用库文件使用命令行:cl2000 -v28 –float_support=fpu32 -ml -mt test.c –run_linker –search_path=""
–library=28335_FLASH_lnk.cmd –output_file=test.out
编译直接错误,并有如下提示:
不知以上是什么原因,有没有别的方法去实现该想法呢?
andy sun:
回复 Jordan Zhou:
用两个工程是个好方法,那请问一下如何设置,使得函数地址烧写到固定的flash地址上,而不是修改代码并添加一些其他函数后,重新编译导致整个函数地址变化呢?