DHSBC STM32MP13 DFU and UMS usage: Difference between revisions

From Wiki-DB
Jump to navigationJump to search
Ageisreiter (talk | contribs)
Ageisreiter (talk | contribs)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
<!--
https://wiki.dh-electronics.com/index.php?title=U-Boot_recovery_for_STM32MP1_DHSOM_via_DFU
-->
To recover a corrupted U-Boot on a STM32MP1-based DHCOM, we can use the default fallback boot source DFU via serial link or USB to temporarily boot U-Boot SPL and U-Boot.
From this U-Boot shell we can write both bootloader images from the SD card to the boot flash.
<div class="toclimit-3">__TOC__</div>
<div class="toclimit-3">__TOC__</div>


Line 44: Line 37:
 
 
=== Start U-Boot via USB DFU upload:===  
=== Start U-Boot via USB DFU upload:===  
:'''>>> Connecting USB Data and FTDI console port. Open a terminal program (PuTTY or TeraTerm) for serial console connection.'''
:'''>>> Switch boot mode to 123=ON-ON-ON (USB DFU boot)'''
:'''>>> Power on the board'''
:'''>>> DFU device apears on Linux host computer'''
<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
$ dfu-util -a 0 -D tf-a-stm32mp135f-dhcor-dhsbc.stm32 -R
$ dfu-util -a 0 -D tf-a-stm32mp135f-dhcor-dhsbc.stm32 -R
Line 69: Line 71:
</syntaxhighlight>
</syntaxhighlight>
 
 
'''>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)'''
:'''>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)'''
 
=== Reset Environment to default of new bootloader===  
=== Reset Environment to default of new bootloader===  
<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
Line 79: Line 81:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
</syntaxhighlight>
</syntaxhighlight>
Note: saveenv is called twice, because it also updates the redundant ENV to the new version.
 
=== Install root filesystem to eMMC:===  
=== Install root filesystem to eMMC:===  
*U-Boot side:
*U-Boot side:
Line 94: Line 97:
</syntaxhighlight>
</syntaxhighlight>
 
 
'''>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)'''
:'''>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)'''
 
 
'''>>> Power on and boot'''
:'''>>> Power on and boot'''

Latest revision as of 06:58, 17 September 2024

Requirements

Software

Hardware

  • DHSBC STM32MP13 board
  • USB-A to Type-C cable (for DFU and UMS data connection)
  • Type-C power supply for DHCBS STM32Mp13 board
  • FTDI cable TTL-232R-3V3 for console connection

Preparation

This installation was made on the Virtual Machine for Application Development. All console expressions refer to this Debian system, but any other debian based system should also work.

BOOT MODES

USB (DFU) 000b
SPI Flash 001b

NOTE: First Board revision 719-100 -> ON means 0 -> SPI Flash boot: bit 1 = OFF, bit 2,3 = ON!

Install dfu-util (debian)

apt-get install dfu-util

Collect artifacts from OE build:

  • tf-a-stm32mp135f-dhcor-dhsbc.stm32-stm32mp1
  • fip.bin-stm32mp1
  • *image*.wic

Start U-Boot via USB DFU upload:

>>> Connecting USB Data and FTDI console port. Open a terminal program (PuTTY or TeraTerm) for serial console connection.
>>> Switch boot mode to 123=ON-ON-ON (USB DFU boot)
>>> Power on the board
>>> DFU device apears on Linux host computer
$ dfu-util -a 0 -D tf-a-stm32mp135f-dhcor-dhsbc.stm32 -R
$ dfu-util -a 0 -D fip.bin -R

Install bootloader to SPI NOR:

  • U-Boot side:
=> sf probe
=> env set dfu_alt_info "mtd nor0=fsbl1 raw 0x0 0x40000;fsbl2 raw 0x40000 0x40000;uboot raw 0x80000 0x160000;env1 raw 0x3e0000 0x10000;env2 raw 0x3f0000 0x10000"
=> dfu 0 mtd
  • Host PC side
$ dfu-util -a 2 -D fip.bin
$ dfu-util -a 1 -D tf-a-stm32mp135f-dhcor-dhsbc.stm32
$ dfu-util -a 0 -D tf-a-stm32mp135f-dhcor-dhsbc.stm32
>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)

Reset Environment to default of new bootloader

=> env default -a
=> saveenv
=> saveenv

Note: saveenv is called twice, because it also updates the redundant ENV to the new version.

Install root filesystem to eMMC:

  • U-Boot side:
=> ums 0 mmc 0
  • Host PC side
$ dd if=*image*wic of=/dev/sdX bs=4M
>>> Power off the board, switch boot mode to 123=OFF-ON-ON (QSPI NOR boot)
>>> Power on and boot