用树莓派 3B 学习 Linux 驱动开发 --- 内核编译_raspberry 3b+ linux 编译_malasyL 的博客 - CSDN 博客 (1)
2023-6-21
| 2023-6-21
0  |  0 分钟

环境介绍

最近在学习 ARM Linux 驱动开发,由于手头的 ARM 开发板版本太老,和教程里用的驱动内核相差太多,于式打算用树莓派 3B 来进行学习。
要用树莓派开发内核,就必须先让树莓派跑上自己编译的内核,否则 insmod 会执行失败
教程介绍了如何交叉编译树莓派 3B 内核并运行 ko 模块, 本教程不再使用虚拟机,而是使用 win10 的 WSL 搭配 vscode 进行开发
硬件:WIN10 电脑 、树莓派

WSL 安装

注意:我安装的是 Ubuntu18.4,使用的是 WSL1,WSL1 完全够用。当然 WSL2 也是可以的。

安装 VSCode

很简单,下载安装就行了,然后安装 Remote WSL 插件,喜欢折腾的朋友可以再装几个插件。
主要是配置方面需要介绍,文章后面会进行补充。

连接树莓派

连接树莓的方法多种多样,有树莓派的朋友应该都会吧。我采用的是 ssh 的方式,树莓派通过 wifi 连接路由器,电脑也是通过 wifi 连接同一个路由器。
  1. 树莓派系统烧录: 资源下载
  1. 连接 SSH 树莓派默认是关闭 SSH 的,打开方法:烧录好后在 boot 目录下新建一个 SSH 文件

为树莓派安装 sz、rz

开发过程中需要频繁地在 PC 和树莓派间传输文件,传输方法也很多,这里使用 sz 和 rz
使用方法:

下载内核源码与工具

  1. 查看当前树莓派内核版本 uanme -a
    1. notion image
  1. 下载对应版本的内核,比如我的是 4.19.97
    1. 注意:这里有很多版本,一定要选对版本,否则编译后可能开不了机
      notion image
      如何找到自己版本内核呢?可以看树莓派官网的 raspberrypi OS 的 release note 点这里打开
      比如我的是 4.19.79,可以看出日期是 2020-02-13 和 2020-02-05
      notion image
      下载对应的代码即可
      notion image
      下载前可以看下 Makefile 的 log 是不是对的
      notion image
  1. 下载交叉编译工具 下载地址

配置交叉编译环境

  1. 打开 wsl,把内核源码和工具拷贝到 wsl 中
    1. 配置交叉编译环境
      1. ~/tools/raspberrypi-tools/arm-bcm2708目录下有几个交叉编译工具,我们使用的 WSL 是 64 位的,所以使用gcc-linaro-arm-linux-gnueabihf-raspbian-x64
    1. 下载一些依赖 (这是我从其它教程里抄的,不一定全,大家编译出错以后百度一下,一般很容易搜到少了哪个依赖)

      编译内核

      1. 进入内核源码目录,修改 Makefile
        1. 这一步的作用:我们在 make 后需要带上两个参数 如:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- ,这两个参数最后传递给 Makefile,如果我们在 Makefile 中直接写死,就可以直接输入 make 就行了。
      notion image
      2. 从树莓派获取 config 文件
      内核编译执行 make menuconfig 时会默认读取. config 文件,里面配置了内核会编译哪些模块,不编译哪些模块
      1. 执行make menuconfig并重新保存. config
        1. 虽然已经有了. config 文件,但最好还是执行下 make menuconfig,然后重新保存一下(原因我也不清楚。。。)
          这一步和下一步一般第一次编译都会出错,原因是系统有些东西没有安装,百度很容易找到答案
      1. 编译内核
        1. 拷贝内核到树莓派
          1. 树莓派重启后uname -a看下日期,如果没问题的话应该已经是自己编译的内核了

          用 VSCode 编译内核驱动

          1. 先写个驱动小 demo
          • Makefile 文件
            • led.c 文件
            1. 打开 VSCode,点击左下角图标,选择 WSL
              1. notion image
            1. 用 VSCode 打开自己驱动的文件夹 WSL 系统路径:C:\Users\liujh\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\root
            1. VSCode 配置 打开后会显示很多头文件找不到,编写代码的时候也不会有补全,使用下面的配置方法可以解决大部分问题。 文件:驱动代码路径/.vscode/Settings.json
            另外还可以直接再 VSCODE 中打开一个 WSL 终端,非常方便。
            notion image
            > 本文由简悦 SimpRead 转码
            目录