嵌入式Linux
文章平均质量分 73
深度学习部署主要使用的操作平台是Linux平台,熟悉及使用LInux平台是在嵌入式端部署的必要学习技能
浩瀚之水_csdn
路漫漫其修远兮,吾将上下而求索,立刻行动,坚持,努立
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用 Makefile 创建兼容 C++ 的 C 语言静态库
可以一次性构建并运行所有测试,验证 C 和 C++ 程序都能正确调用静态库。分别编译 C 和 C++ 程序。原创 2025-12-30 08:12:57 · 16 阅读 · 0 评论 -
Makefile 方式生成 C 兼容 C++ 动态库 + 测试(简化版)
使用不同的编译器# 调试版本# 发布版本(优化)原创 2025-12-24 08:14:12 · 24 阅读 · 0 评论 -
Makefile 方式生成 C 兼容 C++ 动态库 + 测试(简化版)
使用不同的编译器# 调试版本# 发布版本(优化)原创 2025-12-22 08:12:39 · 99 阅读 · 0 评论 -
深入详解 C++ 动态库在 Linux 平台上的特殊性
特性Linux 平台细节与 Windows 的对比文件格式ELF 格式,扩展名为.soPE 格式,扩展名为.dll导入库不需要单独的导入库,.so文件一身二职需要单独的.lib导入库进行隐式链接符号可见性默认全部导出,需用和控制默认不导出,需用显式导出版本管理通过文件名、SONAME 和符号链接实现通常通过文件名或并行程序集(Side-by-Side)实现加载方式dlopendlsym用于显式链接用于显式链接编译选项-fPIC(强制要求),-shared-LD或相应的项目设置。原创 2025-12-09 08:06:35 · 111 阅读 · 0 评论 -
交叉编译环境中ABI(Application Binary Interface)详解
ABI函数调用约定(参数传递、返回值、栈管理)数据表示(数据类型大小、对齐方式、字节序)系统调用机制异常处理动态链接约定ABI 层次结构├── 处理器 ABI│ ├── 寄存器使用约定│ ├── 调用约定 (calling convention)│ └── 栈帧布局├── 数据 ABI│ ├── 数据类型表示│ ├── 对齐要求│ └── 字节序 (endianness)├── 系统 ABI│ ├── 系统调用编号│ ├── 信号处理│ └── 虚拟内存布局。原创 2025-12-07 07:56:36 · 61 阅读 · 0 评论 -
交叉编译环境变量详解
环境变量在交叉编译中起着至关重要的作用,它们控制着编译器、链接器、构建系统的行为,确保正确找到目标平台的工具、头文件和库文件。原创 2025-12-06 08:10:57 · 41 阅读 · 0 评论 -
交叉编译环境中构建系统配置详解
交叉编译环境中,构建系统的正确配置是成功编译的关键。不同的构建系统有不同的配置方法,下面详细解析主流构建系统的交叉编译配置。原创 2025-12-06 08:10:45 · 132 阅读 · 0 评论 -
CACHE PATH 的含义
CACHE PATH。原创 2025-11-21 08:06:52 · 194 阅读 · 0 评论 -
Qt qmake 使用详解
qmake 是 Qt 的构建工具,用于自动生成 Makefile 文件。它简化了跨平台项目的构建过程。# 自定义目标# 预编译步骤# 后编译步骤。原创 2025-11-20 08:08:41 · 157 阅读 · 0 评论 -
qmake 选项详解
常用选项分类1. 项目生成选项-project生成 .pro 项目文件自动扫描当前目录的源文件生成基本的项目配置-tp指定项目模板类型- Visual Studio 项目- 库项目- 应用程序显式指定生成 Makefile(默认行为)指定输出文件名-spec指定平台和编译器规范3. 配置选项CONFIG添加编译配置-config快速设置构建配置指定项目模板5. 查询和诊断选项-query原创 2025-11-20 08:08:29 · 456 阅读 · 0 评论 -
交叉编译环境中工具链类型详解
交叉编译工具链是交叉编译环境的核心组件,不同类型的工具链适用于不同的场景和需求。下面详细解析各种工具链类型及其特点。原创 2025-11-19 08:09:50 · 188 阅读 · 0 评论 -
Linux下循环设备详解
简单来说,循环设备是一个内核驱动,它在文件和块设备之间建立了一个桥梁。普通文件:在文件系统中,它只是一系列有序的数据字节。操作系统和应用程序通常以“读写字节流”的方式来操作它。块设备:例如硬盘(/dev/sda)、分区(/dev/sda1)等。它们的特点是可以被划分为固定大小的“块”,并且可以被挂载到一个目录,从而形成一个文件系统。操作系统以“读写数据块”的方式来操作它。让一个普通文件“伪装”成一个块设备。原创 2025-11-19 08:09:34 · 139 阅读 · 0 评论 -
嵌入式交叉编译详解
交叉编译是指在一种计算机平台(主机平台)上编译生成在另一种不同平台(目标平台)上运行的程序的过程。# 示例:在 x86_64 Linux 上编译 ARM64 程序x86_64-linux-gnu-gcc → 编译 → arm64-linux-gnu 可执行文件主机平台 目标平台# 安装 crosstool-NG# 配置和构建ct-ng menuconfig # 自定义配置ct-ng build # 开始构建。原创 2025-11-18 08:01:27 · 305 阅读 · 0 评论 -
嵌入式交叉编译环境核心概念详解
交叉编译是嵌入式开发和跨平台开发中的关键技术,涉及多个核心概念。下面详细解析这些概念及其相互关系。原创 2025-11-18 08:01:01 · 151 阅读 · 0 评论 -
Linux设备树地址和空间属性详解
作用: 定义子节点reg属性中地址和长度字段的格式语法:#address-cells = <数字>;// 地址占用的32位整数数量#size-cells = <数字>;// 长度占用的32位整数数量取值规则::通常为1(32位地址)或2(64位地址):通常为1(32位长度)或2(64位长度),可为0(无长度字段)地址和空间属性是设备树描述硬件资源映射的核心机制。正确使用这些属性需要:理解层级关系和在父子节点间传递掌握格式规范:不同总线有不同的地址表示方法。原创 2025-11-17 08:18:25 · 343 阅读 · 0 评论 -
Linux设备树compatible属性详解
语法:compatible = "制造商,型号", "回退驱动1", "回退驱动2", ...;核心作用:驱动匹配:内核通过此属性找到对应的设备驱动程序硬件识别:标识具体的硬件设备或IP核兼容性保障:支持从专用驱动回退到通用驱动准确性:精确描述硬件型号和版本一致性:遵循内核已有的命名约定可读性:使用清晰易懂的制造商和型号名称可扩展性:为未来版本留出扩展空间compatible。原创 2025-11-17 08:18:14 · 320 阅读 · 0 评论 -
Linux设备树状态和控制属性详解
/ 固定时钟// 24MHz// PLL时钟// 输出时钟配置// 复位线ID参数数量设备树的状态和控制属性提供了灵活的硬件管理机制:状态管理:通过status属性控制设备启用/禁用电源管理:支持电源域、电压调节器和唤醒源配置时钟控制:精确的时钟频率和父时钟配置引脚控制:多状态引脚配置支持动态配置:支持条件编译和运行时覆盖这些属性使得同一内核镜像能够适应不同的硬件配置,大大提高了嵌入式系统的灵活性和可维护性。原创 2025-11-16 08:09:17 · 228 阅读 · 0 评论 -
Linux设备树中断相关属性详解
设备树的中断属性提供了完整的硬件中断描述机制:层次化设计:支持多级中断控制器级联标准化格式:不同架构使用统一但可扩展的描述方式灵活配置:支持多个中断、命名中断、唤醒中断等高级特性驱动友好:提供清晰的API供驱动获取中断资源正确配置中断属性是确保外设正常工作的关键。在复杂系统中,合理的中断分配和配置对系统性能和稳定性至关重要。原创 2025-11-16 08:09:07 · 163 阅读 · 0 评论 -
Qt EGLFS 图形后端详解
EGLFS (EGL Full Screen) 是Qt框架在嵌入式Linux系统中的高性能图形显示后端,它提供了直接基于EGL和OpenGL ES的硬件加速渲染解决方案。原创 2025-11-15 08:41:51 · 234 阅读 · 0 评论 -
Qt XCB 图形后端详解
/ 创建无边框窗口// 自定义标题栏public:// 实现自定义窗口控制按钮。原创 2025-11-15 08:41:41 · 62 阅读 · 0 评论 -
Qt VNC 图形后端详解
public:// 自定义认证逻辑// 注册自定义认证。原创 2025-11-13 08:04:17 · 541 阅读 · 0 评论 -
Qt Wayland 图形后端详解
/ 简单的Qt Wayland Compositor示例Q_OBJECTpublic:// 添加Shell扩展// 创建输出// 毫米private:// 实现自定义Shell扩展Q_OBJECTpublic:// 自定义窗口状态管理。原创 2025-11-12 08:06:02 · 400 阅读 · 0 评论 -
Docker 仓库 (Repository) 详解
Docker 仓库 是一个集中存储和分发 Docker 镜像的服务。它可以理解为 Docker 镜像的"应用商店",开发者可以在这里分享、下载和管理镜像。关键术语区分:Registry:仓库注册服务器,存储仓库的实际服务(如 Docker Hub、私有 Registry)Repository:仓库,包含同一镜像的不同版本标签的集合Image:镜像,仓库中的具体文件Tag:标签,用于标识镜像的不同版本使用有意义的命名规范# 好的命名# 避免的命名实施标签策略。原创 2025-11-10 08:47:13 · 155 阅读 · 0 评论 -
Qt QWS 与 QPA 核心区别详解
评估维度胜出方原因现代化程度✅ QPA支持现代图形技术和硬件架构跨平台能力✅ QPA统一的抽象层支持所有平台嵌入式轻量✅ QWS更小的内存占用和更简单的架构图形性能✅ QPA完整的硬件加速支持扩展灵活性✅ QPA插件化架构易于定制和扩展传统兼容性✅ QWS对老旧设备的更好支持结论:对于新项目,强烈推荐使用Qt5/6的QPA架构。QWS已是历史遗留技术,仅在维护老旧Qt4项目时有价值。原创 2025-11-10 08:47:03 · 145 阅读 · 0 评论 -
嵌入式 Linux 上 Qt4 环境变量详解
在嵌入式 Linux 上配置 Qt4 环境变量是确保图形界面应用程序正确运行的关键。下面详细介绍 Qt4 的核心环境变量及其配置方法。原创 2025-11-09 07:12:33 · 43 阅读 · 0 评论 -
Docker 镜像、容器、仓库的区别及使用选择
镜像最小化:使用多阶段构建,减小镜像大小容器持久化:重要数据使用卷(Volumes)存储仓库标签策略:使用语义化版本控制资源限制:为容器设置合理的CPU/内存限制网络隔离:根据服务关系配置适当的网络模式通过理解三者的区别和正确选择使用场景,你可以更高效地利用Docker进行应用开发、部署和维护。记住:镜像是基础,容器是运行时,仓库是协作平台。原创 2025-11-09 07:12:09 · 116 阅读 · 0 评论 -
CMake参数传递机制
set(TARGET_ARCH pcie) # 设置默认值endif()执行流程CMake 解析命令行参数,将存入缓存脚本执行时,检查变量是否已定义由于命令行已设置,变量已定义,跳过默认值设置使用用户提供的值 "soc"原创 2025-11-08 06:50:57 · 292 阅读 · 0 评论 -
Qt DirectFB 图形后端详解
DirectFB(Direct Frame Buffer)是一个轻量级的硬件加速图形库,位于Linux内核帧缓冲之上,为嵌入式系统提供完整的图形和输入处理能力。Qt框架通过DirectFB后端可以充分利用这些特性。原创 2025-11-08 06:50:28 · 53 阅读 · 0 评论 -
Docker 镜像详解
Docker 镜像是一个只读的模板,用于创建 Docker 容器。它采用分层存储结构,每一层代表镜像的一个变更集。核心特性:只读性:镜像一旦创建便不可修改分层存储:由多个只读层叠加而成内容寻址:基于内容哈希确保完整性可移植性:跨环境一致运行# 使用官方Python运行时作为父镜像# 设置元数据标签# 设置工作目录# 将当前目录内容复制到容器的/app目录# 安装requirements.txt中指定的包# 创建非root用户# 定义环境变量# 暴露端口。原创 2025-11-07 08:10:38 · 314 阅读 · 0 评论 -
Docker 容器详解
容器是一个标准的软件单元,它将代码及其所有依赖项打包在一起,使应用能够从一个计算环境快速、可靠地运行到另一个计算环境。关键特性:轻量级:共享主机操作系统内核,不需要完整的操作系统可移植性:一次构建,随处运行隔离性:进程、网络、文件系统级别的隔离快速启动:秒级启动时间一个容器一个进程:每个容器应该只运行一个主要进程使用官方镜像:优先选择官方维护的基础镜像标签管理:明确指定镜像标签,避免使用latest数据持久化:重要数据使用卷或绑定挂载资源限制。原创 2025-11-07 08:10:21 · 142 阅读 · 0 评论 -
常用工具Docker说明及使用
Docker是一个开源的应用容器引擎,基于Go语言开发,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,并发布到任何流行的Linux或Windows操作系统上。原创 2024-11-06 20:31:15 · 1313 阅读 · 0 评论 -
嵌入式 Linux 上 Qt 环境变量详解
在嵌入式 Linux 上配置 Qt 环境变量是确保图形界面应用程序正确运行的关键。由于 Qt4 和 Qt5/6 在架构上有显著差异,下面将分别详细说明,并特别对比两者的区别。原创 2025-11-06 08:29:08 · 433 阅读 · 0 评论 -
嵌入式 Linux 上 Qt5 环境变量详解
在嵌入式 Linux 上配置 Qt5 环境变量是应用程序成功运行的关键。Qt5 使用 架构取代了 Qt4 的 QWS 架构,环境变量的设置方式有显著不同。原创 2025-11-06 08:28:59 · 122 阅读 · 0 评论 -
Qt5/6 QPA 概念详解
/ 自定义平台集成public:// ... 实现其他虚函数真正的跨平台:同一套代码可在桌面、移动、嵌入式设备上运行硬件加速支持:完善的OpenGL/OpenGL ES/Vulkan支持模块化设计:平台相关代码完全独立,易于维护和扩展现代化架构:支持Wayland、DRM/KMS等现代图形技术灵活的配置:通过环境变量和参数进行精细控制。原创 2025-11-05 08:14:39 · 339 阅读 · 0 评论 -
Qt图形后端全面对比与选型指南
在嵌入式Linux开发中,Qt框架提供了多种图形显示后端,每种都有其特定的应用场景和优势。下面通过详细的对比分析,帮助您做出正确的技术选型。原创 2025-11-05 08:14:13 · 193 阅读 · 0 评论 -
vmware 无法识别的虚拟机(HW19)处理
首选方案一(升级VMware): 这是最规范、最安全的做法,能确保虚拟机的稳定性和所有功能。谨慎使用方案二(修改.vmx文件): 仅作为临时或无法升级时的应急手段,并一定做好备份。预防措施: 在团队协作或迁移虚拟机时,注意沟通虚拟机的硬件版本。如果需要分享给他人,可以事先在高版本 VMware 中将硬件版本降级后再分享。原创 2025-11-04 08:08:40 · 123 阅读 · 0 评论 -
QWS概念解析及详解
特性Qt4 QWSQt5/6 QPA架构客户端-服务器平台插件化核心进程唯一的QWS Server每个应用独立,或多个应用共享一个Compositor灵活性较低,定制需修改Qt源码极高,通过插件扩展现代化支持较差,已停止发展良好,支持EGL、OpenGL/Vulkan、Wayland等简单来说,QWS是Qt4时代为了在嵌入式领域生存而发明的轻量级窗口系统,它成功完成了历史使命,并为Qt5更优秀的QPA架构奠定了经验和基础。。原创 2025-11-04 08:07:51 · 331 阅读 · 0 评论 -
Qt LinuxFB 图形后端深度解析
硬件选择:对于无GPU或低端GPU的设备,LinuxFB是最佳选择性能调优:合理设置颜色深度和刷新率,平衡性能与质量输入处理:正确配置触摸屏旋转和校准参数资源管理:在极度受限的环境下,禁用不必要的Qt特性测试验证:在实际硬件上进行长时间的稳定性测试LinuxFB作为Qt最轻量级的图形后端,在资源受限的嵌入式环境中具有不可替代的价值。它的稳定性和低资源消耗特性使其在工业控制、医疗设备等对可靠性要求极高的场景中得到广泛应用。原创 2025-11-03 08:17:27 · 303 阅读 · 0 评论 -
Linux设备树包含机制详解
包含机制支持属性的覆盖和节点的重定义。/ {soc {/ {// 添加新属性到根节点// 重定义已包含的节点&uart1 {// 覆盖status属性// 覆盖current-speed// 添加新属性Linux设备树包含机制通过模块化的文件组织方式,极大地提高了硬件描述代码的重用性和可维护性。合理的包含策略能够:减少代码重复:通用定义在.dtsi文件中共享提高可维护性:硬件变更只需修改单个文件支持产品变种:通过包含不同配置支持多个产品加速开发。原创 2025-11-03 08:16:52 · 195 阅读 · 0 评论 -
Linux设备树时钟和电源属性详解
设备树的时钟和电源属性提供了完整的功耗和性能管理机制:时钟树管理:通过层次化的时钟描述实现精确的时序控制电源域控制:支持细粒度的电源开关和状态管理电压调节:提供灵活的电压配置和动态调整功耗优化:支持DVFS、时钟门控等高级功耗管理特性正确配置时钟和电源属性对于嵌入式系统的性能、功耗和稳定性至关重要。这些属性使得Linux内核能够智能地管理硬件资源,实现最优的能效比。原创 2025-11-02 15:46:13 · 154 阅读 · 0 评论
分享