本发明涉及软件技术领域,特别涉及嵌入式系统的启动和刷新方法及其刷新程序的构造方法。
背景技术:
刷新程序在以mcu为主的嵌入式系统中的主要作用是完成程序的加载和更新。启动后如果刷新程序判断系统中的应用程序有效,则跳转到应用程序执行,如果判断应用程序无效,则提示上位机需要更新应用程序。应用程序是否有效一般通过存储在系统flash中的标志位来判断。
这样的系统有三大缺陷:
1、每次启动系统最先运行的是刷新程序,其次才是应用程序,会浪费一定时间,对响应速度和实时性要求高的系统不太适用。
2、这种系统需要修改应用程序的编译链接方式,增加了应用程序开发的复杂度。因为在这种系统中刷新程序占用了固定的地址空间,一般从0地址开始,应用程序的起始地址需在刷新程序的结束地址后,但是一般默认编译环境编译的程序都是从零地址开始,所以在应用程序发布前不仅需要重新调整应用程序的内存布局,还要做好中断向量表的重映射,需要对编译链接环境十分熟悉,稍有不慎就可能造成运行应用程序时出现异常,而这种异常也十分难于定位。
3、刷新程序地址是固定的,约束了应用程序的地址范围,如若应用程序变大,可能会无法烧录。
技术实现要素:
本发明要解决的技术问题是:提供一种嵌入式系统的启动和刷新方法及其刷新程序的构造方法,缩短系统启动耗时,进一步的,根据需要还可再次修改刷新程序的位置。
为解决上述问题,本发明采用的技术方案是:
嵌入式系统的刷新程序的构造方法,将应用程序烧写在以系统默认的启动地址为起始地址的存储空间中,将刷新程序的起始地址烧写在应用程序结束地址后到存储空间结束地址前的任意地址;若系统中无任何程序,则将系统上电默认的程序起始地址的内容设为跳转到刷新程序的起始地址的指令。
具体的,刷新程序在编译时,提供有一个可配置的编译参数,该编译参数规定了刷新程序的起始地址;若需调整刷新程序的位置,则重新配置编译参数的参数值。
嵌入式系统的启动和刷新方法,具体步骤如下:
a.系统启动,判断是否有应用程序,若是,则进入步骤b,否则进入步骤c;
b.继续执行应用程序,并判断是否需要更新应用程序或刷新程序,若是则进入步骤c;否则继续执行应用程序;
c.跳转到刷新程序的起始地址,并执行刷新程序,其中,刷新程序的起始地址烧位于应用程序结束地址后到存储空间结束地址前的任意地址;
d.判断刷新程序是否需要更新,若是,则更新刷新程序,并返回步骤a,否则进入步骤e;
e.更新应用程序,并返回步骤a。
进一步的,步骤e之前还包括:
判断是否需要调整刷新程序的位置,若需要,则先重新配置编译刷新程序的编译参数的参数值,再进入步骤e,若不需要,则直接进入步骤e。
进一步的,判断是否需要调整刷新程序的位置的依据为:应用程序大小是否超出原应用程序结束地址至刷新程序起始地址之间的存储空间的大小。
本发明的有益效果是:
1、由于系统启动后正常情况直接运行应用程序,无须运行刷新程序,因此缩短启动耗时,系统启动后只有遇非正常情况,如应用程序无效,才运行刷新程序。
2、由于在编译刷新程序时,提供了一个可配置的编译参数,因此刷新程序可以灵活配置其在存储空间的位置,固化后还可以再次修改位置。
附图说明
图1为嵌入式系统的内存布局图;
图2为嵌入式系统的启动和刷新流程图。
具体实施方式
实施例1
实施例1提供一种嵌入式系统的刷新程序的构造方法,如图1所示,通过将应用程序烧写在以系统默认的启动地址为起始地址的存储空间中(一般为0地址),将刷新程序的起始地址烧写在应用程序结束地址后到存储空间结束地址前的任意地址;若系统中无任何程序,则将系统上电默认的程序起始地址的内容设为跳转到刷新程序的起始地址的指令。
刷新程序在编译时,提供有一个可配置的编译参数,该编译参数规定了刷新程序的起始地址;若需调整刷新程序的位置,则重新配置编译参数的参数值。
在具体实施时,分为以下三种情况
(一)系统中无任何程序时的烧写步骤:
1、将刷新程序烧写到嵌入式系统中。
2、将系统上电默认的程序起始地址的内容设为跳转到刷新程序的地址的指令。
3、与上位机连接。
4、上位机发送更新应用程序指令01。
5、刷新程序准备好更新应用程序的环境,并回复11。
6、上位机发送待更新的应用程序。
7、刷新程序接收并烧写应用程序,完成后回复12。
8、上位机收到指令,显示更新完成。
9、刷新程序复位嵌入式系统。
10、系统重新启动,默认的程序起始地址的内容为应用程序的第一条指令,所以直接启动应用程序。
(二)系统中已有应用程序,需要再更新的烧写步骤:
1、上位机发送更新应用指令01
2、应用程序跳转到刷新程序的起始地址
3、后同实施方式(一)中的步骤5-10
(三)改变刷新程序地址的步骤:
1、在编译刷新程序时,提供一个可配置的编译参数,该参数规定了刷新程序的起始地址,即烧写到存储空间的地址,改变此地址为新的刷新程序的起始地址,并重新编译链接。
2、上位机发送更新刷新程序的指令02
3、刷新程序准备好更新刷新程序的环境,并回复22
4、上位机发送待更新的刷新程序。
5、刷新程序接收并烧写刷新程序,完成后回复23
6、上位机收到指令,显示更新完成。
7、刷新程序将系统上电默认的程序起始地址的内容设为跳转到新的刷新程序的地址的指令。
8、刷新程序复位嵌入式系统。
9、系统重新启动,跳转到新的刷新程序的起始地址,开始运行新的刷新程序。
实施例2
实施例2提供一种嵌入式系统的启动和刷新方法,该方法基于实施例1的刷新程序的构造,如图2所示,具体步骤如下:
a.系统启动,判断是否有应用程序,若是,则进入步骤b,否则进入步骤c;
b.继续执行应用程序,并判断是否需要更新应用程序或刷新程序,若是则进入步骤c;否则继续执行应用程序;
c.跳转到刷新程序的起始地址,并执行刷新程序,其中,刷新程序的起始地址烧位于应用程序结束地址后到存储空间结束地址前的任意地址;
d.判断应用程序大小是否超出原应用程序结束地址至刷新程序起始地址之间的存储空间的大小,若超出,则表明需要调整刷新程序的位置,则先重新配置编译刷新程序的编译参数的参数值,再进入步骤e,若未超出,则表明不需要调整刷新程序的位置,则直接进入步骤e;
e.更新应用程序,并返回步骤a。
实施例3
在pic24ep512gu810芯片中,初始时我们将flash0地址(即系统默认的启动地址)的指令烧写为跳转到0x30000,在0x30000处烧写刷新程序。系统上电后首先运行0地址指令,即跳转到0x30000处,开始运行刷新程序,此时刷新程序和上位机通信,上位机发送更新应用程序的指令,刷新程序开始更新应用程序,应用程序被烧写到0地址为起始地址的flash中。应用程序更新完毕后,重启系统。此时flash0地址中的指令为应用程序的第一条指令,运行0地址指令即开始运行应用程序,以后每次重启系统都可以直接运行应用程序,无须再运行刷新程序。如果需要再次更新应用程序,则上位机发送更新指令,应用程序跳转到刷新程序,刷新程序配合上位机一起完成应用程序的更新。
以上描述了本发明的基本原理和主要的特征,说明书的描述只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
PHP网站源码布吉外贸网站制作爱联设计公司网站南联网站优化石岩至尊标王松岗网站搭建惠州网站推广东莞网站排名优化永湖百度竞价荷坳网站推广光明网站搜索优化大浪模板网站建设塘坑设计网站横岗高端网站设计光明seo排名石岩设计网站吉祥百搜标王西乡百度竞价包年推广龙岗设计网站平湖推广网站惠州网站定制坪山企业网站改版丹竹头百度关键词包年推广民治至尊标王吉祥网站设计布吉企业网站改版福永SEO按效果付费坪地网站制作设计石岩网站制作设计坪山至尊标王永湖品牌网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运