官术网_书友最值得收藏!

4.2 GoldFish體系結(jié)構(gòu)移植

GoldFish處理器是ARM體系結(jié)構(gòu)的一種“機器”,這種“機器”的代碼在arch/arm/mach-goldfish/目錄中,相關(guān)的頭文件在arch/arm/mach-goldfish/include/mach目錄中。

arch/arm/mach-goldfish/目錄中的Kconfig是GoldFish的主配置文件,內(nèi)容如下所示:

    if ARCH_GOLDFISH
    menu "Goldfish Options"
    config MACH_GOLDFISH
        bool "Goldfish (Virtual Platform)"
        select CPU_ARM926T
    config MACH_GOLDFISH_ARMV7
        bool "Goldfish ARMv7 (Virtual Platform)"
        select CPU_V7
            select VFP
            select VFPv3
            select NEON
    endmenu
    endif

當(dāng)ARCH_GOLDFISH宏被使能的時候,可以選擇兩種GoldFish處理器,一種由MACH_GOLDFISH表示,一種由宏MACH_GOLDFISH_ARMV7表示。前者是一種ARMV5E體系結(jié)構(gòu)的ARM926處理器,后者是ARMV7體系結(jié)構(gòu)的處理器(即Cortex A),使能了VFP和NEON等特性。在一般情況下,使用MACH_GOLDFISH即可。

arch/arm/mach-goldfish/目錄中Makefile的內(nèi)容如下所示:

    obj-y                      := pdev_bus.o timer.o switch.o audio.o pm.o
    obj-$(CONFIG_MACH_GOLDFISH)     += board-goldfish.o
    obj-$(CONFIG_MACH_GOLDFISH_ARMV7)   += board-goldfish.o

arch/arm/mach-goldfish/board-goldfish.c是GoldFIsh機器實現(xiàn)的核心文件,機器類型的定義如下所示:

    MACHINE_START(GOLDFISH, "Goldfish")
        .phys_io = IO_START,
        .io_pg_offst  = ((IO_BASE) >> 18) & 0xfffc,
        .boot_params  = 0x00000100,
        .map_io        = goldfish_map_io,
        .init_irq     = goldfish_init_irq,
        .init_machine= goldfish_init,
        .timer         = &goldfish_timer,
    MACHINE_END

在MACHINE_START和MACHINE_END之間的內(nèi)容為機器的信息。這里實現(xiàn)的結(jié)構(gòu)是arch/arm/include/asm/mach/arch.h中定義的struct machine_desc。這里賦值了定時器、物理IO等內(nèi)容,以及初始化機器、初始化irq、IO映射等函數(shù)指針。

主站蜘蛛池模板: 闽侯县| 红桥区| 都昌县| 九江县| 富源县| 南江县| 屯留县| 将乐县| 滨州市| 儋州市| 凤庆县| 探索| 南通市| 富裕县| 余江县| 海阳市| 新丰县| 陇川县| 白玉县| 博爱县| 家居| 高雄市| 华容县| 大石桥市| 江城| 巧家县| 广德县| 黄陵县| 博罗县| 辽源市| 湘乡市| 舒兰市| 西安市| 永丰县| 鸡泽县| 外汇| 天柱县| 永川市| 鄄城县| 麦盖提县| 平原县|