自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术干货

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

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

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

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

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

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

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

2022-06-08 12:12:47 3459 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 5507 3

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

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

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

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

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

2024-02-26 09:00:00 41

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

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

2024-02-18 13:14:47 267

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

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

2024-02-02 10:42:09 918

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

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

2024-01-08 14:57:52 922

原创 嵌入式工具 之三 详解 RAM、ROM、FLASH、MMC、SD 等存储器

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

2023-12-28 09:30:52 910

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

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

2023-11-24 14:36:41 168

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

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

2023-11-24 14:25:54 174

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

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

2023-11-13 09:34:51 309

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

编译工具链将程序源代码翻译成可以在计算机上运行的可执行程序。编译过程是由一系列的步骤组成的,每一个步骤都有一个对应的工具。这些工具紧密地工作在一起,前一个工具的输出是后一个工具的输入,像一根链条一样,我们称这一系列工具为编译工具链。编译工具链是与其运行的平台(CPU 架构 和 操作系统)息息相关的。————————————————版权声明:本文为CSDN博主「ZC·Shou」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.

2023-10-24 08:00:00 899

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

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

2023-10-07 14:27:00 749

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

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

2023-09-29 09:36:41 643

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

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

2023-09-19 10:08:30 308

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

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

2023-08-29 16:33:57 333

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

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

2023-06-23 11:31:25 3783

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

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

2023-06-09 13:43:36 2235

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

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

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

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

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

2023-04-30 16:13:33 4995 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 2049

原创 嵌入式工具 之二 调试分类、软/硬件断点、JLink、STLink、FDTI、DAPLink 等仿真器

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

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

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

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

2023-03-02 15:52:36 3165

原创 嵌入式工具 之一 详解 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 9028

原创 Linux 之七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新

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

2023-01-30 11:33:23 13292

原创 U-Boot 之一 源码文件、启动阶段(TPL、SPL)、FALCON、设备树

现在,U-Boot 已经成为了是嵌入式设备首选的用于包装指令以引导设备操作系统内核的启动加载程序,并且是基于 GPL 协议开源的,项目地址:https://source.denx.de/u-boot。它可用于许多计算机架构,包括 68k,ARM,Blackfin,MicroBlaze,MIPS,Nios,SuperH,PPC,RISC-V 和 x86。.........

2023-01-16 09:21:32 4801 3

原创 Linux Kernel 之一 内核架构、源码文件、API/ABI 介绍、FHS

内核架构主要有 宏内核(Monolithic Kernel)、微内核(Micro kernel)和混合内核(Hybrid kernel) 三种。Linux 系统的 Kernel 属于宏内核,而 Windows 系统的内核 Windows NT 和 macOS 的内核 XNU 都属于混合内核。

2022-12-07 17:25:31 2778 3

原创 Network 之十一 详解 PXE 原理、工作流程、服务端(Tiny PXE Server、Serva、Ubuntu)搭建

PXE(Preboot eXecution Environment,预启动执行环境)通常也被称为 PXE Boot、Network Boot,最初是由 Intel 公司开发的一种技术,该技术旨在提供了一种使用网络接口(Network Interface)启动计算机的机制。

2022-10-23 14:13:29 7704

原创 TIH64 之一 编写 TIH64Vx690 的 SVD 文件及使用 SVD 辅助调试

TIH64Vx690 是方寸微电子研发的高安全、高可靠的 RISC-V 架构的微处理器系列芯片,重点面向网络安全领域,提供安全的单芯片解决方案。TIH64Vx690 提供了 Linux SDK 和 BareMetal SDK,使用芯来的 NucleiStudio 作为集成开发环境。在使用中发现,相比于 ARM 架构,RISC-V 架构的相关基础设施要差了不少,在代码调试时尤为明显!类比于 ARM,突然想到了 SVD 文件用于 RISC-V 是否可行

2022-10-04 10:15:00 2839 5

原创 Network 之九 对称加密、非对称加密、HASH、CA 证书签发及使用流程

密码学(Cryptography)可分为古典密码学和现代密码学。古典密码学主要关注信息的保密书写和传递,以及与其相对应的破译方法。而现代密码学不只关注信息保密问题,还同时涉及信息完整性验证(消息验证码)、信息发布的不可抵赖性(数字签名)、以及在分布式计算中产生的来源于内部和外部的攻击的所有信息安全问题。

2022-10-03 09:30:00 1262

原创 Network 之十四 email 通信架构、Postfix 部署详解

电子邮件出现在 1960s 晚期,比打开浏览器就要使用的 HTTP 协议早了 20 年左右,是二十世纪人类最伟大的发明之一。这个古老、经典的框架在网络中运行了五十多年,现今仍然是网络中主要的流量类型之一。

2022-10-02 09:15:00 3347

原创 项目管理 之六 详解 Gitlab 本地部署全过程、Gitlab Pages、企业版 PATCH

Gitlab 官方推荐用户安装企业版,因为在不购买许可证时,安装的 Gitlab-ee 就是运行为 Gitlab-ce 版本(付费功能自动隐藏)

2022-10-01 09:00:00 4412

原创 Network 之十 BIOS + MBR、UEFI + GPT、GRUB、BOOTMGR、SYSLINUX、Option ROM

一台运行操作系统的设备(PC 或嵌入式 Linux 设备)从上电到出现我们用户可见的操作系统提供的 GUI 或者 CLI 经历了一些列的过程。这个过程在 PC 和 嵌入式设备上稍有不同,但大致的流程仍然基本一致。.......................................................................................

2022-08-28 07:31:31 3347

原创 项目管理 之七 SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果

SSH、GPG 密钥生成步骤、部署 Github、Gitee 及使用效果

2022-07-01 10:45:00 5626

原创 Linux Kernel 之六 源码仓库架构、协作方式、邮件列表、提交 PATCH

kernel.org 是 Linux 内核源代码的最主要分发站点,主要包括 kernel.org 网站及 Git 存储库等基础设施。主要作用是托管 Linux 内核开发人员和各种 Linux 内核发行版的维护者使用的源代码存储库。此外,它还托管各种其他项目或其镜像,包括 Linux 文档项目(LDP)和 CPAN。  Linux Kernel 的源代码托管运作方式不同于那些使用 GitHub、GitLab 等公共在线代码托管平台的开源软件(占大多数,例如 nodejs、Pyth

2022-05-31 19:47:07 4163 3

原创 Linux Kernel 之九 详解 Firmware API 架构、源码、执行流程

现在,很多外设(例如,网卡、显卡等等)为了实现复杂的功能都会有一个简单的存储芯片,用于存放一个可以独立运行的固件,以此来提供一些高级功能。在 Linux Kernel 中提供了 Firmware API 这个功能来负责管理各种固件,今天就来学习一下这个功能。

2022-04-18 13:30:27 5480 2

原创 Network 之五 TCP/IP 协议族、工作流程、(TCP、IP、MAC、VLAN)常用协议格式详解

随着完整的互联网协议套件的开发,以及与电信和计算机行业的合作,将 TCP/IP 软件整合到各种操作系统中,为广泛采用 TCP/IP 作为综合协议套件奠定了基础。虽然 OSI 在 20 世纪 80 年代后期开发了其网络标准,但 TCP/IP 在众多供应商网络上被广泛应用,并最终称为了互联网的核心组件。很多协议基本都直接消失或者间接投靠了 TCP/IP 协议。.........

2022-03-16 15:28:01 3071

原创 Network 之四 常用 Linux 网络命令及网络调试工具介绍

相关知识命令类号  在我们查阅一些命令的说明文档或者看某些 Linux 书的时候,常会看到 ifconfig(8)、conect(2)、select(2) 等等这样的写法。后面的这个括号及数字其实 man 手册的标准要求(表示 man 的章节号)。不同的数字表示命令的类型。使用 man man 可以进行查看:1: 可执行程序或者 shell 命令。又叫用户命令, 可由任何人使用2: 系统调用, 即由内核提供的函数3: 库函数4: 设备及特殊文件(/dev目录下)5: 文件格式描述, 例如

2022-03-07 09:56:34 3646

原创 Network 之一 国际标准组织介绍、互联网/因特网、以太网概念区分、协议标准

互联网: 也称为国际互联网,国际标准写法是 internet,字母 i 一定要小写。这是一个很大的概念。理论上来说,所有可以互相通信的网络都属于互联网的范畴。以太网: 国际标准名称为 Ethernet,由 IEEE 制定并发布 Ethernet 标准(IEEE Standard for Ethernet)。它是一种计算机局域网技术 / 标准 / 协议,也是目前使用最为广泛的计算机局域网技术,它......

2022-03-03 19:45:41 4107 1

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

SHA1官方规范

博文https://blog.csdn.net/ZCShouCSDN/article/details/84675235的配套文档,SHA1的官方算法文档

2018-12-09

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关注的人

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