Jump to content
  • 0

ClearFogBase with eMMC SoM - need help for cross-compile u-boot.sata



Hi all,


i have the A38X MicroSom with emmc (yes bad idea) with ClearFog Base, and buy me an 64GB M.2 SSD for i Think easy way to dd a img on emmc.  I have wait a long time for my Hardware   :(  and now musst be more time invest for my first boot up.


I've been asking for concrete:






git clone https://github.com/SolidRun/u-boot-armada38x.git 
cd u-boot-armada38x
export CROSS_COMPILE=<Set toolchain prefix to your toolchain>
make armada_38x_clearfog_config
make u-boot.mmc



What is my toolchain prefix, this: arm-none-linux-gnueabi- ?
I have my host linux pc, with debian x86 / amd64, ARM compatible? if so which packages are required for it, with add Architecture armhf? 
Is the right packages for the cross-compiler: gcc-arm-linux-gnueabihf? And in which repository do I find it?
make u-boot.sata Is clear to me.
the bootdevice can be chosen by using the DIP switch, Is clear to me to.
dd if=u-boot.sata of=/dev/sdX bs=512 seek=1 or must be set another seek for my M.2 SSD?
Please Please help me for my first boot
Many Thanks
Edit: I have now more information, this i'will try it and give a answer it if work :)



Tested boot from SD, eMMC, SPI+USB, SATA

Build tools:


Edit2: I have copy this with dd if=Armbian_5.25_Clearfogbase_Debian_jessie_default_4.4.45.img of=/dev/sdc bs=4M; sync but not work :( , this is my output:




OM - 1.73
Booting from AHCI
Probing HBA- 0 port 0 SATA device found
BootROM: Bad header at offset 00000001
BootROM: Bad header at offset 00000022
BootROM: Bad header at offset 00001000
BootROM: Bad header at offset 00002000
BootROM: Bad header at offset 00003000
BootROM: Bad header at offset 00004000
BootROM: Bad header at offset 00005000
BootROM: Bad header at offset 00006000
BootROM: Bad header at offset 00007000

Trying Uart


This is my SSD:




Bauform: Solid State Module (SSM)
• Formfaktor: M.2 2242
• Schnittstelle: M.2/​B-M-Key (SATA 6Gb/​s)
• lesen: 450MB/s
• schreiben: 90MB/s
• IOPS 4K lesen/​schreiben: 40k/​20k
• Controller: Transcend TS6500, 4 NAND-Kanäle
• Protokoll: AHCI


What is the problem and how i can fix it?




I have read a lot more and have come to the conclusion that the only one is the hard way :( see this at last post from "Pontus Jon Jensen Karlsson" in this Thread




So yeah there's some tricks required to get the eMMC version up and running, as you might have noticed the SD card doesn't load.

That's because the eMMC on-board chip is using the same circuit as the SD card and thus overrides it.


So your only option to get the U-Boot booting is through UART, Solid-Run has provided some information regarding this on their wiki (read page 2 of this thread).

I found that I had to compile the latest U-Boot myself, the compilation procedure is detailed in their wiki as well. Make sure you're using a GCC 4 toolchain as their U-Boot fork does

not contain the GCC 5 patches yet.


Once you get it booted you will need to flash the U-Boot firmware to the first sector of your eMMC (also detail in the wiki, although slightly incorrect).

Now once you've got U-boot on your eMMC you can boot it as usual without UART. From here you need to get an image written into your eMMC, now here's where it gets really tricky.


I tried many approaches to write an image from U-Boot but I was unable to do anything from here due to an error "sdhci_transfer_data: Error detected in status(0x408000)!".

This guy has documented the same approach I had to take in order to get it loaded, basically I booted OpenWRT from an initram image through TFTP, partitioned the disks from there and wrote the image to the partition.


So all in all, the setup process for this is extremely dull and boring and I'm really glad I only had to do this once!



Link to comment
Share on other sites

3 answers to this question

Recommended Posts

Armbian is a community driven open source project. Do you like to contribute your code?

This topic is now closed to further replies.

  • Create New...