20170812在STM32F103RB上测试RTT硬实时OS
来源:互联网 发布:java如何让窗口置顶 编辑:程序博客网 时间:2024/05/19 17:48
作为业余单片机爱好者,虽然从事硬件开发行业,也对软件代码产生兴趣,但一直苦于寻找一个适合自己兴趣的软硬件平台;然而软件平台也好,硬件平台也罢;在无数的平台之间徘徊,摇摆不定。
RTT在好几年前就有耳闻,一款由国内专业人士打造的硬实时嵌入式系统。官网:
http://www.rt-thread.org有详细的介绍,最近有一直在看一些相关的信息,了解一些特点。趁周末有空,打算在手上的开发小板上尝试一下;
1,准备工作:
a.下载RTT 软件包,目前版本v2.1,官网有链接
b.一个MDK 4.0以上的IDE环境,我用的是4.22.15.0
c.一块开发板,我手上是stm32f103RB,外部晶振12Mhz,想必已经滥大街了吧,不过最近貌似听说,ST的单片机在涨价,而且交期延长
d.JLINK 版本V8,使用其SW接口与开发板连接
2,用MDK打开解压的RTT软件包对应的BSP文件夹下stm32f10x下的工程文件;因为RTT默认的示例是基于stm32f103ZE,而且外部时钟为8.0Mhz,所以要按以前的方式修改下配置文件;
a.修改RTT自带的ST官方库里stm32f10x.h中外部晶振为12Mhz,找到如下位置:
大概119行,注释掉原来的8Mhz,修改为12;
#define HSE_VALUE ((uint32_t)12000000) /*!< LY-S3A stm32 external crystal 12.0Mhz */
b.因为stm32f103ze和stm32f103Rb flash和sram有差异,同样作相应修改;找到board.h文件,大概37行处,将原来的STM32_SRAM_SIZE 64改为20,ZE系列是64KB,而Rb系列为20KB
#define STM32_SRAM_SIZE 20 /*stm32f103RB SRAM:20KB*/
c.MDK target configure option设置,将103ze换为103RB,外部时钟也改了12M,最后jlink下载方式改 为SWD,下载配置文件替换为128K的中密度flash即可;
3,根据开发板修改初始化代码,包括LED引脚和串口引脚;
示例中用到了2个LED端口和串口UART1,我的开始跟它串口相同,所以不用修改串口;在led.c文件里面,大概29行位置,else后面的两个GPIO修改为对应我的开发板的两个led控制io,这里注意,是低电平亮灯的逻辑;
#else//#define led1_rcc RCC_APB2Periph_GPIOE//#define led1_gpio GPIOE//#define led1_pin (GPIO_Pin_2)#define led1_rcc RCC_APB2Periph_GPIOA#define led1_gpio GPIOA#define led1_pin (GPIO_Pin_8) //LY-S3A LED0 PA8//#define led2_rcc RCC_APB2Periph_GPIOE//#define led2_gpio GPIOE//#define led2_pin (GPIO_Pin_3)#define led2_rcc RCC_APB2Periph_GPIOD#define led2_gpio GPIOD#define led2_pin (GPIO_Pin_2) //LY-S3A LED1 PD2#endif // led define #ifdef STM32_SIMULATOR
到此,基本工作做完,编译一把。这里会不通过,可能是2.1版本的RTT还不够完整,canapp.c编译会报错,由于测试代码里没有使用到这部分,我选择直接用空白文档覆盖了canapp.c,然后编译通过;烧录到开发板上,LED开始闪烁起来,串口要设置为115200,8N1,串口终端就可以看到RTT的启动信息,如图;
作为最让人眼前一亮的特点,RTT有CLI的人机交互,这一点我觉得很有逼格!当然,它还有其它的很多特长,硬实时,还有GUI,还有网络协议LWIP,让它更像一个完善的操作系统,可玩性我觉得一点都不比zephyr低。
当然,除了支持stm32的单片机外,其它的CPU也有在跟进如图:
之前了解了多种开发模式,基于ubuntu的也好,fedora的也罢,交叉编译环境搭建起来相当麻烦,作为非软件开发人员,入门门槛无疑高了放多,加上它是国产,有中文技术支持,比去嚼那些一篇篇的英文着实方便了许多。
- 20170812在STM32F103RB上测试RTT硬实时OS
- 硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试
- 嵌入式实时操作系统μC/OS-Ⅱ 在DSP芯片上的移植与测试
- Linux RT(1)-硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试
- Linux RT(1)-硬实时Linux(RT-Preempt Patch)在PC上的编译、使用和测试
- TX1上使用265实时硬编码
- 20170929在stm32f103zet6 RTT上扩展外部SRAM
- 在 Mac OS X 系统上安装 WordPress 本地测试
- uC/OS-II实时操作系统在嵌入式平台上进行移植的一般方法和技巧
- 实时操作系统μC/OS-II在MCF5272上的移植
- 硬实时和软实时
- 硬实时与软实时
- uC/OS-II实时操作系统在嵌入式平台上进行移植的一般方法和技巧(转贴)
- 硬实时操作系统-RTLinux
- 在Solaris 文件系统上模拟测试ASM-(OS文件转化为虚拟设备)
- μC/OS-II实时性能测试与分析
- 一种非实时上变换测试
- RTT
- 区间DP的主要思想
- Light oj 1138
- (模拟)2017"百度之星"程序设计大赛
- 在windows下黑窗口中操作数据库
- html里的几个小窍门分享一下
- 20170812在STM32F103RB上测试RTT硬实时OS
- SpringCloud(九):Ribbon脱离Eureka使用及原生api
- 233 Matrix HDU
- 欢迎使用CSDN-markdown编辑器
- Android Studio起步配置
- [OpenGL] Normal Mapping 法线映射
- 多线程的四种状态及同步机制的应用(火车票线程同步)
- UVa1629 Cake Slicing
- poj 2985 The k-th Largest Group (Treap+并查集)