同步外部中止对ARM

编程入门 行业动态 更新时间:2024-10-11 07:25:15
本文介绍了同步外部中止对ARM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我是建设基于ARM的Cortex A9 PANDABOARD裸机应用程序,和我取指令中止频繁。当我倾倒IFSR注册我0x1008。我读过的参考手册,据我所知,1008是同步外部中止。问题是同步的外部中止手段,它从何而来?感谢您的帮助。

I was building a bare metal application on ARM Cortex A9 Pandaboard, and I got Instruction Fetch Abort frequently. When I dump IFSR Register I got 0x1008. I've read the reference manual, and I understand that 1008 was Synchronous External Abort. The problem is what synchronous external abort means and where does it come from? Thanks for your help.

推荐答案

的的ARMv7 ARM 部分VMSA内存中止作为全面涵盖这是人们所期望的(因为它的建筑的权威定义),但略低于14页总结;

The ARMv7 ARM section "VMSA Memory aborts" covers this as thoroughly as one would expect (given that it's the authoritative definition of the architecture), but to summarise in slightly less than 14 pages;

在中止表示CPU试图让一个内存访问,这是什么原因,无法完成这样引发一个例外。

An abort means the CPU tried to make a memory access, which for whatever reason, couldn't be completed so raises an exception.

在外部中止是从,那么,内外兼修的处理器,即在公共汽车上的东西。换句话说,访问在MMU没有过错,出门上车,要么和一些设备或互联本身回来说:嘿,我不能处理这个。

An external abort is one from, well, externally to the processor, i.e. something on the bus. In other words, the access didn't fault in the MMU, went out onto the bus, and either some device or the interconnect itself came back and said "hey, I can't deal with this".

A 同步外部中断意味着你是相当幸运的,因为它不会是完全可怕的调试 - 在一个prefetch的情况下中止,这意味着 IFAR 是要包含一个有效的VA的错误指令,让你清楚知道什么原因造成的。不愉快的选择是一个的异步的外部中止,这比一个中断多一点的说:嘿,是你做了,而以前实际上并没有工作。不,我不知道什么是要么。

A synchronous external abort means you're rather fortunate, in that it's not going to be utterly hideous to debug - in the case of a prefetch abort, it means the IFAR is going to contain a valid VA for the faulting instruction, so you know exactly what caused it. The unpleasant alternative is an asynchronous external abort, which is little more than an interrupt to say "hey, something you did a while ago didn't actually work. No I don't know what is was either."

所以,你想执行从东西,你的想说明的是内存,但并非如此。没有任何进一步的细节,实际原因可能是从typoed硬codeD地址有的话,狡猾的页表,陈旧的TLB项,高速缓存一致性等等。

So, you're trying to execute instructions from something that you think is memory, but isn't. Without any further details, the actual cause could be anything from a typoed hard-coded address, to dodgy page tables, stale TLB entries, cache coherency, etc. etc.

更多推荐

同步外部中止对ARM

本文发布于:2023-11-13 04:28:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1583428.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ARM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!