OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7144|回复: 3

i.mx6外部中断实验清除BSS段代码会出现中断卡死

[复制链接]

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2016-5-11
在线时间
50 小时
发表于 2020-4-21 21:07:28 | 显示全部楼层 |阅读模式
1金钱
i.mx6外部中断实验加上清除BSS段代码进入中断会出现死机现象。
去掉这两段代码正常,想不清为啥会这样
#fi 0
.global _bss_start
_bss_start:
    .word __bss_start

.global _bss_end
_bss_end:
    .word __bss_end

#endif


#if 0
   /*清除BSS段*/
    ldr r0, _bss_start
    ldr r1, _bss_end
    mov r2, #0
bss_loop:
    stmia r0!, {r2}
    cmp r0, r1      /* 比较R0和R1里面的值 */
    ble bss_loop    /*如果r0地址小于等于r1,继续清除bss段*/
#endif







最佳答案

查看完整内容[请看2#楼]

视频里讲过这一段(原子哥APP或B站上都有) IMX6U的启动代码 __start 从地址0x87800000开始,然后一开始就存的是中断向量表, 在代码_start:之前加了清 BSS 段 的变量声明 之后, 编译完会发现 0x87800000那里变成了和 清BSS段相关的代码了(查看反汇编文件 xxx.dis可以看到), 在编写中断初始化程序时又将 中断向量偏移 指向了0x87800000,导致找不到中断程序的位置了。 所以是 清BSS段 占据了中断向量表 的位置导致中断无 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2020-3-22
在线时间
35 小时
发表于 2020-4-21 21:07:29 | 显示全部楼层
本帖最后由 YOKI 于 2020-4-26 18:48 编辑

视频里讲过这一段(原子哥APP或B站上都有)
IMX6U的启动代码 __start 从地址0x87800000开始,然后一开始就存的是中断向量表,
在代码_start:之前加了清 BSS 段 的变量声明 之后,
编译完会发现 0x87800000那里变成了和 清BSS段相关的代码了(查看反汇编文件 xxx.dis可以看到),
在编写中断初始化程序时又将 中断向量偏移 指向了0x87800000,导致找不到中断程序的位置了。
所以是 清BSS段 占据了中断向量表 的位置导致中断无法执行。

回复

使用道具 举报

9

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2016-5-11
在线时间
50 小时
 楼主| 发表于 2020-4-24 20:00:20 | 显示全部楼层
已经找到原因,清BSS段位置不对,感谢淘宝客服
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2022-11-2
在线时间
3 小时
发表于 2022-11-9 13:06:53 | 显示全部楼层
teens 发表于 2020-4-24 20:00
已经找到原因,清BSS段位置不对,感谢淘宝客服

请问应该把清BSS段放在哪里呀?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 17:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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