硬汉嵌入式论坛

 找回密码
 立即注册
查看: 840|回复: 7
收起左侧

[技术讨论] APP不同偏移导致中断异常

[复制链接]

4

主题

12

回帖

24

积分

新手上路

积分
24
发表于 2024-6-28 15:13:53 | 显示全部楼层 |阅读模式
1. 问题:
关于APP跳转成功后,串口中断异常,我们的分区是这样的,比如片区在0x8001800开始写APP,但是该片区开头并不是直接的APP数据,而是一些校验和之类的数据。APP会偏移一些地址在0x8001880开始写这样子,keil的下载设置也是从0x8001880开始。一开始下进去之后我看他能正常打印一些信息就以为跳转正常肯定一切正常了,但是给他发送AT指令的时候就发现他串口中断不触发,在中断IRQ函数里打断点完全不会停止。main的一开始也是设置了nvic_table_set(0x8001880)和enable_irq的。boot里只有disable_irq和跳转,没有任何初始化。
后来我把APP的偏移往后移了下到0x8001900,,keil的下载设置也是从0x8001900开始,nvic_table_set(0x8001900)。这一切正常了,代码前后就只有这点点不同,就很奇怪。
回复

使用道具 举报

4

主题

12

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2024-6-28 15:14:58 | 显示全部楼层
所以想请教一下坛友,有什么看法,这是什么导致的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117542
QQ
发表于 2024-6-28 15:22:04 | 显示全部楼层
特别注意这个向量表偏移设置,必须是0x200的整数倍

#define VECT_TAB_OFFSET  0x00000000UL /*!< Vector Table base offset field.
                                      This value must be a multiple of 0x200. */
回复

使用道具 举报

4

主题

12

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2024-6-28 16:31:28 | 显示全部楼层
eric2013 发表于 2024-6-28 15:22
特别注意这个向量表偏移设置,必须是0x200的整数倍

#define VECT_TAB_OFFSET  0x00000000UL /*!< Vector ...

阿哲,我用的GD32F330,好像没这句注释,现在用的是0x100的偏移,这算0x200的倍数吗,现在用着感觉没啥问题
回复

使用道具 举报

0

主题

9

回帖

9

积分

新手上路

积分
9
发表于 2024-6-28 17:21:11 | 显示全部楼层
我是这样理解的,不知道对不对。
arm官方手册里面,VTOR的TBLOFF是bit[31:7]占25位。低7位保留。
1.设置VTOR时,低7位一直为0。这时至少要按照0x80对齐。
2.同时还要看芯片所有异常数量,即中断向量表大小。VTOR偏移对齐的数值,不能比它小,还要是2的整数幂。
这两个条件结合一下。
回复

使用道具 举报

34

主题

206

回帖

308

积分

高级会员

积分
308
发表于 2024-6-29 11:02:33 | 显示全部楼层
对齐问题
回复

使用道具 举报

4

主题

12

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2024-7-1 10:19:17 | 显示全部楼层
zhcj1014 发表于 2024-6-28 17:21
我是这样理解的,不知道对不对。
arm官方手册里面,VTOR的TBLOFF是bit[31:7]占25位。低7位保留。
1.设置V ...

哦豁,我看手册gd32f3x0因为是m4核,有16个系统异常+68个中断触发源共计84个,那理论上其实就是要(16+68)*4 = 336 = 0x150,所以取整应该是0x200 = 512,但是现在我使用了0x100 = 256,也就是那些中断源最下面那些什么DMA中断,保留和USB中断没了,这样子会有影响吗,如果我用不到那些中断的话
回复

使用道具 举报

4

主题

12

回帖

24

积分

新手上路

积分
24
 楼主| 发表于 2024-7-1 10:19:37 | 显示全部楼层

哦豁,我看手册gd32f3x0因为是m4核,有16个系统异常+68个中断触发源共计84个,那理论上其实就是要(16+68)*4 = 336 = 0x150,所以取整应该是0x200 = 512,但是现在我使用了0x100 = 256,也就是那些中断源最下面那些什么DMA中断,保留和USB中断没了,这样子会有影响吗,如果我用不到那些中断的话
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 18:34 , Processed in 0.042070 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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