新闻中心

EEPW首页>嵌入式系统>设计应用> ARM微处理器ISP升级程序设计与应用

ARM微处理器ISP升级程序设计与应用

作者: 时间:2012-12-29 来源:网络 收藏

  下面为对2106读器件ID的完整的过程: OPEN COM bps:9600, StopBits:1, Parity:No, DataBits:8

  WRITE 0x3F

  ?

  READ 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A

  Synchronized\

  WRITE 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A

  Synchronized\

  READ 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A

  Synchronized\OK\

  WRITE 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A

  12000\

  READ 0x31 0x32 0x30 0x30 0x30 0x0D 0x0A 0x4F 0x4B 0x0D 0x0A

  12000\OK\

  WRITE 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A

  U 23130\

  READ 0x55 0x20 0x32 0x33 0x31 0x33 0x30 0x0D 0x0A 0x30 0x0D 0x0A

  U 23130\0\

  WRITE 0x4A 0x0D 0x0A

  J\

  READ 0x4A 0x0D 0x0A 0x30 0x0D 0x0A

  J\0\

  READ 0x34 0x32 0x39 0x33 0x39 0x38 0x34 0x30 0x35 0x30 0x0D 0x0A

  4293984050

  其中WRITE和READ是针对PC而言的。

  UU编码简介

  向FLASH中烧写的程序代码是通过UU编码之后传给的。

  UU编码算法将3字节二进制数据转换成4字节可打印的ASCII字符集。因为Hex格式是将1字节二进制数据转换成2字节ASCII数据,所以UU编码的效率高于Hex格式。

  UU编码的编码方法如下:

  因为3字节二进制数据共24Bits,把它们按6Bits分成4份,这样就变成了4个字节,再把新生成的4个字节每个都加上0x20,若这样处理后的数值为0x20,则用0x60取代。用C语言表示的UU编码过程如下:

  #define ENCODE_BYTE(b) (((b) == 0) ? 0x60 : ((b) + 0x20))

  outbuf [0] = ENCODE_BYTE ((inbytep [0] 0xFC) 》 2);

  outbuf [1] = ENCODE_BYTE (((inbytep [0] 0x03) 《 4) +

  ((inbytep [1] 0xF0) 》 4));

  outbuf [2] = ENCODE_BYTE (((inbytep [1] 0x0F) 《 2) +

  ((inbytep [2] 0xC0) 》 6));

  outbuf [3] = ENCODE_BYTE (inbytep [2] 0x3F);

  若原数据字节数不是3的倍数,则以0x00填充。

  数据通过UU编码之后,以UU编码行的形式打包发送。

  UU编码行的第一个字节表示数据的长度,且为UU编码。

  UU编码规定:任何UU编码行的长度都不应超过61个字节(字符),也就是说,一个UU编码最多可以包含45字节原始的二进制数据。

  例如,对一个用十六进制表示的数据“18F09FE518F09FE518F09FE518F09FE5”,(注意该数据实际长度为16字节,因为显示的问题,这里采用HEX表示。)在经过UU编码之后,数据变为“M/"?Y1CPG^48\)_E/"?Y1CPG^6`7R"Y\/\?Y1CPG^7`````0````$0```!(”。

  LPC2000系列UU编码发送规则

  LPC2000系列规定:

  1.发送器(通常为PC)以UU编码行的形式发送实际数据,且每个数据包都以 “\”结束,所以在UU编码行长度为61字节的时候,发送器实际发送的数据长度为63字节(61个字节UU编码+2字节“\”)。

  2.在发送20个UU编码行之后,应该发送数据校验和。

  数据校验和即为上次校验和计算之后所有发送的原始数据的和。

  数据校验和以ASCII码的方式发送,以 “\”结束。

  接收器在收到校验和后与它接收的数据的校验和相比较,如果校验和匹配,接收器就发送“OK\”,并等待下一次发送。如果校验和不匹配,接收器就发送“RESEND\”。

  3.在数据发送结束,即使不足20个UU编码行也仍然应该发送数据校验和。

  由于FLASH的烧写通常是以4096字节为单位的,所以在每发送4096字节之后也必须发送一个数据校验和。(4096字节=91个UU编码行+1个字节=4×20个UU编码行+11UU编码行+1个字节)

  所以实际发送4096字节数据的过程如下:

  WRITE 63BYTES(1)

  WRITE 63BYTES(2)

  WRITE 63BYTES(3)

  ……

  WRITE 63BYTES(18)

  WRITE 63BYTES(19)

  WRITE 63BYTES(20)

  WRITE CHECKSUM(已发送900字节)

  WRITE 63BYTES(21)

  WRITE 63BYTES(22)

  WRITE 63BYTES(23)

  ……

  WRITE 63BYTES(38)

  WRITE 63BYTES(39)

  WRITE 63BYTES(40)

  WRITE CHECKSUM(已发送1800字节)

  WRITE 63BYTES(41)

  WRITE 63BYTES(42)

  WRITE 63BYTES(43)

  ……

  WRITE 63BYTES(58)

  WRITE 63BYTES(59)

  WRITE 63BYTES(60)

  WRITE CHECKSUM(已发送2700字节)

  WRITE 63BYTES(61)

  WRITE 63BYTES(62)

  WRITE 63BYTES(63)

  ……

  WRITE 63BYTES(78)

  WRITE 63BYTES(79)

  WRITE 63BYTES(80)

  WRITE CHECKSUM(已发送3600字节)

  WRITE 63BYTES(81)

  WRITE 63BYTES(82)

  WRITE 63BYTES(83)

  WRITE 63BYTES(84)

  WRITE 63BYTES(85)

  WRITE 63BYTES(86)

  WRITE 63BYTES(87)

  WRITE 63BYTES(88)

  WRITE 63BYTES(89)

  WRITE 63BYTES(90)

  WRITE 63BYTES(91)

  WRITE 7 BYTES

  WRITE CHECKSUM(已发送4096字节)

  注意上面只包含的PC向微处理器写数据的情况,实际上若没关闭“回声”,微处理器会将上面所有数据回发一次,另外还有校验和响应等。



评论


相关推荐

技术专区

关闭