基于ARM的嵌入式系统的设计与实现

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:lele5126596
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了一种基于ARM的嵌入式系统的设计方法;首先简要介绍了嵌入式硬件设计方案,然后重点阐述了BootLoader程序的设计、uCLinux的编译与移植,最后对uCLinux下的网络编程进行了分析。
  关键词:ARM;嵌入式系统;linux;BootLoader
  中图分类号:TP274文献标识码:A文章编号:1009-3044(2008)09-11724-02
  
  The Design and Realization of Embedded System Based on ARM
  LIN Hua
  (Computer Science College of Yangtze University, Jingzhou 434023, China)
  Abstract: This paper designed a new embedded system based on ARM.Firstly, it introduced the embedded system hardware design, Secondly, it analyzed detailedly the compile and transplant course of the uCLinux, in the end it discussed on the communication software design for uCLinux.
  Key words: ARM; Embedded System; Linux; BootLoader
  
  随着计算机技术和半导体技术的发展,嵌入式系统在个人数据处理、多媒体通信、在线事务处理、生产过程控制、交通控制等各个领域内得到了广泛的应用,各种嵌入式相关的新产品纷纷涌现。嵌入式系统越来越引起人们的关注,对嵌入式系统的研究,是掌握信息技术的核心。本文以处理器S3C44B0为核心,设计出一个基于ARM uCLinux的嵌入式系统,对于嵌入式系统有独到的研究。
  
  1 嵌入式硬件方案设计
  
  1.1 系统硬件平台
  系统的硬件平台主要是由嵌入式处理器、FLASH、SDRAM、以太网接口、USB接口、UART接口、JTAG接口、I/O接口、I2C、系统电源、复位电路等组成。系统硬件结构图如图1所示:
  
  1.2 主要硬件的设计
  1.2.1 ARM嵌入式处理器的设计
  处理器采用Samsung公司的S3C44B0微处理器,S3C44B0最突出的特点是它的CPU核使用ARM公司的16/32位ARM7TDMI RISC结构。ARM7TDMI系统扩充包括Thumb协处理器、片上ICE中断调试支持和32位硬件乘法器。S3C44B0通过在ARM7TDMI内容基础上扩展一系列完整的通用外围器件,主要包括:8KB的Cache,外部存储器控制器,LCD控制器,2通道UART,4通道DMA, 71个通用I/O端口,8个外部中断源等。
  1.2.2 网络接口的设计
  采用RTL8019AS芯片作为网络接口芯片,RTL8019AS是一种高度集成的以太网芯片,能简单的实现Plug and Play并兼容NE2000,芯片内部集成了DMA控制器、ISA总线控制器、16KSRAM,用户可以通过DMA方式把需要发送的数据写入片内SRAM中,让芯片自动将数据发送出去;而芯片在接收到数据后,用户可以通过DMA方式将数据读出。
  1.2.3 USB接口的设计
  采用PDIUSBD12作为USB接口芯片,PDIUSBD12是一款性价比很高的USB器件,完全符合USB1,1版的规范,它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口,它还支持本地的DMA传输。
  
  2 软件体系的设计
  
  软件开发过程包括BootLoader设计、uCLinux的编译和移植、uCLinux下的网络编程和应用程序开发等。
  2.1 BootLoader的设计与实现
  在嵌入式系统中,BootLoader的作用与PC机上的BIOS类似,BootLoader可以完成对系统板上的主要部件进行初始化,也可以下载文件到系统板、对CPU、SDRAM、Flash,通过串行口Flash进行擦除与编程。
  BootLoader作为系统复位或上电后首先运行的代码,一般应写入Flash存储器中并从起始物理地址0x0开始。BootLoader根据实现的功能不同,其复杂程度也各不相同。一个简单的BootLoader程序可以仅仅完成串行口的初始化,并进行通信,而功能完善的BootLoader可以支持比较复杂的命令集,对系统的软硬件资源进行合理的配置与管理。因此,用户可根据自身的需求实现相应的功能。BootLoader的设计步骤一般如下:
  2.1.1 系统初始化
  系统初始化主要实现以下的几个功能:
  (1)进入SVC32工作模式(管理模式),以取得访问一些系统资源的权限。
  (2)禁止所有的中断并清除所有中断标志。
  (3)初始化SYSCFG寄存器。
  (4)导入链接器预定义的变量,为存储器的重映射做准备。
  2.1.2 Memory Remap的实现
  Memory Remap就是地址重映射,即存储空间的重新分配,主要分为以下几个步骤:
  2.1.2.1 初始化SDRAM
  系统刚上电后,只有Flash是可用的, SDRAM没有被初始化,是不可用的。此时Flash被映射到0-2M的地方。通过配置相关寄存器完成SDRAM的初始化后,SDRAM被映射到了2-18M的位置上。此时的Memory Map为:0-2M是Flash,2-18M是SDRAM
  2.1.2.2 将BootLoader从Flash中复制到SDRAM中
  在此之前,BootLoader一直是在Flash里面执行的。为了实现Memory Remap,并且保证remap后BootLoader可以继续执行,需要把BootLoader自己全部复制到SDRAM里面去。BootLoader的大小利用链接器预定义的程序段变量。此时,在SDRAM里己经有了一个BootLoader的拷贝,但是必须注意,BootLoader还是在Flash里面执行。此时的Memory Map为:0-2M还是Flash,2-18 M还是SDRAM,但是SDRAM里面多了一个BootLoader的拷贝。
  2.1.2.3 地址重映射
  通过设置S3C44B0的相关寄存器,可以完成最后的地址重映射。SDRAM在0-16M的位置,而Flash被Map到了16-18M的位置。由于在SDRAM有一份BootLoader的拷贝,所以Remap以后BootLoader将转到SDRAM里面来执行。
  2.1.3 Kernel的装载
  此处的Kernel即为uClinux的内核映像,完成Kernel把控制权交给了uClinux来管理,Kernel将被装载到的装载后,系统就0x8000处。Kernel的装载过程如下所示:
  (1)将RW段复制到OxA0,0000处,ZI段清零。
  (2)设置堆栈指针SP=0x80,0000。
  (3)跳转到函数loadkernel()中。
  (4)将Kernel装载到0x8000,同时将PC指向0x8000。
  (5)Kernel获得控制权,接管整个系统。
  2.2 嵌入式操作系统的编译与移植
  本系统采用uCLinux作为操作系统,uCLinux包含一整套的编译、调试等开发工具、内核源代码、各种文件系统、图形接口、各种协议、驱动程序以及丰富的应用程序。uCLinux操作系统主要由内核、Shell、文件结构组成;其中内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。Linux的内核主要由5个子系统构成:进程调度、内存管理、虚拟文件系统、网络接口和进程间通信,在设计时,可以根据需要配置内核选择体系结构和裁剪内核。
  2.2.1 uClinux交叉编译环境
  uClinux交叉编译环境的建立可分为以下两个步骤:
  (1)要在宿主PC机上安装标准Linux操作系统(也可以在Windows环境下安装Cygwin,模拟Linux环境,但可能在开发过程中产生兼容性错误,因此不推荐),如RedHat Linux,并对计算机的硬件设备如网卡进行配置,确认网络配置正确。
  (2)要在宿主PC机上安装交又编译的一些工具链,主要有以下这些: arm-elf-binutils,arm-elf-gcc, genromfs,arm-elf-gdb, elf2flt等。
  2.2.2 uClinux内核的编译和移植
  uClinux内核采用模块化的组织结构,通过增减内核模块的方式来增减系统的功能,因此,通过正确合理的设置内核的功能模块,只编译系统所需功能的代码以减少内核的大小。编译工作的具体步骤下所示:
  (1)解压源代码文件并进入到uClinux-Samsung目录中。
  (2)make menuconfig进行内核配置。
  (3)make dep寻找文件依赖关系。
  (4)make clean清除无用文件。
  (5)make lib only 编译库文件。
  (6)make user_ only编泽用户应用程序文件。
  (7)make image编泽内核文件。
  (8)make编译完成,生成内核文件。
  编译上述步骤后,会在images目录下看到一些文件,如:linux.text,linux.data,romfs.img,image.bin,image.rom,image.ram,boot.rom。
  最后,将image.rom烧写入Flash存储器的0x0处,当系统复位或上电时,内核会自解压到SDRAM,并开始运行。可以通过串行口观察uClinux的启动情况。
  如果编译和加载的过程都正确,就可以在超级终端中看到uClinux移植成功的相关提示。
  2.3 uCLinux下的网络编程
  2.3.1 uCLinux下的网络编程协议简介
  uCLinux下的TCP/IP网络协议栈的各层之间是通过一系列互相连接层的软件来实现Internet地址族的。其中BSD socket层由专门用来处理BSD socket的通用套接字管理软件来处理,它由INET socket层来支持。INET socket为基于IP的协议TCP和UDP管理传输端点。 UDP是一个无连接协议,而TCP(传输控制协议)是一个,TCP靠的端对端协议。传输UDP包的时候,uCLinux不知道也不关心它们是否安全到达了口的地。TCP则不同。在TCP连接的两端都需要加上一个编号,以保证传输的数据被正确接收。在IP层,实现了Internet协议代码,这些代码要给传输的数据加上一个IP头,并且知道如何把传入的IP包送给TCP或者UDP协议。在IP层以下,就是网络设备来支持所有的uCLinux 网络工作,如PLIP, SLIP和以太网。
  2.3.2 uCLinux环境下的socket编程
  网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符,也具有一个类似文件的函数调用socket()。该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket函数实现的。常用的socket类型有两种:流式socket和数据报式socket。两者的去别在于:前者对应于TCP服务,后者对应于UDP服务。uCLinux中socket编程中用到的函数有:
  (1)socket函数:为了执行I/O,一个进程必须做的第一件事情就是调用socket函数,指定期望的通信协议类型(使用IPv4的TCP、使用IPv6的UDP, Unix域字节流协议等)。
  (2)connect函数:TCP客户用connect函数来建立一个与TCP服务器的连挂。
  (3)bind函数: 函数bind给套接口分配一个本地协议地址,对于网际协议,协议地址是非颠倒2位IPv4地址16位的TCP或UDP端口号的组合。
  (4)listen函数:仅被除数TCP服务器调用。将未连接的套接口转换成被动套接口,指示内核应接受指向此套接口的连接请求。根据TCP状态转换调用函数listen导致套接口从CLOSED状态转换到LISEN状态。listen函数还规定了内核为此套接口排队的最大连接个数。
  (5)accept函数:accept函数由TCP服务器调用,从已完成连接队列头返回下一个己完成连接。若己完成连接队列为空,则进程睡眠。
  
  3 小结
  
  嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统已经在各个领域 得到了广泛的应用,如远程监控、智能仪表、数控系统、消费产品等。随着嵌入式系统软硬件技术的飞速发展,其在行业的应用领域必将更为广阔,嵌入式系统的研究将会有非常广泛的前景。
  
  参考文献:
  [1] 魏忠,蔡勇,雷红卫.嵌入式开发详解[M].北京:电子工业出版社,2003.
  [2] 王陈赜.ARM嵌入式技术实践教程[M].北京:航空航天大学出版社,2005.
  [3] 李驹光,聂雪原,姜泽明,等.ARM应用系统开发详解[M].北京:清华大学出版社,2003.
  [4] 杜春蕾.ARM体系结构与编程[M].清华大学出版社,2003.
其他文献
摘要:随着多媒体教育技术飞速发展,教学过程中多媒体技术得到了广泛的应用,本文针对多媒体技术在AutoCAD教学应用中存在的问题进行了分析,通过说明多媒体技术的优点,结合传统的教学方法,不仅可以提高教学质量,还能促进学生的学习兴趣。最后针对存在的问题提出了一些科学的应用多媒体的方式和方法。  关键词:多媒体;课件;教学方式  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008
摘要:Access2003软件具有强大的数据库管理功能,同时又具有操作简单,易于学习和使用的优点,十分适合医院的基层人员在管理医疗械是使用。  关键词:Access;医疗器械管理  中图分类号:R197文献标识码:B文章编号:1009-3044(2008)22-835-02  Microsoft Access2003 (以下简称Access)是Office2003的一个套装程序,普遍装于近年出售的
摘要:随着社会主义新农村建设的不断深入,农村人民生活水平的不断提高,新农村的规划和管理也相应的提高到一个新的层次。运用现代技术手段提高新农村发展规划水平和建设的可视化效果,本文结合适普公司IMAGIS软件,对新农村建设的三维场景问题进行讨论,并且根据三维地理信息系统的原理和方法来建立农村的三维模型场景,给出了系统空间数据和属性数据的管理方法。  关键词:IMAGIS;三维地理信息系统;三维建模;高
摘要:对基于IE内核(如IE,Maxthon)与基于Gecko内核(如Firefox)的浏览器的网页内容获取与分析的技术进行了研究,采用Visual C 6.0为平台,基于COM技术和微软的MSAA技术,采用了多种方式实现了基于以上两类不同内核的浏览器的网页内容获取,并对这几种获取方式进行了优劣比较。  关键词:COM; DOM; MSAA; IE; Gecko; windows编程  中图分
摘要:Bash与tcsh是目前Unix/Linux操作系统中两种流行的shell。通过举例,对这两种shell常用的功能和特性进行了对比,内容包括变量赋值、数组、环境设置、命令参数、数值计算、条件流程控制、循环语句和信号处理等。这些比较是对这二者主要区别的一个很好的总结,能够为bash与tcsh的学习和使用者提供便利和帮助。  关键词:Unix;Linux;Bash;Tcsh  中图分类号:TP3
(连云港市建筑设计研究院 中心机房,连云港 222000)  摘要:本文介绍了打印机工作语言PCL及PS,简要地对PCL和与PS进行了技术分析,重点阐述了这两中语言的区别和应用环境。  关键词:PCL;PS;PCL及PS的区别和应用  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)06-1pppp-0c    Analyse Printer Language PCL
摘要:java.net中包含了网络通信所需要的类,文中主要阐述了使用JAVA编程语言对基于客户/服务器模式的应用编写网络通信程序,讨论了SOCKET机制的原理,重点介绍Java中输入输出流的概念以及程序实现代码。  关键词:JAVA;网络;SOCKET;APPLET  中图法分类号:TP311文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c    网络上的系统结构多为客
摘要:语料库作为一种新的学科,由语言学与文学之间融合而来,被广泛应用在小说、诗歌等文学作品的研究工作中。语料库这门学科的发展非常迅速,同时也为当今社会的文学批评工作带来了一种活力。本文以霍桑的《红字》为例,从语料库的视角进行分析与探讨。  关键字:语料库 文学批评 红字  引言  人的生活离不开学习,通过各种不同的学科学习,人们会从中学习到知识,而从文学作品中,人们会从中受到熏陶,得到一种精神文化
摘要:本文综合利用认证中心CA及SSL,防火墙、入侵检测技术和病毒防护技术设计一个基于认证子系统ASS(Authority Subsystem)和统一监控防护系统UMDS(United Monitor Defend System)的安全教务管理系统,保证教务管理系统的安全运行。  关键词:认证中心;加密套接字协议层;防火墙;入侵检测系统   中图分类号:TP315文献标识码:A文章编号:1009-
摘要:随着计算机及网络技术的迅猛发展,实时、高效、安全地管理计算机,更好地共享资源的各种技术成为人们研究的重点。本文针对传统C/S管理模式存在的问题,提出采用WMI技术来实现对计算机进行高效管理的方法,并给出获取远程计算机信息和远程控制计算机的具体实现。  关键词:WMI;C/S;远程控制;WMI脚本;VB.NET  中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2008)