嵌入式
小木瓜
这个作者很懒,什么都没留下…
展开
-
LCD裸机驱动程序设计 .
驱动程序流程----1----LCD初始化---端口初始化---显示模式初始化---帧缓冲初始化2----将图像写入帧缓冲端口初始化----------GPC5 GPC6GPC7未用-----GPC0-------10lineend 信号static v原创 2012-07-03 09:32:16 · 1371 阅读 · 1 评论 -
SQLITE3,C语言使用
SQLITE3,C语言使用SQLITE 操作入门sqlite 提供的是一些 C 函数接口,你可以用这些函数操作数据库。通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 sqlite 函数, sqlite 就会为你操作数据库。sqlite 跟 MS 的 access 一样是文件型数据库,就是说,一个数据库就是一个文件,此数据库里可以建立很多的表,可以建立索引、触发原创 2011-12-19 19:05:38 · 1575 阅读 · 0 评论 -
bash配置文件
本文主要对linux系统bash配置文件进行比较分析。1. 首先是两个全局的配置文件。/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被原创 2011-12-17 10:04:59 · 640 阅读 · 0 评论 -
ubuntu8.10网络配置
一 配置网络-使用/etc/network/interfaces1)编辑配制文件:sudo vi /etc/network/interfaces 加入以下配置信息(修改为你自己的): auto lo iface lo inet loopback//静态配置IP auto eth0iface eth0 inet static address 192.168.原创 2011-12-17 10:00:34 · 541 阅读 · 0 评论 -
vim
配置文件:.vimrc 下面是一个适合编程使用的VIM配置文件: " User definitions ==========================================================set nocompatiblesource $VIMRUNTIME/vimrc_example.vimset nobackupse原创 2011-12-16 21:27:42 · 657 阅读 · 0 评论 -
Ubuntu基本命令整理
sudo:如何设定/改变/启用 root 使用者的密码:sudo passwd root当你使用完毕后屏蔽 root 帐号 使用: sudo passwd -l root这个将锁住 root 帐号. 如何在终端机模式下切换到 root 身份: sudo -s -H 在线安装程序:sudo apt-get install g++pt-get最常用参数:update原创 2011-12-17 09:37:48 · 610 阅读 · 0 评论 -
Linux串口编程
Linux 操作系统从一开始就对串行口提供了很好的支持,本文就 Linux 下的串行口通讯编程进行简单的介绍。串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准原创 2011-12-16 21:19:06 · 735 阅读 · 0 评论 -
uboot 移植全过程---基于ARM9 2410
uboot@localhost ~]#mkdir -p dev_home/uboot [uboot@localhost ~]#cd dev_home/uboot 从下面地址下载u-boot 的源代码。 http://sourceforge.net/projects/u-boot [uboot@localhost uboot]#tar -xjvf u-boot-1.1原创 2011-11-15 09:07:42 · 7135 阅读 · 0 评论 -
通过使用UART0实现接收的数据
实验目的:通过使用UART0实现接收的数据(字母/数字)原样输出的操作,借此掌握S3C2410的UART使用。实验环境及说明:恒颐S3C2410开发板H2410。H24X0E扩展板上串行通讯接口3个,可以完成与PC 机的通讯调试。系统串口0和1为RS232 电平;系统串口2为TTL 电平。默认情况下系统使用串口0与PC机通讯,波特率为:115200、8 位数据位、1位停止位、无奇偶校验、无原创 2011-11-10 21:01:59 · 8988 阅读 · 0 评论 -
上拉电阻,下拉电阻的含义,作用及选用原则
上拉电阻,下拉电阻的含义,作用及选用原则在数字电路中不用的输入脚都要接固定电平,通过1k电阻接高电平或接地。 1、定义: 上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!下拉同理! 上拉是对器件注入电流,下拉是输出电流 弱强只是上拉电阻的阻值不同,没有什么严格区分 对于非集电极(或漏极)开路输出型电路(如普通门电路原创 2011-11-09 21:03:46 · 1411 阅读 · 0 评论 -
讲讲volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic原创 2011-11-09 20:30:53 · 445 阅读 · 0 评论 -
关于likely()与unlikely函数
支声明对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。例如,下面是一个条件选择语句:if (foo) { /* .. */}如果想要把这个选择标记成绝少发生的分支:/* 我们认为fo原创 2011-11-29 19:55:28 · 8441 阅读 · 0 评论 -
块设备驱动注册和注销、加载与卸载、块设备驱动的I/O请求
块设备驱动注册和注销块设备驱动的第一个任务就是将他们自己注册到内核中,其函数原型如下: int register_blkdev(unsigned int major, const char* name);major参数是块设备要使用的主设备号,name为设备名,它会在/proc/devices中被现实.如果major为0,内核会自动分配一个新的主设备号,并由该函数返回原创 2011-11-28 21:05:12 · 5189 阅读 · 0 评论 -
中断向量表在ARM异常中断中的应用
http://www.docin.com/p-61342272.html转载 2011-11-06 17:14:37 · 945 阅读 · 0 评论 -
PDU编码(非常经典)
共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。 发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也原创 2011-12-19 19:41:57 · 26630 阅读 · 4 评论 -
深入浅出分析Linux设备驱动程序中断
一、前言 Linux的中断宏观分为两种:软中断和硬中断。声明一下,这里的软和硬的意思是指和软件相关以及和硬件相关,而不是软件实现的中断或硬件实现的中断。软中断就是"信号机制"。软中不是软件中断。Linux通过信号来产生对进程的各种中断操作,我们现在知道的信号共有31个,其具体内容这里略过,感兴趣读者可参看相关参考文献[1]。一般来说,软中断是由内核机制的触发事件引起的(例如进程运行超时原创 2011-12-19 21:13:54 · 1177 阅读 · 0 评论 -
基于2.6内核的pwm蜂鸣器驱动设计
基于2.6内核的pwm蜂鸣器驱动设计 一、开发环境 二、PWM怎样工作在ARM Linux中1. 什么是PWM? PWM(脉冲宽度调制)简单的讲是一种变频技术之一,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。如果还不是很清楚,好吧,来看看我们实际生活中的例子,我们的电风扇为什么扭一下按扭,风扇的转速就会发生变化;调一下收音机的声音按钮,声音的大原创 2011-12-29 15:27:37 · 2051 阅读 · 0 评论 -
LCD之 调色板
对于一个显示设备,数据的更新率正比于画面的像素数和色彩深度的乘积。在嵌入式Linux系统中,受处理器资源配置和运算能力的制约,当使用大分辨率显示时(如在一些屏幕尺寸较大的终端上,往往需要640×480以上),需要降低显示的色彩深度。否则,由于数据处理负担过重会造成画面的抖动和不连贯。这时,调色板技术将发挥重要作用。ARM9内核的S3C2410在国内的嵌入式领域有着广泛的应用,芯片中带有LCD控制器原创 2012-07-05 14:33:30 · 1086 阅读 · 0 评论 -
serial_put_hex
原创 2012-07-04 14:15:22 · 876 阅读 · 0 评论 -
Linux MIPS 启动分析
系统加电起动后,MIPS处理器默认的程序入口是0xBFC00000,此地址在无缓存的KSEG1的地址区域内,对应的物理地址是0x1FC00000,即CPU从0x1FC00000开始取第一条指令,这个地址在硬件上已经确定为FLASH的位置,Bootloader将Linux内核映像拷贝到 RAM 中某个空闲地址处,然后一般有个内存移动操作,目的地址在arch/mips/Makefile内指定:c原创 2012-05-16 11:23:49 · 1457 阅读 · 0 评论 -
softirq和taskled
softirq和taskled都属于软中断,而工作队列是和软中断无关,仅仅是内核中的一个内核线程在等待工作任务,工作队列可以发送工作任务。不过他们还是有个共同点,就是都有延后执行的作用。1.首先看do_softirq如何被调用和如何处理。#ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED# define invoke_softirq() __do_soft原创 2012-05-16 11:02:21 · 3226 阅读 · 1 评论 -
Linux内核中NAND Flash坏块管理
由于NAND Flash的现有工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND芯片出厂的时候,厂家只能保证block 0不是坏块,对于其它block,则均有可能存在坏块,而且NAND芯片在使用的过程中也很容易产生坏块。因此,我们在读写NAND FLASH 的时候,需要检测坏块,同时还需在NAND驱动中加入坏块管理的功能。 NAND驱动在加原创 2012-05-02 20:54:03 · 11299 阅读 · 3 评论 -
NAND Flash的坏块管理设计
NAND Flash的坏块管理设计摘要:主要介绍了基于嵌入式Linux的NAND Flash坏块管理设计和实现方案,详细阐述了坏块映射表的建立、维护及其相关算法,同时分析了此坏块算法在Linux内核及Bootloader中的具体应用。测试结果表明该算法能够处理NANDFlash的相关坏块问题,具有较高的稳定性。关键词:NAND Flash;嵌入式IAnux;映射表;坏块管理原创 2012-05-02 20:43:11 · 2974 阅读 · 1 评论 -
ARM]NAND FLASH的MLC和SLC架构对比
目前业内最具争议的话题莫过于NAND闪存的两大架构MLC和SLC了,这两种架构最大的区别是存取技术不同,由此也带来了制造成本、工艺要求、辅助电路、存取次数上的迥异。从短期发展来看,SLC架构在使用上优势较为明显,也因此成为了部分厂商炫耀产品的资本。然而MLC架构具有成本低廉、单片容量较SLC成倍增大等优势,长远来看势必会成为NAND闪存的下一代主流架构。现在购买随身数码影音产品也许我们还在为闪存芯原创 2012-03-15 10:00:05 · 1682 阅读 · 0 评论 -
NAND FLASH ECC校验原理与实现
NAND FLASH ECC校验原理与实现作者:龙林 EMAIL:[email protected] WEB:www.dragon-2008.comECC简介 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND Flash的系统中一般都会采用一定的坏区原创 2012-03-15 09:59:12 · 1192 阅读 · 0 评论 -
NAND FLASH芯片R/B引脚上拉电阻的作用和阻值选择
NAND用R/B输出作为一种硬件方法标示页操作、擦除和随机读等操作的完成,平时R/B为高电平状态,但当NAND进行编程、随机读或擦除操作时变为低电平状态,操作完成后又变为高电平状态。R/B引脚为漏极开路驱动,因此需要接上拉电阻才能把R/B拉回高电平状态。R/B引脚端的上拉电阻电路图如下图所示:图中电容CL的值为常量:若器件的供电电压为1.8V,则CL=30pF;若供电电压为3.3V原创 2012-03-15 09:57:11 · 10302 阅读 · 1 评论 -
Nand Flash -详述4
【内存技术设备,MTD(Memory Technology Device)】MTD,是Linux的存储设备中的一个子系统。其设计此系统的目的是,对于内存类的设备,提供一个抽象层,一个接口,使得对于硬件驱动设计者来说,可以尽量少的去关心存储格式,比如FTL,FFS2等,而只需要去提供最简单的底层硬件设备的读/写/擦除函数就可以了。而对于数据对于上层使用者来说是如何表示的,硬件驱动设计者可以不关心原创 2012-03-15 09:47:14 · 1152 阅读 · 0 评论 -
RamDisk工作原理
一 什么是RamDiskRam:内存,Disk:磁盘,在Linux中可以将一部分内存当作分区来使用,称之为RamDisk。对于一些经常被访问、并且不会被更改的文件,可以将它们通过RamDisk放在内存中,能够明显地提高系统性能。RamDisk工作于虚拟文件系统(VFS)层,不能格式化,但可以创建多个RamDisk。虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,RamDi原创 2012-03-15 09:49:20 · 2377 阅读 · 0 评论 -
Nand Flash -详述3
【Nand flash的一些典型(typical)特性】1.页擦除时间是200us,有些慢的有800us。2.块擦除时间是1.5ms.3.页数据读取到数据寄存器的时间一般是20us。4.串行访问(Serial access)读取一个数据的时间是25ns,而一些旧的nand flash是30ns,甚至是50ns。5.输入输出端口是地址和数据以及命令一起multiplex复用的。原创 2012-03-15 09:46:24 · 2578 阅读 · 2 评论 -
Nand Flash -详述2
【Nand Flash的物理存储单元的阵列组织结构】Nand flash的内部组织结构,此处还是用图来解释,比较容易理解:图2.Nand Flash物理存储单元的阵列组织结构上图是K9K8G08U0A的datasheet中的描述。 简单解释就是:1.一个nand flash由很多个块(Block)组成, 块的大小一般是 -> 12原创 2012-03-15 09:44:11 · 2613 阅读 · 1 评论 -
进程状态转换
一个进程在其生存期内,可处于一组不同的状态下,称为进程状态,如图所示。进程状态保存在进程任务结构的state字段中。当进程正在等待 系统中的资源而处于等待状态时,则称其处于睡眠等待状态。在Linux系统中,睡眠等待状态分为可中断的和不可中断的等待状态。 进程状态及转换关系(1) 运行状态(TASK_RUNNING)。当进程正在被CPU执行,或已经准备就绪随时可由调度程序原创 2012-02-15 21:44:09 · 5322 阅读 · 1 评论 -
ARM 异常中断处理
l ARM有3种控制程序流程:1. 正常执行过程,每执行一条ARM指令,PC增加4字节;每执行一条THUMB指令,PC增加2字节;2. 跳转指令,B执行跳转操作,BL执行跳转操作,保存子程序返回地址,BX执行跳转,根据目标地址最低位可以切换到THUMB状态;BLX执行以上3种,跳转,保存,切换。3. 异常中断发生。执行完当原创 2011-11-06 16:19:57 · 3645 阅读 · 0 评论 -
Linux内核模块编程指南
什么是内核模块?现在,你是不是想编写内核模块。你应该懂得C语言,写过一些用户程序, 那么现在你将要见识一些真实的东西。在这里,你会看到一个野蛮的指针是如何 毁掉你的文件系统的,一次内核崩溃意味着重启动。什么是内核模块?内核模块是一些可以让操作系统内核在需要时载入和执 行的代码,这同样意味着它可以在不需要时由操作系统卸载。它们扩展了操作系 统内核的功能却不需要重新启动系统。举例子来说,其中一原创 2011-11-18 12:58:29 · 2464 阅读 · 0 评论 -
Gcc 参数详解
gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解]-x language filename 设定文件所使用的语言,使后缀名无原创 2011-11-15 19:49:04 · 528 阅读 · 0 评论 -
linux-2.6.35内核移植—SD卡驱动的添加
【实验目的】 SD卡是嵌入式系统中最常用到的外部存储单元,现在的手机,相机等等消费电子及其它设备都在使用SD卡来弥补系统本身存储较小的缺点.这里我们在我们的系统中也添加SD卡的功能.【实验环境】1、 Ubuntu 10.10发行版2、 u-boot-2010.033、 FS2410平台4、 交叉编译器 arm-none-linux-gnueabi-gcc原创 2011-11-15 19:17:33 · 4856 阅读 · 0 评论 -
gdb 基本用法小结
1. 当程序出错并产生core 时快速定位出错函数的办法 gdb 程序名 core文件名(一般是core,也可能是core.xxxx) 2. 调试程序使用的键rrun运行.程序还没有运行前使用c cuntinue 运行到下一断点处qquit原创 2011-11-15 19:47:45 · 502 阅读 · 0 评论 -
Ubuntu 软件包管理详解
Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条命令: sudo apt-get install xxx 就几乎能帮你搞定所有的软件安装难题。但是有时你可能有这样的需求,查看某个软件包是否安装、安装在哪..., 那我们就来介绍一下 Ubuntu 的软件包管理方式。一、Ubuntu 采用 Debian 的软件包管理器 dpkg 来管理软件包, 类似 RPM. 系统中所有 pa原创 2011-11-15 19:53:13 · 521 阅读 · 0 评论 -
Grep用法小结
使用grep搜索文件内容——快捷、方便(1) 在当前目录下的所有文件的文件内容中查找哪个文件的内容中有findcontents(大小写不敏感,列出findcontents所在文件的所在行)——适合于当前目录下的文件及目录数目比较少,如果查找后列出内容过多,将会失去查找意义。grep -rin findcontents *(2) 如果查找后列出内容过多,就需要用如下命令(只列出f原创 2011-11-15 19:50:02 · 387 阅读 · 0 评论 -
GNU binutils 使用小结
GNU binutils是一组二进制工具集。包括:addr2line ar gprof nm objcopy objdump ranlib size strings strip. 本文归纳他们的常用法。ar ar用于建立、修改、提取档案文件(archive)。archive是一个包含多个被包含文件的单一文件(也称之为库文件),其结构原创 2011-11-15 19:46:32 · 1073 阅读 · 0 评论 -
linux-2.6.35内核移植—yaffs2文件系统的支持
【实验目的】 yaffs2文件系统是嵌入式系统中常用到的一种文件系统,并且在主要用在nand flash上,这里我们在内核里添加yaffs2的支持【实验环境】1、 Ubuntu 10.10发行版2、 u-boot-2010.033、 FS2410平台4、 交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2【实验步骤】原创 2011-11-15 19:18:10 · 1181 阅读 · 0 评论