如何增大8H8K64U的bootloader空间
大虾们,有人改写8H8K64U的USB的bootloader吗?我把bootloader空间增大到8K,可以下载成功,但是跳转失败,具体步骤如下。
1: 修改config文件的LDR_SIZE值。
#define LDR_SIZE 0x2000 //0x1000=4K
2: isr.asm文件的LDR_SIZE
LDR_SIZE EQU 2000H
3:修改APP的配置信息。
Target的Eprpm Start改为0x2003,Eprom Size改为0xDC00.
C51的Interrupt Vectors at address改为0x2000
把启动地址设置为0x1000时,编译后0x1000位置文件如下:
0FE0FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
0FF0FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
100002 1B 00 90 01 32 74 01 F0 22 22 02 10 CE 90 01
101008 E0 64 04 70 24 90 01 00 E0 64 02 70 1C 90 01
102005 E0 70 16 90 01 03 E0 70 79 90 01 02 E0 70 73
103090 01 06 E0 70 02 A3 E0 60 02 80 67 90 01 04 E0
把启动地址设置为0x2000时,编译后0x2000位置文件如下:
1FE0FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
1FF0FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
2000FF FF FF 90 01 32 74 01 F0 22 22 02 20 CE 90 01
201008 E0 64 04 70 24 90 01 00 E0 64 02 70 1C 90 01
202005 E0 70 16 90 01 03 E0 70 79 90 01 02 E0 70 73
203090 01 06 E0 70 02 A3 E0 60 02 80 67 90 01 04 E0
理论上0x2000位置也应该02 1B 00 90开始的啊。 本帖最后由 古人来者_昌 于 2024-8-11 07:09 编辑
使用STC-ISP导出Hex文件,就正确了,但是STC-ISP(用户版)查看就丢失了前3个字节。
本来想改造USB接口的Bootloader,但是在主循环加入点代码后,下载就失败了,应该是加入代码后,USB使用查询方式时间长了,导致下载失败。
while (1)
{
LEDTime++;
usb_isr();
dfu_events();
WatchDog();
//if( ((LEDTime % LED_FLASH_TIME) == 0) && (DFUCommandFlag == 1) ) //加入这两行代码后,USB下载失败
// LED_PIN = ~LED_PIN;
} 古人来者_昌 发表于 2024-8-11 07:05
使用STC-ISP导出Hex文件,就正确了,但是STC-ISP(用户版)查看就丢失了前3个字节。
...
STC-ISP(用户版)固定设置应用程序从1000H开始。
页:
[1]