Linux内核驱动模块如何添加math.h
结论
Linux内核空间无法调用C库函数并且禁用FPU,可以放弃
了。
- 原因:内核这么设计有利于上下文切换和调度。
解决方法
尝试过手动实现某些三角函数到我的文件中。发现只要涉及浮点数,虽然编译时不会error,但有一些warning如下:
MODPOST 1 modules
WARNING: "__aeabi_f2d" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fcmplt" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fmul" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fdiv" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_f2iz" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fcmple" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fcmpge" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fsub" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_d2f" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_dmul" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_i2f" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fcmpgt" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
WARNING: "__aeabi_fadd" [/work/coding/1_diy/22_dts_i2c_mpu6050/mpu6050.ko] undefined!
最终加载驱动时会报错如下:
root@ATK-IMX6U:/work# insmod mpu6050.ko
mpu6050: Unknown symbol __aeabi_fadd (err 0)
mpu6050: Unknown symbol __aeabi_fcmpgt (err 0)
mpu6050: Unknown symbol __aeabi_i2f (err 0)
mpu6050: Unknown symbol __aeabi_dmul (err 0)
mpu6050: Unknown symbol __aeabi_d2f (err 0)
mpu6050: Unknown symbol __aeabi_fsub (err 0)
mpu6050: Unknown symbol __aeabi_fcmpge (err 0)
mpu6050: Unknown symbol __aeabi_fcmple (err 0)
mpu6050: Unknown symbol __aeabi_f2iz (err 0)
mpu6050: Unknown symbol __aeabi_fdiv (err 0)
mpu6050: Unknown symbol __aeabi_fmul (err 0)
mpu6050: Unknown symbol __aeabi_fcmplt (err 0)
mpu6050: Unknown symbol __aeabi_f2d (err 0)
原因是:
当前使用Linux内核版本不支持ARM平台的相关运算,相同的内核代码在X86平台是没有问题的。
Linux内核驱动模块如何添加math.h相关推荐
- xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- 《Linux内核驱动模块编程指南》
Foreword Table of Contents 作者声明 版本和注意 感谢 译者注 作者声明 <Linux内核驱动模块编程指南>最初是由Ori Pomerantz为2.2版本的内核编 ...
- linux内核驱动模块开发步骤及实例入门介绍
最近在搞一个linux的项目,其中主要是在编写一些应用模块,对内核及其驱动模块涉及很少,遇到了一些驱动模块的问题时,临时查了些资料,大致了解了一下驱动模块开发的基本步骤和常规步骤,并从网上也收集到了一 ...
- linux内核驱动模块开发makefile实例解析
昨天整理了一篇关于linux内核驱动模块的开发介绍入门,其中介绍了一些关于驱动模块的基本开发步骤,不过面广而不深,很多细节都没有涉及到,其中就包括如何编写驱动模块的makefile.那么,今天我们就来 ...
- linux 内核 网卡驱动 移植,linux内核移植步骤添加dm9000网卡驱动(设备树).docx
linux内核移植步骤添加dm9000网卡驱动(设备树).docx LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1.选平台,指定交叉编译工具链1.在MAKEFI ...
- linux 适配电脑内核,Linux内核实践 如何添加网络协议[三]:实现 -电脑资料
内核版本:2.6.34 接上篇<添加网络协议>, 为了用户方便查看brcm设备的工作状态,使用proc文件系统是很好的方 式.一个网络协议模块可以注册到网络空间中register_pern ...
- Linux内核驱动模块示例--Helloword及Makefile
先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...
- 操作系统实验(linux内核编译,添加系统调用,windows进程创建,脚本程序编写)
<操作系统原理>实验报告 一.实验目的 (1)理解操作系统生成的概念和过程; (2)理解操作系统两类用户界面(操作界面,系统调用)概念; 二.实验内容 (1)在Unbantu或Fedora ...
- 把图形写入linux内核,如何在linux内核启动时添加显示图片
内核版本为2.6.30.4 为了实现了在linux内核启动时不仅仅是只显示一个静态的全屏logo, 而是显示能够表示内核正在启动的进度条,因此需要能够在启动过程中直接操纵framebuffer的功能. ...
最新文章
- 关于ref 和 out 关键字【整理】
- 青龙羊毛——顺丰科勒(搬运)
- 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?
- Django开发准则与最佳实践
- python xgboost用法_XGBoost使用教程(纯xgboost方法)一
- 数据科学包15-matplotlib详细介绍
- java byte与char互转原理
- iphone升级ios7之后出现蓝框框一直跳的问题
- mysql删除通用日志_删除MySQL log bin 日志操作记录
- 无支付牌照的电商平台“二清”通病问题需彻底根治
- 拆卸计算机主机的步骤是,拆卸主机的图解步骤
- check if DVE variable is valid
- android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide
- 链表ADT设计模板的简单应用——链表的ADT的实现C++版
- python 中execl等表格操作学习心得
- vue优化之CND优化
- html5 replace,js replace函数用法详解
- Docker-查看镜像仓库中镜像的版本信息
- SSM+特殊病例查询系统 毕业设计-附源码231832
- 4K+5G 才是真正考验硬件性能的时代
热门文章
- linux如何返回上一级目录
- 014-HTML-区块(不是区块链)
- 标题:Mythroad平台自述----老虎会游泳(精啊!!)-阅(120)
- 从实时音视频的微场景看混音技术
- java 生成印章 图章
- bzoj2150 部落战争 二分图匹配
- matlab 列转行,postgresql 行转列,列转行后加入到一个整体数据
- 笔记本装android,没有什么不可能 笔记本装Android系统实录
- 全球路由器和交换机细分市场表现创新高
- 铁电存储器 - Ferroelectric Random Access Memory(FRAM)