历史上的今天
返回首页

历史上的今天

今天是:2024年12月11日(星期三)

正在发生

2018年12月11日 | 在IAR调试stm32中断偏移的奇怪现象

2018-12-11 来源:eefocus

今天在做STM32F207 bootloader时发生了一个诡异的事情,在IAR中将我的APP函数中断偏移设置为



即偏移了64KB,前64KB用于放置bootloader程序.编译连接最后生成map,查看也没出错



然后在IAR中下载调试(在此之前还没有下载bootloader):



竟然可以找到复位函数的入口,全速运行,程序正常执行.


按照ST官网的手册一般情况下,在复位后程序,程序从地址0x00000000读取堆栈地址,0x00000004取PC指针,0x00000000地址一般情况为0x08000000的映射,,


图中1就是2的别名,他们的数据能容是相同的.


我偏移了0x00010000后,理论上是应该从0x00010000(即0x08010000)取堆栈地址0x00010004(即0x08010004)取复位指针,这样执行似乎也是对的呀.


问题来了:在复位后STM32总是从0x00000000(不管被影射的那个地址RAM或者ROM或者外部FALSH) 处执行,但是此时0x00000000处并没有放置中断向量表,我的程序是如何知道向量表在0x00010000处(请不要带入上帝视角,单片机很单纯,你不告诉他就不知道)的呢?




0x00000000和0x08000000确实没有放置中断表,还是未开发的处女地





可以看到0x00010000和0x08010000放置了中断表,从此地址连续多个字节数据相同(上面两张图显示的格式不同,其实内容是相同的,有的数据时16位的,有的是32位).


由此我猜到了两个原因导致了这个现象


1.ST数据手册是错的,程序根本不是从0x00000000开始执行的,可能有某个数据被编译进了某个寄存器,一复位就中断偏移了?


2.调试器搞得鬼,不知森么鬼?


对于1我查看了中断偏移寄存器,如下:



根本没有偏移值,反复试验了多次,确实没有偏移


对于2,我拔掉了调试器,果然程序启动不了了,看来确实是调试器的问题,调试复位时并没有从0x00000000处取数据,而是调试器告诉了单片机中断向量的位置,至于原因暂时我还不懂,先记下来,避免以后再入坑.

推荐阅读

史海拾趣

Gamma Microelectronics ( APM )公司的发展小趣事

为了提高DSSC的转换效率和长期稳定性,G24i积极寻求技术合作。公司与离子液体供应商BASF公司签署了合作协议,共同开发性能更优的离子液体和电解液配方。此外,G24i还与国内外多家科研机构建立了紧密的合作关系,共同推进DSSC技术的研发和创新。这些合作不仅为G24i带来了先进的技术支持,也促进了整个DSSC行业的快速发展。

Fair Rite公司的发展小趣事

随着全球进入数字化、网络化、智能化时代,电子元器件市场发生了深刻的变化。Fair Rite积极应对市场变化,通过技术创新和产品研发,不断推出适应新需求的产品。例如,公司针对EMF/EMI干扰较严重或容易出现导漏流问题的情况,推出了EMI抑制铁芯线圈(SM-BL系列),帮助客户节省PCB空间并降低干扰信号。同时,Fair Rite还注重满足客户的性价比需求,为每个新产品进行定制化设计和质量验证(遵循ISO9001:2008标准),确保其在不同应用场景下稳定可靠。

这些故事展示了Fair Rite在电子行业中不断发展壮大的历程。通过不断创新、拓展市场和提升品质,Fair Rite已经成为电子行业中的佼佼者之一。

Chen Yang Technologies GmbH & Co KG公司的发展小趣事

随着业务的发展,Chen Yang Technologies意识到单靠自身力量难以实现快速扩张。因此,公司开始积极寻求与其他电子行业巨头的战略合作。通过与这些公司的合作,Chen Yang Technologies不仅获得了更多的资金支持和技术资源,还成功进入了新的市场领域。这些合作使得公司的业务范围得到了极大的拓展,同时也提升了公司的品牌影响力。

Fukushima Futaba Electric Co Ltd公司的发展小趣事

随着技术的不断成熟和产品质量的提升,Futaba Electric开始将目光投向国际市场。20世纪70年代末至80年代初,公司成功进入欧美市场,与多家国际知名企业建立了合作关系。通过参加国际展会、设立海外分支机构等方式,Futaba Electric的产品逐渐在全球范围内得到推广和应用。这一时期,公司的国际化战略取得了显著成效,为公司的长远发展奠定了更加坚实的基础。

Adam Tech公司的发展小趣事

随着电子行业的快速发展,Adam Tech意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,不断推出具有创新性的电子连接器产品。同时,公司还积极拓展产品线,从最初的插头、插座逐渐扩展到线束、端子、电缆组件等多个领域。这些举措不仅提升了公司的市场竞争力,也为客户提供了更加丰富的选择。

COTO TECHNOLOGY公司的发展小趣事

随着业务的不断扩展,COTO TECHNOLOGY开始寻求全球范围内的合作与发展。1998年,公司收购了位于荷兰的Philips干簧开关事业部,组建了Coto Technology B.V.,进一步增强了其在全球市场的竞争力。此后,COTO还通过与其他企业的战略合作,不断拓宽业务领域,实现了从单一产品制造商向综合性电子解决方案提供商的转变。

问答坊 | AI 解惑

新一代ASSP优化手持设备中的电源管理

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 去年,消费者购买了十亿多部手机,2.2亿台笔记本电脑,1.4亿只MP3,9千万数码相机(DSC)以及1千万套个人导航设备(PND)。依据内部系统架构来说,所有的这些设备都有一定的共性。首先,它们都是由 ...…

查看全部问答>

LPC21XX + 网口

Connecting ethernet interface with LPC2000…

查看全部问答>

求单片机英文文献

求跟单片机有关的英文文献,最好有中文翻译?望各位大哥帮忙,万分紧急!…

查看全部问答>

调试嵌入式系统设计中的串行总线

调试嵌入式系统设计中的串行总线 今天,嵌入式系统几乎遍布在人类社会的每个角落。嵌入式系统可以简单定义为属于大型系统或机器一部分的一种专用计算机系统,其目的是为该系统或机器提供监测和控制服务。典型的嵌入式系统在开机时会开始运行某些专 ...…

查看全部问答>

工控机USB通信负载能力

我们经常利用工控机USB给产品download软件,但是一台工控机给最多只能查10条USB下载线分别给10台产品下软件,如何提升工控机效率,加DDR2都没有效果…

查看全部问答>

WinCE中HINSTANCE的问题

我想用一个HINSTANCE类型的全局变量hInst保存在WinMain函数中初始化过的hInstance对象,即:hInst = hInstance,调试的时候发现hInstance有值,而hInst没有,为什么啊?…

查看全部问答>

关于单片机的C语言

现在刚开始接触这东西 最近要弄一个8255的初始化(用C语言) 请问下是不是要先看C?或者是直接看单片机的C语言啊?…

查看全部问答>

发本UCOSII2.52的详细解释文档

   这个文档是以前在某个地方下的,一直与实践结合学习着。感觉是一篇非常不错的文档。。          里面对UCOSII的每一条语句都进行了解释说明,而且易懂。。      &nbs ...…

查看全部问答>

求助-----寻找433MHz RF 传输,接收IC

我现在有一个需求.要做一个RF遥控开关,只有一个控制按键,在欧洲使用,并且能在水下工作.请大家介绍一些这样的RF 传送介绍IC,越便宜越简单的越好.注意:这里的RF只做控制用,无数据传输等需求.谢谢…

查看全部问答>