正点原子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));

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

浙公网安备 33010602011771号