[PATCH 5/5] doc: canaan: Add K230 CanMV board
Junhui Liu
junhui.liu at pigmoral.tech
Tue Jan 14 17:46:41 CET 2025
Add description of compiling u-boot for K230 CanMV.
Since the vendor's u-boot-spl verifies u-boot header [1], it is
necessary to use the Python script from vendor to add the header to the
u-boot image.
[1] https://github.com/kendryte/k230_sdk/blob/v1.8/src/little/uboot/board/canaan/common/k230_board_common.h#L52
Signed-off-by: Junhui Liu <junhui.liu at pigmoral.tech>
---
doc/board/canaan/index.rst | 8 ++++
doc/board/canaan/k230_canmv.rst | 88 +++++++++++++++++++++++++++++++++++++++++
doc/board/index.rst | 1 +
3 files changed, 97 insertions(+)
diff --git a/doc/board/canaan/index.rst b/doc/board/canaan/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e2892d2a7f342f507516a11eb81cd26181ecf66b
--- /dev/null
+++ b/doc/board/canaan/index.rst
@@ -0,0 +1,8 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Canaan
+======
+.. toctree::
+ :maxdepth: 1
+
+ k230_canmv
diff --git a/doc/board/canaan/k230_canmv.rst b/doc/board/canaan/k230_canmv.rst
new file mode 100644
index 0000000000000000000000000000000000000000..534ad7cb7a89ad1de2b18bcac64c120cdaec5003
--- /dev/null
+++ b/doc/board/canaan/k230_canmv.rst
@@ -0,0 +1,88 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+K230 CanMV
+==========
+
+K230 RISC-V SoC
+------------------
+The K230 chip is the latest generation SoC product in Canaan Technology's
+Kendryte series of AIOT chips.
+
+Mainline support
+----------------
+
+The support for following drivers are already enabled:
+
+1. ns16550 UART
+2. DWC2 OTG USB controller
+
+Building
+~~~~~~~~
+
+1. Get the RISC-V toolchain.
+2. Setup cross compilation environment variable:
+3. Get the `firmware_gen.py`_ from vendor.
+
+.. code-block:: console
+
+ export CROSS_COMPILE=riscv64-linux-gnu-
+ cd <U-Boot-dir>
+ make k230_canmv_defconfig
+ make
+ cp u-boot-gz.img u-boot-gz.img.tmp
+ pip install gmssl pycryptodome
+ python3 firmware_gen.py -i u-boot-gz.img.tmp -o u-boot-head.img -n
+
+This will generate u-boot-head.img.
+
+.. _firmware_gen.py: https://raw.githubusercontent.com/kendryte/k230_sdk/refs/tags/v1.8/src/little/uboot/tools/firmware_gen.py
+
+Booting
+~~~~~~~
+
+Currently, we rely on vendor u-boot-spl to initialize the
+ddr and load the u-boot image, then bootup from it.
+
+1. Prepare a SD card with the `vendor image`_ burned on it.
+
+2. Write the U-Boot image to the SD card at offset 2MB.
+
+.. code-block:: console
+
+ dd if=u-boot-head.img of=/dev/sd[x] bs=1M seek=2
+
+3. Insert the SD card into the board and power it on.
+
+.. _vendor image: https://kendryte-download.canaan-creative.com/developer/k230/CanMV-K230_debian_sdcard_sdk_1.3.img.gz
+
+Sample boot log from K230 CanMV board
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. code-block:: none
+
+ U-Boot 2025.01-00645-g2d81c4788455 (Jan 14 2025 - 23:15:07 +0800)
+
+ DRAM: 512 MiB
+ Core: 15 devices, 11 uclasses, devicetree: separate
+ Loading Environment from nowhere... OK
+ In: serial at 91400000
+ Out: serial at 91400000
+ Err: serial at 91400000
+ Net: No ethernet found.
+ K230# cpu list
+ 0: cpu at 0 thead,c908
+ K230# usb start
+ starting USB...
+ Bus usb at 91540000: USB DWC2
+ scanning bus usb at 91540000 for devices...
+ Warning: r8152_eth (eth0) using random MAC address - 1e:33:97:47:e6:32
+ 2 USB Device(s) found
+ K230# usb tree
+ USB device tree:
+ 1 Hub (480 Mb/s, 0mA)
+ | U-Boot Root Hub
+ |
+ +-2 Vendor specific (480 Mb/s, 100mA)
+ Realtek USB 10/100 LAN 000000000000
+
+ K230#
diff --git a/doc/board/index.rst b/doc/board/index.rst
index b1c470eb2cbb1c07f907eb2282039520c219c72a..74c4dd1f42d7e6a6d877020a79cb0a4f9c7c5335 100644
--- a/doc/board/index.rst
+++ b/doc/board/index.rst
@@ -21,6 +21,7 @@ Board-specific doc
beagle/index
broadcom/index
bsh/index
+ canaan/index
cloos/index
congatec/index
coolpi/index
--
2.47.1
More information about the U-Boot
mailing list