嵌入式底层开发
文章平均质量分 72
IT_114
这个作者很懒,什么都没留下…
展开
-
自己动手编写嵌入式Bootloader之(1)
第一部分:基本功能流程<br /><br />CPU上电后会从IO空间的某地址取第一条指令。但此时:PLL没有启动,CPU工作频率为外部输入晶振频率,非常低;CPU工作模式、中断设置等不确定;存储空间的各个BANK(包括内存)都没有驱动,内存不能使用。在这种情况下必须在第一条指令处做一些初始化工作,这段初始化程序与操作系统独立分开,称之为bootloader。<br />实际上,很少有必要自己写一个Bootloader,因为U-Boot已经强大到能够满足各种需要。但是强大必然复杂,一个初学者想要分析U-Bo转载 2011-02-25 16:49:00 · 2033 阅读 · 0 评论 -
Linux设备驱动的分层设计思想
1.1 设备驱动核心层和例化在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数。如果对于继承的这个事物而言,其某函数的实现与基类一致,那它就可以直接继承基类的函数;相反,它可以重载之。这种面向对象的设计思想极大地提高了代码的可重用能力,是对现实世界事物间关系的一种良好呈现。Linux内核完全由C语言和汇编语言写成,但是却频繁用到了面向对象的设计思想。在设备驱动方面,往往为同类的设备设计了一个框架,而框架中的核心层则实现了该设备通用的一些功能。同样的,如果具体的设原创 2011-04-02 16:54:00 · 1088 阅读 · 0 评论 -
Android在TQ2440开发板上的移植
<br />Android在TQ2440开发板上的移植<br />一、目前进展<br />1.Android已经可以通过NFS在TQ2440开发板上运行<br />2010.03.12 update:最近自己编译了android的文件系统,并在TQ上运行了,比熊猫版的bin程序多些,基本功能已经实现,大家可以从:<br />http://d.namipan.com/d/b64ce43b2388e5e1f66af18149824b98cd13b926c4921f02<br />下载文件系统试试,改天整理一下,转载 2011-04-02 16:48:00 · 2272 阅读 · 0 评论 -
深度分析NandFlash—start.s中添加从Nand Flash启动的代码分析
<br /> 搞过uboot移植的人都知道,要想让系统从NandFlash启动,第一步就是要在start.s中屏蔽掉从Nor Flash启动的代码,然后自己添加从Nand Flash启动的代码,我添加的代码如下:<br /> <br />/****** NAND_BOOT ********/<br /> <br />#define LENGTH_UBOOT 0x60000<br />#define NAND_CTL_BASE 0x4E000000<br /> <br />#ifdef CONF原创 2011-04-02 14:29:00 · 2387 阅读 · 0 评论 -
S3C2440启动方式研究
<br />S3C2440启动方式研究<br />不管S3C2440的启动设备是什么,它都是从0x0000 0000地址开始执行程序的,所不同的是地址的映射不一样。基于S3C2440的嵌入式系统上电之后,需要首选选择启动设备,2440的启动方式选择是通过模式引脚OM1和OM0来配置的,如图1 所示为2440的启动方式选择说明:<br /> <br />图1 S3C2440启动方式说明<br />由上图可知,S3C2440支持两种启动模式:NAND和非NAND(这里是Nor Flash),具体采用的方式取决于转载 2011-03-19 11:35:00 · 2250 阅读 · 0 评论 -
四步到位正确安装arm-linux 交叉编译器
<br /> 今天花了点时间在RedHat5.0上安装了一个arm-linux交叉编译器。装的过程中出现过几个问题,经过查询网上的资料。现在就总结一下正确的安装方法。<br /> 首先我用的是天嵌自带的交叉编译器EABI-4.3.3_EmbedSky_20100610.tar.bz2,<br /> 1.首先建一个存放交叉编译器的目录,我建的目录的绝对路径是:/opt/TQ (TQ就是我建的目录)<br /> 2.解压EABI-4.3.3_EmbedSky_20100610.tar.bz2原创 2011-03-17 17:32:00 · 2267 阅读 · 1 评论 -
深度分析NandFlash—硬件实现机制
<br /> 最近看了好久的NandFlash,总算是有了一点感觉,但一直没有系统的整理一下,脑子里很乱,今天刚好公司的很多人都出去旅游了,所以工作不是很忙,就在这里好好整理一下吧。首先当然是最基础的了,NandFlash的硬件实现机制。<br /> Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中原创 2011-03-18 11:18:00 · 2942 阅读 · 1 评论 -
TQ2440 Linux 系统移植
<br /> <br />一、u-boot基本常用命令<br />1. 基本环境设置<br />setenv serverip 192.168.1.115<br />setenv ipaddr 192.168.1.211<br />setenv gatewayip 192.168.1.1<br />setenv ethaddr 1E:23:37:48:5A:6B<br />setenv bootargs root=/dev/mtdblock2 rootfstype=yaffs init=/linuxrc原创 2011-02-23 21:37:00 · 4143 阅读 · 0 评论 -
常见存储器概念辨析:RAM、SRAM、SDRAM、ROM、EPROM、
<br />常见存储器概念辨析:RAM、SRAM、SDRAM、ROM、EPROM、<br />摘自:http://blog.sina.com.cn/s/blog_622cc2430100euju.html<br />常见存储器概念辨析:RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。<br />ROM和R转载 2011-02-24 09:30:00 · 1972 阅读 · 0 评论 -
特别详细好懂的一篇文章:s3c2440 -linux-LED驱动
<br />嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。<br />·共享资源,欢迎转载:http://hbhuanggang.cublog.cn<br />一、开发环境<br />·主 机:VMWare--Fedora 9<br />·开发板:Mini2440--64MB Nand<br />·编译器:arm-linux-gcc-4.3.2<br />二、实现步骤<br />1. 硬转载 2011-02-23 22:30:00 · 6271 阅读 · 1 评论 -
S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
<br />S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)<br />S3C2440内部集成了一个Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性:<br />l 一个引导启动单元<br />l Nand Flash存储器接口,支持8位或16位的每页大小为256字,512字节,1K字和2K字节的Nand flash<br />l 软件模式:用户可以直接访问Nand Flash存储器,此特性可以用于转载 2011-03-09 11:49:00 · 3106 阅读 · 2 评论 -
s3c2440的时钟详解
这几天一直忙着研究移植U-boot,移植U-boot的过程中有一步很重要,就是要设置s3c2440的时钟,什么 Fin,Fclk,Hclk,Pclk,Mpll,Upll等时钟信号,让初学者看得一头雾水,各种信号混淆不清,本人特意花了一点时间,把这些东东理了理,现整理如下: 首先得弄清一个大的框架,s3c2440 cpu的默认工作主频有两种12MHz和16.9344MHz,也就是我们的晶振的频率,但一般12MHz的晶振用的比较多,Fin就是指我们接的晶振频率。大家都知道s3c2440上电正常工作后原创 2011-03-08 16:08:00 · 2907 阅读 · 5 评论 -
自己动手编写嵌入式Bootloader之(3)
<br />这一部分将对前文没有提到的几段关键代码进行简单说明,介绍一下源代码组织结构和Makefile系统,展示一下实验运行结果,并提供全部源代码下载。<br /> 1. 定时器初始化和延时程序<br /> 因为在 CS8900A的驱动程序中需要用到延时,因此有必要对S3C2440的计时器进行使能和初始化,并编写延时程序。<br /> S3C2440A共有5个定时器,编号为Timer0 ~ Timer4。其中Timer0 ~ Timer3都有输出引脚,可以通过定时器来控制引脚电平周期性的变化,这称为脉转载 2011-02-25 16:56:00 · 1615 阅读 · 0 评论 -
自己动手编写嵌入式Bootloader之(2)
第二部分:通过网口下载内核映像<br /><br />要实现通过网口下载文件的功能,从底层到上层需要做的工作包括:开发板上的网卡芯片的驱动程序;TCP/IP协议栈的实现;TFTP客户端应用程序的实现。我们使用的OK2440开发板配备CS8900A网卡芯片。 为了简单起见,网络数据包的发送和接收都使用轮询方式,不使用中断;协议栈只使用ARP/IP/UDP协议,不涉及TCP及其他协议;应用程序只实现最简单的TFTP客户端。<br /><br />1. 全局配置信息<br /><br />发送和接收的数据缓冲区,转载 2011-02-25 16:52:00 · 1305 阅读 · 0 评论 -
linux下request_mem_region的粗略理解
<br />linux下request_mem_region的粗略理解<br />文章来源:http://gliethttp.cublog.cn<br /> Linux把基于I/O映射方式的I/O端口和基于内存映射方式的I/O端口资源统称为“I/O区域”(I/O Region)。I/O Region仍然是一种I/O资源,因此它仍然可以用resource结构类型来描述。<br /> Linux是以一种倒置的树形结构来管理每一类I/O资源(如:I/O端口、外设内存、DMA和IRQ)的。每一类I/O资源都对应转载 2011-04-02 16:58:00 · 1065 阅读 · 0 评论