自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 Clang-Tidy 是什么?如何让你的代码更干净无瑕

clang-tidy是一个功能强大的静态分析工具,帮助开发者在开发过程中保持代码质量和一致性。通过与 IDE(如 VSCode)的集成,clang-tidy可以在保存时自动运行,实时反馈问题并提供修复建议,让开发者专注于功能实现,而不再为代码问题烦恼。希望本文能帮助你轻松掌握clang-tidy,将其融入你的开发流程中,提高项目的整体代码质量。

2024-11-07 12:44:43 608

原创 Clang-Format:让你的代码整齐划一,格式不再烦恼

在现代软件开发中,代码规范和一致性对团队协作和代码质量至关重要。如何保持代码风格一致,避免手动格式化的繁琐操作?`clang-format` 是一款强大而灵活的代码格式化工具,它为开发者提供了高效的解决方案。本文将详细介绍 `clang-format` 的概念、历史、功能、自动化使用方案(特别是在 VSCode 中),并给出完整的实例。

2024-11-07 11:44:47 524

原创 Clang重要吗?你用过吗?

Clang 工具链包含多个子命令,满足不同的编译和分析需求。子命令用途clang++C++ 编译器前端,类似 g++,专门用于处理 C++ 文件。代码格式化工具,自动调整代码格式,适合团队协作中的代码风格管理。clang-tidy静态分析工具,检测并修复代码中的常见错误和潜在问题,适合代码审查。代码检查工具,在不完全编译的情况下检测语法和结构问题。交互式 AST 查询工具,用于高级代码分析。clangd语言服务器,为 IDE 提供代码补全、跳转、引用查找等功能。

2024-11-06 10:36:52 669

原创 LVDS、MIPI-DSI、Ethernet、USB、PCIe、SATA、HDMI、I2C、SPI、SFP 用了什么类型的信号?

接口在电子系统中充当数据传输和通信的桥梁,使得不同模块、设备能够相互通信、协同工作。接口的设计和选择直接影响系统的稳定性、传输速度、功耗及抗干扰性能。选择适合的接口可以优化系统性能,同时满足设备的实际需求。信号类型定义特点典型应用单端信号单根信号线和接地线传输数据结构简单,抗干扰弱差分信号双线相反极性传输抗干扰强,高速长距离传输TMDS 单端差分HDMI 专用的优化单端差分传输优化带宽使用,适合视频传输HDMI、DVI光纤传输光脉冲传输,无电磁干扰高带宽、长距离传输PAM。

2024-11-05 13:16:06 920

原创 OP-TEE 是什么?--------- 设备安全绕不开的技术!

OP-TEE(Open Portable Trusted Execution Environment)是一个开放源代码的可信执行环境(Trusted Execution Environment,TEE)实现。TEE是一种在处理器上隔离出的安全区域,可以运行具有高度机密性和安全性的代码。OP-TEE专为ARM架构设计,提供了一个轻量级、安全且隔离的运行环境,使得敏感数据和任务能够独立于普通应用程序安全地执行。OP-TEE在安全应用场景中起到了关键作用,例如加密运算、认证、安全支付、数据保护等。

2024-11-05 10:16:55 434 1

原创 u-boot.imx 与 flash.bin,它们有什么不同?

随着 i.MX 处理器系列的发展,启动文件从早期的 `u-boot.imx` 演进到后来的 `flash.bin`,以适应更复杂的硬件需求和安全性要求。本文将深入探讨 `u-boot.imx` 和 `flash.bin` 的组成、构建方法、主要区别及其在不同 i.MX 系列中的应用。

2024-11-04 14:58:09 767

原创 SPL --- 你知道是什么吗?

ROM启动:系统上电后,处理器首先运行ROM代码,执行基础硬件检测并确定启动设备。加载SPL:ROM从启动设备(如eMMC、SD卡)加载SPL,并将其放入RAM中。SPL执行:SPL在RAM中执行,完成DDR初始化和其他基本硬件配置。加载U-Boot:SPL将U-Boot加载到DDR中,并将控制权移交给U-Boot。系统引导:U-Boot进一步加载操作系统并完成启动过程。

2024-11-04 09:59:40 965

原创 i.MX6处理器:ROM引导内存的实战讲解

ROM的职责是完成最基本的系统初始化并加载引导加载程序,之后才是Bootloader完成详细的内存初始化。通过这样的分工,ROM可以更具兼容性地支持多种启动模式和内存类型。而在整个过程中,ROM的初始化步骤是整个启动链条的基础环节。理解ROM的工作原理和引导加载过程,有助于开发者进行嵌入式系统的调试和优化。

2024-11-03 13:33:37 680

原创 到底是谁在初始化内存?—揭开处理器启动过程的奥秘

启动只读存储器(Boot ROM):这部分是嵌入在处理器芯片内部的固件,在设备通电启动后立即执行。引导加载程序(Bootloader):它被加载到内存中,完成更深入的硬件初始化,并引导操作系统。操作系统启动:引导加载程序最终将控制权交给操作系统,让它在处理器上全面运行。在这个流程中,内存的初始化则贯穿始终,从最初的基本初始化到全面配置,它们共同支持系统稳定、顺畅地进入操作系统环境。Boot ROM是嵌入在处理器内部的固件,通常存储在处理器芯片的不可修改区域内。

2024-11-03 13:05:01 726

原创 i.MX处理器启动模式 :概念、历史及实战应用

启动模式是指处理器加电后选择加载初始启动代码的方式。对于嵌入式系统而言,启动模式不仅影响启动速度,还决定了设备的加载顺序、启动顺序等。i.MX处理器支持多种启动模式,以适应各种存储器,如NAND闪存、eMMC、SD卡、SPI闪存等。通常,启动模式通过Boot ROM模块选择启动源,Boot ROM会根据配置,从指定的存储设备中加载引导代码。在不同应用场景中,嵌入式系统可能会要求设备具备不同的启动模式。比如,在生产阶段,为确保可靠性和不可更改性,常会固化启动模式;

2024-11-02 12:54:15 850

原创 截图工具 for Linux --- 你用过吗?

Linux系统的截图工具种类丰富,支持从X11到Wayland的多种图形后端。X11的import和scrot适用于传统桌面和嵌入式设备,而Wayland的grim和则在现代桌面和嵌入式环境中广泛使用。同时,Weston下的模块专为嵌入式环境设计,能够满足资源受限设备。

2024-11-01 11:08:41 1194

原创 Multlib ? = lib32 + lib64

现代计算系统的架构逐渐多样化,64位处理器的使用在桌面和服务器端已经非常普遍,但32位应用在某些嵌入式系统中仍然广泛存在。这就导致在某些系统环境下,不同架构或位数的应用必须共存。例如,运行在64位系统上的32位应用程序、32位设备驱动程序或32位库的兼容性,都是现代操作系统需要解决的问题。因此,Multilib的目的是在一个操作系统中支持多种架构的应用和库。Multilib技术通过在系统中定义多条库路径、配置编译器支持、指定链接文件位置等方式,来实现同一个系统支持多种架构的应用。

2024-10-31 11:29:20 856

原创 Systemd 和 Systemctl命令详解

systemctl 是 Linux 系统中不可或缺的服务和系统管理工具。它通过对服务单元(Unit)的精确控制,实现了对服务的启动、停止、重启、状态监控以及开机自启等功能。作为 systemd 的命令行接口,systemctl 赋予了系统管理员对服务和资源的全面控制能力,在提升系统启动速度、减少服务依赖冲突、提高系统资源的利用率等方面发挥了重要作用。无论是用于服务器的运维管理还是嵌入式项目的自动化控制,systemctl 都提供了可靠的解决方案。

2024-10-31 11:00:09 842

原创 Systemd 与 Systemd 服务文件详解及实战

Systemd 服务文件用于定义服务的启动、停止、依赖等属性,每个服务文件对应一个单元(unit),通常以.service结尾。systemd会根据服务文件中的配置管理该服务的生命周期。服务文件目录结构:用户自定义的服务文件存放目录,优先级最高,适用于自定义配置。:系统默认的服务文件存放目录,通常由系统软件包提供。:动态生成的服务文件存放目录,通常用于临时会话或自动生成的配置。在加载服务文件时,systemd会按照/etc/run/lib的顺序查找服务文件,保证用户配置的优先级。服务文件结构。

2024-10-30 15:14:21 811

原创 Docker 命令指南:详细概述与示例应用

Docker 是一个强大的容器化平台,为容器的创建、管理和运行提供了广泛的支持。通过 Docker 的命令行工具,用户可以从基本的镜像管理、容器操作到复杂的网络和数据存储管理执行各种任务。本节将详细介绍 Docker 的常用命令及其使用示例。基础命令:用于镜像、容器和系统的信息获取和操作。管理命令:包括镜像、容器、网络、存储卷等对象的管理。Swarm 命令:专门用于管理 Docker 的分布式集群 Swarm。全局选项:定义一些 Docker 的配置和环境参数。其他命令。

2024-10-30 11:30:38 1326

原创 Systemd:现代 Linux 系统服务管理的核心

Systemd 是一种现代的系统和服务管理器,用于在 Linux 系统启动时初始化用户空间,并通过服务管理和资源控制实现系统的自动化管理。自发布以来,Systemd 已逐渐取代传统的 SysVinit 和 Upstart,成为主流 Linux 发行版的默认初始化系统。它通过并行化启动、服务依赖管理、事件驱动的服务监控、日志管理等功能,为 Linux 系统带来了更高效和更现代化的管理能力。

2024-10-29 15:29:13 894

原创 嵌入式浏览器 -- Chromium VS Firefox

嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒体处理。在物联网、智能家居、车载系统和医疗设备等应用中,嵌入式浏览器已成为设备与用户、设备与云端数据交互的关键界面。

2024-10-29 10:29:15 1375

原创 Matter时代来临 -- What‘s Matter?

Matter作为一个开放的连接标准,致力于解决物联网设备之间的互操作性问题,其历史背景、功能特点以及市场上支持Matter的产品都展现了其重要性。通过Yocto项目的支持,Matter在嵌入式设备上的应用得到了进一步扩展,使得开发者能够更加高效地构建兼容的物联网解决方案。随着Matter的不断发展和完善,未来物联网的互联互通将更加顺畅,为用户带来更好的体验。

2024-10-28 12:56:41 794

原创 uuu 与 uuu.auto

UUU 工具中的“USB Serial Download Mode”是一种特殊的启动模式,用于当 SoC 没有检测到可用的启动介质(如 eMMC、SD 卡或其他有效的引导加载器)时,将自动进入此模式,以便与 UUU 工具进行数据传输和通信。在此模式下,SoC 会不断地等待通过 USB 传输数据,以便于 UUU 工具可以将所需的固件烧录到目标存储设备中。对于 i.MX 系列的开发板,通常需要配置特定的 DIP 开关或设置 Boot 模式以进入 USB Serial Download Mode。

2024-10-28 10:25:02 849

原创 STM32硬件平台

STM32 系列基于 ARM Cortex 内核,使用的架构从早期的 Cortex-M0 到更强大的 Cortex-M7、Cortex-M33 和 Cortex-H7等。自2007年推出以来,STM32 系列不断发展,成为嵌入式开发的首选微控制器之一。其设计的基本理念是实现广泛的市场覆盖,为开发者提供丰富的选择,覆盖了从低功耗应用到高性能计算需求的硬件。STM32 系列硬件平台通过不断的发展与演化,已经形成了包括通用、低功耗、高性能和无线连接等多个分支产品线,为各种嵌入式应用提供了灵活、可靠的解决方案。

2024-10-27 11:52:26 908

原创 对称加密与非对称加密

对称加密和非对称加密各有优劣,通常在实际应用中结合使用。例如,在 SSL/TLS 通信协议中,非对称加密用于密钥交换,对称加密用于数据传输,从而实现了高效的加密通信方案。

2024-10-26 15:41:10 621

原创 OpenSSL

OpenSSL 是一个多功能的命令行工具和密码库,主要用于构建基于公共密钥基础设施(PKI)和 HTTPS 的加密方案。它支持各种加密算法(例如 RSA、AES 等),提供密钥生成和证书管理功能,还能够实现 SSL/TLS 协议,确保数据传输安全。公钥基础设施 (PKI):OpenSSL 支持公钥加密方案,可以生成公钥和私钥,并利用证书管理加密和签名任务。SSL/TLS 支持:OpenSSL 提供了 SSL/TLS 协议实现,帮助构建安全的数据传输。加密算法。

2024-10-26 12:34:55 1000

原创 u-boot-fslc 和 uboot-imx

在i.MX硬件平台的开发中,**uboot-imx**和**u-boot-fslc**是两个主要的U-Boot引导加载程序仓库,它们在功能侧重点、版本管理和应用场景上有所不同,以满足开发者在不同阶段的需求。以下是对这两个仓库的详细介绍、菜谱配置及应用场景的分析。

2024-10-25 17:18:39 794

原创 linux-fslc 与 linux-imx

NXP官方提供了两个主要的内核仓库:**linux-fslc** 和 **linux-imx**。这两个仓库分别对应不同的使用场景和内核版本需求。**linux-fslc** 是Freescale社区维护的内核仓库,更多地面向最新的上游内核和开发实验场景;而**linux-imx** 是NXP官方维护的内核仓库,专门为i.MX处理器提供生产环境的长期支持和稳定版本。

2024-10-25 09:26:03 1242

原创 i.MX平台

i.MX 平台是一款面向多媒体和嵌入式系统的高性能、低功耗处理器系列,广泛应用于多个领域。作为 NXP 旗下的重要产品线,i.MX 平台在嵌入式系统开发中占据重要地位。除了 i.MX 平台,NXP 还提供了多种处理器和微控制器平台,涵盖从网络和通信到汽车、物联网、工业自动化等多个应用领域。这些平台包括 Layerscape、QorIQ、Kinetis、S32、LPC 和 JN 系列,满足了不同应用场景的多样化需求。

2024-10-24 19:22:57 771

原创 包管理系统

通常是指应用程序,但也可以是 GUI 应用程序、命令行工具或软件库(其他软件程序需要)。包本质上是一个存档文件,其中包含二进制可执行文件、配置文件,有时还包含有关依赖项的信息。

2024-10-24 11:29:51 1112

原创 Yocto构建i.MX处理器目标镜像

通过运行imx-setup-release.sh脚本初始化构建环境、选择合适的镜像并使用bitbake命令构建所需的镜像,开发人员可以有效地为i.MX硬件平台生成定制化的Linux系统镜像。

2024-10-23 18:00:19 505

原创 构造函数、析构函数、拷贝函数与移动函数概述

在C++中,构造函数、析构函数、拷贝函数和移动函数是类对象管理生命周期的关键机制,它们决定了对象的创建、销毁及其在赋值或传递过程中的行为。构造函数:用于初始化对象。当对象创建时,构造函数被调用,负责分配资源并设置初始状态。C++允许构造函数的重载,以处理不同的初始化方式。析构函数:在对象生命周期结束时被调用,负责释放对象所占用的资源,如动态内存或文件句柄。析构函数的主要作用是确保资源的正确清理,避免资源泄漏。

2024-10-23 15:23:45 906

原创 CROss PlatformS (CROPS) 与 Docker

CROPS 的开发框架结构基于 Docker 容器,提供了可移植的、与操作系统无关的开发环境。它通过基础镜像、用户空间设置、开发工具链和管理脚本,简化了跨平台开发的复杂性,使开发者可以在非 Linux 系统上轻松使用 Yocto 项目进行开发和构建。这个结构确保了开发环境的一致性、可重复性,并通过隔离环境和工具链,解决了跨平台开发中的许多常见问题。

2024-10-22 14:29:24 1144

原创 Buildroot vs Yocto

Buildroot是轻量级、快速的嵌入式系统构建工具,适合快速开发、较少定制需求的项目。Yocto 项目提供了全面的定制化、版本管理和长期支持,适合复杂、大规模的嵌入式系统开发。通过分析,可以看出 Buildroot 更倾向于中小型、简化的项目,而 Yocto 项目则是大规模、长期维护项目的理想选择。两者根据项目规模、定制需求和维护周期的不同,在嵌入式系统开发中各自发挥重要作用。

2024-10-22 11:46:11 1019

原创 Buildroot工具

buildroot/├── arch/├── board/├── docs/├── fs/├── linux/├── utils/└── READMEBuildroot 的目录结构简洁而有条理,遵循模块化设计,分为多个层次,分别管理工具链、包、文件系统和系统配置等。这种清晰的组织结构使开发者能够轻松管理嵌入式系统的构建过程,并确保了高度的可定制性与灵活性。在使用 Buildroot 时,了解其目录结构有助于快速上手开发过程,便于问题排查和功能扩展。

2024-10-22 11:39:35 842

原创 字符设备、块设备和网络设备

在Linux内核中,设备分为几类,最常见的包括字符设备、块设备和网络设备。它们各自有不同的功能和使用场景。下面是对这些设备类型的概念、特点及常见例子的详细说明。

2024-10-22 10:41:31 840

原创 堆 和 栈

堆和栈是C++中两种重要的内存管理机制和数据结构,它们在应用场景和操作方式上存在显著差异。栈是一种后进先出的数据结构,自动管理局部变量和函数调用过程中的内存分配,具有高效的分配和回收速度,但空间有限,适用于生命周期短且数据量小的场景。堆则是一种树形结构,常用于优先级管理,在内存分配中由程序员手动管理。堆内存适合动态分配和跨越多个作用域的数据,但操作相对复杂,容易引发内存泄漏和性能问题。理解它们的特点和使用场景,有助于在程序开发中做出更高效的内存管理决策。

2024-10-22 09:44:59 980

原创 Docker 与 Yocto

Docker 让 Yocto 项目在构建时具有更高的环境一致性、跨平台开发的便利性、隔离的清洁构建环境以及更容易的 CI/CD 集成。Docker 作为一个容器化平台,简化了复杂的 Yocto 构建过程,并确保了不同系统间的兼容性与一致性。

2024-10-21 17:11:48 1375

原创 Docker架构

Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分离,从而更快速地交付软件。通过 Docker,您可以像管理应用程序一样管理基础设施。利用 Docker 在代码发布、测试和部署方面的方法,您可以大大缩短从编写代码到在生产环境中运行的延迟时间。

2024-10-21 13:04:49 563

原创 Repo工具详解

Repo是Google为Android项目开发的一个版本控制工具,用于简化对Git仓库的管理。它并非取代Git,而是建立在Git之上的一层工具集,帮助开发者更高效地管理多个Git仓库中的代码。在复杂的嵌入式项目中,通常涉及多个代码库和组件的管理,而Repo通过提供集中化的配置文件,可以同时处理多个Git仓库的克隆、更新、同步等操作,使得大型项目中的代码管理更加灵活和高效。

2024-10-20 09:31:11 898

原创 硬件开发环境~NXP i.MX 8M Plus评估板

硬件和软件在嵌入式项目初期完全可以选择一块官方的开发板作为参考进行硬件的修改和软件的定制,这种方式不仅高效,还能降低项目的风险,并确保在早期阶段可以快速推进项目的开发进度。

2024-10-19 15:55:48 1161

原创 根文件系统

根文件系统是内核中虚拟文件系统(VFS)通过挂载管理的第一个文件系统,它提供了系统运行的基础,而 VFS 则是内核中抽象出的一层,负责统一管理不同的文件系统类型。通过VFS,内核不仅能够挂载和管理根文件系统,还能处理其他虚拟文件系统如/proc和/sys,这些虚拟文件系统直接与内核和硬件交互。

2024-10-18 14:10:24 932

原创 窗口管理系统

在计算中,窗口管理系统(Widnowing system)是一套用于管理显示屏幕不同部分的软件工具。它是一种图形用户界面(GUI),实现了WIMP(窗口、图标、菜单、指针)用户界面范式。每个当前运行的应用程序通常被分配一个可调整大小、通常是矩形的显示区域,用于向用户展示其GUI。这些窗口可以相互重叠,与平铺界面(不允许窗口重叠)相反。通常,每个窗口周围都会绘制一个窗口装饰。窗口装饰以及窗口内可用的小部件(例如滑块、按钮等)是供用户直接交互的图形元素,通过使用小部件工具包使其编程变得更加容易和简化。

2024-10-17 17:23:42 857

原创 系统共享库(Shared Library)

系统共享库(Shared Library)是操作系统中的一种库文件,它包含可以被多个程序同时使用的函数、变量或其他资源,而不必将这些资源分别编译到每个程序的可执行文件中。它们通常是动态链接的,这意味着在程序运行时才会被加载到内存中,而不是在编译时直接嵌入到程序中。

2024-10-17 11:00:50 884

空空如也

空空如也

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

TA关注的人

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