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只是一个在绑定到这 ...
随机推荐
- Unity UGUI的RectMask2D(2D遮罩)组件的介绍及使用
Unity UGUI的RectMask2D(2D遮罩)组件的介绍及使用 1. 什么是RectMask2D组件? RectMask2D是Unity UGUI中的一个组件,用于实现2D遮罩效果.它可以限制 ...
- 2021-7-30 MySql函数的使用归类整理
Mysql字符的使用 SELECT ASCII(user_password) as 阿斯克码 FROM users;#返回首字符的ascii码 SELECT CHAR_LENGTH(user_pass ...
- NodeJS:安装CNPM
安装命令 npm install -g cnpm --registry=https://registry.npm.taobao.org 使用命令 cnpm install [name] 参考连接 ht ...
- Yunfly 一款高效、性能优异的 node.js web 框架
介绍 Yunfly 一款高性能 Node.js WEB 框架, 使用 Typescript 构建我们的应用. 使用 Koa2 做为 HTTP 底层框架, 使用 routing-controllers ...
- 零基础入门——从零开始学习PHP反序列化笔记(一)
靶场环境搭建 方法一:PHPstudy搭建 GitHub地址 https://github.com/mcc0624/php_ser_Class 方法二:Docker部署 pull镜像文件 docker ...
- 从read 系统调用到 C10M 问题
一.前言 从上个世纪到现在,工程师们在优化服务器性能的过程中,提出了各种不同的io模型,比如非阻塞io,io复用,信号驱动式io,异步io.具体io模型在不同平台上的实现也不一样,比如io复用在bsd ...
- composer 的使用和常用命令大全
composer 常用命令 1.composer初始化 init 如何手动创建 composer.json 文件.实际上还有一个 init 命令可以更容易的做到这一点. 查看当前版本composer ...
- Hugging Face 的文本生成和大语言模型的开源生态
[更新于 2023 年 7 月 23 日: 添加 Llama 2.] 文本生成和对话技术已经出现多年了.早期的挑战在于通过设置参数和分辨偏差,同时控制好文本忠实性和多样性.更忠实的输出一般更缺少创造性 ...
- JavaScript的Map和WeakMap
熟悉JavaScript的Map和WeakMap Map Map的键/值可以是任何类型 基本API 初始化映射: //使用new关键字和Map构造函数进行初始化 const m1 = new Map( ...
- Java Maven POM配置参考
介绍 什么是POM? POM代表"项目对象模型".它是一个名为pom.XML的文件中保存的Maven项目的XML表示. 快速概览 这是一个直接位于POM项目元素下的元素列表.请注意 ...