0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

处理器S3C44BOX用中断方式在操作系统中进行多任务通信系统的实现

电子设计 来源:中国仪器仪表学会青年学 作者:王茜,习友宝 2021-05-27 10:26 次阅读

当今,各种嵌入式电子产品已经深入到我们生活的方方面面,嵌入式操作系统也已成为最热门的话题之一,其中免费型的实时操作系统μC/OS-Ⅱ因其可移植、可固化、可裁剪、可确定性等特点,已经成功的应用在很多商业产品上。在嵌入式操作系统中,对中断的处理分为两个部分:面向应用的编程接口部分和面向底层的处理部分,因为涉及这两部分的文件众多,关联复杂,对软硬件的熟悉程度要求较高,较之查询方式编写程序过程相应也要复杂一些,所以以往大多数应用都使用查询方式来进行数据通信。但使用中断方式可以提高处理器的工作效率以及提高对实时数据的处理实效,文章将着重讨论如何用中断方式在嵌入式操作系统μC/OS-Ⅱ上实现多任务通信。

S3C44BOX简介及ARMSDT215仿真环境简介

S3C44BOX是SAMSUNG公司推出的一款微处理器芯片,采用了ARM7TDM I内核,0.25μm工艺的CMOS标准宏单元和存储编译器[2]。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。S3C44BOX采用了一种新的总线结构SAMBAII(SAMSUNGARMCPU嵌入式控制器总线结构)。S3C44BOX最突出的特点是它的CPU核采用了ARM公司的16/32位ARM7TDMIRISC结构(主频66MHz)。S3C44BOX通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统的成本。ARMSDT(the ARMSoft ware Development Toolkit)是ARM公司推出的集成开发工具,由一整套应用程序、支持文档和例子构成,其目的是方便用户在ARM芯片上进行应用软件的开发。可以用来编写和调试ARM系列RISC处理器的应用程序,可以对C、C++或ARMassembly语言程序进行编译和调试。

实时操作系统μC/OS_Ⅱ及其在S3C44BOX上的移植

μC/OS_Ⅱ是一个占先式实时多任务内核,该内核属于抢占式,可以管理64个任务,但有8个任务保留以备将来使用,因此用户的应用程序最多可有56个任务。μC/OS_Ⅱ是完全可剥夺型的实时内核,即它总是运行就绪条件下优先级最高的任务。μC/OS_Ⅱ在S3C44BOX上的移植实质是指使μCOS_Ⅱ这个实时操作系统能够在S3C44BOX这个微处理器平台上运行。μC/OS_Ⅱ的绝大部分源码是用移植性很强的ANSIC写的,只有与微处理器硬件相关的部分是用汇编语言写的,所以整个移植工作可以分为两部分:一部分是设置与处理器和编译器相关的代码,另一部分是编写与操作系统相关的函数。μC/OS_Ⅱ的全部源代码量大约是5500行,源码清晰易读、结构协调,所以在将μC/OS_Ⅱ移植到S3C44BOX处理器上时,只需要修改以下几处:

在OSCPU.H文件中:与编译器相关的数据类型、堆栈的增长方向、定义S3C44BOX上实现开关中断的两个函数OSENTERCRITICAL()和OSEXITCRITICAL()和其他相关宏定义等;

在OSCPUC.C文件中:根据S3C44BOX的特定结构改写任务堆栈初始化函数OSTaskStkInit()、编写5个hook函数OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTimeTickHook():

在OSCPUA.ASM文件中:用汇编语言改写4个与处理器相关的函数OSStartHighRdy()、OSTASKSW()、OSIntCtxSw()、OSTickISR()。

用中断方式在μC/OS_Ⅱ上进行多任务通信系统的实现

以基于S3C44BOX实现串口和网络接口的透明数据传输接口板设计为例,介绍用中断方式实现多任务通信的实现。

硬件设计部分

硬件部分是由S3C44BOX、2Mbyte的FlashHY29LV160、8Mbyte的同步SDRAMK4S641632、MAX232接口芯片、RTL8019网络芯片组成。通过串口可以与近距离设备进行通信,网口则是对基于网络的远程控制器件提供接口,然后由嵌入式系统来实现对该设备的远程监控。系统结构如图1。

处理器S3C44BOX用中断方式在操作系统中进行多任务通信系统的实现

图1硬件结构图

硬件设计中,HY29LV160、RTL8019、K4S641632F的片选脚分别和S3C44BOX的引脚GCS0、GCS3、GCS6相连,因此这几个外围芯片的起始地址分别为0x00000000、0x06000000、0x0c000000。

软件设计部分

软件部分的主程序主要有三个任务,任务1是调用时间延时函数,它的优先级设置为最低,其作用是在没有串/网口任务时使LC/OS2进行一次任务调度,从而去执行下一个优先级最高的就绪态任务。任务2是对已在串口中断处理程序中判断了类型的接收数据进行相对应的处理。任务3则是对网口接收数据进行处理。此设计用中断方式来实现多任务通信的思想就是在中断处理程序中将数据接收下来,回到任务中再进行处理,这样可以避免查询方式中占用单个任务太多时间的缺点,从而让多任务通信进行得更迅速,更有效。

整个程序采用汇编语言和C语言编写,主要由三部分组成:与S3C44BOX硬件有关的初始化程序、应用主程序、修改过的LC/OS2源程序。该软件设计部分用来实现数据交换、远程控制、智能管理等功能。网口部分涉及到另一个重要内容嵌入式TCP/IP协议,因篇幅有限,只具体介绍串口部分,网口的实现方法与之相似。

应用主程序是用C编写,通过S3C44BOX的初始化程序中Bmain语句跳转进入的,首先对串口的端口、波特率、数据位等进行初始化,然后设定串口中断调用函数的地址,该地址和下面串口中断源的地址一致,然后通过对中断寄存器的设置打开串口中断,这时才开始启动任务,在任务中完成对串口数据的处理。在主程序中程序流程见图2。

图2应用主程序流程图

在编写与S3C44BOX硬件有关的初始化程序时主要是对S3C44BOX内部各寄存器进行初始化,S3C44BOX有七种异常中断向量,地址为0x00—0x1c(其中0x14地址保留),这些是硬件固化了的地址,不能用软件随意改变,只能根据各异常中断向量地址编写中断入口点,在入口地址处放置一条跳转指令,跳转到异常处理程序。当内部或外部中断产生时,程序会跳转到相对应的异常中断向量地址处,在应用主程序的初始化过程中已通过S3C44BOX内部寄存器INTMOD将串口中断设置为IRQ中断模式,所以在该部分程序中,当串口中断产生时,会跳转到IRQ异常中断向量地址处,根据跳转语句进入到对应的IRQ异常处理程序中。因为IRQ有30个中断源,所以在该处理程序中要判断中断源的类型,判断是串口中断后就跳转到位于操作系统中的串口中断处理调用程序中去。其中每个中断源的物理地址(起始地址加上矢量地址)是在数据段中定义的,起始地址则是根据硬件结构在option.a文件中设置,为0x0c7fff00。

串口中断处理调用程序位于μC/OS_Ⅱ源程序的OS_CPU_A.S文件中,中断处理程序是用C语言在44blib.c文件中根据具体项目要求编写的,之所以不直接跳转到中断处理程序中去,是因为在对串口中断处理过程中可能有优先级更高的任务进入就绪态,如在串口处理过程中若更高优先级的网口任务就绪,则进行任务的切换,任务的切换是在操作系统中进行的,所以该部分程序是必须的。在程序的开头处用IMPORT指令对中断处理函数进行申明,这样就能在程序中用BL指令直接调用位于44blib.c文件中的处理函数,处理函数主要是对各种串口数据进行识别和分类,然后交给任务去处理。程序流程如图3所示。

图3 调用程序

目前该硬件和软件已调试完成, 能准确迅速的收发数据, 并开始应用于电子标签阅读器的通信接口中。

结论

用中断方式在μC/OS-Ⅱ嵌入式操作系统上实现多任务通信, 较之传统的查询方式特别是在多任务情况下可以提高处理器S3C44BOX 的工作效率以及提高实时数据的处理实效, 对实际工程应用具有一定的参考价值。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19242

    浏览量

    229593
  • 芯片
    +关注

    关注

    454

    文章

    50677

    浏览量

    423005
  • 微处理器
    +关注

    关注

    11

    文章

    2257

    浏览量

    82390
收藏 人收藏

    评论

    相关推荐

    实时多任务操作系统

    实时多任务操作系统(Real Time multi-tasking Operation System, RTOS)实时多任务操作系统(RTOS)是嵌入式应用软件的基础和开发平台。目前
    发表于 08-12 14:31

    μC/OS-II操作系统各种处理器上的移植

    的工作就是操作系统的移植。本文选取使用较多的51单片机、LPC2210、NiosII三种处理器进行介绍。 1 μC/OS-II操作系统移植条
    发表于 08-14 09:46

    VxWorks操作系统基于ARM处理器中断怎么处理

    本文通过基于S3C44B0X处理器VxWorks嵌入式操作系统的BSP移植,详细分析了VxWorks操作系统基于ARM处理器
    发表于 04-27 06:28

    实时多任务操作系统(RTOS)

    策略允许两个或更多进程并发共享一个处理器时,事实上处理器某一时刻只会给一件任务提供服务。因为任务调度机制保证不同
    发表于 08-24 06:34

    S3C44BOX开发板上的设备是通过何种方式控制的?

    S3C44BOX开发板上的设备是通过何种方式控制的?
    发表于 05-09 16:01

    ARM CPU S3C44BOX水表智能抄表系统中的应用

    ARM CPU S3C44BOX水表智能抄表系统中的应用 介绍水表智能表系统的核心部分--抄表手机,以及如何用32位机S3C44BOX
    发表于 10-01 21:53 45次下载

    S3C44BOX与LMO57QCIT01的接口方法及其应用

    本文着重介绍了ARM7处理器S3C44BOX内置LCD控制的使用方法,简要介绍夏普LM057QC1TO1液晶显示模块以及它和S3C44BOX的接口方法。并在此基础之上,讨论了彩色英文
    发表于 11-23 15:41 28次下载

    关于三星S3C44BOX目标板的tClinux Bootlo

    S3C44BOX是常用的一款基于ARM7TDM1内核的RISC处理器。I.tClinux操作系统可以很好地支持此类无MMU的处理器。本文介绍了
    发表于 12-01 13:37 20次下载

    S3C44BOX视频信号模拟中的应用

    基于S3C44BOX 的视频信号模拟,是将高性能、低功耗的微处理器S3C44BOX 与嵌入式实时操作系统μ
    发表于 12-18 15:15 44次下载

    基于S3C44BOX的键盘接口设计

    本文介绍了键盘的工作原理,设计了基于 S3C44BOX 嵌入式微处理器的键盘硬件接口电路,研究了键盘程序的工作机制,在此基础上了给出了详细的程序流程图。
    发表于 01-13 16:51 47次下载

    S3C44BOX IIS音频接口与DMA应用实验

    S3C44BOX IIS音频接口与DMA应用实验
    发表于 07-13 20:30 53次下载

    基于嵌入式微处理器S3C44BOX音频文件播放

    摘要:基于ARM7内核S3C44BOX处理器内置ns总线和音频数模转换芯片CS4334,详细设计了S3C44B0x内置115总线接口和芯片CS4334的连接方法,搭建了以二者为基础的嵌入式工作平台.基于此工
    发表于 12-23 20:57 40次下载

    μC/OS-IIS3C44BOX处理器上的移植

     摘要:介绍实时操作系统μC/OS-II的特点和内核结构,给出μC/OS-IISamsung嵌入式S3C44BOX ARM7
    发表于 03-11 12:39 1317次阅读
    μ<b class='flag-5'>C</b>/OS-II<b class='flag-5'>在</b><b class='flag-5'>S3C44BOX</b><b class='flag-5'>处理器</b>上的移植

    基于S3C44BOX的嵌入式系统设计

    本文介绍了Samsung公司基于ARM7内核的S3C44BOX处理器的结构、功能、内部资源和存储特点及其具体应用,以及pC/OS - II嵌入式实时操作系统
    发表于 09-21 16:54 92次下载
    基于<b class='flag-5'>S3C44BOX</b>的嵌入式<b class='flag-5'>系统</b>设计

    基于ARM7的S3C44BOX开发板的智能家居系统

    选用三星公司的S3C44BOX ARM7开发板为硬件平台,以uClinux作为嵌入式操作系统实现对家庭网络中的信息家电进行监控,使用户能够了解家庭中信息家电的工作状况,对信息家电
    发表于 09-02 10:06 9次下载
    基于ARM7的<b class='flag-5'>S3C44BOX</b>开发板的智能家居<b class='flag-5'>系统</b>