自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式开发,ARM Linux开发

分享点滴,共同进步

  • 博客(83)
  • 收藏
  • 关注

原创 栈和堆 的概念、原理和应用

栈与堆是进程虚拟地址空间中核心的内存区域。栈由CPU和内核自动管理,遵循LIFO原则,线程私有,空间小(默认8MB),速度快,用于局部变量、函数调用上下文及递归;堆由libc(如ptmalloc)管理,进程共享,手动分配释放,空间大,适合动态数据结构和长期存活内存。栈向下增长,堆向上增长,二者相向而生。栈溢出易致崩溃,堆滥用则引发泄漏、野指针与碎片化。静态变量存于.data/.bss段,非栈非堆。嵌入式开发中需注意栈大小限制与堆管理效率。

2026-11-08 11:24:24 289

原创 什么是摩尔定律?

摩尔定律非自然法则,是戈登·摩尔对集成电路晶体管数量增长的经验预测。原始版本为每12个月翻倍,后修正为24个月,行业通俗说法为18个月。其核心是晶体管密度提升,带来性能增强与成本下降。但受制于量子隧穿、光刻成本、功耗墙及收益递减,经典摩尔定律已放缓。当前转向“超越摩尔”:通过3D堆叠、Chiplet、异构集成与特色工艺,以系统级创新延续芯片进步。

2026-11-08 09:13:35 343

原创 C 语言:编译 → 汇编 → 链接 → 加载运行

C程序从源码到执行经历预处理、编译、汇编、链接四阶段,生成ELF可执行文件,由操作系统加载至内存并由CPU执行。关键点包括:交叉编译生成ARM指令;链接分静态与动态;入口为_start而非main;动态库需-fPIC保证位置无关性;嵌入式环境下可能跳过OS直接运行。

2026-11-08 07:57:58 408

原创 程序的并发与并行

并行需多核硬件,任务真正同时执行;并发则通过调度交替运行,单核亦可实现。并行是并发的子集。在ARM嵌入式Linux中,中断与进程、中断与中断、多核间均存在并发,尤其中断上下文与进程上下文并发易引发竞态,需用spin_lock_irqsave等机制保护。并发场景多样,中断是驱动开发中关键竞态来源。

2026-11-07 21:29:04 655

原创 bootcmd 详细讲解

bootcmd是U-Boot中用于自动启动内核的环境变量,存储待执行的shell命令字符串。其来源优先级为:Flash保存的环境变量 > CONFIG_BOOTCOMMAND宏定义 > 板级动态赋值。bootcmd在main_loop中通过Hush解析器按分号分隔逐条执行,关键流程包括读取、判断是否中断(由bootdelay控制)、解析并运行命令。典型命令如mmcread加载内核,booti启动。调试时可用printenv、setenv、saveenv等命令查看、临时修改或固化配置。

2026-11-07 15:20:42 305

原创 进入kernel后的第一段代码

U-Boot跳转至Linux内核时,关闭MMU与D-cache,CPU处于Non-Secure EL2,x0传入DTB物理地址。内核首执行_text处的bprimary_entry跳转至primary_entry,首条有效指令msr daifset, #0xf屏蔽所有中断异常,确保早期运行环境安全。随后保存DTB地址、切换至EL1、构建恒等映射页表,开启MMU,最终跳转至start_kernel进入C语言主函数。整个过程实现从裸机汇编到内核初始化的平稳过渡。

2026-11-07 13:45:31 391

原创 设备树 DTS(Device Tree)完整详解

设备树(Device Tree, DT)是一种用文本描述硬件板级信息的文件,用来告诉 Linux 内核:这个板子上有哪些外设、外设地址、中断、引脚、供电、时钟、复位等硬件资源。

2026-11-05 22:10:25 288

原创 Linux Kernel:起源、发展、现状、未来

1991年,林纳斯·托瓦兹为学习目的开发Linux内核,后因GNU项目缺位而与GNU工具链结合,形成“GNU/Linux”生态。历经早期孵化、企业化发展、现代版本迭代,Linux逐步主导服务器、云、嵌入式及移动领域(Android内核),并持续演进:从2.6抢占式内核到5.4/6.1 LTS,推动容器、eBPF、Rust驱动、实时性与安全强化。当前内核超3000万行,社区以邮件评审为主,虽面临体量大、合规难、资源受限等挑战,但未来将向模块化、异构计算支持、内存安全与轻量化方向发展,长期保持在复杂系统中的核心

2026-11-04 22:36:05 202

原创 Kernel简介

Linux内核是运行在内核态的系统核心,负责管理CPU、内存、设备与网络等硬件资源,通过系统调用为用户态程序提供统一接口。其核心职责包括进程调度、内存管理、VFS虚拟文件系统、设备驱动模型及网络协议栈。内核采用分层架构,支持模块化扩展(如.ko驱动),并通过Kconfig配置灵活裁剪。启动流程从U-Boot加载zImage和DTS开始,经汇编初始化、子系统注册,最终挂载根文件系统并启动init进程,完成向用户态的交接。内核是可定制、可扩展的系统底座,保障了系统的稳定性与实时性。

2026-11-03 22:31:24 206

原创 进程与线程的关系

进程是资源分配的基本单位,线程是CPU调度的基本单位。在Linux中,进程与线程均以task_struct表示,区别在于是否共享资源。进程拥有独立地址空间和资源,线程共享进程资源但有私有栈和上下文。线程切换开销小,适合并发;进程间隔离性强,但通信复杂。多线程需注意共享数据的竞态问题,合理使用锁机制。多核下线程可并行执行,提升性能。

2026-11-02 22:28:39 234

原创 可重定位目标程序

可重定位目标文件(.o)是编译后生成的二进制代码,包含机器指令和未解析符号,地址为相对偏移,需链接器通过重定位表填充外部符号地址。它不能直接运行,但可被链接器合并、重定位,生成可执行文件或共享库。在嵌入式系统如U-Boot、Linux内核中,大量.o文件经链接脚本整合后生成最终程序。ARM下使用gcc -c生成的.o默认为可重定位类型(ET_REL),但需通过ELF头判断,而非仅依赖后缀名。

2026-11-01 15:44:32 326

原创 U-Boot 跳转到 Linux Kernel 完整流程

U-Boot通过booti命令启动ARM64 Linux,严格遵循启动约定:CPU处于EL1,MMU关闭,寄存器x0=0、x2为合法dtb物理地址,cache已清理,中断屏蔽。U-Boot将内核镜像与设备树加载至内存指定位置,调用boot_prep_linux准备环境(校验、填充bootargs、预留内存),再执行boot_jump_linux关闭外设、刷新cache、关MMU/中断,最终通过br指令跳转至内核入口。内核接管系统,不再返回,完成从U-Boot到Linux的无缝过渡。

2026-11-01 09:19:01 458

原创 U-Boot裁剪

本文系统阐述U-Boot裁剪核心原则与实践路径:以最小启动链路为目标,分Kconfig、源码、编译链接、运行期四类裁剪。重点关闭非必要命令、驱动、协议栈、打印日志,精简DTS与SPL,优化bootcmd与启动参数。通过逐层精简,可将U-Boot体积压缩至80–150KB,启动时间降至50–120ms,显著提升量产效率与系统响应速度。

2026-10-31 15:17:41 126

原创 U-Boot代码架构

U-Boot是分层、模块化、可裁剪的嵌入式引导固件,采用“平台无关上层+架构+板级BSP+驱动”分层架构,支持多架构与多板级。核心分为SPL(次级引导)与U-BootProper(主引导),通过Kconfig实现编译期裁剪。其关键设计包括:gd_t全局上下文、初始化数组钩子、DM驱动模型、Hush脚本引擎及双镜像机制(SPL+U-BootProper),实现高效、灵活、可适配的启动流程。

2026-10-31 14:13:47 209

原创 U-Boot DM(Driver Model)驱动框架

U-Boot DM(Driver Model)是2014年起引入的面向对象驱动框架,旨在统一驱动管理、支持设备树、实现总线抽象与懒加载(bind/probe分离),替代旧版硬编码、分散式驱动。其核心为四大结构体:driver(驱动)、udevice(设备实例)、uclass(设备类)、dm_bus(总线)。通过链接器列表自动注册驱动,初始化分阶段进行:先dm_init搭建框架,再dm_scan_plat和dm_extended_scan绑定设备(不操作硬件),最后按需probe,实现延迟初始化。相比Linu

2026-10-25 17:52:37 634

原创 U-Boot简介

U-Boot是2000年由PPCBoot与ARMBoot合并演化的通用引导加载程序,支持多架构(ARM、PowerPC、MIPS、RISC-V等),具备硬件初始化、多介质内核加载、交互式命令行及固件升级等功能。其核心优势在于丰富的调试能力、DM驱动模型与设备树支持,广泛应用于工业、安防及国产SoC领域。尽管存在GPLv2合规风险和代码复杂度高等问题,但凭借稳定性和强大社区生态,仍为嵌入式系统启动的关键组件。

2026-10-23 23:22:26 207

原创 Bootloader简介

Bootloader是操作系统启动前运行的固件代码,负责硬件初始化、加载内核并传递参数。其发展历经BIOS、早期专用引导程序、U-Boot统一化,到现代安全启动链(如ATF+U-Boot)。U-Boot作为最主流的开源实现,支持多架构、功能完整,但需SPL配合。当前主流包括U-Boot、ATF、LK等,分别应用于嵌入式Linux、安全系统及安卓平台。Bootloader是启动链核心,而U-Boot仅为其中一种实现。

2026-10-22 22:14:57 545

原创 SOC的开机全过程简介

本文详细解析了ARMv8-A架构下,基于eMMC启动的完整流程:从上电复位(POR)开始,BOOTROM读取syscfg.bin配置,加载SPL(bootloader.bin)至SRAM并完成DDR初始化;SPL将BL31(ATF)载入安全内存,跳转至EL3运行;BL31加载U-Boot(uboot.bin)至非安全DDR,进入EL2;U-Boot完成重定位、外设初始化与环境变量加载,执行bootcmd启动Linux内核;内核初始化驱动、挂载根文件系统后,由init进程启动用户服务及业务应用。全过程涵盖硬件

2026-10-21 22:55:14 361

原创 SoC 的晶振、时钟和时钟周期

晶振作为SoC的原始频率基准,通过压电效应产生稳定低频时钟(如24MHz主晶振、32.768kHz RTC晶振),经PLL倍频后,结合分频与门控生成各模块独立工作时钟,构成时钟树。时钟周期是数字电路最小时间单位,决定指令执行速度与系统性能。稳定时钟是CPU、DDR、NPU等模块正常运行的前提,任一环节异常将导致系统失效。

2026-10-20 22:26:27 346

原创 两核 CPU:CPU1 和 CPU2 是如何协同工作的?

ARM Cortex-A55多核簇在硬件上对称,CPU0、CPU1、CPU2无主次之分,均具备独立缓存与执行单元,共享L2 Cache和总线。上电后仅CPU0(BootCPU)启动,其余核处于WFI休眠;Linux内核初始化完成后,才唤醒其他核。内核运行后进入标准SMP模式,所有核平等参与任务调度,共享内存空间,通过硬件ACE协议自动维护缓存一致性。协同机制包括:内核调度器负载均衡、共享内存+锁同步、IPI中断通信。核心要点:启动阶段有主次,运行后为对称多核,核间数据同步由硬件自动保障。

2026-10-19 22:19:47 206

原创 SOC 里的 CPU 处理器 和 L1/L2 Cache

Cortex-A55视觉SoC采用四核簇架构,每核独立拥有32KB L1-I与32KB L1-D缓存,共享256/512KB L2缓存。CPU指令执行依赖L1缓存,访问链路为:寄存器→L1→L2→DDR。默认使用Write-back写策略,脏数据暂存于缓存,需在DMA、NPU或VI操作前显式刷新以保证一致性。L2负责核间同步,提升多核协作效率。

2026-10-19 22:02:58 428

原创 网络PHY芯片简介

PHY芯片是以太网物理层核心,负责将MAC/GMAC的数字信号转换为网线可传输的差分模拟信号,并反向恢复信号。RTL8211E为千兆PHY,支持10/100/1000M自协商、MDI/MDIX自动交叉,具备信号编码、均衡、串扰抑制及节能功能,通过RGMII与GMAC连接,经网络变压器驱动网线,实现可靠数据传输。

2026-10-18 16:17:02 298

原创 嵌入式 SOC GMAC 网络 简介

GMAC是集成于SOC内的千兆媒体访问控制器,负责以太网帧的硬件处理与DMA数据传输,需外接PHY芯片(如RTL8211E)通过RGMII接口实现千兆有线网络。其核心功能包括帧封装/解封、自动CRC校验、硬件MAC地址过滤、全双工与流量控制,并由内置DMA直接访问DDR内存,实现低CPU开销的数据收发。完整链路为:DDR→GMAC DMA→MAC核心→RGMII→PHY→网线。驱动基于stmmac框架,依赖MDIO配置PHY,常见问题包括MDIO通信失败、时序延迟错、CRC错误及缓冲溢出。GMAC提供稳定、

2026-10-18 14:33:21 335

原创 嵌入式SOC中的网络

嵌入式SOC的GMAC、WiFi、RNDIS三类网络接口均通过标准TCP/IP协议栈实现通信,上层统一为ethX/wlanX网卡,支持ping、iperf等基础功能。差异在于底层:GMAC依赖外接PHY与网线,提供稳定千兆有线连接,适用于工业场景;WiFi基于无线射频,免布线但受干扰大,适合消费设备;RNDIS通过USB虚拟以太网,仅需一根USB线即可实现点对点调试,成本低但带宽受限。三者各具优势,应根据应用场景合理选择。

2026-10-18 10:28:57 421

原创 网络基础简介

网络是基于规则、介质与硬件的分层系统,实现设备间比特传输。核心为TCP/IP四层模型:应用层处理业务数据,传输层管理端口与可靠传输,网际层负责IP寻址与路由,网络接口层完成帧封装与物理信号传输。关键地址有MAC(局域网内唯一)与IP(跨网段路由)。发包流程从应用层逐层向下封装,经物理层发送,接收则逆向解包。开发调试中,各层对应硬件与驱动,故障定位可依层次划分。

2026-10-17 20:56:09 183

原创 大疆 PSDK介绍

大疆PSDK(Payload SDK)是专为第三方开发者设计的负载开发套件,支持在M400无人机的SkyPortV2接口上运行自研负载(如相机、激光雷达等),实现与飞行器、Pilot2地面站及O4图传链路的深度集成。其核心功能包括:飞行状态实时获取、遥控器按键订阅、自定义UI控件生成、MDI高速视频流推送、双向数据透传及PPS时间同步。PSDK运行于负载板MCU/SOC,基于C语言开发,通过UART+MDI以太网通信,依赖硬件HAL层适配,无需妙算。关键要求包括:使用DJI官方固件、3.3V TTL电平、正

2026-10-17 16:40:56 663

原创 大疆M400机型介绍

大疆M400是2025年推出的旗舰行业无人机,定位替代M300RTK,具备59分钟最长续航、6kg载重能力及多负载挂载支持。核心升级为环扫激光雷达+毫米波雷达+全彩视觉的电线级避障系统,可在雨雾、夜间精准探测细线障碍。搭载O4Enterprise增强图传与RCPlus2遥控器,支持空中中继。机身配备4个E-PortV2接口,支持PSDK开放开发,提供UART控制与MDI以太网图像传输,兼容自研负载板(需固件升级至v01.04.1112)。适用于电力巡检、测绘、应急救援等场景,性能全面超越M300RTK,但开

2026-10-17 15:51:45 521

原创 国内无人机厂家的硬件架构和 SDK

大疆全栈自研,硬件集成度高,SDK生态最强,适合多旋翼巡检与第三方负载开发;道通架构对标大疆,成本较低,但生态较弱;极飞专注农业植保,4D雷达+执行机构定制化强,但开放性低;纵横采用模块化VTOL固定翼架构,ASDK开放度最高,适合长距离测绘巡检。嵌入式开发应根据场景选型:通用巡检选大疆,农业用极飞,大范围航测选纵横,自研整机则需参考其硬件设计。

2026-10-16 22:44:23 648 1

原创 大疆机载硬件架构

大疆无人机采用五块独立PCB板架构:飞控主板(核心控制)、感知板(避障与定位)、图传板(无线视频传输)、云台主板(三轴稳定控制)和电调板(电机驱动)。各板通过FPC与连接器互联,集成高精度IMU、双模定位、多目视觉+雷达融合、OcuSync图传及FOC电机控制等核心技术。电源系统含智能锂电池与多路PMIC管理,保障稳定供电。嵌入式开发推荐通过PSDK/MSDK进行外设或地面站应用开发,无需深入底层,实现行业级定制化拓展。

2026-10-15 23:01:36 382

原创 大疆(DJI)无人机介绍

大疆创新(DJI)成立于2006年,全球消费级航拍无人机市占率超70%,是行业龙头。核心优势在于全套自研技术:飞控、图传(O4/O4+)、三轴云台、避障系统、动力与电池管理。产品线覆盖消费级(Mini、Air、Mavic、Avata、Inspire)与行业级(Mavic行业版、Matrice经纬系列、Agras农业机),支持测绘、巡检、消防、植保等场景。依托自研核心技术与开放生态(MSDK/PSDK、司空2云平台),构建起从硬件到软件的完整闭环,推动低空经济智能化发展。

2026-10-15 22:38:47 604

原创 国内无人机市场概况

消费级:存量、内卷、强监管;工业级:是增长主力,从卖硬件转向卖 “硬件 + AI + 数据 + 运营服务” 整套方案。当前资本、厂商重点投入的赛道,纯硬件利润越来越薄,整套解决方案、运营服务才是高毛利业务。

2026-10-14 22:48:06 115

原创 无人机简介

无人机(UAV)是无需乘员、由遥控或自主程序控制的飞行器,完整系统(UAS)包括飞行平台、飞控、导航、通信链路、载荷与地面站。飞控为核心,融合传感器实现姿态稳定与自主飞行;导航依赖北斗/GPS及惯性定位;任务载荷如相机、雷达赋予其应用价值。按用途分消费级、行业级与军用;控制模式涵盖手动、辅助与全自动。系统具备高可靠性、安全性与可扩展性,广泛应用于航拍、巡检、测绘等领域。

2026-10-14 21:58:48 394

原创 SOC的基本概念

SoC是将CPU、GPU、NPU、VPU、ISP等多类硬件IP集成于单芯片的系统级解决方案,通过AXI总线实现统一地址空间访问,支持异构计算与高集成度。相比独立CPU或MCU,SoC仅需外挂DDR/Flash即可运行,具备体积小、功耗低、性能强优势。在视觉应用中,VI模块可直接DMA写入DDR,NPU/IVE并行处理图像数据,无需CPU干预,显著提升效率。

2026-10-07 22:02:23 322

原创 软考-系统架构师论文(一)

本文系统解析软考架构师论文考试规则与备考策略,强调以架构师角色参与企业级项目为核心,聚焦架构选型、权衡取舍(性能、可用性、安全等)及落地难点。要求紧扣题干三问结构,结合嵌入式SOC等典型项目,突出高并发、可靠性、数据集成等核心架构实践,注重量化成果与反思不足。严禁纯编码描述或技术堆砌,须体现架构决策逻辑与实际效果,确保摘要300字精准提炼项目背景、方案与成效,规避踩坑点,提升通过率。

2026-10-04 11:42:45 284

原创 海思Hi3519D的MPP介绍

是海思为 Hi3519D 等视觉 SoC 封装的,屏蔽底层寄存器、硬件时序、内存管理细节,向上提供标准化 C 语言 MPI 接口,实现视频采集、图像处理、编解码、显示、音频、智能分析全链路硬件加速开发,所有音视频操作均由硬件引擎完成,CPU 仅做业务调度,负载极低。

2026-06-19 21:32:18 422

原创 WIFI传输带宽

本文系统梳理了WiFi技术发展及各代标准的关键参数。从WiFi1到WiFi7,理论速率从11Mbps提升至20Gbps+,实际吞吐量约为理论值的60-70%。重点分析了2.4GHz、5GHz和6GHz频段在带宽、干扰和穿墙能力上的差异,指出嵌入式设备应根据需求选择频段:2.4GHz适合远距低带宽,5GHz适合高清视频传输。文章还对比了两款WiFi5模组的实测性能,移远FC900E在同等条件下比AP6256高10-20%带宽。最后强调WiFi6/7已成为新一代设备首选,而WiFi5仍是当前高清摄像头的主流选择

2026-05-25 22:32:03 763

原创 WIFI模组介绍:FC900E

FC900E是移远通信推出的Wi-Fi5+蓝牙5.0二合一模组,采用高通QCA9377-3芯片,支持双频Wi-Fi(最高866.7Mbps)和蓝牙5.0。该模组具有12×12mm小尺寸、工业级温度范围(-40℃~+85℃)、SDIO3.0高速接口等特点,适用于Linux/Android嵌入式设备。主要应用于智能家居、工业网关、车载终端等场景,已通过SRRC、CE、FCC等多项认证。相比同类产品,FC900E在温度范围、接口速度和成本方面具有优势。

2026-05-24 16:06:14 381

原创 H264的两种码流格式

H.264码流有两种主流格式:AnnexB和AVCC。AnnexB格式使用起始码0x00000001分隔NAL单元,常见于硬件编码输出和实时传输场景;AVCC格式采用4字节长度前缀,主要用于MP4容器存储。两种格式可通过FFmpeg工具相互转换:AnnexB转AVCC需去除起始码并添加长度前缀,而AVCC转AnnexB则需反向操作。实际应用中,MP4容器仅支持AVCC格式,而AVI等容器可直接兼容AnnexB格式。理解这两种格式的差异及转换方法,对视频处理开发至关重要。

2026-05-17 09:19:48 77

原创 海思Hi3519D的SDK编译,烧录,运行

本文介绍了在Ubuntu 20.04系统上搭建Hi3519DV500开发环境的完整流程。首先配置交叉编译环境,安装必要的软件包和依赖库;然后解压SDK源码包,分别编译uboot、kernel、rootfs等组件;接着使用海思专用烧录工具ToolPlatform通过USB接口进行程序烧录,详细说明了驱动安装和烧录步骤;最后总结了遇到的"全部擦除"问题及解决方法(需使用强制烧写键)。整个流程涵盖了从环境搭建到最终烧录成功的完整开发过程。

2026-05-10 10:25:51 470

原创 FFmpeg常用命令行指令整理

2026-05-05 22:37:36 87

空空如也

空空如也

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

TA关注的人

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