Actions
Getting Started » History » Revision 1
Revision 1/22
| Next »
Sergey Smolov, 05/16/2018 04:32 PM
Getting Started¶
- Table of contents
- Getting Started
Aarch64¶
It is supposed that the following tools are successfully installed in your system:
- Toolchain for Aarch64 assembler programs compilation, linking, etc. (can be downloaded from Linaro website or just below, installation instruction is here).
- First of all, let's write a simple Aarch64 program (it is called
sample.s
and is attached below) that does nothing but puts 0x10 value to X0 register and then halts. Here it is:.text .globl _start bl _start _start: movz x1, #0x10, LSL #0 hlt #57005
- To compile the Aarch64 assembler program called
sample.s
, do the following:aarch64-linux-gnu-as sample.s -o sample.o aarch64-linux-gnu-ld sample.o -o sample.elf aarch64-linux-gnu-objcopy -O binary sample.elf sample.bin
- Finally, run QEMU4V emulator with enabled option of microprocessor execution trace logging:
qemu-system-aarch64 -M virt -cpu cortex-a57 -bios sample.bin -d nochain,in_asm -singlestep -nographic -trace-log -D log-file.txt
- Wait for a while, then stop QEMU by hands (NOTE: neither Ctrl-C nor Ctrl-Z works, use 'kill <process-id>' or 'killall qemu-system*', for example). The following
log-file.txt
trace file should be generated:0 clk IT (0) 0000000000000000 94000001 A svc_ns : bl #+0x4 (addr 0x4) 1 clk IT (1) 0000000000000004 d2800201 A svc_ns : movz x1, #0x10, LSL #0 2 clk IT (2) 0000000000000008 d45bd5a0 A svc_ns : hlt #57005
RISC-V¶
It is supposed that the following tools are successfully installed in your system:
- Toolchain for RISC-V assembler programs compilation, linking, etc. (the source code and the installation guide are available here).
- First of all, let's write a simple RISC-V program (it is called
sample.s
and is attached below) that does nothing but puts 0x18 value tot1
register and puts 0x21 value tot2
register. Here it is:.text .globl _start _start: addi t1, zero, 0x18 addi t2, zero, 0x21
- To compile the RISC-V assembler program called
sample.s
, do the following:aarch64-linux-gnu-as sample.s -o sample.o aarch64-linux-gnu-ld sample.o -Ttext 0x1000 -o sample.elf
- Finally, run QEMU4V emulator with enabled option of microprocessor execution trace logging (0x1000 value was used by linker because of QEMU-related features):
qemu-system-riscv64 -M spike -cpu any -d unimp,nochain,in_asm -nographic -singlestep -trace-log -kernel sample.elf
- Wait for a while, then stop QEMU by hands (NOTE: neither Ctrl-C nor Ctrl-Z works, use 'kill <process-id>' or 'killall qemu-system*', for example). The following trace should be generated:
0 clk 0 IT (0) 0000000000001000 01800313 A svc_ns : li t1,24 1 clk R t1 0000000000000018 1 clk 0 IT (1) 0000000000001004 02100393 A svc_ns : li t2,33 2 clk R t2 0000000000000021 2 clk 0 IT (2) 0000000000001008 00000000 A svc_ns : unimp 3 clk 0 IT (3) 0000000000001010 00000000 A svc_ns : unimp
Updated by Sergey Smolov over 6 years ago · 22 revisions