在开始编写驱动之前,我们需要保证良好的编码环境,这里编写代码所使用的编辑器是VScode,如果进行环境配置,可能会提示很多错误,比如头文件找不到、内核函数的定义无法跳转等等。
VScode 在这里只作为编辑器使用,配置的是编辑环境,而不是编译环境。
目录
一、内核源码准备
1、下载并解压内核源码
2、内核源码解压
二、VScode 编辑环境配置
三、VScode安装插件
一、内核源码准备
1、下载并解压内核源码
编写驱动时,我们需要用到内核中的一些头文件,如 linux/module.h、fs.h 等,因此,我们需要先下载内核源码,本人使用的是imx6ull mini 版,可以在正点原子官方论坛下载到内核源码。
正点原子下载中心链接:正点原子下载中心
下载以后,然后解压,按照下图提示就可以获取到内核源码了。
2、内核源码解压
内核源码我们需要有两份,一份是放在Windows环境下,用于解决我们编写代码时,VScode找不到头文件的问题。
一份是放在Linux环境下,用于提供一些内核库,以便于将写好的源文件编译成模块(.ko 文件)
Windows下解压
解压以后记住解压路径,等会在配置VScode的时候会用到。本人这里的解压路径是 D:/linux-kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek
Linux下解压
解压以后同样要记住解压路径,等会在编写Makefile文件的时候,需要指明内核源码所在目录。本人这里的解压路径是 /home/pigeon/workspace/linux-kernel
二、VScode 编辑环境配置
方式一:VScode UI 配置
按下 Ctrl + Shift + P 打开设置面板,输入 c++ configure,选择Edit Configurations(UI)
接下来就可以根据自身需求配置 C/C++ 环境了,下面选择的是调试时使用的编译器
这里是额外添加一些头文件路径,以便于我们在调试时可以跳转到指定头文件。下次再点进来看,似乎会被清空,但是效果依然在。
"D:\linux-kernel\linux-imx-4.1.15-source-compiled\include"
"D:\linux-kernel\linux-imx-4.1.15-source-compiled\arch\arm\include"
"D:\linux-kernel\linux-imx-4.1.15-source-compiled\arch\arm\include\asm"
这里选择的是 C语法标准和 C++ 语法标准
方式二:配置文件配置
除了在这个地方配置,其实还可以通过配置文件来配置,你打开 vscode 的时候,当前目录下会有一个 .vscode 目录,里面就包含了 c_cpp_properties.json 和 settings.json 两个配置文件。
c_cpp_properties.json 和上面UI 配置的效果是一样的,可以手动修改头文件路径、编译器路径、编译器选项等。
settings.json 可以对VSCode进行页面风格、代码格式、字体颜色大小等的编辑设置,此外还可以在我们查找时自动过滤某些文件(即不纳入查找)
三、VScode安装插件
VSCode 支持多种语言,比如 C/C++、Python、C#等等,为了方便后续代码编写,需要安装一些插件,如 C/C++的扩展包、设备树语法、Makefile语法等。
- C/C++:必须要有的,支持C/C++语法
- C/C++ Snippets:C/C++重用代码块
- C/C++ Advanced Lint:C/C++静态检测
- Include AutoComplete:自动头文件包含
- Rainbow Brackets:彩虹花括号,有助于阅读代码
- Arm Assembly:支持 ARM 汇编语法高亮显示
- vscode-icons:VSCode 图标插件,主要是资源管理器下各个文件夹的图标
- DeviceTree:设备树语法插件
- TabNine:一款 AI 自动补插件