一般程序的在线升级 都是基于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 最大的好处是技术支持到位。且数据手册多是中文。
文章评论(0条评论)
登录后参与讨论