您尚未登录。

楼主 # 2021-06-01 20:39:36

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 683
积分: 653.5

用汇编学习risc-v指令集,并在线仿真,点亮led

首先在线仿真地址:http://tice.sea.eseo.fr/riscv/,选择这个主要是因为比较好玩直观。

Screenshot203621.png
这个模拟器是支持gnu的编译器的,所以先安装编译器:

sudo apt install gcc-riscv64-unknown-elf

模拟器gpio寄存器:
Screenshot203803.png

点灯程序:

/*
 * Configure the GPIO with:
 * - Byte 0: 8 LEDs
 * - Byte 1: 8 toggle switches
 */

    .text

    .global __reset

__reset:
    j start

start:
    li x1, 0xd0000000
    /* Set first GPIO byte as outputs */
    sb x0, (x1)

    li x3, 0xff
    sb x3, 0x10(x1)
    j .

    .section gpio_config, "a"

leds: .byte 3, 3, 3, 3, 3, 3, 3, 3
sws:  .byte 2, 2, 2, 2, 2, 2, 2, 2

编译文件:

riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -c -o led.o led.s

连接成elf文件:

riscv64-unknown-elf-gcc -march=rv32i -mabi=ilp32 -nostdlib -T rv32e.ld -o led.elf led.o

连接文件rv32e.ld

ENTRY(__reset)

MEM_SIZE    = 4K;
STACK_SIZE  = 512;
BITMAP_SIZE = 1K;

SECTIONS {
    . = 0x0;

    .text : {
        *(vectors)
        *(.text)
        __text_end = .;
    }

    .data   : { *(.data) }
    .rodata : { *(.rodata) }

    __global_pointer = ALIGN(4);

    .bss ALIGN(4) : {
        __bss_start = .;
        *(.bss COMMON)
        __bss_end = ALIGN(4);
    }

    . = MEM_SIZE - STACK_SIZE - BITMAP_SIZE;

    .stack ALIGN(4) : {
        __stack_start = .;
        . += STACK_SIZE;
        __stack_pointer = .;
    }

    .bitmap ALIGN(4) : {
        __bitmap_start = .;
        *(bitmap)
    }

    __bitmap_end = __bitmap_start + BITMAP_SIZE;
}

生成intel格式hex:

riscv64-unknown-elf-objcopy -O ihex led.elf led.hex

最后附上在线仿真器的文档说明:http://tice.sea.eseo.fr/riscv/doc/

离线

#1 2021-06-02 16:50:36

cube
会员
注册时间: 2021-03-11
已发帖子: 52
积分: 28

Re: 用汇编学习risc-v指令集,并在线仿真,点亮led

太有趣了, 可以用 html 单步调试, 挺直观的.

离线

#2 2021-06-05 18:28:16

aozima
会员
所在地: 深圳
注册时间: 2019-05-25
已发帖子: 219
积分: 198.5
个人网站

Re: 用汇编学习risc-v指令集,并在线仿真,点亮led

赞! 这个用来学习原理非常好

离线

#3 2021-06-05 20:06:46

拉轰的脚踏车
会员
注册时间: 2020-03-20
已发帖子: 240
积分: 196

Re: 用汇编学习risc-v指令集,并在线仿真,点亮led

牛逼, 在线修改汇编代码, 在线单步调试, 刚试了一下, 太爽了.

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn