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

6.2.1 OMAP平臺部分的移植

OMAP平臺部分的移植內(nèi)容在arch/arm/plat-omap/目錄中,其中include目錄為OMAP這種平臺的頭文件。

arch/arm/plat-omap/目錄中的KConfig文件用于配置OMAP平臺的各種內(nèi)容,包含了CONFIG_ARCH_OMAP3等選項(xiàng)。

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

    # 通用的支持
    obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \
          usb.o fb.o vram.o vrfb.o io.o
    obj-m :=
    obj-n :=
    obj-  :=
    # OCPI interconnect support for 1710, 1610 and 5912
    obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
    obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
    obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o
    obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
    obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
    obj-$(CONFIG_OMAP_BOOT_REASON) += bootreason.o
    obj-$(CONFIG_OMAP_COMPONENT_VERSION) += component-version.o
    obj-$(CONFIG_OMAP_GPIO_SWITCH) += gpio-switch.o
    obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
    obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
    i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
    obj-y += $(i2c-omap-m) $(i2c-omap-y)
    # OMAP mailbox framework
    obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
    obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
    obj-$(CONFIG_OMAP_PM_SRF) += omap-pm-srf.o \
                      resource.o

在OMAP平臺的配置中,基本的內(nèi)容直接進(jìn)行編譯,例如common.c,sram.c,clock.c, devices.c,dma.c等。而例如CPU_FREQ ,MCBSP,GPIO_SWITCH等內(nèi)容屬于可選的,根據(jù)配置選項(xiàng)進(jìn)行編譯。

arch/arm/plat-omap/include為OMAP平臺的頭文件目錄,其中包含兩個(gè)子目錄:mach和dspbridge。

mach是OMAP相關(guān)頭文件,這個(gè)目錄中的很多文件的功能是這個(gè)硬件平臺在Linux中移植中約定俗成的名稱,例如dma.h表示DMA信息的頭文件,irqs.h是中斷信息相關(guān)的頭文件,gpio是通用輸入輸出接口的相關(guān)頭文件。

由于OMAP3系列的處理器比較復(fù)雜,因此其中一部分功能做成了“庫”的形式,這些庫的頭文件也在當(dāng)前目錄中,它們在各個(gè)驅(qū)動(dòng)中可以被調(diào)用,例如:display.h中包含了一些和顯示子系統(tǒng)(DSS)相關(guān)的數(shù)據(jù)結(jié)構(gòu)和接口,其中一些內(nèi)容如下所示:

    struct omap_dss_board_info {
        int (*get_last_off_on_transaction_id)(struct device *dev);
        int num_devices;
        struct omap_dss_device **devices;
        struct omap_dss_device *default_device;
    };
    int omap_dss_start_device(struct omap_dss_device *dssdev);
    void omap_dss_stop_device(struct omap_dss_device *dssdev);
    int omap_dss_get_num_overlay_managers(void);
    struct omap_overlay_manager *omap_dss_get_overlay_manager(int num);
    int omap_dss_get_num_overlays(void);
    struct omap_overlay *omap_dss_get_overlay(int num);

這部分接口的具體實(shí)現(xiàn),則在驅(qū)動(dòng)程序的相關(guān)目錄drivers/video/omap/dss/display.c中完成。

dspbridge目錄是和控制DSP相關(guān)的頭文件。由于OMAP是包含了ARM和DSP的雙核處理器,為了在ARM方面控制DSP,TI目前采用了dspbridge(DSP橋)的方式。

主站蜘蛛池模板: 柘荣县| 吉木乃县| 文山县| 曲水县| 赤壁市| 泰兴市| 边坝县| 乌拉特前旗| 津南区| 浦北县| 苗栗市| 望江县| 绵竹市| 菏泽市| 娄底市| 白沙| 航空| 乐业县| 泰州市| 芦溪县| 阳春市| 拜城县| 吴忠市| 合作市| 乌兰察布市| 博野县| 农安县| 蚌埠市| 长宁区| 怀安县| 安多县| 南岸区| 漯河市| 哈巴河县| 民乐县| 寿阳县| 祁连县| 五华县| 同江市| 班戈县| 卢湾区|