ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2014年2月14日 星期五

system revision.

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,

沒有留言:

標籤

網誌存檔