历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2020年01月20日 | MSP430升级程序

2020-01-20 来源:eefocus

  MSP430升级程序的几点注意事项


  1、这几天测试写好的IAP升级程序,真是一个糟,能将程序下载进去,但无法运行。

  经过各种测试,修改终于找到了问题的原因,现在大致总结下我在写IAP程序的时候

遇到的问题和解决方案。首先要实现单片机的IAP升级程序,我们要知道自己的IDE如何能

将程序的函数或者变量的编译地址固定,因为对于bootload程序,我们要固定它的地址,

还有从bootload跳转到的程序运行的地址。


  对于MSP430,在测试中我程序复位时跳转到rts430x.lib:boot.obj (.text:_isr:

_c_int00_noexit)这样一个启动函数,之后执行_syatem_pre_int->_auto_init->main,

在_auto_init过程中,程序会执行memcpy函数(将.cinit段赋值到RAM里),就是初始化RAM中的全局变量了。我的程序主要错在这个过程里,导致更新后问题不断,还有对于.cinit段和.const段,我们也要固定地址,因为memcpy函数初始化ram的地址被固定了,且bootload是不能更新的,所以固定.cinit段后,我们memcopy操作地址就固定,不然当程序变化重新编译后可能就会事.cinit段的地址发生变化,导致ram初始化错误。


  这样修改后,程序大致就能自升级了,程序只升级运行部分的程序,对bootload程序不升级。


  2、_c_int00 是c语言程序的入口.首先上电后,系统执行reset矢量代码,该代码是我们写的话,我们就令cpu转到c_int00,这段程序为c语言运行作准备,准备工作做好后,就转到c语言的main()。


  如果reset矢量代码不是我们写的,是ti写的,那么就执行bootloader程序,该程序先将从某个外部得到的真正程序放在规定的地方,然后转过去执行该代码。


  那么如何决定reset矢量代码是ti写的还是我们写的,那就看复位后mp/mc脚的电平。

要是调试的时候我们的mp/mc脚选择了我们不希望的方式,怎么办?(在调试的时候一般不管bootloader的,只有项目最后成功了才管),用jtag来控制。


  C程序开始运行时,必须首先初始化C运行环境,这是通过c_int0函数完成的,这个函数在运行支持库(rts,runtime-support library)中。连接器会将这个函数的入口地址放置在复位中断向量处,使其可以在初始化时被调用。c_int0函数进行以下工作以建立C运行环境:为系统堆栈产生.stack块,并初始化堆栈指针。从.cinit块将初始化数据拷贝到.bss块中相应的变量。调用main函数,开始运行C程序。用户可以对c_int0函数进行修改,但修改后的函数必须完成以上任务。

推荐阅读

史海拾趣

Elpac公司的发展小趣事

在电子行业的激烈竞争中,Elpac公司凭借其在电源管理领域的技术革新,逐渐崭露头角。公司创始人李明在创办之初就坚信,只有不断创新才能在市场中立足。他带领团队深入研究市场需求,不断推出具有创新性的电源管理产品。其中,一款高效节能的电源转换器在市场上引起了广泛关注,其出色的性能和稳定性赢得了客户的青睐。随着产品的热销,Elpac公司逐渐在电子行业中建立了自己的品牌地位。

BESTECH公司的发展小趣事

在电子行业的激烈竞争中,Elpac公司凭借其在电源管理领域的技术革新,逐渐崭露头角。公司创始人李明在创办之初就坚信,只有不断创新才能在市场中立足。他带领团队深入研究市场需求,不断推出具有创新性的电源管理产品。其中,一款高效节能的电源转换器在市场上引起了广泛关注,其出色的性能和稳定性赢得了客户的青睐。随着产品的热销,Elpac公司逐渐在电子行业中建立了自己的品牌地位。

Cavium Networks公司的发展小趣事

随着消费者对家庭娱乐和智能生活的需求不断增长,Cavium Networks 敏锐地捕捉到了这一市场趋势。公司推出了面向消费者市场的无线显示解决方案 WiVu,利用最新的笔记本电脑技术如嵌入式 DisplayPort 和显示迷你卡(DMC),为多房间和交互式应用提供了高性能的 Wi-Fi 无线显示解决方案。WiVu 的推出不仅满足了消费者对便捷、高效、高质量的娱乐体验的需求,也引领了市场的新潮流,进一步巩固了 Cavium Networks 在电子行业中的地位。

ELNA(依娜)公司的发展小趣事

ELNA公司的故事始于1940年代,当时该公司推出了其第一台缝纫机。这款缝纫机以其精湛的工艺和卓越的性能迅速在市场上崭露头角。ELNA凭借对品质的坚持和对技术的不断创新,逐渐在缝纫机行业树立了良好的口碑。

随着业务的扩展,ELNA开始涉足电子领域,并逐步将其在机械制造和精密加工方面的技术优势应用到电子产品中。这一转变为公司未来的发展奠定了坚实的基础。

EOS POWER INDIA Pvt公司的发展小趣事

EOS POWER INDIA Pvt公司成立于1991年,由美国加利福尼亚州几位电力电子领域的先驱创立。成立之初,EOS就致力于电力电子技术的研发与应用,特别是在电源解决方案方面。通过引进先进的技术和工艺,EOS在印度市场上逐步建立起自己的品牌形象,并开始为本地客户提供优质的电源产品和服务。

Fanstel公司的发展小趣事

Fanstel公司非常重视企业文化的建设。公司倡导“创新、协作、务实、进取”的企业精神,鼓励员工敢于创新、勇于担当。同时,公司还注重员工的福利待遇和职业发展,为员工创造了一个良好的工作环境和发展空间。这种积极向上的企业文化不仅增强了员工的凝聚力和归属感,也为企业的发展注入了强大的动力。

问答坊 | AI 解惑

[下载]ADS2005A快速入门中文教程(快速上手)

ADS2005A快速入门中文教程.doc ADS Momentum 仿真设计流程(英文).doc ADS Momentum 简介.doc ADS功能概述(ADS2005A,ADS2004A,ADS2003C).doc ADS中常用的数据文件.doc ADS主要仿真器介绍(ADS2005A, ADS2004A, ADS2003C).doc…

查看全部问答>

有关Arm的几个问题

问大家几个问题: 1:bootloader和init.s的运行地址是不是都是0x00000000 2:init.s中的中断跳转指令地址 3:嵌入式内存地址是不是动态映射的,具体一般都是在什么时候啊? 4:arm9现在支持矢量中断和非矢量中断吗?我对它的定义不太清楚,矢量 ...…

查看全部问答>

求助 毕业设计:MVB信号分析电路设计与实现

主要内容: 利用FPGA设计MVB信号分析电路中用到的曼彻斯特解码器。 求各位大神帮忙啊   …

查看全部问答>

如何在程序中 调出 本地连接状态 这个窗口

就是双击任务栏上lan图标或wifi图标会弹出的窗口,如何在程序中调出这个窗口? 用ctlpnl.exe cplmain.cpl...貌似只能弹出网络控制面板中网络设置的窗口,而不是连接状态的窗口。…

查看全部问答>

人在南京,想找点项目长长见识

做了三年单片机了,乘着年轻想多学习学习,有什么项目能做的联系下吧zhaojun1118@163.com…

查看全部问答>

汇编这样会错吗?

;====delay  3s====                 clr     tr2                     ;shut&n ...…

查看全部问答>

【讨论】程序丢失,并不是个别现象

最近我们的产品发现了这个现象. 我在本论坛上搜索,发现这个问题真不少.当然,有些朋友很偏激,说ti是烂货,心情我是很理解的,因为我也遇到了这个问题,也很烦,但所有的帖子多没有下文,是否解决这个问题? 但我根据经验,和所有出现这个情况的用户的使用 ...…

查看全部问答>

电阻阻值变大

我们UPS 上有用了一个49.9K 电阻, 使用前测量完全正常,焊接机器上以后20小时拆下来 电阻阻值由49.9K  变成了67K  , 200个电阻出现3个变大的!   完全一样的电阻加50V 电阻30个小时没发现有异常, 我机器电阻两端2 ...…

查看全部问答>

MPS430学习计划

为了学习好这款单片机,我定制了如下计划: 目标:六个月内对单片机达到基本精通,1年内争取自己做一二个项目 一:学习单片机           1.1个月内对单片机的硬件熟悉,做到能画出基本的原理 ...…

查看全部问答>

一个简易播放器的实现(有图有真相)

实训工程1 简易播放器项目需求基本需求:1. 使用Buzz播放音乐,音乐数据存在Code Flash空间2. 开机后在LCD显示所有音乐,可以通过上、下键翻页。当前音乐有指示。按确定键播放音乐。3. 播放音乐的同时在LCD1602屏上显示音乐的信息:演唱者,时间等 ...…

查看全部问答>