linux 驱动开发之linux vscode环境搭建以及第一个驱动 helloWorld

  1. 下载linux版的vscode ,并且安装

  2. 我用的板子是nxp的imx6ull,下载nxp的的arm交叉编译工具链和他们的内核(也可以下载官方版本的内核和编译工具链),解压并设置路径,我的路径如下:
    内核路径/home/mayunzhi/linux/Linux-4.9.88
    工具链路径/home/mayunzhi/linux/ToolChain/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/

  3. 创建一个helloworld的文件夹mkdir helloworld ,创建一个c文件:touch helloworld.c

  4. 用vscode打开文件夹helloworld 编辑helloworld.c

 #include 
 
 static int __init hello_init(void){
     
    printk(KERN_INFO"hello world init !\n");
     return 0;
  }
  static void __exit hello_exit(void){
     
     printk(KERN_INFO"hello world exit !\n");
 }
 
 module_init(hello_init);
 module_exit(hello_exit);
 MODULE_LICENSE("GPL");
  1. 创建Makefile   touch Makefile
  2. 编辑Makefile
KERNELDIR :=/home/mayunzhi/linux/Linux-4.9.88
 
CURRENT_PATH :=$(shell pwd)
 
build:kernel_modules
 
kernel_modules:
 
  $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
 
clean:
 
  $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
  1. 在vscode下打开终端,默认当前目录为helloworld文件夹下,执行make命令

  2. 产生这些文件:
    helloworld.mod.c helloworld.mod.o modules.order helloworld.ko helloworld.o

  3. 后缀名为.ko的文件就是我们开发板需要的模块驱动文件,将helloworld.ko拷贝到开发板文件系统里的/lib/module/4.1.15/中,这里是通过nfs环境,(后面会有详细的教程).

  4. 在开发板中cd到/lib/module/4.1.15/,执行insmod helloworld.ko命令将helloworld驱动加载到内核,在开发板终端会看到"hello world init !"的信息
    5.要卸载驱动只需要在当前目录下执行rmmod helloworld.ko,就可以卸载helloworld驱动,会看到终端有"hello world exit !"的信息

以上就是一个最简单的helloworld的linux 驱动设计方式,只是输出了信息,没有涉及soc上的硬件操作,比如gpio,中断,i2c,spi,lcd等等,当然我们的驱动开发远没有这么简单,后面我会详细介绍,

你可能感兴趣的:(linux,driver)