lowRISC / lowRISC/lowrisc-chip

Defining the boot process for bare metal?

Open
#86 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
SystemVerilog
Stars
601
Forks
147
PR merge metrics
No merged PRs in 30d

Description

Per the 1.91 Privileged Specification, I found that the behavior of the PC on reset is to be set to "an implementation-defined" default value (see section 3.3). What does this mean for the lowRISC chip?

I checked out the latest source code and built the Hello UART example. Closer inspection of the ELF header revealed the entry point to be 0x40000000 (supported by the linker script for release 0.5).

I went back an earlier release (0.2) and the entry point of the same hello baremetal program was 0x100 (supported by the linker script).

  • What is the PC set to on reset for the 0.2 and 0.5 releases? Has it changed over time? Is it planned to change again?
  • Is there a fixed ROM loader that jumps to these payload entry points (e.g. the ELF programs)? If so, where is the source for this boot ROM?
  • Where can I find the latest system memory map for release 0.5? Is this still accurate from 0.2?
  • What is the purpose of BRAM when we have DDR DRAM? In a production system, would BRAM actually be something like Flash since the reset vector is likely somewhere in low memory?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with bare_metal/examples/hello.c, bare_metal/driver/test.ld, and the earlier driver/test.ld, then compare their entry points with the cited privileged specification. Trace the boot and memory-map sources for releases 0.2 and 0.5, including any reset or loader implementation mentioned by the repository. Done means the release-specific reset PCs, boot-ROM location, current memory map, and BRAM role are documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
documentation, embedded-iot, operating-systems
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.