桂林电子科技大学毕业设计(论文)报告用纸 第 11 页 共 56 页
命令代码:写入80h开始编程模式(写入模式),接下来写入地址和数据; 最后写入10h表示编程结束. 6. Block Erase
功能:块擦除命令。
命令代码:首先写入60h进入擦写模式,然后输入块地址; 接下来写入D0h, 表示擦写结束.
7. Read Status
功能:读取内部状态寄存器值命令。 命令代码:70h
2.4 以太网接口介绍
以太网模块包含一个功能齐全的10Mbps或100Mbps以太网MAC(媒体访问控制器),这个以太网MAC通过使用DMA硬件加速功能来提供优化的性能。以太网模块的功能包括大量的控制寄存器组、半双工或全双工操作、流控制、控制帧、用于重新发送的硬件加速功能、接收包过滤以及LAN上的唤醒。利用分散-集中式(Scatter-Gather)DMA进行自动的帧发送和接收操作,分担(off-load)了来自CPU的大量操作。以太网模块和CPU共享一个特定的AHB子系统(AHB2),该系统用于访问以太网SRAM来获得以太网数据、控制和状态信息。LPC2400中的其它所有AHB通信均在另一个AHB子系统上完成,从而有效地将以太网活动与系统的其它部分分开。以太网DMA在没有被USB模块使用的情况下,也可以通过外部存储器控制器来访问片外存储器以及AHB1上的SRAM。但是,当使用以太网SRAM之外的存储器,尤其是片外存储器时,将减慢以太网访问存储器的速度并增加AHB1的负载。以太网模块使用MII(媒体独立接口)或RMII(简化的MII)协议以及片上MIIM(媒体独立接口管理)串行总线来连接片外的以太网PHY。 2.4.1 以太网模块特点
以太网标准支持:
- 10M或100Mbps PHY器件,包括10 Base-T、100 Base-TX、100 Base-FX和100 Base-T4;
- 完全遵循IEEE标准802.3;
- 完全兼容802.3x全双工流控和半双工背压技术(back pressure); - 灵活的发送帧和接收帧选项; - 支持VLAN帧。
11
桂林电子科技大学毕业设计(论文)报告用纸 第 12 页 共 56 页
? 存储器管理:
- 独立的发送和接收缓冲区存储器,映射到共用的SRAM; - 带有分散/集中式DMA的DMA管理器以及帧描述符数组; - 通过缓冲和预取来实现存储器通信的优化。
? 以太网增强的功能: - 接收进行过滤;
- 发送和接收均支持多播帧(multicast frame)和广播帧(broadcast frame); - 发送操作可选择自动FCS插入(CRC);
- 可选择在发送操作时自动进行帧填充(frame padding); - 发送和接收均支持超长帧传输,允许帧长度为任意值; - 多种接收模式;
- 出现冲突时自动退避(backoff)并重新传送帧信息; - 通过时钟切换实现功率管理;
- 支持“LAN上唤醒”的功率管理功能以便将系统唤醒,该功能可使用接收滤波器或魔法帧(magic frame)检测滤波器来实现。
? 物理接口:
- 通过标准的媒体独立接口(MII)或标准的简化MII(RMII)接口来连接外部PHY芯片,该特性可通过软件来选择;
- 通过媒体独立接口管理(MIIM)接口可访问PHY寄存器。 2.4.2 以太网模块初始化
复位后,以太网软件驱动程序需对以太网模块进行初始化。在初始化过程中,软件需完成:
? 将软件复位条件从MAC中移除; ? 通过MAC的MIIM接口配置PHY; ? 选择RMII或MII模式;
? 配置发送和接收DMA引擎,包括描述符数组; ? 配置MAC中的主机寄存器(MAC1、MAC2等等); ? 使能接收和发送数据通道。
12
桂林电子科技大学毕业设计(论文)报告用纸 第 13 页 共 56 页
2.5 软件开发环境的介绍
操作系统:
Windows XP ,Red Hat Enterprise Linux 5。 使用软件:
虚拟机软件vmware_652,串口工具DNW,JLinkARM_V374m, IAR 4.42A 交叉编译工具:
arm-linux-tools-20061213.tar.gz。 使用源码:: linux-2.6.21.tar.bz2; uClinux-dist-20070130.tar.gz; linux-2.6.21-uc0-lpc2468.diff; linux-2.6.21-uc0-big.patch.gz;
uClinux-dist-20070130-nxp-lpc2468.tgz; u-boot-1.1.6.tar.gz.
13
桂林电子科技大学毕业设计(论文)报告用纸 第 14 页 共 56 页
3 U-Boot的移植
系统的移植是本项目的最重要的工作,系统的移植完成了,该项目可以说完成了很大的一部分。系统的移植包括两大部分的移植工作:u-boot的移植和uClinux的移植。
其中U-boot的移植又包括下面三部分的工作: (1)、nor flash的移植; (2)、nand flash的移植; (3)、网卡驱动的移植;
uClinux系统的移植包括下面四部分的工作: (1)、nor flash的移植; (2)、JFFS2文件系统的制作; (3)、网卡驱动的移植; (4)、boa web服务器的移植;
本章先介绍U-Boot的移植,第四章介绍linux系统的移植。
3.1 U-Boot简介
BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。
常用的Bootloader有U-Boot、vivi、Redboot、ARMboot、Blob、Bootldr等。通常要在特定的嵌入式平台上使用这些Bootloader,需要做一定的编程移植工作。
U-Boot,全称Universal Boot Loader,是一个遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人-德国DENX软件工程中心Wolfgang Denk-本人精湛的专业水平和持着不懈的努力。当前,U-Boot项目正在他的领军之下,众多有志于开放源码BootLoader移植工作的嵌入式开发人员正如火如荼地将各种不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
U-Boot的源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中就能体现这一点。但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS等嵌入式操作系统。其目前要
14
桂林电子科技大学毕业设计(论文)报告用纸 第 15 页 共 56 页
支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS等。这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。 其主要特点有: ① 开放源码; LynxOS;
③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale; ④ 较高的可靠性和稳定性;
⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等; ⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
⑦ 较为丰富的开发调试文档与强大的网络技术支持。
u-boot源代码的目录结构: 目 录 board cpu lib_xxx 特 性 解释说明
② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS,
平台依赖 存放开发板相关的目录文件 平台依赖 存放CPU相关的目录文件,如mpc8xx、arm720t、arm920t、i386等 平台依赖 Xxx表示某种体系结构,如lib_arm存放对ARM体系结构通用的文件,lib_ppc存放对PowerPC体系结构通用的文件等。这类目录共有12个。 include common 通用 通用 头文件和开发板配置文件 通用的多功能函数实现 通用的库函数实现 存放网络程序 存放文件系统程序 硬盘接口程序 通用的设备驱动程序,如串口、RTC、USB等 lib_generic 通用 net fs disk drivers 通用 通用 通用 通用 15