2015/12/3

wandbord bsp and freescale official bsp ...

結果, sabresd 的 eMMC 是 SDHC4, wandboard 的 eim sd slot 是 SDHC3
wandboard 的 bootmode 是 boot to SD3
所以 u-boot 去 check SD3 的 CD pin, 發現level 不對。就沒 init 了。

只要改
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index d24eea1..9646438 100644
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -549,7 +549,7 @@ int board_mmc_getcd(struct mmc *mmc)
                ret = !gpio_get_value(USDHC2_CD_GPIO);
                break;
        case USDHC3_BASE_ADDR:
-               ret = !gpio_get_value(USDHC3_CD_GPIO);
+               ret = 1; /* wandboard : assum always boot from SD3 *?
                break;
        case USDHC4_BASE_ADDR:
                ret = 1; /* eMMC/uSDHC4 is always present */

就可以開機了..
然後開機到 kernel.....
之後因為 wandboard 是用 LDO 分散式的 電源,sabresd 是用 pmic , ,, 所以....

兩邊用 tig 看一下 git log, 發現wandboard 真的是基於 l5.0.0_1.0.0-ga 這個tag 開始修改。


/hardware/imx/wlan/atheros/compat-wireless/config.mk:49: 
*** "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG80211=m if you want to use this thing.".  Stop.
wandboard 的 bsp 是:
diff --git a/wlan/Android.mk b/wlan/Android.mk
index 5fb1071..25f5781 100644
--- a/wlan/Android.mk
+++ b/wlan/Android.mk
@@ -1,4 +1,4 @@
 atheros_dirs := compat-wireless
 ifeq ($(BOARD_WLAN_DEVICE),$(filter $(BOARD_WLAN_DEVICE),ar6003 UNITE))
-    include $(call all-subdir-makefiles,$(atheros_dirs))
+    #include $(call all-subdir-makefiles,$(atheros_dirs))
 endif
所以是用 kernel 的 source.


燒錄出問題。
dd: failed to open ‘boot-imx6dl.img’: No such file or directory
dd: failed to open ‘recovery-imx6dl.img’: No such file or directory

看一下 燒錄 script:
function flash_android
{
    bootloader_file="u-boot-${soc_name}.imx"
    bootimage_file="boot-${soc_name}.img"
    recoveryimage_file="recovery-${soc_name}.img"
if [ "${flash_images}" -eq "1" ]; then
    echo "flashing android images..."    
    echo "bootloader: ${bootloader_file}"
    echo "boot image: ${bootimage_file}"
    echo "recovery image: ${recoveryimage_file}"
    echo "system image: ${systemimage_file}"
    dd if=/dev/zero of=${node} bs=1k seek=384 count=129
    dd if=${bootloader_file} of=${node} bs=1k seek=1
    dd if=${bootimage_file} of=${node}${part}1
    dd if=${recoveryimage_file} of=${node}${part}2
    dd if=${systemimage_file} of=${node}${part}5
    sync
fi
}

soc_name 就是 -f 的 option

所以要看一下 有沒有..
  • u-boot-XXX.imx
  • boot-XXX.img
  • recovery-XXX.img
  • system.img
先從 boot-XXX.img 開始..
$(INSTALLED_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES)

        for dtsplat in $(TARGET_BOARD_DTS_CONFIG); do \
                DTS_PLATFORM=`echo $$dtsplat | cut -d':' -f1`; \
                DTS_BOARD=`echo $$dtsplat | cut -d':' -f2`; \
                BOOT_IMAGE_BOARD=$(patsubst %.img,%-$$DTS_PLATFORM.img,$@); \
                $(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_ARGS) --second $(PRODUCT_OUT)/$$DTS_BOARD $(BOARD_MKBOOTIMG_ARGS) --output $@; \
                $(BOOT_SIGNER) /boot $@ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VERITY_SIGNING_KEY) $@;\
                $(call assert-max-image-size,$@,$(BOARD_BOOTIMAGE_PARTITION_SIZE)); \
                cp -f $@ $$BOOT_IMAGE_BOARD; \
        done
其中
     BOOT_IMAGE_BOARD=$(patsubst %.img,%-$$DTS_PLATFORM.img,$@); \
決定 boot-$$DTS_PLATFORM.img
就是從 TARGET_BOARD_DTS_CONFIG 來的。
這個宣告在 device/fsl/wandboard/BoardConfig.mk:
wandboard/BoardConfig.mk:
TARGET_BOARD_DTS_CONFIG := imx6q-wandboard.dtb imx6dl-wandboard.dtb
所以是這裡寫錯了...
應該是..
TARGET_BOARD_DTS_CONFIG := imx6q:imx6q-wandboard.dtb imx6dl:imx6dl-wandboard.dtb

這樣就會 build 出 xxx=imx6dl 的 image

沒有留言:

張貼留言