>
首页 » 业界动态 » 基于uC/OS-Ⅱ的网络PDA总体结构设计与实现

基于uC/OS-Ⅱ的网络PDA总体结构设计与实现

作者:吴斌,杨根兴  时间:2007-04-16 14:12  来源:

摘要:叙述了基于uC/OS-Ⅱ的一款网络PDA的总体结构设计,阐述了本PDA的软件设计,包括实时操作系统uC/OS-Ⅱ、开源TCP/IP协议栈LWIP的选择、移植以及一些功能模块的设计实现。本PDA系统的设计、开发,为以后嵌入式系统应用开发积累了丰富的经验。

关键词:PDA;uC/OS-Ⅱ;结构设计;网络支持;TCP/IP;软件设计;移植

PDA是PersonalDigitalAssistant的缩写。对于早期的PDA我们可以称其为电子记事本,其功能较为单一,主要是管理个人信息,如通讯录、记事、日程安排、便笺、计算器、录音和辞典等功能。现在的PDA已经脱离了原有记事本的束缚,开始向电脑、智能手持设备靠近。PDA与Internet的互连有着广阔的应用前景,为此,我们研发了具有Internet接入功能的PDA。

基于uC/OS-Ⅱ的网络PDA硬件设计

如图1所示,基于uC/OS-Ⅱ的网络PDA硬件设计需要实现以下几个功能模块的连接。

 

图1 基于uC/OS-Ⅱ的网络PDA硬件功能模块的连接框图

CPU的选择——S3C44B0X
在本PDA的硬件设计中采用的是三星公司专为手持设备提供的高性价比、高性能的一款微处理器——S3C44B0X,它是ARM7TDMI核,晶振频率66MHz,芯片上还集成了8KBCache、LCD控制器、4个DMA通道、2通道UART、5通道PWM定时器、1个内部定时器、71个通用I/O口、实时时钟、8通道12位ADC等,使系统费用降至最低,消除了增加附加配
置的需要。

存储器
S3C44B0X分为8个Bank(Bank0-7),IO口地址和存储器地址空间统一编址,每个Bank可达32MB,总共可达256MB。在本次PDA的硬件设计中,系统1MB的线性Flash与处理器的Bank0相连接,存储的是系统初始化程序。此程序负责:管理处理器的中断服务程序;初始化硬件平台;进行系统自动检测;设置系统,然后负责把存储在16MB非线性Flash(与Bank1相连接)中system.bin复制到8MBSDRAM(与Bank6相连接)中0xC080000开始的地址空间,最后,把PC指针指向0xC080000,开始运行。

接口
根据应用需求,在本次PDA的硬件设计中提供了以下接口:

①通信及网络接口
●串行接口——两个独立的异步串行I/O口,皆可运行于中断/DMA模式。
●USB接口——通过USB节点控制器(US2BN9603)扩展出一个USB设备接口。
●以太网接口——提供一个10Mb/s的以太网控制接口(RTL8019AS)。

②人机交互接口
●LCD——采用320*240分辨率液晶显示屏。
●键盘——通过S3C44B0X的rPDATC(低四位)和RPdate(4~7位)扩展出4*4的键盘。
●触摸屏——采用ADS7843作为触摸屏的A/D转换接口。

电源
S3C44B0X有四种电源控制模式:正常模式、低能模式、休眠模式和停止模式,这几种模式的合理使用可以显著降低CPU的功耗,有效节电。

基于uC/OS-Ⅱ的网络PDA软件设计

PDA的软件架构的上层是应用编程接口和应用程序(记事本、计算器、网络浏览器等),下层则是实时嵌入式操作系统和硬件驱动程序。在整个系统中软件/硬件应该结合紧密,协调工作,共同实现预定的系统功能,因此软件架构的最底层是直接和硬件打交道的设备驱动程序。为了保证应用程序执行的实时性、可靠性,在硬件驱动程序之上,我们选配了实时操作系统uC/OS-Ⅱ作为开发平台,根据该开发平台提供的简单API函数接口,进而实现记事本、计算器、网络浏览器等应用程序。由于本PDA要实现与Internet的互连,所以在这里,我们以开源TCP/IP协议栈LWIP为基础,给uC/OS-Ⅱ加上了网络支持。


 基于uC/OS-Ⅱ的网络PDA软件总体框架如图2所示。

 

 图2基于uC/OS-Ⅱ的网络PDA软件总体框架

uC/OS-Ⅱ的移植
uC/OS-Ⅱ是一个免费的源代码公开的实时嵌入式内核,它提供了实时系统所需的基本功能。uC/OS-Ⅱ90%以上的代码都是用C语言编写的,结构简洁,可以很方便地直接移植到各种微处理器上。 uC/OS-Ⅱ短小精悍,其包含全部功能的核心部分代码只占用8.3kB。因此,在进行网络PDA软件设计时,我们选择了uC/OS-Ⅱ作为操作系统。

在本次网络PDA的设计中,我们需要将uC/OS-Ⅱ移植到基于ARM7TDMI的微处理器S3C44B0X上。移植需要完成的工作非常简单,只需要修改三个和ARM体系结构相关的文件,代码量大约是500行。以下分别介绍这三个文件的移植工作。

①设置OSCPU.H中与处理器和编译器相关的工作。这里使用的是GNU的armelfgcc编译器。

②用C语言编写6个操作系统相关的函数(OSCPUC.C):

●任务堆栈初始化OSTaskStkInit()
●系统hook函数:
OSSTaskCreateHook()
OSTaskDelHook()
OSTaskSwHook()
OSTaskStatHook()
OSTimeTickHook()

③用汇编语言编写4个与处理器相关的函数(OSCPU.ASM)
●OSStartHighRdy():运行优先级最高的就绪任务
●OSCtxSw():任务级的上下文切换函数
●OSIntCtxSw():中断级的任务切换函数
●OSTickISR():时钟中断处理函数
●ARMEnableInt()&ARMDisableInt():退出临界区和进入监界区的宏指令实现
完成了上述工作以后,uC/OS-Ⅱ就可以正常运行在S3C44B0X处理器上了。

TCP/IP的移植
在本PDA的设计中,我们以开源TCP/IP协议栈LWIP为基础,给uC/OS-Ⅱ加上了网络支持。LWIP是Swedish Institute of Computer Science开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。 LWIP是指LightWeightIP协议。LWIPTCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要数十kBRAM和40kB左右的ROM就可以运行,这使LWIP协议栈适合在低端嵌入式系统中使用。

LWIP协议栈在设计时就考虑到了将来的移植问题,把所有与硬件、OS、编译器相关的部分独立出来,放在/src/arch目录下。因此LWIP在uC/OS-Ⅱ上的实现就是修改这个目录下的文件,其他的文件一般不用修改。下面简单介绍LWIP的移植工作:

①修改与CPU或编译器相关的include文件:cc.h、cpu.h、perf.h,正确设置数据长度,字的高低位顺序等。

②修改sysarch.h和sysarch.c中与操作系统相关部分。

③LWIP协议栈中用到了6个外部函数(libarch.c),这些函数与用户使用的系统或编译器有关,因此需要自己实现。

④/src/netif/ethernetif.c文件即为网络驱动的模板,我们可以参照此模板实现选用的网络设备驱动。做完上面的移植修改工作以后,就可以在uC/OS-Ⅱ中初始化LWIP,并创建TCP或UDP任务了。

PDA传统功能的实现
PDA的传统功能主要是指管理个人信息的一些功能,例如:记事本、地址簿以及时钟、日历、计算器等。

由于本PDA选用16M非线性FLASH存储器,可以存储较大数据量的用户信息,因此根据应用需求,本PDA设计并实现了下列常用功能:

①记事本——可以存储200个具有标题和内容的记事信息。
②地址簿——可以记录400个地址信息。并可根据各种关键字进行查询。
③计算器——包括简单及科学计算器两类。
④日历——提供1930~2029年之间100年的公农历换算。
⑤时钟——提供s级时钟,并可设置定时提醒。
⑥游戏——提供扫雷、五子棋等游戏。
⑦英汉输入法——本PDA选用Unicode字符集,实现了西文字符、汉字、阿拉伯数字等的显示。基于触摸屏的软键盘输入方便了用户输入信息,并实现了汉字拼音输入法。

结束语

上面我们讨论了网络PDA的总体框架设计,实现了网络PDA的硬件和软件架构。目前,网络PDA的硬件和软件工作都已基本完成,正在进行最后的整合测试。我相信随着网络环境的日趋成熟,能够与In2ternet进行互连的PDA产品必将成为PDA市场中的佼佼者。

相关推荐

统一通信必须要回归本质

IP  通信  2013-08-23

运营商搅局手机OS市场:储备核心技术

智能手机  OS  2013-07-10

芯片设计全程服务成国内企业切入IP布局关键点

芯片设计  IP  2013-07-01

Gartner公布2012全球IP厂商排名

ARM  IP  2013-06-14

Cadence宣布收购Tensilica

Cadence  IP  2013-03-13

诺基亚CEO:推行双OS战略 高端继续专注于WP

诺基亚  OS  2013-02-26
在线研讨会
焦点