温州市网站建设_网站建设公司_留言板_seo优化
2026/1/12 20:48:16 网站建设 项目流程

代码

Set-Location 'D:\TBOX\SDK\QSR01A01_C_SDK_LTE_E_BETA20251225\qos_build\release\EC800ZCNLFR01A01M04_BETA0403_OCPU\DBG' $env:Path = 'D:\unirtos-toolchain\gcc-arm-none-eabi-10.2.1\bin;D:\unirtos-toolchain\bin;' + $env:Path cmd /c "where arm-none-eabi-objdump.exe" arm-none-eabi-objdump.exe -d -S --demangle --line-numbers ap_application.elf > ap_application.disasm.S arm-none-eabi-objdump.exe -h ap_application.elf > ap_application.sections.txt arm-none-eabi-nm.exe -n ap_application.elf > ap_application.nm.txt # 示例:用 nm 里真实存在的符号地址 0x00a62d28(ql_rtos_task_create) arm-none-eabi-addr2line.exe -e ap_application.elf -f -C 0x00a62d28 # 同一地址反汇编一小段(避免全量) arm-none-eabi-objdump.exe -d --demangle --line-numbers --start-address=0x00a62d28 --stop-address=0x00a62d28+0x120 ap_application.elf > example_ql_rtos_task_create.disasm.txt

你这段 PowerShell 脚本的核心目的是:切换到指定的固件编译输出目录,配置 ARM 嵌入式工具链的环境变量,然后使用 ARM 官方工具链中的objdumpnmaddr2line等工具,对嵌入式固件文件ap_application.elf进行反汇编、符号分析和地址溯源,是嵌入式开发中调试固件、定位代码问题的典型操作。

下面我先整体解释脚本的作用,再重点拆解你关心的objdumpnmaddr2line命令。

脚本整体执行流程

  1. Set-Location:切换到固件文件所在的目录(DBG 目录),确保后续命令能找到目标文件ap_application.elf
  2. $env:Path:将 ARM 工具链的bin目录添加到系统环境变量Path中,让系统能找到arm-none-eabi-*系列工具。
  3. cmd /c "where arm-none-eabi-objdump.exe":验证工具是否能被系统找到(排查环境变量配置问题)。
  4. 后续的arm-none-eabi-*命令:对ap_application.elf(嵌入式固件的可执行文件)进行反汇编、符号分析、地址溯源。

核心命令详解

1. arm-none-eabi-objdump.exe(最核心的反汇编工具)

objdump是 ARM 工具链中用于分析目标文件(如.elf、.o)的工具,核心作用是将二进制的机器码转换成人类可读的汇编代码还能解析文件的段信息、符号表等

你用到的参数含义
-d

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询