linux驱动
文章平均质量分 92
陌上烟雨遥407
专注于单片机,嵌入式linux驱动,嵌入式linux应用,嵌入式QT,音视频开发。
展开
-
Linux设备驱动中的并发控制
1.1 基本概念 首先我们在一起探讨这个问题的同时,需要明白几个最基本的概念。并发:指的是多个执行单元同时,并行被执行。 竞争:因为多个单元同时,并行执行而对共享资源(全局变量,静态变量)访问容易导致竞争。比如全局变量,int a[1000]; 在A进程中对其数组成员都写入10,由于linux内核支持抢占调度(类似于单片机的中断优先级)。然后在B进程中对其数组成员都写入20,然后C进程...原创 2018-02-13 19:47:00 · 234 阅读 · 0 评论 -
makefile文件改进自动添加头文件
1 基础知识复习 目标:依赖1 依赖2[TAB]命令 当"目标文件"不存在, 或某个依赖文件比目标文件"新",则: 执行"命令"makefile 语法 a. 通配符: %.o $@ 表示目标 $< 表示第1个依赖文件 $^ 表示所有依赖文件b. 假想目标: .PHONYc. 即时变量、延时变量, export简单变量(即时变量) :A := xxx #...原创 2018-04-29 21:42:54 · 1229 阅读 · 0 评论 -
gcc 编译过程详解
1,编译过程:一个C/C++文件要经过预处理,编译,汇编和连接等4步才能变成可执行文件。 1.1 预处理 C/C++源文件中,以“#”开头的命令被称为预处理,如包含命令“#include”宏定义等。预处理就是要将包含include的文件插入原文件中,将宏定义展开,根据条件编译选择要使用的代码,最后输出一个.i文件。 如下将生成.i文件。book@www.100ask.org:~...原创 2018-04-29 15:55:00 · 405 阅读 · 0 评论 -
内核编译的三种方法
1,配置内核编译有三种方法:1,make menuconfig(使用该方法,里面有成千上万个配置项,需要对内核熟练掌握) ,2使用默认的配置在上面修改 ,3使用厂家提供的配置文件。 2方法一:不推荐使用,省略。 3,方法二介绍:我们以linux内核2.6版本为例。第一步查找相应的默认配置文件。输入 (1)find -name "*defconfig" 如下图: ...原创 2018-04-28 15:36:04 · 3375 阅读 · 0 评论 -
NAND Flash驱动编写
1 开发环境 :S3C2440 GCC编译 2 NAND Flash型号:K9F2G08U0C3 芯片介绍:内存大小为256M*8=2GB,每页由2K数据+64字节OOB组成。 4 芯片引脚介绍: 由上图我们可以知道: 发命令操作: 选中芯片,CLE设为高电平 , 在DATA0~DATA7上输出命令值,发出一个写脉冲。发地址操作 : 选中芯片 ,...原创 2018-05-01 16:09:55 · 741 阅读 · 0 评论 -
操作系统的分类及介绍
操作系统分类:1)按用户界面的使用环境和功能特征分为:批处理操作系统,分时操作系统,实时操作系统; 2)按计算机体系结构的发展分为:个人操作系,智能卡操作系统,网络操作系统、分布式操作系统、嵌入式操作系统,、批处理操作系统。 3)分时系统:它的设计思想是,CPU的时间划分为若干个小片段,每个任务依次执行一小片段。主要应用于多用户操作,如linux. 4)实时操作系统:实时操作系统...原创 2018-03-19 09:58:31 · 25387 阅读 · 0 评论 -
S3C2440GPIO口函数库
转自:http://blog.csdn.net/cnsecs/article/details/6689182系列函数的定义在arch/arm/mach-s3c2410/gpio.c,相关的宏定义在include/asm-arm/arch-s3c2410/regs-gpio.h(1)void s3c2410_gpio_setpin(unsigned int pin, unsigned int to)...转载 2018-03-05 17:58:36 · 667 阅读 · 0 评论 -
linux内核模块
综述:如今linux内核整体框架十分庞大,我们如果直接把所有所需的功能编译进内核,会导致内核十分庞大,且在现有内核中我们无法对其增减。所以linux提供一种机制--模块。我们可以根据需要,对模块进行删减。 一)一个linux内核模块主要由如下几个部分组成 1 模块加载函数 当通过insmod或者modprobe命令加载内核模块时,xxx_init会被执行。static int _...原创 2018-02-20 08:55:04 · 287 阅读 · 0 评论 -
Liunx内核编程及编程
综述:当今在移动端领域,linux可谓占有举足轻重的地位。从linux操作系统的诞生,发展和成长过程依赖着5个重要的支柱:UNIX操作系统,Minix操作系统,GNU计划,POSIX标准和Internet.。 一 linux操作系统的发展 下面我们简述的说一下linux操作系统的成长过程。 UNIX操作系统:它是由美国贝尔实验室的Ken.Thompson和Dennis Ritch...原创 2018-02-19 16:45:06 · 260 阅读 · 0 评论 -
驱动开发必备硬件知识
综述:在嵌入式领域,可分为硬件开发和软件开发。对于软件开发又可分为底层开发(模块驱动编写,uboot,内核),上层开发(应用,QT)。 作为一名软件驱动开发的工程师,我们不需要去设计硬件的原理图,PCB。我们只需看懂硬件开发人员提供的硬件模块时序就行了,但是我们应该也需了解如下硬件知识。 一)处理器 1,可分为通用处理器(单片机,ARM),数字处理器(DSP),其他专用处理器...原创 2018-02-19 08:50:05 · 3062 阅读 · 0 评论 -
Linux设备驱动中的异步通知和异步I/O
杂话篇:今年是农历大年三十,上午学习会,下午就得准备年夜饭了。一年又一年,搞技术的,只要你能坐得了冷板凳,成长是飞跃的。一)异步通知的基本概念 异步通知:一旦设备就绪,则主动通知执行单元。类似于单片机的中断。而阻塞I/O意味着一直等待设备可以访问后再访问。非阻塞I/O中使用poll机制意味着查询设备是否可以访问,而异步通知则意味着设备通知应用程序可访问。 这里要强调的是...原创 2018-02-15 11:07:13 · 285 阅读 · 0 评论 -
Linux设备驱动中的阻塞与非阻塞I/O模型
杂话篇:在学习Linux过程中,遇到很多困难,在大多数情况下,都是借助CSDN网站解决的。后来,我也决定加入其中。一方面能够加深自己所学的知识,以后再遇到同样的问题也方便查找。另一方面,还能为更多的同道中人提供自己的微薄之力。一:阻塞与非阻塞基本概念 阻塞:在执行设备操作时,若不能获得资源,则挂起(该执行单元处于休眠状态,不占用CPU)直到满足可操作的条件再进行操作。 所以必须确保有唤醒执行...原创 2018-02-14 16:43:35 · 329 阅读 · 0 评论 -
从入门到制作编译多目录文件的makefile
makefile作用:用于管理编译文件。通常编译linux项目时,有长达几千个文件,在某次更改其中一个文件的话,若要将整个工程全部编译,太繁琐耗时。引入makefile,它依据文件更新的时间,从而只编译改动过的文件。1 makefile名词解释:目标:指编译后生成文件。依赖:生成这个目标,所依赖的文件。(注意在执行这条规则时,makefile首先会去遍历这些依赖,如不存在,则会从这ma...原创 2018-11-11 15:06:50 · 1007 阅读 · 0 评论