各位尊敬的FAE
以前我问过类似的问题,是关于5.0的烧写。
当时发现如果修改对应的vbs,加上-ldo参数,即可顺利烧写Android5.0并启动。
(只是boot和recovery的文件名要去掉ldo)
这次我下载了5.1专用的mfgtools准备烧写5.1.1,
并按照之前5.0的做法,修改对应的vbs,加上-ldo参数。
根据ucl2.xml,没有去掉boot和recovery文件名中的ldo。
mfgtools可以启动,
但是烧写到Jumping to OS image.
时,烧写停止,串口输出如下内容:
U-Boot 2015.04-imx_v2015.04_3.14.52_1.1.0_ga+g53e6f33 (Nov 01 2015 - 14:00:23)
CPU: Freescale i.MX6DL rev1.1 at 792 MHz
CPU: Temperature 46 C
Reset cause: POR
Board: MX6-SabreSD
I2C: ready
DRAM: 1 GiB
Can't find PMIC:PFUZE100
initcall sequence 4ff93250 failed at call 17803664 (err=-19)
### ERROR ### Please RESET the board ###
mfgtools的log如下:
DLL version: 2.6.2
Tuesday, January 19, 2016 10:10:32 Start new logging
ModuleID[2] LevelID[10]: CMyExceptionHandler thread is running
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[00673A28]
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[00673EF8]
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[04179458]
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[04179050]
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[03FED700]
ModuleID[2] LevelID[1]: new MxHidDeviceClass
ModuleID[2] LevelID[10]: new MxHidDevice[03FEDBD0]
ModuleID[2] LevelID[10]: Device Manager thread is running
ModuleID[2] LevelID[1]: Can't set m_hStopEvent before it initialized or it already stop
ModuleID[2] LevelID[10]: CmdOperation[0] device chagned and reset to state 0
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is E:\mfgtools51\Profiles\linux\OS Firmware\firmware\u-boot-imx6dlsabresd_sd.imx
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is E:\mfgtools51\Profiles\linux\OS Firmware\firmware\zImage, address is 0x12000000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is E:\mfgtools51\Profiles\linux\OS Firmware\firmware\fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.gz.u-boot, address is 0x12C00000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: ExecuteCommand--Load[WndIndex:0], File is E:\mfgtools51\Profiles\linux\OS Firmware\firmware\zImage-imx6dl-sabresd-ldo.dtb, address is 0x18000000
ModuleID[2] LevelID[10]: PortMgrDlg(0)--Command Load excute successfully, retry count: 0
ModuleID[2] LevelID[10]: ExecuteCommand--Jump[WndIndex:0]
ModuleID[2] LevelID[10]: *********MxHidDevice[03FEDBD0] Jump to Ramkernel successfully!**********
ModuleID[2] LevelID[10]: CmdOperation[0], current state command has been finished and the last command is successful, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CmdOperation[0] device chagned and reset to state 0
ModuleID[2] LevelID[10]: CmdOperation[0], skip current command, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: ExecuteCommand--Boot[WndIndex:0], File is E:\mfgtools51\Profiles\linux\OS Firmware\firmware\u-boot-imx6dlsabresd_sd.imx
ModuleID[2] LevelID[1]: MxHidDevice::Write() Error writing to device 0x79.
ModuleID[2] LevelID[1]: Failed to initialize memory!
ModuleID[2] LevelID[1]: PortMgrDlg(0)--MxHidDevice--Command Boot excute failed
ModuleID[2] LevelID[10]: CmdOperation[0], current command executed failed, so SetEvent(hDevCanDeleteEvent)
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed
ModuleID[2] LevelID[10]: CCmdOpreation[0] thread is Closed
ModuleID[2] LevelID[10]: DeviceManager::OnMsgDeviceEvent() - EVENT_KILL
ModuleID[2] LevelID[10]: CMyExceptionHandler::OnMsgExceptionEvent() - KillExceptionHandlerThread
ModuleID[2] LevelID[10]: Exception Handler thread is closed
ModuleID[2] LevelID[1]: delete MxHidDeviceClass
ModuleID[2] LevelID[10]: delete MxHidDevice[03FEDBD0]
ModuleID[2] LevelID[10]: Device Manager thread is closed
我试着
1,替换之前5.0的uboot
2,全部替换成5.0的四个img文件
均没有改善,错误依旧
有人知道为什么吗?该如何修改?
已解决! 转到解答。
这个估计要根据错误提示修改uboot的源码,但是如何编译得到mfgtool专用的uboot,请参考我发的问题
如何获得mfgtool下的u-boot-imx6dlsabresd_sd.imx?
FAE给了答复,但我还没时间去测试,哪位有兴趣可以试一下。
并希望能告诉我结果。
你好 ,我使用的正是Android5.1版本的mfgtool。直接使用官网提供mfgtool的u-boot固件就会报Can't find PMIC:PFUZE100,因为我的板子是没有PMIC的,所以我正想请教的就是如何自己编译mfgtool使用的u-boot firmware。我屏蔽了PMIC初始化编译了一个uboot,放到firmware文件夹,Can't find PMIC:PFUZE100的错误是没有了,但是只能跑uboot引导不了内核,log如下:
U-Boot 2015.04-ga893753-dirty (May 18 2016 - 14:36:10)
CPU: Freescale i.MX6DL rev1.1 at 792 MHz
CPU: Temperature 56 C
Reset cause: WDOG
Board: MX6-SabreSD
I2C: ready
DRAM: 1 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
*** Warning - bad CRC, using default environment
No panel detected: default to Hannstar-XGA
Display: Hannstar-XGA (1024x768)
In: serial
Out: serial
Err: serial
check_and_clean: reg 0, flag_set 0
Fastboot: Normal
flash target is MMC:2
Net: Phy 1 not found
PHY reset timed out
FEC [PRIME]
Error: FEC address not set.
Boot from USB for mfgtools
Use default environment for mfgtools
Run bootcmd_mfg: <NULL>
=>
今天编译Android6.0刚好又遇到这个问题了,这里给自己留个笔记吧。
之所以在编译自己的uboot固件后会出现:
Boot from USB for mfgtools
Use default environment for mfgtools
Run bootcmd_mfg: <NULL>
=>
是因为编译时使用的是:
make mx6qsabresdandroid_config
这个配置文件会将CONFIG_EXTRA_ENV_SETTINGS重新定义,这个是作为正常Android启动用的
所以如果作为uboot固件使用,编译应该是:
make mx6qsabresd_config
现在的配置文件取消了mfg_defconfig这样的名称了,是因为现在的uboot镜像文件不论作为MFG工具的固件还是正常的Linux启动是通用的了
这是我解决此问题后的补丁记录,可以参考一下:
mfg烧写报错:Uboot报Can't find PMIC:PFUZE100
修改方式:
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index 6ef5131..5f2ab8f 100755
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -972,6 +972,7 @@ int board_init(void)
static struct pmic *pfuze;
int power_init_board(void)
{
+ return 0;
unsigned int reg, ret;
pfuze = pfuze_common_init(I2C_PMIC);
diff --git a/include/configs/mx6sabreandroid_common.h b/include/configs/mx6sabreandroid_common.h
index d2be182..b2554ba 100755
--- a/include/configs/mx6sabreandroid_common.h
+++ b/include/configs/mx6sabreandroid_common.h
@@ -51,13 +51,8 @@
#define CONFIG_SUPPORT_RAW_INITRD
#define CONFIG_SERIAL_TAG
-#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "splashpos=m,m\0" \
- "fdt_high=0xffffffff\0" \
- "initrd_high=0xffffffff\0" \
#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
重新编译uboot然后替换mfg的firmware里对应的uboot即可
李晨,你好
非常感谢你的回复。按照你给的这个补丁来做,真的不会停在这里:
Run bootcmd_mfg:
但我现在又遇到新的问题,在使用mfgtool下载的时候,卡在了这个地方,想问下你有没有遇到过这种情况?
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
wm8962 0-001a: Failed to read ID register
wm8962: probe of 0-001a failed with error -5
imx-wm8962 sound: failed to find codec platform device
imx-wm8962: probe of sound failed with error -22
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
Key type dns_resolver registered
cpu cpu0: failed to get regulators
imx6q-cpufreq: probe of imx6q-cpufreq.0 failed with error -2
Registering SWP/SWPB emulation handler
mmc3: new DDR MMC card at address 0001
mmcblk3: mmc3:0001 SEM08G 7.39 GiB
mmcblk3boot0: mmc3:0001 SEM08G partition 1 1.00 MiB
mmcblk3boot1: mmc3:0001 SEM08G partition 2 1.00 MiB
mmcblk3rpmb: mmc3:0001 SEM08G partition 3 128 KiB
reg-fixed-voltage regulators:regulator@0: Failed to resolve vin-supply for usb_otg_vbus
imx_usb 2184000.usb: Can't register ci_hdrc platform device, err=-517
reg-fixed-voltage regulators:regulator@1: Failed to resolve vin-supply for usb_h1_vbus
imx_usb 2184200.usb: Can't register ci_hdrc platform device, err=-517
input: gpio-keys as /devices/soc0/gpio-keys/input/input2
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 1970-01-01 00:00:00 UTC (0)
reg-fixed-voltage regulators:regulator@0: Failed to resolve vin-supply for usb_otg_vbus
imx_usb 2184000.usb: Can't register ci_hdrc platform device, err=-517
reg-fixed-voltage regulators:regulator@1: Failed to resolve vin-supply for usb_h1_vbus
imx_usb 2184200.usb: Can't register ci_hdrc platform device, err=-517
mipi_dsi_pwr_on: disabling
sensor-supply: disabling
wm8962-supply: disabling
usb_h1_vbus: disabling
usb_otg_vbus: disabling
ALSA device list:
No soundcards found.
Freeing unused kernel memory: 388K (8091f000 - 80980000)
Starting UTP
uuc 0.5
UTP: Waiting for device to appear
random: nonblocking pool is initialized
我也遇到了相同的问题,后来在网上找到个地方说是要在kernel路径运行make menuconfig,找到和gadget usb mass storage相关的config并选上,最后打开生成的.config找到相关的config添加到你用的config文件中去自己编译一个和你硬件适配的kernel的zImage文件出来供mfgtool使用,我添加了如下几个config,还没有判断到底是哪个起的作用:
CONFIG_FSL_UTP=y
CONFIG_MMC_BLOCK_MINORS=16
CONFIG_SOFT_WATCHDOG=y
CONFIG_USB_GADGET_VBUS_DRAW=2
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
CONFIG_USB_F_MASS_STORAGE=y
CONFIG_USB_MASS_STORAGE=y
Hi Jiang,
你这里使用的板子是你自己设计的,你5需要根据你的板子来移植BSP,编译好的代码在你自己的板子上跑,不能直接使用官网的Demo。android5.1使用的内核版本和原来的都不一样。所以建议你参考现有的代码做该版本BSP的移植。关于mfgtool你可以参考一下我们论坛中的帖子:
How to add new vbs for a new imx board in MFGTOOL
Have a great day,
(Dan)
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
你好,感谢回答。
我根据之前Android5.0的经验,认为我们需要在mfgtool2-android-mx6dl-sabresd-emmc.vbs中追加-ldo,
但是遗憾的是无法烧写。
而且我还试着不修改mfgtool(也就是不加-ldo),烧写以下文件,也是相同的错误。。。
u-boot-imx6dl.imx
boot-imx6dl.img
recovery-imx6dl.img
system.img
还试着使用当初编译Android5.0得到的u-boot-imx6dl.imx,也是相同错误。
甚至把4个img文件都替换成Android5.0的,也是相同错误。
所以才怀疑是不是mfgtool的问题