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