Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs:techref:mtd [2021/03/04 13:18] – [Examples] gandalfdocs:techref:mtd [2023/03/04 18:00] (current) – typo openwart
Line 35: Line 35:
 </code> </code>
  
-===== Example (flash u-boot from OpenWrt =====+===== Example (flash u-boot from OpenWrt=====
  
 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
Line 48: Line 61:
 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 =====
  • Last modified: 2021/03/04 13:18
  • by gandalf