基于ARM的嵌入式Linux移植真实体验(1)――基本概念

本文介绍了一款基于S3C2410A ARM920T微处理器的嵌入式系统设计过程,涵盖了硬件设计、SDRAM与FLASH存储器配置、串口、以太网及USB接口等多个方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于 ARM 的嵌入式 Linux 移植真实体验( 1 ――基本概念 <?XML:NAMESPACE PREFIX = O />

宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com

1. 引言

ARMAdvanced RISC Machines(高级精简指令系统处理器)的缩写,是ARM公司提供的一种微处理器知识产权(IP)核。

       ARM的应用已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。基于ARM 技术的微处理器应用约占据了32RISC 微处理器75%以上的市场份额。揭开你的手机、MP3  PDA,嘿嘿,里面多半藏着一个基于ARM的微处理器!

       ARM内核的数个系列(ARM7ARM9ARM9EARM10ESecurCoreXscaleStrongARM),各自满足不同应用领域的需求,无孔不入的渗入嵌入式系统各个角落的应用。这是一个ARM的时代!

       下面的图片显示了ARM的随处可见:

<?XML:NAMESPACE PREFIX = V />

有人的地方就有江湖(《武林外传》),有嵌入式系统的地方就有ARM

构建一个复杂的嵌入式系统,仅有硬件是不够的,我们还需要进行操作系统的移植。我们通常在ARM平台上构建Windows CELinuxPalm OS等操作系统,其中Linux具有开放源代码的优点。

下图显示了基于ARM嵌入式系统中软件与硬件的关系:

日前,笔者作为某嵌入式ARM(硬件)/Linux(软件)系统的项目负责人,带领项目组成员进行了下述工作:

(1)基于ARM920T内核S3C2410A CPU的电路板设计;

(2)ARM处理下底层软件平台搭建:

a.Bootloader的移植;

b.嵌入式Linux操作系统内核的移植;

c.嵌入式Linux操作系统根文件系统的创建;

d.电路板上外设Linux驱动程序的编写。

本文将真实地再现本项目开发过程中作者的心得,以便与广大读者共勉。第一章将简单地介绍本ARM开发板的硬件设计,第二章分析Bootloader的移植方法,第三章叙述嵌入式 Linux的移植及文件系统的构建方法,第四章讲解外设的驱动程序设计,第五章给出一个已构建好的软硬件平台上应用开发的实例。

如果您有良好的嵌入式系统开发基础,您将非常容易领会本文讲解地内容。即便是您从来没有嵌入式系统的开发经历,本文也力求让您读起来不觉得生涩。您可以通过如下email与作者联系:[email]21cnbao@21cn.com[/email]

2.ARM 体系结构

    作为一种RISC体系结构的微处理器,ARM微处理器具有RISC体系结构的典型特征。还具有如下增强特点:

    (l)在每条数据处理指令当中,都控制算术逻辑单元(ALU)和移位器,以使ALU和移位器获得最大的利用率;

(2)自动递增和自动递减的寻址模式,以优化程序中的循环;

(3)同时LoadStore多条指令,以增加数据吞吐量;

(4)所有指令都条件执行,以增大执行吞吐量。

ARM体系结构的字长为32位,它们都支持Byte(8)Halfword(16)Word(32)3种数据类型。

ARM处理器支持7种处理器模式,如下表:

   大部分应用程序都在User模式下运行。当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。

User模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的FIQIRQsupervisorAbortundefined 5种模式也被称为异常模式。在处理特定的异常时,系统进入这几种模式。这5种异常模式都有各自的额外的寄存器,用于避免在发生异常的时候与用户模式下的程序发生冲突。

还有一种模式是system模式,任何异常都不会导致进入这一模式,而且它使用的寄存器和User模式下基本相同。它是一种特权模式,用于有访问系统资源请求而又需要避免使用额外的寄存器的操作系统任务。

程序员可见的ARM寄存器共有37个:31个通用寄存器以及6个针对ARM处理器的不同工作模式所设立的专用状态寄存器,如下图:

ARM9采用5级流水线操作:指令预取、译码、执行、数据缓冲、写回。ARM9设置了16个字的数据缓冲和4个字的地址缓冲。这5级流水已被很多的RISC处理器所采用,被看作RISC结构的“经典”。

3. 硬件设计

3.1 S3C2410A 微控制器

电路板上的ARM微控制器S3C2410A采用了ARM920T核,它由ARM9TDMI、存储管理单元MMU和高速缓存三部分组成。其中,MMU可以管理虚拟内存,高速缓存由独立的16KB地址和16KB数据高速Cache组成。ARM920T有两个内部协处理器:CP14CP15CP14用于调试控制,CP15用于存储系统控制以及测试控制。

S3C2410A集成了大量的内部电路和外围接口:

Ø         LCD控制器(支持STNTFT带有触摸屏的液晶显示屏)

Ø         SDRAM控制器

Ø         3个通道的UART

Ø         4个通道的DMA

Ø         4个具有PWM功能的计时器和一个内部时钟

Ø         8通道的10ADC

Ø         触摸屏接口

Ø         I2C总线接口

Ø         12S总线接口

Ø         两个USB主机接口

Ø         一个USB设备接口

Ø         两个SPI接口

Ø         SD接口

Ø         MMC卡接口

S3C2410A集成了一个具有日历功能的RTC和具有PLL(MPLLUPLL)的芯片时钟发生器。MPLL产生主时钟,能够使处理器工作频率最高达到203MHz。这个工作频率能够使处理器轻松运行WinCELinux等操作系统以及进行较为复杂的信息处理。UPLL则产生实现USB模块的时钟。

下图显示了S3C2410A的集成资源和外围接口:

我们需要对上图中的AHB总线和APB总线的概念进行一番解释。ARM核开发的目的,是使其作为复杂片上系统的一个处理单元来应用的,所以还必须提供一个ARM与其它片上宏单元通信的接口。为了减少不必要的设计资源的浪费,ARM公司定义了AMBA(Advanced Microcontroller Bus Architecture)总线规范,它是一组针对基于ARM核的、片上系统之间通信而设计的、标准的、开放协议。

AMBA总线规范中,定义了3种总线:

(l)AHBAdvanced High Performace Bus,用于高性能系统模块的连接,支持突发模式数据传输和事务分割;

(2)ASBAdvanced System Bus,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由AHB总线替代;

(3)APBAdvanced PeriPheral Bus,用于较低性能外设的简单连接,一般是接在AHBASB系统总线上的第二级总线。

典型的AMBA总线系统如下图:

S3C2410A将系统的存储空间分成8bank,每个bank的大小是128M字节,共1G字节。Bank0bank5的开始地址是固定的,用于ROMSRAMbank6bank7可用于ROMSRAMSDRAM。所有内存块的访问周期都可编程,外部Wait也能扩展访问周期。下图给出了S3C2410A的内存组织:

下图给出了S3C2410A的数据总线、地址总线和片选电路:

SDRAM控制信号、集成USB接口电路:

内核与存储单元供电电路(S3C2410A对于片内的各个部件采用了独立的电源供给,内核采用1.8V供电,存储单元采用3.3V独立供电):

JTAG标准通过边界扫描技术提供了对电路板上每一元件的功能、互联及相互间影响进行测试的方法,极大地方便了系统电路的调试。

测试接入端口TAP的管脚定义如下:

Ø         TCK:专用的逻辑测试时钟,时钟上升沿按串行方式对测试指令、数据及控制信号进行移位操作,下降沿用于对输出信号移位操作;

Ø         TMS:测试模式选择,在TCK上升沿有效的逻辑测试控制信号;

Ø         TDI:测试数据输入,用于接收测试数据与测试指令;

Ø         TDO:测试数据输出,用于测试数据的输出。

S3C2410A调试用JTAG接口电路:

3.2 SDRAM 存储器

SDRAM被用来存放操作系统(从FLASH解压缩拷入)以及存放各类动态数据,采用SAMSUNG公司的K4S561632,它是4Mxl6bitx4bank的同步DRAM,容量为32MB。用2K4S561632实现位扩展,使数据总线宽度达到32bit,总容量达到64MB,将其地址空间映射在S3C2410Abank6

SDRAM 所有的输入和输出都与系统时钟CL K上升沿同步,由输入信号RA SCA SWE组合产生SDRAM 控制命令,其基本的控制命令如下:

SDRAM 在具体操作之前首先必须通过MRS命令设置模式寄存器,以便确定SDRAM 的列地址延迟、突发类型、突发长度等工作模式;再通过ACT命令激活对应地址的组,同时输入行地址;然后通过RD WR 命令输入列地址,将相应数据读出或写入对应的地址;操作完成后用PCH 命令或BT 命令中止读或写操作。在没有操作的时候,每隔一段时间必须用ARF命令刷新数据,防止数据丢失。

下图给出了SDRAM的连接电路:

3.3 FLASH 存储器

NORNAND是现在市场上两种主要的非易失闪存技术。

NOR的特点是芯片内执行(XIPExecute In Place),即应用程序可直接在Flash闪存内运行,不必把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口,S3C2410A内嵌了NAND FLASH控制器。

S3C2410A支持从GCS0上的NOR FLASH启动(16位或32位)或从NAND FLASH启动,需要通过OM0OM1上电时的上下拉来设置:

在系统中分别采用了一片NOR FLASH(28F640)NAND FLASH(K9S1208),电路如下图:

3.4 串口

S3C2410内部集成了UART控制器,实现了并串转换。外部还需提供CMOS/TTL电平与RS232之间的转换:

3.5 以太网

以太网控制芯片采用CIRRUS LOGIC公司生产的CS8900A,其突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。它符合IEEE803.3以太网标准,带有传送、接收低通滤波的10Base-T连接端口,支持10Base210Base510Base-FAUI接口,并能自动生成报头,自动进行CRC检验,在冲突后自动重发。

CS8900A支持的传输模式有I/OMemory模式。当CS8900A有硬件复位或软件复位时,它将默认成为8位工作模式。因此,要使CS8900A工作于16位模式,系统必须在访问之前提供给总线高位使能管脚(/SBHE)一个由高到低、再由低到高变化的电平。

3.6 USB 接口

USB 系统由USB 主机(USB Host)、USB集线器(USB Hub)和USB设备(USB Device)组成。USB 和主机系统的接口称作主机控制器(Host Controller),它是由硬件和软件结合实现的。根集线器是综合于主机系统内部的,用以提供USB的连接点。USB的设备包括集线器(Hub)和功能器件(Function)。

S3C2410A集成了USB hostUSB device,外部连接电路如下图:

 

3.7 电源

LDO(Low Dropout)属于DC/DC变换器中的降压变换器,它具有低成本、低噪声、低功耗等突出优点,另外它所需要的外围器件也很少,通常只有 1~2 个旁路电容。

在电路板上我们分别用两个LDO来实现5V3.3V(存储接口电平)和1.8VARM内核电平)的转换。

up监控电路采用MAX708芯片,提供上电、掉电以及降压情况下的复位输出及低电平有效的人工复位输出:

3.8 其它

SN74LVTH62245A提供总线驱动和缓冲能力:

S3C2410A集成LCD液晶显示器控制电路,外部引出接口:

触摸屏有电阻式、电容式等,其本质是一种将手指在屏幕上的触点位置转化为电信号的传感器。手指触到屏幕,引起触点位置电阻或电容的变化,再通过检测这一电性变化,从而获得手指的坐标位置。通过S3C2410A集成的AD功能,完成电信号向屏幕坐标的转化,触摸屏接口如下:

键盘则直接利用CPU的可编程I/O口,若连接 mxn键盘,则需要m+n个可编程I/O口,由软件实现键盘扫描,识别按键:

3.9 整体架构

下图呈现了ARM处理器及外围电路的整体设计框架:

4. 小结

本章讲解了基于S3C2410A ARM处理器电路板硬件设计的基本组成,为后续各章提供了总体性的准备工作。
第一部分 前言....................................................................................................................................8 1 硬件环境......................................................................................................................................8 1.1主机硬件环境.......................................................................................................................8 1.2 目标板硬件环境...................................................................................................................8 1.3工具介绍...............................................................................................................................8 2软件环境.......................................................................................................................................8 2.1主机软件环境.......................................................................................................................8 2.1.1 Windows 操作系统.......................................................................................................8 2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境...............................................................................................9 2.2 Linux下工作用户及环境....................................................................................................9 2.2.1 交叉工具的安装...........................................................................................................9 2.2.2 u­boot移植工作目录....................................................................................................9 2.2.3 内核及应用程序移植工作...........................................................................................9 2.3 配置系统服务.....................................................................................................................10 2.3.1 tftp服务器的配置.......................................................................................................10 2.4 工具使用.............................................................................................................................12 2.4.1 minicom的使用..........................................................................................................12 3 作者介绍....................................................................................................................................13 3.1 策划, 组织, 指导, 发布者...................................................................................................13 3.2 ADS bootloader部分..........................................................................................................13 3.3 交叉工具部分.....................................................................................................................13 3.4 uboot部分...........................................................................................................................13 3.5 内核部分.............................................................................................................................13 3.6 应用程序部分.....................................................................................................................13 3.7 网卡驱动部分.....................................................................................................................13 3.8 Nand Flash 驱动部分.........................................................................................................13 第二部分 系统启动bootloader的编写(ADS).................................................................................141 工具介绍....................................................................................................................................14 1.1 ADS 命令行命令介绍........................................................................................................14 1.1.1 armasm........................................................................................................................14 1.1.2 armcc, armcpp.............................................................................................................14 1.1.3 armlink.........................................................................................................................14 2 基本原理....................................................................................................................................15 2.1 可执行文件组成及内存映射.............................................................................................15 2.1.1 可执行文件的组成.....................................................................................................15 2.1.2 装载过程.....................................................................................................................162.1.3 启动过程的汇编部分.................................................................................................17 2.1.4 启动过程的C部分.....................................................................................................17 3 AXD的使用以及源代码说明...................................................................................................18 3.1 源代码说明.........................................................................................................................18 3.1.1 汇编源代码说明.........................................................................................................18 3.1.2 C语言源代码说明......................................................................................................23 3.1.3 源代码下载.................................................................................................................23 3.2 AXD的使用.......................................................................................................................23 3.2.1 配置仿真器.................................................................................................................23 3.2.2 启动AXD 配置开发板...............................................................................................23 第三部分 GNU交叉工具链.............................................................................................................25 1  设置环境变量,准备源码及相关补丁...................................................................................25 1.1 设置环境变量.....................................................................................................................25 1. 2 准备源码包............................................................................................................................25 1.2.1 binuils..........................................................................................................................25 1.2.2 gcc...............................................................................................................................25 1.2.3 glibc.............................................................................................................................25 1.2.4 linux kernel..................................................................................................................26 1.3 准备补丁.............................................................................................................................26 1.3.1 ioperm.c.diff................................................................................................................26 1.3.2 flow.c.diff....................................................................................................................26 1.3.3 t­linux.diff....................................................................................................................26 1.4   编译 GNU binutils...........................................................................................................26 1.5 准备内核头文件.................................................................................................................26 1.5.1 使用当前平台的gcc编译内核头文件......................................................................26 1.5.2 复制内核头文件.........................................................................................................27 1.6   译编glibc头文件.............................................................................................................27 1.7   编译gcc第一阶段............................................................................................................27 1.8   编译完整的glibc..............................................................................................................27 1.9  编译完整的gcc.................................................................................................................28 2 GNU交叉工具链的下载...........................................................................................................28 2.1 ARM官方网站...................................................................................................................28 2.2 本文档提供的下载.............................................................................................................28 3 GNU交叉工具链的介绍与使用...............................................................................................29 3.1 常用工具介绍.....................................................................................................................29 3.2.1 arm­linux­gcc的使用.................................................................................................29 3.2.2 arm­linux­ar 和 arm­linux­ranlib的使用..................................................................30 3.2.3 arm­linux­objdump的使用.........................................................................................30 3.2.4 arm­linux­readelf的使用............................................................................................31 3.2.6 arm­linux­copydump的使用......................................................................................32 4 ARM GNU常用汇编语言介绍.................................................................................................32 4.1 ARM GNU常用汇编伪指令介绍.....................................................................................32 4.2 ARM GNU专有符号.........................................................................................................33 4.3 操作码.................................................................................................................................33 5 可执行生成说明........................................................................................................................33 5.1 lds文件说明.......................................................................................................................33 5.1.1 主要符号说明.............................................................................................................33 5.1.2 段定义说明.................................................................................................................34 第四部分 u­boot的移植...................................................................................................................35 1 u­boot的介绍及系统结构.........................................................................................................35 1.1 u­boot介绍.........................................................................................................................35 1.2 获取u­boot.........................................................................................................................35 1.3 u­boot体系结构.................................................................................................................35 1.3.1 u­boot目录结构..........................................................................................................35 2 uboot的启动过程及工作原理...................................................................................................36 2.1 启动模式介绍.....................................................................................................................36 2.2 阶段1介绍.........................................................................................................................36 2.2.1 定义入口.....................................................................................................................36 2.2.2 设置异常向量.............................................................................................................37 2.2.3 设置CPU的模式为SVC模式..................................................................................37 2.2.4 关闭看门狗.................................................................................................................37 2.2.5 禁掉所有中断.............................................................................................................37 2.2.6 设置以CPU的频率....................................................................................................37 2.2.7 设置CP15...................................................................................................................37 2.2.8 配置内存区控制寄存器.............................................................................................38 2.2.9 安装U­BOOT使的栈空间........................................................................................38 2.2.10 BSS段清0................................................................................................................38 2.2.11 搬移Nand Flash代码...............................................................................................39 2.2.12 进入C代码部分.......................................................................................................39 2.3 阶段2的C语言代码部分 .............................................................................................39 2.3.1调用一系列的初始化函数.........................................................................................39 2.3.2 初始化网络设备.........................................................................................................41 2.3.3 进入主UBOOT命令行..............................................................................................41 2.4 代码搬运.............................................................................................................................41 3 uboot的移植过程.......................................................................................................................42 3.1 环境.....................................................................................................................................42 3.2 步骤.....................................................................................................................................42 3.2.1 修改Makefile..............................................................................................................42 3.2.2 在board子目录中建立crane2410.............................................................................42 3.2.3 在include/configs/中建立配置头文件......................................................................423.2.4 指定交叉编译工具的路径.........................................................................................42 3.2.5 测试编译能否成功.....................................................................................................42 3.2.6 修改lowlevel_init.S 文件...........................................................................................43 3.2.9 UBOOT的Nand Flash移植......................................................................................45 3.2.8重新编译u­boot..........................................................................................................45 3.2.9 把u­boot烧入flash....................................................................................................45 4  U­BOOT命令的使用................................................................................................................46 4.1 U­BOOT命令的介绍.........................................................................................................46 4.1.1 获得帮助信息.............................................................................................................46 4.2 常用命令使用说明.............................................................................................................47 4.2.1 askenv(F).....................................................................................................................47 4.2.2 autoscr.........................................................................................................................47 4.2.3 base   ...........................................................................................................................47 4.2.4 bdinfo...........................................................................................................................47 4.2.5 bootp............................................................................................................................47 4.2.8 tftp(tftpboot)................................................................................................................48 4.2.9 bootm...........................................................................................................................48 4.2.10 go...............................................................................................................................48 4.2.11 cmp   .........................................................................................................................48 4.2.12 coninfo  .....................................................................................................................48 4.2.13 cp...............................................................................................................................48 4.2.14 date............................................................................................................................49 4.2.15 erase(F)......................................................................................................................49 4.2.16 flinfo(F).....................................................................................................................49 4.2.17 iminfo........................................................................................................................49 4.2.18 loadb..........................................................................................................................49 4.2.19 md..............................................................................................................................49 4.2.20 mm ............................................................................................................................50 4.2.21 mtest   .......................................................................................................................50 4.2.22 mw.............................................................................................................................50 4.2.23 nm   ...........................................................................................................................50 4.2.24 printenv......................................................................................................................50 4.2.25 ping  ..........................................................................................................................51 4.2.26 reset...........................................................................................................................51 4.2.27 run   ...........................................................................................................................51 4.2.28 saveenv(F).................................................................................................................51 4.2.29 setenv.........................................................................................................................51 4.2.30 sleep...........................................................................................................................51 4.2.31 version.......................................................................................................................51 4.2.32 nand info....................................................................................................................51 4.2.33 nand device ........................................................................................................51 4.2.34 nand bad....................................................................................................................51 4.2.35 nand read...................................................................................................................52 4.2.36 nand erease................................................................................................................52 4.2.37 nand write..................................................................................................................52 4.3 命令简写说明.....................................................................................................................52 4.4 把文件写入NandFlash.......................................................................................................53 4.5 下载提供.............................................................................................................................53 5 参考资料....................................................................................................................................53 第五部分 linux 2.6内核的移植.......................................................................................................53 1 内核移植过程............................................................................................................................53 1.1 下载linux内核...................................................................................................................53 1.2 修改Makefile.....................................................................................................................53 1.3 设置flash分区...................................................................................................................54 1.3.1指明分区信息.............................................................................................................54 1.3.2 指定启动时初始化.....................................................................................................56 1.3.3 禁止Flash ECC校验 ................................................................................................56 1.4 配置内核.............................................................................................................................56 1.4.1 支持启动时挂载devfs................................................................................................56 1.4.2配置内核产生.config文件.........................................................................................57 1.4.3编译内核.....................................................................................................................58 1.4.4 下载zImage到开发板................................................................................................58 2 创建uImage................................................................................................................................61 2.1 相关技术背景介绍.............................................................................................................61 2.2 在内核中创建uImage的方法...........................................................................................61 2.2.1 获取mkimage工具.....................................................................................................61 2.2.2 修改内核的Makefile文件.........................................................................................61 3追加实验记录.............................................................................................................................62 3.1移植linux­2.6.15.7..............................................................................................................62 3.2移植linux­2.6.16.21............................................................................................................62 3.3 移植linux­2.6.17................................................................................................................62 4 参考资料....................................................................................................................................62 第六部分 应用程序的移植..............................................................................................................63 1构造目标板的根目录及文件系统.............................................................................................63 1.1 建立一个目标板的空根目录.............................................................................................63 1.2 在my_rootfs中建立Linux目录树...................................................................................63 1.3 创建linuxrc文件................................................................................................................63 2 移植Busybox.............................................................................................................................64 2.1 下载busybox......................................................................................................................64 2.3 编译并安装Busybox..........................................................................................................65 3 移植TinyLogin...........................................................................................................................66 3.1 下载.....................................................................................................................................66 3.2 修改tinyLogin的Makefile................................................................................................66 3.3 编译并安装.........................................................................................................................66 4 相关配置文件的创建................................................................................................................66 4.1 创建帐号及密码文件.........................................................................................................66 4.2 创建profile文件................................................................................................................67 4.4 创建fstab文件...................................................................................................................67 4.5 创建inetd.conf配置文件...................................................................................................67 5 移植inetd....................................................................................................................................67 5.1 inetd的选择及获取............................................................................................................67 5.1.1 获取inetd....................................................................................................................67 5.2 编译inetd............................................................................................................................67 5.2.1 修改configure文件....................................................................................................67 5.2.2 编译 ...........................................................................................................................68 5.3 配置inetd............................................................................................................................68 5.3.1 拷贝inetd到根文件系统的usr/sbin目录中.............................................................68 6 移植thttpd Web服务器.............................................................................................................69 6.1 下载.....................................................................................................................................69 6.2 编译thttpd...........................................................................................................................69 6.3 配置.....................................................................................................................................69 6.3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中...............................69 6.3.2 修改thttpd配置文件..................................................................................................69 6.3.3 转移到根文件系统目录,创建相应的文件.............................................................69 7 建立根目录文件系统包............................................................................................................70 7.1 建立CRAMFS包...............................................................................................................70 7.1.1 下载cramfs工具........................................................................................................70 7.1.2 制作cramfs包............................................................................................................70 7.1.3 写cramfs包到Nand Flash.........................................................................................70 8 参考资料....................................................................................................................................70 第七部分 Nand flash驱动的编写与移植........................................................................................71 1 Nand flash工作原理..................................................................................................................71 1.1 Nand flash芯片工作原理..................................................................................................71 1.1.1 芯片内部存储布局及存储操作特点.........................................................................71 1.1.2 重要芯片引脚功能.....................................................................................................71 1.1.3 寻址方式.....................................................................................................................71 1.1.4 Nand flash主要内设命令详细介绍...........................................................................72 1.2 Nand Flash 控制器工作原理.............................................................................................72 1.2.1 Nand Flash控制器特性..............................................................................................72 1.2.2 Nand Flash控制器工作原理......................................................................................72 1.3 Nand flash 控制器中特殊功能寄存器详细介绍 ............................................................72 1.4 Nand Flash 控制器中的硬件ECC介绍............................................................................73 1.4.1 ECC产生方法............................................................................................................73 1.4.2 ECC生成器工作过程................................................................................................74 1.4.3 ECC的运用................................................................................................................74 2 在ADS下flash烧写程序.........................................................................................................74 2.1 ADS下flash烧写程序原理及结构...................................................................................74 2.2 第三层实现说明.................................................................................................................74 2.1.1 特殊功能寄存器定义.................................................................................................74 2.1.2 操作的函数实现.........................................................................................................74 2.3 第二层实现说明.................................................................................................................75 2.3.1 Nand Flash 初始化......................................................................................................75 2.3.3 获取Nand flash ID......................................................................................................75 2.3.4 Nand flash写入...........................................................................................................76 2.3.5 Nand flash读取...........................................................................................................77 2.3.6 Nand flash标记坏块...................................................................................................78 2.3.7 Nand Flash检查坏块..................................................................................................79 2.3.8 擦除指定块中数据.....................................................................................................79 2.4  第一层的实现....................................................................................................................80 3 在U­BOOT对Nand Flash的支持............................................................................................82 3.1 U­BOOT对从Nand Flash启动的支持.............................................................................82 3.1.1 从Nand Flash启动U­BOOT的基本原理................................................................82 3.1.2 支持Nand Flash启动代码说明.................................................................................82 3.2 U­BOOT对Nand Flash命令的支持.................................................................................84 3.2.1 主要数据结构介绍.....................................................................................................84 3.2.2 支持的命令函数说明.................................................................................................85 4 在Linux对Nand Flash的支持.................................................................................................87 4.1 Linux下Nand Flash调用关系..........................................................................................87 4.1.1 Nand Flash设备添加时数据结构包含关系..............................................................87 4.1.2 Nand Flash设备注册时数据结构包含关系..............................................................87 4.2 Linux下Nand Flash驱动主要数据结构说明..................................................................88 4.2.1 s3c2410专有数据结构...............................................................................................88 4.2.2 Linux 通用数据结构说明..........................................................................................89 4.3.1 注册driver_register....................................................................................................94 4.3.2 探测设备probe...........................................................................................................94 4.3.3 初始化Nand Flash控制器.........................................................................................94 4.3.4 移除设备.....................................................................................................................94 4.3.5 Nand Flash芯片初始化..............................................................................................94 4.3.6  读Nand  Flash............................................................................................................95 4.3.7  写Nand Flash.............................................................................................................95 第八部分 Cs8900a网卡驱动的编写与移植...................................................................................95 1 Cs8900a工作原理......................................................................................................................95 2 在ADS下cs8900a的实现........................................................................................................95 2.1 在cs8900a下实现的ping 工具.........................................................................................95 3 在u­boot下cs8900a的支持......................................................................................................96 3.1 u­boot下cs8900a的驱动介绍...........................................................................................96 3.2 u­boot下cs8900a的移植说明...........................................................................................96 4 在linux下cs8900a驱动的编写与移植....................................................................................96 4.1 Linux下cs8900a的驱动说明............................................................................................96 4.2 Linux 下cs8900a的移植说明...........................................................................................96 4.2.1 为cs8900a建立编译菜单..........................................................................................96 4.2.2 修改S3C2410相关信息............................................................................................97
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值