摘要:
在嵌入式环境中常用的存储器有NORFlash、NANDFlash、EEPROM,前两个一般擦写寿命约为10w次,EEPROM的使用次数约为100w次,寿命长的我先不管QAQ,这里的寿命指的是当flash中的存储单元写入或者擦除超过这个次数,这个存储单元可能会出现出错、变慢等无法正常读写的问题。按照木桶效应最先到达存储寿命的存储单元就是整个存储器的整体寿命,假如数据存储的时候先后在10个地址存储确保每个存储单元每隔10次数据改动才需要擦写消耗一次寿命,那存储器的整体寿命就会提升到100w 阅读全文
摘要:
MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级通信协议,广泛应用于物联网领域。它允许设备通过极少的代码和有限的带宽实现实时可靠的消息服务。MQTT协议的核心在于其三部分组成的控制报文:固定报头、可变报头和有效载荷。
mqtt中的一些名词解释:https://www.cnblogs.com/bliss-/p/12508774.html
更多mqtt中文规范:https://www.mqtt.cn/mqtt-specification 阅读全文
摘要:
动态内存管理指的是在程序需要内存时申请,在使用完成后释放,保证以比较少的内存实现更多的软件需求。与之相对的是静态内存,典型的静态内存就是全局变量:在程序启动时到整个生命空间内都占用空间。动态内存的特点就是实现内存的“按需使用”,在嵌入式开发环境中,节省ram实现更多更灵活的内存使用需求。c库中的malloc、free接口就是动态内存申请、释放的实现。在《深入理解计算机系统》书中针对c库中malloc的实现算法有一章的篇幅进行说明。
V2是因为几年前写过一版动态内存管理,整体思路是:
使用链表管理已经申请的内存,申请时检查容器中未被申请的空间,在这个空间内创建节点放在链表上。内存释放时将节点中的内存释放出来并删除节点。这个管理方案中申请内存没有考虑最优方案,会产生过多的内存碎片导致空间利用率太低 阅读全文
摘要:
cortex-m3是一个32位处理器内核:总线(数据、地址)宽度是32位、寄存器位宽是32位;内核结构为哈佛结构,拥有独立的数据总线和指令总线,可以并行进行指令执行和数据访问; 阅读全文
摘要:
状态机,也称为有限状态机(Finite State Machine,FSM),是一种数学模型,用于描述系统的行为模式和状态转移关系。 阅读全文
摘要:
BIN文件和HEX文件是两种常见的文件格式,尤其在嵌入式系统和软件开发领域有广泛应用。以下是对这两种文件的详细介绍以及它们之间的区别: 阅读全文
摘要:
项目名称:CUTESHELL 项目git地址 需求分析 背景分析:公司的产品对产线测试需求比较多,所以需要一个串口交互系统,网上看了一下都不太符合我们的需求,所以在疫情隔离期间自己动手写一个 具体需求: 满足可以输入命令后对命令进行识别 根据命令执行指令 在不同的模块下注册简单而不是以一个大数组的方 阅读全文
摘要:
硬件环境: 树莓派4B开发板 树莓派摄像头,淘宝有卖,30rmb以内的盗版亲测可用。。 有线音箱,用于播报检测到异常时的语音播报使用 软件环境: Debian-Pi-Aarch64:树莓派安装的操作系统,git链接:https://gitee.com/openfans-community/Debia 阅读全文
摘要:
MCU与MPU的区别 阅读全文
摘要:
protocol buffer是谷歌开发的一种开源数据传输语言格式,类似于json和XML等,在嵌入式开发中据我所知蓝牙通信经常用到protobuf,主要特点是打包和解包速度快,同时本身具有一定的加密性,虽然经过本人分析,加密性并不高哈哈,不过已经比json和xml这种直接把数据直观显示出来的加密性 阅读全文
摘要:
编写stm32代码,后面添加了几行代码后出现了 Error: L6220E: Execution region RW_IRAM1...的错误,大意就是ram越界导致的, 修改方法就是到option target 界面修改ram大小, 修改以下两个地方即可 修改完成后重新编译就OK了, 同时要注意当前 阅读全文
摘要:
在设置界面申请js权限, 然后在侧边栏公告框添入以下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial- 阅读全文
摘要:
效果图,显示当天剩余的时间 上代码: 使用了qt form 代码 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>myWidget</class> <widget class="QWidget" name="myWid 阅读全文
摘要:
c语言实现软件spi接口,需要设备有三个IO设置为GPIO功能 阅读全文
摘要:
/*两个函数实现将数字字符串转数字*/ //求 n次方 static unsigned long my_pow(int primitive ,int square){ if(square==0){ return 1; } int in=primitive; unsigned long out = p 阅读全文