原创 基于TFTP 在线升级程序的实现

2013-1-21 21:12 1423 15 15 分类: MCU/ 嵌入式

一般程序的在线升级 都是基于Bootloader 来实现的,简单的说就是把一段专门管升级的程序放在一个特定的位置,一旦接收到相应的指令和数据流,就把应用程序全部改掉。

升级通道用什么的都有,有RS232,USB,TCP/IP  .    这里我介绍TCP/IP 协议的升级。

知识储备要有下列:

第一   了解TFTP 

一般来说,网络协议中有一个协议是专门为下载程序定义的。 那就是TFTP(Trivial File Transfer Protocol,简单文件传输协议).  它基于UDP协议而实现的。只有5个包,其实用2个包就可以实现网络下载任务。

 接收到 Write request (WRQ),就把要写的FLASH 全部擦掉,准备开始写

 接收到Data (DATA)   开始一写512字节。 到接收到少于512字节的包,那就是最后一包了。

当然,这是最理想不出错的情况下的运用,网上有延时和错误,其余的几个包也得看看。

第二  了解 HEX 文件的组成结构。

       一般的程序都是用Intel HEX  文本,里面有完整的数量,地址和数据类型的信息。

    HEX 文件以行为单位。每行以字符 ‘:’ (0x3a) 开头,以回车换行符 0x0d, 0x0a 为结束。每行开始和结束之间的所有内容,都是以字符形式表现的.

一行HEX文件最多是45字节。其中有16个数据。

这16个数据要下载到MCU中还要转换成2进制。

 

第三   文件的加密

      如果是Internet 网,可以省略这一步骤。 

     如果是客户自己升级,则要加密,否则自己的程序给了别人,那客户有烧写程序,就实现不了经济价值了。

    加密的方法复杂也复杂,简单也可简单。

  咱就简单点,把数据XOR一个8位的密钥就可以了。 只是加密数据,如果你把起始字符,地址等也加一个相同的密钥,那傻子也能解密出来。

控制板接收到后,对密文解密得到明文,再转换成BIN就可以写入FLASH 了。

 

第四  对MCU的FLASH 写与读 有一定了解。

     MICROCHIP的MCU是有对FLASH读写的功能的。  这个具体看datasheet.

microchip 最大的好处是技术支持到位。且数据手册多是中文。

 

    

 

 

 

 

 

 

 

 

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
15
关闭 站长推荐上一条 /3 下一条