- Android系統(tǒng)級深入開發(fā)
- 韓超 梁泉
- 579字
- 2018-12-29 13:39:40
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橋)的方式。
- DBA攻堅(jiān)指南:左手Oracle,右手MySQL
- Python for Secret Agents:Volume II
- Mastering SVG
- SQL Server 2012數(shù)據(jù)庫技術(shù)及應(yīng)用(微課版·第5版)
- 實(shí)戰(zhàn)低代碼
- PhoneGap:Beginner's Guide(Third Edition)
- Arduino家居安全系統(tǒng)構(gòu)建實(shí)戰(zhàn)
- Android玩家必備
- 零基礎(chǔ)學(xué)Scratch 3.0編程
- 深入解析Java編譯器:源碼剖析與實(shí)例詳解
- 貫通Tomcat開發(fā)
- Python機(jī)器學(xué)習(xí)與量化投資
- C語言程序設(shè)計(jì)教程
- Java EE 程序設(shè)計(jì)
- MonoTouch應(yīng)用開發(fā)實(shí)踐指南:使用C#和.NET開發(fā)iOS應(yīng)用