Is the source code for the boot rom for the VisionFive 2 available?

Your way is far simpler, so many less steps.

My next task is to generate some assembly:

$ /usr/bin/riscv64-unknown-elf-objdump -D -b binary -m riscv --adjust-vma=0x2a000000  --disassembler-options="numeric,no-aliases" rom_good_endian.bin | head -105

rom_good_endian.bin:     file format binary


Disassembly of section .data:

000000002a000000 <.data>:
    2a000000:   00000297                auipc   x5,0x0
    2a000004:   12628293                addi    x5,x5,294 # 0x2a000126
    2a000008:   30529073                csrrw   x0,mtvec,x5
    2a00000c:   30005073                csrrwi  x0,mstatus,0
    2a000010:   30405073                csrrwi  x0,mie,0
    2a000014:   4081                    c.li    x1,0
    2a000016:   4101                    c.li    x2,0
    2a000018:   4181                    c.li    x3,0
    2a00001a:   4201                    c.li    x4,0
    2a00001c:   4281                    c.li    x5,0
    2a00001e:   4301                    c.li    x6,0
    2a000020:   4381                    c.li    x7,0
    2a000022:   4401                    c.li    x8,0
    2a000024:   4481                    c.li    x9,0
    2a000026:   4501                    c.li    x10,0
    2a000028:   4581                    c.li    x11,0
    2a00002a:   4601                    c.li    x12,0
    2a00002c:   4681                    c.li    x13,0
    2a00002e:   4701                    c.li    x14,0
    2a000030:   4781                    c.li    x15,0
    2a000032:   4801                    c.li    x16,0
    2a000034:   4881                    c.li    x17,0
    2a000036:   4901                    c.li    x18,0
    2a000038:   4981                    c.li    x19,0
    2a00003a:   4a01                    c.li    x20,0
    2a00003c:   4a81                    c.li    x21,0
    2a00003e:   4b01                    c.li    x22,0
    2a000040:   4b81                    c.li    x23,0
    2a000042:   4c01                    c.li    x24,0
    2a000044:   4c81                    c.li    x25,0
    2a000046:   4d01                    c.li    x26,0
    2a000048:   4d81                    c.li    x27,0
    2a00004a:   4e01                    c.li    x28,0
    2a00004c:   4e81                    c.li    x29,0
    2a00004e:   4f01                    c.li    x30,0
    2a000050:   4f81                    c.li    x31,0
    2a000052:   d7100197                auipc   x3,0xd7100
    2a000056:   0ae18193                addi    x3,x3,174 # 0x1100100
    2a00005a:   00000297                auipc   x5,0x0
    2a00005e:   05a28293                addi    x5,x5,90 # 0x2a0000b4
    2a000062:   30529073                csrrw   x0,mtvec,x5
    2a000066:   00100293                addi    x5,x0,1
    2a00006a:   04028563                beq     x5,x0,0x2a0000b4
    2a00006e:   7c145073                csrrwi  x0,0x7c1,8
    2a000072:   f14022f3                csrrs   x5,mhartid,x0
    2a000076:   02b2                    c.slli  x5,0xc
    2a000078:   d7102117                auipc   x2,0xd7102
    2a00007c:   b8810113                addi    x2,x2,-1144 # 0x1101c00
    2a000080:   40510133                sub     x2,x2,x5
    2a000084:   4581                    c.li    x11,0
    2a000086:   f1402573                csrrs   x10,mhartid,x0
    2a00008a:   04b51d63                bne     x10,x11,0x2a0000e4
    2a00008e:   01100337                lui     x6,0x1100
    2a000092:   011023b7                lui     x7,0x1102
    2a000096:   00033023                .4byte  0x33023
    2a00009a:   0321                    c.addi  x6,8 # 0x1100008
    2a00009c:   fe734de3                blt     x6,x7,0x2a000096
    2a0000a0:   f0018293                addi    x5,x3,-256
    2a0000a4:   f0018313                addi    x6,x3,-256
    2a0000a8:   00628e63                beq     x5,x6,0x2a0000c4
    2a0000ac:   f2018393                addi    x7,x3,-224
    2a0000b0:   00737a63                bgeu    x6,x7,0x2a0000c4
    2a0000b4:   0002be03                .4byte  0x2be03
    2a0000b8:   01c33023                .4byte  0x1c33023
    2a0000bc:   02a1                    c.addi  x5,8
    2a0000be:   0321                    c.addi  x6,8
    2a0000c0:   fe736ae3                bltu    x6,x7,0x2a0000b4
    2a0000c4:   f2018313                addi    x6,x3,-224
    2a0000c8:   d7101397                auipc   x7,0xd7101
    2a0000cc:   a9838393                addi    x7,x7,-1384 # 0x1100b60
    2a0000d0:   00737763                bgeu    x6,x7,0x2a0000de
    2a0000d4:   00033023                .4byte  0x33023
    2a0000d8:   0321                    c.addi  x6,8
    2a0000da:   fe734de3                blt     x6,x7,0x2a0000d4
    2a0000de:   61d000ef                jal     x1,0x2a000efa
    2a0000e2:   a81d                    c.j     0x2a000118
    2a0000e4:   4621                    c.li    x12,8
    2a0000e6:   30461073                csrrw   x0,mie,x12
    2a0000ea:   10500073                wfi
    2a0000ee:   34402673                csrrs   x12,mip,x0
    2a0000f2:   8a21                    c.andi  x12,8
    2a0000f4:   da7d                    c.beqz  x12,0x2a0000ea
    2a0000f6:   020004b7                lui     x9,0x2000
    2a0000fa:   f1402573                csrrs   x10,mhartid,x0
    2a0000fe:   00251913                slli    x18,x10,0x2
    2a000102:   9926                    c.add   x18,x9
    2a000104:   00092023                sw      x0,0(x18)
    2a000108:   0ff0000f                fence   iorw,iorw
    2a00010c:   34405073                csrrwi  x0,mip,0
    2a000110:   4615                    c.li    x12,5
    2a000112:   00c56363                bltu    x10,x12,0x2a000118
    2a000116:   bfd1                    c.j     0x2a0000ea
    2a000118:   080002b7                lui     x5,0x8000
    2a00011c:   f1402573                csrrs   x10,mhartid,x0
    2a000120:   0001                    c.addi  x0,0
    2a000122:   4581                    c.li    x11,0
    2a000124:   9282                    c.jalr  x5
    2a000126:   a001                    c.j     0x2a000126

But then I need to translate that with reference to the hardware memory addresses into more generic algorithms, which will definitely force me to learn some really low level RISC-V assembly.

3 Likes