Hi,
We have received our custom imx8mm board.
Imx8mm evk used uart2 for debug purpose our custom board uart1 we have used for our debug purpose changes done from uboot code referred (https://community.nxp.com/t5/i-MX-Processors/Question-i-MX8M-serial-debug-console-ports/td-p/769867).
Our custom board we have used pca9450 pmic but that changes does not done from uboot code.
We are expecting uboot needs to prints some error message from uart1 debug console.
Uart1 modified from uboot sources.
using uuu tool trying to flash the board as flashing but it stuck in flash only.
Our customized uboot bin file placed into uuu tool.
1) why it stucks there only ?
2) Without pmic configuration it won't print ?
3) Evk board it contains typec port but our design used usb otg needs to done any changes ?
Thanks & Regards,
Vasu
Hello,
Please try running in verbose mode, you'll need to use the -v
i.e.
sudo ./uuu -v imx-boot-imx8mmevk-sd.bin-flash_evk
please share the tool output.
Regarding 2 & 3, it should print, even so please try to changing the configuration for uboot with no type-C, you may refer to the following:
https://community.nxp.com/t5/i-MX-Processors/Question-i-MX8M-serial-debug-console-ports/td-p/769867
Best regards,
Aldo.
Hi,
Our custom board imx8m mini evk uboot bin file flashing fine but debug won't print because evk used uart2 for debug.
Uboot debug uart1 code modified after that uuu tool stucks there only.
uart1 and uuu tool any relation is there ?
How to solve the mentioned issue ?
Thanks & Regards,
Vasu
please use uuu -s or uuu -v to get more information.
Please check the following link to see if it can help.
How to Change i.MX8MM evk Linux Debug UART
https://community.nxp.com/t5/i-MX-Community-Articles/How-to-Change-i-MX8MM-evk-Linux-Debug-UART/ba-p...
Hello,
There should be no relation from changing UART port for debug and UUU, I would like to ask if for this custom board you have run DDR stress tool?
Since this may be the problem, UUU needs uboot to start correctly to download and flash the image.
You'll find the DDR tool here and a guide for it as well:
https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8M-Family-DDR-Tool-Release/ta-p/110...
Also, please add PMIC configuration as well, please let me know if you need a guide for this.
Best regards,
Aldo.
Hi @AldoG,
If we use uart2 log printing fine am able to see pmic error.
After the pca9450 code ported to both uboot, kernel after that pmic error gone.
DDR stress test need to check in custom board.
@pmic if you have any document please share with me that will be useful to check pmic configured properly.
Please share proper uart1 changes in uboot code than again we will flash and check (note uart2 printing fine).
Thanks & Regards,
Vasu
Hello,
Please correct me if I'm wrong, if you undo changes to UART port, please have pmic changes as well so uboot does not abort, and load this uboot to your board using UUU, does it flash successfully?
Unfortunately it is hard to say what is the problem since in your board there is no debug output, so it could be that DDR or PMIC initialization fails.
Please note that EVK will boot since parameters for DDR and PMIC are already in the done.
I'll share the changes needed as soon as I have them.
Best regards,
Aldo.
Hi @AldoG,
Even trough pmic error uart2 printing error but same uart1 does not printing not even flashing also.
pmic configured uboot and kernel, rootfs booting fine.
Uart2 tampered from our custom board actual debug connector will be uart1.
In order use uart1 for debug port what are the exact changes needs done from uboot code ?
Thanks & Regards,
Vasu
Hi @Dhevan,
PMIC changes needed for uboot for PCA9450 are as following, for the UART changes you may refer to the answer by biyong.
In the “./include/configs/” directory
Modify imx8mm_evk.h to remove bd71837 and add pca9450
#undef CONFIG_POWER_BD71837
#define CONFIG_POWER_PCA9450
In the “./arch/arm/dts/” directory change the fsl-imx8mm-evk.dts
https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/dts/imx8mm-evk.dts?h=imx_v2020.04...
&i2c1 {
clock-frequency = <400000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c1>;
pinctrl-1 = <&pinctrl_i2c1_gpio>;
scl-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
sda-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
status = "okay";
pmic: pca9450@25 {
reg = <0x25>;
compatible = "nxp,pca9450";
/* PMIC PCA9450 PMIC_nINT GPIO1_IO3 */
pinctrl-0 = <&pinctrl_pmic>;
gpio_intr = <&gpio1 3 GPIO_ACTIVE_LOW>;
gpo {
nxp,drv = <0x0C>; /* 0b0000_1100 all gpos with cmos output mode */
};
regulators {
#address-cells = <1>;
#size-cells = <0>;
pca9450,pmic-buck2-uses-i2c-dvs;
pca9450,pmic-buck2-dvs-voltage = <1000000>, <900000>, <0>; /* VDD_ARM: Run-Idle */
buck1_reg: regulator@0 {
reg = <0>;
regulator-compatible = "buck1";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <2187500>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <3125>;
};
buck2_reg: regulator@1 {
reg = <1>;
regulator-compatible = "buck2";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <2187500>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <3125>;
};
buck3_reg: regulator@2 {
reg = <2>;
regulator-compatible = "buck3";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <2187500>;
regulator-boot-on;
regulator-always-on;
};
buck4_reg: regulator@3 {
reg = <3>;
regulator-compatible = "buck4";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <3400000>;
regulator-boot-on;
regulator-always-on;
};
buck5_reg: regulator@4 {
reg = <4>;
regulator-compatible = "buck5";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <3400000>;
regulator-boot-on;
regulator-always-on;
};
buck6_reg: regulator@5 {
reg = <5>;
regulator-compatible = "buck6";
regulator-min-microvolt = <600000>;
regulator-max-microvolt = <3400000>;
regulator-boot-on;
regulator-always-on;
};
ldo1_reg: regulator@6 {
reg = <6>;
regulator-compatible = "ldo1";
regulator-min-microvolt = <1600000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
ldo2_reg: regulator@7 {
reg = <7>;
regulator-compatible = "ldo2";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};
ldo3_reg: regulator@8 {
reg = <8>;
regulator-compatible = "ldo3";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
ldo4_reg: regulator@9 {
reg = <9>;
regulator-compatible = "ldo4";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
ldo5_reg: regulator@10 {
reg = <10>;
regulator-compatible = "ldo5";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
};
};
};
Modify initial code of spl.c to replace bd71837 code with pca9450.
https://source.codeaurora.org/external/imx/uboot-imx/tree/board/freescale/imx8mm_evk/spl.c?h=imx_v20...
#include <asm/arch/imx8mm_pins.h>
#include <asm/arch/sys_proto.h>
#include <power/pmic.h>
+#include <power/pca9450.h>
-#include <power/bd71837.h>
#include <asm/arch/clock.h>
#include <asm/mach-imx/gpio.h>
#include <asm/mach-imx/mxc_i2c.h>
Finally change power_init_board() function as following
https://source.codeaurora.org/external/imx/uboot-imx/tree/board/freescale/imx8mm_evk/spl.c?h=imx_v20...
board_mmc_getcd(struct mmc *mmc)
#ifdef CONFIG_POWER
#define I2C_PMIC 0
int power_init_board(void)
{
struct pmic *p;
int ret;
ret = power_pca9450_init(I2C_PMIC);
if (ret)
printf("power init failed");
p = pmic_get("PCA9450");
pmic_probe(p);
/* BUCKxOUT_DVS0/1 control BUCK123 output */
pmic_reg_write(p, PCA9450_BUCK123_DVS, 0x29);
/* Buck 1 DVS control through PMIC_STBY_REQ */
pmic_reg_write(p, PCA9450_BUCK1CTRL, 0x59);
/* decrease RESET key long push time from the default 10s to 10ms */
/* Ton_Deb of PCA9450 is 20ms and don't change */
/* increase VDD_SOC to typical value 0.85v before first DRAM access */
/* pmic_reg_write(p, PCA9450_BUCK1OUT_DVS0, 0x14); */
pmic_reg_write(p, PCA9450_BUCK1OUT_DVS0, 0x14);
pmic_reg_write(p, PCA9450_BUCK1OUT_DVS1, 0x10);
/* increase VDD_DRAM to 0.975v for 3Ghz DDR -> 0.95V instead of 0.975V, */
/* because PCA9450 Buck3 can set 0.95V */
/* Also, set B3_ENMODE=2 (ON by PMIC_ON_REQ=H & PMIC_STBY_REQ=L) */
pmic_reg_write(p, PCA9450_BUCK3OUT_DVS0, 0x1C);
pmic_reg_write(p, PCA9450_BUCK3CTRL, 0x4A);
/* set VDD_SNVS_0V8 from default 0.85V */
pmic_reg_write(p, PCA9450_LDO2CTRL, 0xC0);
#ifndef CONFIG_IMX8M_LPDDR4
/* increase NVCC_DRAM_1V2 to 1.2v for DDR4 */
pmic_reg_write(p, PCA9450_BUCK6OUT, 0x18);
#endif
/* set WDOG_B_CFG to 10b=Cold Reset, except LDO1/2 */
pmic_reg_write(p, PCA9450_RESET_CTRL, 0xA1);
return 0;
}
BR,
Aldo.
Hi,
3) I had configured uboot usb otg followed this link (https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX8MM-i-MX8MQ-USB2-0-Design-Without-US...)
Still uuu stuck issue is there
Thanks & Regards,
Vasu
Hi @AldoG,
Please look into attached log.
vasu@vasu:~/Downloads/L5.4.47-2.2.0_images_MX8MMEVK1$ sudo ./uuu -v imx-boot-imx8mmevk-sd.bin-flash_evk
[sudo] password for vasu:
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.4.69-0-g63b1d3c
Build in config:
Pctl Chip Vid Pid BcdVersion
==================================================
SDPS: MX8QXP 0x1fc9 0x012f [0x0002..0xffff]
SDPS: MX8QM 0x1fc9 0x0129 [0x0002..0xffff]
SDPS: MX8DXL 0x1fc9 0x0147
SDPS: MX28 0x15a2 0x004f
SDPS: MX815 0x1fc9 0x013e
SDPS: MX865 0x1fc9 0x0146
SDP: MX7D 0x15a2 0x0076
SDP: MX6Q 0x15a2 0x0054
SDP: MX6D 0x15a2 0x0061
SDP: MX6SL 0x15a2 0x0063
SDP: MX6SX 0x15a2 0x0071
SDP: MX6UL 0x15a2 0x007d
SDP: MX6ULL 0x15a2 0x0080
SDP: MX6SLL 0x1fc9 0x0128
SDP: MX7ULP 0x1fc9 0x0126
SDP: MXRT106X 0x1fc9 0x0135
SDP: MX8MM 0x1fc9 0x0134
SDP: MX8MQ 0x1fc9 0x012b
SDPU: SPL 0x0525 0xb4a4 [0x0000..0x04ff]
SDPV: SPL1 0x0525 0xb4a4 [0x0500..0x9998]
SDPU: SPL 0x0525 0xb4a4 [0x9999..0x9999]
SDPU: SPL 0x3016 0x1001 [0x0000..0x04ff]
SDPV: SPL1 0x3016 0x1001 [0x0500..0x9998]
FBK: 0x066f 0x9afe
FBK: 0x066f 0x9bff
FB: 0x0525 0xa4a5
FB: 0x18d1 0x0d02
FB: 0x3016 0x0001
Wait for Known USB Device Appear...
New USB Device Attached at 1:3
1:3>Start Cmd:SDP: boot -f "imx-boot-imx8mmevk-sd.bin-flash_evk"
6400%1:3>Okay (2.435s)
1:3>Start Cmd:SDP: done
1:3>Okay (0s)
Thanks & Regards,
Vasu