当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]嵌入式实时操作系统μC/OS-II串口通信的设计与实现

摘要:为解决实时操作系统μC/OS-II串口通信设计中信号量、消息邮箱使用方法的问题,提出了一种以STM32V评估板为硬件平台和μC/OS-Ⅱ的串口通信程序设计方案。该方案采用Cortex-M3架构的ARM处理器STM32F103VB作为主控制芯片,ST3232作为串口通信电平转换器。软件设计部分描述了信号量、消息邮箱的应用场合和基本操作方法,通过信号量和消息邮箱的配合使用保证任务间的数据传输的同步性。给出了整个程序中的设计思路,程序开发使用STM32F103VB处理器自带的固件库,减少了繁琐的寄存器配置,降低了程序开发强度。实验验证了在2种不用通信速率下数据传输具有误码率低、传输稳定可靠的特点,并且若能够配合相应的数据校验算法就可将其应用于工业现场的数据通信。
关键词:实时操作系统;μC/OS-II;信号量;消息邮箱;串口通信;STM32F103VB;ST3232

    ARM是目前嵌入式领域中应用最广泛的RISC微处理器结构,以低成本、低功耗、高性能的特点占据了嵌入式系统应用领域的领先地位,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场。STM32F103VB是基于ARM新内核Cortex-M3的通用微处理器,STM32V评估板是基于该芯片的学习板并集成了仿真调试器(Ulink_Me),可以方便用户快速学习和开发用户程序。目前常见的嵌入式系统有:WinCE、Linux、pSoS、VxWorks和μC/OS-II等。μC/OS-Ⅱ是专门为嵌入式系统应用设计的,具有源码公开、实时性好、可移植裁剪、高效稳定和教学科研免费使用等特点,已经成功移植到8、16、32和64位等多种微处理器上,广泛应用于照相摄影、医疗器械、音响设备、工业机器人控制、发动机控制、航空器、高速公路电话系统、自动提款机等众多领域。这里以STM32V评估板为硬件开发平台,结合μC/OS-II嵌入式操作系统,设计了基于信号量、消息邮箱的串口通信应用程序。

1 信号量、消息邮箱
    μC/OS-II由事件(Event)驱动,一般事件包括信号量(Semaphores)、互斥信号量(Mutex semaphores)、消息邮箱(Message Mail boxes)、消息队列(Message Query)、事件标志组(Event Flag Group)等。其中信号量和消息邮箱作为一种常见的通信机制,在数据通信过程中应用最为广泛。
1.1 信号量(Semaphores)
    μC/OS-II的信号量由2部分组成:一个是信号的计数值(0~65 535);另一个是由等待该信号量的任务组成的等待任务列表。信号量可用于以下场合:允许一个任务与其他任务或中断同步;取得共享资源的使用权(满足互斥条件);标志事件的发生。
    对信号量一般可以实施以下3种操作:初始化(INITIALIZE)信号量或者称为创建信号量(CREATE);等待信号量(WAIT)或者称为挂起信号量(PEND);发送信号量(POST)。
    信号量在初始化过程中需要给信号量赋初值,等待信号量的任务表(WAWING LIST)应清为空。信号量的使用需要调用相应的函数并配置其相关的宏定义,具体如表1所示。


1.2 消息邮箱(Message Mail boxes)
    消息邮箱能使任务或中断服务向另外一个任务发送一个指针型的变量,这个指针指向一个包含指定“消息”的数据结构。消息邮箱发送的不是消息本身,而是消息的地址指针。
    消息邮箱可用于通知一个事件发生或作为二值信号量使用。消息邮箱的工作原理是邮箱在初始化时建立一个等待消息的任务列表,当邮箱为空时,等待消息的任务就挂起,并且被加入到等待消息的任务列表中。当邮箱收到消息时,等待任务列表中优先级最高的任务或者最先等待消息的任务得到消息,且转入就绪并从任务列表中清除。
    对消息邮箱的操作一般有3种:邮箱初始化(INITIALIZE),或者称为建立邮箱(CREATE);发送消息给邮箱(POST);等待消息进入邮箱(PE-ND);无等待请求邮箱消息(ACCEFT)。
    消息邮箱的使用需要调用相应的函数并配置其相关的宏定义,具体如表2所示。

[!--empirenews.page--]

2 硬件开发设计
2.1 硬件开发平台
    以STM32V评估板为硬件开发平台,该评估板采用ST公司32位ARM微处理器STM32F103VB,该芯片最大时钟频率72 MHz,内置大容量存储器包括128 KB的高速Flash和20 K的SRAM,丰富的外设接口:80个高速I/O接口,3个USART,2个I2C,2个SPI,7通道的DMA,RTC等。STM32V开发板将这些外设接口全部引出,自带LCD液晶显示并集成调试工具,用户可方便设计、调试和查看程序运行结果等。评估板功能模块组成如图1所示,主要包括以下部分:模拟输入信号部分、跳线配置、USB电源供给、液晶显示、串口通信、CAN通信、复位/输入按钮、LED显示和SD卡存储。


2.2 通信电路
    计算机与外界的信息交换称为通信。通信基本方式分为串行通信和并行通信两种。串行通信是指一个数据是逐位顺序传送的通信方式,串行通信有同步和异步两种基本的通信方式。
    其中,同步通信是通过同步时钟来实现发送和接收数据的同步。而异步通信规定了字符数据的传送格式,即每个数据以相同的帧格式传送。每一帧信息由起始位、数据位、奇偶校验位和停止位组成。依据起始位在每个字符数据开始时使发送和接收同步,停止位则作为字符结束的标志。
    PC机的串行通信接口采用的是EIA RS-232E标准串行通信协议。在本设计中,主控芯片STM32F103VB的接口采用TTL电平,规定0~0.8 V为“0”电平,2~5V为“1”电平,它不能直接与PC机标准串行通信接口连接,必须设计TTL电平到RS-232协议电平信号的转换电路。串口RS-232电平与STM32F103VB微处理器TTL电平转换由开发板上的ST3232完成,接口电路如图2所示。

3 软件开发设计
    选择RealView MDK软件作为开发工具,它是针对各种嵌入式处理器开发的软件开发工具。与ARM之前的工具包ADS等相比,RealView编译器可将代码密度提高10%,性能改善20%,并且支持ARM7、ARM9和最新的Cortex-M3核处理器。编程语言可以使用C或者C++语言,支持在线调试。
    嵌入式实时操作系统μC/OS-Ⅱ可以管理256个任务,除了系统任务外,用户应用程序最多可以有248个任务,而中断嵌套的层数最多也可以到255层。任务创建过程包含了任务堆栈大小的设置、优先级分配以及在通信或保持同步过程中使用的信号量和邮箱。在STM32V评估板上通过RS232接口实现了评估板与PC机的通信,软件设计流程如图3所示,在完成相应的初始化之后,创建程序设计中用到的信号量和消息邮箱,紧接着需要创建应用任务,最后启动系统。

[!--empirenews.page--]
    由该流程图可以看出:本程序设计中创建了4个任务,即LED显示任务,液晶显示任务,串口数据发送任务和数据发送控制任务。每一个任务都要有相应的优先级和任务堆栈空间,程序设计中每个任务的堆栈空间为512个字节,优先级依次为11,13,4,6。
    ST公司用标准的ANSI C封装了ARM微处理器中各个功能寄存器,为用户应用程序的开发提供了丰富的固件库(Firmware)。固件库方便用户对底层微处理器外设进行初始化配置,如串口初始化函数为void USARTConfigurtion(void),具体代码如下:

    初始化操作包括了时钟初始化、中断初始化,I/O接口初始化,串口初始化等。主程序在完成初始化操作后创建信号量、消息邮箱和任务创建。由于信号量、邮箱都是事件类型,所以需用OS_EV-ENT来定义,信号量、邮箱的建立由函数App_EventCreate()完成。

    使用信号量和消息邮箱可以保持任务之间的通信的同步,串口数据发送任务App_TaskSendata(void-*p_arg)发送信号量App_UserIFSem通知数据发送控制任务App_TaskSendata Ctrl(void*p_arg),数据发送控制任务在接收到信号量App_User IFSem后,发送消息(www.Real Vie-w.com\n)给指定邮箱App_UserIFMbox,串口调用数据发送函数USART_Send Data(),串口数据发送任务数据发送完成后发送通知信号量App_ UserIFSeml给数据发送控制任务,数据发送控制任务在接收到发送完成信号量App_UserIFSeml后,向指定邮箱发送另一则消息(www.xust.   edu.cn\n),数据发送任务在接收到消息邮箱后通过串口发送接收到的消息内容给PC机。具体代码如下:

[!--empirenews.page--]


    图4为串口通信波特率设定为9 600 bps和115 200 bps时,在串口小助手中观察到的程序运行后的测试结果,结果表明程序按照预先设定好的发送要求不断向PC机发送数据,并且通信稳定,在测试过程中未出现乱码和通信异常中断情况,程序设计达到了预期目标。通常在工业现场实际应用中需要保证数据传输的可靠性,一般都需要在数据的发送和接收端对数据进行相应的数据校验,常见的数据校验算法是CRC校验,可以采用8或16位的CRC校验方式。在该通信过程中并未使用校验算法来检测数据传输的一致性,若在数据传输过程中添加相应的CRC校验算法,就可以最大程度地减少数据传输的误码率,保证数据传输的准确性。在后期的研究学习中也可以尝试将其应用于工业现场以测试其工作的可靠性。

4 结论
    本文以STM32V评估板为硬件开发平台,结合μC/OS-II嵌入式操作系统中信号量和消息邮箱,设计了基于信号量、消息邮箱的串口通信应用程序,并通过实验验证了该串口应用程序在保证任务间通信同步情况下,数据传输具有较好的稳定性和可靠性,达到了程序设计预期目标。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭