S3C44B0是Samsung公司推出的一款为手持设备或其他通用设备开发的32位处理器,它基于ARM7TDMI核,没有内存管理单元(MMU)。在采用无MMU的微处理器的嵌入式系统中广泛采用的就是uClinux系统,作为linux的衍生系统,其具有支持多任务、内核精简、高效稳定和源代码开放的优点。系统移植的基本过程包括:获取较新版本的linux-2.6.9内核源码,根据目标平台对源码中与硬件平台相关部分进行修改,添加必要的外设驱动程序,对系统进行针对目标平台的交叉编译,生成的内核映像文件的下载调试等。
硬件环境介绍硬件平台以S3C44B0为核心,采用的外部晶振频率为6MHz,内核主频最高可达到66MHZ,平台以2MB的AMD29LV160DB做 rom,其地址空间为0~1fffff,以HY57V1620HG sdram做内存,地址空间为0c000000~0c7fffff,共8MB,以RTL8019as作为网络控制芯片,接在S3C44B0的Bank5 上,通过JTAG与PC机的并口连接支持在线调试与程序烧写。
图1 硬件平台框图
uClinux的移植3.1 交叉编译环境的建立
交叉编译是利用运行在某机器(宿主机)上的编译器编译某个源程序生成在另一台机器(目标机)上运行的目标代码的过程。本文的交叉编译环境建立如下:在PC机上安装Linux *** 作系统做为我们的宿主机,版本为FEDore Core 5,从http : // uClinux .org/上下载交叉编译工具链arm-elf-tools20040427并安装在Linux 宿主机上,这样就建立了uClinux-arm的交叉编译环境。
3.2U-Boot-1.1.2的移植
Bootloader是系统加电后运行的第一段代码,在一个基于ARM的嵌入式系统中,系统上电或复位时通常都从地址0X00000000处开始执行,而这个地址处通常就是系统的bootloader,通过这段程序可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境调整到一个合适的状态,以便为最终的调用 *** 作系统内核准备好正确的环境。
本文中bootloader采用对U-Boot进行移植来实现的。U-Boot的全称是Universal Boot Loader,是德国DENX小组开发的用于多种嵌入式CPU的Bootloader引导程序, 支持PowPC、ARM、MIPS、M68K等多种处理器平台,支持Linux、VxWorks、NetBSD等多种嵌入式 *** 作系统,主要用来开发嵌入式系统初始化代码bootloader,其易于裁剪和调试,尊循GPL (通用公共许可) 公约,完全开放源代码。可以从得到它多个版本的源码,本文是以u- boot-1.1.2为例进行移植的。
在移植前可以通过查看doc文档了解U-Boot源码的主要结构,在众多的目录中与移植相关的主要是board、cpu、drivers等几个目录。移植的基本过程如下:
(1) 查找以S3C44B0处理器为核心的硬件平台,此目的是为了简化移植难度;
在board/下运行 find -exec grep -l 44B0 {} 找到/dave/B2/B2.c,由此我们知道dave公司的B2平台是以S3C44B0处理器为核心的,所以移植可以参考B2平台进行;
(2) 建立我们目标平台的目录lanlan,把B2板的文件拷到建立的目录中,但需要修改文件的名称;
(3) 修改新建目录中的文件的名称,将文件中所有的B2都改成lanlan;
(4) 在include/configs/添加目标平台的配置文件lanlan.h;此文件可以参考B2.h建立;
(5) 修改总目录下的Makefile文件,添加目标板的编译信息;
这个过程完成后可以在u-boot/目录下依次运行make lanlan_config ; make进行编译,编译完成后如果能生成u-boot.bin等文件,则说明前面的过程无误,如果出现错误,则需要根据错误信息进行相关修改;
(6) 修改硬件相关的文件,在cpu/中有S3C44B0的目录,说明U-Boot已经提供了对S3C44B0的支持,我们只是需要修改部分文件使其适合我们的目标平台,主要修改的是cpu/下start.S 和serial.c,include/configs/下的lanlan.h中关于cpu的频率、串口波特率、PLLCON寄存器、flash和 sdram的大小、基地址和网络控制芯片的基地址等内容,确定修改正确后运行make lanlan_config;make命令,编译生成的u-boot.bin就是我们需要的引导程序;
(7) 通过JTAG将生成的u-boot.bin烧写到目标平台的0x0地址,配置Linux下的minICom或者Windows下的超级终端,注意配置的串口及串口波特率要与U-Boot中设置的一样,按复位键或上电重启目标平台后可以从minicom或超级终端看到U-Boot在系统中运行了。
通过以上步骤,完成了U-Boot移植的主要工作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)