C语言写的PIC16单片机的串口bootloader.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言写的PIC16单片机的串口bootloader

自己用C语言写PIC16单片机的serial bootloader 为什么自己写bootloader   我的第一款自己的serial bootloader是写给Microchip PIC16单片机的,我命其名为HyperBootloader_PIC16. 为什么取这个名字,下面会讲。很多朋友可能会问为什么要自己写bootloader, 百度上一搜,有不少下载下来直接就可以用。比如ds30_Loader 就很不错,免费,还支持Microchip很多系列的单片机。是没错,但是网上搜到的bootloader用C语言写的少得可怜,或者不能用,或者不是用XC8编译的(Microchip 的C编译器)。它们绝大多数都是用汇编写的,包括ds30_Loader。对于不怎么用汇编的我感觉很头疼,这些bootloader也不太好修改,比如增加个自己需要的功能都比较困难。所以我决定自己用C语言写PIC16 的serial bootloader。说干就干,本来以为是小菜一碟,没想到写一个稳定好用又节省空间的bootloader也不简单,这是后话。在讲如何实现自己的PIC16 serial bootloader之前,我先讲下serial bootloader的基础知识。如果不需要了解的,请跳过这部分。 Serial?bootloader之ABC   Serial bootloader是一种非常方便使用并且低成本的程序烧写的方法。一般情况,每次烧写Microchip单片机我们都需要将烧录器PICKit3或ICD3接上目标板,然后在电脑上使用Microchip IPE或MPLAB X就可以直接烧写Hex文件到目标板中。使用serial bootloader 就可以不需要插拔烧录器,对开发工程师来讲非常的方便。Serial bootloader需要用到单片机的串口,所以单片机端需要如下硬件电路,其中DB9串口是和电脑的串口相连。 Serial bootloader 和应用程序一样也是烧录到程序存储器中,serial bootloader 和应用程序在程序存储器中需要分开放置。所以serial bootloader一般有两种放置方式,一种是放置在程序存储器头部,另一种是放置在程序存储器底部,如下图所示。 Serial bootloader 可以使用烧录器PICkit3或ICD3烧到目标板上,之后更新应用程序就不需要烧录器了。目标板和电脑通过串口相连,电脑上运行一个串口通信程序,将应用程序的Hex文件通过串口传给serial bootloader, serial bootloader 再将接收到的Hex数据烧录到程序存储器的正确的位置上。接下来就是讲今天的主角HyperBootloader_PIC16——我自己写的第一款PIC16单片机C语言 serial bootloader。   HyperBootloader_PIC16   HyperBootloader_PIC16我是模仿HI-TECH的PICC bootloader,由于我是用XC8的编译器的,所以有很多改动。上面有提到bootloader在程序存储器中要么是在头部要么是在底部,而HyperBootloader_PIC16 是在程序存储器的底部。与它通信的电脑端的串口通信程序是超级终端——HyperTerminal. 这也是它命名的由来。   主要代码段   HyerBootloader_PIC16是一款用C语言写的只占很少空间的serial bootloader。只占0x200程序字空间. 实现逻辑也很简单,主要代码段如下。 /* receive a hex file via the serial port and write it to program memory */ for(;;) // loop until end of file { typedef union { unsigned int word; unsigned char byte[2]; } wordbyte; static persistent unsigned char inx; static persistent BANKX wordbyte addr; while (comms_getch()!=‘:‘); // wait for start of hex file line words2write = cksum = bytecount = getXbyte(); words2write = 1;

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档