_NCY_ 发表于 2024-3-15 12:29:17

Boot loader跳转到用户程序后 | 编译器重映射中断向量入口地址


Boot loader跳转到用户程序后| 编译器重映射中断向量入口地址


自己做了个bootloader结果就出问题了用的 STC8H8K64U
Bootloader预先烧在0~0x1fff,功能是从flash里读出用户程序,
以0x2000为起点写入芯片,然后跳转到0x2000运行。

发现程序里涉及中断的地方都失效了,其他功能都好好的,
感觉是用户程序配置的问题?

关于配置还有几点不清楚的,麻烦各位大神了
1:start up a51第125行CSEG AT 0是什么意思?
2:option for target里的Target选项,那个off chip code memory选填的范围是干什么的 ?
3:option for target里的c51选项,interrupt vetcor at address是干什么的 ?
自己估摸着这几个配置挺重要的,要是弄懂了应该能有用

_NCY_ 发表于 2024-3-15 12:33:49

用户程序可以运行,但中断失效,bootloader里没涉及任何中断。
失败时候用的配置是
STC-ISP选64k eeprom
cseg at 2000h
Off chip code memory从0x2000~0xE000
Interrupt vectorat address输入的是0x2000
都是自己按感觉胡来的,是不是这块有问题?

gentleman 发表于 2024-3-15 18:32:03

1.在BL 的startup.a51映射中断表
ORG 0003H
LJMP 2003H
...

吧用到的中断 再跳转一下

2.APP 的中断入口 改2000


gentleman 发表于 2024-3-15 18:34:27

中断表在手册查



21cnsound 发表于 2024-3-15 21:42:15

gentleman 发表于 2024-3-15 18:32
1.在BL 的startup.a51映射中断表

ORG 0003H


正解

_NCY_ 发表于 2024-3-16 07:45:01

gentleman 发表于 2024-3-15 18:32
1.在BL 的startup.a51映射中断表

ORG 0003H


我的天,还能这么玩!!我上网搜了一下一直以为c51不能映射中断向量呢,学习了!

虹涛犹珷 发表于 2024-3-16 08:49:42

想问下你的bootloader用了多少K的flash?是串口更新吗?

soma 发表于 2024-3-16 10:24:36

学习下,官方不是有例子吗

_NCY_ 发表于 2024-3-16 11:43:01

虹涛犹珷 发表于 2024-3-16 08:49
想问下你的bootloader用了多少K的flash?是串口更新吗?

预算12K,现在写出来的将近8K了

_NCY_ 发表于 2024-3-16 11:47:57

虹涛犹珷 发表于 2024-3-16 08:49
想问下你的bootloader用了多少K的flash?是串口更新吗?

相对64K来说确实有点大了,主要是想从FLASH里解析FAT实现程序的动态加载,其实就是从FLASH里选择性的更新程序。
MSC程序本身就是一个可供加载的APP,通过加载它实现跟电脑的信息交换
页: [1] 2 3
查看完整版本: Boot loader跳转到用户程序后 | 编译器重映射中断向量入口地址