随笔分类 - 嵌入式
Linux、WinCE、QT、Bootloader、ARM、单片机、uC/OS-2、
摘要:I/O 接口电路也简称接口电路。它是主机和外围设备之间交换信息的连接部件(电路)。它在主机和外围设备之间的信息交换中起着桥梁和纽带作用。设置接口电路的必要性:a) 解决主机CPU 和外围设备之间的时序配合和通信联络问题。b) 解决CPU 和外围设备之间的数据格式转换和匹配问题。c) 解决CPU 的负载能力和外围设备端口选择问题。 I/O 接口的编址方式:① I/O 接口独立编址:这种编址方式是将存...
阅读全文
摘要:Linux设备驱动参考文章链接:详细文档下载链接:http://download.csdn.net/detail/klcf0220/6192643http://download.csdn.net/detail/klcf0220/6045007详细代码下载链接:http://download.csdn.net/detail/klcf0220/6192673
阅读全文
摘要:Linux网络设备驱动 Linux网络驱动程序的体系结构可划分为4个层次。Linux内核源代码中提供了网络设备接口及以网络子系统的上层的代码,移植特定网络硬件的驱动程序的主要工作就是完成设备驱动功能层的相应代码,根据底层具体的硬件特性,定义网络设备接口struct net_device类型的结构体变量,并实现其中相应的操作函数及中断处理程序。 Linux中所有的网络设备都抽象为一个统一的接口,即...
阅读全文
摘要:Rt3070无线网卡AP功能移植到GEC210一、平台开发板:GEC210 无线网卡:RT3070主机:VMWare--Ubuntu 10.04 LTS内核版本:linux-2.6.35.7编译器:arm-linux-gcc-4.5.1所需源码:2010_0203_RT3070_SoftAP_v2.4.0.1_DPA.bz2 、 linux-2.6.35.7-gec-v2.0.tar.bz2二、l...
阅读全文
摘要:移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5.1所需软件:boa-0.94.13.tar.gz下载:http://www.boa.org/boa-0.94.13.tar.gz第一部分 移植步骤BOA 服务程序编译1、设置好交叉编译工具链路径:...
阅读全文
摘要:块设备驱动程序.块设备和字符设备的区别1、读取数据的单元不同,块设备读写数据的基本单元是块,字符设备的基本单元是字节。2、块设备可以随机访问,字符设备只能顺序访问。 块设备的访问:当多个请求提交给块设备时,执行效率依赖于请求的顺序。如果所有的请求是同一个方向(如:写数据),执行效率是最大的。内核在调用块设备驱动程序例程处理请求之前,先收集I/O请求并将请求排序,然后,将连续扇区操作的多个请求进行合...
阅读全文
摘要:Linux设备模型组件:总线 一、定义:总线是不同IC器件之间相互通讯的通道;在计算机中,一个总线就是处理器与一个或多个不同外设之间的通讯通道;为了设备模型的目的,所有的设备都通过总线相互连接,甚至当它是一个内部的虚拟总线(如,platform总线);例如,设备模型表示在总线和它们控制的设备之间的实际连接;常见的总线有:PCI、ISA、EISA、VESA、USB、IIC、IIS、SPI、SCI、CAN、RS-232-C、RS-485、IEEE-488,等等;Linux设备模型中,一个总线由内核结构体struct bus_type描述;其结构定义如下:struct bus_type{const
阅读全文
摘要:linux提供了新的设备模型:总线(bus)、设备(device)、驱动(driver)。其中总线是处理器与设备之间通道,在设备模型中,所有的设备都通过总线相连;设备是对于一个设备的详细信息描述,驱动是设备的相关驱动。其基本关系如下:bus 相当于一个容器,是device 和device_driver 的管理机构,它包含了一个device 集合和一个driver 集合。其中,device集合包含了挂在该总线下的所有设备,这些设备通过链表链接起来;driver集合包含了挂在该总线下的所有驱动程序,这些驱动程序通过链表链接起来。sysfs文件系统:sysfs文件系统是Linux2.6内核引入的,它
阅读全文
摘要:在串口,uboot环境里面输入fastboot(1)先把uboot烧写 fastboot flash uboot u-boot.bin(2)先把kernel烧写 fastboot flash kernel zImage(3)先把system烧写 fastboot flash system system.img具体操作步骤见链接:http://download.csdn.net/detail/klcf0220/5842403
阅读全文
摘要:与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigned int irq,void (*handler)(int irq, void *dev_id, struct pt_regs *regs), unsigned long irqflags, cons...
阅读全文
摘要:最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~~第一阶段--获取中断号每个CPU都有响应中断的能力, 每个CPU响应中断时都走相同的流程. 这个流程就是内核提供的中断服务程序.在进入中断服务程序时, CPU已经自动禁止了本CPU上的中断响应, 因为CPU不能假定中断服务程序是可重入的.中断处理...
阅读全文
摘要:5种I/O模型的基本区别:阻塞式I/O非阻塞式I/OI/O复用信号异步模型异步I/O1. 阻塞 I/O最流行的I/O模型是阻塞I/O模型,缺省情形下,所有套接口都是阻塞的。我们以数据报套接口为例来讲解此模型(我们使用UDP而不是TCP作为例子的原因在于就UDP而言,数据准备好读取的概念比较简单:要么整个数据报已经收到,要么还没有。然而对于TCP来说,诸如套接口低潮标记等额外变量开始活动,导致这个概念变得复杂)。进程调用recvfrom,其系统调用直到数据报到达且被拷贝到应用进程的缓冲区中或者发生错误才返回,期间一直在等待。我们就说进程在从调用recvfrom开始到它返回的整段时间内是被阻塞的。
阅读全文
摘要:第一节 S5PV210 LCD控制器要使一块LCD正常显示文字或图像,不仅需要LCD驱动器,还需要相应的LCD控制器。LCD控制器的主要作用是将在系统存储器中的显示缓冲区中的LCD图像数据传送到外部LCD驱动器,并产生必要的控制信号,例如VSYNC、HSYSNC、VCLK。S5PV210内部集成了LCD控制器,它结构图如下: 主要有VSFR,VDMA,VPRCS,VTIME和视频时钟产生器几个模块组成:1) VSFR由121个可编程寄存器组,一套gamma LUT寄存器组(包括64个寄存器),一套i80命令寄存器组(包括12个寄存器)和5块256*32的调色板存储器组成,主要用于lcd控制器.
阅读全文
摘要:第一节 S5PV210的ADCS5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号。在5MHz的时钟下,最大转换速率是1MSPS。本章只是涉及到初步的ADC转换,并不会讲解触摸屏相关知识,其结构图如下: 在Mini210S中,adc相关的原理图如下: 通道0的输入被接到可调电阻上,通过调节可调电阻,adc能转换出不同的值。第二节 程序相关讲解完整代码见详细代码下载链接。1. main.cmain()函数很简单,主要是调用了adc_test()函数来测试adc,adc_test()的定义位于文件adc.c中。.
阅读全文
摘要:第一节 音频播放原理首先需要申明一下,本章的代码来自网络,参考了亚嵌教育李明老师(论坛ID:limingth)的帖子: http://www.arm9home.net/read.php?tid=20515&page=1#175657 S5PV210通过i2s和i2c与音频编解码芯片wm8960进行交互,其中i2s负责只传输声音数据,而i2c负责传输控制信息(如音量调节、静音等),wm8960负责编解码。要驱动wm8960,我们需要做三件事:(1)初始化i2s,(2)初始化i2c,(3)初始化wm8960。 Mini210S相关的原理图如下: 第二节 程序详细讲解完整代码见目录详细代码下
阅读全文
摘要:设备驱动分层结构示意图:字符设备驱动程序示意图:分配和释放设备编号必须先在中声明:1、 int register_chrdev_region(dev_t first, unsigned int count, char *name);这里, first 是你要分配的起始设备编号. first 的次编号部分常常是 0, 但是没有要求是那个效果. count 是你请求的连续设备编号的总数.最后, name 是应当连接到这个编号范围的设备的名字; 它会出现在 /proc/devices 和 sysfs 中.如同大部分内核函数, 如果分配成功进行, register_chrdev_region 的返回值
阅读全文
摘要:操作系统内核模块: Linux内核是整体式结构,各个子系统联系紧密,作为一个大程序在内核空间运行。 Linux内核模块体系结构: Linux内核引入内核模块机制。通过动态加载内核模块,使得在运行过程中扩展内核的功能。不需要的时候,卸载该内核模块。 Linux内核子系统 写内核程序需要注意: Hello模块 /*hello.c*/ #include#include#includes...
阅读全文
摘要:一、移植BusyBox1、下载BusyBox的源代码下载地址:http://www.busybox.net/downloads/,此处下载busybox-1.20.2.tar.bz2。2、解压并进入目录#tar -xvf busybox-1.20.2.tar.bz2#cd busybox-1.20.23、修改Makefile中的体系结构ARCH和交叉编译器前缀CROSS_COMPILE#VIM MakefileCROSS_COMPILE = arm-linux-ARCH = arm4、配置BusyBox#make menuconfig其他选项都是一些Linux基本命令选项,自己需要哪些命令就编
阅读全文
摘要:实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核 下面以Linux2.6.30.4内核移植到gec2440为例: 一、准备工作:建立工作目录,下载内核源码并解压:linux-2.6.30.4.tar.bz2。步骤如下:Mkdircd /root/build_kerneltar -xvf linux-2.6.30.4.tar.gz cd linu...
阅读全文
摘要:第一节 S5PV210的看门狗定时器S5PV210上的看门狗定时器相当于一个普通的16bit的定时器,它与PWM定时器的区别是看门狗定时器可以产生reset信号而PWM定时器不能,S5PV210看门狗定时器的结构图如下: 第二节 程序相关讲解完整代码见目录见详细代码下载链接。1. main.c共4个步骤:第一步 初始化串口;第二步 中断相关初始化;第三步 测试看门狗,调用函数wtd_test(),其定义位于wtd.c中;第四步 死循环,等待看门狗中断的发生;2. wtd.cwtd_test()的内容包括4个步骤:第一步 VIC相关的中断设置,包括设置WTD中断的处理函数为isr_wtd()和使
阅读全文