本帖最后由 heart蓝 {MOD}CD 于 2020-2-22 12:33 编辑
分享iCore4T移植RT-Thread过程的点点滴滴——DAY 1
高手请略过,如有错误请多多批评指点!
首先放上iCore4T靓照
一、初识RT-Thread
RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统。以下我们就简称RTT,RTT是一款完全由我们国内团队开发的嵌入式实时操作系统,它诞生于2006年,最初源于对当时小型RTOS现状的诸多不满,RTT要打造一个精致而优雅的操作系统。从最初的V0.0.1发布,历经十几个年头的沉淀到今天的V4.0.0的发布,它正演变成一个功能强大、组件丰富的物联网操作系统。
RTT支持任务抢占,STM32默认支持优先级范围是32,支持多任务(线程)轮转调度,可以通过信号量、互斥量、事件集进行线程间同步,通过邮箱、消息队列、信号进行线程间的通信。RTT也支持动态内存、中断等管理。
二、辅助工具
2.1、Env简介
Env是RTT推出的开发辅助工具,针对基于RTT操作系统项目工程,提供编译构建环境、图形化系统配置及软件包管理功能,其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由剪裁,使用系统以搭积木的方式进行构建。
2.1.1 准备工作
在电脑上首先安装好git,软件包管理功能需要git的支持。
git下载地址:https://git-scm.com/downloads。
下载后一路next安装,安装完成测试是否安装成功。打开cmd,输入git,如果可以显示版本信息说明安装成功。
如果安装成功说明git已添加到系统环境变量。
下载Env工具
Env工具下载地址:https://www.rt-thread.org/page/download.html
下载后解压,打开Env控制台
双击Env目录下可执行文件env.exe
在文件夹中通过右键菜单打开 Env 控制台,添加 Env 至右键菜单。
2.1.2 如何使用
现在打开我已经制作好的bsp工程,我们通过Env工具对RTT系统进行菜单配置(制作方法我会在以后详细介绍)
打开工程文件rt-thread/bsp/stm32/stm32h750-gingko-icore4t,右击鼠标点击ConEmu Here
输入menuconfig,回车
至此我们就可以正确的借助Env来方便快速的对内核进行配置,进入RTT的世界。
2.2 Scons构建工具
SCons 是一套由 Python 语言编写的开源构建系统,类似于 GNU Make。它采用不同于通常 Makefile 文件的方式,而是使用 SConstruct 和 SConscript 文件来替代。这些文件也是 Python 脚本,能够使用标准的 Python 语法来编写。所以在 SConstruct、SConscript文件中可以调用 Python 标准库进行各类复杂的处理,而不局限于 Makefile 设定的规则。
上面我们介绍了可以通过Env来完成对内核、组件、BSP的配置,我们还可以通过Scons工具来完成对KEIL、IAR等工程的搭建。通过一条命令"scons --target=mdk5",即可完成KEIL新工程的生成。
三、烧录进我们的iCore4T双核心板
打开我们制作的最简单的BSP工程(在这里我们以MDK5为例),编译、下载。
iCore4T双核心板自带DEBUG_UART,打开终端Putty,程序运行后我们会发现RT-Thread信息打印在了终端。
我们在终端输入list_device,可以看一下当前已经挂载上的设备。
我将在DAY2里面给大家简单介绍如何制作最简单的BSP工程,也就是RT-Thread的移植过程。
分享iCore4T移植RT-Thread过程的点点滴滴——DAY 4
高手请略过,如有错误请多多批评指点!
通过前几天的介绍我们制作出了最基础的BSP工程,那么我们想利用更多的外设资源,实现更丰富的功能怎么办呢?今天我给大家分享一下STM32H750 ADC设备驱动的添加方法及使用。
一、配置ADC相应的GPIO,选择ADC时钟源
1.1 iCore4T ARM+FPGA双核心板共有4路16bit ADC,其中两路用于板载电源监控,两路可供用户使用。分别是为PA0(ADC1_INP6),PA6(ADC12_INP3),PC2(ADC3_INP0),PC3(ADC3_INP1)。然后我们打开../bsp/stm32/stm32h750-gingko-icore4t/board/CubeMX_Config来进行ADC IO配置,注意这里仍然是只配置IO,其他参数不用理会,然后选择ADC的时钟源。配置完成后点击CREATE CODE。
1.2 CubeMx生成工程后,我们只保留红 {MOD}方框内的文件,其他的两个文件夹可以删除掉。
1.3 复制刚刚生成的src文件夹maic.c文件中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。
二、修改kconfig文件,增加menuconfig菜单配置中ADC选项。
三、打开menuconfg,使能ADC1(ADC1_INP16对核心板输入电源进行监控,所以我们以此为例)。
四、使用scons命令生成MDK5工程,打开并进行编译。
我们编译发现会有错误产生,原因为RTT当前版本的ADC驱动对H7系列还不算完善,所以这里我们进行稍稍的修改。
4.1 修改adc_config.h文件中的内容
4.2 修改adc_config.c文件中 stm32_adc_enable()函数的内容,红 {MOD}方框为增加的内容。
4.3 修改adc_config.c文件中 stm32_adc_get_channel函数的内容。
4.4 修改adc_config.c文件中 stm32_get_adc_value()函数的内容。
4.5 修改完以上内容,重新编译。
五、烧录进iCore4T核心板
烧录进去后我们可以发现能够找到ADC1设备,并读出通道16的值为0x4F1F,我们将其转变成模拟量:(20255/65536)*2.5*6 = 4.63(V)
六、源代码
源代码可以移步这里下载:链接:https://pan.baidu.com/s/1ftP8TccWYqYt9GX9Lj6PGQ 提取码:pfqr
至此,我们的ADC设备驱动已经添加完毕,并且可以正确的读出数据。
我将在DAY5里面为大家分享QSPI驱动的添加过程。
一周热门 更多>