正点原子IMX6ULL开发板,Uboot saveenv修改 fdt_file,上电后失效问题。

教程《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.2》
在 30.4.2 环境变量操作命令 章节中,

setenv bootdelay 5
saveenv

setenv author zuozhongkai
saveenv

修改bootdelay,新建author,上电后都可以保存。
但是修改fdt_file

setenv fdt_file imx6ull-alientek-emmc.dtb
saveenv

修改后,上电重启后,会失效。

原因是正点原子的uboot的源码中:
正点原子\01、例程源码\01、例程源码\03、正点原子Uboot和Linux出厂源码:uboot-imx-2016.03-2.1.0-g0ae7e33-v1.7.tar
使用vscode打开uboot源码,然后ctrl+shitf+f,整个项目搜索fdt_file

                /* 这里写死了 启动的dtb 我用的是4.3寸的屏幕 */
                case CONFIG_ATKLCD_4_3_800x480: /* 1 */
                        setenv("fdt_file","imx6ull-14x14-emmc-4.3-800x480-c.dtb");
                        setenv("panel","ATK-LCD-4.3-800x480");
                break;

写死了启动的dtb,无法修改(疑似,豆包是这样说的)。
但是个人没有去编译修改,后续如果验证了会更新。

更新

//查看了NXP官方的uboot源码
		if (!getenv("fdt_file")) {
			sprintf(fdt, "%s-%s.dtb", cputype, str);
			setenv("fdt_file", fdt);
		}

基本可以确定是,uboot无法修改fdt_file的原因是,正点原子的uboot源码写死了fdt_file

文件路径,uboot_source_zdyz/board/freescale/mx6ullevk,修改uboot源码

//ATKLCD
void select_display_dev (void) {
	int idcode;

	char *panel_forced = getenv("panel_forced");
	if (panel_forced != NULL) { // setenv panel_forced 1 2 3
		return;   // 用户手动设了 panel,就跳过自动检测 fdt_offset 
	}

	/* IOMUXC init */
	imx_iomux_v3_setup_multiple_pads(lcd_id_pads, ARRAY_SIZE(lcd_id_pads));

ubootskip

第三点,修改uboot开机logo,使用的是数组格式纯拼接的logo
文件路劲:uboot_source_zdyz/include/configs
kaijilogo

posted @ 2026-04-04 17:15  一见无始道成空  阅读(14)  评论(0)    收藏  举报