2017年9月6日 星期三

[專案] 如何管理驅動程式

假設有很多種LCD面板,
每個案子可能會用不同的,
這樣的情況有幾個方式可以來管理專案。


方法一: 利用Makefile以及巨集來控制編譯程。
HOST
project.def
LCD_NAME := SONY
CFLAGS += -DLCD_$(GYRO_NAME)=1 //定義程式用FLAG
Makefile
ifneq ($(LCD_NAME ), NONE)
SUBLIBS += $(LCD_DRV_PATH)/liblcd.a
endif

APP
DRIVERS
LCD
Makefile
OBJS :=
ifeq ($(LCD_NAME), SONY) //決定link哪一個obj
OBJS += sony_lcd.o
endif
ifeq ($(LCD_NAME), SAMSUM)
OBJS += samsum_lcd.o
endif

SONY
sony_lcd.c
sony_lcd_on(){};
SAMSUM
samsum_lcd.c
samsum_lcd_on(){};
lcd.h
#if LCD_SONY
#define lcd_on sony_lcd_on     //lcd_on()為上層呼叫的介面
#elif LCD_SAMSUM
#define lcd_on samsum_lcd_on
#endif



註解: 大寫為資料夾,小寫及Makefile為檔案

沒有留言:

張貼留言