随笔分类 -  嵌入式-ARM

摘要:SDRAM1 SDRAM逻辑原理图 其存储结构的逻辑图,如下图所示。 与表格的检索原理一样,先指定一个行(Row)然后再指定一个列(Column),就可以准确地找到所需要的单元格,这就是SDRAM寻址的基本原理 。这个单元格被称为存储单元,而这个表格就是逻辑Bank(Logical Bank),SDRAM一般含有4个L-Bank。 任何一款SDRAM都需要注意它的一些信息,如位宽、列/行地址、刷新周期、以及Bank地址。其中,位宽是从原理图中可以得到,而 列/行地址、刷新周期 以及bank地址则是从芯片的数据手册中得到。 SDRAM:在计算其地址空间时,即地址大小时,并不能看数据线的... 阅读全文
posted @ 2013-11-13 10:10 dudu1990 阅读(2806) 评论(0) 推荐(0)
摘要:MMU:memory management unit 存储管理单元。主要的作用有2个:权限管理 和 地址映射。一、功能 (1) 权限管理 简单说就是,进程之间不能访问对方的地址空间,如强制访问则报错,程序崩溃但不会影响到其它进程。出现的提示是“访问非法地址0xxxxxx”。 (2)地址映射 即完成虚拟地址到物理地址的转换工作。二、MMU的地址映射原理 首先,观察一个CPUMMU存储管理器外接存储器(以SDRAM为例)框图。 连接1处,即CPU发出的地址。站在CPU角度分析,不会区分虚拟地址和物理地址。如果MMU没有使能的话,那么CPU发出的地址就直接到达存储管理器,是物理地... 阅读全文
posted @ 2013-11-04 13:18 dudu1990 阅读(1219) 评论(0) 推荐(0)
摘要:转自http://blog.csdn.net/ouyang_linux007/article/details/7448505 程序从片内地址0开始,但为什么链接地址又设0x30000000,那不就从0x30000000开始了,反汇编可以看到不是从0开始的 韦老大回答:1. 裸板程序烧在FLASH上 一上电,肯定从0地址运行2. 但是,0地址要么对应NOR FLASH,要么对应只有4K的片内内存3. 程序要读写数据,或是程序大于4K,怎么办?4. 程序就要复制到SDRAM里去执行5. SDRAM那么大,复制到哪个地址去?能随便选择地址吗6. 不能,要复制到它的链接地址去7. 为什么一定要复制到它 阅读全文
posted @ 2013-11-03 20:35 dudu1990 阅读(230) 评论(0) 推荐(0)
摘要:本文主要介绍一个简单的使用SDRAM器件时,地址之间的映射关系以及启动代码的关系首先,看一个汇编文件,是启动代码。@*************************************************************************@ File:head.S@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行@************************************************************************* .equ MEM_CTL_BASE, 0x480... 阅读全文
posted @ 2013-11-03 20:29 dudu1990 阅读(751) 评论(0) 推荐(0)
摘要:MAIN函数一样是被人调用,也一样需要返回。我们通常在启动代码中完成这一工作,而启动代码一般出于效率高的目的都以汇编语言编写。 在main函数之前,需要写启动文件,完成的功能包括:(1)设置栈;(2)设置main的返回地址;(3)调用main;(4)返回到指定地址后,清理工作。 所谓设置栈,就是将栈指针指向某块内存;如果内存是SRAM,则不需要初始化即能使用,如果不是片内SRAM,而是SDRAM,则在此之前还需要初始化SDRAM。同时,在此,不仅仅需要初始化SDRAM,还有其它相关硬件初始化。具体包括:关看门狗;初始化时钟;初始化SDRAM。这些都是在关硬件初始化。 而一开始所说的设... 阅读全文
posted @ 2013-10-28 21:53 dudu1990 阅读(315) 评论(0) 推荐(0)
摘要:目前已经很多ARM9的处理器都至少支持nand flash启动 和nor flash启动。那此两种启动方式到底有什么区别呢?下面以S3C2440为例说明。NandFlash 与 NorFlash 区别如下表所示NORNADN容量1~32MB16~512MBXIP(芯片内执行)YesNo性能擦除非常慢,写慢,但是读非常快擦除、写、读都较快可靠性高,位反转比例小于nandflash的10%比较低,位反转比较常见接口与RAM一样I/O接口访问方法随机访问顺序访问主要用途保存代码和关键数据用于保存数据价格高低文件系统支持Jffs2Yaffs记住最重要一点,NOR Flash的接口与RAM一样,所以可以 阅读全文
posted @ 2013-10-28 21:46 dudu1990 阅读(374) 评论(0) 推荐(0)
摘要:u-boot启动内核,内核启动应用程序。第1个应用程序就是init。BusyBox就是许多命令的集合如ls、cd等。你可以使用如下命令方式来验证还有init也是busybox的链接init程序: 0) 打开/dev/console。标准输入标准输出标准错误 1)执行第一个应用程序init(要么是命令行参数指定uboot参数init = linuxrc 要么是/sbin/init) 2)读取配置文件-inittab(指定后续运行的应用程序) 3)解析配置文件 4)根据配置文件启动执行用户的程序配置文件inittab文件(/etc/inittab)格式:::id=>/dev/id:用作终端, 阅读全文
posted @ 2013-03-10 22:29 dudu1990 阅读(197) 评论(0) 推荐(0)
摘要:首先,需要明白驱动程序的工作流程。 正常我们在操作设备时的顺序是这样的。(1)在应用层,直接通过open、read、或者说是write等函数。(2)这些函数都是在C库中实现的,可以肯定的是C库中对其反应是发生异常SWI,触发异常swi val。根据val的不同进入不同的异常处理。(3)进入驱动函数,内核空间() 然后,需要明白设备如何告知linux内核?即驱动程序的工作流程:1)定义一个file_operation结构体 2)注册(主设备号,名字,file_operation)。就是将file_operation放到file_operation字符数组的主设备号项中。注册函数有regi... 阅读全文
posted @ 2013-03-10 22:24 dudu1990 阅读(318) 评论(0) 推荐(0)