自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术干货

进步始于交流,收获源于分享;深入研究,分享最纯粹的技术干货

  • 博客(183)
  • 资源 (19)
  • 问答 (3)
  • 收藏
  • 关注

原创 U-Boot 之八 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的 Driver Model 设计并引入了自己的 Driver Model(DM) 这个驱动架构。这个驱动模型(DM)为驱动的定义和访问接口提供了统一的方法,提高了驱动之间的兼容性以及访问的标准性。

2023-02-27 08:44:21 5488 8

原创 Linux Kernel 之二 零基础构建流程、Image 介绍、Image 使用说明

Linux Kernel 的构建过程与 U-Boot 构建过程是一模一样的。因为 U-Boot 的构建就是采用的 Linux Kernel 的 Kconfig/Kbuild 构建系统。

2022-06-08 12:12:47 4071 2

原创 U-Boot 之五 配置框架、详解 Kconfig & Kbuild 构建系统、构建流程

Kconfig 是 Linux Kernel Build System 中用来对 Linux 内核进行配置工具,后来 U-Boot 也引入了 Kbuild/Kconfig 系统。当执行 make menuconfig 时会出现一个配置界面,允许开发者通过类似于 UI 的方式来对内核进行配置。Kconfig 语法可以从 https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html 里来学习。

2022-02-20 09:39:51 6132 3

原创 Linux Kernel 之零 完整嵌入式 Linux 环境、构建工具、编译工具链、CPU 架构

最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境

2022-01-01 12:54:44 12816 8

原创 ARM 之十九 详解 Semihosting、SWO 以及在 MDK-ARM、IAR、Eclipse、SEGGER-ES 的使用

在嵌入式系统开发中,我们通常会将标准输入输出作为一个控制台功能添加到我的嵌入式应用程序中。这样我就有了一个命令行接口,可以检查和修改目标系统。在 ARM 架构中,Semihosting 和 SWO 是经常会遇到的两个概念,在调试输出方面也是用的非常多的,今天就来学习一下!

2024-10-14 08:00:00 2222

原创 ARM 之十八 详解 MDK、IAR、Eclipse 的 C 标准库及重定向输入输出

在嵌入式系统开发中,我们通常会将标准输入输出作为一个控制台功能添加到我的嵌入式应用程序中。这样我就有了一个命令行接口,可以检查和修改目标系统。我们最常用的方法就是将标准输入输出进行重定向,今天就来重点学习一下!

2024-09-23 08:00:00 218

原创 开发工具 之十二 详解 J-link、OpenOCD 的 FLASH、RAM 烧写原理、配置、自定义

现在,一些主流的嵌入式仿真器、调试器都提供了自己的 FLASH、RAM 烧写策略,他们不限于 ARM 架构,目前,使用最多的就是 J-Link 和 OpenOCD,今天就来详细学习一下!

2024-07-15 08:30:00 518

原创 开发工具 之十一 详解 OpenOCD 源码、构建、配合各仿真器使用示例

OpenOCD(Open On-Chip Debugger)是一个开源的跨平台的片上调试器,旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。其工作方式就是代替了原有那些调试适配器提供的相关工具, 直接通过 USB 驱动访问适配器,进而访问目标硬件。

2024-07-09 10:04:31 876 2

原创 Yocto 之二 详解 Layer Model、配置文件、Recipes 等

Yocto Project 引入了 Layer Model 这一机制,这也是它区别于其他构建系统的一点。其中,BSP 和 DISTRO 是其 Layer Model 中最具有代表性的两个 Layer。

2024-06-03 08:30:00 380

原创 LwIP 之十 详解 TCP RAW 编程、示例、API 源码、数据流

LwIP 使用一个 struct tcp_pcb 结构来封装一个 TCP 通信实例,一个 tcp_pcb 处理一个 TCP 通信。struct tcp_pcb 封装了通信所需要所有参数,而对于数据包,则通过回调函数的形式传递给用户(由于通信涉及链接,因此涉及的回调比较多 tcp_recv_fn recv;、tcp_connected_fn connected;、tcp_poll_fn poll; 等)

2024-05-27 08:30:00 549 1

原创 LwIP 之九 详解 UDP RAW 编程、示例、API 源码、数据流

在 LwIP 中,UDP RAW 编程被设计为以 struct udp_pcb 为核心的各种 API。我们通过 LWIP_UDP == 1 就可以启用 /src/core/udp.c 中的相关代码实现,对外的各 API 位于 /src/include/lwip/udp.h 中。

2024-05-13 08:00:00 373

原创 LwIP 之八 详解 IP RAW 编程、示例、API 源码、数据流

在 LwIP 中,IP RAW 编程被设计为以 struct raw_pcb 为核心的各种 API。我们通过 LWIP_RAW == 1 就可以启用 /src/core/raw.c 中的相关代码实现,对外的各 API 位于 /src/include/lwip/raw.h 中。每一个 raw_pcb 都可定制一个特定协议类型的 IP 数据包,如 ICMP 包、TCP 包、UDP 包等。

2024-04-13 08:00:47 640

原创 Buildroot 之二 详解构建系统架构、构建流程、本地代码、external tree

 Buildroot 是一个运行于 Linux 平台的用于构建完整嵌入式 Linux 运行环境的自动化工具。使用 Buildroot 可以构建出一个完整的可以直接烧写到机器上运行的嵌入式 Linux 配套镜像文件(包含 bootloader、kernel、rootfs 以及 rootfs 中的各种库和应用程序、交叉编译工具链)。而且,所有命令均不需要 root 权限,避免对开发环境中的已有软件包产生影响。

2024-03-11 11:19:11 665

原创 Buildroot 之四 构建独立交叉编译工具链

手动编译交叉工具链费时又费力,通常,我们会使用 Buildroot 或 crosstool-NG 这两个工具来辅助建立我们自己的交叉编译工具链。其中,Buildroot 基于 uclibc 制作交叉工具链, 而 crosstool-NG 则基于 glibc 制作交叉编译工具链。本文我们来详细学习一下如何使用 Buildroot 构建我们的交叉编译工具链。

2024-03-11 11:09:07 644

原创 Buildroot 之三 详解移植、配置、构建过程、输出镜像文件、使用验证

Buildroot 是 Linux 平台上的一个用于构建嵌入式 Linux 系统的框架。使用 Buildroot 可以构建出一个完整的可以直接烧写到机器上运行的嵌入式 Linux 配套镜像文件(包含 bootloader、kernel、rootfs 以及 rootfs 中的各种库和应用程序、交叉编译工具链)。Buildroot 中默认并没有对 STM32F769I-EVAL 开发板的支持,移植后就可以直接构建 STM32F769I-EVAL 开发板固件了

2024-03-11 11:08:02 543

原创 Buildroot 之一 详解总体架构、源码文件、Package 处理流程及新增说明

Buildroot 是一个运行于 Linux 平台的用于构建完整嵌入式 Linux 运行环境的自动化工具。使用 Buildroot 可以构建出一个完整的可以直接烧写到机器上运行的嵌入式 Linux 配套镜像文件(包含 bootloader、kernel、rootfs 以及 rootfs 中的各种库和应用程序、交叉编译工具链)。而且,所有命令均不需要 root 权限,避免对开发环境中的已有软件包产生影响。

2024-03-11 11:07:46 626

原创 Yocto 之四 详解移植及构建过程、镜像文件介绍及使用验证

我们从 Yocto 官网下载 Poky 仅仅是一个用于构建 Linux 的 DEMO,我们可以选择将这个 Poky(本身定义了可以在 QEMU 中运行的发行版) 进行大改造,也可以根据这个 Poky 从零搭建出一套自己的 Poky。我这里就以 YP CORE - KIRKSTONE 4.0.13 - 2023.10.05 这个版本为参考,从零开始搭建。

2024-03-11 11:07:06 391

原创 Yocto 之一 架构及源码、Toaster、OpenEmbedded、BitBake 详解

Yocto 全称是 Yocto Project(官方简称 YP) 是 Linux 基金会在 2010 年推出的一个开源的协作项目。提供模板、工具和方法以创建定制的 Linux 系统和配套工具,而无需关心硬件体系。主要由 Poky 和 其他一些工具组成。

2024-03-07 09:02:47 718

原创 ARM 之十七 详解 MDK、IAR、Eclipse 的 Debug 配置、FLASH、RAM 烧写原理及自定义

嵌入式下的调试都需要将程序烧写到目标芯片中,而芯片一般都支持从多种存储介质启动,由于存储介质的物理区别,烧写到不同的介质所使用策略往往差别很大。目前,几大主流的 IDE 都有自己的 FLASH 和 RAM 的烧写策略,今天就俩重点学习一下!。

2024-02-26 09:00:00 751

原创 ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。

2024-02-18 13:14:47 950

原创 FreeRTOS 之九 二值信号量、计数信号量、互斥信号量、递归互斥信号量

无论那种操作系统,信号量都是其中重要的一部分。信号量一般用来进行资源管理和任务同步,FreeRTOS 的信号量包括二值信号量、计数信号量、互斥信号量(简称互斥量)和递归互斥信号量(简称递归互斥量),其中互斥量和递归互斥量可以看成特殊的二值信号量。

2024-02-02 10:42:09 1443

原创 U-Boot 之十 详解 MMC 子系统、命令、初始化流程

与 Linux kernel 一样,U-Boot 也是使用 MMC subsystem 统一管理 eMMC、SD 等存储设备,这些设备统称为 MMC 设备。U-Boot 提供了一系列的 MMC 命令来方便用户查看及管理 MMC 设备。

2024-01-08 14:57:52 1493

原创 开发工具 之十 详解 RAM、ROM、FLASH、MMC、SD 等存储器

存储器是电子系统中必不可少的存储设备,主要用于存放程序(指令)和数据。RAM(Random Access Memory)存储单元的内容可按照需要随机取出或存入,且存取的速度与存储单元的位置无关。这种存储器在断电时,将丢失其存储内容。ROM(Read Only Memory,只读存储器)是一种只能读出事先所存的数据的固态半导体存储器。ROM 中所存数据稳定,断电后所存数据也不会消失。

2023-12-28 09:30:52 1383

原创 Linux Kernel 之八 详解动态库 .so 和静态库 .a 的编写及使用

在编译目标程序的时候,其中使用的动态库提供的函数的代码不会被编译进目标程序中,而是在目标程序执行到相关函数时调用所使用的动态库中的对应函数。在可执行文件开始运行以前,操作系统负责将动态库加载到内存。

2023-11-24 14:36:41 383

原创 U-Boot 之九 详解 Pinctrl 子系统、命令、初始化流程、使用方法

U-Boot 提供一个类似 Linux Kernel 的 Pinctrl 子系统,用来统一各芯片厂商的引脚管理。注意,在 U-Boot 中,PINCTRL、IOMUX、PINMUX 通常是一个意思,均可以指 Pinctrl 子系统。

2023-11-24 14:25:54 571

转载 Linux Kernel 之九 详解 virtio-net 源码框架、执行流程

virtio 表示虚拟化 IO,用于实现设备半虚拟化,即虚拟机中运行的操作系统需要加载特殊的驱动(e.g. virtio-net)且虚拟机知道自己是虚拟机

2023-11-13 09:34:51 2624

原创 编译工具链 之一 基本概念、组成部分、编译过程、命名规则

编译工具链将程序源代码翻译成可以在计算机上运行的可执行程序。编译过程是由一系列的步骤组成的,每一个步骤都有一个对应的工具。这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这一系列工具为编译工具链。编译工具链是与其运行的平台(CPU 架构 和 操作系统)息息相关的。

2023-10-24 08:00:00 2850 2

原创 编译工具链 之二 详解 ELF 格式及标准、UNIX 发展、ABI

在计算机及嵌入式系统中,二进制文件也有一定的标准格式,通常会包含在各平台的应用程序二进制接口 (Application Binary Interface,ABI)规范中。它是编译工具链必须要遵守的规范(编译工具链产生符合 ABI 的二进制文件)

2023-10-07 14:27:00 1360

原创 Linux Kernel 之七 虚拟化、VirtIO 架构及规范、VirtQueue & VRing

VirtIO 是一种 IO 半虚拟化解决方案,它提供 Guest OS 与 Hypervisor 虚拟化设备之间的通信框架和编程接口。其主要的优势是能提高性能且减少跨平台带来的兼容性问题。本文重点结合 VirtIO 规范 1.1 版以及 Linux 中的源码来分析 VirtIO 框架。

2023-09-29 09:36:41 1181

原创 Linux Kernel 之三 详解移植过程、STM32F769I-EVAL 开发板适配

Linux Kernel 移植过程详解、STM32F769I-EVAL 开发板适配

2023-09-19 10:08:30 513

转载 Linux Kernel 之八 Linux 设备虚拟化技术的演进之路

设备虚拟化技术,一直是云计算领域最重要的基础技术之一。我们在虚拟机里面看到的形形色色的设备,比如:网卡,磁盘,键盘,鼠标等,都离不开这项技术的帮助。这篇文章,我们将从技术演进的角度来谈一谈 Linux 现有的以及即将到来的设备虚拟化技术。

2023-08-29 16:33:57 643

原创 Network 之十三 NC-SI 原理、拓扑结构、RBT 接口及仲裁、协议格式

为了方便对服务器进行管理,在服务器上通常有个被称为 BMC(Baseboard Management Controller,基板管理控制器)的独立硬件模块。通过相应的传感器,BMC 接收各种系统参数数据,例如,温度、风扇转速、操作系统状态等。管理员则可以通过 BMC 查看服务器运行状态及控制服务器。

2023-06-23 11:31:25 5814

原创 Network 之十二 iPXE 源码、编译过程、Linker tables 机制、移植新驱动、固件使用

iPXE 是由最初开发 gPXE(从 Etherboot 演化而来)的人开发的,是 gPXE 的官方替代品。它具有 gPXE 的所有功能,用户可以从 gPXE 无缝升级到 iPXE。iPXE 是先前的 PXE 实现的超集,支持更多协议。

2023-06-09 13:43:36 2707

原创 LwIP 之七 详解 PBUF 结构、通信数据流、性能优化

数据包的复制在协议栈中是非常耗时的一个操作。LwIP 协议栈内部使用 pbuf 这种数据结构来对数据进行传递,灵活的 pbuf 结构体使得数据在不同网络层之间传递时可以减少内存的开销,避免频繁的内存复制,增加数据在不同层之间传递的速度。

2023-05-30 10:44:27 5629 2

原创 编译工具链 之三 ARM-MDK、IAR、GCC 的 .MAP 文件、.LST 文件

.map 文件和 .lst 文件就是编译工具链给出的构建过程的一些 LOG 文件。要编译出最终的可执行程序,通常需要编译、链接、转换这三个阶段。其中,编译即编译器将源码翻译成对象文件,链接即链接器将各个对象文件组合成最终可执行程序。

2023-04-30 16:13:33 8662 1

原创 Network 之八 详解 MAC 地址、MAC 协议、MAC 控制器

MAC(Media Access Control,MAC)即媒体访问控制,定义于 IEEE Std 802.3 中。IEEE Std 802.3-1985 中规定的半双工媒体访问控制协议是带有冲突检测的载波侦听多址访问(CSMA/CD)。并于 1997 年添加了全双工 MAC 协议。双工 MAC 协议不需要使用 CSMA/CD 协议,因为采用收发线路完全分离的物理介质,点到点的连接,不存在冲突。

2023-04-23 17:49:47 2904

原创 开发工具 之九 调试分类、软/硬件断点、JLink、STLink、FDTI、DAPLink 等仿真器

调试器是一个用来控制调试流程的软件程序,它解析调试文件并与用户交互、执行调试命令,并通过特定接口控制目标处理器运行。我们常见的 IDE(Visual Studio、Android Studio、Keil、IAR)内部都包含了一个 GUI 调试器(不能拿出来单独使用),也有一些可独立使用的调试器,例如,WinDBG,OllyDBG、IDA 是独立的 GUI 调试器,DGB、LLDB 则是独立的命令行调试器。

2023-03-07 11:14:27 4132 3

转载 FreeRTOS 之六 任务调度原理解析(Systick、PendSV、SVC)

;在 Cortex-M 内核上,FreeRTOS 使用 Systick 定时器作为心跳时钟,一般默认心跳时钟为 1ms,进入 Systick 中断后,内核会进入处理模式进行处理。在 Systick中 断处理中,系统会在 ReadList 就绪链表从高优先级到低优先找需要执行的任务,进行调度,如果有任务的状态发生了变化,改变了状态链表,就会产生一个 PendSV 异常,进入 PendSV 异常,通过改变进程栈指针(PSP)切换到不同的任务。

2023-03-02 15:52:36 6394 5

原创 开发工具 之八 详解 JTAG、SWD 接口

JTAG 和 SWD 在嵌入式开发中可以说是随处可见,他们通常被用来配合 J-Link 、ULINK、ST-LINK 等仿真器在线调试嵌入式程序。此外,还有飞思卡尔芯片中的 Background debug mode(BDM) 接口,Atmel 芯片中的 debugWIRE ;Nexus 5001 论坛制定的全球嵌入式处理器调试接口标准 IEEE-ISTO 5001。

2023-02-20 09:30:27 13104

原创 Linux 之七 Ubuntu 22.04 修改内核、远程桌面、包后缀(-dev、-dbg等)、阶段更新

https://kernel.ubuntu.com/~kernel-ppa/mainline/ 上提供的内核是由未经修改(默认情况下,Ubuntu 系统使用 Ubuntu 存储库提供的 Ubuntu 修改过的内核)的上游内核(upstream kernel)源代码制成,但使用了 Ubuntu 内核配置文件。

2023-01-30 11:33:23 21150

RISC-V SVD 文件生成工具

RISC-V SVD 文件生成工具。详细说明见博文 RISC-V 之一 使用 ARM CMSIS 的 SVD 文件辅助调试 https://itexp.blog.csdn.net/article/details/127144450

2022-10-03

华大 MCU USB 驱动 usb_lib.7z

华大 MCU USB 驱动 华大 MCU USB 驱动 华大 MCU USB 驱动

2021-03-24

ARM 之十一__weak 代码 WEAK.7z

博文 ARM 之十一__weak 和 __attribute__((weak)) 关键字的使用 的测试代码,备用!

2020-07-03

stm32l4xx_ll_flash.rar

STM32 之十二 FLASH 使用详解 及 LL 库 FLASH 驱动实现 的附件。完全仿照 ST LL库源码风格

2020-05-31

ARM_ELF_PDF.7z

ARM 之一 ELF文件、镜像(Image)文件、可执行文件、对象文件 详解 的 各种 参考文档 ARM 之一 ELF文件、镜像(Image)文件、可执行文件、对象文件 详解 的 各种 参考文档

2019-08-24

Preventing bit stuffing in CAN Using bit-stuffing distributions in CAN analysis

博文 CAN 总线 之 BOSCH CAN2.0 比特位填充(编码规则)的参考文档,论文

2019-06-13

数据手册.7z

Intel 82526 / Philips 82C200 / Intel 82527 数据手册

2019-05-26

can2.0_can_fd.7z

can2.0_can_fd 博文 Can 总线 之 简介、特点、发展史、各时期的官方文档 的配套文档

2019-05-26

ISO11898 全套标准文档.7z

ISO11898 全套标准文档。博文 Can 总线 之 简介、特点、发展史、各时期的官方文档 的配套文档

2019-05-26

SourceInsight 宏

SourceInsight 4.0 常用宏值的完善版本,在目前网上宏的基础上,进行了完善,具体参看博文

2018-11-23

MD5官方规范

博文 常用算法 之 MD5 的附件,主要是 MD5算法 的官方规范文档

2018-11-08

STM32_USB_DEVICE_CDC_LOOPBACK_修改版

博文STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序) 配套的示例源码

2018-05-17

STM32_USB_DEVICE_CDC

STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序)对应的代码

2018-05-17

STM32_FreeRTOS_Tracealyzer

博文 FreeRTOS之Tracealyzer for FreeRTOS(FreeRTOS+Trace) 详解(源码解析+移植)的配套源码

2018-05-16

STM32_FreeRTOS

博文<> 的附件,使用Keil建立的源代码。

2018-05-16

STM32_USB_HOST_MSC

博文STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序)的示例程序

2018-04-23

STM32_USB_DEVICE_CDC_LOOPBACK

主要是博文 STM32之USB驱动库详解(架构+文件+函数)的示例程序

2018-04-22

Bus Hound 抓取的U盘的报文

博文USB 之 USB2.0 规范详解 第二部分附件资料,测试报文

2018-04-19

C/C++ 标准文档

C/C++ 标准文档

2017-03-06

VC/MFC文档-视图-框架体系编程实例

给出了关于VC/MFC文档-视图-框架体系的编程实例,详细介绍了VC/MFC文档编程,视图编程,窗口静态切分和动态切分,多文档和单文档程序设计,包含了(30个实例),可以正常运行

2016-02-20

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

TA关注的人

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