STM32
文章平均质量分 97
流云IoT
这个作者很懒,什么都没留下…
展开
-
IOT-OS之RT-Thread(十八)--- 如何使用MQTT 协议实现OneNET 远程监控?
物联网时代,我们想把周边的嵌入式设备接入Internet,依托云平台提供的各种服务,实现对嵌入式设备的远程监测和控制,甚至是远程OTA 升级等。各大云平台厂商经常谈到的“云-管/网-边-端”是什么?我们如何将本地设备接入云平台呢?以OneNET 云平台为例,平台域和设备域分别如何配置才能让设备顺利接入云平台?物联网设备接入云平台常用MQTT 协议通信,Paho-MQTT 的实现原理是怎样的?OneNET SDK的实现逻辑是怎样的?我们如何开发应用实现数据点上传、响应下发命令、远程OTA 升级等功能呢?原创 2021-05-16 23:10:24 · 2946 阅读 · 1 评论 -
ARM 代码烧录方案与原理详解 --- SWD/JTAG + Bootloader + OTA (ICP + ISP + IAP)
一、ICP(In Circuit Programing):可通过CPU的Debug Access Port 烧录代码,比如ARM 的SWD或JTAG;二、ISP(In System Programing):可借助MCU厂商预置的Bootloader 实现通过板载UART或USB接口烧录代码,比如STM32的System memory可预置ISP代码;三、IAP(In Applicating Programing):由开发者实现Bootloader功能,可提供代码烧录、差分升级、空中升级、一键恢复等功能。原创 2020-06-22 21:03:48 · 26259 阅读 · 4 评论 -
IOT-OS之RT-Thread(十五)--- SDIO设备对象管理 + AP6181(BCM43362) WiFi模块
一、AP6181 Wi-Fi模块简介 AP6181 Wi-Fi 模组内部实际封装的是Broadcom 43362 芯片,该芯片内部是集成了ARM处理器及RAM/ROM存储空间的,用于运行 Wi-Fi 固件。AP6181 模块是基于SDIO 总线协议进行通信的,因此模块与主控端最底层应该分别是SDIO Card controller与Host controller。二、SDIO设备对象管理三、SDIO 驱动配置原创 2020-04-07 19:41:10 · 16900 阅读 · 2 评论 -
STM32之CubeL4(四)--- SD/MMC + SDIO + HAL
一、SD/MMC/SDIO概念区分MMC(MultiMediaCard)从本质上看,是一种用于固态非易失性存储的规范,定义了诸如卡的形态、尺寸、容量、电气信号、通信协议等方方面面的内容。后来基于不同的考量,进化出了MMC、SD、microSD、SDIO、eMMC等不同的规范。SDIO强调的是接口 I/O功能,不再关注另一端的具体形态(可以是Wi-Fi card、Bluetooth card、GPS card、GSM/GPRS card 、Camera card、Radio/TV card等)。原创 2020-03-31 02:03:27 · 9322 阅读 · 0 评论 -
IOT-OS之RT-Thread(十二)--- 驱动分层与主从分离思想
一、驱动分层思想通过前面对RT-Thread设备模型框架,以及UART、IIC、SPI 等设备驱动实现过程的介绍,我们应该对驱动分层思想并不陌生了。操作系统为什么对设备驱动采用分层管理呢?驱动分层有什么好处呢?二、主从分离思想总线类型或主机控制器是跟SOC或CPU芯片平台相关的,外设或从设备是跟具体的硬件设备相关的。如果将主机控制器驱动与外设驱动分开描述管理,能在更换CPU/SOC和硬件外设时,更方便的进行驱动移植,极大减少驱动新增开发量,这就是Linux提出的总线设备驱动模型。原创 2020-03-12 23:52:33 · 4467 阅读 · 0 评论 -
TCP/IP协议栈之LwIP(十一)--- LwIP协议栈移植
一、移植环境准备前面主要是基于QEMU虚拟机环境进行LwIP协议栈开发调试的,如果手头没有开发板可以先在个人电脑上运行QEMU虚拟机以便学习LwIP协议栈的实现原理或者开发调试过程。在实际产品中,就需要在真实的开发板上移植LwIP协议栈,并在此基础上进行开发调试了。1.1 IoT-OS准备现在物联网设备越来越需要操作系统支持,所以本文在有操作系统的基础上移植LwIP协议栈,选择的操作系统环境...原创 2019-11-30 14:08:32 · 5233 阅读 · 0 评论 -
IOT-OS之RT-Thread(八)--- IIC设备对象管理与Sensor管理框架
一、IIC协议简介1.1 IIC总线简介I2C(Inter Integrated Circuit)总线是 PHILIPS 公司开发的一种半双工、双向二线制同步串行总线。I2C 总线传输数据时只需两根信号线,一根是双向数据线 SDA(serial data),另一根是双向时钟线 SCL(serial clock)。SPI 总线有两根线分别用于主从设备之间接收数据和发送数据,而 I2C 总线只使用...原创 2019-11-19 00:46:59 · 2669 阅读 · 2 评论 -
IOT-OS之RT-Thread(十一)--- FAL分区管理与easyflash变量管理
FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API。FAL抽象层位于SFUD框架的上层,可以将多个Flash硬件(包括片内Flash和片外Flash)统一进行管理,并向上层比如DFS文件系统层提供对底层多个Flash硬件的统一访问接口,方便上层应用对底层硬件的访问操作。原创 2019-10-24 01:17:11 · 13543 阅读 · 9 评论 -
IOT-OS之RT-Thread(十)--- DFS文件系统管理与devfs/elmfat示例
文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 (Abstract data type),是一种用于向用户提供底层数据访问的机制。文件系统通常存储的基本单位是文件,即数据是按照一个个文件的方式进行组织。当文件比较多时,将导致文件繁多,不易分类、重名的问题。而文件夹作为一个容纳多个文件的容器而存在。原创 2019-10-22 20:14:35 · 7813 阅读 · 0 评论 -
IOT-OS之RT-Thread(九)--- SPI设备对象管理与SFUD管理框架
一、SPI设备对象管理前篇博客介绍了I/O设备模型框架,并以PIN设备驱动框架为例说明了RT-thread I/O设备模型框架的实现原理,下面以SPI设备驱动框架为例再做进一步介绍。SPI设备与QSPI设备CubeMX配置及HAL API库函数的使用可参考博客:SPI + QSPI + HAL。最上层的I/O设备管理层在前篇博客已经介绍过了,下面从中间的SPI设备驱动框架层开始介绍。1.1...原创 2019-10-19 00:52:17 · 5877 阅读 · 1 评论 -
STM32之CubeL4(三)--- SPI + QSPI + HAL
# 一、SPI简介SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步通信总线,常用于短距离通讯,主要应用于 EEPROM、FLASH、实时时钟、AD 转换器、还有数字信号处理器和数字信号解码器之间。QSPI 相比SPI增加了队列传输机制,其最大结构特点是以 80 字节的 RAM 代替了 SPI 的发送和接收数据寄存器,极大的提高了传输速率。原创 2019-10-14 23:43:22 · 12506 阅读 · 2 评论 -
STM32之CubeL4(二)---USART + DMA + HAL
一、UART简介1.1 串口通信简介一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种,它们的区别是:通信方式并行通信串行通信传输原理数据各个位同时传输数据按位顺序传输优点传输速度快占用引脚资源少缺点占用引脚资源多传输速度相对较慢在集成电路芯片的内部、同一硬件板上各部件之间等(比如指令总线、数据总线、系统总线等)的数据传送通常采用...原创 2019-09-06 01:17:24 · 5638 阅读 · 6 评论 -
IOT-OS之RT-Thread(一)--- 系统启动与初始化过程
一、RT-Thread简介1.1 IOT-OS简介之前已经介绍过RTOS(Real Time Operating System)的原理并分析过UCOS的源码(系列博客链接:https://github.com/StreamAI/UCOS_STM32),这里介绍的IOT-OS(Internet of Things Operating System)跟RTOS有什么区别呢?简单讲,传统RTOS只...原创 2019-09-10 00:40:41 · 7272 阅读 · 0 评论 -
IOT-OS之RT-Thread(二)--- CPU架构与BSP移植过程
一、RT-Thread内核简介将RT-Thread内核移植到某款芯片或板卡上,可以分为两大部分:CPU芯片移植和板级支持包BSP移植。RT-Thread为了能更方便的在不同CPU架构和不同板卡上移植,分别抽象出libcpu抽象层和BSP设备驱动层,两个抽象层向上对内核提供统一的调用接口,向下分别提供一套CPU架构和BSP移植接口,方便用户将RT-Thread移植到多数CPU架构和板卡上,降低了移植难度和工作量。原创 2019-09-13 00:48:48 · 4799 阅读 · 1 评论 -
IOT-OS之RT-Thread(三)--- C语言对象化与内核对象管理
一、RT-thread内核对象模型RT-Thread的内核对象模型是一种非常有趣的面向对象实现方式。由于C语言更为面向系统底层,操作系统核心通常都是采用C语言和汇编语言混合编写而成。C语言作为一门高级计算机编程语言,一般被认为是一种面向过程的编程语言:程序员按照特定的方式把要处理事物的过程一级级分解成一个个子过程。面向对象源于人类对世界的认知多偏向于类别模式,根据世界中不同物品的特性分门别类的组织在一起抽象并归纳,形成各个类别的自有属性。原创 2019-09-14 14:37:15 · 2871 阅读 · 4 评论 -
IOT-OS之RT-Thread(四)--- 时钟管理与内存管理
操作系统要想协调好各线程的调度管理,离不开时间与空间的管理:时间管理主要靠时钟节拍systick实现,时钟节拍是特定的周期性中断,这个中断可以看做是系统心跳(心跳频率一般设为10-1000HZ,时钟节拍率越快,系统额外开销越大),供系统处理所有和时间有关的事件,如线程的延时、线程的时间片轮转调度以及定时器超时等;空间管理主要是对可用存储空间的管理,一般MCU的存储空间可分为片内RAM与片内FLAS...原创 2019-09-17 23:55:26 · 1575 阅读 · 0 评论 -
IOT-OS之RT-Thread(五)--- 线程调度器与线程对象管理
之前的博客UCOS任务调度器与UCOS任务间通信介绍了多任务并行机制、任务调度原理、任务间同步、任务间通信等的实现原理,本文主要从RT-Thread与UCOS的对比与差异看RT-Thread线程管理与线程间同步/通信的实现。一、线程对象管理RT-Thread 线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由 RT-Thread 内核创建的...原创 2019-09-21 12:06:41 · 2382 阅读 · 0 评论 -
IOT-OS之RT-Thread(六)--- 线程间同步与线程间通信
二、IPC对象管理2.1 IPC对象控制块再回顾下内核对象的派生和继承关系:前面已经介绍过直接继承自基对象rt_object的定时器对象rt_timer、内存池对象rt_mempool、线程对象rt_thread,下面要介绍线程间的同步与通信,线程间同步对象rt_sem / rt_mutex / rt_event和线程间通信对象rt_mb / rt_mq都直接继承自rt_ipc_objec...原创 2019-09-21 21:55:03 · 2322 阅读 · 0 评论 -
IOT-OS之RT-Thread(七)--- I/O设备模型框架与PIN设备对象管理
一、I/O设备模型RT-Thread中对于I/O设备的抽象是很有特点一个地方,是ucos,freertos都没有的一个地方。RT-Thread提供了一个简单的I/O设备管理框架,希望所有的I/O设备驱动都通过这个框架编写,实现统一的管理。RT-Thread 提供的 I/O 设备模型框架如下图所示,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层:原创 2019-09-25 20:26:18 · 3254 阅读 · 0 评论 -
STM32之CubeL4(一)---HAL详解与CubeMX使用(GPIO + EXIT示例)
一、HAL库与STD库对比之前使用STM32系列芯片都是基于STD(Standard Peripheral Libraries)标准外设库,标准外设库将相关寄存器以结构体的形式组织起来,使用库函数操作外设有点轻度面向对象编程的感觉,比寄存器操作方便不少。但在不同芯片上使用标准外设库开发的程序可移植性比较差,换个芯片常需要重新做大量的开发工作,为了解决这个问题,ST推出了全新的HAL(Hardwa...原创 2019-08-30 01:03:49 · 14172 阅读 · 4 评论