![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式linux
文章平均质量分 74
jarvis_xian
这个作者很懒,什么都没留下…
展开
-
mini2440驱动学习————序
<br /> 从今年4月份中下旬以来,一直在熟悉驱动,查阅了相关的书籍,现在总算把简单的字符驱动了解个大概。熟悉了驱动程序的结构、框架,这使我阅读驱动程序的速度大大的加快。万事起头难,我是边看《LINUX设备驱动程序》等等书籍,边看友善提供的驱动程序和上层测试程序,再结合板子来验证。说来实在惭愧,自己只写过最最简单的hello 、 led 等驱动,修改友善的key驱动,实现自己的控制。<br /> 现阶段先把友善提供的驱动先啃好啃完,之后再尝试自己编写驱动程序,这个系列的博客就是供我记录原创 2011-05-13 10:06:00 · 822 阅读 · 0 评论 -
mmap内存映射操作之一
我们在驱动的代码当中,经常需要把硬件地址映射到虚拟内存上面去,这就是我们需要学习mmap的原因所在了!正所谓磨刀不误砍柴工,让我们静下心来学习一下这个十分有用的工具吧。 prototype : void *mmap(void *start, size_t length, int prot, int flags, in原创 2011-06-09 00:09:00 · 1297 阅读 · 0 评论 -
mmap内存映射操作之二
这次我们来讲述mmap较为具体一点的实现细节。 mmap设备方法是file_operations结构的成员,在Mmap系统调用发出时被调用。在此之前,内核已经完成了很多工作。mmap设备方法所需要做的就是建立虚拟地址到物理地址的页表。 prototype : int (*mmap)(struct file *, struct vm_area_struct *);paramete原创 2011-06-09 15:16:00 · 1198 阅读 · 0 评论 -
S3C2440驱动简析——DM9000网卡驱动(1)
继续分析内核自带的驱动源码,这次目标直指DM9000网卡驱动,2000行的驱动代码~~我们不能被表象所吓倒(虽然比起之前的驱动难度的确更大),根据之前掌握的知识和对网卡硬件的学习,我们还是要有信心去征服它的! 下面先给出整个驱动程序的大致框架,以理清我们凌乱的思绪。 由上图可见,本驱动采取虚拟平台总线驱动,在dm9000_driver驱动下有三个分支,其中.d原创 2011-06-10 23:47:00 · 3311 阅读 · 1 评论 -
S3C2440驱动简析——DM9000网卡驱动(3)
书接上回,在介绍dm9000_driver三条支线中的两条.driver 和.remove之后,接下来的两篇博文主要介绍.probe。不是吧,前面说什么还有朋友不知所云?请先看回本系列第一篇博文,熟悉这个网卡驱动程序的构成框架再说。(http://blog.csdn.net/jarvis_xian/archive/2011/06/10/6537446.aspx) 先贴出.prob原创 2011-06-13 22:05:00 · 2061 阅读 · 0 评论 -
S3C2440驱动简析——DM9000网卡驱动(2)
经过本系列第一篇博文对DM9000网卡驱动的框架解释之后,接下来就应该按模块来分析这个对新手来说的“庞然大物”了。本文先解释.driver 和.remove 这两条分支吧。什么?不知道那两个东东是干什么用的?请先看小弟这系列的第一篇博文吧(http://blog.csdn.net/jarvis_xian/archive/2011/06/10/6537446.aspx)。 在介绍那原创 2011-06-12 20:39:00 · 2396 阅读 · 0 评论 -
S3C2440驱动简析——DM9000网卡驱动(4)
本文我们主要来分析.probe的第一个操作函数组dm9000_netdev_ops(一个结构体),贴出该结构体代码如下static const struct net_device_ops dm9000_netdev_ops = { .ndo_open = dm9000_open, .ndo_stop = dm9000_stop, .ndo_start_xmit =原创 2011-06-15 00:07:00 · 2781 阅读 · 0 评论 -
S3C2440驱动简析——DM9000网卡驱动(5)
本文是DM9000网卡驱动的最后一篇,具体分析dm9000_ethtool_ops里所实现的工作。为了支持ethtool,其中的函数主要是用于查询和设置网卡参数(当然也有的驱动程序可能不支持ethtool)。 static const struct ethtool_ops dm9000_ethtool_ops = { .get_drvinfo = dm9000_get_dr原创 2011-06-15 22:09:00 · 3485 阅读 · 2 评论 -
input子系统
在介绍触摸屏驱动之前,先来认识一下这个input子系统。在学习触摸屏之前,我几乎完全没有听说过input子系统这个概念,现在就让我们一起来揭开它神秘的面纱吧。 在我们的Linux系统中,按键、触摸屏、鼠标等输入型设备都可以利用input接口函数来实现设备驱动。 一.系统架构 左边部分是我们驱动工程师应该完成的部分,而input core 和handl原创 2011-06-17 21:11:00 · 2093 阅读 · 0 评论 -
S3C2440驱动简析——触摸屏驱动
因困于杂事,博客荒废将近半个月,此时此刻重提笔墨,继续记录鄙人学习之历程。 本文将简要分析2440的触摸屏驱动,其驱动程序内核自带。在浏览本文之前,如果对Linux 驱动的input 子系统没有认识的话,请先回头参考鄙人之前的博文《input子系统》ht原创 2011-07-05 14:53:12 · 1255 阅读 · 2 评论 -
Ubuntu10.04 下设定 TFTP 服务
今晚想重新配置好tftp 服务,找出以前的笔记(RHEL5 平台下的),发觉跟 Ubuntu 还是有点出入的。上网看了大家的配置步骤,自己糊里糊涂,绕了不少弯路,现在总算设置好了,把步骤记录于此,方便自己他日所需。 1、安装相关软件包sudo apt-get inst原创 2011-08-04 21:44:08 · 979 阅读 · 0 评论 -
Ubuntu10.04 下设定 NFS 服务
直接通过串口下载Linux内核映像,再用uboot 引导内核,不是很顺利,想转换一种方式,通过nfs 方式来把内核映像挂载到板子上。 1、#apt-get install nfs-kernel-server 2、配置/etc/exports #vim /etc/e原创 2011-09-09 21:19:25 · 1279 阅读 · 0 评论 -
S3C2440驱动简析——看门狗驱动
本文假设各位看官已经了解看门狗的工作原理,而且手上有2440的datasheet,可以随时查看看门狗相关的寄存器。我在这里仅仅专注于对驱动程序的分析,望见谅~ 借用网上的朋友☆&寒 烟☆的一幅描述看门狗驱动程序的结构框图,总结得还是相当到位的,这里妄自copy如下(如有冒犯原作者请立刻通知,立删并道歉),各位可以按照结构图来按图索骥,更好地掌握驱动程序里面稍稍复杂的关系。原创 2011-06-03 22:38:00 · 1138 阅读 · 0 评论 -
S3C2440驱动简析——I2C驱动(4)
说时迟,那时快,马上进入I2C驱动的最后一个小节了,在这个小节里,我们主要探讨i2c_algorithm 数据结构和i2c-core.c 的一些主要函数及其作用。有鉴于i2c-core.c 代码达2000行,所以本文仅对导出的函数(EXPORT_SYMBOL)进行简单注释,其它函数想必也是为前者服务的啦。好,马上进入正题:i2c_algorithm 结构体struct i2c_algorithm { int (*master_xfer)(struct i2c_adapter *adap, str原创 2011-05-30 22:13:00 · 2303 阅读 · 0 评论 -
S3C2440驱动简析——I2C驱动(2)
紧接上一篇博文的I2C主要数据结构的介绍,现在就让我们真正地进入I2C驱动的代码里面,领略一下这个稍微复杂点点的驱动。由于代码已经有一定长度,再也不能像之前那样整段copy,然后直接分析了。为了鄙人以后能够更好地翻阅自己的笔记,也为了比我更菜的小菜鸟考虑(应该没有的,呵呵),这次还是采取按照代码逻辑顺序,讲到哪,代码就贴到哪~ go go go~~~ 看到i2c-dev.c 600多行的驱动代码,对于一般初学者来说还是够呛的,不过没关系,咱们谨记看驱动程序,第一要务找到入口和出口!__in原创 2011-05-27 23:12:00 · 2556 阅读 · 0 评论 -
mini2440驱动学习第一课————HELLO WORLD
<br /> 按照国际惯例,先从hello world 讲起,目的是了解驱动模块的基本结构。贴上源码:<br /> <br />#i nclude <linux/kernel.h> <br />#i nclude <linux/module.h> <br /><br />static int __init hello_module_init(void) <br />{ <br /> printk("Hello, world !/n"); <br /> return 0; <br原创 2011-05-13 10:58:00 · 944 阅读 · 0 评论 -
mini2440驱动学习第二课————LED
<br />经过上一篇的hello world 驱动,熟悉了驱动程序大体的框架,这次第二课的驱动,轮到LED了!要注意它是怎么操作GPIO的,又是怎么和用户层(应用层)联系起来的。附上代码:<br /> <br />#include <linux/miscdevice.h><br />#include <linux/delay.h><br />#include <asm/irq.h><br />#include <mach/regs-gpio.h><br />#include <mach/hardware.原创 2011-05-13 11:58:00 · 1123 阅读 · 0 评论 -
mini2440驱动学习第三课————BUTTON
这一课是按键驱动,其中重点是linux内irq中断的注册以及使用方法和工作列表的用法。mini2440所用到的按键资源 按键 对应的IO寄存器 对应的中断引脚 K1 GPG0 EINT8 K2 GPG3 EINT11 K3 GPG5 EINT13 K4原创 2011-05-13 16:00:00 · 1644 阅读 · 0 评论 -
mini2440驱动学习第四课————ADC
很快就进入了第四课ADC驱动的学习了,经过前三课的学习,相信大家和我一样,对驱动程序有点感觉了吧,基于此,ADC的驱动我比较快地就掌握了其大体的框架,对于内部更多的细节,还有请诸位看官多多指教。原创 2011-05-13 22:56:00 · 1450 阅读 · 0 评论 -
mini2440驱动学习第五课————PWM
<br /> 转眼间,已到了mini2440厂家友善所提供驱动的最后一课——PWM。本驱动用定时器0产生PWM脉冲信号,GPB0管脚输出接蜂鸣器。贴出代码如下:<br /> <br />#include <linux/module.h><br />#include <linux/kernel.h><br />#include <linux/fs.h><br />#include <linux/init.h><br />#include <linux/delay.h><br />#include <li原创 2011-05-15 19:40:00 · 1713 阅读 · 1 评论 -
基于mini2440上的Linux驱动动态加载问题
<br /> 这两天在板子上加载模块的时候,遇到了各种问题,与我第一次加载模块时碰到的问题大同小异,故记录在博客,仅供查阅。<br /> <br /> 1.PC机和目标板内核版本不一致<br /> 问题提示:version magic '2.6.32.2 mod_unload modversions ARMv4 ' should be '2.6.32.2-FriendlyARM mod_unload ARMv4 '<br /> <br /> 准确来说,PC机上的内核所指的原创 2011-05-18 00:50:00 · 3051 阅读 · 0 评论 -
Linux驱动程序学习步骤经典收藏
<br /> 一直在学习驱动,对于下面这篇文章,本人觉得简洁明了,基本符合我们学习驱动的进度与过程,现转发到自己的博客,希望能与更多的朋友分享。<br /> <br /> <br />/**********************************************************/<br /><br />了解linux驱动程序技巧学习的方法很重要,学习linux操作系统时,你可能会遇到关于驱动方面的问题,这里将介绍学习linux驱动程序的方法,在这里拿出来和大家分享一下。<br转载 2011-05-22 18:57:00 · 1226 阅读 · 0 评论 -
嵌入式Linux操作系统学习规划
<br /> 此文大体上介绍了嵌入式linux的概况,内容并不拖沓,大部分都在建议学习的内容。其中我感觉linux系统本身和C语言两手都要抓,而且两手都要硬,至于更详细的介绍请看下文。<br /> <br />/************************************************************************************/<br />嵌入式Linux操作系统学习规划<br />ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开转载 2011-05-22 19:27:00 · 891 阅读 · 0 评论 -
S3C2440驱动简析——串口驱动
对于驱动的学习停歇了几乎一周的时间,期间忙于补习Linux应用编程和搜索驱动、内核相关书籍,以便之后更进一步地学习。在之前友善提供的驱动例程里面,涉及的知识面非常有限,需要研究更多的驱动源码,了解更多的驱动知识,是当务之急。研究别人代码的同时,当然不忘自己也要动手练习。以下贴出串口驱动程序,并在程序里附上简要注释。/* linux/drivers/serial/s3c2440.c * * Driver for Samsung S3C2440 and S3C2442 SoC onboard原创 2011-05-23 19:51:00 · 5266 阅读 · 0 评论 -
Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()
<br />来自: http://www.diybl.com/course/6_system/linux/Linuxjs/200871/129585.html<br />从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Platform_device 和 Platform_driver 。 <br /> Linux 中大部分的设备驱动,都可以使用这套机制 , 设备用 Platform_device 表示,驱动用 Platform_driver 进行注册。 <br /> <br />转载 2011-05-23 19:59:00 · 1818 阅读 · 0 评论 -
S3C2440驱动简析——I2C驱动(1)
这次来研究内核自带I2C驱动的代码,在深入代码之前,首先简单了解一下I2C核心数据结构的相互关系。由此来展开,也许能够对驱动代码有更好地理解。软件数据结构的设计、数据结构之间的关系就至少应该描述硬件物理连接的这种组织关系。Linux的i2c 框架中各个部分的关系如下图所示:内核中 i2c 相关代码可以分为三个层次:1. i2c 框架:i2c.h 和i2c-core.c 为i2c 框架的主体,提供了核心数据结构的定义、i2c 适配器驱动和设备驱动的注册、注销管理,i2c 通信方法上层的、与具体适配原创 2011-05-27 14:16:00 · 4136 阅读 · 0 评论 -
S3C2440驱动简析——I2C驱动(3)
书接上回,在讨论完i2c设备、i2c适配器等初始化和删除相应驱动的程序后,我们在这个小节把注意力放在file_operations里面的几个函数操作上,先贴上file_operations结构体代码,让我们先看看其包含了哪几个函数。static const struct file_operations i2cdev_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = i2cdev_read, .write原创 2011-05-28 22:25:00 · 3814 阅读 · 1 评论 -
ubuntu apt-get 时遇到waiting for headers ——解决方法
不知为何,当用到apt-get 时总是waiting for headers,上网搜寻了解决方法,在这里记录一下,方便自己,方便别人。 找到 /var/cache/apt/archives/partial 目录,进去之后删除里面的东东即可........原创 2011-09-21 11:20:53 · 27823 阅读 · 3 评论