ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年12月7日 星期三

init/main.c 的 start_kernel : setup_arch(&command_line)
kernel/setup.c 的 __init setup_arch(char **cmdline_p)
  有加 _init,會不會後來又再 run 一次? 
code: struct tag *tags = (struct tag *)&init_tags; struct machine_desc *mdesc; char *from = default_command_line; mdesc = setup_machine(machine_arch_type); machine_name = mdesc->name; if (mdesc->soft_reboot) reboot_setup("s"); if (__atags_pointer) tags = phys_to_virt(__atags_pointer); else if (mdesc->boot_params) tags = phys_to_virt(mdesc->boot_params); else init_tags.mem.start = PHYS_OFFSET; __atags_pointer 是 uboot 傳遞參數的位址,boot_params 也是。

這裡的 boot loader 好像都沒有用,所以是用 PHYS_OFFSET。
這個 constant 每個 chip 定義不一樣。

/arch/arm/plat-mxc/include/mach/memory.h:17:#define MX1_PHYS_OFFSET UL(0x08000000) ./arch/arm/plat-mxc/include/mach/memory.h:18:#define MX21_PHYS_OFFSET UL(0xc0000000) ./arch/arm/plat-mxc/include/mach/memory.h:19:#define MX25_PHYS_OFFSET UL(0x80000000) ./arch/arm/plat-mxc/include/mach/memory.h:20:#define MX27_PHYS_OFFSET UL(0xa0000000) ./arch/arm/plat-mxc/include/mach/memory.h:21:#define MX3x_PHYS_OFFSET UL(0x80000000) ./arch/arm/plat-mxc/include/mach/memory.h:22:#define MX37_PHYS_OFFSET UL(0x40000000) ./arch/arm/plat-mxc/include/mach/memory.h:23:#define MX50_PHYS_OFFSET UL(0x70000000) ./arch/arm/plat-mxc/include/mach/memory.h:24:#define MX51_PHYS_OFFSET UL(0x90000000) ./arch/arm/plat-mxc/include/mach/memory.h:25:#define MX53_PHYS_OFFSET UL(0x70000000) ./arch/arm/plat-mxc/include/mach/memory.h:26:#define MXC91231_PHYS_OFFSET UL(0x90000000) 所以是 MX51 是 0x90000000

沒有留言:

標籤

網誌存檔