nuttx实战项目:多路串口合并功能之六nuttx项目基本优化
根据项目需求,目前希望在 NuttX 系统上优化以下几个方面:
- 系统开机启动应用:能够在系统启动时自动运行我们的程序
yumo_intelligence
。 - 内存占用可视化:方便开发过程中随时了解系统的剩余内存情况。
- 裁剪功能与驱动:关闭不必要的功能和驱动,以节省系统内存。
1. 系统开机启动应用
通过 OpenAI 提供的多种方案,我们决定采用 内嵌 NSH 的方式 来启动程序。这种方式不仅更简洁,而且能够节省系统资源。
2. 内存显示功能
当前版本的 NuttX 已经自带内存监控工具:
- 使用 NSH 命令
free
可以直接查看堆内存使用情况。 - 启用并挂载
procfs
后,还可以通过cat /proc/meminfo
查看更详细的内存信息。
这使得我们能够实时了解系统的资源消耗情况。
3. 驱动与缓冲区优化
根据外设的需求(单个数据包长度为 2880 字节),我们对串口配置进行了调整:
- 串口 3–6:
RX buffer
设为 3000 - 串口 2 (上行):
TX buffer
和RX 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
的功能设计与实现 阶段。