| Both sides previous revision Previous revision Next revision | Previous revision |
| docs:techref:mtd [2021/03/04 13:19] – [Example (flash u-boot from OpenWrt] gandalf | docs:techref:mtd [2023/03/04 18:00] (current) – typo openwart |
|---|
| |
| Tested on Marvell EspressoBinBoard based on MVEBU, (see [[https://forum.openwrt.org/t/is-it-possible-to-flash-u-boot-from-openwrt/90284|forum topic]]) | Tested on Marvell EspressoBinBoard based on MVEBU, (see [[https://forum.openwrt.org/t/is-it-possible-to-flash-u-boot-from-openwrt/90284|forum topic]]) |
| Download ''flash-image.bin'' for your specific hardware from [[https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa53/|SnapShots]] (it's not safe to do so, here is for demonstration purpose only), then write ''flash-image.bin'' to a MTD partition labeled as ''spi0.0'' (could be ''mtd0'') and reboot afterwards : | Download ''flash-image.bin'' for your specific hardware from [[https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa53/|SnapShots]] |
| | |
| | You can checks your mtd partitions from proc : |
| | <code> |
| | root@EBIN:~# cat /proc/mtd |
| | dev: size erasesize name |
| | mtd0: 003f0000 00010000 "firmware" |
| | mtd1: 00010000 00010000 "u-boot-env" |
| | |
| | </code> |
| | |
| | (it's not safe to do so, here is for demonstration purpose only), |
| | |
| | then write ''flash-image.bin'' to a MTD partition labeled as ''spi0.0'' (could be ''mtd0'' or ''firmware'') and reboot afterwards : |
| <code> | <code> |
| cd /tmp | cd /tmp |
| The differences between ''[[http://linux.die.net/man/1/dd|dd]]'' (disc dump) and ''mtd'' are ... | The differences between ''[[http://linux.die.net/man/1/dd|dd]]'' (disc dump) and ''mtd'' are ... |
| TODO | TODO |
| | |
| | ===== mtd on vendor-firmware ===== |
| | ''mtd'' can even be used with vendor-firmware, as long as the kernel had mtd-support and not using something "home-brewed". When the vendor is not shipping the binary it can probably transferred via ''scp'', ''netcat'', ''tftp'', ''ftp'', ''http''onto the board. The original binary from the OpenWrt-package might not run on the vendor-os, but linking it static should do the trick. |
| | With OpenWrt-21.02 I was using a small hack to to let the buildroot create a static binary: |
| | |
| | <code> |
| | sed -i -e "s/^LDFLAGS += /LDFLAGS += -static /" package/system/mtd/src/Makefile |
| | make package/mtd/compile |
| | </code> |
| | |
| | This patches the mtd source to include the "-static" option when building the binary. This way the binary gets all dependent library-code embedded to make it run itself, as long as the correct CPU-target is used. The new binary can be extracted from the resulting package or just copied from ''build_dir/target-<ARCH>/linux-<TARGET>-<SUBTARGET>/mtd''. |
| |
| ===== Notes ===== | ===== Notes ===== |