完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
< >
准备工作: 目标板:rk3288 android 编译环境:android7.1.2 一 在源码中添加环境变量并获取该环境变量 1.源码根目录:u-boot/include/configs/ 在文件 rk32plat.h 中添加环境变量CONFIG_T613_I2C 宏定义 2.源码根目录:u-boot/include/ 在文件 env_default.h 中添加环境变量数组中 ******注意格式书写 #if defined(CONFIG_T613_I2C) && (CONFIG_T613_I2C >= 0) "t613_i2c=" __stringify(CONFIG_T613_I2C) " " #endif 3.源码根目录:u-boot/board/rockchip/rk32xx 获取t613_i2c这个环境变量,并在code 中使用 1)修改函数static void board_init_adjust_env(void) ,如果没有可以自行添加; 2)通过char *s1 = getenv("t613_i2c"); 函数以字符串形式获取环境变量t613_i2c ; 3)通过t613_i2c = simple_strtoul(s1, NULL, 10);函数将字符串转换成10进制值,就可以实现在别的函数中使用该值。 static void board_init_adjust_env(void) { bool change = false; char *s = getenv("bootdelay"); if (s != NULL) { unsigned long bootdelay = 0; bootdelay = simple_strtoul(s, NULL, 10); printf("getenv: bootdelay = %lun", bootdelay); #if (CONFIG_BOOTDELAY <= 0) if (bootdelay > 0) { setenv("bootdelay", simple_itoa(0)); change = true; printf("setenv: bootdelay = 0n"); } #else if (bootdelay != CONFIG_BOOTDELAY) { setenv("bootdelay", simple_itoa(bootdelay)); change = true; printf("setenv: bootdelay = %dn", bootdelay); } #endif } char *s1 = getenv("t613_i2c"); if (s1 != NULL) { unsigned long t613_i2c = 0; t613_i2c = simple_strtoul(s1, NULL, 10); printf("getenv: t613_i2c = %lun", t613_i2c); #if (CONFIG_T613_I2C <= 0) if (t613_i2c > 0) { setenv("t613_i2c", simple_itoa(0)); change = true; printf("setenv: t613_i2c = 0n"); } #else if (t613_i2c != CONFIG_T613_I2C) { setenv("t613_i2c", simple_itoa(t613_i2c)); change = true; printf("setenv: t613_i2c = %dn", t613_i2c); } #endif } s = getenv("bootcmd"); if (s != NULL) { printf("getenv: bootcmd = %sn", s); if (strcmp(s, CONFIG_BOOTCOMMAND) != 0) { setenv("bootcmd", CONFIG_BOOTCOMMAND); change = true; printf("setenv: bootcmd = %sn", CONFIG_BOOTCOMMAND); } } s = getenv("initrd_high"); if (s != NULL) { printf("getenv: initrd_high = %sn", s); if (strcmp(s, RAMDISK_ZERO_COPY_SETTING) != 0) { setenv("initrd_high", RAMDISK_ZERO_COPY_SETTING); change = true; printf("setenv: initrd_high = %sn", RAMDISK_ZERO_COPY_SETTING); } } if (change) { #ifdef CONFIG_CMD_SAVEENV printf("board init saveenv.n"); saveenv(); #endif } } 4.重新make uboot 执行: 1)make rk3288_secure_defconfig 2)make 二 改变环境变量值的两种方式(以u-boot 开机等待时间CONFIG_BOOTDELAY 为例) 1.源码根目录:u-boot/include/configs/ 在文件 rk32plat.h 中直接更改宏定义的值 #define CONFIG_BOOTDELAY 18 2.开机进入打印终端按空格键进入uboot 命令行,执行以下指令进行修改保存 setenv bootdelay 18 saveenv 注意:如果修改环境变量saveenv 后,重新开机,环境变量又变回默认值 ,请查看源码code 源码根目录:u-boot/board/rockchip/rk32xx 中对环境变量初始化的函数static void board_init_adjust_env(void) 是否对环境变量重置回默认值。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
533 浏览 0 评论
803 浏览 1 评论
700 浏览 1 评论
1926 浏览 1 评论
3171 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 11:30 , Processed in 0.605607 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号