On 8/7/20 4:43 PM, Sean Anderson wrote: > This patch enables configs necessary for using SPI. It also adds some > documentation. > > Signed-off-by: Sean Anderson <sean...@gmail.com> > --- > > Changes in v2: > - Add Gigadevice SPI chips to dependencies > > board/sipeed/maix/Kconfig | 11 ++++ > configs/sipeed_maix_bitm_defconfig | 8 +++ > doc/board/sipeed/maix.rst | 94 +++++++++++++++++++----------- > 3 files changed, 80 insertions(+), 33 deletions(-) > > diff --git a/board/sipeed/maix/Kconfig b/board/sipeed/maix/Kconfig > index 4c42dd2087..48a4e9dc1a 100644 > --- a/board/sipeed/maix/Kconfig > +++ b/board/sipeed/maix/Kconfig > @@ -53,4 +53,15 @@ config BOARD_SPECIFIC_OPTIONS > imply CMD_GPIO > imply LED > imply LED_GPIO > + imply SPI > + imply DESIGNWARE_SPI > + imply SPI_FLASH_GIGADEVICE > + imply SPI_FLASH_WINBOND > + imply DM_MTD > + imply SPI_FLASH_MTD > + imply CMD_MTD > + imply ENV_IS_IN_SPI_FLASH > + imply MMC > + imply MMC_BROKEN_CD > + imply MMC_SPI > endif > diff --git a/configs/sipeed_maix_bitm_defconfig > b/configs/sipeed_maix_bitm_defconfig > index f48f7f06e9..7f644e7a37 100644 > --- a/configs/sipeed_maix_bitm_defconfig > +++ b/configs/sipeed_maix_bitm_defconfig > @@ -1,6 +1,14 @@ > CONFIG_RISCV=y > +CONFIG_ENV_SIZE=0x2000 > +CONFIG_ENV_SECT_SIZE=0x1000 > +CONFIG_ENV_OFFSET=0x7C000 > +CONFIG_ENV_OFFSET_REDUND=0x7E000 > CONFIG_TARGET_SIPEED_MAIX=y > CONFIG_ARCH_RV64I=y > +CONFIG_USE_BOOTCOMMAND=y > +CONFIG_BOOTCOMMAND="sf probe;mtd read kernel 80000000;go 80000000"
If no kernel is present, this will let your system hang. "go" does not check that whatever you loaded from mtd is a kernel. That is why we have commands like bootm. > +CONFIG_MTDIDS_DEFAULT="nor0=spi3.0" > +CONFIG_MTDPARTS_DEFAULT="spi3.0:496k(u-boot),16k(env),5632k(kernel),10240k(data)" The size of u-boot.bin may exceed 496 KiB depending on the options selected. Mine is currently 543589 bytes. When starting with OpenSBI another 70+ KiB will be needed. If we overwrite 5632 KiB from the kernel partition, this may overwrite the relocated U-Boot. When an SD-card is worn out I can replace it. When the SPI flash is worn out I have to replace the device. We can put the kernel and the environment onto the SD card. I would suggest to use SPI only for OpenSBI and U-Boot. Please, use CONFIG_DISTRO_BOOT. > CONFIG_SYS_REDUNDAND_ENVIRONMENT=y > # CONFIG_NET is not set > # CONFIG_INPUT is not set > diff --git a/doc/board/sipeed/maix.rst b/doc/board/sipeed/maix.rst > index 1865e2adfb..fa78bcd51c 100644 > --- a/doc/board/sipeed/maix.rst > +++ b/doc/board/sipeed/maix.rst > @@ -46,42 +46,14 @@ Boot output should look like the following: > U-Boot 2020.04-rc2-00087-g2221cc09c1-dirty (Feb 28 2020 - 13:53:09 -0500) > > DRAM: 8 MiB > + MMC: spi@53000000:slot@0: 0 Actual output is MMC: regs=0000000053000000 max-frequency=25000000 > In: serial@38000000 > Out: serial@38000000 > Err: serial@38000000 As we do not check if a kernel is available: MTD device kernel not found, ret -19 ## Starting application at 0x80000000 ... And then hanging. Best regards Heinrich > - => > - > -Loading Images > -^^^^^^^^^^^^^^ > - > -To load a kernel, transfer it over serial. > - > -.. code-block:: none > - > - => loady 80000000 1500000 > - ## Switch baudrate to 1500000 bps and press ENTER ... > - > - *** baud: 1500000 > - > - *** baud: 1500000 *** > - ## Ready for binary (ymodem) download to 0x80000000 at 1500000 bps... > - C > - *** file: loader.bin > - $ sz -vv loader.bin > - Sending: loader.bin > - Bytes Sent:2478208 BPS:72937 > - Sending: > - Ymodem sectors/kbytes sent: 0/ 0k > - Transfer complete > - > - *** exit status: 0 *** > - ## Total Size = 0x0025d052 = 2478162 Bytes > - ## Switch baudrate to 115200 bps and press ESC ... > - > - *** baud: 115200 > - > - *** baud: 115200 *** > - => > + Hit any key to stop autoboot: 0 > + SF: Detected w25q128fw with page size 256 Bytes, erase size 4 KiB, total > 16 MiB > + Reading 5242880 byte(s) at offset 0x00000000 > + ## Starting application at 0x80000000 ... > > Running Programs > ^^^^^^^^^^^^^^^^ > @@ -163,6 +135,62 @@ To run legacy images, use the ``bootm`` command: > argv[0] = "<NULL>" > Hit any key to exit ... > > +Flashing Images > +--------------- > + > +To flash a kernel, transfer it over serial, then write it to the kernel > +partition. > + > +.. code-block:: none > + > + => loady 80000000 1500000 > + ## Switch baudrate to 1500000 bps and press ENTER ... > + > + *** baud: 1500000 > + > + *** baud: 1500000 *** > + ## Ready for binary (ymodem) download to 0x80000000 at 1500000 bps... > + C > + *** file: loader.bin > + $ sz -vv loader.bin > + Sending: loader.bin > + Bytes Sent:2478208 BPS:72937 > + Sending: > + Ymodem sectors/kbytes sent: 0/ 0k > + Transfer complete > + > + *** exit status: 0 *** > + ## Total Size = 0x0025d052 = 2478162 Bytes > + ## Switch baudrate to 115200 bps and press ESC ... > + > + *** baud: 115200 > + > + *** baud: 115200 *** > + => sf probe > + SF: Detected w25q128fw with page size 256 Bytes, erase size 4 KiB, total > 16 MiB > + => mtd write kernel 80000000 0 25d052 > + Writing 2478162 byte(s) at offset 0x00000000 > + > +Partition Scheme > +^^^^^^^^^^^^^^^^ > + > +There is no partition scheme specified by the manufacturer. The only > requirement > +imposed by the firmware is that offset 0 will be loaded and ran. The default > +partition scheme is > + > +========= ======== ====== > +Partition Offset Size > +========= ======== ====== > +u-boot 0x000000 496k > +env 0x07C000 16k > +kernel 0x080000 5M > +data 0x580000 10.5M > +========= ======== ====== > + > +**NB:** kflash adds a 5-byte header to payloads (and a 32-byte trailer) to > all > +payloads it flashes. If you use kflash to flash your payload, you will need > to > +account for this header when specifying what offset in spi flash to load > from. > + > Pin Assignment > -------------- > >