自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的嵌入式

有志者,事竟成!

  • 博客(43)
  • 资源 (7)
  • 收藏
  • 关注

转载 Linux支持U盘的一些内核选项

DEVICE DRIVERS---SCSI device support SCSI disk support SCSI generic support DEVICE DRIVERS---USB support OHCI HCD support USB Mass Storage support[*] USB Mass Storage Write-Protected M

2011-10-28 23:36:47 975

转载 s3c2440 外中断的按钮实现

根据TQ2440开发板的原理图,按键接的是S3C2440可用于外部中断的EINT0,1,2,4引脚,GPFCON可以设置这些引脚的功能。EXTINT0寄存器可以设置这四个引脚的中断产生的条件,需要注意的是EINT0~2都有自己的中断向量,而EINT4~7则共用一个中断向量。因此使用EINT4时还要在EINTMASK寄存器开相应中断允许位,进入EINT4中断后还要清EINTPEND寄存器的中

2011-10-28 23:35:30 744

原创 将数字转换为字符串

int ul_to_str(char *str,unsigned long num,int k) //功能:将数字转换为字符串,错误返回-1,正确返回1{     #define N 20    int arr[N];    int i,j;     for (i=0;i     {         arr[i]=num%k;         num=num/k;

2011-10-28 23:29:31 740

转载 linux C程序实现文件夹大小提取

在嵌入式linux系统中,经常要对一些实时数据进行存储,而在存储空间有限的情况下往往需要判断存储目录中的文件夹的大小,而通过C语言实现文件夹大小的获取在网上的程序可是少之又少,现提供一个程序,大家一起分享,分享,其实程序是提取文件夹下所有文件大小,提取运行程序文件夹下的文件的大小之和,但不包括文件夹目录下的文件夹的大小。具体程序如下:#include #include #inclu

2011-10-28 23:25:50 1165

转载 S3C2440裸奔触摸屏

S3C2440对于触摸屏的相关interface有以下几个模式: 1.普通转换模式,手册是这么说的:most likely used for General Purpose ADC Conversion.(不了解这个,所以用原文) 2.分开X/Y转换模式,就是分开来转换X位置和Y位置。X位置的信息会保存在ADCDAT0的低10位,而Y位置信息则保存在ADCDAT1的低10位。 3.自动

2011-10-28 23:22:39 631

转载 S3C2440读写NAND FLASH(大页)

K9F2G08U0A nand flash 的容量为256M byte,其内部有2048块,每块有64页,每页有2K+64字节,其中每页会分为main区(主域)和spare区(备用域),main区一般用来存入主要数据,spare一般用来存放ECC校验码。下面几点是编程时需要注意的: 1.NAND FLASH芯片手册里说的column是指页内地址,row是指页地址,page也是指

2011-10-28 23:21:45 1284

转载 s3c2440控制TFT LCD

TFT LCD的时序比较复杂,因此S3C2440涉及TFT LCD的寄存器比较多。只要认真对照好LCD的说明书设置好相应2440寄存器就行了。TFT LCD并不难,但是一个小地方设置错了都可能导致显示不正常,而且十分难找到出错的地方。   下面是编译会涉及到东西:  1.时序和显示模式配置LCDCON1~5。  2.显示缓存的地址配置LCDSADDR1~3。  3.如果是三星的

2011-10-28 23:00:15 784

转载 Uart_Printf()

Uart_Printf ()为常用的串口打印函数,其常用于满足特定条件时通过串口打印信息。很多开发者喜欢在中断服务程序中使用它,所以,仅仅包含一句Uart_Printf ()的中断服务程序,可以被认为是一个普遍而简单的应用。下面给出针对只包含一句Uart_Printf ()的中断服务程序进行测试的结果。 Uart_Printf()函数分析ARM与PC机通信,常通过Uart_Printf

2011-10-28 22:59:12 6687

转载 S3C2440 AD转换

S3C2440的AD转换跟触摸屏差不多,下面是关键代码,十分简单。 int get_ad(int ain)//读取AD的值{    rADCCON = (1    while( rADCCON&1 );//等待转换开始    while( !( rADCCON&(1        return (U32)(rADCDAT0&0x3ff);//返回结果}

2011-10-28 22:56:57 675

转载 S3C2440定时器的使用

#include "mytimer.h"#include "lhg_def.h"#include "uart.h"#include "lhg_def.h"#include "2440addr.h"//Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value}//PCLK=50Mhz

2011-10-28 22:55:46 470

转载 S3C2440 IIC读写AT24C02A

S3C2440读写AT24C02A只需要采用主机发送模式和主机接收模式即可,手册上提供有这两个模式的流程图,可以参考。 AT24C02A有几点需要注意的:1.AT24C02A连续读多个字节时最后一个字节不用产生应答信号。2.读的时候要先用写的方式写入硬件地址写方式和数据地址,此时不用发送STOP信号,接着继续写入硬件地址读方式,然后开始读数据。3.其写的方式只有单字节写或者页写

2011-10-28 22:54:39 493

转载 platform设备驱动全透析

1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,

2011-10-25 23:25:00 361

转载 mjpg-streamer源码分析

mjpg-streamer是一个很好的开源项目,用来做视频服务器,使用的是v4l2的接口。前面我们说了它的移植过程,但是在某些特定的情况下这个工程不能达到我们的需求,所以我们需要对源码进行修改,或者直接写一个自己的视频服务器。在修改源码或写自己的服务器之前我们分析下这个源码的代码。这个代码里有三个部分是我们需要掌握的内容,第一是v4l2接口,第二个是socket编程,第三个是多线程编程。一

2011-10-25 23:17:36 383

转载 zImage内核镜像解压过程详解

在华清远见教学过程中,发现很多学员对内核镜像解压过程比较感兴趣,但网上相关的文章往往不能把关键问题讲清楚,所以写了这篇文章。本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zIm

2011-10-20 20:13:46 425

转载 线程解析(四)

一、线程控制上一节我们讲了使用互斥量实现线程的同步,这里我们介绍一下另外一种常用的方法,POSIX提供的无名信号量sem,PV原语是对整数计数器信号量sem的操作,P操作判断sem资源数是否为0,不为0则进行P操作,一次P操作可使sem减一,而一次V操作可使sem加一。下面是POSIX提供的一些接口函数:1、信号量初始化        #include         int se

2011-10-20 20:12:06 337

转载 一个通用Makefile的编写

我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件。如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只需要执行一个make就OK了,这样大大提高了开发效率。但是Makefile的语法规则众多,而且缺乏参考资料,对于初学者来说,写起来还是有一定的难度,往往令很多人望而生畏。下面我

2011-10-20 20:08:33 323

转载 何时需要PIC

“PCI”其实是我们在编译动态库的命令行参数,我们用这个参数标记,告诉GCC产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道使用该消息代码的应用程序会将它连接到哪一段内存地址空间。这样编译出的*.o可以被用于建立共享链接库。建立共享链接库只需要用GCC的“-shared”标记即可。现实生活中不是每个程序代码都是从零开始,常常会复用别人写好的,成熟的代码,而这些代码就被封

2011-10-20 19:55:52 385

转载 C++什么时候使用纯虚函数

通常在实现一个接口的时候使用纯虚函数。接口一般就是一个抽象类。有时在基类中将某一成员函数定为虚函数,并不是基类本身的要求,而是考虑到派生类的需要,在基类中预留一个函数名,具体功能留给派生类根据需要去定义。例如,我们定义一个Point基类,Point类中没有求面积的area函数,因为点是没有面积的。但是在其直接派生类cricle和间接派生类cylinder中都需要有area函数,而且这两个are

2011-10-20 19:54:42 1953

转载 非阻塞式socket编程select()

Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方

2011-10-20 19:53:47 471

转载 分析Linux中Spinlock在ARM及X86平台上的实现

本文主要以2.6.22.6内核分析Linux中spinlock在ARM及X86平台上的实现(不同版本的内核实现形式会有一些差异,但原理大致相同)。此处默认大家已经熟悉了spinlock的使用,重点解释容易引起迷惑的体系结构相关的实现部分。一、spin_lock(lock)的实现 #if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLO

2011-10-20 19:52:32 460

转载 共享内存和信号

1.共享内存概述共享内存允许两个或更多进程共享一给定的存储区。因为数据不需要在各个进程之间复制,所以这是最快的一种进程间通信方式。使用共享内存时的关键点在于如何在多个进程之间对一给定的存储区进行同步访问。 例如若一个进程正在将数据放入共享内存区,则在它做完这一操作之前,其他进程不应该去取这些数据。通常,信号量被用来实现对共享内存访问的同步。如果只有两个进程访问共享内存,那么我们可以

2011-10-20 19:50:19 403

转载 根文件系统中添加telnetd服务

使用busybox制作的一个基本根文件系统如何添加telnetd服务呢?下面把本人的添加过程列出来供大家分享,如有不同意见请不吝赐教!1、 添加telnet的支持(busybox中配置)Networking Utilities --->                [*] telnet                [*] Pass TERM type to remote h

2011-10-20 19:46:42 427

转载 Linux内核中等待队列的几种用法

Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠):    睡眠方式:wait_event, wait_event_interruptible            唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变

2011-10-20 19:17:00 316

转载 u-boot链接分析

一个典型的嵌入式系统中,bootloader代码放在NOR Flash或NAND Flash里面,系统加电或复位后,首先运行这段代码。通常把bootloader代码放在NOR Flash里面,NAND Flash由于硬件原因不能随机访问,需要特殊的硬件支持机制。bootloader代码除了初始化以外就是搬运程序,即地址重定位(relocate)。我们为什么需要relocate?主要是经济方面和

2011-10-20 19:14:43 331

转载 关于linux中的软链接和硬链接

Linux中有两种类型的链接:硬链接是利用Linux中为每个文件分配的物理编号——inode建立链接。因此,硬链接不能跨越文件系统。(用ls –i命令可以查看目录下文件的inode编程)。软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。i节点包含了所有与文件有关的信息:文件类型、文件存取许可权位、文件长度和指向该文件所占用

2011-10-20 19:11:44 403

转载 mjpg-streamer源码分析

mjpg-streamer是一个很好的开源项目,用来做视频服务器,使用的是v4l2的接口。前面我们说了它的移植过程,但是在某些特定的情况下这个工程不能达到我们的需求,所以我们需要对源码进行修改,或者直接写一个自己的视频服务器。在修改源码或写自己的服务器之前我们分析下这个源码的代码。这个代码里有三个部分是我们需要掌握的内容,第一是v4l2接口,第二个是socket编程,第三个是多线程编程。一

2011-10-20 19:02:37 379

转载 FL2440下触摸屏校准

由于FL2440自带的文件系统中busybox命令不支持TAB自动补全,所以自己重新制作了文件系统,然后烧写,不过过后有点问题,触摸屏不好使了。也没有提示校准。下面是解决方法 一:WINCE之校屏WINCE的校屏参数是保存在注册表中的。打开BSP包中的platfo

2011-10-18 20:17:50 643

转载 ubuntu下在连接arm开发板的情况下,使用无线网卡上网设置

一台双网卡电脑拥有两个网关是不可能的,因为默认网关(default gateway)只能是一个。给服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过外网网卡来访问,内网的通过内网网卡来访问,似乎实现起来很简单,但有些问题,因为默认网关(default gate

2011-10-18 20:16:36 607

转载 基于S3C2440的busybox的移植 yaffs根文件系统制作

硬件平台:FL2440操作系统:Linux2.6.28.7交叉编译工具:arm-linux-gcc-3.4.1 飞凌公司默认的文件系统,不具有文件延伸功能,比如在/dev下有mmcblk0p1这个文件,在 挂载SD卡驱动时,需要敲入命令mount /dev/mmcbl

2011-10-18 20:14:57 541

转载 ARM-Linux驱动--DMA驱动分析(一)

1、DMA的功能和工作原理这里就不多说了,可以查看s3c2440的手册2、在正式分析DMA驱动之前,我们先来看一下DMA的注册和初始化过程系统设备:(翻译自源码注释)系统设备和系统模型有点不同,它不需要动态绑定驱动,不能被探测(probe),不归结为任何的系统总线,所

2011-10-18 12:54:11 1485

转载 ARM-Linux驱动--DM9000网卡驱动分析(四)

1、接下来接着分析DM9000网卡驱动的数据接收函数view plaincopy to clipboardprint?/*  *  Received a packet and pass to upper layer  *  接收数据包,将数据包传递给上

2011-10-18 12:46:37 1007

转载 ARM-Linux驱动--DM9000网卡驱动分析(三) .

下面开始看网卡设备的打开、关闭函数和操作函数view plaincopy to clipboardprint?static const struct net_device_ops dm9000_netdev_ops = {      .ndo_op

2011-10-18 12:39:12 568

转载 ARM-Linux驱动--DM9000网卡驱动分析(二)

下面开始分析具体的代码,这里由于使DM9000驱动更容易理解,在不影响基本的功能的前提下,这里将尽可能的简化该驱动(如:去掉该驱动中支持电源管理的功能)分析该驱动1、首先看一下该驱动的平台设备驱动的结构体定义view plaincopy to clipbo

2011-10-18 12:31:19 518

转载 ARM-Linux驱动--DM9000网卡驱动分析(一) .

1、下图是DM9000的引脚图2、这里我们结合具体的开发板FL2440下面是FL2440和DM9000的引脚链接图本人移植DM9000的时候将设备的资源定义放在了arch/arm/plat-s3c24xx/devs.c中,详情点击上一篇博文

2011-10-18 09:15:07 691

转载 ARM-Linux驱动--Watch Dog Timer(看门狗)驱动分析

1、看门狗驱动的原理下图是看门狗驱动的原理图可以看出,PCLK是系统时钟,经过8位的预分频,然后再被分频(16、32、64、128)然后产生计数脉冲,进行计数,当计数器WTCNT加到0或减到0,然后产生中断,或引起系统复位。所以要隔一段时间,重置WTCNT的值,防

2011-10-18 09:10:59 1194

转载 ARM-Linux驱动--RTC(实时时钟)驱动分析 .

1、实时时钟概述实时时钟(RTC)单元可以在断电的情况下使用纽扣电池继续计时工作。RTC使用STRB/LDRB ARM操作传输二进制码十进制数的8位数据给CPU。其中的数据包括秒、分、时、日期、天、月、年的时间信息。可以执行报警功能。2、实时时钟操作下面是RTC模块的

2011-10-18 09:07:03 1107

转载 S3C2440上RTC时钟驱动开发实例讲解

一、开发环境主  机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2二、相关概念1、平台设备:通常在Linux中,把SoC系统中集成的独立外设单元(

2011-10-18 08:55:28 718

转载 S3C2440上touchscreen触摸屏驱动 .

为了方便自己和广大嵌入式爱好者,这里转载自:http://hbhuanggang.cublog.cn一、开发环境主  机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30.4编译器:arm-linux-g

2011-10-17 19:11:12 639

转载 ARM-Linux驱动--ADC驱动(中断方式)

硬件平台:FL2440内核版本:2.6.28主机平台:Ubuntu 11.04内核版本:2.6.39这个驱动写了好久,因为原来的Linux内核编译的时候将触摸屏驱动编译进内核了,而触摸屏驱动里的ADC中断在注册的时候类型选择的是 IRQF_SAMPLE_R

2011-10-17 19:06:53 620

转载 Linux 驱动--ADC驱动 .

主机系统:Ubuntu 11.04内核版本:Linux Kernel 2.6.39硬件平台:FL2440开发板系统:Linux Kernel 2.6.28下面是用CPU轮寻的方式来判断AD转换完成的view plaincopy to clipboa

2011-10-17 18:41:29 858

s5pv210 cortex A8用户手册

s5pv210 cortex A8用户手册

2011-12-25

TI OMAP4430 cotex A9 ubuntu移植文档

TI OMAP4430 cotex A9 ubuntu移植文档玩A9的可以参考下

2011-11-24

cotex A9介绍

cotex A9介绍cotex A9介绍cotex A9介绍

2011-11-22

boa-0.94.13.tar.tar

boa-0.94.13.tar.tar ,结合郭天祥boa移植文档,自己做个服务器,可以试试看哦。

2011-10-28

web服务器boa移植手册

郭天祥的boa移植文档,是个不错的好东西哦!!!

2011-10-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除