
驱动开发
文章平均质量分 86
Linux驱动开发记录
hrx-@@
Linux应用、Linux驱动、单片机、Android应用
展开
-
Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)
为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。原创 2023-04-20 23:19:13 · 1630 阅读 · 1 评论 -
Make menuconfig 产生 fatal error: curses.h 问题解决
环境:Ubuntu16.04问题:在配置完交叉编译环境之后,执行 make menuconfig 产生 fatal error: curses.h: 没有那个文件或目录 的问题。原因:这是由于系统中没有安装 ncurses devel 套件引起的。解决:sudo apt-get install libncurses5-dev安装后再编译即可。参考:https://blog.c...原创 2020-04-28 09:49:33 · 1529 阅读 · 2 评论 -
Linux驱动之Kconfig语法——学习笔记(11)
当在内核根目录执行 make menuconfig 时会出现内核配置界面,而配置界面中的选项、条目全都依赖于各个文件夹中的Kconfig配置文件。可以说各个文件夹中的Kconfig配置文件是整个内核文件这张大网中的每一个节点。这篇文章主要介绍Kconfig配置文件的语法。一、关键字介绍二、示例Kconfig代码## Kconfig test file#menu "Level 1...原创 2020-04-08 10:59:22 · 2352 阅读 · 0 评论 -
Linux驱动之线程的使用——学习笔记(9)
还是由于写了个RTC驱动,想要在驱动中定时更新系统时钟的原因,研究了定时器原创 2020-04-07 10:25:34 · 864 阅读 · 0 评论 -
Linux驱动之获取设备树属性——学习笔记(10)
在驱动开发中如果可以使用设备树进行参数配置而不用频繁修改源码时间很方便的事情。这里以I2C设备举例,记录一下。一、设备树修改1、添加设备节点由于要使用的设备挂载在I2C下,所以要先找到指定的I2C节点,然后添加。设备树中定义:&i2c1 { modle1@15 { compatible = "company name,modle...原创 2020-03-13 17:30:42 · 3229 阅读 · 0 评论 -
Linux驱动之在驱动中校准系统时间——学习笔记(8)
最近写了一个RTC驱动,然后打算在驱动内部定时校准系统时间,搜索了一圈实在是没找到什么有用的信息,就去内核的源码里找了一下还真的有。这里记录一下这个功能。一、函数介绍(1)mktime声明位置:kernel\include\linux\time.h源码位置:kernel\kernel\time.c这个函数的作用是将输入的年月日时分秒转换成距离 1970-01-01 00:00:0...原创 2020-03-06 09:32:54 · 857 阅读 · 0 评论 -
Linux驱动之Ubuntu下下载内核源码——学习笔记(7)
PC操作系统:Ubuntu 16.04 LTS内核版本:4.4.0-21-generic编译器:gcc 5.4.0主要是方便验证一些驱动的小问题。一、下载内核源码1、查看Ubuntu当前所使用的内核版本执行命令 uname -r 可以查询。2、查看一下可以下载的内核源码版本执行命令 apt-cache search linux-source 可以查询。可以看到有4.4.0版...原创 2020-02-29 13:20:58 · 4961 阅读 · 3 评论 -
Linux驱动之模块参数——学习笔记(6)
在应用层的C程序都是通过 main 函数的参数进行传递参数。在驱动层则是使用模块参数 进行参数传递。由于最近项目需要用到,就学习记录一下。一、宏及参数介绍1、模块参数宏模块参数宏常用的有两个, module_param 和 module_param_array。定义在文件 kernel\include\linux\moduleparam.h 中。(1)module_parammo...原创 2020-02-26 12:04:27 · 583 阅读 · 0 评论 -
Linux驱动之定时器的使用——学习笔记(5)
写了一个RTC驱动,为了实现在驱动中定时将RTC的时间校准到系统时间,研究了一下驱动中定时器的使用。看起来是挺简单了,这里记录下。一、知识点引入定时器在内核中的源码位置kernel/kernel/timer.ckernel/include/linux/timer.h1、结构体 struct timer_list 说明以下结构体定义在 timer.h 中。在内核中,一个 **t...原创 2020-02-25 17:03:08 · 804 阅读 · 0 评论 -
Linux驱动之ioctl函数——学习笔记(4)
PC操作系统:Ubuntu 16.04 LTS内核版本:3.14.38编译器:arm-poky-linux-gnueabi-gcc 4.9.1如何创建一个字符设备以及open、close、write、read等函数的使用以及file_operations结构体注释请看Linux驱动之创建字符驱动——学习笔记(3)。这篇文章单独说明一下ioctl的配置。一、知识点引入1、指针函数选择...原创 2020-02-14 16:59:21 · 1631 阅读 · 0 评论 -
Linux驱动之创建字符驱动——学习笔记(3)
PC操作系统:Ubuntu 16.04 LTS内核版本:3.14.38编译器:arm-poky-linux-gnueabi-gcc 4.9.1在了解了怎么创建一个最简单的Linux驱动模块模板(Linux驱动之简单入门——学习笔记(1))之后,现在要创建一个字符驱动,又是倒腾了好久才搞明白。一、知识点引入1、file_operations 结构体struct file_operati...原创 2020-02-13 18:06:41 · 606 阅读 · 1 评论 -
Linux驱动之用man查看内核函数——学习笔记(2)
PC操作系统:Ubuntu 16.04 LTS使用的内核版本:3.14.38写Linux驱动总是使用的大多是一些内核函数,在用man无法查找也是一件麻烦事。实现让man支持内核函数查询,这里我也是通过网上查找的资料,然后把自己的操作步骤记录下。一、下载Linux系统内核源码并编译上https://www.kernel.org下载Linux内核源码。因为我开发板的内核版本是3.14.3...原创 2020-02-12 15:37:51 · 1914 阅读 · 0 评论 -
Linux驱动之简单入门——学习笔记(1)
PC操作系统:Ubuntu 16.04 LTS编译器:arm-poky-linux-gnueabi-gcc 4.9.1基于i.mx6平台对Linux驱动模块修修改改也有段时间了,其中断断续续查了一大堆资料感觉知识并不那么连贯,是时候自己从基础开始整理整理了。一、创建一个最小驱动模块模板创建一个hello.c文件#include<linux/init.h>#include&...原创 2020-02-11 17:49:04 · 639 阅读 · 0 评论