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

2013-1-21 21:12 1524 16 16 分类: 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条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /4 下一条