1、我下载了官方demo,我
我看了demo,几个地方感觉很奇怪
A:擦除是从0x0000开始的,不是应该从0x1000开始吗? 也有可能烧写的时候设置了,所以会不允许擦除吧
B:写入APP数据时,我看了上位机发送的数据,没有带地址偏移,所以程序写入也会从0x0000开始写,按我的理解应该写入到0x1000去
2、我的芯片是STC8H8K32U,
没有设置用户EEPROM的地方
3、我自己改了isp程序,我直接把app的程序写了个数组,放到ISP程序中(这个数据我是从官方给的上位机中复制的,从0x1000开始的那部分)
ISP启动的时候,直接将数组写到0x1000,然后跳转;
然后结果就是程序不断的重启,ISP->写app数据到0x1000->跳转->重启;
问:
1、STC8H8K32U能做在线升级吗
2、我觉得按我第三种方式应该可以测试跳转,为什么不行呢?
BYTE code demo_bin[] = {
0x02, 0x10, 0xAF, 0xEB, 0x9F, 0xF5, 0xF0, 0xEA,
0x9E, 0x42, 0xF0, 0xE9, 0x9D, 0x42, 0xF0, 0xE8,
0x9C, 0x45, 0xF0, 0x22, 0xA8, 0x82, 0x85, 0x83,
0xF0, 0xD0, 0x83, 0xD0, 0x82, 0x12, 0x10, 0x2B,
0x12, 0x10, 0x2B, 0x12, 0x10, 0x2B, 0x12, 0x10,
0x2B, 0xE4, 0x73, 0xE4, 0x93, 0xA3, 0xC5, 0x83,
0xC5, 0xF0, 0xC5, 0x83, 0xC8, 0xC5, 0x82, 0xC8,
0xF0, 0xA3, 0xC5, 0x83, 0xC5, 0xF0, 0xC5, 0x83,
0xC8, 0xC5, 0x82, 0xC8, 0x22, 0x8E, 0x08, 0x8F,
0x09, 0xE4, 0xF5, 0x0A, 0xF5, 0x0B, 0xC3, 0xE5,
0x0B, 0x95, 0x09, 0xE5, 0x0A, 0x95, 0x08, 0x50,
0x24, 0x90, 0x00, 0x00, 0xAF, 0x82, 0xAE, 0x83,
0xE4, 0xFC, 0xFD, 0x7B, 0xE0, 0x7A, 0x2E, 0xF9,
0xF8, 0xD3, 0x12, 0x10, 0x03, 0x40, 0x04, 0x00,
0xA3, 0x80, 0xE9, 0x05, 0x0B, 0xE5, 0x0B, 0x70,
0xD5, 0x05, 0x0A, 0x80, 0xD1, 0x22, 0x43, 0xBA,
0x80, 0x43, 0xCC, 0x80, 0x53, 0xCB, 0x7F, 0xD2,
0xEF, 0x53, 0xCC, 0xFB, 0x53, 0xCB, 0xFB, 0x90,
0xFE, 0x16, 0xE0, 0x44, 0x04, 0xF0, 0x90, 0x1F,
0xFC, 0x12, 0x10, 0x14, 0x00, 0x00, 0x00, 0x00,
0x22, 0x12, 0x10, 0x7E, 0xB2, 0xEF, 0x7F, 0x0A,
0x7E, 0x00, 0x12, 0x10, 0x45, 0x80, 0xF5, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0x10, 0xA1
};这是app的bin数据
20260910
最后换了8H8K64单片机可以了 结束!
跳转:((void (code *)())(LDR_SIZE))();
|