| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> windows bat脚本学习三(ARM相关执行文件,armar.exe | armasm.exe | armcc.exe | fromelf.exe) -> 正文阅读 |
|
[嵌入式]windows bat脚本学习三(ARM相关执行文件,armar.exe | armasm.exe | armcc.exe | fromelf.exe) |
在使用ARM机型进行开发的时候,都会用到ARM底层提供的执行文件,今天就来分析一下这几个文件。 1.fromelf.exe该文件的主要功能是生成.bin文件。该工具的语法为 fromelf????????[options]????????input_file 详细参数如下: 可选参数 --help 显示帮助 --vsn 显示版本信息 --output_file 输出文件(默认文本格式) --nodebug 在生成的镜像中不包含调试信息 --nolinkview 在生成的镜像中不包含段信息 二进制输出格式 --bin 二进制输出 --m32 摩托罗拉32位hex --i32 因特尔32位hex --vhx 适配字节hex格式 --base addr 可选择设置基础地址对于m32i32 需要调试信息的输出格式 --fieldoffsets 结构/类的汇编语言描述 --expandarrays 被扩展的内部或外部数组 其他输出格式 --elf ELF(Executable and Linking Format)格式 --text 文本格式 ??????? 文本格式的标志 ??????? -v 打印详细信息 ??????? -a 打印数据地址(针对镜像调试编译) ??????? -c 打印反汇编代码 ??????? -d 打印数据段的内容 ??????? -e 打印异常表 ??????? -g 打印调试表 ??????? -r 打印重定位信息 ??????? -s 打印字符表 ??????? -t 打印字符串表 ??????? -y 打印动态段的内容 ??????? -z 打印代码和数据大小信息 ??????? 因为keil是默认生成.axf文件的,该文件包含了二进制和调试信息。现在就是通过.axf文件通过这个工具转换成bin文件。 路径/fromelf.exe --bin -o [输出Bin文件的路径] [.axf的路径] 正常我们输入的路径应该是这样的 G:\keil_5\ARM\ARMCC\bin\fromelf.exe --bin -o? ./bin/输出名.bin? ./Objects/输出名.axf 这里可以简化一下 G:\keil_5\ARM\ARMCC\bin\fromelf.exe --bin -o? ./bin/@L.bin? ./Objects/@L.axf @L的意思是自己再keil中设置的输出文件名。 可以再简化一下 $KARM\ARMCC\bin\fromelf.exe --bin -o? ./bin/@L.bin? ./Objects/@L.axf $K的意思是MDK的安装路径。 这里也可以写成 $J\..\bin\fromelf.exe --bin -o? ./bin/@L.bin? ./Objects/@L.axf $J是编译器的绝对地址,通常是MDK安装路径\ARM\ARMCC\include 再简单一点可以写成 $J\..\bin\fromelf.exe --bin -o? ./bin/@L.bin #L #L就是.axf完整路径和文件名 再简单一点可以写成 $J\..\bin\fromelf.exe --bin -o? $L@L.bin #L $L本工程的输出路径。在Output->create Executable中。 详细可以看windows bat脚本学习一(基础指令)_qq_34981的博客-CSDN博客_bat设置环境变量文章的第7小节。 注:这里有时候在生成bin文件的时候会生成一个.bin的文件夹。可以将参数bin修改为bincombined来解决。这个生成文件夹的原因目前只知道跟修改了ROM的起始地址有关,具体的原因还未知。 2.armar.exe该文件主要是从.a和lib文件中提取信息。 命令格式:armar options archive [file_list] ?-r???????? 在 <file_list> 插入文件, 替换掉已经存在的同名成员. ?-n???????? 不要向object文件中添加符号表. ?比如要打印一个.a或lib的相关信息,可以调用如下指令armar.exe -zt 路径\文件.a。 结果如图 3.armasm.exe命令格式:armasm [options] sourcefile --list 生成列表文件 -o outputfile 最终输出文件名 --depend 保留make源文件的依赖 --errors 把标准错误判断放入errorsfile -I dir 添加源文件的搜索目录 --pd --predefine 预执行SET{L,A,S}指令 --maxcache <n> 最大闪存空间(默认 8MB) --no_esc 忽略C文件 --no_warn 关闭警告信息 -g 输出调试表 --apcs 编译预定义去匹配已选择的过程调度回调 --checkreglist 警告关于输出指令LDM/STM寄存器列表 --li ARM小段模式、 --bi ARM大端模式 -M 写源文件依赖列表到stdout --MD 写源文件依赖列表到inputfile.d文件 --keep 保持本地列表在目标文件的同步列表中 --regname none 不预定义寄存器名 --split_ldm 错误长LDM/STM --unsafe 下载明确的错误到警告表 --via <file> 从file中读取更多的参数 --cpu <target-cpu> 设置目标ARM内核类型 --cpu list 输出所有可选择的CPU列表 --fpu <target-arch> 设置目标FP体系结构版本 --fpu_list 输出所有可选择的FP体系结构 --thumb 以thumb指令集编译 --arm 以ARM指令集编译 4.armcc.exe链接编译器 命令格式:armcc [options] file1 file2......file n --arm 创建ARM代码 --thumb 创建Thumb代码 --c90 切换到C模式(默认是.c文件) --cpp 切换到C++模式(默认是.cpp文件) -00 最小优先级 -01 受限的调试级别优化 -02 高优化 -03 最大优化 -Ospace 对代码大小进行优化 -Otime 优化最大优化级别的运行时间 --cpu <cpu> 选择CPU --cpu list 输出所有被选中的CPU列表 -o <file> 最终输出文件的名字 -c 只进行编译,不链接 -asm 输出汇编以及obj文件 -s 只输出汇编文件 --interleave 交叉反汇编(同--asm 或 -s共同使用) -E 仅仅预处理C代码 -D <symbol> 定义<symbol>符号并且传入编译过程 -g 为高级别调试创建表 -I <directory> 在编译的时候包含<directory>作为头文件搜索目录 5.armlink.exeARM链接工具 命令格式:armlink option-list input-file-list ? option-list 不区分大小写的选项列表 input-file-file 输入对象或者库文件列表 --output file 指定输出文件名 --via file 从文件中读更多的参数 --partial 创建一个被分数链接的对象文件 --scatter file 分散加载文件 --ro-base n 设置执行地址空间域,包含RO只读数据段 --rw-base n 设置执行地址空间域,包含RW/ZI段 --bestdebug 添加调试信息为image 提供调试视图 --datacompressor off 不要压缩RW数据段 --no_debug 不要添加调试信息 --entry 指定输入段与输入点 --libpath 指定系统库文件路径 --userlibpath 指定用户库文件路径 --no_locals 不要添加局部标号到image的标号列表 --no_remove 不要移除image的未使用段 --callgraph 创建一个函数静态调用图 --info topic 列出镜像信息 ?--map 显示镜像内存映射 --symbols 列出惊险符号 --xref 列出输入的段之间所有的交叉引用,最终输出会放在.map 文件里面 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:38:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |