您现在的位置: 主页 > MCU > 单片机技术应用 > C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信
本文所属标签:
为本文创立个标签吧:

C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]  新PIC16Bootloader  在完成HyperBootloader之后(具体详见我之前的随笔),我决定重写PIC bootloader。为什么呢? HyperBootloader是由PC端的串口通信软件--超级终端来传送Hex数据的,一行一行地传送,每传送一

  新PIC16Bootloader

本文引用地址: http://www.21ic.com/app/mcu/201808/782667.htm

  在完成HyperBootloader之后(具体详见我之前的随笔),我决定重写PIC bootloader。为什么呢? HyperBootloader是由PC端的串口通信软件--超级终端来传送Hex数据的,一行一行地传送,每传送一行Delay 20ms,以等待Hyperbootloader烧录完。因为这样效率有些低,所以我决定自己写PC端的串口通信程序和PIC bootloader,为了提高效率还定义了PC端串口通信程序和PIC单片机端bootloader之间的通信协定。首先我重写PIC16 bootloader, 我要完成PIC16单片机端bootloader程序--我命其名为PhsBoot_v1.0; 我还要完成与其协同工作的PC端串口通信程序--我命其名为PhsLoader_v1.0, 为此,我花了三个月的空闲时间,自学了C#。

  通信协定

  PIC16单片机端PhsBoot_v1.0和PC端PhsLoader_v1.0之间的通信数据包采用以下协定

...

  定义如下:

STX - Start of packet indicator
ETX - End of packet indicator
LEN - The length of true data
DATA - General data 16 bytes, only first LEN of datas are true
CMD - Base command
ADDR - Address up to 24 bits ( ADDRL , ADDRH , ADDRH)

  具体有以下Base command:

RD-VER: 0x00 -- Read Version Information (最终版本删除了此命令)
RD_MEM: 0x01 -- Read Program Memory (最终版本删除了此命令)
ER_MEM: 0x03 -- Erase Program Memory (最终版本删除了此命令)
WR_MEM: 0x02 -- Write Program Memory
WR_CFG: 0x04 -- Write Configuration Registers

  PhsLoader_v1.0 功能

  定义好了通讯协定, 接着就按照协定去实现PhsLoader_v1.0。 PhsLoader_v1.0的具体功能包括选择COM端口和BAUD RATE, 连接COM, 加载应用程序Hex文件,Parse 应用程序的Hex文件,一行一行解读Hex文件,然后按照通讯协定通过串口发送Hex记录到单片机,接收单片机发送回来的Response,发送完毕后断开COM连接,发送期间出现问题就立马结束发送。

  PhsLoader_v1.0 主要代码段

  PhsLoader_v1.0是用C#实现的,由于是我在利用空余时间自学C#后写的,上面提到的功能都实现了,但肯定有可以提高的地方,欢迎赐教。以下是主要的代码段。


privatevoidbtnDownload_Click(objectsender,EventArgse){btnDownload.Enabled=false;pBarLoading.Visible=false;if(!this.connect()){btnDownload.Enabled=true;return;}try{loaderReader=newStreamReader(textBoxFile.Text);}catch(Exceptionex){Debug.WriteLine("Error:"+ex.Message);textBoxStatus.ForeColor=Color.Red;textBoxStatus.AppendText("Readhexfileunsuccessfullyrn");textBoxStatus.ForeColor=Color.Black;loaderReader.Close();loaderSerial.Close();btnDownload.Enabled=true;return;}loaderFrame=newSerialFrame();//if(!erase())//{//textBoxStatus.ForeColor=Color.Red;//textBoxStatus.AppendText("Eraseunsuccessfullyrn");//textBoxStatus.ForeColor=Color.Black;//loaderReader.Close();//loaderSerial.Close();//btnDownload.Enabled=true;//return;/
			

              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信
 

"C语言PIC16 serial bootloader和C#语言bootloader PC端串口通信"的相关文章

围观()