rt-thread Env 预处理配置方法
简介
rt-thread 是我非常喜欢的一款RTOS,近期在使用Env更新工程的时候发现,keil MDK 中的预处理型号和器件型号不符。
这就导致我每次更新工程后都需要进入keil MDK手动修改一下。这显然是一个无聊的操作,于是有了这篇随笔。
实际上如果你系统,仔细的学习完RTT官方的一些资料,其实该问题的解决办法非常简单。在此,我仅使用该问题展示一下解决该类问题的思路。
开始
我的MCU为F405,于是我选择了一个F405的BSP模板进行开发。但是,当Env更新完工程后,keil MDK中的预处理总是写着 STM32F407xx。
我的第一想法是修改 keil MDK的模板,如下:

但是Env更新工程后,还是被修改成了 STM32F407xx。

于是,我就知道不是模板这里能改的,可能是定义在某处,然后Env读取并填入。这种猜测并不是因为我解决了该问题才知道,而是往往该类参数都是以字段(字符串)等明文方式定义的。
猜测有了, 接下来就需要借助工具来搜索一下哪些文件中含有 STM32F407xx, CLK_TCK=RT_TICK_等字符串。
这里我使用的是 [FileSeek](Download • FileSeek by Binary Fortress Software) , 经过查找,结果如下:

经过一番查看,最终在 **SConscript **文件中发现这个字段很 ''可疑''。然后我们使用文本工具打开该文件进行查看。

将STM32F407xx 改成 STM32F405xx, 进入Env 更新工程。 然后 keil MDK 中再查看,发现我们修改对了!!
这里我们可以初步知道,CPPDEFINES 对应了 keil MDK 的预处理定义。
为了验证该猜测,我们继续使用 [FileSeek](Download • FileSeek by Binary Fortress Software) 搜索 RT_USING_ARM_LIBC 关键(它也是keil MDK预处理中已有的定义)。
发现如下:

这下就坐实了我们的猜测。至此,该问题已经解决。
这算是一个逆向解决问题的方法,由此,我们可以反过来去搜索一下 CPPDEFINES 的作用,做一个全面的了解,学习。这里不在赘述。
总结
程序开发中我们每天都在面对各种各样的问题。无论是新手还是老鸟,无一例外的每天都在解决着五花八门的问题。在大部分情况下其实我们很难对一个系统或者项目的细节面面俱到,特别是在项目代码量逐渐增大的今天。我们应该善于思考,勤于思考,用智慧去解决问题,而不是盲目乱试。
rt-thread Env 预处理配置方法的更多相关文章
- RT Thread 通过ENV来配置SFUD,操作SPI Flash
本实验基于正点原子stm32f4探索者板子 请移步我的RT Thread论坛帖子. https://www.rt-thread.org/qa/forum.php?mod=viewthread& ...
- Tomcat数据库连接池的配置方法总结
Tomcat数据库连接池的配置方法总结 数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标 ...
- VC 宏与预处理使用方法总结
目录(?) C/C++ 预定义宏^ C/C++ 预定义宏用途:诊断与调试输出^ CRT 和 C 标准库中的宏^ NULL 空指针^ limits.h 整数类型常量^ float.h 浮点类型常量^ m ...
- Java数据库连接池的几种配置方法(以MySQL数据库为例)
Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...
- LUMEN框架多数据库连接配置方法
LUMEN作为一款API导向很浓的框架,配置极简化,默认只支持一路DB配置 然而随着业务复杂度的提高,引入多个数据库连接似乎无法避免,下面介绍一下LUMEN连接多个数据库的配置方法: 修改.env文件 ...
- Oracle宕机之PMON (ospid: 248987): terminating the instance due to error 484(另附hugepage配置方法)
数据库版本:11.2.0.4 RAC环境 操作系统版本:Asianux Server release 7.3 数据库报错分析 接到业务消息,应用无法访问,开发人员查看日志后发现无法连接数据库. 查看数 ...
- CentOS 6.3下Samba服务器的安装与配置方法(图文详解)
这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...
- CentOS防火墙iptables的配置方法详解
CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助. iptables是与Linux ...
- Wampserver 2.5 多站点配置方法
写在开头:本文适用于wampserver2.5版本,和wamp的老版本配置有语法上的区别,笔者正是因为被老版本的配置办法给整迷糊了所以才总结了一篇针对2.5版本的配置方法,如果您还停留在1.x或着已经 ...
- docker网络配置方法总结
docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...
随机推荐
- 详解TCP网络协议栈的工作原理
本文分享自华为云社区<网络通信的神奇之旅:解密Linux TCP网络协议栈的工作原理>,作者: Lion Long . 一.TCP网络开发API TCP,全称传输控制协议(Transmis ...
- shell 代码风格
以终为始 initramfs_cgz=/srv/initrd/osimage/$os/$os_arch/${os_version%-iso}/$(date +"%Y%m%d").0 ...
- vs(visual stuiod)中vc++工程的Filter和Folder及vcxproj知识
vs中创建Filter 在一个新项目中右键 - Add - New,默认只有一选项 New Filter. 创建出来的Filter可以理解为是VS的过滤器(虚拟目录),它不会在本地的磁盘上新建目录,而 ...
- 从read 系统调用到 C10M 问题
一.前言 从上个世纪到现在,工程师们在优化服务器性能的过程中,提出了各种不同的io模型,比如非阻塞io,io复用,信号驱动式io,异步io.具体io模型在不同平台上的实现也不一样,比如io复用在bsd ...
- 加密解决HTTP协议带来的安全问题
HTTP协议默认是采取明文传输的,容易被中间人窃听.拦截.篡改,存在安全隐患. 常见提高安全性的方法是对通信内容进行加密,再进行传输,常见的加密方式有 不可逆加密:单向散列函数 可逆加密:对称加密.非 ...
- 【渗透测试】Vulnhub EMPIRE BREAKOUT
渗透环境 攻击机: IP: 192.168.149.128(Kali) 靶机: IP:192.168.149.130 靶机下载地址:https://www.vulnhub.com/entr ...
- Python 导入 Excel多sheet
Python 导入 Excel多sheet 假设表格的样式如下 import os import sys import django BASE_DIR = os.path.dirname(os.pat ...
- Redis沙盒逃逸(CVE-2022-0543)漏洞复现
0x01 概述 Redis 是著名的开源 Key-Value 数据库,其具备在沙箱中执行 Lua 脚本的能力.Debian 以及 Ubuntu 发行版的源在打包 Redis 时,在 Lua 沙箱中遗留 ...
- Markdown初识
1.标题 一级标题 ctrl+1......六级标题 ctrl+6 2.字体 加粗 ctrl+B 斜体 ctrl+I 下划线 ctrl+ U 3.引用 大于号加任意键 4.分割线 "---& ...
- k8s证书到期处理
证书续期提示 当执行kubectl get nodes等提示 Unable to connect to the server: x509: certificate has expired or is ...