Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| risc-v [2022/02/28 10:29] – [kernel-meta/] rpjday | risc-v [2022/03/01 14:09] (current) – [meta-riscv layer [abbreviated]] rpjday | ||
|---|---|---|---|
| Line 5: | Line 5: | ||
| = Links | = Links | ||
| - | === OE-Core layer | + | == OE-Core layer |
| * [[https:// | * [[https:// | ||
| Line 27: | Line 27: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| - | === meta-riscv layer [abbreviated] | + | == meta-riscv layer [abbreviated, unnecessary for QEMU] |
| * [[https:// | * [[https:// | ||
| Line 37: | Line 41: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | === GitHub riscv-software-src | + | == GitHub riscv-software-src |
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | === Resources | + | == Resources |
| * [[https:// | * [[https:// | ||
| Line 54: | Line 57: | ||
| = Building for qemuriscv64 | = Building for qemuriscv64 | ||
| - | === qemuriscv64 | + | == qemuriscv64 |
| Note that, for the QEMU build, there is no need for the '' | Note that, for the QEMU build, there is no need for the '' | ||
| Line 63: | Line 66: | ||
| </ | </ | ||
| - | === qemuriscv.sh | + | == qemuriscv.sh |
| To invoke your own script, remove '' | To invoke your own script, remove '' | ||
| Line 88: | Line 91: | ||
| </ | </ | ||
| - | Why create a kernel containing-payload if you don't use it? | + | Why create a kernel containing-payload if you don't use it? Also, appears that the serial console is '' |
| - | === tmp/ | + | == tmp/ |
| Note which generated artifacts are used in the call to QEMU: | Note which generated artifacts are used in the call to QEMU: | ||
| Line 135: | Line 138: | ||
| = The RISC-V kernel | = The RISC-V kernel | ||
| - | === linux-yocto_5.15.bb | + | == linux-yocto_5.15.bb |
| - | Carefully selected snippets: | + | Snippets: |
| < | < | ||
| Line 145: | Line 148: | ||
| SRC_URI = " | SRC_URI = " | ||
| | | ||
| + | |||
| + | # Functionality flags | ||
| + | KERNEL_EXTRA_FEATURES ?= " | ||
| + | KERNEL_FEATURES: | ||
| + | KERNEL_FEATURES: | ||
| </ | </ | ||
| - | === Generated image/boot/ artifacts | + | == Generated |
| < | < | ||
| Line 157: | Line 165: | ||
| </ | </ | ||
| - | === Selected snippets from kernel-meta/ | + | == Selected snippets from kernel-meta/ |
| - | ==== arch/riscv/ | + | === arch/riscv/ |
| - | ===== riscv.scc | + | ==== riscv.scc |
| < | < | ||
| Line 170: | Line 178: | ||
| </ | </ | ||
| - | ===== riscv.cfg | + | ==== riscv.cfg |
| < | < | ||
| Line 184: | Line 192: | ||
| </ | </ | ||
| - | ==== bsp/ | + | === bsp/ |
| - | ===== qemuriscv64.cfg | + | ==== qemuriscv64.cfg |
| < | < | ||
| Line 227: | Line 235: | ||
| </ | </ | ||
| - | ===== qemuriscv64.scc | + | ==== qemuriscv64.scc |
| < | < | ||
| Line 236: | Line 244: | ||
| </ | </ | ||
| - | ===== qemuriscv64-standard.scc | + | ==== qemuriscv64-standard.scc |
| < | < | ||
| Line 249: | Line 257: | ||
| </ | </ | ||
| + | == On the running QEMU session | ||
| + | |||
| + | < | ||
| + | root@qemuriscv64:/ | ||
| + | CONFIG_RISCV=y | ||
| + | CONFIG_RISCV_SBI=y | ||
| + | CONFIG_RISCV_ERRATA_ALTERNATIVE=y | ||
| + | CONFIG_RISCV_ISA_C=y | ||
| + | CONFIG_RISCV_BASE_PMU=y | ||
| + | CONFIG_RISCV_SBI_V01=y | ||
| + | # CONFIG_SERIAL_EARLYCON_RISCV_SBI is not set | ||
| + | # CONFIG_HVC_RISCV_SBI is not set | ||
| + | CONFIG_RISCV_TIMER=y | ||
| + | CONFIG_RISCV_INTC=y | ||
| + | </ | ||
| = opensbi | = opensbi | ||
| - | === qemuriscv.inc variables | + | == qemuriscv.inc variables |
| < | < | ||
| Line 257: | Line 280: | ||
| RISCV_SBI_PLAT ?= " | RISCV_SBI_PLAT ?= " | ||
| RISCV_SBI_PAYLOAD ?= " | RISCV_SBI_PAYLOAD ?= " | ||
| + | |||
| + | UBOOT_ENTRYPOINT: | ||
| + | UBOOT_ENTRYPOINT: | ||
| </ | </ | ||
| - | === opensbi-payloads.inc | + | == opensbi-payloads.inc |
| < | < | ||
| Line 300: | Line 326: | ||
| </ | </ | ||
| - | === opensbi_1.0.bb [master branch] | + | == opensbi_1.0.bb [master branch] |
| < | < | ||
| + | require opensbi-payloads.inc | ||
| + | |||
| + | inherit autotools-brokensep deploy | ||
| + | |||
| + | SRCREV = " | ||
| + | SRC_URI = " | ||
| + | " | ||
| + | |||
| + | S = " | ||
| + | |||
| EXTRA_OEMAKE += " | EXTRA_OEMAKE += " | ||
| # If RISCV_SBI_PAYLOAD is set then include it as a payload | # If RISCV_SBI_PAYLOAD is set then include it as a payload | ||
| Line 330: | Line 366: | ||
| FILES:${PN} += "/ | FILES:${PN} += "/ | ||
| FILES:${PN} += "/ | FILES:${PN} += "/ | ||
| - | </ | ||
| - | === bitbake -e opensbi | + | COMPATIBLE_HOST |
| + | INHIBIT_PACKAGE_STRIP = " | ||
| + | |||
| + | SECURITY_CFLAGS = "" | ||
| + | </ | ||
| + | == bitbake -e opensbi | ||
| < | < | ||
| Line 346: | Line 386: | ||
| </ | </ | ||
| - | === git/ | + | == git/ |
| + | |||
| + | With (default) kernel payload: | ||
| < | < | ||
| Line 357: | Line 399: | ||
| </ | </ | ||
| - | === log.do_compile | + | With '' |
| + | |||
| + | < | ||
| + | -rwxr-xr-x. 2 rpjday rpjday | ||
| + | -rwxr-xr-x. 2 rpjday rpjday | ||
| + | -rwxr-xr-x. 2 rpjday rpjday | ||
| + | -rwxr-xr-x. 2 rpjday rpjday | ||
| + | -rwxr-xr-x. 2 rpjday rpjday 2713192 Mar 1 06:10 fw_payload.bin | ||
| + | -rwxr-xr-x. 2 rpjday rpjday 1554336 Mar 1 06:10 fw_payload.elf | ||
| + | </ | ||
| + | |||
| + | == log.do_compile | ||
| < | < | ||
| Line 367: | Line 420: | ||
| </ | </ | ||
| - | === git/ | + | == git/ |
| < | < | ||