在Android系统中,通过U-Boot(通常称为uboot)来设置启动参数(如cmdline)或尝试直接将数据传递给应用层(通过系统属性property)是一个较为间接的过程,因为U-Boot主要负责硬件初始化和引导Linux内核,而Android系统属性则是由Android系统服务(如init进程和property服务)管理的。不过,我们可以通过一些间接的方法来实现这一目标。
在U-Boot中设置cmdline是相对直接的,因为它涉及到修改传递给Linux内核的启动参数。然而,在U-Boot中直接设置Android系统属性(如/system/build.prop中的属性)是不可能的,因为这些属性是Android系统初始化过程中由init进程或其他系统服务管理的。
1. 设置cmdline并通过内核传递给Android
a. 在U-Boot中设置cmdline
在U-Boot中,你可以通过setenv命令来设置cmdline环境变量。这个cmdline将在U-Boot引导Linux内核时传递给内核。例如:
setenv bootargs console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait androidboot.mode=charger
这里的androidboot.mode=charger就是一个示例参数,它可以在内核或Android系统启动时被读取。
如下参考方法,设置环境变量并赋值:
/* update lcdid command line */
char lcdid[8];