bootloader 判斷 system revision 是 ?
放在 ATAG 中傳給 kernel,
kernel setup.c 中解開 ATAG, 把資料解開 show 在 /proc/cpuinfo:
# cat /proc/cpuinfo
Processor : ARMv7 Processor rev 6 (v7l)
BogoMIPS : 1599.07
Features : swp half thumb fastmult vfp edsp vfpv3 vfpv3d16
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xcc9
CPU revision : 6
Hardware : mama2cb
Revision : 15034720
Serial : 000fbaea041d1bff
android 的 /system/core/init/init.c 讀取 /proc/cpuinfo, 把每個 entry 解出,
用 property_set( ) 一一設定好system property
/system/core/init/init.c 負責很多 system property 設定的動作。
例如:從 kernel cmdline parsing ...
import_kernel_cmdline( )
讀取 /proc/cmdline
然後用
import_kernel_nv( ):
if (!strcmp(name,"qemu")) {
strlcpy(qemu, value, sizeof(qemu));
} else if (!strcmp(name,"androidboot.console")) {
strlcpy(console, value, sizeof(console));
} else if (!strcmp(name,"androidboot.mode")) {
strlcpy(bootmode, value, sizeof(bootmode));
} else if (!strcmp(name,"androidboot.serialno")) {
strlcpy(serialno, value, sizeof(serialno));
} else if (!strcmp(name,"androidboot.baseband")) {
strlcpy(baseband, value, sizeof(baseband));
} else if (!strcmp(name,"androidboot.carrier")) {
strlcpy(carrier, value, sizeof(carrier));
} else if (!strcmp(name,"androidboot.bootloader")) {
strlcpy(bootloader, value, sizeof(bootloader));
} else if (!strcmp(name,"androidboot.hardware")) {
strlcpy(hardware, value, sizeof(hardware));
}
parsing 需要的部份。
這樣 hardware 相關部份就可以完全交給 bootloader detect,