网站大量收购独家精品文档,联系QQ:2885784924

基于飞思卡尔的Bootloader程序下载更新汇编.docx

基于飞思卡尔的Bootloader程序下载更新汇编.docx

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于飞思卡尔的Bootloader程序下载更新汇编

基于飞思卡尔的Bootloader程序下载更新前 言写这篇文档是因为大三暑假时在一家公司实习,做一个基于飞思卡尔的bootloader远程更新项目,刚开始定的技术指标是基于MC9S12XS128单片机的Bootloader程序、远程(基于GSM网络)和CAN总线通信。但因为我只是一个本科实习生而且实习时间只有一个多月,所以只完成了基于SCI的本地写入.S19文件的更新。这大概也就是这篇文档所包含的内容啦。整个程序是存在瑕疵甚至基本上可以说是不成功的,但是我觉得自己在做这个项目的过程中确实也解决了网上没有提到或者没有答案的一些问题,特写此文档,希望大家各取所需,如果有什么高见或者发现了我明显错误的地方,也非常欢迎大家给我指出。欢迎大家前来指教。小目录一、Bootloader的含义---------------------------------------------------------2二、SCI串口的使用------------------------------------------------------------3三、Flash的擦除和写入--------------------------------------------------------5四、.S19文件的写入-----------------------------------------------------------13五、心得体会-----------------------------------------------------------------14一、Bootloader的意义与作用关于Bootloader的意义网上非常之多,这里针对单片机的Bootloader程序进行说明。Bootloader是在单片机上电启动时执行的一小段程序。也称作固件,通过这段程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用应用程序准备好正确的环境。Boot代码由MCU启动时执行的指令组成。这里的loader指向MCU的Flash中写入新的应用程序。因此,Bootloader是依赖于特定的硬件而实现的,因此,在众多嵌入式产品中目前还不可能实现通用Bootloader。Bootloader的最大优点是:在不需要外部编程器的情况下,对嵌入式产品的应用代码进行更新升级。它使得通过局域网或者Intemet远程更新程序成为可能。例如,如果有5000个基于MCU的电能表应用程序需要更新,电能表制造商的技术人员就可以避免从事对每一个电能表重新编程的巨大工作量,通过使用Bootloader的功能,由控制中心通过电能表抄表系统网络,远程对5?000个电表重新编程。可见,Bootloader功能对于嵌入式系统的广泛应用具有十分重要的意义。再举一个例子。就拿我自己做这个程序的目的来说,我所在的公司将自己的产品卖到全国各地,如果哪一天公司的底层软件工程师(单片机工程师)想要升级底层软件,就可以借助GSM网络直接通过单片机中的Bootloader程序进行底层软件的自我更新,而不是派出售后人员一台一台的进行更新,节省了大量的人力物力。注意点:平时我们最常用到的下载程序的方法是通过USB数据线或其他数据线进行程序的烧写,这个方式是通过外界提供给单片机高电压来对flash擦除和写入完成的。而Bootloader不需要外界提供高电压仅靠正常工作电压便可完成对flash的擦除和写入,从而达到更新程序的目的。二、SCI串口的使用前面也提到,我做的是通过SCI串口的本地更新。SCI(Serial Communication Interface,串行通信接口)是最常用、最经典的串行通信接口方式。通信双方除了要按照约定的真个是进行数据通信外,还要约定相同的通信速率,在SCI通信中使用波特率来表示。串行通信的波特率被定义为每秒内传送的位数,单位为b/s或bps,常用的波特率有1200bps,4800bps,9600bps,19200bps,38400bps等。SCI的使用主要注意两点:波特率的设置和工作方式的选择,我选择的是中断工作方式。波特率:设置波特率的主要目的是使单片机和上位机(上位机在这里就指将信息发给单片机的PC端)保持同步。MC9S12XS128的波特率寄存器是SCIBDH和SCIBDL,总共16位但是只有13位可以写入。SBR[12:0]:波特率常数,取值1~8191.波特率发生器的时钟输出是由MCU内部总线时钟BUSCLK分频而来,SBR[12:0]就是分频系数,而SCI模块需要的工作时钟为波特率的16倍。SCI的波特率计算公式如下:SCI=fBUS/(16*SBR[12:0])波特率的计算数结果些许误差可以忽略,以

您可能关注的文档

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档