当前位置: 首页 > news >正文

70、【OS】【Nuttx】【构建】配置 stm32 工程

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

接之前的 blog
【OS】【Nuttx】【构建】防止代码被优化
分析了如何防止代码在构建时被优化,还有说要分析启动函数,这里先再搁置一下,先看下 stm32 工程的配置

配置 stm32 工程

之前 blog 【OS】【Nuttx】【构建】交叉编译构建 提到过,手上只有一块不知什么年代的野火开发板,找到芯片上面未被磨平的丝印(丝印就是表面印刷的标识信息,有些芯片出于保密或者封装工艺可能没有,但开发板这种学习型的辅助板一般都会有,而且这芯片的体积也是够大),可以看到上面模糊的 STM32F429I 的信息

在这里插入图片描述
在 nuttx 工程中,搜索并选择 stm32f429i-disco:nsh 的项目,搜索方法以及为什么选这个项目(只要芯片对得上就行,外围的东西都好说),在之前 blog 【OS】【Nuttx】【构建】交叉编译构建 已经介绍过,这里不再赘述
在这里插入图片描述

configure 配置脚本

tools/configure.sh 可以为 nuttx 系统配置目标开发板和构建环境,通过配置脚本可以选择不同的硬件平台,主机构建操作系统,是否清理旧项目,是否使用自定义配置等
在这里插入图片描述
下面来看下相关配置选项
在这里插入图片描述

  • -E:强制执行 make distclean(清理之前的构建产物),即使已经配置过
  • -e:如果配置有变化,执行 make distclean
  • -l:选择 linux 作为主机构建环境
  • -S:用不到,先不管
  • -L:列出所有可用的单板配置,或者指定了某个 board 名称,就只列出匹配的配置项,支持部分名称模糊匹配
  • -a:指定应用程序目录(nuttx-apps 目录)路径,相对于 nuttx 根目录的相对路径

创建个软链接

另外多提一嘴,咱们的构建目录是在 scripts 下的(构建目录参考之前 blog 【OS】【Nuttx】【Python】gdb调试优化,python实现构建脚本),配置工程的目录又是在 tools,每次配置都要多敲几个字母跳转到 tools 去执行很麻烦
在这里插入图片描述
那么可以创建个软链接(软链接是一个包含了路径信息的文本文件,这个路径指向另一个文件的位置,类似于 windows 系统中的快捷方式),指向 tools 下的配置文件 configure.sh,在 bash 中如下命令

ln -s ../tools/configure.sh configure

可以看到构建目录也出现了配置脚本 configure,后面可以少敲几个字母,提升效率

在这里插入图片描述
查看构建目录详细信息,可以看到该文件是个链接类型的文件,指向了 tools 目录下的 configure.sh
在这里插入图片描述
在 scripts/configure 中输入一行代码
在这里插入图片描述
在 tools/configure.sh 中也能同步看到改动,很方便,就像改源文件一样
在这里插入图片描述

项目配置

在 configure 文件中参数解析功能 131 行,添加如下内容,可在 scripts 目录下进行项目配置
在这里插入图片描述
在 bash 终端输入如下命令

./configure menuconfig

可打开 menuconfig 配置界面,这里是通用功能配置,不涉及板信息
在这里插入图片描述
通用模块功能配置完后,接着继续在 bash 中输入项目配置命令

./configure -l -e stm32f429i-disco:nsh

可生成出项目配置信息
在这里插入图片描述
nuttx 根目录下,可看到关键配置文件 defconfig,里面定义了 nuttx 代码中相关功能模块的宏
在这里插入图片描述
先分析到这里,下篇开始启动函数分析

http://www.lryc.cn/news/583207.html

相关文章:

  • OpenGL 生成深度图与点云
  • 记一次接口优化历程 CountDownLatch
  • 景观桥 涵洞 城门等遮挡物对汽车安全性的影响数学建模和计算方法,需要收集那些数据
  • 【软件运维】前后端部署启动的几种方式
  • Live555-RTSP服务器
  • Linux——I/O复用
  • 零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程
  • Linux 中的 .bashrc 是什么?配置详解
  • Python 初识网络爬虫:从概念到实践
  • 什么是公链?
  • 微软 Bluetooth LE Explorer 实用工具的详细使用分析
  • 新零售“云化”进化:基于定制开发开源AI智能名片S2B2C商城小程序的探索
  • 【视频观看系统】- 技术与架构选型
  • HashMap源码分析:put与get方法详解
  • 爬楼梯及其进阶
  • Kubernetes 存储入门
  • 由 DB_FILES 参数导致的 dg 服务器无法同步问题
  • 搭建一款结合传统黄历功能的日历小程序
  • 汽车智能化2.0引爆「万亿蛋糕」,谁在改写游戏规则?
  • A1220LUA-T Allegro高精度霍尔效应开关 车规+极致功耗+全极触发 重新定义位置检测标准
  • 【Gin】HTTP 请求调试器
  • 微软官方C++构建工具:历史演变、核心组件与现代实践指南
  • Rust与Cypress应用
  • 在Ubuntu上安装配置 LLaMA-Factory
  • 人工智能-基础篇-27-模型上下文协议--MCP到底怎么理解?对比HTTP的区别?
  • AI应用实践:制作一个支持超长计算公式的计算器,计算内容只包含加减乘除算法,保存在一个HTML文件中
  • Apache Tomcat SessionExample 漏洞分析与防范
  • 【AI大模型】PyTorch Lightning 简化工具
  • Node.js 是什么?npm 是什么? Vue 为什么需要他们?
  • Flutter基础(前端教程⑦-Http和卡片)