打印
[MCU]

有什么法子能实现

[复制链接]
238|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wyjie|  楼主 | 2020-11-2 20:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们的DSP程序(无OS)最近要做一个bootloader程序(可用来更新应用程序的程序),有个比较xx的想法:bootloader程序和应用程序放到一个工程中,生成一个.out文件,据说能方便生产。
我的理解是,这样做相当于把两个程序(bootloader和应用程序)链接到一起,但各自程序空间完全独立,各自代码完全不能有调用关系,只是bootloader程序运行完后jump到应用程序。我觉得烦的地方在于在进入mian函数之前的一段启动代码(初始化c语言运行环境,常量,堆栈初始化)的安置:
1、  首先这段启动代码是在哪个文件中,rts2800.lib还是某asm文件里?怎么将其定位到特定地址空间?
2、  如果这两个程序在一个工程中,只有一个mian函数,并这个启动代码只有一个。显然在更新应用程序的时候应该将应用程序相关的启动代码也更新掉,那么这个启动代码应该定位到应用程序区(能和应用程序一道被更新掉),貌似要按这样的路径才行:

使用特权

评论回复

相关帖子

沙发
wyjie|  楼主 | 2020-11-2 20:53 | 只看该作者
假如解决了启动代码的定位问题,那么bootloader程序的启动代码又如何算呢,怎样能使bootloader与启动代码无关呢,或者在bootloader程序中实现启动代码功能?
撇开这个方案如何BS/SB,大家先告诉我有什么法子能实现吧。

使用特权

评论回复
板凳
jlyuan| | 2020-11-2 21:01 | 只看该作者
dsp有一段rom用来boot的,rom是厂家固化好的,主要作用就是跳转到A,你需要写两段程序:ASP片内的(作用复制外部芯片应用程序到DSP片内运行的汇编程序),B自己外加的外部存储芯片(里面包含应用程序),A和B程序显然都需要在CCS里面编译的,这里只是给你简单介绍下,详细请参考TMS320C672X的二次bootloader

使用特权

评论回复
地板
yszong| | 2020-11-2 21:04 | 只看该作者
你主要要做两件事,在CCS里面编译出固化到外部存储芯片(eeprom或flash)的应用程序。第二,写一段复制外部存储芯片里应用程序的汇编程序在DSP内部。DSP上电复位,就会启动内部boot,跳转到DSP内部起复制应用程序的汇编程序,汇编程序复制外部应用程序放到DSPram里面跑。

使用特权

评论回复
5
dengdc| | 2020-11-2 21:07 | 只看该作者
你的功能很容易实现,就照你的想法做就好了。我就是奇怪一个地方,你的结构没有OS,而且bootloader程序和应用程序放到一个工程中,生成一个.out文件,也就是说你的应用程序是放在芯片内部的,当有新的应用程序的时候你怎么更新?如果用host接口更新的话,干嘛不更新整个.out文件,而要保留bootloader程序,这不是吃饱了撑的么。

使用特权

评论回复
6
wyjie|  楼主 | 2020-11-2 21:12 | 只看该作者
我的程序在片内Flash,目的是bootloader程序和应用程序同在一个out文件,然后实现只更新应用程序。

使用特权

评论回复
7
wyjie|  楼主 | 2020-11-2 21:18 | 只看该作者
哥们,你没理解我的意思啊

使用特权

评论回复
8
jlyuan| | 2020-11-2 21:23 | 只看该作者
哦,不是我说的两个程序的问题。

使用特权

评论回复
9
shimx| | 2020-11-2 21:28 | 只看该作者
DSP上电复位,就会启动内部boot,跳转到DSP内部起复制应用程序的汇编程序

使用特权

评论回复
10
wyjie|  楼主 | 2020-11-2 21:31 | 只看该作者
是啊,再说吧,谢谢各位啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

927

主题

12706

帖子

5

粉丝