Linux开发板之字符驱动开发

一、在前面实验12的过程中在使用NFS进行挂载的步骤中要注意:

如果是挂载 Ubuntu18 系统及更高版本 的系统下的 nfs 共享目录,uboot 无法通过 nfs 启动 Ubuntu 系统内的共享目录。需要在 /etc/default/nfs-kernel-server 文件进行修改,改好了保存退出,然后重启一下 nfs 就可以了,或 者报错 Loading:*ww ERROR:File lookup fail 的也是按照下面的方法来解决。

按照上面的截图改完之后,保存退出,在执行以下指令重启nfs服务。

sudo service nfs-kernel-server restart

二、在完成实验12的基础上,接下来是字符驱动的开发:

首先在该模式下创建如下文件夹:

注意:我已创建!

在lib下创建modules

在modules下创建4.1.15文件夹

  1. 创建VSCode工程在Ubuntu中创建一个存放linux驱动的文件夹,我的目录如下:

2在1_chrdevbase文件夹下创建.vscode工程,并且新建chrdexbase.c文件

创建c_cpp_properties,json文件,如下所示:

{

    "configurations": [

        {

            "name": "Linux",

            "includePath": [

                "${workspaceFolder}/**",

                "/home/itcast/linux/IMX6ULL/linux/linux-imx-rel_imx_4.1.15_2.1.0_ga/include", (此文件目录为个人虚拟机下的目录)

                "/home/itcast/linux/IMX6ULL/linux/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/include", (此文件目录为个人虚拟机下的目录)

                "/home/itcast/linux/IMX6ULL/linux/linux-imx-rel_imx_4.1.15_2.1.0_ga/arch/arm/include/generated/"(此文件目录为个人虚拟机下的目录)

            ],

            "defines": [],

            "compilerPath": "/usr/bin/clang",

            "cStandard": "c11",

            "cppStandard": "c++17",

            "intelliSenseMode": "clang-x64"

        }

    ],

    "version": 4

}

注意:

如果本次实验自己使用的是正点原子出厂的源码的进行的编译,那么以下路径就使用自己的路径,如果是将开发板对应的源码进行修改的,那么就使用自己修改过的开发板对应的路径,  特别注意:在做驱动开发的时候,千万不能将此路径搞混淆了。以至于后面的实验会出现各种问题!

例如:就会出现如下问题:

  1. 接下来创建settings.json文件,如下所示:

4、编写.c文件:

5、接下来编写Makefile文件,如下所示:

注意:上边KERNELDIR为自己虚拟机中存放的文件位置

此时,应该在vscode中进行编译.c

       make

敲完make命令之后,文件夹中应该会出现.ko文件等等文件。

6、接下来,将当前目录下的.ko文件复制到刚才新建的文件下,命令如下:

sudo cp chrdevbase.ko /home/itcast/linux/nfs/rootfs/lib/modules/4.1.15/ -f

注意:此文件目录是在自己虚拟机下nfs文件目录中新建的文件

接下来在CRT中进入到文件夹4.1.15下,输入如下命令加载 chrdevbase.ko 驱动文件:

modprobe chrdevbase.ko

如果出现如下所示的提示

输入“depmod命令以后会自动生成 modules.alias、dules.symbols 和 modules.dep 这三个文件

7重新使用 modprobe 加载 chrdevbase.ko,

说明驱动加载成功!

三、注意:如果出现以下问题:

1

2、如果出现以下问题:这个是led实验!需要在vscode中创建如1_chrdevbase文件下一样的.vscode文件。重新使用make编译即可。再将其sudo cp chrdevbase.ko /home/itcast/linux/nfs/rootfs/lib/modules/4.1.15/ -f

3、如果以上方法还行不通,试着将其Makefile文件下做以如下更改:

再次重复上一步即可。接下来再进行led实验就应该没有什么问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值