강좌 & 팁
기존에 lcd 드라이버가 구성이 돼 있다는 조건에서 새로운 lcd 를 추가 하는 과정과 컴파일 환경 에 관한 팁입니다.
종류 : tft lcd (800 x 480 )
모델명 : at070tn94
사용 한 mcu 가 삼성의 s5pv210 이며, 친절 하게도 linux 에서는 drivers\video\samsung 폴더 안에 드라이버가 구성돼 있습니다.
따라서 새로 사용할 lcd 의 스팩을 정의한 새로운 파일을 하나 추가해 주고, 컴파일 환경만 잡아주면 간단히 끝이 나는 작업입니다.
1. lcd 스팩 보기
위 이미지와 같이 데이터 시트를 보면 친절하게 값이 나와 있습니다.
아래는 우리가 데이터 시트를 보고 참고할 값들 입니다.
- Horizontal Display Area 수평 해상도
- Vertical Display Area 수직 해상도
- DCLK Frequency 픽셀 클럭 ( Frame Frequency 계산에 활용 됩니다. )
- HS Front Porch 수평 주사의 복귀 뒷쪽 구간
- HS Back Porch 수평 주사의 복귀 앞쪽 구간
- HS Pulse Width 수평 동기 클럭 폭
- VS Front Porch 수직 주사의 복귀 뒷쪽 구간
- VS Back Porch 수직 주사의 복귀 앞족 구간
- VS Pulse Width 수직 동기 클럭 폭
위 이미지는 800 x 480 이 아닌 640 x 480 해상도를 가진 lcd 의 개념도 입니다. 실제 이미지가 보여지는 부분은
640 x 480 이지만 클럭이 주사되는 공간은 800 x 525 임을 알 수 있고 여기서 실제 이미지가 보여지지 않는 부분이
porch 부분입니다.
데이터 시트를 보면 back porch 가 있어야 할 부분에 Blanking 이라 표시되어 있는데요. 원래 blanking 은 실제 이미지가
보여지지 않는 부분을 모두 더한 값을 말하는데 여기서는 back porch 값을 나타내고 있습니다.
타이미표를 보면 hs blanking 과 vs blanking 값이 고정돼 있으며 이 값을 각각 HS Back Porch 와 HS Back Porch 에
넣어 주면 됩니다.
다른 값들은 범위가 지정되어 있으며 그 범위 내에서 입력 하면 됩니다.
-- 실제 소스 수정 하기--
1. linux-2.6.35\drivers\video\samsung/ 폴더 안에서 s3cfb_모델명.c 파일중 하나를 복사해 s3cfb_at070tn94.c 라는 파일
을 하나 만들어 줍니다.
2. s3cfb_at070tn94.c 파일을 열어 아래와 같이 수정해 줍니다.
/* name should be fixed as 's3cfb_set_lcd_info' */
void s3cfb_set_lcd_info(struct s3cfb_global *ctrl)
{
at070tn94.init_ldi = NULL;
ctrl->lcd = &at070tn94;
}
3. lcd 스팩 정의 구제체 값 넣기
--------------------------------------------------------------------
static struct s3cfb_lcd at070tn94 = {
.width = 800, // lcd 가로 픽셀
.height = 480, // lcd 세로 픽셀
.bpp = 32, // Bit Per Pixel
.freq = 48, // Frame Frequency
.timing = {
.h_fp = 300, //HS Front Porch
.h_bp = 46, //HS Back Porch
.h_sw = 30, //HS Pulse Width - 1 ~ 40 중 임의 값 넣음
.v_fp = 100, //VS Front Porch
.v_bp = 23, //VS Back Porch
.v_sw = 15, //VS PULSE WIDTH - 1 ~ 20 중 임의 값 넣음
.v_fpe = 1,
.v_bpe = 1,
},
.polarity = {
.rise_vclk = 0, //CLK LOW
.inv_hsync = 1,
.inv_vsync = 1,
.inv_vden = 0 //DATA ENABLE
},
};
-------------------------------------------------------------------- 끝
4. kconfig 파일 수정
--------------------------------------------------------------------
config FB_S3C_AT070TN94
bool "AT070TN94"
depends on MACH_EZS5PV210
help
This enables support for AT070TN94 \" 800x480 LCD panel
-------------------------------------------------------------------- 추가
5. makefile 수정
--------------------------------------------------------------------
obj-$(CONFIG_FB_S3C_AT070TN94) += s3cfb_at070tn94.o
--------------------------------------------------------------------추가
여기 까지 작업을 완료 한후
make menuconfig 를 실행한 화면 입니다.
추가한 AT070N94 를 선택 할 수 있는 항목이 나타나으며, 선택 후 빌드를 진행 하고, 이제 커널을 올려볼 차례 입니다.
좋은 정보 감사합니다.
작성하신 문서대로 작업을 해서 LCD가 Kernel 부팅 후에 눈을 떳습니다.
그런데, 색상 표현이 정상이 아닙니다.
색이 반전이 되어 표시가 되는 듯합니다.
하얀색이 검정으로 검정이 하얀색으로 나오는 문제가 있습니다.
이와 같은 이슈가 없었는지요?