【S3C2410简介】
S3C2410装备有SAMSUNG产ARM920T核、一体化16kB Cache/MMU能轻松奔跑Linux。
该板资源以下:
(1) CPU : ARM920T 工做频率为 200MHz 。
(2) Flash : 16MB
(3) SDRAM : 64MB SDRAM
(4) UART : RS-232串行接口
(5) 其余 : 14针ARM JTAG接口等。
【交叉编译环境的创建】
基于 Linux 操做系统的应用开发环境通常是由目标系统硬件(开发板) 和宿主 PC 机所构成。
目标硬件开发板用于运行操做系统和系统应用软件,而目标板所用到的操做系统的内核编译、
应用程序的开发和调试则须要经过宿主 PC 机来完成 (因此称为交叉编译) 。
双方之间通常经过串口、并口或以太网接口创建链接关系, 其结构图以下所示。
单独拿出一台 PC 机, 在该 PC 上安装桌面的 Linux操做系统(如 Red Hat Linux 9. 0),
能够采用默认的安装选项(注意要包含 ftp 服务), 这台 PC 做为 Linux 服务器,
除管理员之外,通常不直接让其余人去操做。
将该 Linux 服务器接入局域网, 并新建一些合法用户,
以便其余的 PC 机 (在此将其称为工做站) 的合法用户
能访问到 Linux 服务器。而其余的 PC 机 (工做站) 仍然使
用 Windows 操做系统。
须要的软件工具包括 :
(1) ftp 客户端程序。
(2) Telnet 工具。
(3) 移植到某一特定 ARM 平台的 Linux 操做系统内核源码。
(4) GNU编译工具,可由相关网站下载。
在某工做站 PC 上安装 ftp 客户端程序和 Telnet 工具,
安装完毕后应该能够在该工做站PC和Linux服务器之间进行文件的传输,
并在工做站PC能够经过Telnet登录服务器,可能须要暂时关闭防火墙。 linux
【Linux 服务器的安装】
将工做站 PC 上的 Linux 操做系统内核源码压缩包和 GNU 编译工具经过 ftp 传送到
Linux 服务器的某个目录(如合法的用户目录),
而后在该目录下解压,并将 GNU 编译工具安装到默认的工做目录便可,
以上工做经过在工做站 PC 使用 Telnet 工具完成,而不须要在 Linux 服务器上进行。
Linux 操做系统内核的编译通常有一个比较固定的步骤, 会根据 MakeFile 文件的不一样而略有差别,
可参考相关文档,编译的工做在工做站 PC 使用 Telnet 工具完成。
按固定的步骤编译内核完成之后, 会在相应目录生成可执行的二进制文件,
经过 ftp将该可执行的二进制文件传回工做站 PC,
而后再经过ADS 或 SDT 下的烧写工具写入开发板的 Flash 便可。
【Bootloader 的架构和功能】
Bootloader 引导程序是嵌入式开发很重要的组成部分。
它是嵌入式系统上电后执行的第一个程序,并由它最终将操做系统启动起来并将控制权交给操做系统。
Bootloader 引导程序最基本的功能是对硬件系统的初始化和内核启动参数设置并启动内核。
Bootloader 的主要功能有 :
(1) 初始化 CPU 的主频、 SDRAM 、中断、串口等硬件 ;
(2) 启动 Linux 内核并提供一个 RAMDISK;
(3) 经过串口下载内核或 RAMDISK 到目标板上 ;
(4) 将修改过的内核或 RAMDISK 写入到 Flash 内 ;
(5) 为用户提供一个命令接口。
在嵌入式系统开发过程当中,
Bootloader 还与主机通讯,不断检测从主机传来的控制信息和数据信息,完成相应的操做。
Linux 运行在保护模式下, 可是当机器启动复位的时候却处于实模式下。
因此写 Bootloader 的工做也是在实模式之下的。
Bootloader 的实现除了依赖于 CPU 的体系机构,还依赖于目标板的设置,
本系统的 Bootloader 引导程序分为stage1 和 stage2 两个阶段。
依赖于CPU的体系机构的代码,好比设备初始化等,放在ARM汇编写的stage1中,
stage2用C语言来实现,能够实现复杂的功能,同时代码具备更好的可读性和可移植性。
§Bootloader Stage1
①屏蔽全部的中断。为中断提供服务的一般是操做系统,
所以在执行 Bootloader 的过程当中能够不响应任何中断。中断屏蔽经过写 CPU 的中断屏蔽寄存器来完成。
②设置 CPU 的时钟频率和速度。
③初始化 RAM 设置系统的内存控制器的功能寄存器和各内存库控制寄存器等。
④为加载 stage2 准备 RAM 空间。
⑤拷贝 stage2 到 RAM 中。
⑥跳转到 stage2 的入口点。
§Bootloader Stage2
①初始化本阶段要使用到的硬件设备,好比初始化至少一个串口以便 I/ O,初始化计时器等。
②检测系统的内存映射。
所谓内存映射就是指在整个4 GB物理地址空间中有哪些地址范围被分配用来寻址系统的 RAM 单元。
③加载内核映像和根文件系统从 Flash 读入到 Rom中,这里包括两个方面 :
a. 内核映像所占用的内存范围 ;
b. 根文件系统所占用的内存范围。
在规划内存占用的布局时,主要考虑基地址和映像的大小两个方面。
stage2 执行映像刚被拷贝到 RAM 空间时的系统内存布局以下图所示。
④设置内核的启动参数。
⑤调用内核。 Bootloader 调用 Linux 内核的方法是直接跳转到内核的第一条指令处。
【Linux 内核的构建和移植】
1) 设置软件开发环境。
为了和目标板进行通信,必需要在主机上终端运行仿真程序 DNW。
建议在宿主机上安装 RED HAT Linux 9. 0版本。
如下以在 SHELL 模式下安装编译器和源代码为例:
首先以 ROOT 身份进入系统。把 RED HAT Linux
9. 0 的安装光盘放入光驱中,执行装载光驱命令 :
mount / dev/ cdrom . / mnt/ cdrom
若是系统不能识别. / mnt/ cdrom, 可使用以下命令 (假设 cdrom 为/ dev/ had ),
则用 mount - t iso9660 / dev/ hdb / mnt 。
若是在安装 RED HAT Linux 9. 0 的时候已经默认安装了 CDROM,
以上命令不需执行, 直接进入 CDROM 所在目录。
mkdir / usr/ local/ arm
mount / dev/ cdrom . mnt/ cdrom
cd/
cp / mnt/ cdrom/ bin/ cross - 2 . 95 . 3 . tar . bz2 / usr/ local/ arm/
cp / mnt/ cdrom/ bin/ linux
- for s3c2410 . gz
tar zxvf linux - for s3c2410 . gz
cd / usr/ local/ arm/
tar - jxvf cross - 2 . 95 . 3 . tar . bz2
程序执行完后,Linux 源代码和编译环境都已创建起来了。
2) Linux 内核编译。
首先以 ROOT 身份进入系统。而后完成下列步骤,
就能够在 / linux/ arch/ arm/ boot/ 获得内核的映像文件
zimage 。
在 shell 命令下输入命令进行内核配置 :
make menuconfig
该命令执行以后生成文件. comfig它保存这个配置
信息,下一次再执行 ake menuconfig 的时候将生成新的.
comfig文件。
输入命令 :make dep
输入命令 :make clean
输入命令 :make zlamge
经过各个目录的Makefile进行,将会在各个目录下生成一系列目标文件,此时完成了对Linux的编译工做。
3
) Linux应用程序。 Linux 内核的编译、修改、移植实际上与上层的应用程序, 如命令解释器 shell、登录程序login相关,这些程序应根据须要从新定制。 利用终端仿真程序 DNW 和 Bootloader 引导程序经过串口就能够把 Linux 内核移植到目标系统板。 移植完成后,Linux 就能够在目标系统板上运行了。