(七)嵌入式系统异常程序远程定位

void hard_fault_lr_pc(U32 *usHardFault)
{
    usStack_R14 = usHardFault[5];
    usStack_R15 = usHardFault[6];

    BKP_WriteBackupRegister(BKP_DR3, usHardFault[5]>>16);
    BKP_WriteBackupRegister(BKP_DR4, usHardFault[5]&0xffff);

    BKP_WriteBackupRegister(BKP_DR5, usHardFault[6]>>16);
    BKP_WriteBackupRegister(BKP_DR6, usHardFault[6]&0xffff);
}
__ASM uint32_t __HardFaultException (void)
{
    extern hard_fault_lr_pc
    TST LR,#4
    ITE EQ
    MRSEQ R0, MSP
    MRSNE R0, PSP
    B hard_fault_lr_pc
}
/**
  * @brief  This function handles Hard Fault exception.
  * @param  None
  * @retval None
  */

void HardFault_Handler(void)
{
  //BKP_WriteBackupRegister(BKP_DR2, HARDFAULT);
  __HardFaultException();
  while(1)
  {
  }
}
时间: 2024-08-06 08:51:09

(七)嵌入式系统异常程序远程定位的相关文章

嵌入式系统设计师

嵌入式系统设计师说白就是编写嵌入式系统的程序员,随着嵌入式系统在越来越多的方面得到运用,嵌入式系统设计师也成为了目前最流行的高薪职业之一,虽然嵌入式系统设计师是目前流行的职业,但也不是是个人都能当的. 嵌入式系统设计师,必须通过相应考试的合格人员,还要根据项目管理和工程技术的实际要求,开发出符合系统总体设计要求的高质量嵌入式系统:具有工程师的实际工作能力和业务水平,这样的人才算是一个真正的嵌入式系统设计师,但是嵌入式系统设计师之间也是有着分别的.例如:一个工作了10年的老嵌入式系统设计师和一个刚

linux命令:系统裁剪之五dropbear嵌入式系统专用ssh服务

Linux系统裁剪笔记之五dropbear嵌入式系统专用ssh远程登录服务 1.什么裁剪? 本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教. 2.原理 大家都知道,操作系统的启动流程是(主要是Linux):POST->BIOS->MBR-kernel-->initrd-->sbin/init, POST,BIOS都不是我们管的,所以这

嵌入式系统学习开发概述

简介 下面是嵌入式系统组成图: 嵌入式微处理器常用种类如下: 嵌入式操作系统常用种类如下: Linux发行版常用种类如下: 职业发展 学习概述 嵌入式系统学习一般可以分为以下几个步骤: 选一块开发板,了解其资源: 进行ARM裸机跑程序: 嵌入式系统定制和移植: 嵌入式系统应用程序开发和移植. 一.选一块开发板,了解其资源 1.系统资源(括号中的是类比PC机的资源) 处理器(CPU) norflash(固态硬盘):容量小,运行速度快,价格高: nandflash(普通硬盘):容量大,运行速度慢,价

关于HP DL380e服务器安装提示“安装程序无法创建新的系统分区也无法定位”

这里将刚刚遇到的一个服务器安装问题总结一下,以便自己后续使用,事实证明,几篇关于服务器的博文,收益最多的还是自己,因为每次都有不一样的问题,每次都在翻这些文章,所以我明白今天记下这个问题的重要性,Just for me!!! 说明一下,此类问题较为普遍,可能不是最优解,但是这里提供一下个人的见解,毕竟我个人在这个问题上成功了! 机型:HPDL380e 初始RAID:RAID1 本次安装的镜像为Server08 SP2,使用U盘刻录的镜像完成 再次说下吧,惠普的机器,F9是主板设置(可能不准确,但

重装windows7企业版时提示“安装程序无法创建新的系统分区,也无法定位现有系统

第一步:把win7镜像发在你电脑的非系统盘的其他硬盘上. 第二步:重启机器,通过U 盘启动.进入win pe系统,关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe 究竟有什么用途,其实你可以把win pe 理解为一个微缩版本win xp ,他和win xp 使用差不多.只是大部分的功能被禁用了,所以他的体积也非常小,虽然大部分的功能被禁用,可是他不影响第三方软件使用,比如Ghost , PQ 等一些软件依旧在win pe运行自如. 第三步:把windows 7的ISO

gdbserver远程调试嵌入式linux应用程序方法

此处所讲的是基于gdb和gdbsever的远程调试方法.环境为:PC机:win7.虚拟机:10.04.下位机:飞嵌TE2440开发板. 嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行.如果建立了远程调试(能够在PC机ubuntu中调试板子中的linux应用程序),这样对于开发程序是极其方便的. 以下是摘自网络上的一些方法.其中加入了自己所遇到的一些问题,并提出了解决方法. 1.首先建立nfs文件系统,让PC机

嵌入式系统编程和调试技巧

嵌入式系统的开发,软件的运行稳定可靠是非常重要的.在芯片中,软件是没有质量的,但软件的质量可以决定一颗芯片的成败.芯片设计中,性能能否满足设计要求,除了硬件设计.软硬件配合的设计技巧,对于软件来说,编程的一些技术和技巧同样重要. 本文讲述我在芯片固件开发过程中使用的一些编程调试技巧.针对在嵌入式系统开发中常见的问题,如实时系统下的同步问题,动态内存分配的内存泄漏问题,如何在编程阶段预防BUG出现,调试阶段如何及时发现问题和定位问题.总结下经验,目的是开发一个稳定运行的固件,提高开发效率,提高运行

嵌入式系统C编程之堆栈回溯

前言 在嵌入式系统C语言开发调试过程中,常会遇到各类异常情况.一般可按需添加打印信息,以便观察程序执行流或变量值是否异常.然而,打印操作会占用CPU时间,而且代码中添加过多打印信息时会显得很凌乱.此外,即使出错打印已非常详尽,但仍难以完全预防和处理段违例(Segment Violation)等错误.在没有外部调试器(如gdb server)可用或无法现场调试的情况下,若程序能在突发崩溃时自动输出函数的调用堆栈信息(即堆栈回溯),那么对于排错将会非常有用. 本文主要介绍嵌入式系统C语言编程中,发生

浅谈C语言嵌入式系统编程注意事项

C语言嵌入式系统编程注意事项之背景篇 本文的讨论主要围绕以通用处理器为中心的协议处理模块进行,因为它更多地牵涉到具体的C语言编程技巧 不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力.无疑,汇编语言具备这样的特质.但是,归因于汇编语言开发过程的复杂性,它并不是嵌入式系统开发的一般选择.而与之相比,C语言--一种"高级的低级"语言,则成为嵌入式系统开发的最佳选择.笔者在嵌入式系统项目的开发过程中,一次又一次感受到C语言的精妙,沉