无标题
kernel 调试及优化启动分析内核启动过程分析 (Kernel Boot Analysis)# 可读时间dmesg -T bootgraph (内核自带绘图工具)# Linux 内核源码树中提供了一个脚本 scripts/bootgraph.pl。# 捕获数据: dmesg > boot.log# 生成 SVG: perl scripts/bootgraph.pl boot.log > boot.svg# 这会生成一张矢量图,直观展示哪些内核函数(如 pci_init, ext4_init)执行时间最长。 用户态服务启动分析 (Systemd Analysis)一旦内核完成初始化并启动 init 进程(通常是 systemd),性能分析的重心就转向了服务加载。systemd 自带了极其强大的分析工具族 # 总体耗时概览systemd-analyze# 服务耗时排行榜 (Blame) 它会按耗时降序排列所有单元。注意:耗时长不代表它阻塞了启动,因为它可能是异步运行的。systemd-analyze blame 关键路径分析...
Hawaii Yocto System
yocto 编译nxp系统 使用google的repo工具来管理整个项目的仓库代码 uboot建好仓库后拉取imx官方的uboot仓库代码并修改 git remote add uboot-imx https://github.com/nxp-imx/uboot-imx.gitgit fetch uboot-imx lf_v2025.04git merge --squash --allow-unrelated-histories uboot-imx/lf_v2025.04git commit -m "Squash merge uboot-imx/lf_v2025.04" 编译make distcleanmake imx8mp_evk_defconfigmakemake dtbs kernel同样fork imx的仓库过来修改 git remote add linux-imx https://github.com/nxp-imx/linux-imx.gitgit fetch linux-imx lf-6.12.ygit merge --squash...
无标题
IMX8MP-EVK MCUuboot启动M7进入uboot后 查看mmc设备 mmc list 看到如下 FSL_SDHC: 1 # SDFSL_SDHC: 2 (eMMC) 再查看emmc 第一个分区的内容,会有m7的程序 fatls mmc 2:1 直接运行 对于编译出来的运行在 TCM上的固件 TCM (Tightly Coupled Memory) - 紧耦合存储器位置:通常位于核心处理器芯片内部或非常靠近核心的地方(片上内存,OCRAM/SRAM)。速度:极快,通常与 CPU 核心时钟同步,访问速度接近 L1 Cache,无延迟。用途:主要用于存储 关键代码(如实时操作系统 RTOS 内核、中断处理程序、设备驱动程序)和 实时数据。在异构系统(如 i.MX M7 核心)中,M7 的代码通常被复制到 TCM 中执行。大小:较小(通常为几十 KB 到几 MB)。特性:不可缓存。处理器直接访问它,因此访问是可预测的,非常适合 实时 应用。 fatload mmc 2:1 0x48000000...
NXP OS System
yocto 编译nxp系统检查 Yocto 编译出来的 .wic 镜像内容查看分区信息# 查看分区信息fdisk -l core-image-*.wic 挂载 .wic 镜像分区unzstd ./tmp/deploy/images/imx8mpevk/core-image-base-*.wic.zstsudo losetup -Pf --show ./tmp/deploy/images/imx8mpevk/core-image-base-*.wicsudo mkdir ./wicrootsudo mount /dev/loop0p2 ./wicrootls ./wicroot/ls ./wicroot/usr/bin/# 卸载并释放 loop 设备sudo umount ./wicrootsudo losetup -d /dev/loop0 扩展rootfs分区边界fdisk /dev/mmcblk2# 输入 p查看当前分区,记下第2分区的 Start(起始扇区)数值# 输入 d,然后输入 2 删除第2分区。# 输入 n 新建分区,输入 p,编号输入 2#...
operating system
进程和线程定义 进程是资源分配的基本单位,在程序运行时创建 线程是程序执行的最小单位,是进程的一个执行流,一个进程由多个线程组成 区别 进程是资源分配的最小单位,线程是进程执行的最小单位,也是cpu调度的最小单位。两者都可以并发执行 进程拥有自己的独立地址空间,线程没有,线程必须依赖进程的地址空间。进程的创建会建立数据表来维护代码段、堆栈段和数据段,这种操作比较昂贵,开销比较大,线程的创建则是共享进程中的数据,开销比较小 线程之间的通信比较方便,同一进程下的线程共享全局变量和静态变量等数据。进程之间的通信则比较复杂(IPC) 进程切换的开销大于线程 每个进程都有一个程序执行的入口,但是线程不能独立运行 线程执行开销小,但是不利于资源的保护和管理。进程执行的开销大,但利于资源的保护和管理 进程状态创建、就绪、运行、阻塞、终止 创建一个应用程序从系统上启动,首先就是进入创建状态,需要获取系统资源创建进程管理块(PCB:Process Control...
ptp
PTP (IEEE 1588)PTP(IEEE 1588) 和 gPTP(IEEE 802.1AS) 都是用于网络设备间高精度时间同步的协议,精度都可以达到微秒甚至纳秒级。都是通过测量报文在网络中的传输延迟(Propagation Delay)以及主从时钟的偏差(Offset),进而修正从时钟的时间。 PTP 的核心思想:在网络上选举出一个时间基准(Grandmaster),其它节点(Slave)通过交换带时间戳的报文,估算出自己相对主时钟的偏差和链路延迟,然后不断修正本地时钟,使整个网络的时间趋于一致。 整个系统由几个关键部件组成: 报文交换:用一组特定报文(Sync / Follow_Up / Delay_Req / Delay_Resp 或 Pdelay 系列)携带或换取时间戳。 硬件时间戳:在尽可能靠近物理层的位置打戳,消除软件协议栈带来的不确定延迟。 计算公式:根据 4 个时间戳算出 offset 和链路延迟。 时钟伺服(servo):用一个 PI 控制器平滑地把本地时钟拉向主时钟,而不是硬跳变。 BMCA...
OS System
linux常用指令 systemctl petalinux 系统制作 系统引导和文件系统的制作 initram临时系统文件制作 ext4文件系统制作 编译结果的文件解释 BOOT.bin image.ub system.bit(bitstream) rootfs_cpio.tar.gz zynqmp_fsbl.elf u-boot SysMonPSU pgrep 获取指定进程信息 驱动创建 应用创建 gdb 远程调试 create modules 驱动 linuxptp 内核配置 rootfs设置 设置自动登录 PetaLinux patch生成和应用方法整理 patch 2021.1及以后的版本 清除patch 清理 devtool modify (linux-xlnx) 产生的源码与补丁 petalinux-build 清理 清理所有构建输出和缓存 或者使用 清理特定组件 清理内核 清理 u-boot 清理根文件系统 清理设备树 preboot 通过 mdio...
gdb & core-dump
gdb基础操作gdb ./program# 退出用q或者quit list 或 l # :查看当前行附近的源代码。l 20 # :查看第 20 行附近的代码。run 或 r:开始运行程序。如果程序需要输入参数:r arg1 arg2 断点管理break 15 或 b 15:在第 15 行设断点。b func_name:在进入某个函数时停下。info breakpoints:查看所有断点。delete 1:删除编号为 1 的断点。 推进执行 (Step/Next)next (n): 单步执行(不进入函数内部,直接跳过)。step (s): 单步执行(进入函数内部)。continue (c): 继续运行,直到遇到下一个断点或程序结束。finish: 运行完当前函数并返回到调用处。 查看变量 (Print/Watch)print var (p var): 查看变量 var 的当前值。display var: 每次程序暂停时都自动显示该变量。watch var: 监视变量。一旦 var 的值发生变化,程序立即停下。 查看调用栈 (Backtrace)***...
NXP OS System
standalone 编译各模块uboot拉取uboot仓库# clone 自己的仓库后,将官方的仓库subtree下来 注意可能需要代理git remote add uboot-imx https://github.com/nxp-imx/uboot-imx.gitgit subtree add --prefix=uboot-imx uboot-imx lf_v2025.04 --squash # --squash 是将remote仓库的所有提交commint成一个# 拉取atf信任固件git remote add imx-atf https://github.com/nxp-imx/imx-atf git subtree add --prefix=imx-atf imx-atf lf_v2.12 --squash# 下载ddr training binmkdir firmware-imxwget -P ./firmware-imx...
