Linux
文章平均质量分 69
伪NChris
这个作者很懒,什么都没留下…
展开
-
【Linux】【驱动】自动创建设备节点
功能 cdev_init()函数用于初始化 cdev 的成员,并建立 cdev 和 file_operations 之间的连接。字符设备注册完以后不会自动生成设备节点。功能 cdev_alloc()函数用于动态申请一个 cdev 内存。格式:mknod 名称 类型 主设备号 次设备号。这里展示了如何自动的方式去创建一个字符类的节点。第一个参数 cdev 的结构体指针。第一个参数 要初始化的 cdev。来验证生成的设备节点是否可以使用。第三个参数 次设备号的数量。cdev 的结构体指针。原创 2023-08-28 23:47:34 · 571 阅读 · 0 评论 -
【Linux】【驱动】第一个相对完整的驱动编写
因为linux不允许直接去操作寄存器,所以在操作寄存器的时候就需要使用到函数:ioremap 和iounmap。PS:此代码还有一些不完善的地方,所以在实际的使用中可能会出现一些异常,带之后改正。传递文件,将misc.ko 传到 /home/book/nfs_rootfs/这个章节会讲述去直接控制一个GPIO,高低电平。ioremap 做为地址的声明,如下图使用。iounmap 作为取消声明。来作为寄存器的声明和注销。原创 2023-08-22 23:01:41 · 465 阅读 · 1 评论 -
【Linux】【驱动】平台总线模式platform模型的编写,操作LED灯
文中使用了request_mem_region代码的位置,可能由于已经在系统中声明过,所以会出现报错的问题,后面需要寻找方式去消除。dirver: 则从总线中取数据,取的时候可以检验是否被使用过,取完在去操作。平台总线模式,将设备和驱动进行了区分,据说可以优化代码的可移植性。device:实现对设备寄存器的申明。原创 2023-09-19 00:21:16 · 252 阅读 · 0 评论 -
【Linux】【驱动】设备树常用 of 函数
test_node_property 这个就包含了设备中的:name,value等信息。应用层的app代码,通过 of函数来读取设备树中记录的信息。test_device_node 这个就是读取到的设备节点。out_values,就是读取出的信息。下面就展示一些of函数的使用方式。ret ,是判断读取是否正常。原创 2023-10-30 17:15:02 · 120 阅读 · 0 评论 -
【Linux】【驱动】设备树中设备节点的挂载
挂载mnt目录,如果挂载不成功,可能是IP没有配置,或者配置的不成功,修改IP后就可以。设备树对应的文件是100ask_imx6ull_mini.dtb。这里的路径韦东山的教程写的是错的,需要将root改成boot。所以需要在根节点上增加相关的测试代码。我们修改的就是hi如下的代码部分。将三个文件拷贝到对应的目录下。下面的内容就是完整的代码。编译内核以及编译设备树。更新完成后重启开发板。原创 2023-10-24 00:19:01 · 399 阅读 · 0 评论 -
【Linux】【驱动】注册字符设备号
define MKDEV(ma,mi) (((ma) > MINORBITS)) //在 dev_t 里面获取我们的主设备号。主设备号和次设备号统称为设备号。备号的主设备号一样,但是次设备号不同,次设备号以 baseminor 为起始地址地址。在之前杂项设备的时候,设备号是固定的,字符设备就需要自己去申请设备号了,原创 2023-08-28 00:17:16 · 459 阅读 · 0 评论 -
【Linux】【驱动】驱动挂载的时候给驱动传递参数
insmod beep.ko a=1(1)设置驱动的相关参数,比如设置缓冲区的大小(2)设置安全校验,防止我们写的驱动被人盗用参数库中有帮忙声明,不同的参数代表了不同的功能module_param_array(name,type,nump,perm)参数 name 要传递进去参数的名称参数 type 要传递进去参数的类型nump 实际传入进去参数的个数perm 要传递进去参数的读写权限a 就是传递的值,代码中直接去调用a就可以了指令指令这里定义的数组是5,所以传递的参数不能超过5原创 2023-08-26 10:29:11 · 465 阅读 · 1 评论 -
【Linux】【驱动】应用层和驱动层传输数据
当我们在应用层 write 设备节点的时候,就会触发我们驱动里面 write 这个函数。当我们在应用层 read 设备节点的时候,就会触发我们驱动里面read 这个函数。文件对应的操作有打开,关闭,读写设备节点对应的操作有打开,关闭,读写。read 函数就是实现了read的功能。write就是实现了write的功能。如下两个代码实现了数据的交互。Linux一切皆文件!允许printk输出。原创 2023-08-16 22:25:12 · 983 阅读 · 0 评论 -
【Linux】【驱动】杂项设备驱动
杂项设备的主设备号是相同的,均为 10,次设备号是不同的。设备号包含主设备号和次设备号,主设备号在 Linux 系统里面是唯一的,次设备号不一定唯一。主设备号可以比做成电话号码的区号。比如北京的区号是 010次设备号可以比作成电话号码。字符设备:IO 的传输过程是以字符为单位的,没有缓冲。块设备:I0 的传输过程是以块为单位的。杂项设备驱动是字符设备驱动的一种,他相对完整的字符驱动来说信息会稍微减少一点。设备号是计算机识别设备的一种方式,主设备相同的就被视为同一类设备。杂项设备是字符设备的一种。原创 2023-08-15 16:27:09 · 460 阅读 · 0 评论 -
【Linux】【驱动】驱动框架以及挂载驱动
将当前路径下的chrdevbase.ko 文件移动到/home/book/nfs_rootfs/路径。一个驱动可以编译成驱动模块然后挂载到驱动中去,也可以编译到系统中去,下面演示第一种方法。obj-m := chrdevbase.o :表示你编译的文件的名称。KERNELDIR :表示你Linux内核源码的位置。驱动文件名称 chrdevbase.c。如下图表示已经修改成功了。配置全局变量为ARM。原创 2023-08-12 11:50:26 · 633 阅读 · 0 评论 -
【Linux】【预】配置网络IP,挂载网络目录
ps:关于Windows中的配置IP,因为Windows需要去修改注册表,而且后续开发也完全 可以不配置win的IP,下面就不做讲解。输入如下指令,配置nfs网络,此时主机IP需要是 192.168.5.11。如下显示就是有IP显示了,如果没有的话重启一下网络,有可有IP。先查看开发板的IP有没有被配置,如果没有配置则使用如下指令配置。如下操作,其中的:192.168.252.140就是它的IP。c 点击用户名和密码,即可进入正常的界面,点击进入设置,配置桥接网络的IP。如下就是正常进入界面的样子。原创 2023-08-06 18:43:36 · 678 阅读 · 0 评论 -
【Linux】【预】配置VSCode阅读和编写Linux驱动的代码环境
vscode在不同的系统中配置应该是相同的,后面有空再做尝试此版本的配置未必完全,但能实现基础的代码跳转的功能,应该可以顺畅的阅读源码,如有错误后续继续更新配置其他工程应该也是相同的,配置好对应的头文件以及编译器的路径即可,有空尝试配置stm32代码环境。原创 2023-08-06 17:11:39 · 367 阅读 · 0 评论 -
【Linux】【预】配置虚拟机的桥接网卡+nfs
到这 nfs以及网卡就配置好了,网络可能出现,过一会就断掉的情况,可以参考第五条,这个方式配置就可以更正这个问题。原创 2023-08-06 19:44:10 · 518 阅读 · 0 评论 -
linux相关基本的软件操作
linux相关基本的软件操作权限相关二级目录三级目录权限相关获取某个文件夹编辑的权限su:进入root的权限给一个完整的权限chmod 777 -R /mnt/workspace二级目录三级目录原创 2021-01-24 18:03:28 · 109 阅读 · 0 评论