logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

TinyUSB(1)——USB设备端的初始化

在上面我们简单对整个CDC_ACM模型的回环通信代码进行了梳理,这一节对整个的执行过程进行总结,首先给出USB设备端的状态机和状态说明。首先,将ESP32S3插入上位机之后,上电复位并启动进入固件,此时ESP32S3虽然已经插入上位机,但注意它并不算是Attached状态,因为此时ESP32S3的DWC2 USB控制器还没有有效上拉D+/D-两根线,所以是Not Attached状态。

#risc-v#架构#系统架构 +1
Peripheral Drivers in ESP-IDF(4)——UART(1)

ESP-IDF使用uart_obj_t结构体来抽象一个UART设备中可能拥有的所有属性,以及数据缓冲区和一些读写数据时应该记录的信息,这个结构体拥有的域比较繁杂,具体的字段我们在驱动中遇到时再展开解释/*!< UART 端口号 (0, 1, 2) *//*!< UART 事件队列大小 *//*!< UART 中断处理程序句柄 *//*!< UART 模式 (UART / RS485 / IRDA)

文章图片
#系统架构#c++#linux +2
Peripheral Drivers in ESP-IDF(3)——WatchDog Timer

本文介绍了ESP32系列MCU中看门狗定时器相关的内容,以及在ESP-IDF中对看门狗的软件抽象以及封装。具体来说,IDF中利用硬件上的两个定时器组中的看门狗定时器,分别作为了任务看门狗(MWDT0)和中断看门狗(MWDT1),并分别通过监视FreeRTOS中的两大基本机制——IDLE TASK和tick中断,实现了对非法超时情况的监视与警告。

文章图片
#risc-v#架构#系统架构 +2
Peripheral Drivers in ESP-IDF(2)——GP Timer

这篇博客是ESP-IDF外设驱动系列的第二篇,这篇博客的研究对象是ESP32系列MCU中的定时器组,涉及到的和之前的思路类似,首先,随后深入研究定时器外设的使用方法和其驱动结构组织。

文章图片
#linux#c语言#嵌入式硬件 +1
Peripheral Drivers in ESP-IDF(1)——GPIO

GPIO作为最基本的外设,它的构造和使用还是相对简单的,大部分情况下只需要写入对应管脚的配置寄存器即可改变对应GPIO管脚的属性。然而,GPIO的使用经常会和一些其他组件关联起来,例如GPIO交换矩阵IO多路复用器中断交换矩阵等。本篇博文对有关GPIO的一些基本操作进行了简要的介绍,并对有关GPIO的中断处理程序的基本工作流程做了较为详细的介绍。

文章图片
#risc-v#架构#系统架构 +2
U-Boot(2)——initialization of DM and device driver

在本文中,我们详细讲解了在U-Boot SPL启动过程中,找寻设备树文件的过程以及初始化设备驱动模型(DM)的过程和方法。其中,设备树根据配置的不同以及所处的不同启动阶段,会放置在不同的地址段。而DM的初始化过程,本质上涉及到绑定(bind)和初始化(probe)两个过程,前者更多是软件上的概念,也就是为一个设备创建一个udevice结构体,对其进行初始化并关联到某一个驱动(driver)。后者往

#linux#嵌入式硬件#c语言 +2
6.S081——补充材料——RISC-V架构中的异常与中断详解

在RISC-V标准中,将异常(exception)定义为当前CPU运行时遇到的与指令有关的不寻常情况,而使用中断(interrupt)定义为因为外部异步信号而引起的让控制流脱离当前CPU的事件。而陷阱(trap)表示的则是,由异常或者中断引起的控制权转移到陷阱处理程序的过程。其实Xv6的定义和RISC-V的定义是相互兼容的,我们说在Xv6中有三种方式会触发陷阱:系统调用、中断和程序异常,其实系统调

文章图片
#risc-v#架构#单片机 +2
到底了