linux应用移植问题

news2024/11/27 17:45:08

背景

公司设备降成本,设备运行平台从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 编译问题排查, 写完文章发现了也有人遇到类似问题,之前搜索指向的是错误执行也会导致类似的问题,因此一开始方向有问题;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML(超文本标记语言)

HTML(超文本标记语言) 网页的基本信息 、等成对的标签,分别叫**开放标签**和**闭合标签**,单独呈现的标签(空元素),如;意为用 / 来关闭空元素 DOCTYPE:告诉浏览器,我们要使用什么规范 head:代…

Jenkins安装与配置Windows11系统

目录 Jenkins安装 一、下载 官网地址:Jenkins download and deployment 点击LTS(长期稳定版)下的Windows 二、安装 基本就是一路Next即可 三、配置 访问地址 http://localhost:8080/,会出现如下界面: 安装 注&…

Redis实战——优惠券秒杀(一人一单业务)

需求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单 我们只需要在增加订单之前,拿用户id和优惠券id判断订单是否已经存在,如果存在,说明用户已经购买。 代码实现: package com.hmdp.serv…

狂神说Go语言学习笔记(二)

一、匿名变量 匿名变量的特点是一个下划线 “_”,它本身就是一个特殊的标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代…

共享雨伞app开发,提高资源利用率

共享经济无疑是当下热门行业之一,生活中随处可见的共享自行车、共享汽车、共享充电宝等一系列设备都是共享经济的产物。互联网时代下的共享经济已经呈现出多元化的发展趋势,其中在日常出行方面,共享雨伞的出现可以很好的解决用户偶遇的突发天…

Centos7 + kubenetes 一键安装实战

1. kubernetes部署环境要求 一台或多台机器,操作系统CentOS7.x-86_x64硬件配置:内存2GB或2G,CPU 2核或CPU 2核集群内各个机器之间能相互通信集群内各个机器可以访问外网,保证网络畅通(最好能访问谷歌),需要…

【STM32笔记】HAL库中的SPI传输(可利用中断或DMA进行连续传输)

【STM32笔记】HAL库中的SPI传输(可利用中断或DMA进行连续传输) SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的&…

优秀软件测试报告

Document number 文档编号 Confidentiality level 密级 Test Report-01 [绝密/秘密/内部公开] Document version 文档版本 Total 10 pages 共 10 页 V1.0 测试报告 Prepared by 拟制 Date 日期 yyyy-mm-dd Reviewed by 评审人 Date 日期 yyyy-mm-dd Approved b…

CSS基础(超详解)

目录 1 css基础知识 1.1基础知识 1.1 概述 1.2 优势 1.3应用css的步骤 1.2 css基本语法 1.3 css使用方法 1.3.1 内嵌样式 1.3.2 内部样式 1.3.3 外部样式 1.3.4 使用import引入外部样式文件 1.3.5 叠层样式优先级 1.3.6 注释 2 CSS选择器 2.1 元素选择器 2.2 类…

Linux crontab定时任务设置

1.检查是否安装了crontab # rpm -qa | grep crontab 2.重启crontab服务 一定重启,这样确保了crontab服务的开启 # /etc/init.d/crond restart 3.我们直接以root用户进行操作。所以直接进到root的cron配置文件。 # cd /var/spool/cron/ 4.可以查看一下 root 用户…

VisDrone数据集之集群检测(一)

VisDrone坐标信息 VisDrone数据集格式: txt标签内容为:bbox_left,bbox_top,bbox_width,bbox_height,score,object_category,truncation,occlusion 类别: ignored regions(0), pede…

【一】曾经那些错误,你又踩坑了吗?

巩固基础和不断练习,我们才会进步!这一期开始,我们就要看看我们之前的学过的知识到底掌握了没有,再通过练习去巩固! 目录 一、for循环 二、指针有关内容 1.*(解引用)和其他运算符 2.指针变…

碰到CTS问题我该如何处理?

一、什么是CTS? CTS测试全称为系统兼容测试(Compatibility Test suite),CTS是为了测试手机是否符合google定义的兼容性规范(Compatibility Definition)。从而基于Android的应用程序能在基于同一个api版本的…

网页JS自动化脚本(四)修改元素的尺寸颜色显隐状态

修改元素尺寸 在定位到了元素之后, 我们就可以对元素进行一些修改了,我们先来修改元素泊宽度以及高度 window.onloadfunction(){var theElementdocument.querySelector("img.undertips-link-lefticon");theElement.style.width"100px";theElement.style.…

BL200EC如何与欧姆龙相连

1、欧姆龙 NX1P2 的 Port1 接到电脑的网口,Port2 接到 BL200EC 的 ETH1 网口。 欧姆龙 NX1P2 和 BL200EC 通电。 2、打开 Sysmac Studio 软件,新建工程,选择 NX1P2-9024DT,点击创建。 ​ 编辑切换为居中 添加图片注释&#xf…

【云原生】服务网格kiali开发环境搭建问题解析

文章目录背景环境准备参考连接问题1:windows如何配置kiali开发环境问题2:kiali如何配置k8s连接问题3:kiali启动报错关键词:方便你们找到我背景 kiali(凯莉)是istio技术对应的管理系统,其前端为…

概率论与数理统计(1)——基本概念

引言 确定性(必然):一定发生与一定不发生 随机现象:可能发生也可能不发生 随机事件 实验:对事物进行观察测量 随机试验:(1)在相同的条件下可以重复;(2&…

oracle使用小结

1.安装时oracle12C去除勾选为创建为容器数据库 2.cmd命令 <1>.sqlplus/nolog // –运行sqlplus命令&#xff0c;进入sqlplus环境&#xff0c;nolog参数表示不登录&#xff1b; <2>.conn/as sysdba // **–以系统管理员(sysdba)**的身份连接数据库&#xff1b; …

[附源码]计算机毕业设计springboot健康医疗体检

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

记录--用JS轻松实现一个录音、录像、录屏的工具库

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 最近项目遇到一个要在网页上录音的需求&#xff0c;在一波搜索后&#xff0c;发现了 react-media-recorder 这个库。今天就跟大家一起研究一下这个库的源码吧&#xff0c;从 0 到 1 来实现一个 R…