On Fri, 4 Dec 2020 19:49:37 +0100 Danny Milosavljevic wrote:> > Now I want to make it boot it from SATA instead. The question is what "boot from SATA" means here, it could mean different things: - Have u-boot on the microSD card and load the rootfs from the SATA HDD/SSD. - Make the bootrom load u-boot from the SATA HDD/SSD. Luckily the I.MX6 SOC is capable of loading u-boot from a SATA HDD/SSD but it needs to be configured for that. However it looks like the novena-eeprom utility only somehow does the former: https://github.com/xobs/novena-eeprom/blob/master/novena-eeprom.h In addition I'm unsure if upstream u-boot can parse the sataroot flag as I didn't find it but I only looked very rapidely and not on the latest source code. To configure the I.MX6 SOC to boot from a SATA HDD/SSD you'll have to dig in the I.MX6Q reference manual and the schematics of the novena to see how it is configured. - You have fuses that select a boot mode - One of the boot mode selected by the fuses configuration enables GPIO overrides (this is what we want here). So with the reference manual and the schematics depending on the fuses configurations, you could be able to understand the boot order of the SOC (which peripherals it tries to load u-boot from and in which order). And if it's set in GPIO override mode and that the GPIOs are routed to some switch or jumpers, you can probably manage to change the way it boots and make sure it tries to load u-boot from the SATA HDD/SSD. The u-boot source code also may have documentation about that. Some boards (like the TBS2910) have some documentation on how they are configured to boot. Since I didn't find the novena in doc/boards, you might still have some luck if there is some more generic documentation about booting devices with I.MX6Q. If the Novena can't boot from SATA as-is, you could try to see if there isn't a way through the configuration headers to configure the bootrom to try to boot on SATA somehow. That configuration header (DCD) will probably need to be on a peripheral that the bootrom tries to boot on. Booting of I2C eeproms is possible on I.MX6 but again you'll have to check the documentation to see if it satisfies all requirements (including if the eeprom is wired to the proper I2C controller and/or pads to be able to be read from the bootrom). If not in the worst case you will probably need some minimal code on a peripheral the bootrom tries to load code from. There is probably some resources for the Novena (Forums, IRC channels etc) that already have all theses answers but in any case understanding a bit of the context here could help parse the answers. Denis.