码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux应用移植问题


    背景

    公司设备降成本,设备运行平台从armv7架构mpu换成了armv5架构的mpu,应用移植过程都挺顺利的,只是牵涉到一个引用外部库的应用时,运行该应用到引用库中的函数时,应用抛出illegal instrution异常。

    问题分析

    1. 初步排查发现库的编译工具链用错了,更改了对应固件的编译链测试发现还是不行;
    2. 禁用库相关代码逻辑测试,发现应用可正常运作,问题确定出在引用库文件上;
    3. 因为glibc和musl libc存在部分差异,更换系统的libc库,重新编译测试应用,发现还是存在异常;
    4. 使用gdb调试应用发现设备崩溃在 push_all函数内,核查相关函数代码未发现异常;
    5. gdb调试查看对应的汇编代码layout asm;
      assemle code
      发现程序挂在了vpush指令,向上排查未发现其它地方使用该指令;
    6. 搜索核查vpush指令,发现其是NEON指令集指令,其他人文章传统ARM架构寄存器与指令集中也有谈及到;
      vpush
    7. 目标明确,编译库文件时使其不使用NEON指令;
      我这面是将编译选项中参数改为-march=armv5te -mfpu=vfp,再次测试应用即可正常运行;降成本的mpu支持的指令集减少一部分,这一点一开始没意识到走了很多弯路记录一下;

    参考文章

    1. ARM Compiler toolchain Assembler Reference Version 5.03;
    2. [ARM926EJ-S Technical Reference Manual r0p5];(https://developer.arm.com/documentation/ddi0198/e/introduction/about-the-arm926ej-s-processor)
    3. gdb 调试利器;
    4. illegal instruction非法指令的解决思路;
    5. Dev 日志 | 一次 Segmentation Fault 和 GCC Illegal Instruction 编译问题排查, 写完文章发现了也有人遇到类似问题,之前搜索指向的是错误执行也会导致类似的问题,因此一开始方向有问题;
  • 相关阅读:
    CoCube传感器MPU6050笔记
    PanoFlow:学习360°用于周围时间理解的光流
    计算机基础:今天一次把 Unicode 和 UTF-8 说清楚
    智能SQL生成:后端技术与LLM的完美结合
    【算法实战】每日一题:17.1 订单处理问题(差分思想,二分搜索)
    【java算法专场】双指针(上)
    安装2023最新版PyCharm来开发Python应用程序
    入门人工智能 ——自然语言处理介绍,并使用 Python 进行文本情感分析(5)
    RabbitMQ详细使用
    Java中通过List中的stream流去匹配相同的字段去赋值,避免for循环去查询数据库进行赋值操作
  • 原文地址:https://blog.csdn.net/u014436243/article/details/128115899
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号