详解一种基于ARM7支持触摸屏和实时操作系统的开发与应用.docxVIP

详解一种基于ARM7支持触摸屏和实时操作系统的开发与应用.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

??

?

??

详解一种基于ARM7支持触摸屏和实时操作系统的开发与应用

?

??

?

?

?

?

?

?

?

???

?

?

?

?

?

?

?

概述

随着信息技术的发展,支持图形界面的触摸操作和实时操作系统相结合的应用系统已经越来越广泛地应用到航空航天、军事、消费类电子、通讯设备等领域。mC/OS-II操作系统是一种占先式、实时操作系统(RTOS),由于其内核可拆减、可剥离性,使得它在实时控制领域中有着广泛的应用。它不仅减小了因为系统硬件设计缺陷带来的不可靠因素,而且增强了系统的控制实时性,从软件方面进一步增强了ARM控制系统的性能。另外,新版本的mC/OS-II已经通过了FAA认证,很适合应用于对实时性要求很高的嵌入式工业控制领域,如目前应用较广泛的军用战斗机、攻击机和火控系统等。

支持图形界面操作(mC/GUI)是一种较为流行的人机交互系统,它能够提供了友好的人机交互平台,使得微处理器成为大多数人都能够使用和接受的工具。与PC机不同,由于mC/OS-II基本为“黑盒”式操作系统,对人机界面的控制与开发需比较复杂的编程技术和时序控制技术。ARM7嵌入式实时控制系统对mC/GUI的要求更高,包括轻型、占用资源少、高性能、高可靠性及可配置等。因此,如何将ARM7、mC/GUI、mC/OS-II、触摸屏驱动和应用程序有机的结合起来,在ARM7上进行运行并完成用户想实现的任务,成为在嵌入式操作系统开发中的一项关键技术。

mC/OS-II嵌入式操作系统的移植

mC/OS-II作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步,协调各个硬件源不会冲突。与其它嵌入式操作系统相比,它具有系统透明、可拆减、接口简单的特点。下面就如何在S3C44B0进行操作系统移植和修改作简要的描述:

(1)重新修改OS_CPU.H文件

a)定义数据类型:mC/OS-Ⅱ不使用C语言中的short、int、long等与处理器类型有关的数据类型,而代之以移植性强的数据类型,这样既直观又便于移植;

b)定义堆栈增长类型和ARM运行的模式:虽然ARM处理器对堆栈向上与向下的两种增长方式都予以支持,但由于编译器ADS仅支持堆栈从上往下,并且必须是满递减堆栈,所以在文件中用来定义堆栈增长方式的常量OS_STK_GROWTH的值为1;

c)需对外部函数声明:如在mC/OS-II.h头文件中,有些要移植的函数已经声明,包括:OSTaskStkInit()、OSIntCtxSw(void)、OSStartHighRdy(void)。

(2)修改OS_CPU_C.C文件

a)任务堆栈初始化函数OSTaskStkInit():在编写任务堆栈初始化函数OSTaskStkInit()之前,必须先根据处理器的结构和特点确定任务的堆栈结构;

b)钩子函数:mC/OS-II为了用户在系统函数中书写自己的代码而预置了一些钩子函数(如OSTImeTIckHook),这些函数在移植时可全为空函数,可根据用户的需要添加。

(3)重点编写OS_CPU_A.S文件a)开/关中断函数:在ARM7处理器核中可利用改变程序状态寄存器CPSR中的相应控制位实现;

b)OSStartHighRdy(void):OSStart()函数调用OSStartHighRdy()来使就绪态任务中优先级最高的任务开始执行;

c)OS_TASK_SW(void):μC/OS-II通过调用OSSched()函数来完成任务调度的,OSSched()先将最高优先级任务的地址装载到OSTCBHighRdy,再通过调用OS_TASK_SW()执行任务级的任务切换,OS_TASK_SW主要完成保护现场,完成用于的任务,恢复现场;

d)OSIntCtxSw(void):OSIntExit()通过调用OSIntCtxSw(),在中断服务程序中执行任务切换功能。

e)时钟节拍函数:在本移植中,只使用了ARM的IRQ中断。由于不同的ARM芯片的中断系统并不完全一样,因此不可能编写出对所有使用ARM核的处理器通用的中断及节拍移植代码,但是这是后续任务管理中重点需要操作系统进行处理的,OSTIckISR的实现代码见程序清单。

程序清单OSTIckISR()

OSTickISR

STMFDSP!,{R0-R3,R12,LR}

BLOSIntEnter

BLuser_function;调用用户

处理的中断处理程序

BLOSIntExit

LDMFDSP!,{R0-R3,R12,LR}

S3C44B0触摸屏驱动程序编制

本文采用固定参考电压模式,在驱动程序开发过程中,需要关注时钟端、输入端和输出端的时序特性。首先检测PENIRQ是否为低电平,只有触摸屏有接触时此位才会为低电平。利用软件模拟DIN、DOUT和DCLK

文档评论(0)

+ 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档