
嵌入式linux驱动
文章平均质量分 66
mainn
本人是移动互联应用技术专业,选择嵌入式开发方向。声明:博文的编写,主要参考网上资料,并结合个人见解,仅供学习、交流使用,如有侵权,请联系博主删除。...
展开
-
国嵌--linux字符设备驱动学习之memdev设备
https://blog.youkuaiyun.com/li4850729/article/details/7561708https://blog.youkuaiyun.com/wangrunmin/article/details/7571555字符设备驱动驱动分类——字符设备驱动 字符设备:字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现open,close,read,wri...转载 2018-04-30 16:08:58 · 529 阅读 · 0 评论 -
linux架构下platform总线详解(详细)
https://blog.youkuaiyun.com/qq_21792169/article/details/48750667 学习驱动一定要掌握驱动的模型,platform总线在内核中用的非常频繁,还有一个是Input输入子系统,platform总线的好处是,inux从2.6起就加入了一套新的驱动管理和注册的机制platform平台总线,是一条虚拟的总线,设备用platform_device表示,驱动用...转载 2018-06-01 15:04:22 · 8094 阅读 · 0 评论 -
支持阻塞操作的字符设备驱动 globalfifo(详解)
http://edsionte.com/techblog/archives/1895在前文中,我们已经知道了如何编写一个简单的字符设备驱动。本文将在此基础上为这个字符设备驱动增加阻塞功能。不过在此之前,我们会先做一些准备工作。阻塞和非阻塞I/O阻塞和非阻塞I/O是设备访问内核的两种不同的模式。进程以阻塞方式访问设备并对其进行操作时,如果不能及时获得I/O资源则会被挂起,直到满足可操作的条件后才进行...转载 2018-05-28 08:41:47 · 897 阅读 · 0 评论 -
多次写入字符串到字符设备,一次性读取已经写入的字符串内容
目的:做1个虚拟字符设备驱动,可以向该设备多次写入字符串;如果从设备读取,则一次性读取已经写入的字符串内容重要的数据结构:struct info{ struct info *next; //结构体嵌套自身指针 char *msg;};//头尾单向链表static struct info *head=NULL; //头节点static struct i...原创 2018-06-17 16:17:56 · 1233 阅读 · 0 评论 -
kobject和kset的一些学习心得
http://www.fx114.net/qa-95-91028.aspx本篇文章主要介绍了"kobject和kset的一些学习心得 ",主要涉及到kobject和kset的一些学习心得 方面的内容,对于kobject和kset的一些学习心得 感兴趣的同学可以参考一下。 #include <linux/module.h> #include <linux/kernel.h>...转载 2018-06-30 15:25:56 · 228 阅读 · 0 评论 -
Linux的kobject机制
https://blog.youkuaiyun.com/younger_china/article/details/11180385作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。 sysfs文件系统下的每个目录对应于一个kobj,kset是kobj的封装,内嵌了一个kobj,其代表kset自身,ktype代表属性操作集,但由于通用性,因...转载 2018-07-01 12:58:36 · 643 阅读 · 0 评论 -
Linux块设备驱动详解(核心数据结构和函数)
https://www.cnblogs.com/big-devil/p/8590007.html<机械硬盘>a:磁盘结构-----传统的机械硬盘一般为3.5英寸硬盘,并由多个圆形蝶片组成,每个蝶片拥有独立的机械臂和磁头,每个堞片的圆形平面被划分了不同的同心圆,每一个同心圆称为一个磁道,位于最外面的道的周长最长称为外道,最里面的道称为内道,通常硬盘厂商会将圆形蝶片最靠里面的一...转载 2018-07-24 11:16:21 · 2731 阅读 · 1 评论 -
Linux下串口通信详解(上)打开串口和串口初始化详解
https://blog.youkuaiyun.com/specialshoot/article/details/50707965linux下串口通信主要有下面几个步骤 下面我会一一介绍这几个步骤。1.打开串口代码(串口为ttyUSB0)...转载 2018-07-26 10:52:19 · 9915 阅读 · 1 评论 -
Linux下串口通信详解(下)读写串口及关闭串口
https://blog.youkuaiyun.com/specialshoot/article/details/50709257上一篇博客是串口的打开及配置,博客链接http://blog.youkuaiyun.com/specialshoot/article/details/50707965这一篇我将要把读写串口及串口关闭的操作详细介绍一下。读串口读串口就是接收串口数据,通过read来实现。rea...转载 2018-07-26 10:56:34 · 459 阅读 · 0 评论 -
NAND FLASH学习笔记之MTD下nand flash驱动(一)
转载请注明:http://blog.youkuaiyun.com/wang_zheng_kai/article/details/18988521有了前面的基础,我们就可以研究MTD下的nand驱动了,我这里用的是jz4780grus开发板,我将以下面几个部分做一个介绍,如果有没有涉及的或者需要详细介绍的我还会再开几篇博客进行介绍,敬请参阅!!一、MTD概述二、MTD系统层次三、MTD设备节点的...转载 2018-08-01 08:05:17 · 319 阅读 · 0 评论 -
NAND FLASH学习笔记之MTD下nand flash驱动(二)
https://blog.youkuaiyun.com/wang_zheng_kai/article/details/19038641在这里补充这一片是为了更好的理解上一篇,补充的内容包括:MTD下NAND的布局中几个重要文件的诠释和MTD涉及的几个重要的结构体(更好的理解接口) 一、内核中的NAND代码布局在Linux 内核中,MTD 源代码放在/driver/mtd 目录中,该目录中包含ch...转载 2018-08-01 08:26:08 · 532 阅读 · 0 评论 -
使用ubuntu16.04配置linux内核和busybox出现错误的解决方法总结
https://www.cnblogs.com/weidongshan/p/8036182.html 也许很多人都知道,ARM裸机1期加强版课程用的是ubuntu 16.04,当用这个ubuntu编译内核和制作文件系统的时候会出现一些问题,售后团队用了一天时间找到了如下解决方法。 更多干货关注威信订阅号baiwenkeji 1...转载 2018-08-02 15:43:11 · 801 阅读 · 0 评论 -
Linux内核中 container_of()函数
参考:https://www.linuxidc.com/Linux/2016-08/134481.htm container_of(ptr, type, member)参数:ptr:指针type:类型member:成员 看一个例子:Struct test { int i; int j...原创 2018-08-23 20:47:55 · 238 阅读 · 0 评论 -
mp3播放器madplay移植过程发生错误(缺少zlib库,mad.h头文件,格式-L)
mp3播放器madplay移植过程发生错误 在配置libid3tag-0.15.1b,错误信息(一):checking zlib.h usability... nochecking zlib.h presence... nochecking for zlib.h... noconfigure: error: zlib.h was not found*** You must fi...原创 2018-08-28 20:12:11 · 3366 阅读 · 2 评论 -
make uImage 编译内核时出错
这个问题又折腾了一个下午:在做RTC驱动时,修改了arch/arm/plat-s3c24xx/common-smdk.c后,编译内核,发现以下错误:book@www.100ask.org:/work/system/linux-2.6.22.6$ make uImage CHK include/linux/version.hmake[1]: 'include/asm-arm...原创 2018-08-24 17:45:56 · 3508 阅读 · 0 评论 -
make uImage 生成的是zImage而不是uImage
make uImage 在 linux-2.6.22.6/arc/arm/boot 目录下生成的是zImage而不是uImage解决办法:使用命令:sudo apt-get install u-boot-tools然后就可以了。(没有拷贝mkconfig文件)http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=20971&h...原创 2018-06-07 13:21:05 · 820 阅读 · 0 评论 -
globalfifo设备驱动(详细注释)
我们只需要重点关注read()函数和write()函数#include<linux/module.h> #include<linux/types.h> #include<linux/fs.h> #include<linux/errno.h> #include<linux/mm.h> #include<linux/...原创 2018-05-29 14:45:14 · 1183 阅读 · 1 评论 -
Linux驱动设计ioctl函数的第二个参数cmd不能为2
Linux驱动设计ioctl函数的cmd参数不能为2。今天遇到一个难题,使用系统调用ioctl()函数时,第二个参数request不能传入2。文件操作接口:struct file_operations{…… …… ……long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long),};在设计驱动接口函数时:static lon...原创 2018-04-22 21:02:18 · 1271 阅读 · 0 评论 -
linux内核 之struct file、struct inode、struct file_operations、struct cdev之间的关系
struct cdev与struct file_operations的关系 各种数据结构之间的关系struct file:(表示已打开的文件)(路径:linux-3.13.10\include\linux\fs.h)(描述进程中打开的文件,进程中只要调用了open就有一个该对象。具体描述了打开文件...原创 2018-04-19 17:13:24 · 4204 阅读 · 1 评论 -
设备号的静态申请与动态分配
https://blog.youkuaiyun.com/destinyhot/article/details/6928117设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。 在Linux内核看来,主设备号...转载 2018-04-14 15:54:50 · 506 阅读 · 0 评论 -
dmesg 总结 -c
https://blog.youkuaiyun.com/abcd1f2/article/details/732935331.dmesg介绍在dmesg里我们可以查看到开机信息,printk产生的信息等。若研究内核代码,在代码中插入printk函数,然后通过dmesg观察是一个很好地方法。 2.dmesg输出含义dmesg 输出的数字含义是什么,纠结了一会儿,下面给出解释终端输入dmesg,可以看到每行最开始显...转载 2018-04-14 19:52:41 · 10288 阅读 · 0 评论 -
Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件
http://blog.chinaunix.net/uid-10449864-id-2956854.html原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息,后来一个朋友问我/proc目录的一些内容,还真没有答上来,于是搜索下资料,找到一篇不错的文章,学习了!转载如下:Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统信息不是...转载 2018-04-14 20:07:39 · 21904 阅读 · 1 评论 -
linux驱动开发--copy_to_user 、copy_from_user函数实现内核空间数据与用户空间数据的相互访问
https://yq.aliyun.com/articles/30152设备读操作如果该操作为空,将使得read系统调用返回负EINVAL失败,正常返回实际读取的字节数ssize_t (*read)(struct file *filp, char __user *buf, size_t count, lofft *f_pos);filp:待操作的设备文件file结构体指针buf:待写入所读取数据...转载 2018-04-30 16:52:45 · 27525 阅读 · 1 评论 -
嵌入式linux,加载驱动程序后,运行程序导致系统奔溃
设备的写缓冲存只有100字节,但应用程序要写入4096字节,如果考虑不周全,很可能在写驱动缓存时越界,导致系统奔溃。test.c(应用程序,用户)demo1.c(驱动程序,内核)★★★如果把copy_from_user(info,buf,count)改写为copy_from_user(info,buf,size),会导致系统奔溃。重启虚拟机后:★★★系统奔溃,重启虚拟机后,在/dev目录下所建立的...原创 2018-05-02 11:41:02 · 993 阅读 · 0 评论 -
字符设备驱动 mem_read()函数
字符设备 mem_read()函数/*读函数*/static ssize_t mem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos){ int num = MINOR(filp->f_inode->i_rdev); ssize_t retval=0; //ssize_t:l...原创 2018-05-02 15:07:21 · 1530 阅读 · 0 评论 -
ARM开发板挂载 U盘 和 SD 卡
1、将U盘插上开发板,会弹出以下信息:查看/dev目录,会多出sda和sda1,这是你的U盘的设置文件,cd /devls -l | grep sda2、查看U盘信息fdisk -l3、挂在U盘:mount /dev/sda1 /mnt3、卸载U盘:(要进入非/mnt的目录下)umount /mnt...原创 2018-05-09 10:20:55 · 1852 阅读 · 0 评论 -
国嵌视频学习——高级字符设备驱动
国嵌视频学习——高级字符设备驱动https://blog.youkuaiyun.com/li4850729/article/details/7574913Ioctl设备控制大部分驱动除了需要具备读写设备的能力外,还需要具备对硬件控制的能力。例如,要求设备报告错误信息,改变波特率,这些操作常常通过ioctl方法来完成用户使用方法在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int ...转载 2018-05-02 19:47:55 · 302 阅读 · 0 评论 -
Linux内核学习笔记之seq_file接口创建可读写proc文件
https://blog.youkuaiyun.com/mumufan05/article/details/45803219https://blog.youkuaiyun.com/a_ran/article/details/37629899学习笔记与个人理解,如有错误,欢迎指正。温馨提示:建议跟着注释中的编号顺序阅读代码测试方法:cat /proc/abc_proc echo 任意字符...转载 2018-05-03 19:58:50 · 1404 阅读 · 0 评论 -
几个串口协议学习整理 UART IIC SPI
https://www.cnblogs.com/chengqi521/p/7238269.htmlhttps://blog.youkuaiyun.com/morixinguan/article/details/78495494一、UARTUART是一个大家族,其包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范。它们的主要区别在于其各自的电平范围不相同。嵌入式设备中常...转载 2018-05-16 20:26:45 · 6475 阅读 · 0 评论 -
内核proc文件系统与seq接口---seq_file接口编程浅析
http://blog.chinaunix.net/uid-28253945-id-3382865.html由于procfs的默认操作函数只使用一页的缓存,在处理较大的proc文件时就有点麻烦,并且在输出一系列结构体中的数据时也比较不灵活,需要自己在read_proc函数中实现迭代,容易出现Bug。所以内核黑客们对一些/proc代码做了研究,抽象出共性,最终形成了seq_file(Sequence...转载 2018-06-04 15:14:37 · 1164 阅读 · 0 评论 -
configure配置脚本的使用
Linux下软件的安装一般由3个步骤组成:./configure --host=arm-linux ... //配置make //编译make install //安装若取消编译:make clean //只清除之前编译id...原创 2018-08-29 08:44:14 · 1678 阅读 · 0 评论