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

nuttx实战项目:多路串口合并功能之六nuttx项目基本优化

根据项目需求,目前希望在 NuttX 系统上优化以下几个方面:

  1. 系统开机启动应用:能够在系统启动时自动运行我们的程序 yumo_intelligence
  2. 内存占用可视化:方便开发过程中随时了解系统的剩余内存情况。
  3. 裁剪功能与驱动:关闭不必要的功能和驱动,以节省系统内存。

1. 系统开机启动应用

通过 OpenAI 提供的多种方案,我们决定采用 内嵌 NSH 的方式 来启动程序。这种方式不仅更简洁,而且能够节省系统资源。


2. 内存显示功能

当前版本的 NuttX 已经自带内存监控工具:

  • 使用 NSH 命令 free 可以直接查看堆内存使用情况。
  • 启用并挂载 procfs 后,还可以通过 cat /proc/meminfo 查看更详细的内存信息。

这使得我们能够实时了解系统的资源消耗情况。


3. 驱动与缓冲区优化

根据外设的需求(单个数据包长度为 2880 字节),我们对串口配置进行了调整:

  • 串口 3–6RX buffer 设为 3000
  • 串口 2 (上行)TX bufferRX buffer 设为 3072
  • 其他串口:保持默认配置
  • DMA 配置:除控制台串口外,其余串口均启用 TXDMA / RXDMA

修改后的配置如下:

diff --git a/boards/arm/stm32/stm32f4discovery/configs/nsh/defconfig b/boards/arm/stm32/stm32f4discovery/configs/nsh/defconfig
index 426dcebb1c..a1ccce858a 100644
--- a/boards/arm/stm32/stm32f4discovery/configs/nsh/defconfig
+++ b/boards/arm/stm32/stm32f4discovery/configs/nsh/defconfig
@@ -20,6 +20,7 @@ CONFIG_BOARD_LATE_INITIALIZE=yCONFIG_BOARD_LOOPSPERMSEC=16717CONFIG_BUILTIN=yCONFIG_EXAMPLES_HELLO=y
+CONFIG_EXAMPLES_YUMO_INTELLIGENCE_STACKSIZE=8192CONFIG_FS_PROCFS=yCONFIG_HAVE_CXX=yCONFIG_HAVE_CXXINITIALIZE=y
@@ -36,7 +37,7 @@ CONFIG_RAM_START=0x20000000CONFIG_RAW_BINARY=yCONFIG_RR_INTERVAL=200CONFIG_SCHED_WAITPID=y
-CONFIG_SPI=y
+CONFIG_SERIAL_TERMIOS=yCONFIG_START_DAY=6CONFIG_START_MONTH=12CONFIG_START_YEAR=2011
@@ -49,16 +50,21 @@ CONFIG_STM32_USART2=yCONFIG_STM32_USART3=yCONFIG_STM32_USART6=yCONFIG_SYSTEM_NSH=y
+CONFIG_UART4_RXBUFSIZE=3072CONFIG_UART4_RXDMA=yCONFIG_UART4_TXDMA=y
+CONFIG_UART5_RXBUFSIZE=3072CONFIG_UART5_RXDMA=yCONFIG_UART5_TXDMA=yCONFIG_USART1_SERIAL_CONSOLE=y
-CONFIG_USART2_RXBUFSIZE=128
+CONFIG_USART1_TXBUFSIZE=3072
+CONFIG_USART2_RXBUFSIZE=3072CONFIG_USART2_RXDMA=yCONFIG_USART2_TXBUFSIZE=128CONFIG_USART2_TXDMA=y
+CONFIG_USART3_RXBUFSIZE=3072CONFIG_USART3_RXDMA=yCONFIG_USART3_TXDMA=y
+CONFIG_USART6_RXBUFSIZE=3072CONFIG_USART6_RXDMA=yCONFIG_USART6_TXDMA=y

总结

通过以上优化,系统现在能够:

  • 在开机后自动运行 yumo_intelligence
  • 提供实时的内存占用情况查询;
  • 针对项目需求优化串口驱动与 DMA 缓冲区配置。

接下来,我们将继续进入 yumo_intelligence 的功能设计与实现 阶段。

http://www.dtcms.com/a/427656.html

相关文章:

  • mysql语句之insert语句DML事务的结束
  • 单机 6 节点打造Redis Cluster(3主3从)——从零到可用与踩坑速修
  • Cesium快速入门到精通系列教程二十:Cesium 1.95 给实体添加事件
  • 02、命令行的介绍
  • 三五互联网站管理登录地址wordpress 黑色
  • 小杰深度学习(four)——神经网络可解释性、欠拟合、过拟合
  • 【手撕机器学习 03】从“生数据”到“黄金特征”:机器学习项目中价值最高的一步
  • 网站关键字优化教程株洲发布信息网
  • 昆明优化网站公司在与客户谈网页广告时如何让客户相信网站流量
  • UNIX下C语言编程与实践21-UNIX 文件访问权限控制:st_mode 与权限宏的解析与应用
  • 瑞芯微RK35XX系列FFmpeg硬件编解码实测,详细性能对比!
  • php网站后台搭建wordpress购买返现
  • 首架机下线!“四川造”大型载客eVTOL筑低空新里程碑
  • 基于STM32与influxDB的电力监控系统-13
  • 250925-0930技术总结
  • AI 重塑实体经济:从技术落地到价值创造的实践路径
  • 认识软件测试
  • 网站服务器数据库湛江网站建设公司哪个好
  • 动手实现简单Vue.js ,探索Vue原理
  • UNIX下C语言编程与实践18-UNIX 文件存储原理:目录、i 节点、数据块协同存储文件的过程
  • 珠宝怎么做网站wordpress 活动报名插件
  • 除自身以外数组的乘积
  • 爬虫逆向--Day25Day26--原型链补环境
  • 拍拍灯电路(用咪头识别拍拍动作)
  • 极限!ubuntu系统联网
  • 第三章 字典与集合
  • 网站设计的价格沪深300指数基金
  • Java-01-基础篇-JDK日志(JUL)
  • (基于江协科技)51单片机入门:7.LED点阵屏
  • 江协科技 CAN总线入门课程(错误处理)