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
products:a38x:clearfog [2018/03/23 17:28]
artox
products:a38x:clearfog [2018/09/11 04:22] (current)
malte [Comparison Table]
Line 1: Line 1:
-====== A38X U-Boot ​====== +====== A38X ClearFog ​====== 
-{{tag>​a38x ​u-boot uboot bootloader}}+{{tag>​a38x ​usom microsom carrierboard SR-uSOM clearfog}} 
 +{{ :​a38x:​carrierboard:​clearfog-pro.jpg?&​300|}}
  
-==== Installing automatically (SPI, eMMC) ==== 
-**This section assumes that you already have a version of U-Boot >= 2018.01 running on your device!** 
- 
-First prepare an sdcard or usb-drive with the u-boot binary that you want to install: 
-- Filesystem should be one of ext2,3,4 and fat, on partition 1 
-- copy the u-boot binary to the top level directory of your sdcard or usb drive 
-- Eject the drive and plug it into your clearfog board 
- 
-Now drop to the U-Boot console and run one of these update commands (you might have to substitute the file names *.kwb by the actual names on your drive): 
-<​code>​ 
-# To install u-boot-spl-spi.kwb from sdcard to spi: 
-bubt u-boot-spl-spi.kwb spi mmc 
-# To install u-boot-spl-spi.kwb from usb to spi 
-bubt u-boot-spl-spi.kwb spi usb 
-# To install u-boot-spl-mmc.kwb from usb to emmc (see below) 
-bubt u-boot-spl-mmc.kwb mmc usb 
-</​code>​ 
- 
-== Select eMMC boot partition== 
-Depending on how the eMMC is configured, the BootROM will look for U-Boot either on the main partition, or boot0, or boot1. To find out about the current configuration,​ run 
-<​code>​mmc partconf 0</​code>​ on the u-boot console. It will print a block similar to: 
-<​code>​ 
-=> mmc partconf 0 
-EXT_CSD[179],​ PARTITION_CONFIG:​ 
-BOOT_ACK: 0x0 
-BOOT_PARTITION_ENABLE:​ 0x0 
-PARTITION_ACCESS:​ 0x0 
-</​code>​ 
-The magic data field is BOOT_PARTITION_ENABLE:​ 
-^ value ^ description ^ 
-| 0x0 | boot from main partition | 
-| 0x1 | boot from boot0 | 
-| 0x2 | boot from boot1 | 
- 
-To select a different partition, run mmc partconf again, but this time with 4 arguments: 
-<​code>​ 
-# Syntax: mmc partconf dev [boot_ack boot_partition partition_access] 
-# boot_partition is the field we want to change, ​ 
-# for boot_ack and partition_access,​ please use the existing values as reference. 
- 
-# Example for booting from the main partition: 
-mmc partconf 0 0 0 0 
- 
-# Example for booting from boot0: 
-mmc partconf 0 0 1 0 
- 
-# Example for booting from boot1: 
-mmc partconf 0 0 2 0 
-</​code>​ 
- 
-==== Installing manually ==== 
- 
-== microSD == 
-The BootROM searches for U-Boot after the first 512 bytes, so use the dd command to write u-boot to this location on your microSD card. Substitute sdX by the device node of your sdcard. 
-<​code>​dd if=u-boot-spl-sdhc.kwb of=/dev/sdX bs=512 seek=1 conv=sync</​code>​ 
-<​note>​Note - Take your time while identifying where your designated SD-Card is mapped on your linux system. Failure to do so can result in overwriting an arbitrary disk on your system!</​note>​ 
- 
-== SPI == 
-**This section assumes that you already have a version of U-Boot >= 2018.01 running on your device!** 
- 
-The BootROM loads U-boot from the start of SPI flash, offset=0. U-Boot expects to have the first 1M for itself, the environment lives at 0x0fe000-0x100000. 
- 
-Drop to the U-Boot console, and execute these command for loading the u-boot binary to memory, and then writing it to the spi flash. This sample only covers eMMC/sdcard partition 1 as **source**, but network or usb are also usable. 
-<​code>​ 
-ext4load mmc 0:1 0x200000 /​u-boot-spl-spi.kwb 
-sf probe 
-# you may want to erase the first 1M, or just the environment:​ 
-# sf erase 0 0x100000 
-sf write 0x200000 0 $filesize 
-</​code>​ 
- 
-== eMMC == 
-**This section assumes that you already have linux running on your board!** 
-First remove write protection from boot0 partition: 
-<​code>​echo 0 | sudo tee /​sys/​block/​mmcblk0boot0/​force_ro</​code>​ 
- 
-Now write U-Boot to the start of boot0: 
-<​code>​sudo dd if=u-boot-spl-mmc.kwb of=/​dev/​mmcblk0boot0 conv=sync</​code>​ 
- 
-==== Booting from UART ==== 
-**This section assumes that you have downloaded and compiled the U-Boot sources so that the binary tools/​kwboot exists!** 
- 
-** TODO: This section is not finished yet, some patches to U-Boot are still missing** 
- 
-Make sure to configure the Boot DIPs for UART ([[products:​a38x:​clearfog#​bootdevice_dipswitch|Bootdevice]]). However this is //not strictly necessary// because the BootROM will fall back to UART, if it does not find a bootloader elsewhere. 
- 
-After connecting the serial uart to your PC using a micro-USB-cable,​ run this command to send U-Boot to the board for execution: 
-<​code>​ 
-# This does not yet work! Some patches are still missing :( 
-./​tools/​kwboot -t -b u-boot-spl-uart.kwb -B 115200 /​dev/​ttyUSB1 
-</​code>​ 
-Now turn on, or reset the board. 
- 
-==== Compiling from source ==== 
-**This section assumes that you have git, make and a cross-compiler targeting 32-bit arm available on your system!** 
- 
-These are the instructions to fetch the code, and build a binary: 
-<​code>​git clone --branch v2018.01-solidrun-a38x https://​github.com/​SolidRun/​u-boot.git u-boot-clearfog 
-cd u-boot-clearfog 
-export CROSS_COMPILE=<​Set toolchain prefix to your toolchain>​ 
-# optionally add options to configs/​clearfog_defconfig 
-make clearfog_defconfig 
-# optionally configure u-boot graphically 
-# make menuconfig 
-make</​code>​ 
-This will generate u-boot-spl-sdhc.kwb to be used on the Clearfog Pro when booting from an sdcard. 
-To target the Clearfog Base and/or other boot media, set the following options in //​configs/​clearfog_defconfig//​ or through menuconfig: 
-  * Clearfog Pro (default) 
-  <​code>​CONFIG_TARGET_CLEARFOG=y</​code>​ 
-  * Clearfog Base 
-  <​code>​CONFIG_TARGET_CLEARFOG_BASE=y</​code>​ 
-  * SD-Card (default) 
-  <​code>​CONFIG_MVEBU_SPL_BOOT_DEVICE_SDHC=y</​code>​ 
-  * SPI 
-  <​code>​CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI=y</​code>​ 
-  * eMMC 
-  <​code>​CONFIG_MVEBU_SPL_BOOT_DEVICE_MMC=y</​code>​ 
-  * UART 
-  <​code>​CONFIG_MVEBU_SPL_BOOT_DEVICE_UART=y</​code>​ 
- 
-Note: The resulting binaries will carry the respective -sdhc/​-spi/​-emmc/​-uart suffixes in the name. 
- 
-==== Verified Boot ==== 
- 
-Verified Boot is a way to ensure that only authenticated code will be executed on a machine. This page provides instructions on setting this up for the startup phase from u-boot to Linux. 
- 
-Read more here: [[products:​a38x:​software:​development:​verified-boot|Verified Boot]] 
- 
-==== Setup Mac-Address ==== 
- 
-The A38x MicroSoms haven'​t got any fixed or prefused Mac-Addresses. On each power-on a random Mac Address is generated: 
-<​code>​ 
-U-Boot 2018.01 (Mar 19 2018 - 15:48:44 +0000) 
- 
-SoC:   ​MV88F6828-A0 at 1600 MHz 
-DRAM:  1 GiB (800 MHz, 32-bit, ECC not enabled) 
-MMC:   ​mv_sdh:​ 0 
-SF: Detected w25q32bv with page size 256 Bytes, erase size 4 KiB, total 4 MiB 
-*** Warning - bad CRC, using default environment 
- 
-Model: SolidRun Clearfog A1 
-Board: SolidRun ClearFog 
-SCSI:  MVEBU SATA INIT 
-Target spinup took 0 ms. 
-AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode 
-flags: 64bit ncq led only pmp fbss pio slum part sxs  
-Net:    
-Warning: [email protected] (eth1) using random MAC address - d2:​63:​b4:​96:​1c:​cb 
-eth1: [email protected] 
-Warning: [email protected] (eth2) using incremented MAC address - d2:​63:​b4:​96:​1c:​cc 
-, eth2: [email protected] 
-Warning: [email protected] (eth3) using incremented MAC address - d2:​63:​b4:​96:​1c:​cd 
-, eth3: [email protected] 
-Hit any key to stop autoboot: ​ 0 
-</​code>​ 
- 
-The easiest way to avoid this is by saving the U-Boot environment **once** from the U-Boot console: 
-<​code>​saveenv</​code>​ 
- 
-If you instead want to use specific MAC addresses, they can be set per interface using these U-Boot commands: 
-<​code>​ 
-setenv eth1addr c2:​d8:​c5:​2d:​92:​0e 
-setenv eth2addr 2e:​d7:​af:​12:​e1:​96 
-setenv eth3addr 92:​67:​67:​88:​6d:​13 
-saveenv 
-reset 
-</​code>​ 
- 
-The next bootlog should show up like this: 
-<​code>​ 
-Model: SolidRun Clearfog A1 
-Board: SolidRun ClearFog 
-SCSI:  MVEBU SATA INIT 
-Target spinup took 0 ms. 
-AHCI 0001.0000 32 slots 2 ports 6 Gbps 0x3 impl SATA mode 
-flags: 64bit ncq led only pmp fbss pio slum part sxs  
-Net:   eth1: [email protected],​ eth2: [email protected],​ eth3: [email protected] 
-Hit any key to stop autoboot: ​ 0 
-</​code>​ 
- 
-<note important>​By removing the RTC-Battery the U-Boot environment,​ and with it the mac addresses are reset!</​note>​ 
- 
-====== Legacy U-Boot (2013.01) ====== 
 ==== Description ==== ==== Description ====
-=== Build Instructions ===+Discover the endless potential of the powerful ARM based boards of ClearFog. The family includes the ClearFog Pro and ClearFog Base (coming soon). Harnessing the robust processing abilities of the ARMADA 38x SoC from Marvell, the ClearFog offers vast application potential as a flexible development board or a ready to deploy solution. 
 +Alongside the powerful ARMADA 38x SoC, the ClearFog includes a variety of I/O and connectivity technologies such as multiple mini-PCIe/​mSATA sockets, audio/​telephony module header, PoE expansion header, mikroBUS™ – a simple socket allowing you to integrate a wide range of MikroElektronika click boards™ modular extensions.
  
-Following are instructions on how to build u-boot for ClearFog board -+==== Comparison Table ====
  
-<​code>​git clone https://github.com/SolidRun/​u-boot-armada38x.git +^ Description/Model   ^ Clearfog Base                                                                                                                                                                             ^ [[products:​a38x:​clearfog:​pro|Clearfog Pro ]]                                                                                                                                            ^ 
-cd u-boot-armada38x +^ MicroSOM ​           | A388 SoM                                                                                                                                                                                  | A388 SoM                                                                                                                                                                                | 
-export CROSS_COMPILE=<Set toolchain prefix to your toolchain> +^ Memory and Storage ​ | 1GB (up to 2GB)\\ M.2 (2242)**\\ uSD, 8GB eMMC*** (Optional) ​                                                                                                                             | 1GB (up to 2GB)\\ M.2 **\\ uSD, 8GB eMMC*** (Optional) ​                                                                                                                      | 
-make armada_38x_clearfog_config +^ Connectivity ​       | 1 x mPCIE\\ 1 x USB 3.0 port\\ 2 x Port dedicated Ethernet\\ 1 x SFP                                                                                                                      | 2 x mSATA/mPCIE\\ 1 x USB 3.0 port\\ 1 x Port dedicated Ethernet\\ 6 x Port switched Ethernet with jumbo frame (10KB) * *\\ 1 x SFP                                                     | 
-make u-boot.mmc</code+^ I/O and Misc.       | mikroBUS ​<sup>[[products:​a38x:​clearfog:#​mikrobus_-_incompatible_clickboards|(1)]]</sup>\\ Indication LEDs\\ User Push Buttons\\ PoE expansion header\\ RTC Battery\\ FTDI (Console Only)  | Analog Audio/TDM module support\\ GPIO Header (MikroBus)\\ Indication LEDs\\ User Push Buttons\\ PoE expansion header\\ RTC Battery\\ FTDI (Console Only) / Debug Header\\ JTAG Header ​ | 
-This will generate u-boot.mmc and u-boot-uart.mmc where the first one is the image that is normally booted from and the second is a uart version (look below how to use it).+^ OS Support ​         | Linux Kernel 4.x, OpenWRT, Yocto                                                                                                                                                          | Linux Kernel 4.x, OpenWRT, Yocto                                                                                                                                                        | 
 +^ Power               | Wide range 9V-32V                                                                                                                                                                         | Wide range 9V32V\\ Advanced Power Control\\ Fan Control ​                                                                                                                              | 
 +^ Dimensions ​         | 103mm x 75mm                                                                                                                                                                              | 225mm x 100mm                                                                                                                                                                           | 
 +^ Enclosure ​          | Optional Metal Enclosure ​                                                                                                                                                                 | Optional Metal Enclosure ​                                                                                                                                                               |
  
 +* M.2 includes USB 3.0, SATA, GNSS, 3G modules support (in carrier Base only) \\
 +* * Only 5 ports are supported in the managed switch scenario. ​
  
-=== eMMC Flashing Instructions === +MicroSom available ​in Commercial (0°C ~ 70°C ambient) and Industrial grade (-40°C ~ 85°C ambient)\\ 
-Short Summary: +ARMADA 38x SoC maximum die temperature must be below 115°C in both Commercial and Industrial grades\\ 
-  * Booting the device ​in UART +ARMADA 38x SoC processor maximum speed for industrial grade devices is 1.3GHz \\
-  * Getting up Uboot +
-  * Copy the operationsystem onto a USB-Drive ​(get it from images.solid-build.xyz) +
-  * Using Uboot to write the operation-files onto the emmc(emmc write) +
-  * (depends on which board you use - just update the dtb file)+
  
-A useful blogpost can be found herehttp://wtarreau.blogspot.de/​2016/​09/​installing-linux-on-solidrun.html+<note important>​Please note that if you select eMMC version the SDHC will not be accessible on the board.</​note>​ 
 +Due to the fact that uSD and eMMC features are exclusive (can not both work in the same product) and since the uSD version is much easier to develop with, we recommend to use the uSD version for evaluation and early development phase and the eMMC version for final product development and mass deployment. 
 +==== Block Diagrams ==== 
 +== Clearfog Base == 
 +{{:a38x:carrierboard:​sr-a38x-clearfog_base-block_diagram.png?​direct&​400|}} 
 +== Clearfog Pro == 
 +{{:​a38x:​carrierboard:​sr-a38x-clearfog_pro-block_diagram.png?​direct&​400|}} 
 +\\ 
 +\\
  
-Following are instructions on how to flash u-boot on an on MicroSOM eMMC (requires to order MicroSOM with eMMC from SolidRun).+==== PoE ====  
 +The Clearfog Pro Carrierboard is prepared for a power of ethernet modul. ​(PoE)
  
-The main different between booting u-boot on eMMC and MicroSD is that in MicroSD u-boot resides in second sector of the SD card, where in eMMC it must reside in first block in either the main eMMC storage or it's first or second boot partitions.+==== Switching PCIe to MSATA ==== 
  
-So if the main phyiscal partition ​of eMMC is used then it will override ​the partition tableSo it's recommended to use the boot partitions for that purpose - +The mini-pcie slots on the top of the board can be configured to be either SATA or PCIe.  ​This configuration ​does not auto-detect yet and needs to be hard coded in u-boot I can add a u-boot ​env variable to switch between them.
-  * Boot u-boot via UART +
-  * Load the built u-boot.mmc described above to memory; assuming address 0x02000000. It can be loaded from TFTP (sadly USB does not work at this point) +
-  * Set working partition ​to be the boot partition #1 by running 'mmc dev 0 1'. You can run 'help mmc' to see different ​u-boot ​commands +
-  * Flash u-boot ​into the FIRST block 'mmc write 0x02000000 0 0x800'Notice that you can modify 0x800 to the actual u-boot size in 512bytes blocks+
  
-TFTP sample: 
-<​code>​dhcp 
-tftpboot 0x02000000 192.168.178.68:​u-boot.mmc 
-mmc write 0x02000000 0 ${filesize}</​code>​ 
  
-Alternatively you can boot Linux and run  
-  * dd if=u-boot.mmc of=/​dev/​mmcblk0boot0 
- 
-=== Booting the uart version of u-boot === 
-When not using secure boot the Armada 38x processor can be stopped from booting through it's reset strap boot vector and redirected to boot from uart. 
- 
-This is mostly used for system manufacturing,​ unbricking etc... 
- 
-The u-boot-uart.mmc version that is built above is a ready to use xmodem protocol transferable image to Armada 38x processor. But first the processor needs to be redirected from it's default boot vector. 
- 
-This can be achieved by running the '​download-serial.sh'​ script that is part of SolidRun u-boot - 
- 
-https://​github.com/​SolidRun/​u-boot-armada38x/​commit/​1e88e63a25ce68d8c1295179c04455ca2ffdfc8a 
-https://​github.com/​SolidRun/​u-boot-armada38x/​blob/​u-boot-2013.01-15t1-clearfog/​download-serial.sh 
- 
-An example is as follows - 
-<​code>​ 
-./​download-serial.sh /​dev/​ttyUSB0 u-boot-uart.mmc 
-</​code>​ 
-Embedded in download-serial.sh a small C program that gets built every time the script runs and requires curses libraries. 
- 
-=== Booting directly from M.2 SSD === 
-Armada 38x supports booting directly from a SATA device. You can do that too on ClearFog base and pro. 
- 
-**Booting from CleraFog pro M.2 SSD instructions** 
-  - Hardware modification first - remove RN5 (resistor array number 5) from the board. RN5 can be found near the M.2 connector on the bottom side of the board.{{ :​products:​a38x:​software:​development:​rn5.png?​200 |}} 
-  - RN5 is there first place in order to force pull-up B2B_MPP57 (SPI Clock) on a pin on Mikrobus since one of it's pins is also used as boot select reset strap. If Mikrobus is not used then this can be removed without worry. If Mikrobus is used then make sure that B2B_MPP57 is not pulled up or down. 
-  - Follow the above build instructions but run 'make u-boot.sata. This will generate u-boot.sata target that can be flashed on the second sector of the M.2 SSD 
-  - For flashing the the image run 'dd if=/​dev/​u-boot.sata of=/dev/sdX bs=512 seek=1'​ on your PC. 
-  - Alternatively you can boot the -uart version as described above and use '​tftp'​ and '​scsi'​ commands in u-boot to tftp the u-boot.sata file and then write it to the SSD via 'scsi write' command. 
- 
-Notice that with this support the environment variables are still assumed to be on the SD or eMMC device since environment on SCSI is still not supported. 
- 
-=== EMMC Boot issues === 
- 
-When using the micro SD there is the card detect signal which tells if the card is inserted or not. 
-In eMMC case this doesn'​t exist; but still the card detect is being pulled since it's using the same device tree. 
- 
- 
-The card detect on the carrier board will be used and then the kernel should recognize the kernel. 
- 
-The fix would be as follows - 
-<​code>​ 
-diff --git a/​arch/​arm/​boot/​dts/​armada-388-clearfog.dts b/​arch/​arm/​boot/​dts/​armada-388-clearfog.dts 
-index 8fa7b27..b8b05ad 100644 
---- a/​arch/​arm/​boot/​dts/​armada-388-clearfog.dts 
-+++ b/​arch/​arm/​boot/​dts/​armada-388-clearfog.dts 
-@@ -308,7 +308,7 @@ 
-  
-                        [email protected] { 
-                                bus-width = <4>; 
--                               ​cd-gpios = <&​gpio0 20 GPIO_ACTIVE_LOW>;​ 
-+//                             ​cd-gpios = <&​gpio0 20 GPIO_ACTIVE_LOW>;​ 
-                                no-1-8-v; 
-                                pinctrl-0 = <&​clearfog_sdhci_pins 
-                                             &​clearfog_sdhci_cd_pins>;​ 
-</​code>​ 
-Following is a link to a dtb that has that fixed - 
-https://​dl.dropboxusercontent.com/​u/​72661517/​tbr/​armada-388-clearfog.dtb ​   
- 
-==== Switching PCIe to MSATA ====  
 You need to modify the #if 1 to #if 0 in the following two places - You need to modify the #if 1 to #if 0 in the following two places -
    
Line 294: Line 54:
 This will modify the SERDES of the PEX (pcie) to become a SATA port This will modify the SERDES of the PEX (pcie) to become a SATA port
  
 +==== Bootdevice (Dipswitch) ====
 +On both carrierboards - the bootdevice can be chosen by using the SW1 Dipswitch.
  
-==== HW Clock Issues ==== 
  
-Boot the board, stop it when it gets to "Hit any key to stop autoboot",​ and then type 'date reset' enter twice.+{{:​a38x:​carrierboard:​dipssw1.jpg?​300|}} 
 +<​note>​**White is the dip position. Black is the background.**</​note>​
  
-Note that the u-boot that is released on SolidRun github account this is not needed anymore.+<note important>​UART Booting does **not** work with above configuration! Instead, use **01001** where 1 means on, and 0 means off.</​note>​
  
-==== Customizing u-boot for a custom board ====+Additional Information:​ If the MicroSom got EMMC onboard - SD wont work.</​note>​ 
 +==== mikroBUS ​incompatible clickboards ​==== 
 +While the Clearfog does implement the mikroBUS standard, there are still ClickBoards that do not work on the Clearfog! 
 +Before buying, please make sure that each pin used by the board supports the required function.
  
-The easiest method to customize u-boot for a custom ​board using the A38x MicroSOM ​is to start with the clearfog ​board configuration and modifying it to the custom board.+Sample: OLED C Click 
 +This board requires ​the AN pin which is meant as an **analogue input** on the clearfogto be used as a **digital output** for controlling ​the display controllerHowever the Clearfog does currently (revision 2.1) not expose any output functionality on this specific pin. 
 +Mikroelektronika staff will gladly answer any compatibility questions you might have. So feel free to contact them!
  
-The following are high level instructions how to do that - +Sometimes there is an easy solution ​to still use the given clickboardThis is a solution for OLED C
-  * Read the pin muxing from the [[products:​a38x:​documents|A38X Documents]] +The INT pin on the mikrobus header is not used by clickboardso one just needs to solder a little wire bridging INT with AN onto the clickboardAnd make sure to adapt all code to the new pin!
-  * Every MPP can be configured to the required function in the following code - https://​github.com/​SolidRun/​u-boot-armada38x/​blob/​u-boot-2013.01-15t1-clearfog/​board/​mv_ebu/​a38x/​armada_38x_family/​boardEnv/​mvBoardEnvSpec38x.h#​L102 +
-  * Modifying the high speed SERDES lines is done here - https://​github.com/​SolidRun/​u-boot-armada38x/​blob/​u-boot-2013.01-15t1-clearfog/​tools/​marvell/​bin_hdr/​src_phy/​a38x/​mvHighSpeedTopologySpec-38x.c#​L89 +
-  * Modifying ​the L2 switch (if it's available)number of Ethernet ports, I/O expander etc... is done here - https://​github.com/​SolidRun/​u-boot-armada38x/​blob/​u-boot-2013.01-15t1-clearfog/​board/​mv_ebu/​a38x/​armada_38x_family/​boardEnv/​mvBoardEnvSpec38x.c#​L214+
  
-==== Modifying a 32bit DDR bus A388 MicroSOM to utilize only 16bit DDR ==== +==== Accessing GPIO Pins ====
-A developer that wants to evaluate the performance when using 16bit DDR bus width (like in the base MicroSOM) then the following patch on u-boot can accomplish that.+
  
-With this patch only one DDR device ​is being used as x16 instead of two DDR devices being used as x32 -+This is an example code for accessing the GPIOs on the Clearfog: \\
 <​code>​ <​code>​
-diff --git a/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h b/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h +Example for gpio 22
-index c0fa1e7..f71f3f8 100755 +
---- a/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h +
-+++ b/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h +
-@@ -117,7 +117,7 @@ MV_HWS_TOPOLOGY_MAP TopologyMap[] = +
-     0x1, /* active interfaces */ +
-     /​*cs_mask,​ mirror, dqs_swap, ck_swap X PUPs                                     ​speed_bin ​            ​memory_device_width ​ mem_size ​    ​frequency ​ casL casWL      temperature */ +
- ​ {{{{0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0}},​ SPEED_BIN_DDR_CUST_BOARD_2,​ BUS_WIDTH_CUST_BOARD_2 , MEM_4G, DDR_FREQ_800,​ 0 ,   0 , MV_HWS_TEMP_LOW}},​ +
--    INTERFACE_BUS_MASK_32BIT ​ /* Buses mask */ +
-+    INTERFACE_BUS_MASK_16BIT ​ /* Buses mask */ +
-     } +
- }; +
- +
  
 +cd /​sys/​class/​gpio/ ​
 +echo 22 > export ​
 +cd gpio22/ ​
 +echo out > direction ​
 +echo 0 > value 
 </​code>​ </​code>​
-==== Supporting 2GByte memory configuration ==== 
-It is possible to order from SolidRun 2GByte memory configuration where the support is using twin die memory configuration. 
  
-Twin die is a configuration of DDR components where there are two DDR dies in the same package and each gets it's own chip-select control. 
- 
-<​code>​ 
-diff --git a/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h b/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h 
-index c0fa1e7..715ec45 100755 
---- a/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h 
-+++ b/​tools/​marvell/​bin_hdr/​inc/​ddr3_soc/​a38x/​ddr3_a38x_topology.h 
-@@ -116,7 +116,7 @@ MV_HWS_TOPOLOGY_MAP TopologyMap[] = 
-     { 
-     0x1, /* active interfaces */ 
-     /​*cs_mask,​ mirror, dqs_swap, ck_swap X PUPs                                     ​speed_bin ​            ​memory_device_width ​ mem_size ​    ​frequency ​ casL casWL      temperature */ 
-- {{{{0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0},​ {0x1,​0,​0,​0}},​ SPEED_BIN_DDR_CUST_BOARD_2,​ BUS_WIDTH_CUST_BOARD_2 , MEM_4G, DDR_FREQ_800,​ 0 ,   0 , MV_HWS_TEMP_LOW}},​ 
-+ {{{{0x3,​0,​0,​0},​ {0x3,​0,​0,​0},​ {0x3,​0,​0,​0},​ {0x3,​0,​0,​0},​ {0x3,​0,​0,​0}},​ SPEED_BIN_DDR_CUST_BOARD_2,​ BUS_WIDTH_CUST_BOARD_2 , MEM_4G, DDR_FREQ_800,​ 0 ,   0 , MV_HWS_TEMP_LOW}},​ 
-     ​INTERFACE_BUS_MASK_32BIT ​ /* Buses mask */ 
-     } 
- }; 
-</​code>​ 
- 
-==== Setup Mac-Address ==== 
- 
-The A38x MicroSoms havent got any fixed or prefused Mac-Addresses. On each boot a random Mac Address is setup: 
-<​code>​ 
-U-Boot 2017.03 (Apr 23 2017 - 18:30:33 +0000) 
- 
-SoC:   ​MV88F6828-A0 at 1600 MHz 
-I2C:   ready 
-DRAM:  1 GiB (800 MHz, ECC not enabled) 
-MMC:   ​mv_sdh:​ 0 
-PCI: 
-  00:​01.0 ​    - 168c:003c - Network controller 
-Model: SolidRun Clearfog A1 
-Board: SolidRun ClearFog 
-Net: 
-Warning: [email protected] (eth2) using random MAC address - 92:​67:​67:​88:​6d:​13 
-eth2: [email protected] 
-Warning: [email protected] (eth3) using random MAC address - 2e:​d7:​af:​12:​e1:​96 
-, eth3: [email protected] 
-Warning: [email protected] (eth1) using random MAC address - c2:​d8:​c5:​2d:​92:​0e 
-, eth1: [email protected] 
-Hit any key to stop autoboot: ​ 0 
-</​code>​ 
- 
-To avoid this, you can manually setup a Mac-Address by hit a key during uboot loads, and then enter following commands: 
-<​code>​ 
-setenv eth1addr c2:​d8:​c5:​2d:​92:​0e 
-setenv eth2addr 2e:​d7:​af:​12:​e1:​96 
-setenv eth3addr 92:​67:​67:​88:​6d:​13 
-saveenv 
-reset 
-</​code>​ 
- 
-The next bootlog should showed up like this: 
-<​code>​ 
-Model: SolidRun Clearfog A1 
-Board: SolidRun ClearFog 
-Net:   eth2: [email protected],​ eth3: [email protected],​ eth1: [email protected] 
-Hit any key to stop autoboot: ​ 0 
-</​code>​ 
  
-<note important>​By removing the RTC-Battery the  mac addresses are gone</​note>​