Visual Studio Code搭建linux驱动开发环境

前言

        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搜索-->然后点击添加自己的头文件

Visual Studio Code搭建linux驱动开发环境_第1张图片

或者

        输入setting.json搜索,然后添加以下内容

Visual Studio Code搭建linux驱动开发环境_第2张图片

 


参考:自定义 Visual Studio Code C++项目中的默认设置

总结

                                                  完。

你可能感兴趣的:(vscode,linux,驱动开发,编辑器,arm)