这一段调NXP的LPC2114芯片,全速运行总是报取数据中止异常,而且还没有规律,最终弄了大约一个多礼拜,差点崩溃,天可见怜,好歹发现了,贴于此,希望能有所帮助。
KEIL FOR ARM中的startup文件中发生异常后都是死循环,当需要寻找异常出现的位置时,就会不好下手,按照网上很多高手的经验,自己添加返回指令,当发生异常时,反悔到出错的位置查询。
我的这个工程中出现的问题起始很简单,就是在程序运行到main函数之前进入了中断服务程序,由于寄存器没有初始化,在中断服务程序中发生取数据中止异常,具体是怎么进入的至今没有搞明白,我在startup文件开头将VIC重新禁止了,调试中基本就很少出现取数据异常了。很简单的东西,却费了这么多的时间,悲惨,注:我的工程中加入了UCOS-II,是在运行操作系统的节拍函数时发生的取数据中止异常。
所有的取数据中止异常和取指令中止异常,一切源自于移植了UCOS-II操作系统,唉,周立功的移植代码也不好使啊,希望遇到这类问题的兄弟要么修正移植代码,要不就干脆采用前后台程序模式吧。
关键字:keil arm 取数据 中止异常
引用地址:
关于keil for arm的取数据中止异常
推荐阅读最新更新时间:2024-11-10 22:11
从MOV PC,PC;看ARM的三级流水线过程
乍看这个指令好像是NOP;实际上远远不是,他实现的功能是跳转到当前指令下面第二条指令处执行: 原因是PC寄存器中存储的是当前指令的地址+8,当人为改变PC寄存器的值之后,程序会跳转执行,这样,这条命令之后,假设这条命令的地址为X,那么PC在执行这条命令之后为X+8, 之后周期开始fetch X+8, 下一个周期开始decode X+8同时fetch X+12, 再一个周期开始excute X+8,同时decode X+12,同时fetch X+16, 这时候PC的值已经变成X+16, 也就是正在执行的X+8再加上8,如此继续。。。 实现同样目的的还有 ADD PC,PC,#0;当然B PC也可以,但是没有前者来的快速。
[单片机]
Azure ARM (21) Azure订阅的两种管理模式
熟悉Azure平台的读者都知道,Microsoft Azure服务管理,分为三个层次: 1.企业服务合同 (Enterprise Agreement) 2.订阅(Subscription),在1个企业服务合同下,可以创建无数多个订阅,订阅之间的资源是互相隔离的。 3.资源组(Resource Group),在1个订阅下,可以创建无数个资源组。 通过资源组,我们可以设置RBAC(Role Base Access Control)。设置对资源的访问权限,比如只读,可读写等。 有关RBAC的内容,可以参考我的blog: Azure ARM (16) 基于角色的访问控制 (Role Based Acces
[单片机]
微软:ARM架构笔记本续航惊人 可隔几天充一次电
去年微软首次公开承认正在研发基于ARM架构的Windows笔记本,由高通公司的骁龙835处理器提供性能驱动,在Windows 10系统上运行模拟器来支持常规的桌面应用。尽管高通此前承诺在今年年底之前上线,但截至目前我们依然没有太多关于该系列笔记本的消息。 本周在香港举行的高通峰会上,高通依然表示将会在今年12月面向市场推出ARM笔记本,微软还承诺提供多达数天的电池续航。微软项目经理Pete Bernard表示:“坦白来说,这已经超出了我们的预期。我们已经为开发者设置了极高的标准,但实际效果要明显优于该标准。它的电池续航能够完全满足日常使用,甚至不需要考虑充电问题,基本上可以隔好几天再充一次电。电池续航真是太惊艳了。”
[半导体设计/制造]
第一批明星AI公司为何正面临倒闭ing?
一场疫情,加速了资本经济海浪的退潮,大批裸泳者被迫上岸:美股大崩盘、中概股被做空、投资巨咖软银集团跌落凡尘…… 一切都发生的都太快了! 然而,真正令人始料未及的却是 AI 科技浪潮还未到巅峰之际,就有媒体爆出投资人已经很长时间不看 AI 项目了,而且作为一度被评为全球最有前途的全球知名 AI 芯片企业,Wave Computing,而今也正面临即将破产重组的窘境,成为疫情中第一家申请破产的 AI 明星公司。 至于这一悲剧产生的背后,是资本博弈的错?还是过度神化 AI 的祸?答案也许并不是一两句就能说得清楚的。 AI 芯片企业的暗淡,独角兽的缩影 早在申请破产前,Wave Computing 其实是一家名副其实的 AI
[嵌入式]
arm汇编语言中调用C库函数printf
今天在写一个ARM汇编代码时,本来想在程序中显示字符串信息,结果不成功,开始以为是C库中printf的实现的原因,下午终于解决问题,原来是没有在汇编程序中初始化C库。 遇到这个问题时,为了简单起见,我直接用汇编写了一个调用printf函数显示字符串hello的程序,如下: area |hello$code|,code,readonly code32 entry import _printf import ||Lib Request armlib||,weak hello adr r0,strhello bl _printf strhello dcb hello!/n/0
[单片机]
arm-linux-gcc常用参数讲解 gcc编译器使用方法
我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了
[单片机]
台积电7纳米首发 与赛灵思、Arm、Cadence联手打造CCIX芯片
台积电与赛灵思(Xilinx)、安谋国际(Arm)、益华电脑(Cadence Design Systems)共同宣布联手打造全球首款加速器专属快取互连一致性测试芯片(Cache Coherent Interconnect for Accelerators, CCIX) ,是采用台积电的7纳米FinFET制程技术,预计将于2018年量产。 CCIX是由于电力与空间的局限,资料中心各种加速应用的需求也持续攀升,像是大数据分析、搜寻、机器学习(Machine Learning)、无线4G/5G网路连线等,全程在记忆体内运行的资料库做处理、影像分析、网路处理等应用,都能透过加速器引擎受益,使资料在各系统元件间无缝移转。 因此,无论资料存放
[半导体设计/制造]
ARM平台嵌入式Linux下SPI设备连接
简介:在嵌入式ARM平台设备上,经常有在一个SPI bus上面挂接一个或者多个SPI设备的需求,由于挂载一个设备的情况比较简单,本文主要就在嵌入式Linux环境下挂载多个SPI设备进行说明。 本文所采用的硬件为Toradex 公司Colibri VF61计算机模块和开发载板,核心为Cortex-A5和M4异构双核,这里A5运行Toradex官方发布的Embedded Linux BSP V2.5,M4核心这里不做使用。 本文涉及Toradex发布Embedded Linux源码下载,Device Tree 定制编译,相关操作请参考下面文章,本文不做赘述。 http://developer.toradex.com/kno
[单片机]