RT Thread
文章平均质量分 80
fhqlongteng
非著名软件专家,物联网物联传媒专家评委,中国cortex-M3第一人,精通嵌入式产品软件硬件设计,服务过知名通信企业,开发过光通信产品的软件,熟悉光通信产品的技术原理与应用,掌握产品的整个解决方案;服务过国有大型煤炭设备研发企业,开发过煤矿装备智能控制设备,全面负责产品软件的架构设计与开发,现服务于物联网高科技公司,负责技术产品的规划,设计,研发,制造,推广,带领一群优秀的小伙伴从事物联网产品,特别是智慧农业产品的设计。
展开
-
STM32 USB高速USB端口加持4G联网
关于STM32F4USB驱动程序(FULL SPEED)目前是可以用,但是有很多问题,比如NAK的问题,导致U盘读写出错。USB底层驱动程序中进行OUT传输时必须增加一个1ms延时的问题。等等储多问题。本文高速USB的驱动程序参考了网友@sakumisu的文章:[基于 CherryUSB 调试 dwc2 usb host 笔记](https://club.rt-thread.org/ask/article/9c31ce71ead26c2b.html "基于 CherryUSB 调试 dwc2 usb hos原创 2022-07-07 16:10:38 · 1500 阅读 · 3 评论 -
MQTT协议栈原理及交互流程图
图解MQTT协议栈的原理及交互流程图原创 2022-06-24 11:47:00 · 1196 阅读 · 0 评论 -
winUSB设备上位机驱动开发环境的搭建
1、winUSB设备开发的环境 本文选择的winUSB的开发语言为python,USB的软件包为pyUSB,首先你需要准备好python的整个开发环境与相关软件,之后在命令行中执行pip install pyusb,即可完成pyusb软件包的安装。pyusb用于实现USB主机端的USB通信功能 。 winUSB设备的开发可以参考:(8条消息) winUSB设备的开发方法_fhqlongteng的博客-CSDN博客https://blog.csdn.net/fhqlongteng...原创 2022-05-13 09:59:12 · 3570 阅读 · 1 评论 -
winUSB设备的开发方法
1、winUSB功能介绍winUSB设备在win10系统下自带驱动程序的,winUSB设备连接到USB后,可以直接被系统识别,无需安装驱动,实现了免驱的功能。就像键盘、鼠标插入到电脑上直接使用一下。winUSB设备使用BULK传输,具有传输数据量的优点,设备使用BULK IN, BULK OUT,CONTROL3个端点来进行通信。因此winUSB设备在开发USB产品时是一个很好的选择。2、winUSB软件选型 winUSB软件采用RT thread操作系统自带的USB device协议..原创 2022-05-11 12:01:39 · 4661 阅读 · 0 评论 -
解决STM32虚拟U盘枚举过慢的问题
虚拟U盘,枚举速度过慢原创 2022-03-31 16:00:20 · 1974 阅读 · 1 评论 -
rt smart操作系统在“正点原子-阿尔法”开发板开箱使用
1、准备正点原子阿尔法linux开发板,SD卡,网络,USB线。由于正点原子的开发板和ART-PI-smart开发板使用的是一样的MPU,所以可以运行ART-PI-smart的程序。 下载ART-PI-smart软件:ART-Pi-smarthttps://gitee.com/rtthread/ART-Pi-smart ,下载后,参考ART-Pi Smart Docs (gitee.io)https://art-pi.gitee.io/smart-website/docs/#/u...原创 2022-02-05 16:14:39 · 2700 阅读 · 1 评论 -
记一次解决MQTT软件包内存泄露的心路历程
1、技术背景 物联网产品使用的mqtt连接功能采用的kawii-mqtt软件包,具体的软件包地址在:[kawii mqtt软件包地址](https://github.com/longtengmcu/kawaii-mqtt),当出基于此软件包开发时,解决了此软件包的许多问题(可查看git 提交记录),包括内存泄漏问题,现在已经成功应用在产品上,并且稳定运行。目前的产品应用是mqtt做的长连接,即创建连接后,应用程序不会主动断开连接,可以稳定运行。 最近开发产品由于要做低功耗...原创 2021-09-27 14:49:11 · 6083 阅读 · 4 评论 -
usb rndis主机接收数据错误的分析
1、背景 本程序是一个stm32 usb host驱动4G rndis模块的程序,具体可以参考首创STM32 USB主机驱动4G rndis设备_fhqlongteng的博客-CSDN博客。这个程序在最近移植到真实的产品硬件上面做应用功能测试。测试发现产品在执行特定的操作时,出现4G 模块usb设备主动断开usb连接的情况。2、问题原因浅析 如下图的软件是用于测试4G模块实现的真实产品的功能的测试软件,点击“读取设备时间”,会通过4G网络读取到设备的RTC时间,点击“开关”按...原创 2021-09-06 13:12:40 · 955 阅读 · 3 评论 -
首创STM32 USB主机驱动4G rndis设备
1、技术现状 4G模块支持的对外通信接口有串口和USB接口,串口一般使用AT指令的方式,这个在MCU类产品上面使用的很多,US原创 2021-05-30 15:56:43 · 8037 阅读 · 23 评论 -
STM32 USB主机传输中断过程
1、STM32F USB主机本文介绍STM32F USB OTG FS主机的中断过程及时序,关于USB通信的原理与报文不在本文的介绍,请参考其他文档。本文根据实际的使用USB主机详细的描述的USB主机中断发生的过程及顺序,是全网少有的文章。本文介绍所涉及的USB主机程序请参考rt thread操作系统的USB主机协议栈与USB主机驱动。2、USB主机OUT传输中断 应用程序调用USB主机驱动发送数据到USB设备,这个过程会在USB总线上面产生OUT传输过程。...原创 2021-05-16 18:30:40 · 4778 阅读 · 2 评论 -
STM32 USB主机通信连接中断过程
1、STM32F USB主机 本文介绍STM32F USB OTG FS主机的中断过程及时序,关于USB通信的原理与报文不在本文的介绍,请参考其他文档。本文根据实际的使用USB主机详细的描述的USB主机中断发生的过程及顺序,是全网少有的文章。本文介绍所涉及的USB主机程序请参考rt thread操作系统的USB主机协议栈与USB主机驱动。2、连接、断开中断 一个USB设备在连接USB主机端口时会发生连接中断,通知应用程序发生了连接中断。USB设备与USB主机端口断开时会发生...原创 2021-05-16 17:37:30 · 4668 阅读 · 0 评论 -
一键编译同时生成hex bin文件的方法
1、功能需求 在嵌入式软件开发过程中通常需要同时生成hex文件,bin文件,hex文件用于仿真器烧写程序使用,bin文件用于执行串口在线升级时使用。在本项目的使用的hex文件包括boot.hex, app.hex两个文件,烧写时需要把这两个文件合并成一个文件。bin文件需要进行特殊的处理(增加文件头与MD5校验码),用于在串口升级使用。本项目中使用IAR编译器,IAR编译器无法通过工程设置同时生成HEX,BIN文件,同时生成hex,bin文件无法直接使用,需要进行进一步的处理。本文通过采用批处理...原创 2021-02-27 23:34:31 · 2528 阅读 · 5 评论 -
实战--根据hard fault打印的寄存器信息分析代码异常地址
1、前言 阅读本文请需要先了解一下技术原理,请阅读一下这篇文章:https://blog.csdn.net/fhqlongteng/article/details/112756689。2、故障时的寄存器信息 程序在运行中串口打印出如下信息,程序进入hard fault中断并打印出异常点的寄存器数据。[E/NET_SW] Invalid low power sensor data on the uart2 channelpsr: 0x21000200r00: 0x000...原创 2021-01-21 15:47:03 · 3989 阅读 · 0 评论 -
Cortex-M内核硬件故障问题的分析方法
1、Hard fault中断 Cortex-M内核具有一个不可以关闭的硬件错误中断(Hard fault),这个中断的功能就是当内核运行到了错误的代码会导致产生硬件故障,进而引发中断,用于指示程序出现了重大不可修复的异常,需要程序员去重点关注与处理。本文以结合实际的故障代码来带你分析一下硬件故障产生的种类及如何根据异常的现象寄存器信息来分析找到出现故障问题的代码位置。2、Hard fault的种类 产生硬件故障的原因有,除法的除数为0、总线错误(非法的内存地址访问),非对齐...原创 2021-01-17 21:22:37 · 2385 阅读 · 0 评论 -
rt thread 3.1.3版本操作系统定时器卡死的问题
1、操作系统定时器 操作系统定时器是由rt thread内核提供的一个定时功能,支持硬件定时器或软件定时器。最后在一个产品的使用了多个定时器来实现数据通信指示灯的功能,原理是创建一个周期定时器,创建一个单次定时器,当有数据通信时,启动周期定时器来控制灯闪烁,启动单次定时器来超时关闭灯和周期定时器。当有数据再次到来时重新启动,达到了闪灯的效果。2、定时器卡死的问题 这个定时器由2个不同优先级的线程调用,在程序经过长时间运行后,会出现定时器卡死,即程序一直运行在rt_timer_...原创 2021-01-14 23:11:52 · 2410 阅读 · 0 评论 -
lwip协议以太网驱动层的软件数据结构详细解析
1、概述 本文详细介绍了LWIP协议在rt-thread操作系统上的驱动层结构,rt thread操作系统的硬件驱动层采用标准的设备驱动结构,网络接口对应的网络设备netdev。网络设备下面对应的是以太网驱动程序,同时网络设备向应用层提供网络的各种功能接口,实现了如linux操作系统的ifconfig, ping命令等功能。整个lwip协议到底层硬件的结构如下,具体的参考代码可以查看rt-thread 3.1.3的正点原子阿波罗bsp工程。lwip协议的软件层次结构2、网络接...原创 2020-05-31 11:59:41 · 1672 阅读 · 0 评论 -
lwip协议的配置与裁剪
1、前言 最近项目的上使用有线以太网功能,软件协议使用LWIP协议,操作系统使用Rt thread 3.1.3版本,硬件使用STM32F429+PHY LAN8720方式。这篇记录总结lwip的详细配置。2、配置文件种类 lwip的配置文件有lwipopts.h和opt.h两个头文件,其他中opt.h文件是lwip的默认配置文件,不需要修改此文件,lwipopts.h是用于配置lwip的文件,用户的对协议的配置请在这个文件中增加与修改,lwipopts.h文件中定义宏会覆...原创 2020-05-14 18:44:47 · 5251 阅读 · 0 评论 -
RT-Thread操作系统在cortex-m3内核的移植原理
1、简介 本文主要介绍RT Thread操作系统在cortex-m3内核上的移植接口文件,通过本篇博客你将深入了解RTOS操作系统是怎么通过触发软中断实现任务切换的,怎么实现内核异常信息的打印功能。2、移植的接口文件 RT-Thread操作系统的移植接口文件主要用cpuport.c,context_rvds.s,backtrace.c,div0.c,showmem.c。...原创 2020-02-23 22:30:18 · 2996 阅读 · 5 评论 -
小内存堆管理算法详细解析
1、小内存堆管理算法介绍 本文所介绍的内存堆管理是RT Thread操作系统中的小内存管理算法,参考mem.c源文件。这个程序适用于小内存的CPU,比如像STM32F这样的只有几十-几百KB内存的处理器。整个内存堆的处理算法简洁,高效,现对其中的原理做详细的介绍。首先先写上整个源代码,如下。内存堆的函数只有主要的4个函数: rt_system_heap_init rt_ma...原创 2020-01-20 23:58:43 · 1535 阅读 · 0 评论