当前位置: 首页 > wzjs >正文

温州专业制作网站网站开发技术项目式教程

温州专业制作网站,网站开发技术项目式教程,搜索推广公司,免费域名申请网站一、情景引入我们在分析linux或者安卓系统的coredump文件时,经常碰见SIGSEGV(段错误)、SIGBUS(总线错误)。那么这些错误和arm内核的各种硬件fault有什么关联呢?二、基本概念Signal Fault:这是 L…

一、情景引入

我们在分析linux或者安卓系统的coredump文件时,经常碰见SIGSEGV(段错误)、SIGBUS(总线错误)。那么这些错误和arm内核的各种硬件fault有什么关联呢?

二、基本概念

Signal Fault:这是 Linux 系统通过信号机制通知进程发生错误的一种方式。例如,SIGSEGV(段错误)、SIGBUS(总线错误)、SIGILL(非法指令)等信号都属于 Signal Fault。

ARM 内核定义了多种异常类型,用于处理硬件层面的错误情况,常见的 ARM 内核 Fault 包括:

  • Data Abort:在数据访问(读取或写入)出错时触发。
  • Prefetch Abort:指令预取失败时会引发该异常。
  • Undefined Instruction:遇到无法识别的指令时产生。
  • Bus Fault:总线访问失败,比如地址对齐错误或者外设响应超时。

三、关联机制

当 ARM 内核检测到硬件 Fault 时,会触发相应的异常处理流程。Linux 内核中的异常处理程序会捕获这些硬件异常,并将其转换为用户空间的 Signal,具体对应关系如下:

ARM 内核 FaultLinux Signal常见原因
Data AbortSIGSEGV 或 SIGBUS- SIGSEGV:访问未映射的内存地址
- SIGBUS:访问的地址有效,但总线传输失败(如非对齐访问)
Prefetch AbortSIGILL指令地址无效或指令格式错误
Undefined InstructionSIGILL执行了 ARM 架构不支持的指令
Bus FaultSIGBUS总线访问错误,例如地址未对齐、外设故障

SIGSEGV vs SIGBUS

这两个信号都与内存访问错误有关,但具体场景不同:

  • SIGSEGV(段错误):通常是因为访问了未映射的虚拟地址。比如,解引用空指针(*NULL)或者访问越界的数组元素。
  • SIGBUS(总线错误):更多是硬件层面的问题,例如:
    • 非对齐访问(在 ARMv7-M 等架构中,某些指令要求数据地址必须对齐)。
    • 访问物理设备地址时,外设响应错误。

四、映射源码解读

1. ARM 架构的异常处理核心逻辑

  • 文件路径arch/arm/kernel/traps.c
  • 关键函数do_DataAbort()do_PrefetchAbort()do_BusFault()
  • 信号映射示例
    // 处理数据中止异常
    static void do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
    {struct siginfo info;...// 根据错误类型设置不同的信号if (user_mode(regs)) {info.si_signo = SIGSEGV;  // 默认发送SIGSEGVinfo.si_code = SEGV_MAPERR;  // 映射错误...force_sig_info(SIGSEGV, &info, current);  // 向当前进程发送信号} else {die("Oops", regs, fault_code);}
    }
    

2. Bus Fault 的具体处理

  • 文件路径arch/arm/mm/fault.c
  • 关键函数do_bad_area()do_translation_fault()
  • 信号映射逻辑
    // 处理无效地址访问
    static int do_bad_area(unsigned long addr, unsigned int fsr,struct pt_regs *regs)
    {if (user_mode(regs)) {// 对用户空间地址,发送SIGSEGVkill_faulted_task(current, addr, fsr, regs, SIGSEGV);return 0;}...
    }
    

3. 非对齐访问的特殊处理

  • 文件路径arch/arm/mm/alignment.c
  • 配置选项:通过CONFIG_ARM_UNALIGNED_ACCESS控制是否允许非对齐访问
  • 信号映射
    // 非对齐访问错误处理
    static void __do_unaligned_access(struct pt_regs *regs, unsigned long addr)
    {if (user_mode(regs)) {// 发送SIGBUS信号force_sig_fault(SIGBUS, BUS_ADRALN, (void __user *)addr, current);return;}...
    }
    

4. ARMv7-M 架构的特殊处理

  • 文件路径arch/arm/mach-cortexm/exception.c
  • 关键函数hard_fault_handler()bus_fault_handler()
  • 信号映射
    // Cortex-M的总线错误处理
    void bus_fault_handler(struct pt_regs *regs)
    {// 通常通过系统调用向用户空间发送SIGBUSsend_sig(SIGBUS, current, 0);...
    }
    

总结

  • 主要映射逻辑arch/arm/kernel/traps.c 和 arch/arm/mm/fault.c
  • 架构差异:ARMv7-M 与 ARMv7-A/R 的处理略有不同,具体取决于内核配置和硬件特性。


文章转载自:

http://aPSCQIe4.dmjhp.cn
http://g3SV4O8T.dmjhp.cn
http://Jh0JEXCx.dmjhp.cn
http://CFZDRwRM.dmjhp.cn
http://9M4DyluJ.dmjhp.cn
http://UCkxsj8W.dmjhp.cn
http://mh9qj12a.dmjhp.cn
http://g6rWROwZ.dmjhp.cn
http://GNonAvsd.dmjhp.cn
http://nljKTC1X.dmjhp.cn
http://OUqNVXQv.dmjhp.cn
http://mhhHE0hD.dmjhp.cn
http://cuODfs4P.dmjhp.cn
http://ibZgJjmX.dmjhp.cn
http://yspDF8f4.dmjhp.cn
http://rc01R3T2.dmjhp.cn
http://UZRIDgUk.dmjhp.cn
http://ZNWB9lQ4.dmjhp.cn
http://gQ6eKEjK.dmjhp.cn
http://X5cnduft.dmjhp.cn
http://cFVhY8JV.dmjhp.cn
http://sJ1xKZUv.dmjhp.cn
http://YnT4GgYY.dmjhp.cn
http://byibOEIC.dmjhp.cn
http://m2UBK9zM.dmjhp.cn
http://KrWfuHxT.dmjhp.cn
http://Fno8bBdc.dmjhp.cn
http://ozA59glf.dmjhp.cn
http://rl7xY7gI.dmjhp.cn
http://pa34N0aj.dmjhp.cn
http://www.dtcms.com/wzjs/766102.html

相关文章:

  • 网站运营需要哪些资质石家庄公司网络推广
  • 网站 反链wordpress更新文件放在哪里
  • 酒店网站建设报价单wordpress完全版教材
  • 台州椒江区建设局网站网站建设专家是干嘛的
  • 富阳做网站公司微信网站应用开发
  • 个人网站页面设计素材1m带宽可以建设电商网站吗
  • 网站删除模块做推广哪些网站好
  • 怎么搜索别人的wordpress模板济南seo优化
  • 查网站域名备案天津做做网站
  • 定兴网站建设猎头公司网站建设
  • 移动网站开发基础知识上海智能网站建设公司
  • 做网站生意不赚钱dede网站建设流程
  • 做企业网站需要注意什么国内网站设计
  • 北京网站建设公司服务哪家好网站权重高+做别的关键词
  • 合肥专门做网站的公司有哪些找客户的软件
  • 东莞一站式网站建设wordpress您的主题支持一个菜单
  • 网站怎么做登录界面好订单网服装外发加工
  • 中英双语 网站 模板不用花生壳做网站服务器
  • 吉林城市建设学校网站百度网盘免费下载
  • 成品网站w灬源码在线看昆明网站运营
  • 沙田镇网站仿做wordpress 建站专家
  • 做网站python和php站长网站被跳转怎么办
  • 旅游网站设计完整代码创意平面设计公司
  • 做网站可以用什么软件动漫做a视频网站有哪些
  • 上海建设工程招投标网四川最好的网络优化公司
  • 专业的网站设计公司西安vi设计公司
  • 网站制作咨询电话网页动效 wordpress
  • 网站建设项目内容html5 公司网站模板
  • 阿里云个人怎么免费做网站昆明企业网站建设
  • 小程序源码网免费如何做网站内部优化