摘要:Linux在arch/$(ARCH)/kernel/vmlinux.lds中定义了.init段。__init和__initdata属性的数据都在这个段中,当内核启动完毕后,这个段中的内存会被释放掉供其他使用。__init和__initdata宏定义如下:/* include/linux/init.c */#define __init __attribute__ ((__section__ (".init.text")))#define __initdata __attribute__ ((__section__ (".init.data")))vmlin
阅读全文
03 2011 档案
摘要:首先我们由 kconfig 和 makefile 来获取 DMA 方面相关文件 ( 即源码 ): Arch/arm/plat-s3c24xx/Dma.c Arch/arm/mach-s3c2410/Dma.c 以上两个就是操作 DMA 的核心文件 . 我们会逐个的来分析 . 先看初始化函数 , 哪些是初始化函数呢 ? 就是哪些通过 module_init, core_initcall, arch_initcall 等声明的函数 . 首先在 arch\arm\mach-s3c2410\s3c2410.c 下有个初始化函数 . arch\arm\mach-s3c2410\s3c2410.c: st
阅读全文
摘要:1 C语言的inline函数本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translationunit(可以简单理解为C源码文件)内的编译行为,只要超出了这个范围inline属性就没有任何作用了。所以inline关键字不应该出现在函数声明中,没有任何作用不说,有时还可能造成编译错误(在包含了sys/com
阅读全文
摘要:本章比较了 Solaris 线程和 POSIX 线程的应用程序编程接口 (application programming interface, API),并介绍了 POSIX 线程中没有的 Solaris 功能。本章讨论以下主题:比较 Solaris 线程和 POSIX 线程的 API Solaris 线程的独有函数 相似的同步函数-读写锁 相似的 Solaris 线程函数 相似的同步函数-互斥锁 相似的同步函数:条件变量 相似的同步函数:信号 fork() 和 Solaris 线程的特殊问题 比较 Solaris 线程和 POSIX 线程的 APISolaris 线程 API 和 pthre
阅读全文
摘要:一、 S3c2440A的IIS总线接口可以连接外部8/16位立体声音频解码IC。支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式,代替中断模式。可以同时传送和接收数据。 1.0。功能:总线接口,寄存器组和状态机(BRFC):总线接口逻辑和FIFO访问由状态机控制。5位双预定标器、64位FIFO、主IISCLK发生器、通道发生器和状态机、15位移位寄存器。 1.1。传输模式:分为正常传输模式和DMA传输模式。1.2。IIS总线格式:IIS总线有4根信号线,分别是串行数据输入(IISDI)、串行数据输出(IISDO)、左右通道选择(IISLRCK)
阅读全文
摘要:逢山开路 遇水架桥,今天想自己写个adc的驱动,发现不清楚系统各个模块的系统时钟如何使用。总不能自己想怎么弄,就怎么弄吧,还是学学框架吧——使用时钟的框架。adc_clock = clk_get(NULL, "adc"); if (!adc_clock) { printk(KERN_ERR "failed to get adc clock source\n"); return -ENOENT; } clk_use(adc_clock); clk_enable(adc_clock);上面的这段代码是touchscreen的驱动中的一段,我不清楚,所以去学学
阅读全文
摘要:linux下request_mem_region的粗略理解文章来源:http://gliethttp.cublog.cn Linux把基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此它仍然可以用resource结构类型来描述。 Linux是以一种倒置的树形结构来管理每一类I/O资源(如:I/O端口、外设内存、DMA和IRQ)的。每一类I/O资源都对应有一颗倒置的资源树,树中的每一个节点都是一个resource结构,而树的根结点root则描述了该类资源的整个资源空间。1.结构体 1.1&g
阅读全文
摘要:共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2二、前提知识1、Linux输入子系统(Input Subsystem): 在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。其中设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层提交给事
阅读全文
摘要:面向过程设计中的static 1、静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1 #include <iostream.h> void fn(); static int n; //定义静态全局变量 void main() { n=20; cout<<n<<endl; fn(); } void fn() { n++; cout<<n<<endl; } 静态全局变量有以下特点: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被
阅读全文
摘要:IC卡又称集成电路卡,它是在大小和普通信用卡相同的塑料卡片上嵌置一个或多个集成电路构成的。集成电路芯片可以是存储器或向处理器。作为一种身份验证的工具,IC卡经常出现于各种电子设备中,作为一种身份的确认的工具。 下面以笔者参与的会议系统开发中的ICcard驱动程序为例,介绍linux系统下是如何进行IC card驱动程序开发的。 1、是ic_card.h文件:#ifndef IC_CARD#define IC_CARD#include <mach/regs-gpio.h>#include <linux/wait.h>#include <linux/ioctl.h&g
阅读全文
摘要:一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2二、相关概念1、平台设备:通常在Linux中,把SoC系统中集成的独立外设单元(如:I2C、IIS、RTC、看门狗等)都被当作平台设备来处理。在Linux中用platform_device结构体来描述一个平台设备,在2.6.30.4内核中定义在:include/linux/platform_device.h中,如下: struct platform_device {const char* name; //设备名称i
阅读全文
摘要:http://hbhuanggang.cublog.cn 嵌入式linux之我行http://blog.csdn.net/fudan_abc fudan_abc的Linux内核专栏 http://blog.chinaunix.net/space.php?uid=20543672
阅读全文