9

My progress on real RISC-V hardware

 2 years ago
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.
My progress on real RISC-V hardware

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()

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK