找回密码
 立即注册
查看: 975|回复: 12

有关中断和入口地址重映射

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-09-05 12:13:40

2

主题

9

回帖

62

积分

注册会员

积分
62
发表于 2024-8-12 14:11:07 | 显示全部楼层 |阅读模式
本帖最后由 gougou_0 于 2024-8-12 14:14 编辑

在“使用STC的IAP系列单片机开发自己的ISP程序”文档中提到”重映射的工作上位机应用程序自动处理,用户在编写ap代码时无需关心“,这句话啥意思,为什么重映射工作不是在isp程序或者应用程序里做呢?上位机不是只搞通信和数据传输吗?难道上位机还要解析程序?如果是自己写isp和上位机,那么烦请把这部分重映射原理和操作方法讲清楚,谢谢!
另外,看例程,isp工程中串口似乎没有采用中断号?个人觉得isp工程中应该可以正常使用中断,且不需要做任何重映射,只有转到应用程序中时,才需要做地址和中断映射
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2024-8-12 15:44:35 | 显示全部楼层
“重映射的工作上位机应用程序自动处理,用户在编写ap代码时无需关心” 这句话要 我要是没有记错的应该是出现在将如何在 KEIL 中重新定义中断偏移的时候。所以你不需要关心,只要根据你的底层Boot程序大小设置中断偏移量
3.png
4.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4850

回帖

8384

积分

超级版主

DebugLab

积分
8384
发表于 2024-8-12 17:45:36 | 显示全部楼层
中断向量位于用户ISP区,用户ISP程序要保留该区域,编译器设置好用户AP区的偏移量,编译器会自动重映射中断
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2024-8-12 18:10:27 | 显示全部楼层
keil 51编译生成的hex文件复位跳转指令是在0000H地址,而用户程序有效代码是从1000H开始,所以需要手动或者通过上位机升级软件将起始跳转指令移到1000H地址。
用户ISP程序与用户应用程序在设计时虽然使用2个项目,但是最终生成的代码是合并烧录到同一个芯片里,所以做不到在用户ISP区域运行时中断地址不偏移,而在用户程序区运行时进行中断地址偏移。

点评

这样是否可行: 下载软件设置整个FLASH可做EEPROM,在用户ISP区运行时,先通过IAP操作重置中断跳转地址为用户ISP区的,等用户ISP程序执行完毕,再通过IAP操作修改中断跳转地址为用户程序区的(虽然一旦操作错误整个  详情 回复 发表于 2024-8-15 12:00
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-09-05 12:13:40

2

主题

9

回帖

62

积分

注册会员

积分
62
发表于 2024-8-12 22:26:29 | 显示全部楼层
那么在isp程序中能否使用中断?是不是在使用中断时需将中断重新映射到app中断区?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-8-12 23:53:02 | 显示全部楼层
isp程序中应该能使用中断中断入口和起始地址有关
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-09-05 12:13:40

2

主题

9

回帖

62

积分

注册会员

积分
62
发表于 2024-8-15 11:09:40 | 显示全部楼层
Debu*** 发表于 2024-8-12 17:45
中断向量位于用户ISP区,用户ISP程序要保留该区域,编译器设置好用户AP区的偏移量,编译器会自动重映射中断 ...

我想请教您,关于isp区域能否正常使用中断,如果能使用,是不是需要在isr.asm中添加偏移量就可以?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2024-09-05 12:13:40

2

主题

9

回帖

62

积分

注册会员

积分
62
发表于 2024-8-15 11:24:45 | 显示全部楼层
乘风*** 发表于 2024-8-12 18:10
keil 51编译生成的hex文件复位跳转指令是在0000H地址,而用户程序有效代码是从1000H开始,所以需要手动或者 ...

那么请问有啥办法在isp程序和app程序中都可以使用中断呢?

点评

中断就是EA=1且每个中断的使能位为1,中断标志位被置位时,单片机内部硬件控制PC=中断向量,这是硬件决定的无法修改,程序中的interrupt是在指定位置(中断向量地址)插入指向中断函数的跳转指令(LJMP),保证这些  详情 回复 发表于 2024-8-15 11:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4850

回帖

8384

积分

超级版主

DebugLab

积分
8384
发表于 2024-8-15 11:53:45 | 显示全部楼层
goug*** 发表于 2024-8-15 11:24
那么请问有啥办法在isp程序和app程序中都可以使用中断呢?

中断就是EA=1且每个中断的使能位为1,中断标志位被置位时,单片机内部硬件控制PC=中断向量,这是硬件决定的无法修改,程序中的interrupt是在指定位置(中断向量地址)插入指向中断函数的跳转指令(LJMP),保证这些跳转过程正常执行就可以正常使用中断

点评

可以试试统一跳转到一个地址,再判断当前是在用户ISP区运行还是在用户程序区运行,再二次跳转到用户ISP区或用户程序区  详情 回复 发表于 2024-8-15 12:05
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4850

回帖

8384

积分

超级版主

DebugLab

积分
8384
发表于 2024-8-15 12:00:40 | 显示全部楼层
乘风*** 发表于 2024-8-12 18:10
keil 51编译生成的hex文件复位跳转指令是在0000H地址,而用户程序有效代码是从1000H开始,所以需要手动或者 ...

这样是否可行:
下载软件设置整个FLASH可做EEPROM,在用户ISP区运行时,先通过IAP操作重置中断跳转地址为用户ISP区的,等用户ISP程序执行完毕,再通过IAP操作修改中断跳转地址为用户程序区的(虽然一旦操作错误整个程序崩溃hhh)
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:10 , Processed in 0.745940 second(s), 119 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表