
Linux系统开发专栏
Aniu127
这个作者很懒,什么都没留下…
展开
-
bootloader分析
一、Boot Loader 概念就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境,他就是所谓的引导加载程序(Boot Loader)。转载 2014-09-04 01:31:36 · 653 阅读 · 0 评论 -
DMA基本概念及linux2440下DMA驱动程序编写与测试
1、基本概念DMA即Direct Memory Access(直接存储器存取),那么为什么要引入这么个东东呢?它的作用又是什么呢?我们通过一个例子来说明:比 如当我们要往内存里面拷贝一块很大的数据时,由于CPU同一时间只能做一件事情,这样在一段很长的时间里就不能再处理其它事情了,这样就造成了浪费。于是 引入了DMA的概念,所谓DMA就是直接存储器访问,可以不通过CPU而在DMA控制转载 2014-09-03 15:10:16 · 750 阅读 · 0 评论 -
Linux中的platform
总线设备驱动模型主要包含总线、设备、驱动三个部分,总线可以是一条真实存在的总线,例如USB、I2C等典型的设备。但是对于一些设备(内部的设备)可能没有现成的总线。Linux 2.6内核中引入了总线设备驱动模型。总线设备驱动模型与之前的三类驱动(字符、块设备、网络设备)没有必然的联系。设备只是搭载到了总线中。在linux内核中假设存在一条虚拟总线,称之为platform总线。platform总线相比转载 2014-09-01 20:20:31 · 441 阅读 · 0 评论 -
linux中断处理原理分析
本文乃fireaxe原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证。作者:fireaxe_hq@hotmail.com博客:fireaxe.blog.chinaunix.net转载 2014-08-30 01:21:41 · 471 阅读 · 0 评论 -
做嵌入式驱动的前途何在
做嵌入式驱动的前途何在做嵌入式linux驱动的前途何在?或者说,怎么才能做好这一行?我做嵌入式驱动开发已经一年多了,感觉没学到多少东西。从网络驱动到CAN驱动、从dataflash驱动到NAND/NOR FLASH驱动、从CF/IDE驱动到各种嵌入式文件系统、从LCD/VGA驱动到音频驱动、从IAR到ADS再到GCC、Ucos到linux、从I2C总线到SPI再到S转载 2014-08-29 23:00:25 · 1155 阅读 · 0 评论 -
Makefile的一个具体的实例
工程中的代码分别存放在add/add_int.c、add/add_float.c、add/add.h、sub/sub_int.c、sub/sub_float.c、sub/sub.h、main.c中。转载 2014-08-29 02:26:07 · 663 阅读 · 0 评论 -
SD Card 驱动流程分析
一、硬件接口电路 首先来看一下SD card的一个硬件应用电路,如下图所示:转载 2014-09-11 23:18:18 · 780 阅读 · 0 评论 -
Linux 设备驱动--- 自动创建设备文件
创建设备文件的方法 一是 mknod 手动创建, 二是 自动创建.基于 2.4 内核: 函数: 基于 2.6 内核: 从 Linux 2.6.13 开始, devfs 不复存在,udev 成为 devfs 的替代,相比 devfs , udev ( mdev ) 存在于应用层.转载 2014-09-10 21:54:13 · 554 阅读 · 0 评论 -
随想录(程序员和收入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 距离上一次写博客已经很长时间了,大约过了三个星期。这三个星期发生了很多事情,这中间也有我自己的思考积累,也有工作上的变故。总之,自己想了很多,也得到了很多。每到这个时候,毕业生朋友们都在寻找工作,而想换工作的朋友往往也在觊觎一份新的工作。此时此地,收入问题就被放在一个转载 2014-09-04 00:43:37 · 467 阅读 · 0 评论 -
U-boot--Makefile分析
主要参考韦东山的《嵌入式Linux应用开发完全手册》 如果要使用开发板 board/,就先执行“make_config”命令进行配置,然后执 行”make all“,就可以生成 如下3个文件:U-boot.bin:二进制可执行文件,它就是可以直接烧入ROM,NORFlash的文件u-Boot:ELF格式的可执行文件,U-Boot.srec:Motorla S-Rec转载 2014-09-04 01:22:53 · 443 阅读 · 0 评论 -
回调函数
在看LWIP时,见到用回调函数,再看某老外公司OPC源代码时,见到用回调函数。看我国内某些代码(我公司软件等)时没用到。于是,我对回调函数产生了很大的好奇。以前,我写VC程序时用到过回调函数,但是没有用C语言来使用。最近,看到国外大量的经典代码中广泛使用了回调函数(LWIP、某两个公司的OPC程序等),都是C语言来实现的,而不是VC windows程序中别人实现自己使用的那种。为了弄明白这种函原创 2015-03-19 20:25:17 · 683 阅读 · 0 评论 -
windows下安装,配置gcc编译器
在Windows下使用gcc编译器:1.首先介绍下MinGWMinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。 实际上 MinGW 并不是一个 单纯的C/C++ 编译器,而是一套 GNU 工具集合。除开 GCC 以外,MinGW 还包含有一些其他的 GNU 程序开发工具 (比如转载 2015-02-11 11:04:37 · 933 阅读 · 0 评论 -
用VIM结合Keil(MDK)写STM32、C51等程序
话说这段时间经常用Keil写些东西,写C51的时候倒还好,写STM32的程序的时候,由于我是用的STM32的官方固件库,里面的各种标识符相当长- -看起来可读性是挺不错的,不过一个字母一个字母敲还是挺蛋疼的,于是准备用外部编辑器。好在Keil可以很方便的调用外部编辑器,具体方法是在Tool→Customize Tools Menu下面添加一个选项,名字随便输,最转载 2015-02-10 16:43:16 · 1042 阅读 · 0 评论 -
windows下gvim终于搞得跟ubuntu下差不多了
由于工作原因,我很多事情不得不在windows下完成。我在ubuntu下用vim用上瘾了之后,在windows下也装了个gVim,这样我的很多习惯都能统一了。但是gVim有几个问题挺恶心的,我现在记下来以后或许用得着。1、就是装了之后菜单栏的中文乱码。有一种方法是到安装目录里把中文的相关文件夹删了,只用英文菜单。后来我发现直接安装7.3.46这个版本,没有乱码的问题,用的挺转载 2015-02-06 10:02:28 · 607 阅读 · 0 评论 -
vim常用命令总结
vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下:v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。 V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。 Ctrl + v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v转载 2015-02-01 13:12:13 · 469 阅读 · 0 评论 -
Windows下gvim配置
Windows下gvim配置原作地:http://hi.baidu.com/leemoncc/blog/item/a6be15cf40d7ab31b600c806.html 0.准备软件及插件。 (a)gvim72.exe地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe。 (b)vimcdoc-1.7.0-setup.exe地http:/转载 2015-01-30 14:08:42 · 542 阅读 · 0 评论 -
30年老程序员的精华经验分享
在我30多年的程序员生涯里,我学到了不少有用的东西。下面是我这些年积累的经验精华。我常常想,如果以前能有人在这些经验上指点一二,我相信我现在会站得更高。 1.客户在接触到产品之后,才会真正明白自己的需求。 这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。转载 2014-10-13 08:56:08 · 879 阅读 · 0 评论 -
S3C2440驱动简析——串口驱动
对于驱动的学习停歇了几乎一周的时间,期间忙于补习Linux应用编程和搜索驱动、内核相关书籍,以便之后更进一步地学习。在之前友善提供的驱动例程里面,涉及的知识面非常有限,需要研究更多的驱动源码,了解更多的驱动知识,是当务之急。研究别人代码的同时,当然不忘自己也要动手练习。以下贴出串口驱动程序,并在程序里附上简要注释。 [c-sharp] view plaincop转载 2014-08-06 21:52:34 · 687 阅读 · 0 评论 -
Linux内核开发之中断与时钟(二)
“小涛哥,快醒醒,快醒醒..”小王使劲推着睡梦中的我,“你不是说今天要讲昨天有关的典型模板实例吗…”“啊?小姐啊,现在才早上8点,还让人睡觉不,别吵”我一头钻进被子里说。“不管,谁让你昨天不说完,还卖个小关子,害我昨天晚上都没睡好,想了一晚上…”我揉揉蒙蒙的眼说:“行,权当看在你渴求的心情上,但只此一次,下不为例,我还想好好睡懒觉呢..”昨天我们讲了有关中断方面的东转载 2014-06-04 17:45:39 · 429 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(二)
“曾经有一份真挚的爱情摆在面前,我却不懂珍惜;曾经有一个承诺,我却倍感珍惜,今天一定要好好讲讲..”讲讲啥,讲讲上节说的那个异步通知的例子呗,大家喜欢看代码,咋们就先上代码:struct globalfifo_dev {转载 2014-06-04 17:42:16 · 567 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(一)
“小王,听说过锦上添花吧..”我拍拍下王的头说。“还锦上添花你,为你上次提的几个东东,我是头上长包..”小王气愤地瞪着我。“啊,为啥这样呢,本来还特意拒绝了MM的月份,抽出时间打算给你说点高级的东东,看来现在是不行了”我吃惊道,“这样吧,这次就给你讲些和前边有关的东西,也不失为锦上添花不是?”。“好,我也是这么打算的,就是没好意思说,今天讲些啥呢?”小王暗淡的眼光总算闪了闪转载 2014-06-04 17:14:11 · 598 阅读 · 0 评论 -
Linux内核开发之阻塞非阻塞IO----轮询操作
“小王,来聊聊,今天面试的情况怎么样,应该挺顺利的吧..”看着小王平淡的眉头,我问道。“唉,别提了,你说,我的运气咋这差呢,面试前你不是给我讲了有关阻塞的问题吗,我见了面试官是吧,还跟他好好的用今天排队的例子说了有关阻塞的问题,但是..”小王哀声叹气地说到。“别但是了,怎么啦..”“可问题是面试官压根就没打算问我有关阻塞的问题及解决方案,但是问我说:这样吧,你给我说说在Li转载 2014-06-04 17:11:50 · 488 阅读 · 0 评论 -
Linux内核开发之阻塞/非阻塞IO----等待对列
十一过后..小王也刚好即将大学毕业,现在要开始写简历,投简历,找工作了。到了家工作单位,小王欣喜若狂,可再一看,心都凉了半截..“咋了,小王,看你找工作,我都来了帮你大气,怕什么,不就人多点吗..”看着排到电梯口的长龙,我说(其实,我心里也害怕,可也不能说出来不是)。“不是,你不知道,我并不怕面试上有问题,有你在,技术上还是问题吗,不相信自己还不相信你啊,我主要是怕转载 2014-06-04 16:53:33 · 585 阅读 · 0 评论 -
Linux内核开发之并发控制(实例总结篇)
"小王,小王,别睡了,瞧你,咋还睡着了呢…"我催促他说."现在是公元前还是公元后啊,我的MM等急了没.."呵呵,看他一脸傻笑。提醒各位路过的MM,如果没有男友的,可以联系小王,电话:拐拐拐。“什么,我的,呵呵,没办法,谁让我这有才呢..”算算前边有关并发控制的有关内容,都到五了,一连来了十一招,今天也不好意思再卖官子了,做一个最后的实例总结篇,下一节,就要开始新的内容了哦,转载 2014-06-04 16:45:23 · 479 阅读 · 0 评论 -
Linux内核开发之并发控制(五)
"小涛,还有多少啊,你看我本来就开玩笑似的说说火车票,飞机票的事,看MM的事,你在眉飞色舞,鸡飞狗跳的没完了呢…”"啊?怎么这样呢,本来一个寝室,做人的差别就那么大嗫,平时不好好学习,有问题了问我,给你免费教学,还满腹牢骚,也太不够朋友了吧…."我锤着桌子说."朋友,我还不够朋友啊,你没听说吗:朋友为我,两肋插刀,我为朋友,插它两刀..“小王打断我,”听你念经似的,都三个小时了,你转载 2014-06-04 16:44:31 · 458 阅读 · 0 评论 -
Linux内核开发之并发控制(四)
出招表七:信号量(信号量其实和自旋锁是一样的,就是有一点不同:当获取不到信号量时,进程不会原地打转而是进入休眠等待状态)Linux系统中与信号量相关的操作主要有一下4种:1)定义信号量 struct semaphore sem;2)初始化信号量 void sema_init (struct semphore *sem, int val); //设置s转载 2014-06-04 16:27:49 · 483 阅读 · 0 评论 -
Linux内核开发之并发控制(二)
上集说到哪儿了呢?瞧这记性,什么?说到"天要下雨,娘要嫁人"那段。。这是谁在答话,废话,我当然知道讲到这里了,我是说驱动讲到哪里了。算了,不管了..话说Linux开源社区的开发者们做了什么工作呢,很简单:利用spin_lock()/spin_unlock()作为自旋锁的基础,将它们和关中断local_irq_disable()/开中断local_irq_enable(),关转载 2014-06-04 15:46:12 · 471 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(四)
“小王,接着昨天的来,你知道吗?在异步IO中,什么可以用来做为AIO的通知呢?”我用渴求的眼神望着她."啊?那我咋知道,你说的我能记住就不错了,让我发明创造,我可是不会."小王委屈道。“笨死了,我前边花了那么多的时间来讲信号之类的东西,联想一下信号作为异步通知的信号,也想的出来啊,告诉你,我当年用脚肢头都能想到,可你..真让我失望”我叹气到,“算了,也不怪你了,咱们开始继续学习吧“转载 2014-06-04 17:43:28 · 474 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(五)
“小王呢,今天开始讲AIO与设备驱动,这也是设备驱动通知与异步IO的最后一节了,下次咱们就要开始讲更高级的东西,比如中断啦,时钟等” 在Linux内核中,每个IO请求都对应一个kiocb结构体,其ki_filp成员指向对应的file指针,通过is_sync_kiocb可以判断某Kiocb时候为同步IO请求,如果非真,表示是异步IO请求。 块设备和网络设备本身就是异步的。只有字符转载 2014-06-04 17:43:57 · 582 阅读 · 0 评论 -
Linux内核开发之异步通知与异步I/O(三)
小王,听说过AIO没?外国人,就这样,总是爱简写,简写的结果是咱们都不认识了。所谓AIO就是Asynchronous Input/Output异步输入/输出,基本思想是允许进程发起很多的I/O操作,而不用阻塞或等待任何操作的完成,稍后或在接收到I/O操作完成的通知时,进程就可以检索I/O操作的结果。“得得,你咋又跟我上起课来了呢,不是说好,今天CS吗?是不是跟我讲课特自信啊“小王抱怨到。转载 2014-06-04 17:42:59 · 435 阅读 · 0 评论 -
Linux内核开发之并发控制(三)
算了,既然给你那么多秘籍了,也不在乎这剩下的两三招:出招表五:顺序锁(seqlock)使用顺序锁,读执行单元绝不会被写执行单元阻塞,同时写执行单元也不需要等待所有读执行单元完成读操作后才进行写操作。但是写执行单元之间仍然是互斥的。如果读执行单元在读操作期间,写执行单元已经发生了操作,那么,读执行单元必须重新读取数据,以便确保得到的数据是完整的。致命弱点:顺序锁有一个限制,就转载 2014-06-04 16:04:10 · 415 阅读 · 0 评论 -
Linux内核开发之并发控制(一)
“小涛,你说十一黄金周,火车站,飞机场那些售票系统咋没一个宕掉的呢。你不宕掉也没关系,来两个卖错票的,说不定哥就去上海看世博,去北京看青梅竹马的表妹了…”小王抱怨道。“晕死..哥鄙视你,你说都老大不小的人了,怎么脑子里天天都是MM之类的事了,能不能有点男子气概啊..”。“靠,能跟你比啊,你是饱汉不知饿汉饥,要是像你一样十一和…” "嗯,啊,哼哼.."没等他说完,我赶忙塞了转载 2014-06-04 15:38:53 · 524 阅读 · 0 评论 -
Linux内核开发之简单字符设备驱动(上)
废话少说,先来介绍几个必须要知道的和字符设备有关的结构体,然后结合代码详细讲解。第一部分 必要的设备结构体1)linux 2.6内核中使用cdev结构体表示字符设备:struct cdev{ struct kobject kobj;//内嵌的kobject对象 struct module *owner;//所属模块 struct file_operations *转载 2014-06-04 15:27:55 · 756 阅读 · 0 评论 -
Linux内核开发之Helloworld
学了那么多程序语言,总是有一个Hello world开头,不禁感叹Hello world的强大。呵呵,废话少说,咋们的故事当然要从这个Hello world开始。(1)linux开源当然少不了源代码的贡献,请看下边(至于什么是开源,悲剧的我现在也没整明白):#include #include MODULE_LICENSE("Dual BSD/GPL");static转载 2014-06-04 15:25:53 · 551 阅读 · 0 评论 -
Linux内核开发之中断与时钟(四)
“小王,小王,今天可是这一章节最后一节了,知识点咱们前边都讲过了,今天主要是给你用前边的东西讲一个实际例子---秒字符设备驱动程序” 这个驱动程序会在被打开的时候初始化一个定时器并将其添加到内核定时器链表中,每秒输出一次当前的jiffies,这意味着,定时器处理函数中每次都要修改新的expires。不多说了,看代码分析:#include …//必要的系统头文件#define SE转载 2014-06-04 17:47:09 · 450 阅读 · 0 评论 -
Linux内核开发之中断与时钟(三)
晚上7点10分..“小涛哥,这章不是叫Linux设备驱动程序之中断与时钟,前边你讲了中断,还给了我很多模版,我都看懂了,这次是不是要开始讲时钟了..”“真聪明,越来越喜欢你这聪明的样子了,说的不错,今天就要开始一个新的模块--内核时钟”我很少夸人,为啥今天夸她呢了,呵呵. 定时器,意思大家都明白,我就不说了,要是不明白,把它想成个闹钟总可以吧.. 定时器分为硬件转载 2014-06-04 17:46:13 · 413 阅读 · 0 评论 -
Linux内核开发之中断与时钟(一)
“小王,醒醒,开始上课了,今天咱们开始讲中断,这可是高级东西,错过不补哈”我使劲推着睡梦中的小王。“嗯?感情好啊,快点,快点”小王一听有新东西讲,像打了鸡血似的兴奋,连我都怀疑起她是不是性格中喜新厌旧。不管那么多了,我讲我的,她厌她的… 啥叫中断?就是指cpu在执行过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU有返回原程序被中转载 2014-06-04 17:45:02 · 516 阅读 · 0 评论 -
Linux内核开发之简单字符设备驱动(下)
在上一篇中,我们介绍了有关简单字符设备驱动中那些简单但又必须要掌握的结构体和一些源码中核心的操作函数,这一节我们继续介绍有关源码部分的后续相关内容及测试使用的方法(在本文中同时也会给出完整的Makefile文件,方便大家调试)。static const struct file_operations globalmem_fops ={ //这些就是上篇中所实现的所有操作该字符设备的函数接口转载 2014-06-04 15:30:04 · 684 阅读 · 0 评论