RT—Thread操作系统在STM32中移植的研究
作者:朱志国
来源:《计算机光盘软件与应用》2012年第22期
摘要:介绍了RT-Thread操作系统在STM32F107VC上的移植,简要说明了具体的移植过程和使用的方法,并分析了RT-Thread操作系统内核代码的各个功能,给出了移植环境的如何搭建,及编写应用程序如何修改代码的方法。最后通过一个实例成功实现RT-Thread在STM32F107VC上的移植,证明了移植是可行的。 关键词:RT-Thread;STM32;嵌入式操作系统;Keil
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2012) 22-0000-02 RT-Thread属于第二代微内核操作系统,最突出的优势就是其支持处理器平台广泛,最低要求8k ROM,4k RAM空间就可以了。STM32是基于Cortex-M3内核的处理器,也是一款性能优越的32位单片机,在工业控制方面的应用大有取代传统16位单片机之势。 1 RT-Thread操作系统介绍
RT-Thread主要优点是:实时、小型、可裁剪。它不仅仅是一个实时内核,也是一个功能丰富的软件平台,可以搭建POSIX环境,运行独立的应用程序,这是传统的实时操作系统所不具备的。RT-Thread具有32~256可选优先级抢占式调度,线程度不限,相同优先级线程时间片轮转调度,支持动态创建、销毁线程,任务等待可按优先级进行排队。
RT-Thread内核大致可分为对象管理、实时调度器、线程管理、线程间通信、时钟管理、设备驱动6个部分。
(1)对象管理(object.c):定义了对象容器的种类,包括线程、信号量、互斥量、事件、邮箱、消息队列、内存池、设备、定时器、组件。此部分主要完成各模块的创建,系统对象的初始化。
(2)实时调度器(schedule.c):定义了优先级。该部分完成优先级的创建及调度算法的定义,对线程的初始化、创建、插入、移动进行了描述。
(3)线程管理(thread.c):该部分完成了线程的创建、对当前线程的操作、超时线程的处理、线程的启动和推出操作。
龙源期刊网 http://www.qikan.com.cn
(4)线程间通信(ipc.c):完成通信的初始化,线程挂起,通信对象的恢复,消息的获取和删除操作。
(5)时钟管理(clock.c,timer.c):提供线程运行所需要的时钟,包括系统时钟和定时器,有定时器的初始化、开始计时、停止计时、时间的转换。对线程同样有定时的操作。 (6)设备驱动(device.c):对设备的初始化、发现设备、打开设备、关闭设备、读设备、写设备、对设备的控制、指示设备的运行和完成状态的操作。 2 STM32系列处理器
STM32具有高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。本文应用的STM32F107VC是其互联型的产品,闪存存储器有256K,64K的SRAM,以太网IEEE1588接口,2个CAN总线,2个音频级I2S。 3 RT-Thread在STM32F107VC芯片上的移植
本次移植是基于最新的RT—Thread 1.0.3正式版,从网站下载RT—Thread 1.0.3版本会解压得到如下文件夹:bsp、filesystem、finsh、include、libc、libcpu、net、rtgui、src。 下面对各个文件夹里的内容进行说明:bsp里存放的是针对各个具体开发板、平台的目录;filesystem里存放的是包含了RT-Thread文件系统组件代码;finsh里存放的是包含了RT-Thread的finsh shell组件代码;include里存放的包含了RT-Thread核心的头文件;libc里存放的是面向GCC移植的小型C库;libcpu是面向各个芯片移植的代码;net包含了RT-Thread网络组件代码;rtgui包含了RT-Thread的GUI图形用户界面组件代码;src包含了RT-Thread内核核心的代码。
移植所用软件的编译环境是集成开发编译环境为Keil MDK 4.12,下面是移植所用步骤。 (1)打开软件建立工程。Project→New u Vision Project 保存文件到C盘文件夹目录下,芯片选择STM32F107VC,不加入系统自带的启动代码。
(2)建立工程浏览目录,并向目录里添加库代码。在工程管理选项中,改工程名为RTthread_STM32,建立如下文件夹APP,CMSIS,SYSTEM,STM32,kernel,
Stdperiph_driver,finsh,lwip。Lwip里加入lwip TCP/IP协议源文件;finsh里加入finsh shell组件代码。Stdpriph_driver里添加STM32固件库源文件,这里来自官方最新的V3.5版;kernel里加入RT-Thread内核源代码;STM32里加入基于STM32系列处理器开发的驱动代码;SYSTEM里加入系统所需的启动文件、中断向量表、核心板文件和编写的例程;CMSIS里加入core_cm3.c和system_stm32f10x.c这两个文件;最后APP里添加用户所要运行的线程文件application.c。
龙源期刊网 http://www.qikan.com.cn
(3)添加编译运行所需的文件定义。在Options for Target “RTthread_STM32”→C/C++选项里,Define一栏里加入USE_STDPERIPH_DRIVER,STM32F10X_HD,这是加入标准外设驱动,是程序在编译时寻找入口所用到的。在Include Paths一栏里加入编译器运行所需的文件路径,包括STM32固件库文件和RT-Thread内核文件和头文件。至此移植的准备工作已经完毕,可以写入应用程序进行测试了。 4 平台应用程序测试 5 结论
RT-Thread是一款优秀的实时微内核操作系统,特别适合那些程序存储器和数据存储器特别小的微处理芯片。同时其在商业上免费使用,随着其的广泛应用,必然会给信息化、网络化的发展提供更大的保障,降低产品的成本,为将来的网络应用提供另一个解决方案。 参考文献:
[1]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航天航空大学出版社,2009 [2]张立勋.李雪伟.唐小景.STM32与LabVIEW 串行通信的设计[J].煤矿机械.2011.32(5):215-217.
[3]陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012. [4]RT-Thread操作系统.URL:http://www.rt-thread.org/ [作者简介]
朱志国(1989-),安徽淮南人,安徽理工大学电气与信息工程学院电路与系统专业研究生,研究方向:智能控制与嵌入式开发。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务