Linux系统开发
文章平均质量分 71
jeffreyliu
这个作者很懒,什么都没留下…
展开
-
Linux内存初始化
注:本文中提及的ICE为一个使用Android2.1(Linux2.6.29)的项目。在进入复杂的内存初始化过程前,我们先看看初始化后的内存分配及映射图,以便有一个整体的印象。以此印象为轴,将各个小的过程、细节串起来达到最终对内存认识的融会贯通。图1-1描绘的是ICE平台划给Linux的464M内存初始化后的结果:图1-1:ICE初始化后的内存1.1获取内核参数内核初始化时如何转载 2012-03-07 12:11:12 · 694 阅读 · 0 评论 -
SD/MMC/SDIO 概念区分概要
SD (Secure Digital )与 MMC (Multimedia Card ) SD 是一种 flash memory card 的标准,也就是一般常见的 SD 记忆卡,而 MMC 则是较早的一种记忆卡标准,目前已经被 SD 标准所取代。在维基百科上有相当详细的 SD/MMC 规格说明:[http://zh.wikipedia.org/wiki/Secure_Digital ] 。转载 2012-04-05 10:28:51 · 560 阅读 · 0 评论 -
嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(一)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30转载 2012-04-05 12:23:44 · 905 阅读 · 0 评论 -
linux设备模型之uart驱动架构分析
一:前言接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点.在分析具体的serial驱动之前.有必要先分析uart驱动架构.uart是Universal Asynchronous Receiver and Transmitter的缩写.翻译成中文即为转载 2012-03-19 12:44:08 · 1851 阅读 · 0 评论 -
PAGE_ALIGN()
PAGE_ALIGN()将物理地址addr修整为页边界地址(页的上边界)#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) |------------|PAGE_ALGN(addr) | | |转载 2012-04-06 22:18:21 · 2176 阅读 · 0 评论 -
C/C++函数指针(typedef简化定义)
学习要点: 1,函数地址的一般定义和typedef简化定义; 2,函数地址的获取; 3,A函数地址作为B函数参数的传递; 函数存放在内存的代码区域内,它们同样有地址.如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针翻译 2012-04-15 16:13:43 · 688 阅读 · 0 评论 -
使uboot支持S3C6410的SD启动
这里使用的uboot并非uboot官方发布的uboot代码,而是为三星定制的一个uboot版本s3c-u-boot-1.1.6,其代码作者就包括了三星的程序员与denx的员工。这个版本支持SD启动,不过默认是nand启动,使它支持uboot需要做以下事情: 1、 虽然支持uboot启动,但是uboot代码里不叫SD启动方式,而是叫movinand启动方式,在incluede/configs转载 2012-04-15 16:26:25 · 443 阅读 · 0 评论 -
u-boot中.lds连接脚本文件的分析
对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { con转载 2012-04-15 16:51:24 · 455 阅读 · 0 评论 -
对行场、带宽很好解析的一文章
开学后搬到楼上的实验室,分到了一台机器,CPU:Intel® Pentium®III Coppermine™ 800MHz,内存 256MB PC133 SDRAM,显卡 nVidia® Vanta/Vanta LT 16MB,显示器 EMC M558-PXXM 15"(还不平),这机器虽然不咋的,不过也没什么,能用就行了。最让我感觉不爽的是,在 Linux 下显示器的刷新率最高只能到 6转载 2012-04-18 22:46:15 · 635 阅读 · 0 评论 -
Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
<!--@page {margin:2cm}pre {font-family:"Droid Sans Fallback"}p {margin-bottom:0.21cm}-->——本文深入地分析了framebuffer设备驱动的结构作者:JimShengWriting Linux LCD drivers Abstract 1 LCD Modul转载 2012-04-19 07:29:24 · 839 阅读 · 0 评论 -
屏参理解
Monitor的程序总的来说要比电视的简单很多,但在输出信号的控制方面却要比电视的复杂,原因是电视的方案中一般都会有帧存来做帧率转换,输入和输出不比Lock,因此输出的行,场信号的可控范围比较自由。而Monitor方案中一般没有帧存和帧率转换,只有Line Buffer,这也是为什么很多芯片在缩小时只能缩小到原来的一半,就是受Line Buffer大小的限制,Monitor的输出的场频转载 2012-04-18 22:41:58 · 3999 阅读 · 0 评论 -
Linux Framebuffer Driver writing HOWTO
James Simmons, jsimmons@edgeglobal.comv1.00, 9 October 1999This document describes how to support a framebuffer video card for Linux. It lists the supported video hardware, describes how to prog转载 2012-04-18 22:48:15 · 1363 阅读 · 0 评论 -
linux 内核库函数
当编写驱动程序时,一般情况下不能使用C标准库的函数。Linux内核也提供了与标准库函数功能相同的一些函数,但二者还是稍有差别。 类别函数名功能函数形成参数描述字符串转换simple_strtol把一个字符串转换为一个有符号长整数long simple_strt转载 2012-04-20 20:03:20 · 616 阅读 · 0 评论 -
linux /proc文件系统编程实例
/* *proc ipsec test */#include #include #include #include #include #include #include #define IPSEC_CONNTRACK "ipsec_conntrack"MODULE_AUTHOR("Qxl");MODULE_DESCRIPTION("Proc转载 2012-04-20 19:04:49 · 1007 阅读 · 0 评论 -
基于S3C2410的SD卡linux驱动工作原理
Linux MMC/SD/SDIO体系结构linux sd卡驱动分析 基于S3C2410的SD卡linux驱动工作原理 我在讲嵌入式Linux驱动开发班的时候,发现不少学员对SD卡驱动这块比较感兴趣,课下来找我探讨。而在很多技术论坛,也有不少人问这方面的问题,所以就想转载 2012-04-05 11:30:00 · 1068 阅读 · 0 评论 -
SD卡引脚 电路图及工作原理介绍
SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有转载 2012-04-05 10:28:18 · 1107 阅读 · 0 评论 -
Linux设备驱动之控制台驱动
一:前言 我们在之前分析过input子系统和tty设备驱动架构.今天需要将两者结合起来.看看linux中的控制台是怎么样实现的. 二:控制台驱动的初始化 之前在分析tty驱动架构的时候曾分析到.主设备为4,次设备为0的设备节点,即/dev/tty0为当前的控制终端. 有tty_init()中,有以下代码段: static int __init tty_init(voi转载 2012-03-19 12:50:40 · 630 阅读 · 0 评论 -
关于TCC89XX的时钟频率(参考Spec译文)
1.CKC1.1 概览CKC 时钟体系有8个主时钟源,它们分别是4个PLL,XIN(TCC8900上的XIN为12Mhz的晶振),XTIN,SATA_XI,HDMI_XI,其中的4个PLL还可以通过各自的分频器产生合适的分频时钟源,XIN和XTIN都可以产生分配时钟源,上述8个主时钟源和分频时钟源可以用作CPU时钟源、总线时钟源、以及各个外围组件的时钟源。在CKC块图中,安全时钟转转载 2012-03-24 19:58:52 · 1026 阅读 · 0 评论 -
linux serial构架分析及驱动开发(2)
上节介绍了serial驱动核心提供的重要数据结构,这一节将介绍serial核心提供给驱动开发的核心函数uart_register_driver向内核注册serial驱动(具体操作就是向内核注册一个tty_driver)以及uart_unregister_driver注销serial驱动。uart_add_one_port用于为串口驱动添加一个串口端口(在总线型设备驱动中,通常用于探测函数probe转载 2012-03-23 18:44:47 · 559 阅读 · 0 评论 -
linux serial构架分析及驱动开发(6)
这一节分析串口核心中对写操作的处理,从用户空间调用write系统调用开始,首先执行tty_write函数,在该函数中执行do_tty_write,将用户空间的数据复制到tty->write_buf中,然后调用线路规程中的写函数即write_chain,最后write_chain调用uart_write或uart_flush_chars,再调用专用port->ops中的数据将数据发射出去,具体的操作转载 2012-03-23 18:48:40 · 462 阅读 · 0 评论 -
dma_alloc_coherent vs. dma_alloc_writecombine
这两天在做 DMA 相关开发, 遇到一对分配 dma buffer 的函数,dma_alloc_coherent 与 dma_alloc_writecombine。 不知其区别。 google 一下也没有得到信息。只好自己看代码。 原来 dma_alloc_coherent 在 arm 平台上会禁止页表项中的 C (Cacheable) 域以及 B (Bufferable)域。而 dm转载 2012-03-24 12:47:36 · 713 阅读 · 0 评论 -
TCC8900中关于SD卡的注意事项
TCC8900具有8个SD卡接口(Port),其中它们与GPIO复用:----------------------------------------------------------------------------------------------------------------* GPIOB[0-7] = SD_Port5[0-7], GPIOB[12]=SD_CM转载 2012-03-24 20:00:08 · 1232 阅读 · 0 评论 -
Linux串口(serial、uart)驱动程序设计
一、核心数据结构http://www.cublog.cn/u3/109117/article.html串口驱动有3个核心数据结构,它们都定义在1、uart_driveruart_driver包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了tty_driver(底层串口驱动无需关心tty_driver)。struct uart_driver {转载 2012-03-23 18:15:18 · 883 阅读 · 0 评论 -
linux serial构架分析及驱动开发(1)
前面介绍了tty核心分析及tty驱动开发的方法,tty设备包括串口、终端、伪终端三大类,其中终端和伪终端驱动内核都帮我们实现好了,很少需要改动。因此我们主要介绍串口驱动的开发及其在内核中的构架(其核心实现源码主要在/drivers/serial_core.c中),这一节中我们主要分析向内核中加入一个serial驱动用到的数据结构。 serial core是构建在tty core之上的转载 2012-03-23 18:44:04 · 588 阅读 · 0 评论 -
linux serial构架分析及驱动开发(3)
这一节我们将介绍一个serial驱动的实例,后面各节中也将以这个例子来分析串口各种操作的实际情景(例子是at91sam9260板子的串口驱动)。 该驱动将串口看作平台(platform)设备。platform可以看作一伪总线,用于将集成于片上系统的轻量级设备与Linux设备驱动模型联系到一起,它包含以下两部分(有关platform的声明都在#include ,具体实现在drivers转载 2012-03-23 18:46:02 · 849 阅读 · 0 评论 -
linux serial构架分析及驱动开发(4)
在uart_register_driver函数中有这样的一个函数:tty_set_operations(normal,&uart_ops),这个uart_ops就是tty_operations函数集,这里是串口操作的公用函数接口,本节及后面章节将结合串口操作的流程,来介绍上面的操作函数。 static const struct tty_operations uart_ops = { .转载 2012-03-23 18:47:00 · 570 阅读 · 0 评论 -
linux 中解析命令行参数 (getopt_long用法)
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option转载 2012-03-31 17:23:01 · 443 阅读 · 0 评论 -
Linux下串口编程实例,实现0~255数据自环测试
#include /*标准输入输出定义*/#include /*标准函数库定义*/#include /*Unix 标准函数定义*/#include #include #include /*文件控制定义*/#include /*PPSIX 终端控制定义*/转载 2012-03-31 17:25:16 · 1110 阅读 · 0 评论 -
BITS_TO_LONGS宏的作用
[linux-3.0]BITS_TO_LONGS定义在:include/linux/bitops.h#define BITS_PER_BYTE 8#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))DIV_ROUND_UP定义在:include/linux/ker转载 2012-03-15 20:47:55 · 564 阅读 · 0 评论 -
嵌入式Linux之我行——S3C2440上MMC/SD卡驱动实例开发讲解(二)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4转载 2012-04-05 12:24:44 · 705 阅读 · 0 评论 -
Linux设备模型之tty驱动架构分析
一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文件同tty_core交互转载 2012-03-19 12:46:41 · 790 阅读 · 0 评论 -
内核中针对proc文件系统的编程函数总结
一、头文件: #include 二、创建与删除proc文件: 创建普通文件: 1.创建不可读写的普通文件 /*此函数只负责在proc中创建一个只读文件,即能在proc中看到这个文件。 * */ struct proc_dir_entry* create_proc_entry (转载 2012-04-20 19:05:16 · 591 阅读 · 0 评论