论文部分内容阅读
摘要:随着计算机技术和电子技术的日益发展,衍生出了有别与以往的单纯的计算机软硬件和电子技术的嵌入式系统。嵌入式系统已经应用到人们生活,工作,学习的方方面面。本文主要讨论的是目前主流的嵌入式微处理器ARM,并以S3C44B0X和μCOS-II搭建平台,阐述嵌入式系统开发平台的架构、系统工作原理及应用程序开发流程。
关键词:嵌入式系统;ARM;S3C44B0X;μCOS-II
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)12-21601-02
Based on S3C44B0X and μCOS-II Embedded System Platform Design Analysis and Research
KONG Wei-qing,FAN Xiao-nan,CHEN Dai-mei
(Anhui University of Science and Technology,Huainan 232001,China)
Abstract:While the computer and electronic technology flourishing today, the embedded system comes to industrial field that is quite different from the conventional computer software and hardware and the electronic technology which functions widely in our daily life. In this paper, a prevalent embedded micro-processor ARM is introduced with the platform of S3C44B0X and μCOS-II, and elaborats how to build a develop platform of embedded system,the system principle of work and the application programming flow.
Key words:Embedded system;ARM;S3C44B0X;μCOS-II
1 引言
经过几十年的发展,嵌入式系统已经改变了人们的生活,深入到人们生活的方方面面,而且这种改变还在加速,现实中的嵌入式系统无处不在。当然,要给嵌入式系统下个定义,远非那么简单,所以这里引用IEEE对嵌入式系统的定义:嵌入式系统是:“用于控制、监视或者辅助操作机器和设备的装置”。本文讨论的主要是基于ARM的32位嵌入式系统开发平台的架构。一般情况下,从头开始设计一个系统通常是很花费时间和精力的,因此很多公司都提供了所谓的“开发平台”。开发平台为使用者提供了成熟的、开放式的软硬件资源,并且提供界面友好、功能强大的开发工具环境。利用这些资源,就能够方便地进行各种嵌入式系统产品的二次开发。
2 系统平台框架设计及开发流程
2.1 系统架构及流程:
由于嵌入式系统是一个受资源限制的系统,因此直接在嵌入式系统硬件(如ARM开发板)上进行编程显然是不合理的。我们通常采用的方法是:先在通用PC上进行编程,然后通过交叉编译和链接,将程序编译和链接成二进制的代码,最后下载到目标平台上的特定位置(如FLASH中),由开发板启动运行这段二进制代码,从而运行起一个嵌入式系统。
上述流程可见下面的流程图:
图1 系统开发流程图
2.2 软硬件平台:
PC机,S3C44B0X开发板, JTAG小板,安装在通用PC机上的一种IDE(如ADS1.2),JTAG调试代理,超级终端以及FLASHRMG等软硬件配置。S3C44B0X上的JTAG口接PC机上的并口,但需要在PC机上运行JTAG.exe这个调试代理,而板上的UART口则连接PC机上的串口。
2.3 S3C44B0X启动过程及地址空间的分配:
系统上电复位时,处理器就从0x0地址处开始取得指令运行。由于C程序的运行需要具备一定的条件,例如分配好的外部数据空间、堆栈空间和中断入口等。因此在编写应用程序之前要在程序入口处(0x0)加入必要的初始化代码,即Bootloader。S344B0X可以对8个bank进行寻址,每个bank的最大空间为32MB。由于整个平台都是以处理器为核心的,为了使处理器对各个设备的访问互不干扰,就将不同类型的设备映射到不同的bank内。在本文所用的S3C44B0X平台上,bank的空间分配如下:
图2 外设在S3C44B0X中寻址空间的安排
2.4 设置系统的程序空间和数据空间:
通过对链接器的参数设置来完成。将只读基地址(程序空间的开始地址)-r0-base 设置为0x0,读写基地址(数据空间的开始地址)-rw-base 设置为0x0c000000。在仿真调试程序时,即用JTAG进行在线调试时,将-r0-base 设置为0x0c000000,而将-rw-base设置为更高地址的位置上,比如0x0c400000,只要保证不和程序空间发生冲突。
3 嵌入式微处理器S3C44B0X
3.1 S3C44B0X简介:
S3C44B0X是三星公司生产的基于ARM7TDMI核的微处理器,采用了0.25μm CMOS工艺制造,并在ARM7TDMI核基本功能的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统,是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。嵌入式系统的硬件是以嵌入式处理器为核心,配置必要的外围接口部件。见下图:
图3 S3C44B0X的扩展硬件结构图
3.2S3C44B0X中的存储器:
在基于ARM核的嵌入式应用系统中可能包含多种类型的片外存储器,如FLASH、ROM、SRAM、SDRAM等。
3.2.1 FLASH:
由于S3C44B0X本身不具有ROM,所以必须外接ROM器件来储存断电后仍需保存的代码和数据。FLASH具有非易失性,并且可以轻易擦写,因此,得到广泛的运用。这里以SST39VF160为例。如图4 所示,电路采用一片1MB×16位的FLASH(SST39VF160), FLASH ROM采用标准总线接口与处理器交互,处理器通过片选NGCS0与片外FLASH芯片相连。由于是16位的FLASH,空间为0x00000000-0x00200000。FLASH ROM的数据接口为DQ15~0,因此數据宽度是16位。
图4 接口电路
CPU对FLASH的接口不需要任何软件上的设置,但是要想使CPU正常的对FLASH进行操作,需要2个硬件上的设置:大/小端和Bank0总线宽度。一般情况下:系统都默认使用小端模式。由于FLASH映射在Bank0区,它可能有多种数据总线宽度,这个宽度可以通过硬件来进行设置,即通过OM1~0引脚上的逻辑电平进行设置。如图5所示:
图5 Bank0的数据总线宽度设置
由于这里采用SST39VF160的存储单元组织方式为1M×16b,因此应将Bank0的数据总线宽度设置为01,这样就设置好了总线宽度。
3.2.2 SDRAM:
通常RAM分为SRAM和DRAM两种。这里主要介绍SDRAM(同步动态RAM)。与FLASH相比,SDRAM不具有断电保持数据的特性,但其存取速度大大高于FLASH,且具有读/写的属性,因此,SDRAM在系统中主要用作程序的运行空间,数据以及堆栈区。SDRAM的基本原理和DRAM基本一样,但是这些存储单元的组织和控制就和DRAM大不一样了。SDRAM是多Bank结构,例如在一个具有2个Bank的SDRAM器件中,其中一个Bank在进行预充电期间,另一个Bank却马上就可以被读取,这样进行一次读取以后,又马上可以去读取另一个以及预充电的Bank的数据,无需等待而是可以直接读取。
4 操作系统μCOS-II
4.1 操作系统引入:
由于32位嵌入式系统性能较之8位的MCU已经有很大的提高,而且现在嵌入式开发过程中,完成的功能越来越强,所以代码量也急速增加,为了减少人们在嵌入式系统开发过程中的工作量以及降低人们在开发中的出错率,现在的嵌入式系统中一般都引入操作系统。
4.2 μCOS-II介绍:
μCOS-II是一个简洁、可裁减、可移植固化抢先式的多任务实时的嵌入式操作系统,可用于各种微处理器。由于它高效、简洁和源代码公开,所以现在越来越多的嵌入式系统开发者选用μCOS-II作为开发产品的操作系统。
4.2.1 μCOS-II的移植及判断是否移植成功:
所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行。由于μCOS-II大部分的代码都是用ANSI C编写的,所以较之其他的OS,移植μCOS-II还是比较容易实现的,但是在编写与处理器硬件相关的代码时还是不得不使用汇编语言。移植的主要工作就是编写这些与处理器硬件相关的代码。
4.2.2 μCOS-II的扩展和使用:
μCOS-II操作系统只提供任务运行的内核程序,要实际使用它还要进行μCOS-II的扩展编程,这样才能使其成为一个实用的OS。扩展包括:为外设建立驱动程序及相应的API、创建GUI(如μCGUI、MiniGUI等)、文件系统等。
使用μCOS-II范例:以下函数实现在μCOS-II中创建2个任务Task1和 Task2,任务堆栈为Stack1和Stack2,任务的优先级为3和4。
Void main(void )
{ OSInit(); /* 初始化μCOS-II */
OSTaskCreate(task1,(void )0,&stack1[STACKSIZE-1],3);/*创建了任务Task1*/
OSTaskCreate(task2,(void )0,&stack1[STACKSIZE-1],4);/*创建了任务Task2*/
OSStart(); /* 开始任务调度 */ }
任务Task1和Task2是2个无限循环的函数,可以将要实现的功能放到2个任务里。
5 未来展望
8位MCU由于其性能方面的局限性,已经无法满足嵌入式技术的不断发展的要求。而且现在ARM核价格也在不断的下降,取代8位微控制器是大势所趋。嵌入式Internet是近几年发展起来的一项新的概念和技术。随着Internet技术
的不断成熟,宽带传送速度的不断提高,网上提供的信息内容日趋丰富,应用项目多种多样。
6 結束语
本文的着眼点:不仅对S3C44B0X和μCOS-II的一些重要功能、特点、工作原理、开发流程、硬件电路的搭建方面做
介绍,而且将二者融合在一起,从整体的角度,从设计开发的角度透彻的分析了如何搭建嵌入式平台。现已在本开发平台上已经顺利的进行了μCOS-II的移植,UART等基础实验,系统稳定性得到了实践的验证。由性能卓越的S3C44B0X和简洁高效的μCOS-II能够快捷地构建出性能稳定的系统平台。在此开发平台上只需搭载适当的应用程序,即可开发出实用的产品。
参考文献:
[1]Labrosse JJ.嵌入式实时操作系统μCOS-II(第2版).邵贝贝.等译.北京:北京航空航天大学出版社,2003.
[2]马文华.嵌入式系统设计与开发[M].北京:科学出版社,2006.
[3]三星公司.S3C44B0X Data Sheet 数据手册[M].http://www.samsung.com.
[4]ARM7TDMI(Rev 4) Technical Reference Manual.ARM DDI 0210B.2001 ARM Ltd.
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
关键词:嵌入式系统;ARM;S3C44B0X;μCOS-II
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)12-21601-02
Based on S3C44B0X and μCOS-II Embedded System Platform Design Analysis and Research
KONG Wei-qing,FAN Xiao-nan,CHEN Dai-mei
(Anhui University of Science and Technology,Huainan 232001,China)
Abstract:While the computer and electronic technology flourishing today, the embedded system comes to industrial field that is quite different from the conventional computer software and hardware and the electronic technology which functions widely in our daily life. In this paper, a prevalent embedded micro-processor ARM is introduced with the platform of S3C44B0X and μCOS-II, and elaborats how to build a develop platform of embedded system,the system principle of work and the application programming flow.
Key words:Embedded system;ARM;S3C44B0X;μCOS-II
1 引言
经过几十年的发展,嵌入式系统已经改变了人们的生活,深入到人们生活的方方面面,而且这种改变还在加速,现实中的嵌入式系统无处不在。当然,要给嵌入式系统下个定义,远非那么简单,所以这里引用IEEE对嵌入式系统的定义:嵌入式系统是:“用于控制、监视或者辅助操作机器和设备的装置”。本文讨论的主要是基于ARM的32位嵌入式系统开发平台的架构。一般情况下,从头开始设计一个系统通常是很花费时间和精力的,因此很多公司都提供了所谓的“开发平台”。开发平台为使用者提供了成熟的、开放式的软硬件资源,并且提供界面友好、功能强大的开发工具环境。利用这些资源,就能够方便地进行各种嵌入式系统产品的二次开发。
2 系统平台框架设计及开发流程
2.1 系统架构及流程:
由于嵌入式系统是一个受资源限制的系统,因此直接在嵌入式系统硬件(如ARM开发板)上进行编程显然是不合理的。我们通常采用的方法是:先在通用PC上进行编程,然后通过交叉编译和链接,将程序编译和链接成二进制的代码,最后下载到目标平台上的特定位置(如FLASH中),由开发板启动运行这段二进制代码,从而运行起一个嵌入式系统。
上述流程可见下面的流程图:
图1 系统开发流程图
2.2 软硬件平台:
PC机,S3C44B0X开发板, JTAG小板,安装在通用PC机上的一种IDE(如ADS1.2),JTAG调试代理,超级终端以及FLASHRMG等软硬件配置。S3C44B0X上的JTAG口接PC机上的并口,但需要在PC机上运行JTAG.exe这个调试代理,而板上的UART口则连接PC机上的串口。
2.3 S3C44B0X启动过程及地址空间的分配:
系统上电复位时,处理器就从0x0地址处开始取得指令运行。由于C程序的运行需要具备一定的条件,例如分配好的外部数据空间、堆栈空间和中断入口等。因此在编写应用程序之前要在程序入口处(0x0)加入必要的初始化代码,即Bootloader。S344B0X可以对8个bank进行寻址,每个bank的最大空间为32MB。由于整个平台都是以处理器为核心的,为了使处理器对各个设备的访问互不干扰,就将不同类型的设备映射到不同的bank内。在本文所用的S3C44B0X平台上,bank的空间分配如下:
图2 外设在S3C44B0X中寻址空间的安排
2.4 设置系统的程序空间和数据空间:
通过对链接器的参数设置来完成。将只读基地址(程序空间的开始地址)-r0-base 设置为0x0,读写基地址(数据空间的开始地址)-rw-base 设置为0x0c000000。在仿真调试程序时,即用JTAG进行在线调试时,将-r0-base 设置为0x0c000000,而将-rw-base设置为更高地址的位置上,比如0x0c400000,只要保证不和程序空间发生冲突。
3 嵌入式微处理器S3C44B0X
3.1 S3C44B0X简介:
S3C44B0X是三星公司生产的基于ARM7TDMI核的微处理器,采用了0.25μm CMOS工艺制造,并在ARM7TDMI核基本功能的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统,是三星公司专为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案。嵌入式系统的硬件是以嵌入式处理器为核心,配置必要的外围接口部件。见下图:
图3 S3C44B0X的扩展硬件结构图
3.2S3C44B0X中的存储器:
在基于ARM核的嵌入式应用系统中可能包含多种类型的片外存储器,如FLASH、ROM、SRAM、SDRAM等。
3.2.1 FLASH:
由于S3C44B0X本身不具有ROM,所以必须外接ROM器件来储存断电后仍需保存的代码和数据。FLASH具有非易失性,并且可以轻易擦写,因此,得到广泛的运用。这里以SST39VF160为例。如图4 所示,电路采用一片1MB×16位的FLASH(SST39VF160), FLASH ROM采用标准总线接口与处理器交互,处理器通过片选NGCS0与片外FLASH芯片相连。由于是16位的FLASH,空间为0x00000000-0x00200000。FLASH ROM的数据接口为DQ15~0,因此數据宽度是16位。
图4 接口电路
CPU对FLASH的接口不需要任何软件上的设置,但是要想使CPU正常的对FLASH进行操作,需要2个硬件上的设置:大/小端和Bank0总线宽度。一般情况下:系统都默认使用小端模式。由于FLASH映射在Bank0区,它可能有多种数据总线宽度,这个宽度可以通过硬件来进行设置,即通过OM1~0引脚上的逻辑电平进行设置。如图5所示:
图5 Bank0的数据总线宽度设置
由于这里采用SST39VF160的存储单元组织方式为1M×16b,因此应将Bank0的数据总线宽度设置为01,这样就设置好了总线宽度。
3.2.2 SDRAM:
通常RAM分为SRAM和DRAM两种。这里主要介绍SDRAM(同步动态RAM)。与FLASH相比,SDRAM不具有断电保持数据的特性,但其存取速度大大高于FLASH,且具有读/写的属性,因此,SDRAM在系统中主要用作程序的运行空间,数据以及堆栈区。SDRAM的基本原理和DRAM基本一样,但是这些存储单元的组织和控制就和DRAM大不一样了。SDRAM是多Bank结构,例如在一个具有2个Bank的SDRAM器件中,其中一个Bank在进行预充电期间,另一个Bank却马上就可以被读取,这样进行一次读取以后,又马上可以去读取另一个以及预充电的Bank的数据,无需等待而是可以直接读取。
4 操作系统μCOS-II
4.1 操作系统引入:
由于32位嵌入式系统性能较之8位的MCU已经有很大的提高,而且现在嵌入式开发过程中,完成的功能越来越强,所以代码量也急速增加,为了减少人们在嵌入式系统开发过程中的工作量以及降低人们在开发中的出错率,现在的嵌入式系统中一般都引入操作系统。
4.2 μCOS-II介绍:
μCOS-II是一个简洁、可裁减、可移植固化抢先式的多任务实时的嵌入式操作系统,可用于各种微处理器。由于它高效、简洁和源代码公开,所以现在越来越多的嵌入式系统开发者选用μCOS-II作为开发产品的操作系统。
4.2.1 μCOS-II的移植及判断是否移植成功:
所谓移植,就是使一个实时内核能在其他的微处理器或微控制器上运行。由于μCOS-II大部分的代码都是用ANSI C编写的,所以较之其他的OS,移植μCOS-II还是比较容易实现的,但是在编写与处理器硬件相关的代码时还是不得不使用汇编语言。移植的主要工作就是编写这些与处理器硬件相关的代码。
4.2.2 μCOS-II的扩展和使用:
μCOS-II操作系统只提供任务运行的内核程序,要实际使用它还要进行μCOS-II的扩展编程,这样才能使其成为一个实用的OS。扩展包括:为外设建立驱动程序及相应的API、创建GUI(如μCGUI、MiniGUI等)、文件系统等。
使用μCOS-II范例:以下函数实现在μCOS-II中创建2个任务Task1和 Task2,任务堆栈为Stack1和Stack2,任务的优先级为3和4。
Void main(void )
{ OSInit(); /* 初始化μCOS-II */
OSTaskCreate(task1,(void )0,&stack1[STACKSIZE-1],3);/*创建了任务Task1*/
OSTaskCreate(task2,(void )0,&stack1[STACKSIZE-1],4);/*创建了任务Task2*/
OSStart(); /* 开始任务调度 */ }
任务Task1和Task2是2个无限循环的函数,可以将要实现的功能放到2个任务里。
5 未来展望
8位MCU由于其性能方面的局限性,已经无法满足嵌入式技术的不断发展的要求。而且现在ARM核价格也在不断的下降,取代8位微控制器是大势所趋。嵌入式Internet是近几年发展起来的一项新的概念和技术。随着Internet技术
的不断成熟,宽带传送速度的不断提高,网上提供的信息内容日趋丰富,应用项目多种多样。
6 結束语
本文的着眼点:不仅对S3C44B0X和μCOS-II的一些重要功能、特点、工作原理、开发流程、硬件电路的搭建方面做
介绍,而且将二者融合在一起,从整体的角度,从设计开发的角度透彻的分析了如何搭建嵌入式平台。现已在本开发平台上已经顺利的进行了μCOS-II的移植,UART等基础实验,系统稳定性得到了实践的验证。由性能卓越的S3C44B0X和简洁高效的μCOS-II能够快捷地构建出性能稳定的系统平台。在此开发平台上只需搭载适当的应用程序,即可开发出实用的产品。
参考文献:
[1]Labrosse JJ.嵌入式实时操作系统μCOS-II(第2版).邵贝贝.等译.北京:北京航空航天大学出版社,2003.
[2]马文华.嵌入式系统设计与开发[M].北京:科学出版社,2006.
[3]三星公司.S3C44B0X Data Sheet 数据手册[M].http://www.samsung.com.
[4]ARM7TDMI(Rev 4) Technical Reference Manual.ARM DDI 0210B.2001 ARM Ltd.
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”