
The eMMC boot works fine, but "env save" fails with message:
Saving Environment to FAT... Failed (1)
That's because CONFIG_ENV_IS_IN_MMC=y is not enabled, which wouldn't work without CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT", because in include/configs/am335x_evm.h it defines eMMC environment options:
... #elif defined(CONFIG_EMMC_BOOT) #define CONFIG_SYS_MMC_ENV_DEV 1 #define CONFIG_SYS_MMC_ENV_PART 0 #define CONFIG_ENV_OFFSET 0x260000 #define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) #define CONFIG_SYS_REDUNDAND_ENVIRONMENT #define CONFIG_SYS_MMC_MAX_DEVICE 2
And if we enable those two options in am335x_evm_defconfig, it leads to wrong pin-muxing in board/ti/am335x/mux.c (because CONFIG_NAND is also enabled in am335x_evm_defconfig):
} else if (board_is_bone_lt()) { ... configure_module_pin_mux(mmc0_pin_mux); #if defined(CONFIG_NAND) && defined(CONFIG_EMMC_BOOT) configure_module_pin_mux(nand_pin_mux); <---- this line is executed #elif defined(CONFIG_NOR) && defined(CONFIG_EMMC_BOOT) configure_module_pin_mux(bone_norcape_pin_mux); #else configure_module_pin_mux(mmc1_pin_mux); #endif
So I don't see any other way to overcome this issue other than keeping separate defconfig for NAND and eMMC board variants. Of course, I can fix commit message to state the reason more clearly. We can also rename am335x_boneblack_defconfig to am335x_evm_mmc_defconfig, but it doesn't change the fact it should be done. If somebody sees another way around, please do tell.
Thanks!
On Thu, Sep 12, 2019 at 6:43 PM Andre Heider a.heider@gmail.com wrote:
Hi,
On 9/12/19 5:23 PM, Sam Protsenko wrote:
Commit 8fa7f65dd02c ("configs: Remove am335x_boneblack_defconfig") removes defconfig for BeagleBone Black board, and it's advised to use am335x_evm_defconfig for all AM335x boards. But it's impossible to use am335x_evm_defconfig in eMMC use-case without modifications for BBB (NAND must be disabled, MMC enabled, etc). This is inconvenient for user to do such modifications via menuconfig (only developer knows what should be done). Furthermore, enabling MMC options in am335x_evm_defconfig leads to wrong pin-muxing scheme in board/ti/am335x/mux.c, because both NAND and MMC options are going to be enabled in the config, so that pins are muxed for BBB with NAND cape, which in turn leads to non-functioning eMMC. There is no way to make the single defconfig working for both eMMC and NAND use-cases, because we can't figure out in run-time which board configuration is used by user (EVM, BBB, or BBB with NAND cape). Hence we rely on CONFIG options to figure out which configuration is used. Because of this we can't use single defconfig for AM335x EVM and BBB.
for the record: I booted my bbb with am335x_evm_defconfig without any config changes from emmc using master a few days ago just fine. It works just as well as booting from sd card.
That's with using distro boot, the legacy env cmds don't try to boot off emmc iirc.
Regards, Andre