mirror of
https://github.com/lupyuen/nuttx-sg2000.git
synced 2025-01-12 20:58:29 +08:00
Update doc
This commit is contained in:
parent
888f15dcc9
commit
3a4e8302a4
3 changed files with 1205 additions and 5 deletions
105
README.md
105
README.md
|
@ -650,9 +650,11 @@ Starting kernel ...
|
||||||
|
|
||||||
Our NuttX Boot Code is actually running on SG2000 / Milk-V Duo S!
|
Our NuttX Boot Code is actually running on SG2000 / Milk-V Duo S!
|
||||||
|
|
||||||
TODO: Fix the Boot Address of NuttX, so the rest of NuttX can start
|
Coming up...
|
||||||
|
|
||||||
TODO: Configure the 16550 UART Driver for NuttX, so can see the Console Output
|
1. Fix the Boot Address of NuttX, so the rest of NuttX can start
|
||||||
|
|
||||||
|
1. Configure the 16550 UART Driver for NuttX, so can see the Console Output
|
||||||
|
|
||||||
TODO: Can we auto-boot NuttX over TFTP, without manually typing U-Boot Commands every time? Maybe we change the U-Boot Config on MicroSD?
|
TODO: Can we auto-boot NuttX over TFTP, without manually typing U-Boot Commands every time? Maybe we change the U-Boot Config on MicroSD?
|
||||||
|
|
||||||
|
@ -724,9 +726,7 @@ So let's disable PLIC in NuttX...
|
||||||
|
|
||||||
https://github.com/lupyuen2/wip-nuttx/commit/6d66caa1408d7a7d7b21b0e876ce32ceb5b93ec4
|
https://github.com/lupyuen2/wip-nuttx/commit/6d66caa1408d7a7d7b21b0e876ce32ceb5b93ec4
|
||||||
|
|
||||||
TODO: How to handle interrupts with 8051?
|
Later we'll dump the SG2000 Linux Device Tree to understand the 8051 Interrupt Controller.
|
||||||
|
|
||||||
TODO: Dump the SG2000 Linux Device Tree to understand the 8051 Interrupt Controller
|
|
||||||
|
|
||||||
# Select the NuttX Driver for 16550 UART
|
# Select the NuttX Driver for 16550 UART
|
||||||
|
|
||||||
|
@ -844,6 +844,101 @@ at file: machine/risc-v/arch_elf.c:494
|
||||||
task: AppBringUp process: Kernel 0x80200f34
|
task: AppBringUp process: Kernel 0x80200f34
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Dump the SG2000 Linux Device Tree
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
Let's dump the SG2000 Linux Device Tree to understand the 8051 Interrupt Controller.
|
||||||
|
|
||||||
|
From the SG2000 Debian Release: https://github.com/Fishwaldo/sophgo-sg200x-debian/releases
|
||||||
|
|
||||||
|
We pick the Latest Release for Milk-V Duo S: https://github.com/Fishwaldo/sophgo-sg200x-debian/releases/download/v1.1.0/duos_sd.img.lz4
|
||||||
|
|
||||||
|
We copy out the SG2000 Device Tree Binary: [cv181x_milkv_duos_sd.dtb](cv181x_milkv_duos_sd.dtb)
|
||||||
|
|
||||||
|
And convert it to Device Tree Source: [cv181x_milkv_duos_sd.dts](cv181x_milkv_duos_sd.dts)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
## Convert the SG2000 Device Tree
|
||||||
|
dtc \
|
||||||
|
-o cv181x_milkv_duos_sd.dts \
|
||||||
|
-O dts \
|
||||||
|
-I dtb \
|
||||||
|
cv181x_milkv_duos_sd.dtb
|
||||||
|
```
|
||||||
|
|
||||||
|
# 8051 Interrupt Controller for SG2000
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
We dumped the SG2000 Linux Device Tree. Let's extract the 8051 Interrupt Controller to understand it.
|
||||||
|
|
||||||
|
Based on the SG2000 Device Tree: [cv181x_milkv_duos_sd.dts](cv181x_milkv_duos_sd.dts)
|
||||||
|
|
||||||
|
```json
|
||||||
|
cpus {
|
||||||
|
#address-cells = <0x01>;
|
||||||
|
#size-cells = <0x00>;
|
||||||
|
timebase-frequency = <0x17d7840>;
|
||||||
|
|
||||||
|
cpu-map {
|
||||||
|
|
||||||
|
cluster0 {
|
||||||
|
|
||||||
|
core0 {
|
||||||
|
cpu = <0x01>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu@0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
reg = <0x00>;
|
||||||
|
status = "okay";
|
||||||
|
compatible = "riscv";
|
||||||
|
riscv,isa = "rv64imafdvcsu";
|
||||||
|
mmu-type = "riscv,sv39";
|
||||||
|
clock-frequency = <0x17d7840>;
|
||||||
|
|
||||||
|
interrupt-controller {
|
||||||
|
#interrupt-cells = <0x01>;
|
||||||
|
interrupt-controller;
|
||||||
|
compatible = "riscv,cpu-intc";
|
||||||
|
phandle = <0x16>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
soc {
|
||||||
|
#address-cells = <0x02>;
|
||||||
|
#size-cells = <0x02>;
|
||||||
|
compatible = "simple-bus";
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
interrupt-controller@70000000 {
|
||||||
|
riscv,ndev = <0x65>;
|
||||||
|
riscv,max-priority = <0x07>;
|
||||||
|
reg-names = "control";
|
||||||
|
reg = <0x00 0x70000000 0x00 0x4000000>;
|
||||||
|
interrupts-extended = <0x16 0xffffffff 0x16 0x09>;
|
||||||
|
interrupt-controller;
|
||||||
|
compatible = "riscv,plic0";
|
||||||
|
#interrupt-cells = <0x02>;
|
||||||
|
#address-cells = <0x00>;
|
||||||
|
phandle = <0x04>;
|
||||||
|
};
|
||||||
|
|
||||||
|
clint@74000000 {
|
||||||
|
interrupts-extended = <0x16 0x03 0x16 0x07>;
|
||||||
|
reg = <0x00 0x74000000 0x00 0x10000>;
|
||||||
|
compatible = "riscv,clint0";
|
||||||
|
clint,has-no-64bit-mmio;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
TODO: How to handle interrupts with 8051?
|
||||||
|
|
||||||
# U-Boot Commands for Milk-V Duo S
|
# U-Boot Commands for Milk-V Duo S
|
||||||
|
|
||||||
Here are the U-Boot Commands available for Milk-V Duo S (which doesn't support writing to Flash Memory)...
|
Here are the U-Boot Commands available for Milk-V Duo S (which doesn't support writing to Flash Memory)...
|
||||||
|
|
BIN
cv181x_milkv_duos_sd.dtb
Executable file
BIN
cv181x_milkv_duos_sd.dtb
Executable file
Binary file not shown.
1105
cv181x_milkv_duos_sd.dts
Normal file
1105
cv181x_milkv_duos_sd.dts
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue