结论

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相关推荐

  1. xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持

    Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...

  2. 《Linux内核驱动模块编程指南》

    Foreword Table of Contents 作者声明 版本和注意 感谢 译者注 作者声明 <Linux内核驱动模块编程指南>最初是由Ori Pomerantz为2.2版本的内核编 ...

  3. linux内核驱动模块开发步骤及实例入门介绍

    最近在搞一个linux的项目,其中主要是在编写一些应用模块,对内核及其驱动模块涉及很少,遇到了一些驱动模块的问题时,临时查了些资料,大致了解了一下驱动模块开发的基本步骤和常规步骤,并从网上也收集到了一 ...

  4. linux内核驱动模块开发makefile实例解析

    昨天整理了一篇关于linux内核驱动模块的开发介绍入门,其中介绍了一些关于驱动模块的基本开发步骤,不过面广而不深,很多细节都没有涉及到,其中就包括如何编写驱动模块的makefile.那么,今天我们就来 ...

  5. linux 内核 网卡驱动 移植,linux内核移植步骤添加dm9000网卡驱动(设备树).docx

    linux内核移植步骤添加dm9000网卡驱动(设备树).docx LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1.选平台,指定交叉编译工具链1.在MAKEFI ...

  6. linux 适配电脑内核,Linux内核实践 如何添加网络协议[三]:实现 -电脑资料

    内核版本:2.6.34 接上篇<添加网络协议>, 为了用户方便查看brcm设备的工作状态,使用proc文件系统是很好的方 式.一个网络协议模块可以注册到网络空间中register_pern ...

  7. Linux内核驱动模块示例--Helloword及Makefile

    先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...

  8. 操作系统实验(linux内核编译,添加系统调用,windows进程创建,脚本程序编写)

    <操作系统原理>实验报告 一.实验目的 (1)理解操作系统生成的概念和过程; (2)理解操作系统两类用户界面(操作界面,系统调用)概念; 二.实验内容 (1)在Unbantu或Fedora ...

  9. 把图形写入linux内核,如何在linux内核启动时添加显示图片

    内核版本为2.6.30.4 为了实现了在linux内核启动时不仅仅是只显示一个静态的全屏logo, 而是显示能够表示内核正在启动的进度条,因此需要能够在启动过程中直接操纵framebuffer的功能. ...

最新文章

  1. 关于ref 和 out 关键字【整理】
  2. 青龙羊毛——顺丰科勒(搬运)
  3. 为什么 UEFI 方式启动的 U 盘必须使用 FAT32 文件系统?
  4. Django开发准则与最佳实践
  5. python xgboost用法_XGBoost使用教程(纯xgboost方法)一
  6. 数据科学包15-matplotlib详细介绍
  7. java byte与char互转原理
  8. iphone升级ios7之后出现蓝框框一直跳的问题
  9. mysql删除通用日志_删除MySQL log bin 日志操作记录
  10. 无支付牌照的电商平台“二清”通病问题需彻底根治
  11. 拆卸计算机主机的步骤是,拆卸主机的图解步骤
  12. check if DVE variable is valid
  13. android_驱动_qcom_【高通SDM660平台】(1) ---Bringup Guide
  14. 链表ADT设计模板的简单应用——链表的ADT的实现C++版
  15. python 中execl等表格操作学习心得
  16. vue优化之CND优化
  17. html5 replace,js replace函数用法详解
  18. Docker-查看镜像仓库中镜像的版本信息
  19. SSM+特殊病例查询系统 毕业设计-附源码231832
  20. 4K+5G 才是真正考验硬件性能的时代

热门文章

  1. linux如何返回上一级目录
  2. 014-HTML-区块(不是区块链)
  3. 标题:Mythroad平台自述----老虎会游泳(精啊!!)-阅(120)
  4. 从实时音视频的微场景看混音技术
  5. java 生成印章 图章
  6. bzoj2150 部落战争 二分图匹配
  7. matlab 列转行,postgresql 行转列,列转行后加入到一个整体数据
  8. 笔记本装android,没有什么不可能 笔记本装Android系统实录
  9. 全球路由器和交换机细分市场表现创新高
  10. 铁电存储器 - Ferroelectric Random Access Memory(FRAM)