IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> rt-thread最小硬件与软件系统 -> 正文阅读

[嵌入式]rt-thread最小硬件与软件系统

rt-thread 很优秀的开源物联网的RTOS,提供许多开源组件供使用。这些组件也需要一些简单的硬件支持。

一、rt-thread最小硬件系统

除了基本的MCU复位晶振电路外,一个串口与一个SPI flash为其标配硬件配置。串口用于控finsh控制台连接 ,可以为TTL、RS232、或USB转串口。如果控制板是在设备中运行,最好还是232或USB,强电或比较差环境还是首推232。SPI flash用于文件系统、系统日志、固件升级、用于开发调试阶段的时序数据库、KV数据库等的功能。flash的容量8M、16M、32M都可,只要sfud驱动支持。
在这里插入图片描述

在这里插入图片描述

二、rt-thead最小软件系统

除了系统内核与系统组件外,还有一些第三方的组件,下面列一下我的系统下常用的一些组件。

1、FAL

在这里插入图片描述
用于将flash芯片划分分多个不同功能的分区,将STM32内部falsh划分为2个区
bl:bootloader引导,用于升级应用
app:应用程序区
将SPI Flash划分为6个区
fm_area:新固件下载区
df_area:出厂默认固件存储区
flashdb_kv:键值数据库存储区
filesystem:文件系统区
flashdb_ts:时序数据库存储区,用于实时记录一测试数据
ef:日志存储区,用于存储程序状态,运行记录等

2、EasyFlash

EasyFlash 是一款开源的轻量级嵌入式Flash存储器库,方便实现基于Flash存储器的常见应用开发。适合智能家居、可穿戴、工控、医疗等需要断电存储功能的产品,资源占用低,支持各种 MCU 片上存储器。也有KV数据库与log功能,在我的系统里面只使用了LOG功能,作为日志存储的功能模块。
Log:无需文件系统,日志可直接存储在Flash上
非常适合应用在小型的不带文件系统的产品中,方便开发人员快速定位、查找系统发生崩溃或死机的原因。同时配合EasyLogger(我开源的超轻量级、高性能C日志库,它提供与EasyFlash的无缝接口)一起使用,轻松实现C日志的Flash存储功能。搭配系统ulog组件使用。
在这里插入图片描述

3、FlashDB

FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。
FlashDB 提供两种数据库模式:
键值数据库 :是一种非关系数据库,它将数据存储为键值(Key-Value)对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。
时序数据库 :时间序列数据库 (Time Series Database , 简称 TSDB),它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。
使用场景
原来使用过SQLiite存储数据,但这数据库源码有点庞大,一个文件2M,编译时间太长,而且使用起来太占CPU与内存资源,优点是兼容SQL表达式,但不适合MCU,所以选择使用FlashDB。

按时间范围查询8个通道的温度时序数据
在这里插入图片描述

4、CmBacktrace

针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。主要特性如下:
支持的错误包括:
断言(assert)
故障(Hard Fault, Memory Management Fault, Bus Fault, Usage Fault, Debug Fault)
故障原因 自动诊断 :可在故障发生时,自动分析出故障的原因,定位发生故障的代码位置,而无需再手动分析繁杂的故障寄存器;
输出错误现场的 函数调用栈(需配合 addr2line 工具进行精确定位),还原发生错误时的现场信息,定位问题代码位置、逻辑更加快捷、精准。也可以在正常状态下使用该库,获取当前的函数调用栈;
在这里插入图片描述

系统或应用出现hardfault情况下可以快速定位。

5、littlefs

LittleFS 是由ARM开发并开源一个小型SPI Flash文件系统,最大优点掉电安全,不会因为读写过程中断电文件系统被破坏,最大缺点写入速度较慢,但优点大于缺点作为我最小系统一个必备组件
在这里插入图片描述
flash目录对应就是filesystem分区的使用littlefs文件挂载在根目录下。

6、SEGGER_RTT

将调试数据打印出来,如果使用finsh打印必会影响用户命令输入,将其通过jlink的SWD接口打印出来,适合那种循环打印调试的情况下使用,打印是写内存打印速度极快,不会在Finsh是阻塞式打印。
在这里插入图片描述

7、syswatch

rtos的守护线程,用于重启线程及系统重启,RTOS必备功能,与硬件看门狗搭配使用,对产品提供极强的守护能力。
在这里插入图片描述
syswatch守护线程,处于最高优先级。

8、RT-thread的自定义调试命令

rt-thread比较好用的一个功能,定义一个自定义命令,调试某一个功能或查看某一个状态,原来在FreeRTOS也使用过这方面功能,但在FreeRTOS不属于系统标准搭配的功能,需要集成与适配。
在这里插入图片描述
在RT-thread属于系统一部分,直接可以使用,上面定义三个操作显示温度的三个命令。

硬件上成本只增加一个几块钱的Flash,嵌入式开发最难不是写程序,最难的是调试及其需要长期稳定运行,以上所使用的组件可使系统更健壮,调试更方便,问题查找更快捷,节省开发时间也就节省开发成本。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:30:54  更:2022-06-18 23:31:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:25:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码