前言
Visual Studio Code是一个很优秀的开发软件,但我们并不能直接用来驱动开发。因为驱动开发所需要的头文件来自Linux内核,这就要求我们自己添加内核文件。
一、获取内核?
1.官网
https://mirrors.edge.kernel.org/pub/linux/kernel/
2.国内
Index of /kernel/linux/kernel/
二、添加头文件路径
按f1 -> 输入 C/C++:Edit Configuration(JSON)搜索 -> 打开该文件 -> 输入以下内容
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/home/kuangben/linux-5.10.10/arch/arm/include",
"/home/kuangben/linux-5.10.10/arch/arm/include/generated",
"/home/kuangben/linux-5.10.10/include",
"/home/kuangben/linux-5.10.10/usr/include",
"/home/kuangben/linux-5.10.10/include",
"/home/kuangben/linux-5.10.10/arch/arm/include/generated",
"/home/kuangben/linux-5.10.10/arch/um/include/asm",
"/home/kuangben/linux-5.10.10/include/uapi",
"/home/kuangben/linux-5.10.10/arch/arm/include/generated/uapi",
"/home/kuangben/linux-5.10.10/arch/um/include",
"/home/kuangben/linux-5.10.10/tools/virtio"
]
}
],
"version": 4
}
注:[ ]中的路径为驱动所需头文件,我的Linux内核目录为/home/kuangben/linux-5.10.10/。
值得一提的是,上面头文件不一定全,但对我来说尚且够用,日后工作开发中发现漂红的头文件,在内核目录下搜索,得到路径,粘贴进来即可。
2.Linux内核文件解析(仅供参考)
include/ ---- 内核头文件,需要提供给外部模块(例如用户空间代码)使用。
kernel/ ---- Linux内核的核心代码,包含了进程调度子系统,以及和进程调度相关的模块。
mm/ ---- 内存管理子系统 。
fs/ ---- VFS子系统 。
net/ ---- 不包括网络设备驱动的网络子系统 。
ipc/ ---- IPC(进程间通信)子系统。
arch// ---- 体系结构相关的代码,例如arm, x86等等。
arch//mach- ---- 具体的machine/board相关的代码。
arch//include/asm ---- 体系结构相关的头文件。
arch//boot/dts ---- 设备树(Device Tree)文件。
init/ ---- Linux系统启动初始化相关的代码。
block/ ---- 提供块设备的层次。
sound/ ---- 音频相关的驱动及子系统,可以看作“音频子系统”。
drivers/ ---- 设备驱动(在Linux kernel 中,设备驱动占了49.4的代码量)。
lib/ ---- 实现需要在内核中使用的库函数,例如CRC、FIFO、list、MD5等。
crypto/ ----- 加密、解密相关的库函数。
security/ ---- 提供安全特性(SELinux)。
virt/ ---- 提供虚拟机技术(KVM等)的支持。
usr/ ---- 用于生成initramfs的代码。
firmware/ ---- 保存用于驱动第三方设备的固件。
samples/ ---- 一些示例代码。
tools/ ---- 一些常用工具,如性能剖析、自测试等。
Kconfig, Kbuild, Makefile, scripts/ ---- 用于内核编译的配置文件、脚本等。
COPYING ---- 版权声明。
MAINTAINERS ----维护者名单。
CREDITS ---- Linux主要的贡献者名单。
REPORTING-BUGS ---- Bug上报的指南。
Documentation, README ---- 帮助、说明文档。
三、 当找不到C/C++:Edit Configuration(JSON)命令怎么办?
我们找不到C/C++:Edit Configuration(JSON)命令时,说明我们尚未设c_cpp_properties.json文件,我们可以在.vsdoce目录下添加该文件,然后加入上述内容。
问:.vscode文件在哪?
答:当你刚安装该拓展(看图片)时将在当前目录创建该文件,表示该配置文件的配置信息将仅对于当前目录有效,如想全局生效,请往下看。
四:如何设置全局生效
点击:文件-->首选选项-->设置-->输入System include path搜索-->然后点击添加自己的头文件
或者
输入setting.json搜索,然后添加以下内容
参考:自定义 Visual Studio Code C++项目中的默认设置