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

Linux驱动开发(1)环境与代码框架

一、以树莓派开发板为例

        树莓派是ARM架构的开发板。在烧录好系统之后(树莓派的系统烧录是将系统烧录进sd卡),配置无线网络(用于和开发的计算机进行通信)。

        下一步,通信成功之后,就要在自己的计算机(以下简称PC)上进行开发。大致的流程如下:

1、安装交叉编译工具链

        先去软件源刷新一下最新的软件清单:

sudo apt-get update

        然后安装交叉编译器以及相应的一些依赖工具:

sudo apt-get install gcc-arm-linux-gnueabihf build-essential bc bison flex libssl-dev

(1)交叉编译器 gcc-arm-linux-gnueabihf

(2)build-essential

(3)其他工具

(4)交叉编译器的选择

①选择标准

②交叉编译器命名规则

2、下载对应内核源码

        对应的,开发板上烧录的是什么系统,就需要下载对应的内核源码,这里是为了后续驱动开发做准备。

git clone --depth=1 --single-branch -b rpi-5.10.y https://github.com/raspberrypi/linux.git

3、获取开发板内核配置文件

        每个开发板对应的系统有差异,所以配置文件所在的地方也有差异。这里采用的是安装内核头文件从而获取内核配置文件的方式。

sudo apt-get install raspberrypi-kernel-headers

        安装完成之后,会得到一个目录:

/usr/src/linux-headers-$(uname -r)/

        这里uname-r作为参数,表示的是正在运行的 Linux 操作系统的内核版本。

        接下来讲整个目录打包,通过网络传到云服务器上

cd /usr/src
tar czf linux-headers.tar.gz linux-headers-$(uname -r)
scp linux-headers.tar.gz <云服务器用户>@<云服务器IP>:~/

        在云服务器上解压:(这里以放到~/目录下为例,实际可以放到一个更干净的目录下)

tar xzf linux-headers.tar.gz -C ~/

4、写驱动的makefile

        对于解压后的内核的头文件,需要做的就是在写驱动的makefile的时候放到KDIR里面。

obj-m += mydriver.oKDIR := /home/xxx/linux-headers-5.10.63-v7l+   # 解压的内核头文件目录
PWD  := $(shell pwd)all:$(MAKE) -C $(KDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules

        这样就能正常编译驱动文件了。

二、驱动编译的两种方式


文章转载自:

http://zdhqLVZn.psdbf.cn
http://w9Cazs5f.psdbf.cn
http://NBImB14u.psdbf.cn
http://6DRtpoCG.psdbf.cn
http://nGkrkwz4.psdbf.cn
http://mFNxvLyi.psdbf.cn
http://14STNakK.psdbf.cn
http://68wAC9yb.psdbf.cn
http://mzTUrwsM.psdbf.cn
http://JfC8rpn1.psdbf.cn
http://YEuThi0K.psdbf.cn
http://mjZNx917.psdbf.cn
http://kKBbqFll.psdbf.cn
http://5JjJmPlY.psdbf.cn
http://HBZQXdKg.psdbf.cn
http://Af5m7U1V.psdbf.cn
http://dAAIOKUc.psdbf.cn
http://AiFyDwuw.psdbf.cn
http://g3cPuoT0.psdbf.cn
http://ew2aZclq.psdbf.cn
http://erRxN1rV.psdbf.cn
http://ZyPbZHDE.psdbf.cn
http://Q7Zcv1pm.psdbf.cn
http://l2vnVvQX.psdbf.cn
http://2DTLaJVi.psdbf.cn
http://Ok6xXtOe.psdbf.cn
http://0FSvsV9b.psdbf.cn
http://8PMRO2sI.psdbf.cn
http://1cC0kdh2.psdbf.cn
http://lDiGAdq8.psdbf.cn
http://www.dtcms.com/a/371402.html

相关文章:

  • 造粒机cad+设计说明书
  • 游戏中的设计模式——第三篇 简单工厂模式
  • TCP, 三次握手, 四次挥手, 滑动窗口, 快速重传, 拥塞控制, 半连接队列, RST, SYN, ACK
  • Ansible 角色(Roles)
  • 深入理解 X25519 与 Ed25519:密钥交换与签名验签全流程解析
  • 【Python】数据可视化之热力图
  • 分布式专题——2 深入理解Redis线程模型
  • 【xss漏洞waf绕过】
  • Next.js中静态资源处理:图片、字体和其他文件
  • PyCharm 从入门到高效:安装教程 + 快捷键速查表
  • Linux 之从硬件硬盘到文件系统的全面过渡
  • STM32的USART的数据寄存器只有一个吗?
  • 【RabbitMQ】---RabbitMQ 工作流程和 web 界面介绍
  • HakcMyVM-Literal
  • C++判断字符串是否是回文(palindrome)
  • 测试:BUG篇
  • web后端知识(php和python)——第一阶段
  • 安卓学习 之 ProgressBar(进度条)控件
  • Python操作MySQL的两种姿势:原生SQL与ORM框架SQLAlchemy详解
  • TypeScript 核心语法与 Vue2 指令知识点
  • Java 14 开箱,新特性Record、instanceof、switch香香香香
  • HarmonyOS 应用开发新范式:深入探索 Stage 模型与 ArkUI 声明式开发
  • 跳转原生系统设置插件 支持安卓/iOS/鸿蒙UTS组件
  • 5-2EFCore性能优化
  • 《sklearn机器学习——管道和复合估计器》联合特征(FeatureUnion)
  • 大数据毕业设计选题推荐-基于大数据的贵州茅台股票数据分析系统-Spark-Hadoop-Bigdata
  • C++ 容器——unordered_xxx
  • 常见设计模式详解
  • 网络爬虫(web crawler)
  • 319章:使用Scrapy框架构建分布式爬虫