专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
基于ARM的嵌入式Linux移植真实体验(1)――基本概念
2019-07-13 01:08
发布
生成海报
站内文章
/
嵌入式Linux
13877
0
1074
基于
ARM
的嵌入式
Linux
移植真实体验(
1
)
――基本概念
宋宝华
[email]21cnbao@21cn.com[/email]
出处:dev.yesky.com
1.
引言
ARM
是
Advanced RISC Machines
(高级精简指令系统处理器)的缩写,是
ARM
公司提供的一种微处理器知识产权(
IP
)核。
ARM
的应用已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。基于
ARM
技术的微处理器应用约占据了
32
位
RISC
微处理器
75
%以上的市场份额。揭开你的手机、
MP3
、
PDA
,嘿嘿,里面多半藏着一个基于
ARM
的微处理器!
ARM
内核的数个系列(
ARM7
、
ARM9
、
ARM9E
、
ARM10E
、
SecurCore
、
Xscale
、
StrongARM
),各自满足不同应用领域的需求,无孔不入的渗入嵌入式系统各个角落的应用。这是一个
ARM
的时代!
下面的图片显示了
ARM
的随处可见:
有人的地方就有江湖(《武林外传》),有嵌入式系统的地方就有
ARM
。
构建一个复杂的嵌入式系统,仅有硬件是不够的,我们还需要进行操作系统的移植。我们通常在
ARM
平台上构建
Windows CE
、
Linux
、
Palm 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)
同时
Load
和
Store
多条指令,以增加数据吞吐量;
(4)
所有指令都条件执行,以增大执行吞吐量。
ARM
体系结构的字长为
32
位,它们都支持
Byte(8
位
)
、
Halfword(16
位
)
和
Word(32
位
)3
种数据类型。
ARM
处理器支持
7
种处理器模式,如下表:
大部分应用程序都在
User
模式下运行。当处理器处于
User
模式下时,执行的程序无法访问一些被保护的系统资源,也不能改变模式,否则就会导致一次异常。对系统资源的使用由操作系统来控制。
User
模式之外的其它几种模式也称为特权模式,它们可以完全访问系统资源,可以自由地改变模式。其中的
FIQ
、
IRQ
、
supervisor
、
Abort
和
undefined 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
有两个内部协处理器:
CP14
和
CP15
。
CP14
用于调试控制,
CP15
用于存储系统控制以及测试控制。
S3C2410A
集成了大量的内部电路和外围接口:
Ø
LCD
控制器
(
支持
STN
和
TFT
带有触摸屏的液晶显示屏
)
Ø
SDRAM
控制器
Ø
3
个通道的
UART
Ø
4
个通道的
DMA
Ø
4
个具有
PWM
功能的计时器和一个内部时钟
Ø
8
通道的
10
位
ADC
Ø
触摸屏接口
Ø
I2C
总线接口
Ø
12S
总线接口
Ø
两个
USB
主机接口
Ø
一个
USB
设备接口
Ø
两个
SPI
接口
Ø
SD
接口
Ø
MMC
卡接口
S3C2410A
集成了一个具有日历功能的
RTC
和具有
PLL(MPLL
和
UPLL)
的芯片时钟发生器。
MPLL
产生主时钟,能够使处理器工作频率最高达到
203MHz
。这个工作频率能够使处理器轻松运行
WinCE
、
Linux
等操作系统以及进行较为复杂的信息处理。
UPLL
则产生实现
USB
模块的时钟。
下图显示了
S3C2410A
的集成资源和外围接口:
我们需要对上图中的
AHB
总线和
APB
总线的概念进行一番解释。
ARM
核开发的目的,是使其作为复杂片上系统的一个处理单元来应用的,所以还必须提供一个
ARM
与其它片上宏单元通信的接口。为了减少不必要的设计资源的浪费,
ARM
公司定义了
AMBA(Advanced Microcontroller Bus Architecture)
总线规范,它是一组针对基于
ARM
核的、片上系统之间通信而设计的、标准的、开放协议。
在
AMBA
总线规范中,定义了
3
种总线:
(l)AHB
—
Advanced High Performace Bus
,用于高性能系统模块的连接,支持突发模式数据传输和事务分割;
(2)ASB
—
Advanced System Bus
,也用于高性能系统模块的连接,支持突发模式数据传输,这是较老的系统总线格式,后来由
AHB
总线替代;
(3)APB
—
Advanced PeriPheral Bus
,用于较低性能外设的简单连接,一般是接在
AHB
或
ASB
系统总线上的第二级总线。
典型的
AMBA
总线系统如下图:
S3C2410A
将系统的存储空间分成
8
个
bank
,每个
bank
的大小是
128M
字节,共
1G
字节。
Bank0
到
bank5
的开始地址是固定的,用于
ROM
或
SRAM
。
bank6
和
bank7
可用于
ROM
、
SRAM
或
SDRAM
。所有内存块的访问周期都可编程,外部
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
。用
2
片
K4S561632
实现位扩展,使数据总线宽度达到
32bit
,总容量达到
64MB
,将其地址空间映射在
S3C2410A
的
bank6
。
SDRAM
所有的输入和输出都与系统时钟
CL K
上升沿同步,由输入信号
RA S
、
CA S
、
WE
组合产生
SDRAM
控制命令,其基本的控制命令如下:
SDRAM
在具体操作之前首先必须通过
MRS
命令设置模式寄存器,以便确定
SDRAM
的列地址延迟、突发类型、突发长度等工作模式;再通过
ACT
命令激活对应地址的组,同时输入行地址;然后通过
RD
或
WR
命令输入列地址,将相应数据读出或写入对应的地址;操作完成后用
PCH
命令或
BT
命令中止读或写操作。在没有操作的时候,每隔一段时间必须用
ARF
命令刷新数据,防止数据丢失。
下图给出了
SDRAM
的连接电路:
3.3 FLASH
存储器
NOR
和
NAND
是现在市场上两种主要的非易失闪存技术。
NOR
的特点是芯片内执行
(XIP
,
Execute In Place)
,即应用程序可直接在
Flash
闪存内运行,不必把代码读到系统
RAM
中。
NOR
的传输效率很高,在
1~4MB
的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
NAND
结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用
NAND
的困难在于
Flash
的管理和需要特殊的系统接口,
S3C2410A
内嵌了
NAND FLASH
控制器。
S3C2410A
支持从
GCS0
上的
NOR FLASH
启动(
16
位或
32
位)或从
NAND FLASH
启动,需要通过
OM0
和
OM1
上电时的上下拉来设置:
在系统中分别采用了一片
NOR FLASH(28F640)
和
NAND FLASH(K9S1208)
,电路如下图:
3.4
串口
S3C2410
内部集成了
UART
控制器,实现了并串转换。外部还需提供
CMOS/TTL
电平与
RS232
之间的转换:
3.5
以太网
以太网控制芯片采用
CIRRUS LOGIC
公司生产的
CS8900A
,其突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。它符合
IEEE803.3
以太网标准,带有传送、接收低通滤波的
10Base-T
连接端口,支持
10Base2
,
10Base5
和
10Base-F
的
AUI
接口,并能自动生成报头,自动进行
CRC
检验,在冲突后自动重发。
CS8900A
支持的传输模式有
I/O
和
Memory
模式。当
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 host
和
USB device
,外部连接电路如下图:
3.7
电源
LDO(Low Dropout)
属于
DC/DC
变换器中的降压变换器,它具有低成本、低噪声、低功耗等突出优点,另外它所需要的外围器件也很少,通常只有
1~2
个旁路电容。
在电路板上我们分别用两个
LDO
来实现
5V
向
3.3V
(存储接口电平)和
1.8V
(
ARM
内核电平)的转换。
up
监控电路采用
MAX708
芯片,提供上电、掉电以及降压情况下的复位输出及低电平有效的人工复位输出:
Ta的文章
更多
>>
TI C66x DSP 系统events及其应用 - 2
0 个评论
基于ARM的嵌入式Linux移植真实体验(1)――基本概念
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮