我们的DSP程序(无OS)最近要做一个bootloader程序(可用来更新应用程序的程序),有个比较xx的想法:bootloader程序和应用程序放到一个工程中,生成一个.out文件,据说能方便生产。 我的理解是,这样做相当于把两个程序(bootloader和应用程序)链接到一起,但各自程序空间完全独立,各自代码完全不能有调用关系,只是bootloader程序运行完后jump到应用程序。我觉得烦的地方在于在进入mian函数之前的一段启动代码(初始化c语言运行环境,常量,堆栈初始化)的安置: 1、 首先这段启动代码是在哪个文件中,rts2800.lib还是某asm文件里?怎么将其定位到特定地址空间? 2、 如果这两个程序在一个工程中,只有一个mian函数,并这个启动代码只有一个。显然在更新应用程序的时候应该将应用程序相关的启动代码也更新掉,那么这个启动代码应该定位到应用程序区(能和应用程序一道被更新掉),貌似要按这样的路径才行: 假如解决了启动代码的定位问题,那么bootloader程序的启动代码又如何算呢,怎样能使bootloader与启动代码无关呢,或者在bootloader程序中实现启动代码功能? 撇开这个方案如何BS/SB,大家先告诉我有什么法子能实现吧。
|