嵌入式Linux研究及其在ARM上的移植张积红.docx

上传人:b****6 文档编号:4538616 上传时间:2022-12-01 格式:DOCX 页数:32 大小:22.69KB
下载 相关 举报
嵌入式Linux研究及其在ARM上的移植张积红.docx_第1页
第1页 / 共32页
嵌入式Linux研究及其在ARM上的移植张积红.docx_第2页
第2页 / 共32页
嵌入式Linux研究及其在ARM上的移植张积红.docx_第3页
第3页 / 共32页
嵌入式Linux研究及其在ARM上的移植张积红.docx_第4页
第4页 / 共32页
嵌入式Linux研究及其在ARM上的移植张积红.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

嵌入式Linux研究及其在ARM上的移植张积红.docx

《嵌入式Linux研究及其在ARM上的移植张积红.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux研究及其在ARM上的移植张积红.docx(32页珍藏版)》请在冰豆网上搜索。

嵌入式Linux研究及其在ARM上的移植张积红.docx

嵌入式Linux研究及其在ARM上的移植张积红

嵌入式Linux研究及其在上的移植

张积红吴强

同济大学软件学院!

上海

电脑知识与技术

!

""#$%

这里应该包含体系结构的

&’()*+

-

初始化

!

去这个在文件

./012./343.015666433$0

"#

78!

9:

;<=>?

8@?

开始的一系列宏用来建立机器的配置

#

你所提供的参数会被填入数据结构

3.01’AB=CB+0!

用来

描述机器

$

称为机器描述符

"

#&’()*!

"

用来在引导阶

!

DEEFF’3B"

调整和分配机器的各种入口

$

在引导阶段

检测各个选项是有用的

#DEEFGE.CB/

检查内存的大小

#

这里就不用作该工作了

#

’A0G)CB2.+35./32./01566621./CH./BI1

在这个文件中

$

根据你的机器的特殊情况定义内

存地址

$,-

地址等等以及映射关系

#=>?

8@?

地址是物

理地址

$=J8><

地址是每个内存区域和

-

区域的虚拟

地址

#

限于篇幅

$

这里只介绍

./014./343.0156664./01K0

中的相关代码

L

以我所使用的

为例说明

Q#

下面这个结构中的宏都定义在

’A0G)CB2.+3R./34

./01R66641./CH./BK1

文件中

#

这里是机器的初始化

$

明了系统使用的外设的地址及所在的域以及

ST8>:

的情况

#

>F.F’0+F/)0F3.*=CB+0BCDNOP!

=’E=CB+0UV==’A’FC.F.WX

2YZ’/F).G[*1\+’0.G[GBA]F1[CE3.’A[/[H[0[DY4

4Y3B3E/\53.**BCB(F/.^B\DE./C/EH.AC9>%_""8

X<‘NOP!

=a,@?

=<6?

bJM[<‘NOP!

=‘:

c>=<6?

bJM[

7JP[M-78,;=,-[P[P["["d[

X<‘NOP!

=a,@?

=9>%_""8[<‘NOP!

=‘:

c>=9>%_""8[

7JP[M-78,;=,-[P[P["["d[

X<‘NOP!

=a,@?

=9>e[<‘NOP!

=‘:

c>=9>e[7JP[M-!

78,;=,-[P[P["["d[

X<‘NOP!

=a,@?

=ST8>:

[<‘NOP!

=‘:

c>=ST8>:

[7JPY

Pf[M-78,;=b<@;

T8>?

=M<>9

dg

ZE’C==’A’FBCDNOP!

=3.*=’ELZE’CQ

X

0G*+NPP(=3.*=’ELQg

22

该函数在

./012./323.01R0G*+NPPP2’/hI0

文件中

’EF.DGB=’A’FLBCDNOP!

=’E=CB+0Qg

22

该函数在

G’A)(2./012./3233233R./3ZI0

文件中

[

建立机器体系结构的存储空间

的映射

#

d

+F.F’0ZE’C==’A’F

&’()*=BCDNOP!

L+F/)0F3.01’AB=CB+0YCB+0[+F/)0F

*./.3=+F/)0FY*./.3+[

01./YY03CG’AB[+F/)0F3B3’A&EY3’Q

X

3’RiA/=D.A^+WPg

3’RiBACW"(0"SSSSSSg22>M@87

的结束地址

3’RiD.A^U"VI+F./FW"(0"""""""g22>M@87

的起始地址

3’RiD.A^U"VI+’jBW"("P""""""g22>M@87

Pf7J

3’RiD.A^U"VIAECBW"g

d

22

下面的宏定义于

’A0G)CB2.+3R./323.012./01I1

789:

;<=>?

8@?

L

[k9’//)+TE]’0

L<‘NOP!

BZ.G).F’EADE./CQkQ78,;?

8,;<@Lk9ECBlBA[

A0KkQ

J--?

=7<7L"(0"""""""["(%"""""""["(&&""""""Q

44>M@87

开始的物理地址

[,4-

的物理地址

[

调试区域的

虚拟地址

J--?

=‘8@87>L"(0""!

"P""Q

44

结构

*./.3=+F/)0F

或者

F.]G’+F

的物理地址

$

给内核提

供不同的关于内核执行环境的参数

S,6m‘L&’()*=BCDNOP!

Q

44

在内存子系统被初始化之前使用

7.01’AB+*B0’&’0&’(!

)*+

78‘,-LBCDNOP!

=3.*=’EQ

44

机器特殊函数来映射

-

区域

!

包含调试区域

"

;,?

@nL0G*+NPP(=’A’F=’/hQ

22

机器特殊函数来初始化中断

789:

;<=<;M

!

结论

嵌入式

T’A)(

的移植是一项艰巨的任务

$

需要读者

T’A)(

本身的文件结构

$

文件之间的调用非常清楚

$

同时

$

还要求读者对于自己所用的微处理器的硬件足

够的熟悉

#

本文给出的是一个框架性的介绍

$

按照本文

给出的步骤

$

可以将

8@7T’A)(

移植到

芯片

#

针对不同的处理器

$

不同的应用

$

读者还需要编写

相应的硬件驱动程序

#

但将

8@7T’A)(

移植到基于

研究开发

47脑知识与技术

电脑知识与技术

!

""

!

#$

"

"%%

编译器

!

可以配置编译为

多种体系结构的交叉编译器

!

常用的有

&""’()*+),)-./)

&0

以及

&""1,)(

系列

!

一般不要使用

&""1()*2

系列

!

个系列的编译器有很多

34&"

5(67894-8:

;

7894-8:

;

中包括

!

<$

的链接器

:

=!

汇编代码编译器

.;>

用来将文件打包重组的

./

以及显示反汇编码的

?

3@!

=4AB

等工具

!

常用的有

3894-8:

;’()CC)()-./)&0

5,DE:

83"

E""

使用的

F

函数库和针对

G894H

的线程库

"

常用

的有

&:

83"’()(),)-./)&0>&:

83"’:

894H-I/J.=;’()(),)-./)&0

把上述文件包进行编译后就可以使用了

"

当然也可以到相关的网站上下载别人打包好的工

具链

"

!

嵌入式

"#$%&

移植需要修改的文件

5CDG894HKJ/9J:

的选择

G894HKJ/9J:

在不断的发展之中

!

目前最新版本是

G894H’()2

系列

"

越新的版本支持的微处理器的种类

!

持的硬件的类型越来越多

"

在嵌入式中没有必要使用

最新的版本

!

目前国内使用最多的是

G894H’()L

系列

!

这个系列中使用较多的是

G894H’()L)CM

这个稳定成熟

的版本

"

本文就以这个版本为例

!

详细介绍移植过程中

需要修改的代码

"

5(D

需要修改的文件

5LD#

所示

$

其实不需要编写大量的新代码

!

只需要从相近的

体系结构选取所需要的代码就可以了

%

首先登记一个

A."I89J’NO&

A."I89JP8;PJ=3Q,C(FR

PTUFVPWO7Q,C(

XTFVPYZ[WPWO7Q,C(A."I89JPNOPC,C

这些信息需要自己加入

:

894H\./"I\./A\-?

?

:

;\A."I1

-]BJ;

文件

%\\

脚本文件

:

894H\./"I\./A\-?

?

:

;\&J91A."I1

-]BJ;

需要

:

894H\./"I\./A\-?

?

:

;\A."I1-]BJ;

来产生

:

894H\

89":

4=J\.;A1./A\A."I1-]BJ;)I

文件

#

编译的时候产生

$!

这个文件设置了一些定义和宏

%

源代码使用这些宏和

定义来选择合适的代码

%

配置文件

:

894H\./"I\./A\=J^1"?

9^8&;

包含以

_A."I89J19.AJ‘

命名的默认的配置文件

%

应该编辑

:

894H\./"I\./A\"?

9^8&)

89

文件以便

A.aJ"?

9^8&

会支持你的机器

%

这个文件说

明了针对你的机器的新的

FR

:

;

以及他们

与其他

FR

:

;

之间的依赖关系

%

当你

A.aJ

_A."I89J19.AJ‘P"?

9^8&

建立内核时

!

参数的开始部分

:

894H\./"I\./A\=J^1"?

9^8&;\

拷贝到

\:

894H\)"?

9^8&

:

894H\./"I\./A\aJ/9J:

\IJ.=1./Ab)c!

内核的入口代

!

这里检查

G894H

内核代码中的相关信息与目标板处

理器中的相关值是否匹配

%/C

指明机器类型

%

d8^=J^89J=eFR

A?

b/C>dXTFfPYZ[WPWO7Q,C(

dJ9=8^

其他有关修改的文件的具体信息请参考

L

如果上述文件全部正确

!

就会为你的机器产生可

引导的压缩的内核

!

并且通过调试函数输出调试信息

%

但是

!

还需要添加支持外围设备的程序

%

相关的文件的

修改在

:

894H\=/8bJ;(’(

各种驱动所在的目录

!

:

894H\

^;(((

文件系统目录

!

:

894H\9J-(((

网络协议目录

%

实例分析

89":

4=J\.;A1./A\./"I1ggg\I./=h./J)I./"I\./A\

A."I1ggg\./"I)")

老的版本中直接以机器名命名

!

J=3Q,C()"$

是两个非常关键的文件

%

./"I\./A\A."I1ggg\./"I)"

!

"

研究开发

46!

引言

!

"""

!

全球有

&"%#

亿个微处理器生产出来应用

于桌面系统和服务器领域

!

与此同时

!

’(

亿个微控

制器被应用于嵌入式设备

"

嵌入式领域是一个更广泛

的领域

"

嵌入式软件领域也是一个数十亿的全球性的

产业

!

在这其中的嵌入式操作系统以及相关的开发工

具在

!

"")

年达到了

)&

亿美元的产值

"

传统的嵌入式

操作系统有美国

*+,-.+/01

公司的

23*415678+91464:

;

*+,-4<6=>

等等

"

在过去的几年中

!

基于开源组织

#?

@0,A4B190A4:

;

D+,B3

系统的嵌入式操作系

统得到了长足的发展

%

据估计到

!

""(

年底

!

全球将有

近一半的嵌入式系统中使用基于

D+,B3

的操作系统

"

D+,B3

操作系统虽然不是微内核结构

7

但是其模块化的

的结构使得用户可以对其方便的进行配置

!

去除用户

系统不需要的模块

!

减小系统的开销

!

可以做到只有几

E

大小

!

同时

!

D+,B3

在进程管理

!

内存管理

!

网络支

持等方面功能强大

!

可以满足嵌入式系统中绝大多数

应用的复杂性要求

"D+,B3

操作系统免费开源

!

可靠性

!

支持绝大多数现有的

&!

位到

’(

位的微处理器

!

F.87G4<01G=78HGA7AI

等等

"

当前关于嵌入式

D+,B3

的应用主要分为以下两类

&

=4JJ019+CKD+,B3

?

@0,A4B190D+,B3%=4JJ019+CK

D+,B3

是一些公司在遵守

LGD

的基础上

!

提供的嵌入式

D+,B3

解决方案

!

包括可以移植好的针对特定硬件平台

D+,B3E01,0K

和交叉开发工具

!

有的还包括

D+,B3

实时解决方案

%

著名的有

84,;C2+6;CD+,B3

MKB0=C;

D+,B3

以及

.ND+,B3

等等

%?

@0,A4B190D+,B3

包括

>JO0--0-P0O+C,@14Q09;R>JP0O+C,SG00*00D+,B3?

@0,!

TCB1B6F.8D+,B3

等等

%F.8D+,B3

是由

.B60KKE+,U

导开发的

!

是目前最成功的开源性的嵌入式

D+,B3!

持上百种基于

F.8

的微处理器

%

本文将介绍如何把

F.8D+,B3

移植到新的

F.8

系统平台上的通用的方法

!

阐述有关移植过程和

F.8

D+,B3

内核社区的一些惯例

!

F.8

体系结构的文件是如

何在源文件中组织的

!

如何修改

D+,B3

内核以适应特定

的硬件平台

!

以实现内核引导并从串口输出信息

%

"

嵌入式

#$%&’

移植开发环境的建立

嵌入式系统开发环境一般分成主机端

#V46;$

和目

标板

#;C1U0;$%

主机端是开发平台

!

用于运行开发过程中

的各种工具

目标板是运行和测试平台

!

是嵌入式系统

的最终驻留环境

%

在主机端和目标板之间需要通过某

种方式进行通信

!

如使用

.A!

&!

串口

!

或者

>;V0,0;%

种通信的目的在于发送控制指令和传输数据

!

同时获

得目标板的状态信息

%

软件开发环境是由

LWX=

#UK+O9$7LWXO+,B;+K6

以及

LWX

编译器

U99

等一系列交叉开发工具组成

%#

所示

$

R)SL99

摘要

!

本文以

!

"#$%&’

为例

!

讲述了将

()*+,-./

移植到基于

()*

的微处理器的开发板的基本过程

!

首先介

绍了嵌入式

+,-./

的发展情况

!

并简单说明了如何搭建移植环境

!

然后重点讨论了

()*+,-./

内核的移植过程中需

要修改的文件

"

关键词

!

嵌入式

+,-./0

移植

0()*+,-./

中图分类号

!

12%&3#

文献标识码

!

()*+,-.+/4-56,7898:

;<56:

5:

=6-,>.:

?

@8?

;5,-A()*+,-./5?

56:

B?

C8;?

=:

77?

;D97:

E?

-()*,7,-5;?

E.=:

EF

#:

A,--,-AG,5656:

E:

7=;,85,?

-?

@56:

E:

H:

I?

8:

;?

@!

JD:

EE:

E+,-./<9-E56:

D.,IE,-A56:

()*E:

H:

I?

8J:

-55?

?

I7@?

;

+,-./<,5@?

=.7:

7?

-6?

G5?

=?

-75;.=556:

K:

;-:

I@?

;78:

=,@,=8;?

=:

77?

;G,56()*+,-./@;?

J?

8:

-7?

.;=:

8;?

L:

=57M

01234,5/!

JD:

EE:

E+,-./08?

;5,-A0()*+,-./

电脑知识与技术

电脑知识与技术

!

"#

核的嵌入式系统芯片上的过程是可以借鉴的

!

参考文献

!

$%&’()*+*,(-)./0(11(1234+(/"5672+(8(94-9

:

:

:

;4(<9<+5-9<=;6-/;<*

>?

%@/0(11(1A59*B2*,8(3C:

:

:

;0=*(/*D;6-/

>E%F*5=159D+’(G"H1(8(=-I/(9++--=4)-,A59*B

>J%K-,+59D+’(A59*BL(,9(=+-

!

"HK=<+)-,/

N--7(3<91&<7O2’59D:

:

:

;<=(I’$;6-;*7

>P%Q59*BR(856(R,58(S

第二版

TG=(44<91,-"*0595

<91U-9<+’<96-,0(+

中国电力出版社

>V%G"HA59*B

@KWE$?

上的移植李程远等计算

机工程与设计

X*=;?

YYEIWE

收稿日期

"?

YYP

?

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

在一些脱机运行的

Z2K

系统中

#

用户代码需要在

加电后自动装载运行

!

Z2K

系统的引导装载

$F--+=-<1%

是指在系统加电时

&Z2K

将一段存储在外部的非易失

性存储器的代码移植到内部的高速存储器单元中去执

!

这样既利用了外部的存储单元扩展

Z2K

本身有限

"[H

资源

&

又充分发挥了

Z2K

内部资源的效能

!

管用户代码在一段时间相对是固定的

&

但是如果直接

将其掩膜到内部

"[H

中去的话

&

一方面受容量以及价

格的限制

&

另一方面则在系统代码级上显得不是很灵

活方便

!

\AG2]

存储器是在

.K"[H

..K"[H

的基

础上发展起来的一种高密度

非易失性电可擦写存储

&

在掉电情况下仍能保证数据不丢失

&

并能够在不离

开电路板或据设备的情况下实施擦除和再编程操作

具有结构简单

维护便利

存取速度快

对环境适应能

力强

抗振性能好等优点

^

而且单位存储比特的价格比

传统的

.K"[H

要低

&

十分适合于低功耗

小尺寸和高

性能的便携式系统

除了可以采用专用的硬件编程器

把代码灌入

\AG2]

中之外

&

也可以利用现成的

R2K

过软件编程来实现同样的功能

!

!

"#$

%&’#(

的操作

我们采用的

\=<4’

存储器型号为

HFH?

_A‘aYYbG&

其主要特点有

"E‘

单电源供电

&

可使内部产生高电压

进行编程和擦除操作

*

支持

X.Z.c

单电源

\=<4’

存储器

标准

*

只需向其命令寄存器写入标准的微处理器指令

&

具体编程

+

擦除操作由内部嵌入的算法实现

&

并且可以

通过查询特定的引脚或数据线监控操作是否完成

*

可以

对任一扇区进行读

写或擦除操作

&

而不影响其它部分

的数据

!

本设计中

P$?

L!

$V

HbH?

_A‘aYYbG\=<4’

映射为

Z2K

的片外程序存储空间数据

&

总线

$V

&

$V

位方式的并行引导装载和数据保存

!

其中既保存

了用户主程序

模拟

b--+=-<1(,

等程序

&

还保存了数据

"

如中英文字库

’Z2[

波形数据

设置等

!

!

编程命令

摘要

本文介绍了一种利用

"#$%&

存储器实现

’()

系统对主程序的上电加载的方法

!

其中

"

重点介绍

*+*,-./01123"#$%&

的使用和编程方法

!

关键词

!

"#$%()#2556#5$789

中图分类号

!

:

);<<#

文献标识码

!

3

*+,-,.,/-0+/12/33450/657178"#$977651:

8-7;%4/.+

<9.6-/06):

&=%68>6=?

6957@A87$B=?

75CD86&576&$6D$B8%@%85C4()6&$6$@65D$6=A$##E#5$7%D$=?

F95G9$DC95D

"#$%&656&8H3*IJ6C5A@%8%5?

6&8@%$G8$?

76&8F95G9$DD=?

GD86&57%5C*2*K-./01123"#$%&I

=,>?

7-2)"#$%&4()2556#5$789

!

"#

$%&"’

引导方法研究与实现

电子科技大学自动化工程学院

L

四川成都

M<11NO

研究开发

48

王化叶芃王厚军

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1