综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章嵌入式系统正文
 
μClinux在S3C4510B上的移植
发布日期:2005-08-18 作者:廖 俊 裴海龙 来源:现代电子技术

 摘 要:Linux是一种支持多种体系结构处理器的操作系统,有很强的移植性。描述了将μClinux移植到基于S3C4510B处理器目标板上的方法与过程。首先介绍了S3C4510B处理器和μClinux,并简单说明了如何搭建移植环境,然后着重讨论了在该开发板上Bootloader的设计实现以及μClinux内核的移植方法,最后对在这种基于μClinux的嵌入式系统环境下如何开发应用程序做了简单说明。
  
关键词:嵌入式系统;移植;μClinux; S3C4510B; Bootloader

1引言
  
ARMAdvanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一微处理器的通称,还可以认为是一种技术的名字。
  
1991ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入我们生活的各个方面。
  
采用RISC架构的ARM微处理器一般具有如下特点:体积小、低功耗、低成本、高性能;支Thumb16位)/ARM32位)双指令集,能很好的兼容8/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。ARM的产品主要包括ARM7 Thumb家族和ARM9 Thumb家族、ARM 10 Thumb家族以及StrongARM家族。

2基于ARMS3C4510B处理器和μClinux
  
本文所使用的S3C4510BSamsung公司使用ARM7处理器内核开发的一块嵌入式微处理器。作为一款高性价比的网络处理器,S3C4510B已广泛应用于各种网络设备中,其中央处理器ARM7TDMI核。ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核TDMI的基本含义为:
  
T:支持16位压缩指令集Thumb

  
D:支持片上Debug

  
M:内嵌硬件乘法器(Multiplier
);
  
I:嵌入式ICE
,支持片上断点和调试点。
  
ThumbTM16位压缩指令集能以较小的存储空间需求,获得32位的系统性能。S3C4510B处理器包括8kB可配置的一体化Cache/SRAM1I2C串行接口,2UART232位定时器,18个可编程的通用I/O口,以及110 M/100 M以太网控制器。丰富的片内外围极大地简化了系统的设计。同时这款微处 理器对操作系统的支持广泛,包括Windows CELinuxPalm OSμClinux是针对控制领域的嵌入式Linux操作系统,他从Linux 2.0/2.4内核派 生而来,沿袭了主流Linux的绝大部分特性。适合不具备内存管理单元(Memory Manage ment Unit,MMU)的微处理器/微控制器,例如ARM7TDMI,他通常具有很少内存或Flash的嵌入式系统。GNU通用公共许可证(GUN GPL)的保证下,运行μClinux操作系统的用户可以使用几乎所有的Linux API函数,不会因为没有MMU而受到影响。

3建立μClinux开发环境
  
嵌入式系统的开发与一般的应用开发最大的差别在于,前者需要建立特殊的硬件环境,而后者一般基于特定的操作系统或分布式平台。后者的平台已经对硬件或网络媒质做了抽象,从而不需要由系统开发者来完成这些工作。而在嵌入式系统开发中,这也由开发者完成。
  
嵌入式系统开发环境一般分成主机端(HOST)和目标板(TARGET)两个部分。主机端是开发平台,用于运行开发过程中的各种工具;目标板是运行和测试平台,是嵌入式系统的最终驻留环境。在主机端和目标板之间需要通过某种方式进行通信,如使用RS232C串口。这种通信的目的在于发送控制指令和传输数据,同时获得反馈信息。图1是系统移植工作的硬件环境。

 

  主机端的PC使用COM1通过MAX232S3C4510BUART 1相连接,通过串口完成对目标板的必要控制功能。S3C4510B开发板上配备有一块DM9161以太网卡芯片和主机端建立原始(raw ) IP连接,使用链路层地址完成大批量数据的传送。
  
硬件环境建立之后,就需要创建软件开发环境。软件环境主要是指ARM体系结构的交叉编译环境,在主机端使用RedHat Linux 8.0操作系统,并在其上建立gccARM体系结构的交叉开发环境。可以从http://mac.os.nctu.edu.tw处下载工具链:
  
(1) armelfbinutils2.115.i385.rpm 
  
一些辅助工具,包括objdump(可以反编译二进制文件),as(汇编编译器),ld(连接 器)等。
  
(2)armelfgcc2.95.32.i386.rpm
  
配置目标为armGNUC编译器。使用他在宿主机上开发编译目标上可运行的二进制文件。
  (3)genromfs0.5.11.i386.rpm
  
生成Romfs的工具。Romfs是一种文件系统。这种文件系统相对于一般的ext2文件系统要求更少的空间。
  
将这3个文件放在宿主机上的任意一个目录下,然后输入下面的命令来安装:
 
们就建立好了μClinux的软件开发环境。

4Bootloader的设计实现
  
Bootloader被用于系统从硬件启动到操作系统启动的过渡,是嵌入式系统中必不可少的一段程序。他相当于PC机中的BIOSOS Loader,用于初始化运行硬件和启动操作系统,因此其实现方式由硬件的特性决定。和BIOS/OS Loader一样,他需要固化在目标板中,每次启动目标板时,首先会运行Bootloader,在他完成CPU和相关硬件的初始化之后,才从事先规定的地址启动操作系统或嵌入式应用的固化程序。
  
在嵌入式系统开发过程中,Bootloader还担任了与主机端通信的任务,他相当于一个“服务器”,不断监听从主机端传来的控制信息和数据信息,完成相应的操作。
  
当系统上电后,Bootloader从地址0x0开始执行,将存储器映射重新配置,如表1所示,并会执行Linux的固化内核。

 

  Bootloader可以使用ARM仿真软件SDT2.5通过JTAG下载到目标板上。

5μClinux内核的编译和移植
  
作为操作系统的核心,μClinux内核负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统,决定着系统的各种性能。μClinux内核采用模块化的组织结构,通过增减核模块的方式来增减系统的功能。
  

内核配置,在产品列表中选择Samsung/4510B。在库的选择上选uC-lib c
  
(2) make dep
  
寻找依存关系。
  
(3) make clean
  
清除以前构造内核时生成的所有目标文件、模块文件和一些临时文件。
  
(4) make lib_only
  
编译库文件。
  
(5) make user_only
  
编译用户应用程序文件。
  
(6) make romfs
  
生成romfs文件系统。
  
(7) make image
  (8) make
  
通过各个目录的makefile文件进行,会在各目录下生成一大堆目标文件。
  
上述步骤完成后,就完成了对μClinux源码的编译工作。我们可以在/μClinuxS amsung/images目录下看到2个内核文件:image.ramimage.rom
  
其中iamge.rom可以直接烧写入Flash存储器中,当系统复位或上电时,内核自解压到SDRAM运行。Image.ram可以通过SDT载入到SDRAM中直接运行。
  
μCLinux的内核有2种可选的运行方式:可以在Flash上直接运行,也可以加载到RAM中运行。
  
Flash运行方式:把内核的可执行映像文件烧到Flash上,系统启动时从Flash的某个地址开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。
  
内核加载RAM方式:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行,这种方式相对复杂一些,但是运行速度可能更快。同时这也是标准Li nux系统采用的启动方式。

6应用程序在μClinux上的开发
  
下面将介绍如何把一个应用程序(例如examplec)添加到μClinux上的过程。
  
首先进入μClinux-Samsung/user目录并建立一个自己的子目录,如myproject。将exam plec复制到myproject目录下,并编写相应的makefile文件。接着进入user目录,增加一行语句到该目录下的makefile文件:
  
dir_$(CONFIG_USER_MAAPP_LEDNXY)+=myapp
  
切换到目录μClinuxSamsung/config下,打开configin这个文件,并在最后增加类似下面的语句:
  mainmenu_option next_comment
    comment'My Application'
          bool'example' CONFIG_USER_MYPROJECT_
    EXAMPLE
    comment'My Application
    endmenu
  此后,在编译内核的make menuconfig时就可以在Customize Vendor/User Setting(NE W)这一项的子菜单中选中自己的应用程序example,然后按第5节中相同的办法进行编译即可

  
但是,如果我们每修改一次应用程序,就要把他加入到内核中重新编译,显然效率太低,也不可行。那么有什么方法来节省调试时间呢?
  在上面的章节中曾提到Bootloader可以担当与主机端通信的任务,在这里我们就可以通过他把应用程序快速下载到目标板上。
  
首先通过elf2flt这个工具交叉编译example.c生成在μClinux下的可执行文件exampleflat格式),命令如下:
  
arm-elf-gcc-Wall-o2- wl,elf2flt- o example example.c
  
接着将宿主机与目标板通过串口线连接,并在宿主机上启动一个超级终端,例如minic om,选择好一个COM口(通常是串口1),设置波特率为19 2008个数据位、1个停止位,无校验。然后选择传输协议Zmodom,最后选定需要传输的文件example并发送。传输结束后可以通过超级终端在目标板的目录中发现example,这说明传输成功。
  
在目标板上将example加上x属性(可执行属性),然后输入命令/example就可以运行此程序了。显然,通过这种方法可以很方便快捷的调试应用程序,等调试结束,再把他加入到内核中一起编译即可。

7结语
  
讨论了如何将μClinux移植到ARM7体系微处理器S3C4510B上的基本流程,同时也要的介绍了Bootloader以及应用程序的加载和调试方法。在不同的宿主机和目标板环境下,具体移植过程中可能会出现各种不同的错误或问题,可以充分利用GCC这个强大的工具,根据他的错误提示来一步步的进行修正,最终成功的移植μClinux

参考文献

1]李善平,刘文峰,王焕龙.Linux与嵌入式系统[M].北京:清华大学出版社,2003
2]李驹光,聂雪媛,江泽明,等.ARM应用系统开发详解[M]北京:清华大学出版社,2003


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
一种远程网络摄像机系统的设计与实现 (03-26)
数字化幅度调制电路的实现 (03-26)
多路嵌入式H.264视频服务器的设计 (03-26)
ZigBee车辆自动识别系统的设计 (03-26)
基于GSM技术的远程监控系统 (03-26)
嵌入式Linux实时技术改进与实现 (03-26)
基于微处理器的车流量数据的检测与分析 (03-26)
基于多传感器数据融合的智能机器人设计 (03-26)
基于单片机智能机器人控制系统研究设计 (03-26)
基于嵌入式Linux的短信收发系统设计 (03-26)
基于嵌入式控制器的远程监控系统的开发 (03-26)
基于ARM与μClinux的RTU设计 (04-03)
公共汽车实时显示及定位系统的研究 (昨天)
基于嵌入式微处理器的张力控制器 (03-26)
用于工业自动化的灵活I/O连接器 (昨天)
基于CAN总线的温度检测节点设计 (昨天)
WiMAX接收链使用集成旁路开关低噪声放大器的优势 (昨天)
电流/压力传感器的记录校正方法 (昨天)
画中画技术在车载娱乐系统中的应用 (昨天)
AVS-M与H.264(Baseline)视频解码器结构的分析 (昨天)
实现高效HVAC的电源转换器 (昨天)
Blob在S3C44B0上的移植 (11-26)
Clinux在MIPS上的移植 (12-12)
U-BOOT的启动流程及移植 (12-23)
基于ARM的嵌入式系统Bootloader启动流程分析 (11-21)
AVR和TMS320VC5402的HPI接口通信设计 (12-22)
用U-BOOT构建嵌入式系统的引导装载程序 (02-25)
核数据采集系统中的100Mbps以太网控制模块 (01-22)
利用Flash实现DSP对多个程序有选择的加载 (01-04)
基于ARM的100Mbit/s以太网在数控系统中的应用 (09-04)
NIOS软核处理器的Linux引导程序U-boot设计 (03-24)
基于NIOS 软核处理器的uClinux的移植 (10-22)
在PIC18单片机中使用BootLoader (11-11)
和弦芯片C520的结构与典型应用 (04-05)
μClinux下基于MiniGUI的监控终端的实现 (10-11)
基于ARM的μCLinux启动引导实现的分析 (10-16)
μClinux下实时任务的一种实现方法 (09-02)
基于ARM-μCLinux嵌入式系统启动引导的实现 (08-23)
GPRS在嵌入式手持终端上的实现 (03-03)
μC/OS的应用和扩展 (12-17)
基于S3C4510B型微处理器的最小系统设计 (11-01)
ARM S3C4510B与DSP6416互连的接口设计 (09-07)
基于嵌入式系统的串口网络服务器的设计 (10-05)
基于ARM的PCMCIA接口设计 (10-16)
ARM7嵌入式系统中Bootloader分析与设计 (07-31)
基于ARM微处理器和uClinux的串行通信的设计与实现 (09-05)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号