My progress on real RISC-V hardware
source link: https://discuss.haiku-os.org/t/my-progress-on-real-risc-v-hardware/10963/40
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
After fixing Sifive UART driver I found that program stops at setting MMU page table. The same code is working fine on QEMU (I made setting SATP register earlier and added additional identity mappings so UART is accessible at physical address).
Testing is currently quite annoying. I need to shutdown development PC, unplug power cable from it, plug it to RISC-V and turn it on. When I want to change code, I need to plug power cable back to development PC. Power supply is ordered at 2021.07.01 at Amazon, but still not delivered. Amazon says that it should come until Friday (2021.07.09).
UART:
kind: sifive
regs: 0x10010000, 0x1000
irq: 39
clock: 0
kernel:
text: 0xffffffc002010000, 0x17e000
data: 0xffffffc00218e000, 0x59000
entry: 0xffffffc0020935ae
Kernel stack at 0xffffffc0025dc000
System provided memory map:
phys: 0x80000000, virt: 0x80000000, size: 0x40000, bootServicesData, attrs: 0x8
phys: 0x80040000, virt: 0x80040000, size: 0x7eb6000, conventionalMemory, attrs: 0x8
phys: 0x87ef6000, virt: 0x87ef6000, size: 0x14000, ACPIReclaimMemory, attrs: 0x8
phys: 0x87f0a000, virt: 0x87f0a000, size: 0x741cc000, conventionalMemory, attrs: 0x8
phys: 0xfc0d6000, virt: 0xfc0d6000, size: 0x25e9000, loaderData, attrs: 0x8
phys: 0xfe6bf000, virt: 0xfe6bf000, size: 0x58000, loaderCode, attrs: 0x8
phys: 0xfe717000, virt: 0xfe717000, size: 0x7000, reservedMemoryType, attrs: 0x8
phys: 0xfe71e000, virt: 0xfe71e000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe71f000, virt: 0xfe71f000, size: 0x1000, runtimeServicesData, attrs: 0x8000000000000008
phys: 0xfe720000, virt: 0xfe720000, size: 0x2000, bootServicesData, attrs: 0x8
phys: 0xfe722000, virt: 0xfe722000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe723000, virt: 0xfe723000, size: 0x3000, runtimeServicesData, attrs: 0x8000000000000008
phys: 0xfe726000, virt: 0xfe726000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe727000, virt: 0xfe727000, size: 0x4000, runtimeServicesData, attrs: 0x8000000000000008
phys: 0xfe72b000, virt: 0xfe72b000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe72c000, virt: 0xfe72c000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe72d000, virt: 0xfe72d000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe72e000, virt: 0xfe72e000, size: 0x2000, bootServicesData, attrs: 0x8
phys: 0xfe730000, virt: 0xfe730000, size: 0x2000, reservedMemoryType, attrs: 0x8
phys: 0xfe732000, virt: 0xfe732000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe733000, virt: 0xfe733000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe734000, virt: 0xfe734000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe735000, virt: 0xfe735000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe736000, virt: 0xfe736000, size: 0x1000, bootServicesData, attrs: 0x8
phys: 0xfe737000, virt: 0xfe737000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe738000, virt: 0xfe738000, size: 0x2000, bootServicesData, attrs: 0x8
phys: 0xfe73a000, virt: 0xfe73a000, size: 0x1000, reservedMemoryType, attrs: 0x8
phys: 0xfe73b000, virt: 0xfe73b000, size: 0x2000, bootServicesData, attrs: 0x8
phys: 0xfe73d000, virt: 0xfe73d000, size: 0x1826000, loaderData, attrs: 0x8
phys: 0xfff63000, virt: 0xfff63000, size: 0x1000, runtimeServicesCode, attrs: 0x8000000000000008
phys: 0xfff64000, virt: 0xfff64000, size: 0x9c000, loaderData, attrs: 0x8
phys: 0x100000000, virt: 0x100000000, size: 0x380000000, bootServicesData, attrs: 0x8
physMemRange: 0x80040000, 0x7ffc0000
MapRange(0xffffffff80040000 - 0xffffffffffffffff, 0x80040000 - 0xffffffff, 0x7ffc0000)
Boot loader:
MapRange(0xfc0d6000 - 0xfe6befff, 0xfc0d6000 - 0xfe6befff, 0x25e9000)
MapRange(0xfe6bf000 - 0xfe716fff, 0xfe6bf000 - 0xfe716fff, 0x58000)
MapRange(0xfe73d000 - 0xfff62fff, 0xfe73d000 - 0xfff62fff, 0x1826000)
MapRange(0xfff64000 - 0xffffffff, 0xfff64000 - 0xffffffff, 0x9c000)
EFI runtime services:
MapRange(0xfe71f000 - 0xfe71ffff, 0xfe71f000 - 0xfe71ffff, 0x1000)
MapRange(0xfe723000 - 0xfe725fff, 0xfe723000 - 0xfe725fff, 0x3000)
MapRange(0xfe727000 - 0xfe72afff, 0xfe727000 - 0xfe72afff, 0x4000)
MapRange(0xfff63000 - 0xfff63fff, 0xfff63000 - 0xfff63fff, 0x1000)
Regions:
MapRange(0xfc6bf000 - 0xfc6befff, 0x0 - 0xffffffffffffffff, 0x0)
MapRange(0xffffffc0025dc000 - 0xffffffc0025e0fff, 0xfc0d6000 - 0xfc0dafff, 0x5000)
MapRange(0xffffffc0025cc000 - 0xffffffc0025dbfff, 0xfc0db000 - 0xfc0eafff, 0x10000)
MapRange(0xffffffc0025c8000 - 0xffffffc0025cbfff, 0xfc0eb000 - 0xfc0eefff, 0x4000)
MapRange(0xffffffc0025c1000 - 0xffffffc0025c7fff, 0xfc0ef000 - 0xfc0f5fff, 0x7000)
MapRange(0xffffffc0025b4000 - 0xffffffc0025c0fff, 0xfc0f6000 - 0xfc102fff, 0xd000)
MapRange(0xffffffc0025a4000 - 0xffffffc0025b3fff, 0xfc103000 - 0xfc112fff, 0x10000)
MapRange(0xffffffc002593000 - 0xffffffc0025a3fff, 0xfc113000 - 0xfc123fff, 0x11000)
MapRange(0xffffffc00253b000 - 0xffffffc002592fff, 0xfc124000 - 0xfc17bfff, 0x58000)
MapRange(0xffffffc002532000 - 0xffffffc00253afff, 0xfc17c000 - 0xfc184fff, 0x9000)
MapRange(0xffffffc002522000 - 0xffffffc002531fff, 0xfc185000 - 0xfc194fff, 0x10000)
MapRange(0xffffffc00251c000 - 0xffffffc002521fff, 0xfc195000 - 0xfc19afff, 0x6000)
MapRange(0xffffffc0024fc000 - 0xffffffc00251bfff, 0xfc19b000 - 0xfc1bafff, 0x20000)
MapRange(0xffffffc0024ec000 - 0xffffffc0024fbfff, 0xfc1bb000 - 0xfc1cafff, 0x10000)
MapRange(0xffffffc0024c7000 - 0xffffffc0024ebfff, 0xfc1cb000 - 0xfc1effff, 0x25000)
MapRange(0xffffffc0024bf000 - 0xffffffc0024c6fff, 0xfc1f0000 - 0xfc1f7fff, 0x8000)
MapRange(0xffffffc0024a5000 - 0xffffffc0024befff, 0xfc1f8000 - 0xfc211fff, 0x1a000)
MapRange(0xffffffc00249f000 - 0xffffffc0024a4fff, 0xfc212000 - 0xfc217fff, 0x6000)
MapRange(0xffffffc00248f000 - 0xffffffc00249efff, 0xfc218000 - 0xfc227fff, 0x10000)
MapRange(0xffffffc002489000 - 0xffffffc00248efff, 0xfc228000 - 0xfc22dfff, 0x6000)
MapRange(0xffffffc002473000 - 0xffffffc002488fff, 0xfc22e000 - 0xfc243fff, 0x16000)
MapRange(0xffffffc00246e000 - 0xffffffc002472fff, 0xfc244000 - 0xfc248fff, 0x5000)
MapRange(0xffffffc00246b000 - 0xffffffc00246dfff, 0xfc249000 - 0xfc24bfff, 0x3000)
MapRange(0xffffffc002466000 - 0xffffffc00246afff, 0xfc24c000 - 0xfc250fff, 0x5000)
MapRange(0xffffffc002462000 - 0xffffffc002465fff, 0xfc251000 - 0xfc254fff, 0x4000)
MapRange(0xffffffc002452000 - 0xffffffc002461fff, 0xfc255000 - 0xfc264fff, 0x10000)
MapRange(0xffffffc00244c000 - 0xffffffc002451fff, 0xfc265000 - 0xfc26afff, 0x6000)
MapRange(0xffffffc002436000 - 0xffffffc00244bfff, 0xfc26b000 - 0xfc280fff, 0x16000)
MapRange(0xffffffc002427000 - 0xffffffc002435fff, 0xfc281000 - 0xfc28ffff, 0xf000)
MapRange(0xffffffc002417000 - 0xffffffc002426fff, 0xfc290000 - 0xfc29ffff, 0x10000)
MapRange(0xffffffc002403000 - 0xffffffc002416fff, 0xfc2a0000 - 0xfc2b3fff, 0x14000)
MapRange(0xffffffc0023ff000 - 0xffffffc002402fff, 0xfc2b4000 - 0xfc2b7fff, 0x4000)
MapRange(0xffffffc0023f9000 - 0xffffffc0023fefff, 0xfc2b8000 - 0xfc2bdfff, 0x6000)
MapRange(0xffffffc0023f4000 - 0xffffffc0023f8fff, 0xfc2be000 - 0xfc2c2fff, 0x5000)
MapRange(0xffffffc0023f1000 - 0xffffffc0023f3fff, 0xfc2c3000 - 0xfc2c5fff, 0x3000)
MapRange(0xffffffc0023ed000 - 0xffffffc0023f0fff, 0xfc2c6000 - 0xfc2c9fff, 0x4000)
MapRange(0xffffffc0023e4000 - 0xffffffc0023ecfff, 0xfc2ca000 - 0xfc2d2fff, 0x9000)
MapRange(0xffffffc0023d8000 - 0xffffffc0023e3fff, 0xfc2d3000 - 0xfc2defff, 0xc000)
MapRange(0xffffffc0023bc000 - 0xffffffc0023d7ce9, 0xfc2df000 - 0xfc2face9, 0x1bcea)
MapRange(0xffffffc0023ae000 - 0xffffffc0023bb1ff, 0xfc2fb000 - 0xfc3081ff, 0xd200)
MapRange(0xffffffc002350000 - 0xffffffc0023adfff, 0xfc309000 - 0xfc366fff, 0x5e000)
MapRange(0xffffffc002340000 - 0xffffffc00234ffff, 0xfc367000 - 0xfc376fff, 0x10000)
MapRange(0xffffffc00232c000 - 0xffffffc00233ffff, 0xfc377000 - 0xfc38afff, 0x14000)
MapRange(0xffffffc00231f000 - 0xffffffc00232bfff, 0xfc38b000 - 0xfc397fff, 0xd000)
MapRange(0xffffffc00231b000 - 0xffffffc00231efff, 0xfc398000 - 0xfc39bfff, 0x4000)
MapRange(0xffffffc002317000 - 0xffffffc00231afff, 0xfc39c000 - 0xfc39ffff, 0x4000)
MapRange(0xffffffc002314000 - 0xffffffc002316fff, 0xfc3a0000 - 0xfc3a2fff, 0x3000)
MapRange(0xffffffc002311000 - 0xffffffc002313fff, 0xfc3a3000 - 0xfc3a5fff, 0x3000)
MapRange(0xffffffc00230f000 - 0xffffffc002310fff, 0xfc3a6000 - 0xfc3a7fff, 0x2000)
MapRange(0xffffffc0022ff000 - 0xffffffc00230efff, 0xfc3a8000 - 0xfc3b7fff, 0x10000)
MapRange(0xffffffc0022f1000 - 0xffffffc0022fefff, 0xfc3b8000 - 0xfc3c5fff, 0xe000)
MapRange(0xffffffc0022ee000 - 0xffffffc0022f0fff, 0xfc3c6000 - 0xfc3c8fff, 0x3000)
MapRange(0xffffffc0022ec000 - 0xffffffc0022edfff, 0xfc3c9000 - 0xfc3cafff, 0x2000)
MapRange(0xffffffc0022e5000 - 0xffffffc0022ebfff, 0xfc3cb000 - 0xfc3d1fff, 0x7000)
MapRange(0xffffffc0022cf000 - 0xffffffc0022e4fff, 0xfc3d2000 - 0xfc3e7fff, 0x16000)
MapRange(0xffffffc0022bf000 - 0xffffffc0022cefff, 0xfc3e8000 - 0xfc3f7fff, 0x10000)
MapRange(0xffffffc0022b2000 - 0xffffffc0022befff, 0xfc3f8000 - 0xfc404fff, 0xd000)
MapRange(0xffffffc0022b0000 - 0xffffffc0022b1fff, 0xfc405000 - 0xfc406fff, 0x2000)
MapRange(0xffffffc0022ae000 - 0xffffffc0022affff, 0xfc407000 - 0xfc408fff, 0x2000)
MapRange(0xffffffc0022a5000 - 0xffffffc0022ad56b, 0xfc409000 - 0xfc41156b, 0x856c)
MapRange(0xffffffc00226f000 - 0xffffffc0022a4fff, 0xfc412000 - 0xfc447fff, 0x36000)
MapRange(0xffffffc00226b000 - 0xffffffc00226efff, 0xfc448000 - 0xfc44bfff, 0x4000)
MapRange(0xffffffc002261000 - 0xffffffc00226afff, 0xfc44c000 - 0xfc455fff, 0xa000)
MapRange(0xffffffc002255000 - 0xffffffc002260fff, 0xfc456000 - 0xfc461fff, 0xc000)
MapRange(0xffffffc002213000 - 0xffffffc0022541ab, 0xfc462000 - 0xfc4a31ab, 0x411ac)
MapRange(0xffffffc0021e7000 - 0xffffffc00221255f, 0xfc4a4000 - 0xfc4cf55f, 0x2b560)
MapRange(0xffffffc002010000 - 0xffffffc0021e6fff, 0xfc4d0000 - 0xfc6a6fff, 0x1d7000)
MapRange(0xffffffc002000000 - 0xffffffc00200ffff, 0xfc6a7000 - 0xfc6b6fff, 0x10000)
MapRange(0xffffffc0025e1000 - 0xffffffc0025e4fff, 0xfc6b7000 - 0xfc6bafff, 0x4000)
MapRange(0xffffffc0025e5000 - 0xffffffc0025e8fff, 0xfc6bb000 - 0xfc6befff, 0x4000)
Devices:
MapRange(0xffffffc0025e9000 - 0xffffffc0025f8fff, 0x2000000 - 0x200ffff, 0x10000)
MapRange(0xffffffc0025f9000 - 0xffffffc0065f8fff, 0xc000000 - 0xfffffff, 0x4000000)
MapRange(0x10010000 - 0x10010fff, 0x10010000 - 0x10010fff, 0x1000)
MapRange(0xffffffc0065f9000 - 0xffffffc0065f9fff, 0x10010000 - 0x10010fff, 0x1000)
SATP: 0x80000000000fc0d5
Calling ExitBootServices. So long, EFI!
Switched to legacy serial output
[PRE] SetSatp()
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK