自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

StephenZhou

真正的男人就像孤独的 ROSHAN ,即使被伤的再深,都会再一次爬起来并且把不朽的祝福送给那个曾经伤害过他的人

  • 博客(254)
  • 资源 (15)
  • 收藏
  • 关注

原创 GNU Assembler

0、绪言虽然现在嵌入式开发99%内容都是由 C(C++) 代码构成,但是一旦是做嵌入式,那就避免不了接触汇编代码,和汇编相关的内容,主要由汇编器、CPU 体系架构指令集构成;使用不同汇编器的情况下,具体汇编实现的语法也会有部分出入,比如使用 MDK 那一套(ARM Assembler)和 GNU 那一套(GNU Assembler),汇编代码上,会有明显的不一样,这主要取决于汇编器;本文侧重于 ARM GNU 的汇编部分;可以参考的内容:1. 网页版的内容:Using as...

2022-01-25 00:28:24 2566 1

原创 极简之道 — RISC-V

写完并发布完自己的第一款 RTOS 后《自制 RTOS》,最近打算研究一下 RISC-V,一方面是,因为以前做过一颗 RISC-V 的芯片项目,有一定的基础,但那时候并没有深入到 CPU 最底层去了解很多非常细节的东西,另一方面,RISC-V 作为今后的发展趋势,还是需要抽点时间去好好的理解;RISC-V 是最新的一种精简指令集架构,现在 ARM 已经统治了嵌入式领域,X86 统治了 PC 和服务器领域,CPU(或者 MCU)的设计需要有兼容性,对于不断发展的技术来说,对芯片的设计要求也就越来越多,比如

2022-01-06 10:42:17 1851 3

原创 自制 RTOS

目录0. 配置1. 体系架构2. 内存管理3. 任务/调度器3. IPC3.1 信号量3.2 互斥锁3.3 消息队列4. 临界区保护4.1. 全局中断4.2. 挂起调度器4.3. 互斥锁5. 软件定时器6. 支持 Log 日志分级7. Trace8. Shell9. Demo都说,不会写 RTOS 的程序员不是好厨师,那么就写点东西吧;V1.0 版本大概的组织是这样的:这个 RTOS 命名为 MxOS;项目地址为:

2021-12-30 11:13:18 4078 9

原创 SDRAM 介绍

1、名词解释SDRAM :Synchronous Dynamic Random Access Memory,同步动态随机存储器。同步是指其时钟频率和CPU前端总线的系统时钟相同,也就是双方通信,有同步时钟;内部命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据的读写。NOTES:这里需要强调一下:为了保证数据一直都在,SDRAM 需要不停的去刷新,刷新,刷新;2、SDRAM 内部结构这里以...

2021-08-24 00:20:55 10166 1

原创 树莓派 4B 本地编译内核

目录1、下载内核源码1.1、配置 proxy1.2、安装依赖2、配置内核3、编译内核4、更新内核5、重启6、问题6.1、32bit/64bits6.2、覆盖到 SD card最近打算玩玩树莓派,遂之买了一块 Raspberry 4B 的板子。板子的资源就不在多说了 BCM2711的芯片,ARM Cortex-A72 @ Qual Core;拿到板子,SD 卡中已经带有系统,所以呢,我们可以直接在树莓派上面编译 Kernel,不用在 PC 上交叉编译,只不过

2021-08-05 15:08:35 4125 1

原创 ARM64+Linux5.0 自旋锁

目录1、资源竞争2、自旋锁之前 《转载Linux 内核同步(二):自旋锁(Spinlock)》文章是 ARMv7 架构以及 Linux 4.x 的自旋锁相关的原理和实现,最近在看 ARMv8 + Linux 5.x 相关的内容,所以稍微更新一点东西;他们之间的主要区别在于处理器架构的变化,之前的独占指令有些变化,导致最后和处理器相关的调用部分有些许更新,同时也在之前的基础之上新增了部分插图,来更加清晰的说明情况;1、资源竞争首先说明导致竞争的所有情况:1、单个 CPU 上多个任.

2021-06-16 21:12:11 2426 6

原创 Zynq-PS-SDK(15) 之 OV5640-HDMI 视频通路软件配置

《Zynq-PS-SDK(13) 之 VDMA+VTC+AXI4S-VideoOut 视频通路软件配置》将硬件做好后,导出到 SDK,我们进行代码的编写,代码主要分为两部分:1、SCCB 的 I2C 对 OV5640 进行配置;2、配置 VDMA + VTC + Dynamic Clock;先 reset,完成 SCCB 的配置,然后进行 IP 核的配置,main 函数如下所示:/*****************************************************

2021-05-24 15:18:43 1923 2

原创 Zynq-PS-SDK(14) 之 OV5640-HDMI 视频通路硬件搭建

目录1、OV56401.1、OV5640 Input Signals1.2、OV5640 Output Signals2、Video In to AXI4-Stream在前面介绍了使用 VDMA + VTC + Video Out 搭建的显示通路,后端接转码 TMDS 差分信号输出到 HDMI 上;这里不再使用静态图片,使用 OV5640 摄像头作为 Video 输入,最终将视频信息输出到 HDMI 屏上;数据的输出部分,我们沿用之前的 VDMA + VTC + Dynamic C.

2021-05-24 14:59:09 4429 2

原创 Zynq-PS-SDK(13) 之 VDMA+VTC+AXI4S-VideoOut 视频通路软件配置

在《Zynq-PS-SDK(12) 之 VDMA+VTC+AXI4S-VideoOut 视频通路硬件搭建》我们已经生成了 bitStream,硬件环境已经准备 OK,接下来进行软件的配置;软件的配置主要针对的对象是下面的黄色部分,也就是 AXI4-lite 总线接入的寄存器配置,涉及到如下:1、Dynamic Clock Generator;2、VTC;3、VDMA;这里新增一个函数,叫做Steph_VideoEngineInit,用于配置 video 相关的寄存器:/*.

2021-05-09 23:22:51 5838

原创 Zynq-PS-SDK(12) 之 VDMA+VTC+AXI4S-VideoOut 视频通路硬件搭建

前面分别叙述了《Zynq-PS-SDK(9) 之 VDMA》、《Zynq-PS-SDK(10) 之 VTC》以及《Zynq-PS-SDK(11) 之 AXI4-Stream To Video Out》;搭建一个简单的视频通路(Framebuffer -> HDMI)就要用到这些个模块,总体的设计框图如下所示:视频数据的 Framebuffer 在 DDR 中,通过 Processing System 写入进去;数据通过高带宽的 AXI4 接口(这里用到了 HP AXI,即 64bits 带

2021-04-27 00:30:29 5104

原创 Zynq-PS-SDK(11) 之 AXI4-Stream To Video Out

目录1、Architecture2、Signals3、Timings4、General Design Guidelines1、Architecture前面介绍了《Zynq-PS-SDK(9) 之 VDMA》和《Zynq-PS-SDK(10) 之 VTC》,数据流和时序流;从 VDMA 出来的是 AXI-Stream 流式数据,从 VTC 出来的是像素时钟得到的 Hsync,Vsync,Hbank,Vbank等时序信号,而我们最后对应到 HDMI 的是像素和时序一起的信号,所以这里需要

2021-04-25 20:43:04 5722

原创 Zynq-PS-SDK(10) 之 VTC

在《Zynq-PS-SDK(9) 之 VDMA 》中,描述了 VDMA 的作用和用法,VDMA 可以按照我们配置的数据量(图像的宽高),从固定 FrameBuffer 地址,将主存中的数据取出(或者写入);本质上是完成了主存的数据(具体的说,是图像数据)的高带宽搬移;为了实现 PS 通过帧存操作 PL 端的 HDMI 进行输出,光有 VDMA 不够,我们还需要时序生成器,具体可以参考《Zynq-PL之HDMI显示》,在《Zynq-PL之HDMI显示》中,我是自己写了一个叫做hdmi_timing_ge.

2021-04-21 21:10:25 2958

原创 Zynq-PS-SDK(9) 之 VDMA

目录0、Prepare1、Preview2、VDMA2.1、Features2.2、Channels defines2.2.1、Write Channel(S2MM)2.2.2、Read Channel(MM2S)2.3、Performance2.3.1、Frequency2.3.2、Latency2.3.3、Throughput2.3.4、Resource Utilization2.4、Signals2.5、Timings2.5.1、Read T

2021-04-21 01:12:44 7352

原创 Zynq-PS-SDK(8) 之双核通信 (AMP)

目录0、Hardware1、SDK Configurations2、Source Code2.1、CPU 02.2、CPU 1Zynq 的 PS 端是 ARM Cortex-A9 的双核,前面的工程都是只是用了单核来跑,现在来玩玩双核,并且使用双核进行通信;在 UG585 上有如下描述:默认情况下,CPU0 作为启动 CPU,而 CPU1 处于 WFE 的状态,唤醒 CPU1 的方式是往地址 0xFFFFFFF0 写入一个地址,然后使用 SEV 指令,去唤醒 CPU.

2021-04-15 15:14:10 2341

原创 Zynq-PS-SDK(7) 之自定义 AXI-Lite IP

目录1、New AXI-Lite IP1.1、Create AXI-Lite IP1.2、Edit AXI-Lite IP2、Block Design AXI-Lite IP3、Software design前面说了 PS-PL 之间的连接《Zynq-PS-SDK 之 PS-PL 连接》以及已经使用了 Vivado 自带的 AXI GPIO 的 IP,并且在 PS 端进行访问《Zynq-PS-SDK 之 AXI GPIO》,我们依然以下面这个图为目标,来进行覆盖设计:这.

2021-04-09 11:17:04 1744

原创 Zynq-PS-SDK(6) 之 AXI GPIO

目录1、Block Design2、Generate top level3、Add constraints & Bitstream4、Export Hardware5、Software driver5.1、Datasheet5.2、Code前面说过 PS 端可以使用 EMIO 来映射 IO,进而使用到 PL 端的 IO 口,另外一种办法就是使用 AXI 总线互联,在 PL 端实现一个逻辑,通过 AXI 总线进行配置和访问,这里先以一个最简单的 IO 控制为例;.

2021-04-07 17:09:45 2037 3

原创 Zynq-PS-SDK(5) 之 PS-PL 连接

目录0、Preview1、Clocks and Resets2、Interrupt Signals3、Event Signals4、AXI Interface前面单独针对 PL 和 PS 进行了一些开发,PL 可以当做纯 FPGA 开发,PS 可以认为是纯 ARM Cortex-A9 Dual Core +外设驱动的开发;Zynq 的魅力在于可以同时定制 FPGA + Software 的定制开发,想想都刺激,这也是我为何打算玩 Zynq 的初衷,能够在一颗芯片上,同时体验 F.

2021-03-30 23:06:33 2405

原创 Zynq-PS-SDK(4) 之 GIC 配置

目录1、Configuration2、GIC SDK Architecture2.1、Structures2.1.1、GIC interruptvectortable2.1.2、GIC info2.1.3、GIC2.2、Functions2.2.1、Basic2.2.2、APIs2.3、Configure flow2.3.1、XScuGic_LookupConfig2.3.2、XScuGic_CfgInitialize2.3.3、Xil_Excepti..

2021-03-23 16:22:54 6347 2

原创 Zynq-PS-SDK(3) 之 PLL 配置

1、InitializeZynq 带 PS 的裸机启动,可以选择 SD Card、QSPI、或者 JTAG;这里以 JTAG 为例;在 Launch SDK 的 Debug 的时候,sdk 目录下会生成 ps7_init.c 这个里面就是初始化的内容;从入口开始看:ps7_init;intps7_init() { // Get the PS_VERSION on run time unsigned long si_ver = ps7GetSiliconVersion (); ...

2021-03-16 17:30:11 4489 3

原创 Zynq-PS-SDK(2) 之 EMIO 使用

目录1、Descriptions1、Usage1.1、PL 配置1.2、PS 代码1、Descriptions在前面一篇里面写了《Zynq-PS-SDK 之 MIO 使用》,MIO 可以理解为 PS 端(ARM 端)的硬连线到外部,Zynq 也提供了一种方式,从 PS 端连到 PL 端的 IO,称之为 EMIO(External 的意思);GPIO Bank 和前面的一些概念这里不再重复,直接参考《Zynq-PS-SDK 之 MIO 使用》;这里看到 EMIO 有 32.

2021-03-11 00:23:00 4809 3

原创 Zynq-PS-SDK(1) 之 MIO 使用

1、MIO 配置以及寄存器Zynq 7020 的 PS 端(ARM 端)的外设 IO(也叫 IOP)分为 MIO 和 EMIO,他们有什么区别呢?首先他们都是 PS 端的 IO 资源,MIO 有 54 个 Pin 脚,分为两个 Bank(Bank0、Bank1)是 PS 直接的管脚连接,可以接诸如 UART、SPI、IIC、GPIO 等具体的外设引脚;EMIO 也是 PS 的资源,它接到了 PL 端,由 PL 端输出信号;这里,我们可以简单的理解为,MIO 是可以通过 Pin...

2021-03-09 15:03:53 10502

转载 AACPS 和 ATPCS

目录1. 基本概念2. 寄存器使用规则3. 堆栈使用规则4. 参数传递规则4.1 参数个数可变子程序参数传递规则4.2 参数个数固定子程序参数传递规则5. 子程序结果返回规则6. 延伸部分1. 基本概念AAPCS (ARM Archtecture Procedure Call Standard)规定了一些 ARM 处理器子程序间调用的基本规则,这些规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则。有了这些规则之后,单独编译的C语.

2021-03-04 00:51:12 955 1

原创 ARMv7-A 处理器窥探(5) —— MMU/TLB

之前写过 MMU 的一些入门和基础的分析《初探 MMU》和《ARMv7-A 的 MMU 浅析》,有基于概念掌握和基本入门的一些理解,这里打算在针对 ARMv7-A 的处理器再次稍微深入一点研究一下他的 MMU 和 TLB;这一版同样基于 ARM 官方文档:ARMv7-A_and_R_Architecture_Reference_ManualDEN0013D_cortex_a_series_PG的一个是完整版的 ARMv7-A 的处理器架构文档,第二个是 Cortex-A 系列的 Prog

2021-03-03 11:11:49 5983 11

原创 ARMv7-A 处理器窥探(4) —— Cache

0、Preview缓存这个词来源于法语动词 cacher,“隐藏”。 在许多情况下,可以说 Cache 对大家是透明的,或者对大家是不可见的。 但是,虽然是“透明”,但是并不代表它不存在,咱们还是需要去了解一下。第一版ARM架构诞生时,处理器的时钟速度和内存的访问速度大致相似。发展到今日, CPU 核心要复杂得多,速度远远超过以前。然而,外部总线和存储设备的频率没有达到同样的程度。 片上SRAM的小块,它可以以与核心相同的速度工作,但是这样的RAM与标准DRAM(主存)块相比非常昂贵。主存的...

2021-03-01 21:28:20 2903

原创 ARMv7-A 处理器窥探(3) —— Memory Model

Notes:The cacheability and cache allocation hint attributes apply only to Normal memory. Device and Strongly-ordered memory regions are Non-cacheable

2021-02-25 16:59:36 3347 2

原创 ARMv7-A 处理器窥探(2) —— CP15 协处理器

ARMv7-A 处理器除了标准的 R0~R15,CPSR,SPSR 以外,由于引入了 MMU、TLB、Cache 等内容,ARMv7-A 使用协处理器来对这些扩展来进行管理,ARMv7-A 支持 16 个协处理器,编号从 CP0~CP15,其中的 CP15 协处理器称之为系统控制协处理器,CP15 协处理器下的寄存器包含了 MMU、TLB、Cache等关键组件,其余的 CP0~CP14 有的控制Debug功能,有的控制SIMD,有的控制浮点,咱们暂时...

2021-02-22 17:13:26 3827 4

原创 ARMv7-A 处理器窥探(1) —— 处理器模式

ARM 官方针对 ARMv7-A 处理器的描述再:ARMv7-A_and_R_Architecture_Reference_Manual1、处理器模式1.1、特权等级ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。在非安全模式下,存在三种运行特权 PL0,PL1和 PL2(Privilege level)。(这里仅仅讨论非安全 State)特权等级 描述

2021-02-08 00:20:49 3633

原创 Zynq-PL之HDMI显示

有了 《HDMI 1.4 协议浅析》的加持,那么使用 ZYNQ 搞一个 HDMI 输出来玩玩;1、硬件原理图首先,在硬件上,HDMI Connector 信号直接从 PL 端引出来,根据 HDMI 1.4 的协议呢,传输需要以 TMDS 差分信号进行传输所以呢,在物理上,我们需要关注的管脚有:HDMI DATA[2:0] 的 TMDS 差分信号对;HDMI CLK 的 TMDS 差分信号对;...

2021-02-01 21:22:10 9313 1

原创 Zynq-PL之PWM呼吸灯

目录1、硬件原理图1.1 LED2、全局时钟3、复位2、设计2.1、LED 闪烁控制2.2、LED 的 PWM 呼吸灯2.2.1、PWM 控制器2.2.2、PWM 占空比可变2.3、顶层设计2.4、约束玩 Zynq 呢,可以有几个方面,单玩 FPGA,单玩 ARM Cortex-A9 Dual Core,ARM+FPGA 带操作系统,FreeRTOS 或者 Linux;FPGA 侧叫 PL,先以一个简单的 PWN + LED 的工程来认识和配置 .

2021-01-31 21:27:05 1805

原创 HDMI 1.4 协议

手上的 Zynq 7020 单板带 HDMI 接口,Zynq 的 PS 并没有支持 HDMI IP 外设,所以再单板上的 HDMI 接口是直接接到了 PL 的引脚上,如果要用到 HDMI 来做为显示的话,那么就要在 PL 端去做一个 HDMI 协议层出来,既然要搞,那么需要先研究一下 HDMI 的协议;总所周知,HDMI 是用来传输音频和视频的,在他之前,还有 DVI 接口,VGA 接口;HDMI 协议现在最新的 Specification 版本是 2.1,可以支持 8K@60Hz 和 4K@120

2021-01-07 21:46:05 12960 5

原创 FPGA 路线

FPGA 路线:

2020-11-17 23:02:46 867

原创 FreeRTOS --(17)任务通知浅析

之前聊到,FreeRTOS 可以通过信号量(二值信号量和计数信号量)、队列、事件组来同步任务与任务,任务与中断;在 FreeRTOS 中,还有一个东西也可以用作任务与任务,中断与任务的同步,它叫任务通知(Task Notifications);如果我们通过信号量、队列、事件组的形式来同步,在 FreeRTOS 中,叫通过了一个Communication Object;也就是说通过了一个用于连续接收方和发送方的中间模块;FreeRTOS 的任务通知(Task Notifications),..

2020-07-21 00:03:35 6904 2

原创 FreeRTOS --(16)资源管理之临界区

临界区的概念在任何的 SoC 都存在,比如,针对一个寄存器,基本操作为:读->改->写;在不带 OS 的系统下,普通代码希望对某个寄存器进行读->改->写,此刻,一个 IRQ 打断了这个操作,也同时对这个寄存器进行读->改->写,中断返回,后,普通代码又继续进行,这样就会导致逻辑错误;在带 OS 的情况下,不光是有 IRQ,而且存在任务切换,这样,同一个资源在 ISR 和不同任务之间修改,这造成了临界区;临界区的资源需要保护起来,临界区保护的不是代码,而是数据;.

2020-07-17 11:57:53 4204 2

原创 FreeRTOS --(15)信号量之概述

FreeRTOS 中使用信号量来做同步,信号量可以在任务中使用作为任务与任务间的同步,也可以在中断中使用(带 FromISR 的版本)中断与任务间的同步;针对不同的应用场景,信号量分为两种:1、二值信号量;2、计数信号量;1、二值信号量1.1、Usage顾名思义,二值信号量只有两个值:0 和 1;它用于简单场景下的任务与任务、中断与任务之间的同步,比如:一个任务,在等待某个资源到位后,才能够继续执行,在得到这个资源之前,它处于阻塞状态,假如一个中断来了,给出了这个资源,那么.

2020-07-16 00:20:17 5886

原创 FreeRTOS --(14)队列管理之概述

在任何的 OS 中,都需要支持任务与任务,中断与任务之间的数据传输机制,在 FreeRTOS 中,这种数据传输的方式被称之为队列(Queue);队列是一个 FIFO 模型,在创建一个队列用于数据传递的时候,需要指定队列的长度,创建完队列,便可以使用它进行数据传递;一个简单的例子:有两个任务 A 和 B,任务 A 将数据传递进队列,任务 B 作为接收端,从队列中获取数据:1、下面是创建了一个长度为 5 的队列:2、此刻任务 A 写一个数据 10 到 Queue:3、任务 A 在写一

2020-07-10 18:02:35 7370

原创 FreeRTOS --(13)任务管理之空闲任务

创建完毕任务,启动调度器,任务控制,系统 SysTick 来临后判断是否需上下文切换;如果没有其他任务执行的情况下,FreeRTOS 的 Idle 任务将被调度投入运行;在启动调度器的时候,Idle 任务就被创建了,优先级为最低 0;void vTaskStartScheduler( void ){.....................xReturn = xTaskCreate( prvIdleTask, configIDLE_TAS

2020-07-07 19:24:09 3568

原创 FreeRTOS --(12)任务管理之任务切换

现在创建任务(xTaskCreate)、启动调度器(vTaskStartScheduler),都分析完成了,SysTick,PendSV 中断已经使能,接下来第一个任务便可以自由的奔跑;等待下一次 SysTick 来临(1ms 后),调度器工作;1、xPortSysTickHandlerSysTick 触发后,会调用到它的 ISR 函数xPortSysTickHandler,这个函数的实现和处理器体系架构相关,定义在 port.c:void xPortSysTickHandler( v..

2020-07-07 00:57:07 2719 1

原创 FreeRTOS --(11)任务管理之系统节拍

前面有了创建任务、启动调度器、任务控制,接下来便开始分析一个 Tick 到来之后,FreeRTOS 即将有什么行为;在启动调度器的时候,就已经配置好了 SysTick,它作为 OS 的心跳,每隔一个固定周期来一次 SysTick 中断,来驱动 OS 做事(任务调度);以 STM32 为例,定义的configTICK_RATE_HZ 为 1000,由《FreeRTOS --(9)任务管理之启动调度器》得知,系统节拍时钟周期为1ms;不同的处理器结构可能有所区别,所以他是需要移植的部分,在 p.

2020-07-06 21:16:32 2275 6

原创 FreeRTOS --(10)任务管理之任务延时

在《FreeRTOS --(7)任务管理之入门篇》中讲过,如果有几个任务同时跑,但是又都不阻塞的话,那么最高优先级的任务将会占领整个 CPU,因为每次都会调度到它,一直处于 Ready 状态,所以呢,调度器每次都要选择优先级最高的任务来让它执行;所以,不管怎么样,任务做完自己该做的事情,就应该进入阻塞状态,等待下次该自己做任务的时候,在占领 CPU,这样既可以让 Idle 线程,在系统空闲的时候跑,也可以让让任务在合理的时间占领 CPU;之前也说过,让任务进入阻塞状态的方式有两种:1、让任务延时:

2020-07-05 20:22:19 3703 1

原创 FreeRTOS --(9)任务管理之启动调度器

目录1、vTaskStartScheduler2、xPortStartScheduler3、vPortSetupTimerInterrupt4、prvStartFirstTask5、vPortSVCHandler在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并没有被调度起来,仅仅是创建了,如果想要真正的跑起来,那么还需要调用让调度器跑起来的函数:vTaskStartScheduler典型的用法是:xTaskCreate(.."task_1.

2020-07-01 16:05:08 5017 4

STM32中文参考手册_V10

STM32中文参考手册,中文描述,详细讲解了 STM32F103xxx的基本构成以及访问接口

2018-06-07

STM32F103 的 SDIO 对应 SDCard V2.00 版本 Spec

STM32F103 的 SDIO 对应 SDCard V2.00 版本 Spec 说明

2018-09-06

陈皓版-跟我一起写Makefile

陈皓版-跟我一起写Makefile,根据 GNU Makefile 文档的描述进行中文的介绍

2022-02-06

USB_HID_Spec_V1.11

USB 官方的 HID 说明文档,文档中详细说明了 HID 相关的特性和描述 HID 的描述符合 Report 描述符

2018-09-06

CSC 工具,用于图像格式的转换

CSC 工具,用于图像格式的转换

2022-10-29

MIPI Spec 资源整合,包含 DBI/DPI/DSI/CSI/DCS

MIPI Spec 资源整合,包含 DBI/DPI/DSI/CSI/DCS 的官方协议相关内容

2022-03-28

奔跑吧Linux

讲解 Linux Kernel 的较为新的版本的机制,其中包含了比较新的进程调度相关内容

2019-02-16

QT 实现的64bit十六进制与十进制相互转换工具,带 bitmap 配置显示

QT 实现的 64 bit 十六进制与十进制实时相互转换工具,带 bitmap 配置显示,方便进行寄存器位的配置

2019-05-07

QT 实现的串口收发 exe 文件

QT 实现的串口收发 exe 文件,实现了基本的配置和串口的收发 exe 文件

2019-09-24

用 QT 实现的串口收发程序

用 QT 实现的串口收发程序,基本功能实现,能够通过设置基本属性,打开串口并进行数据收发

2019-09-24

USB 2.0 协议规范

USB官方的 USB 2.0 specification 协议规范,包含了协议规范,电器特性等等内容。

2019-12-02

Linux内核设计与实现_第三版_中文版pdf

Linux内核设计与实现_第三版_中文版的 pdf,带目录结构

2019-01-27

深入Linux设备驱动程序内核机制.pdf

深入Linux设备驱动程序内核机制.pdf,带目录结构的高清版本

2019-01-27

Linux设备驱动开发详解

Linux设备驱动开发详解的 pdf 文件,主要描述Linux下常用驱动原理

2019-01-30

深入理解Linux虚拟内存管理

深入理解Linux虚拟内存管理的 pdf 文件。主要讲述内存相关内容

2019-01-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除