嵌入式linux内核驱动和文件系统
reille
新能源充电桩开发,电子/科技爱好者
展开
-
Linux设备模型之platform总线
Linux Platform Device and Driver 作者:Dongas 日期:08-06-27 从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux pl转载 2008-10-25 16:18:00 · 1529 阅读 · 0 评论 -
linux内核不能正常启动
现场一产品出现内核不能正常启动问题原创 2011-01-26 09:54:00 · 2976 阅读 · 0 评论 -
AT91SAM9260上的linux CAN即MCP2515驱动移植
由于项目需要用到CAN总线,因此,在AT91SAM9260平台linux上移植了CAN驱动。CAN控制器选用SPI接口通讯的MCP2515。原创 2011-03-02 09:40:00 · 5100 阅读 · 23 评论 -
Linux内核中常见内存分配函数
Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表转载 2011-03-11 09:06:00 · 1344 阅读 · 0 评论 -
内核启动时,设备及驱动初始化的实现
内核启动时,设备及驱动初始化的实现转载 2011-03-13 21:59:00 · 1150 阅读 · 0 评论 -
linux 内存文件系统
在Linux中可以将一部分内存当作分区来使用,我们称之为RamDisk。对于一些经常被访问的文件,而它们又不会被更改,可以将它们通过RamDisk放在内存中,即可明显地提高系统的性能。当然你的内存可要足够大了。RamDisk有两种,一种可以格式化,加载,在Linux内核2.0/2.2就已经支持,其不足之处是大小固定。另一种是内核2.4才支持的,通过Ramfs或者tmpfs来实现,它们不能被格式化,但是用起来灵活,其大小随所需要的空间而增加或减少。这里主要介绍一下Ramfs和Tmpfs。转载 2011-05-10 17:45:00 · 6013 阅读 · 0 评论 -
面对不断升级的内核如何学习linux设备驱动
面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发职员和linux设备驱动开发职员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性、搭建新环境是一项非常繁琐的事情。本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。转载 2011-03-22 15:03:00 · 1143 阅读 · 0 评论 -
OSI七层网络模型与TCP/IP四层网络模型
OSI七层网络模型与TCP/IP四层网络模型转载 2011-03-31 21:47:00 · 2743 阅读 · 0 评论 -
内核宏ALIGN的含义
内核宏ALIGN的含义原创 2011-04-17 14:15:00 · 13444 阅读 · 5 评论 -
[gcc核心扩展]关于gcc中的typeof以及其他东东
GNC CC是一个功能非常强大的跨平台C编译器,它对C 语言提供了很多扩展 ,这些扩展 对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把支持GNU 扩展 的C 语言称为GNU C。 Linux 内核代码使用了大量的 GNU C 扩展 ,以至于能够编译 Linux 内核的唯一编译器是 GNU CC,以前甚至出现过编译 Linux 内核要使用特殊的 GNU CC 版本的情况。本文是对 Linux 内核使用的 GNU C 扩展 的一个汇总,希望当你读内核源码遇到不理解的语法和语义时,能从转载 2011-04-17 14:59:00 · 1634 阅读 · 0 评论 -
移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###8. u-boot引导启动nand flash中内核和根文件系统cramfs和用户文件系统yaffs2支持
作者:reille本博客网址:http://blog.csdn.net/reille/开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板交叉编译器:arm-linux-gcc4.3.2(一开始用原创 2011-07-09 21:59:05 · 14238 阅读 · 2 评论 -
从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响—linux2.4单独编译驱动模块
简介: 从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可转载 2011-09-07 22:15:08 · 1627 阅读 · 0 评论 -
linux2.6.30内核移植到S3C2440——CS8900网卡移植
作者:reille本博客网址:http://blog.csdn.net/reille/开发环境:主机:Window XP SP2;linux:VMware7.01+ubuntu9.10;目标板:扬创utu2440-F开发板交叉编译器:arm-linux-3.4.1更多请关注:http://velep.com/一、说明:本CS8900网卡驱动移植是基于之前内核版本的,实际原创 2011-06-06 14:20:00 · 16123 阅读 · 4 评论 -
基于MCP2515的多路CAN总线接口及驱动程序设计
结合实际需求,提出一种多路CAN总线接口的设计方法。系统硬件主体采用AT91RM9200和MCP2515,操作系统采用ARMLinux。详细介绍硬件的接口设计,针对该硬件接口设计分析ARMLinux下的驱动程序的设计方法,并对驱动程序实现过程中需要注意的问题进行了深入分析。经过测试,该设计方案可以满足应用的要求。转载 2011-01-20 10:05:00 · 5910 阅读 · 0 评论 -
IS_ERR()宏是什么意思
IS_ERR()有一些妙处。内核中的函数常常返回指针,问题是如果出错,也希望能够通过返回的指针体现出来。所幸的是,内核返回的指针一般是指向页面的边界(4K边界)转载 2010-09-04 15:26:00 · 8728 阅读 · 0 评论 -
asla架构和alsa-lib音频库的移植
alsa 是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性. 旧的oss是采用标准文件IO接口,设备打开采用open,声音播录是采用数据IO接口(read/write),设备的参数采用ioctl来控制.都是系统调用因此无需额外库和配置文件来操作设备.但alsa也是最终采用open/read/write/ioctl,但操作结点更多.更复杂.因此在编程中是采用额外的库来操作的.转载 2010-08-28 14:32:00 · 20874 阅读 · 0 评论 -
内核启动时,设备及驱动初始化的实现
Uboot完成系统的引导并将Linux内核拷贝到内存之后,bootm -> do_bootm_linux()跳转到kernel的起始位置; 压缩过的kernel入口在arch/arm/boot/compressed/head.S,它将调用函数decompress_kernel()解压,打印“Uncompressing Linux...”,调用gunzip(),打印"done, boot转载 2008-11-01 18:39:00 · 1143 阅读 · 0 评论 -
u-boot中mkimage工具的具体使用
通常,u-boot为kernel提供一些kernel无法知道的信息,比如ramdisk在RAM中的地址。Kernel也必须为U-boot提供必要的信息,如通过mkimage这个工具(在u-boot代码的tools目录中)可以给zImage添加一个header,也就是使得通常编译的内核zImage添加一个数据头,把添加头后的image通常叫uImage,uImage是可以被U-boot直接引导的内核转载 2010-03-07 22:40:00 · 1481 阅读 · 0 评论 -
制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
一、什么是文件系统 (Filesystem);A directory structure contained within a disk drive or disk area. The total available disk space can be composed of one or more filesystems. A filesystem must be mounted before转载 2010-03-08 21:31:00 · 1350 阅读 · 0 评论 -
uboot 详细注释讲解
<br />声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出。再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处。我的目的是想让大家共同进步。希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善。以后还会把整理的东西陆续公布出来,谢谢光临!!<br /> <br /> <br /> <br />大转载 2010-07-12 14:32:00 · 1282 阅读 · 0 评论 -
uboot 详细注释讲解
<br />声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出。再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处。我的目的是想让大家共同进步。希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善。以后还会把整理的东西陆续公布出来,谢谢光临!!<br /> <br /> <br /> <br />大转载 2010-07-12 14:30:00 · 944 阅读 · 0 评论 -
uboot 详细注释讲解
<br />声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分可能还没解释清楚,如果您觉得有必要注释,希望指出。再次强调该贴的大部分功劳应该归功于那些原创者,由于粗心,我没有留意参考的出处。我的目的是想让大家共同进步。希望大家念在我微不足道的心意,能够积极回馈,以便使帖子更加完善。以后还会把整理的东西陆续公布出来,谢谢光临!!<br /> <br /> <br /> <br />大转载 2010-07-12 14:29:00 · 1075 阅读 · 0 评论 -
内核读写nand flash驱动分析(含注释)
内核读写nand flash驱动分析(含注释)转载 2010-07-14 11:40:00 · 5123 阅读 · 1 评论 -
_IO, _IOR, _IOW, _IOWR 宏的用法与解析
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit15 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内存大小。bit20~bit08 8位为 “魔数"(也称为"幻数")区,这个值用以与其它设备驱动程序转载 2010-07-20 10:28:00 · 1904 阅读 · 0 评论 -
linux-2.6.27移植到AT91SAM9260平台终端之(01)_9260的存储空间分配及其启动方式
由于公司终端产品的平台由三星的2440换到9260上(可能是由于9260更适合于工业场合上),考虑到后续项目也可能采用此平台,为与时俱进,因此利用闲时间也来学习学习这个平台! 按照惯例,先了解下9260的存储空间分配及其启动方式: 1. 9260的总线为32bit,因此其存储空间共有4G,一共分成16个bank,每个原创 2010-05-29 11:31:00 · 2956 阅读 · 0 评论 -
linux-2.6.27移植到AT91SAM9260平台终端之(02)_内核移植准备工作
了解了9260的一些基本知识后,接下就是为移植内核到终端做一些准备工作。 工作环境:XP + 虚拟机ubuntu9.10; 内核版本:linux-2.6.27+最新补丁(http://www.at91.com/linux4sam/bin/view/Linux4SAM/LinuxKernel); 编译器 :ar原创 2010-05-29 17:09:00 · 3222 阅读 · 3 评论 -
构建根文件系统的/dev目录
在嵌入式ARM开发中,用busybox制作根文件系统时,其中必须构建的一个目录就是/dev目录。这个目录对所有的用户都十分重要,因为在这个目录中包含了所有Linux系统中使用到的外部设备,即所有的设备节点。原创 2010-06-23 11:47:00 · 7435 阅读 · 0 评论 -
Linux加速启动,启动时间的极限优化
在上次完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要 7s 左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s 以内。况且,在实际的商用环境中,设备可靠性的要求可是“5个9”(99.999%,即OOS时间低于5分钟/年),这就意味着每减少一秒钟Linux启动(设备复位)时间,对可靠性都是一个明显的提升。转载 2010-06-25 15:33:00 · 11695 阅读 · 1 评论 -
高手进阶必读:Linux内核的同步机制(API函数)
本文详细的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例转载 2010-08-26 10:49:00 · 1450 阅读 · 0 评论 -
module_init和init_module的区别
今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的加载函数。那么,module_init()和init_module()这两个加载函数有什么区别吗?init_module是默认的模块的入口,如果你想指定其他的函数作为模块的入口就需要modul原创 2011-04-08 22:45:00 · 8723 阅读 · 0 评论