当前位置: 首页 > 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.dtcms.com/a/271166.html

相关文章:

  • STM32继电器万能控制设备
  • 【04】MFC入门到精通——MFC 自己手动新添加对话框模板 并 创建对话框类
  • SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)
  • 数据结构基础准备:包装类 泛型 泛型的上界 密封类
  • 零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程
  • 2023年全国青少年信息素养大赛Python编程小学组复赛真题+答案解析-北京赛区
  • idea 常用快捷键
  • Mysql中的日志-undo/redo/binlog详解
  • 学习open62541 --- [79] 在docker中运行open62541工程
  • pytorch chunk 切块
  • 【C++】容器适配器 + stack/queue/deque详解
  • Java基础,反射破坏封装性 - 单例模式的崩塌
  • 掌握PDF转CAD技巧,提升工程设计效率
  • 第四节 chatPDF
  • 机器视觉之工业相机讲解
  • unity animtor播放动画的指定位置
  • spring boot使用mybatis-plus实现分页功能
  • C++学习笔记三
  • MATLAB基于voronoi生成三维圆柱形
  • Token 和 Embedding的关系
  • 基于AOP+Redis的简易滑动窗口限流
  • C#基础篇(10)集合类之列表
  • 列表页智能解析算法:大规模数据采集的核心引擎
  • 2024-2025-2 山东大学《编译原理与技术》期末(回忆版)
  • 【ARM嵌入式汇编基础】- 操作系统基础(二)
  • JSP数据交互
  • php绘图添加水印,文字使用imagick库的操作
  • Docker 高级管理-容器通信技术与数据持久化
  • C语言结构体对齐
  • SpringCloud系列 - xxl-job 分布式任务调度 (七)