RISC-V riscv64-unknown-elf 编译C文件

本文在Ubuntu x86_64环境下,介绍了如何使用riscv64-unknown-elf-gcc进行RISC-V指令集的32位平台交叉编译。内容涵盖了elf、bin和hex文件格式的差异及相互转换,强调了elf文件在转化过程中的重要角色。
摘要由CSDN通过智能技术生成

riscv64-unknown-elf 为 RISC-V指令集的交叉编译工具

以下环境在Liunx ubuntu x86_64 环境下进行,下面示例以生成32位文件为目标来操作使用。

  • screen  

// watch IO infos  
screen /dev/ttyACM0 115200
  • compile

riscv64-unknown-elf-gcc, RISC-V platform's riscv tool-chain.  

// complie 64-bit file
riscv64-unknown-elf-gcc -o file file.c
// complie 32-bit file
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -o file file.c 
  • process-file (32-bit platform)

 

// pretreatment
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -E -o file.i file.c 
// compile
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -S -o file.s/file.S file.i 
// assembler
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -c -o file.o file.s/file.S
// link
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -o file file.o 
 
// get ELF-file
riscv64-unknown-elf-gcc -march=rv32imac -mabi=ilp32 -o file file.c
// ELF to bin
riscv32-unknown-elf-objcopy -O binary file file.bin 
// ELF to HEX
riscv64-unknown-elf-objcopy -O ihex file file.hex

// disassembler ELF to get ASM
riscv64-unknown-elf-objdump -d file.elf > file.asm
  • elf文件主要是X86Linux下常用的一种目标文件
  • bin文件就是直接的二进制文件,内部没有地址标记
  • hex文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。  

总结:可以由ELF文件转化为其它两种文件,HEX也可以直接转换为BIN文件,但是BIN要转化为HEX文件必须要给定一个基地址。而HEX和BIN不能转化为elf文件,因为ELF的信息量要大。

  • upload

upload --hex file.hex --jlink JLinkExe

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简单同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值