| 1 | Shakti C Reference Platform (``shakti_c``) |
| 2 | ========================================== |
| 3 | |
| 4 | Shakti C Reference Platform is a reference platform based on arty a7 100t |
| 5 | for the Shakti SoC. |
| 6 | |
| 7 | Shakti SoC is a SoC based on the Shakti C-class processor core. Shakti C |
| 8 | is a 64bit RV64GCSUN processor core. |
| 9 | |
| 10 | For more details on Shakti SoC, please see: |
| 11 | https://gitlab.com/shaktiproject/cores/shakti-soc/-/blob/master/fpga/boards/artya7-100t/c-class/README.rst |
| 12 | |
| 13 | For more info on the Shakti C-class core, please see: |
| 14 | https://c-class.readthedocs.io/en/latest/ |
| 15 | |
| 16 | Supported devices |
| 17 | ----------------- |
| 18 | |
| 19 | The ``shakti_c`` machine supports the following devices: |
| 20 | |
| 21 | * 1 C-class core |
| 22 | * Core Level Interruptor (CLINT) |
| 23 | * Platform-Level Interrupt Controller (PLIC) |
| 24 | * 1 UART |
| 25 | |
| 26 | Boot options |
| 27 | ------------ |
| 28 | |
| 29 | The ``shakti_c`` machine can start using the standard -bios |
| 30 | functionality for loading the baremetal application or opensbi. |
| 31 | |
| 32 | Boot the machine |
| 33 | ---------------- |
| 34 | |
| 35 | Shakti SDK |
| 36 | ~~~~~~~~~~ |
| 37 | Shakti SDK can be used to generate the baremetal example UART applications. |
| 38 | |
| 39 | .. code-block:: bash |
| 40 | |
| 41 | $ git clone https://gitlab.com/behindbytes/shakti-sdk.git |
| 42 | $ cd shakti-sdk |
| 43 | $ make software PROGRAM=loopback TARGET=artix7_100t |
| 44 | |
| 45 | Binary would be generated in: |
| 46 | software/examples/uart_applns/loopback/output/loopback.shakti |
| 47 | |
| 48 | You could also download the precompiled example applications using below |
| 49 | commands. |
| 50 | |
| 51 | .. code-block:: bash |
| 52 | |
| 53 | $ wget -c https://gitlab.com/behindbytes/shakti-binaries/-/raw/master/sdk/shakti_sdk_qemu.zip |
| 54 | $ unzip shakti_sdk_qemu.zip |
| 55 | |
| 56 | Then we can run the UART example using: |
| 57 | |
| 58 | .. code-block:: bash |
| 59 | |
| 60 | $ qemu-system-riscv64 -M shakti_c -nographic \ |
| 61 | -bios path/to/shakti_sdk_qemu/loopback.shakti |
| 62 | |
| 63 | OpenSBI |
| 64 | ~~~~~~~ |
| 65 | We can also run OpenSBI with Test Payload. |
| 66 | |
| 67 | .. code-block:: bash |
| 68 | |
| 69 | $ git clone https://github.com/riscv/opensbi.git -b v0.9 |
| 70 | $ cd opensbi |
| 71 | $ wget -c https://gitlab.com/behindbytes/shakti-binaries/-/raw/master/dts/shakti.dtb |
| 72 | $ export CROSS_COMPILE=riscv64-unknown-elf- |
| 73 | $ export FW_FDT_PATH=./shakti.dtb |
| 74 | $ make PLATFORM=generic |
| 75 | |
| 76 | fw_payload.elf would be generated in build/platform/generic/firmware/fw_payload.elf. |
| 77 | Boot it using the below qemu command. |
| 78 | |
| 79 | .. code-block:: bash |
| 80 | |
| 81 | $ qemu-system-riscv64 -M shakti_c -nographic \ |
| 82 | -bios path/to/fw_payload.elf |