Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
2024-RSOC
【2024-RSOC】Day1学习总结
发布于 2024-07-25 22:47:00 浏览:160
订阅该版
[tocm] # 文章概要 ![D1](https://oss-club.rt-thread.org/uploads/20240725/bba1d49dd7628e1eb3c82de6f3951049.png.webp) ## 一,环境配置 此处可以参考官方文档:[学长自小教育我,学硬件要多屯资源](https://docs.qq.com/doc/DY294dGJ0WldNVkxQ "学长自小教育我,学硬件要多屯资源") ## 二,资源汇总(屯粮环节) 官方文档地址:[♥点此处查看♥](https://www.rt-thread.org/document/site/#/ "♥点此处查看♥") 官方gitee仓库:[RTT妙♂妙♂屋](https://github.com/RT-Thread/rt-thre ad. git "RTT妙♂妙♂屋") ## 三,基础知识 在这里我会补充一些对于我来说较为陌生的概念,相信一定有初学者和我一样需要这些知识。 ####"env" env是RTT推出的开发辅助工具。包括*提供编译构建环境*,*图形化系统配置*,*软件包管理*三大功能。 [前辈的♂圣♂遗♂物♂](https://www.bilibili.com/video/BV1st411h7qh/?spm_id_from=333.337.search-card.all.click&vd_source=f8aab0e8a560f263b747ef714cd4a1c7 "前辈的♂圣♂遗♂物♂") #### ".dll."文件 如果将.exe比作魔法师那么.dll就是魔法书,也就是库文件。类似的有:".ocx" ".cql" ".drv"。 #### "config"文件(配置文件) 参数和接口 ### 1,Kconfig文件 [Kconfig文档说明:](https://www.rt-thread.org/document/site/#/development-tools/build-config-system/Kconfig "Kconfig文档说明:") Kconfig机制包括了Kconfig文件和配置UI界面(如menuconfig,pyconfig等)。 *Kconfig文件中的配置项会映射至rtconfig.h中 Kconfig文件可以随源码分散至各级子目录,便于灵活修改。* 代码示例: ```c # .config片段 CONFIG_RT_USING_TIMER_SOFT=y CONFIG_RT_TIMER_THREAD_PRIO=4 CONFIG_RT_TIMER_THREAD_STACK_SIZE=512 CONFIG_RT_DEBUG=y ``` ```c // 相对应的rtconfig.h片段 #define RT_USING_TIMER_SOFT #define RT_TIMER_THREAD_PRIO 4 #define RT_TIMER_THREAD_STACK_SIZE 512 #define RT_DEBUG ``` *config语句示例* ```c config BSP_USING_GPIO #配置选项 名称 bool "Enable GPIO" #配置项(可以为空来隐藏宏定义) select RT_USING_PIN #依赖关系 default y #默认值 help config gpio #帮助信息 ``` (没找到这里的配置路径是怎么选择的) #### 语句分析: **config 表示一个配置选项的开始,紧跟着的 BSP_USING_GPIO 是配置选项的名称,config 下面几行定义了该配置选项的属性。属性可以是该配置选项的** 类型 输入提示 依赖关系 默认值 帮助信息 **bool 表示配置选项的类型,每个 config 菜单项都要有类型定义,变量有5种类型** bool 布尔类型 tristate 三态类型 string 字符串 hex 十六进制 int 整型 **select 是反向依赖关系的意思,即当前配置选项被选中,则 RT_USING_PIN 就会被选中。** **default 表示配置选项的默认值,bool 类型的默认值可以是 y/n。** **help 帮助信息。** 通过 env 选中以上配置界面的选项后,最终可在 rtconfig.h 文件中生成如下两个宏: ```c #define RT_USING_PIN #define BSP_USING_GPIO ``` #### 变量类型 Kconfig中变量类型将决定宏定义中的变量类型。包括:bool类型,string类型,int类型,hex类型,tristate类型等。 #### menu/endmenu语句 menu语句用于生成菜单。 代码示例: ```c menu "Hardware Drivers Config" #菜单名 config BSP_USING_COM2 #config语句1 bool "Enable COM2 (uart2 pin conflict with Ethernet and PWM)" select BSP_USING_UART select BSP_USING_UART2 default n config BSP_USING_COM3 #config语句2 bool "Enable COM3 (uart3 pin conflict with Ethernet)" select BSP_USING_UART3 default n endmenu ``` 配置的宏结果如下: ```c #define BSP_USING_UART #define BSP_USING_UART2 #define BSP_USING_UART3 #define BSP_USING_COM2 #define BSP_USING_COM3 #可以注意一下这里 的生成顺序 ``` #### if/endif语句 if语句是一个条件判断。 ```c menu "Hardware Drivers Config" menuconfig BSP_USING_CAN bool "Enable CAN" default n select RT_USING_CAN if BSP_USING_CAN config BSP_USING_CAN1 bool "Enable CAN1" default n endif endmenu ``` ####menuconfig语句 menuconfig 语句表示带菜单的配置项 代码示例: ```c menu "Hardware Drivers Config" menuconfig BSP_USING_UART bool "Enable UART" default y select RT_USING_SERIAL if BSP_USING_UART config BSP_USING_UART1 bool "Enable UART1" default y config BSP_UART1_RX_USING_DMA bool "Enable UART1 RX DMA" depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA #只有当 BSP_USING_UART1 和 RT_SERIAL_USING_DMA 配置选项同时被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项 default n endif endmenu ``` **menuconfig 这个语句和 config 语句很相似,但它在 config 的基础上要求所有的子选项作为独立的行显示。** **depends on 表示依赖某个配置选项** **depends on可以完成一些简单逻辑** 生成的宏如下: ```c #define RT_USING_SERIAL #define BSP_USING_UART #define BSP_USING_UART1 #define RT_SERIAL_USING_DMA #define BSP_UART1_RX_USING_DMA ``` ####choice/endchoice语句 ```c menu "Hardware Drivers Config" menuconfig BSP_USING_ONCHIP_RTC bool "Enable RTC" select RT_USING_RTC select RT_USING_LIBC default n if BSP_USING_ONCHIP_RTC #只有一个if多少有点单调了 choice prompt "Select clock source" #多选一开始 default BSP_RTC_USING_LSE config BSP_RTC_USING_LSE bool "RTC USING LSE" config BSP_RTC_USING_LSI bool "RTC USING LSI" endchoice #结束 endif endmenu ``` **choice/endchoice 给出选择项,中间可以定义多个配置项供选择,但是在配置界面只能选择一个配置项;** **prompt 给出提示信息,光标选中后回车进入就可以看到多个 config 条目定义的配置选项,所以下面的两个例子是等价的:** 宏定义如下: ```c bool "Networking support" bool prompt "Networking support" ``` ####comment语句 comment 语句出现在界面的第一行,用于定义一些提示信息。 代码示例: ```c menu "Hardware Drivers Config" comment "uart2 pin conflict with Ethernet and PWM" config BSP_USING_COM2 bool "Enable COM2" select BSP_USING_UART select BSP_USING_UART2 default n endmenu ``` ####source语句 source 语句用于读取另一个文件中的 Kconfig 文件。 ```c source "../libraries/HAL_Drivers/Kconfig" ``` 上述语句用于读取当前 Kconfig 文件所在路径的上一级文件夹 libraries/HAL_Drivers 下的 Kconfig 文件。 ### SCons构建工具(系统) 构建工具 (software construction tool) 是一种软件,它可以根据一定的规则或指令,将源代码编译成可执行的二进制程序。这是构建工具最基本也是最重要的功能。实际上构建工具的功能不止于此,通常这些规则有一定的语法,并组织成文件。这些文件用来控制构建工具的行为,在完成软件构建之外,也可以做其他事情。 ####SCons 基本命令 打开 Env 工具,如果是 ARM 平台的芯片,输入 scons 命令直接编译 BSP,这时候默认使用的是 ARM GCC 编译器,因为 Env 工具带有 ARM GCC 编译器。 如下图所示使用** scons **命令编译 BSP。 ## 四,待解决的问题 1,Kconfig中bool变量y/n有什么区别,实际表现有哪些不同 2,Kconfig语法怎么使用 3,如何唤起Kconfig图形化配置页面
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
LE_hor
这家伙很懒,什么也没写!
文章
6
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部