Tina Linux PMU开发指南 1 前言 1.1 文档简介 介绍使用Tina PMU 驱动的使用方法。 1.2 目标读者 适用于使用全志AXP 平台PMU 的开发人员。...1.3 适用范围 表1-1: 适用SOC 平台及AXP 对应表 产品名称 内核版本 AXP 型号 R818 Linux-4.9 AXP717 2 模块介绍 2.1 模块功能介绍 PMU,负责系统各个模块供电...regulator Linux 内核对LDO、DC-DC 的管理核心。 USB-Power-Supply USB 接口对系统的供电。...Power-Supply Linux 内核对USB、ACIN、BAT 供电的管理核心。...MFD Multi Function Device,Linux 内核对多功能设备PMU 的管理核心 regmap Linux 内核用于管理片外模块寄存器的方法。
中增加定义: #define PMU_LOCAL_PMU_PB_ERR ( ( PMU_LOCAL_BASEADDR ) + ((u32)0X00000338U) ) #define PMU_LOCAL_PMU_PWR_STATUS...FW error register */ { .startAddr = PMU_LOCAL_PMU_PB_ERR, .endAddr = PMU_LOCAL_PMU_PB_ERR...1_MASK), }, { .startAddr = PMU_LOCAL_PMU_PWR_STATUS, .endAddr = PMU_LOCAL_PMU_PWR_STATUS...1_MASK), }, #ifdef ENABLE_EM /* PMU Local FW error register */ { .startAddr = PMU_LOCAL_PMU_SERV_ERR..., .endAddr = PMU_LOCAL_PMU_SERV_ERR, .access = MMIO_ACCESS_RW(IPI_PMU_0_IER_RPU_0_MASK
= 2 pmu_hot_shutdown = 1 pmu_bat_unused = 0 pmu_usbad_vol = 4600 pmu_usbad_cur = 1500 pmu_usbpc_vol...= 4600 pmu_usbpc_cur = 500 pmu_chg_ic_temp = 0 pmu_battery_rdc = 100 pmu_battery_cap = 3568 pmu_runtime_chgcur...0] = 0 pmu_bat_para[1] = 0 pmu_bat_para[2] = 0 pmu_bat_para[3] = 0 pmu_bat_para[4] = 0 pmu_bat_para[5...] = 0 pmu_bat_para[6] = 1 pmu_bat_para[7] = 1 pmu_bat_para[8] = 2 pmu_bat_para[9] = 4 pmu_bat_para[10...] = 5 pmu_bat_para[11] = 12 pmu_bat_para[12] = 19 pmu_bat_para[13] = 32 pmu_bat_para[14] = 41 pmu_bat_para
PMU PMU - 电源管理单元,负责系统各模块供电及电池充放电管理。...rdev); printf("[power] coulumb_counter:%d\n", ret); printf("[power] get bat_present\n"); pr_err("pmu_bat_unused...:%d\n", rdev.config->pmu_bat_unused); pr_err("pmu_version:%d\n", rdev.config->pmu_version); ret = hal_power_get_bat_present
这需要我们深入了解微体系架构的设计和 PMU 规范,才能从原始事件数据中获取有用的信息。...toplev 是 pmu-tools 中的一个工具,在 Intel CPU 的 Linux perf 基础上实现了 TMAM 方法。...toplev 是一个计数工具,它使用 PMU 来计数事件。...安装 toplev 在 Linux 上运行,需要安装 perf 工具。toplev 还需要访问 PMU,在 VM 中运行时需要注意启用这个特性。...1% git clone https://github.com/andikleen/pmu-tools 2% cd pmu-tools 3% export PATH=$PATH:`pwd` 4% sudo
在之前文章中,我们介绍了如何使用 XSCT 工具通过 JTAG 在 Zynq SoC 上启动嵌入式 Linux 镜像(从 JTAG 启动 Zynq-7000 嵌入式 Linux:使用 XSCT 全流程教程...6、PMU固件 Zynq UltraScale+ SoC 包含一个专用的 MicroBlaze 处理器,用于执行平台管理。PMU 代表平台管理单元。...此外,还可以使用 Vitis IDE 修改 PMU 固件。可以参考 Zynq UltraScale+ 的技术参考手册(即 UG1085 )来进一步了解 PMU 固件的详细信息和使用场景。...通过获取处理器的访问权限,我们现在可以下载并运行 PMU 固件。...11、完整的 Linux 镜像 本教程的最后一步是将 Linux 内核镜像下载到 DDR 内存中,并通过 U-Boot 启动它。用于下载镜像的地址有限制。
例如想分析cache性能,可以通过硬件PMU(Performance Monitor Unit)得到cache miss rate等数据。PMU可以在CPU,总线等模块中。...这个补丁提到的PMU是系统总线中的PMU。 CMN-600是ARM公司与2016年推出的系统总线IP,最大支持128个处理器和8T内存。...Linux系统的PMU是事件(event),通常的做法是通过perf_pmu_register注册。...在arm cmn实现中,arm_cmn_probe调用了该函数注册pmu的attribute group和pmu的event,也就是注册该PMU支持的调测能力。...这是Linux pmu event通常的管理方式。
Tina Linux SDK的根目录下,执行make menuconfig命令可进入Tina Linux的配置界面。 对于具体软件包: (按y): 表示该软件包将包含在固件中。...-5.4内核的方案要注意: 像以往其他方案 (如linux-4.9,linux-4.4的),会在pack 阶段解析并将 sys_config合并到dtb中,而linux-5.4 使用的是原生未改动的dtc...使用内核提供的device tree接口,必须引用Linux系统提供的device tree接口头文件,包含 且不限于以下头文件: #includelinux/of.h> #includelinux.../of_address.h> #includelinux/of_irq.h> #includelinux/of_gpio.h> 5.4.1.1 irq_of_parse_and_map | 类别 |...8 env 8.1 配置文件路径. env.cfg 根据使用内核版本(linux3.4 或 linux3.10 或 linux4.4)分为 env-3.4.cfg,env-3.10.cfg,env-4.4
今天阅读的代码主要位于include/linux/perf_event.h和/kernel/events/core.c文件内。本次阅读基于v6.3-rc7版本。...是perf_event类型的,具体定义在/include/linux/perf_event.h目录下,链接L665 /** * struct perf_event - performance event...= find_get_pmu_context(pmu, ctx, event); // L 12568 if (IS_ERR(pmu_ctx)) { err = PTR_ERR(pmu_ctx)...perf%E5%86%85%E6%A0%B8%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/) perf_event.h(https://github.com/torvalds/linux.../blob/v6.3-rc7/include/linux/perf_event.h) Perf_IPC以及CPU利用率(https://plantegg.github.io/2021/05/16/Perf_IPC
说明 若板子上没有使用我司的带有按键功能的PMU,则就没有对应的AXP 按键。...= ; pmu_powkey_off_func = ; pmu_powkey_off_en = ; pmu_powkey_long_time...这里另外,PMU 还提供了AXP GPIO, 根据不同型号的PMU, GPIO 数量可能不一样,但gpio number 均以1024 开始,例如AXP GPIO0 的gpio number 为1024...= ; pmu_powkey_off_func = ; pmu_powkey_off_en = ; pmu_powkey_long_time = ; pmu_powkey_on_time...的配置也会不一致,详细查看各个方案使用的PMU 型号。
在Vivado里选择Watchdog,并在设备树里使能Watchdog,还不能在Linux中正常使用。...pmu-firmware修改 如果要在Linux中使用Watchdog,需要在project-spec/meta-user/recipes-bsp/embeddedsw/pmu-firmware_%.bbappend...中添加如下内容: 2021.1以前的版本: # pmu-firmware_%.bbappend content YAML_COMPILER_FLAGS_append = " -DENABLE_EM -DENABLE_SCHEDULER..." 2022.1及以后的版本: # pmu-firmware_%.bbappend content YAML_COMPILER_FLAGS:append = " -DENABLE_EM -DENABLE_SCHEDULER...1887.11 7509.61 # cat /proc/uptime 1971.67 7847.72 # cat /proc/uptime 2159.96 8600.54 通过应用程序控制Watchdog Linux
启动镜像通常含有第一阶段引导加载程序、 FPGA 比特流(可选)、 PMU 固件、 ATF 和 U-Boot。...○ 对于 Zynq UltraScale+ MPSoC:它在启动 U-Boot 之前启动 PMU 固件、 FSBL 和 ATF。...PMU 固件 这仅用于 Zynq® UltraScale+™ MPSoC。这是可选项。默认情况下,顶层系统设置被设定为生成 PMU 固件。...选择“Linux Components Selection” 。 b. 选择“PMU Firmware” 选项。 [*] PMU Firmware c. 退出菜单并保存更改。...构建工程时构建 PMU 固件: petalinux-build 仅构建 PMU 固件: petalinux-build -c pmufw PMU 固件 ELF 文件将作为 Zynq UltraScale
1.3 适用范围 产品名称 内核版本 驱动文件 A133 Linux-5.4 sunxi_mmc* h616 Linux-5.4 sunxi_mmc* v853 Linux-4.9 sunxi_mmc*...R853 Linux-4.9 sunxi_mmc* F133 Linux-5.4 sunxi_mmc* 2 模块介绍 2.1 模块功能介绍 Linux 提供了 MMC 子系统来实现对各种 SD/MMC...供电方案修改 vqmmc33sw-supply 3.3V 的 IO 电压,需要根据实际 pmu 供电方案修改 vdmmc33sw-supply 3.3V 的卡检测电压,需要根据实际 pmu 供电方案修改...vqmmc18sw-supply 1.8V 的 IO 电压,需要根据实际 pmu 供电方案修改 vdmmc18sw-supply 1.8V 的卡检测电压,需要根据实际 pmu 供电方案修改 status...供电方案修改 vqmmc33sw-supply 3.3V 的 IO 电压,需要根据实际 pmu 供电方案修改 vdmmc33sw-supply 3.3V 的卡检测电压,需要根据实际 pmu 供电方案修改
一、PMU 配置及修改 由于ATF的安全策略,从LInux烧写Efuse,需要经过SMC,调用PMU的API来实现。...对PMU代码进行修改(Petalinux下增加EFUSE内容后,会导致PMU RAM(128K) 溢出,暂时用Vitis进行编译): 1.1 使用xsa新建一个Application 1.2 对Vitis...(这里如果不设置为0,编译出来的pmu会超过PMU RAM大小,导致溢出) 1.3 对Vitis 的bsp中efuse相关的bsp进行配置 1.3.1 打开平台的配置 1.3.2 增加编译flag 在...1.3.3 clean后重新编译平台代码 1.3.4 clean后重新编译pmu应用程序 1.3.5 将编译出来的pmu*elf,在petalinux下进行打包,生成BOOT.BIN 二、Linux...平台 配置及修改 2.1 检查linux config是否包含了NVMEM的驱动 petalinux-config -c kernel Device Drivers ---> NVMEM Support
perf 是Linux的一款性能分析工具,能够进行函数级和指令级的热点查找,可以用来分析程序中热点函数的CPU占用率,从而定位性能瓶颈。...Performance analysis tools for Linux. 系统性能优化通常可以分为两个阶段:性能分析和性能优化。...一,原理 Linux性能计数器是一个基于内核的子系统,它提供一个性能分析框架,比如硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint...通过perf,应用程序可以利用PMU、tracepoint和内核中的计数器来进行性能统计。 Perf 可以对程序进行函数级别的采样,从而了解程序的性能瓶颈在哪里。...linux-tools-common #查看版本 perf --version #查看内核版本 uname -r 5.15.0-58-generic #安装 sudo
sw_comp/src/a53/xrt/image mkdir sw_comp/src/boot ·将 image.ub、boot.scr 和 rootfs.cpio.gz 从 PetaLinux image/linux...sw_comp/src/a53/xrt/image ·将 bl31.elf、uboot.elf、zynqmp_fsbl(已重命名为 fsbl.elf)和 pmufw.elf 从 PetaLinux image/linux...针对 PMU,需使用 pmu_args.txt 执行此操作 -M microblaze-fdt -device loader,file= -machine-path ....-display none ·将 pmu_args.txt 复制到 sw_comp/src/boot 此外还需要通过 qemu_args.txt 传递 PSU 机器详细信息: -M arm-generic-fdt...针对操作系统选择 Linux,然后取消勾选“生成启动组件 (generate boot components)”,因为在 PetaLinux 中已创建这些组件: ?
aes, aeskeyfile = aes.nky, destination_cpu=a53-0] /proj/zynqmp_fsbl/fsbl_a53.elf [destination_cpu = pmu...,encryption = aes,aeskeyfile = pmu.nky] /proj/images/linux/efuse_linux_pmu.elf [destination_device=pl...,encryption = aes,aeskeyfile = pl.nky] /proj/images/linux/system.bit [destination_cpu=a53-0,encryption...= aes,aeskeyfile = bl31.nky, exception_level=el-3, trustzone] /proj/images/linux/bl31.elf [destination_cpu...=a53-0,encryption = aes,aeskeyfile = uboot.nky, exception_level=el-2] /proj/mages/linux/u-boot.elf }
再次运行时,设置PMU的ERROR_SRST_EN_1后,PS马上复位。...#define PMU_GLOBAL_ERROR_SRST_EN_1 ( ( PMU_GLOBAL_BASEADDR ) + 0X0000056CU ) #define PMU_GLOBAL_ERROR_SRST_EN..._1 (PMU_GLOBAL) Register: %x....u32_reg = Xil_In32(0xFFD80540); xil_printf("Old PMU ERROR_STATUS_2 (PMU_GLOBAL) Register: %...u32_reg = Xil_In32(0xFFD80530); xil_printf("New PMU ERROR_STATUS_1 (PMU_GLOBAL) Register: %
Perf工具: Linux环境下性能优化的瑞士军刀 01 perf是Linux内核内置的性能分析工具,由Ingo Molnar等内核开发者维护。...:支持BPF扩展,增强动态追踪能力 2020年:新增Arm架构PMU支持 与其他工具的对比优势: 工具 采样精度 系统开销 内核支持 用户态支持 perf 纳秒级 <3% 原生 完整 gprof 毫秒级...epel-release /*安装perf工具链 */ #sudo yum install perf 核心原理: 深度分析perf深层次原理 02 2.1 硬件性能计数器(PMC) 现代CPU内置硬件性能监控单元(PMU...:缓存未命中次数 例如:现代CPU的PMU架构示例(以Intel Skylake为例): struct pmu_registers { u64 CTRL_MSR; // 控制寄存器...性能分析的基础设施,其深度应用需要掌握: 硬件层:理解PMU架构与事件编码。