도와주세요!!
글 수 15,339
2002.07.24 10:15:38 (*.186.48.184)
6774
이지보드에서의 디바이스 드라이버 제작은
PC에서의 디바이스 드라이버 제작과 거의 동일합니다.
차이가 있다면
1. 가상어드레스를 설정을 하는 부분
2. SA-1110 용 디바이스 와 제어부 의 차이
3. io 함수
이렇게 있읍니다.
1. 가상 어드레스를 설정을 하는 부분
가상 어드레스란 실제 하드웨어적으로 정의된 물리적인
어드레스와 프로그램에서 다룰 어드레스를 다르게 설정
하는데 이 부분을 설정하는 것을 의미합니다.
이런 설정은 두가지 방법으로 설정합니다.
하나는
linux/arch/arm/mach-sa1100/ezboard.c 의 화일과 같이
아키텍쳐 기본 사항 설정 화일중
static struct map_desc ezboard_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
{ 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
{ 0xf0000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Crystal Chip */
{ 0xf0100000, 0x18000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Mk712, DS1511 Chip */
{ 0xf0200000, 0x40200000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* VGA Chip */
LAST_DESC
};
이런식으로 설정하는 방법
또는 ioremap 과 같은 함수로 등록하는 방법이 있읍니다 .
2. SA-1110 용 디바이스 와 제어부 의 차이
이 부분은 여기서 설명하기에 벅찬 내용이네요.
3. io 함수
실제 PC 와는 달리 ARM 에서는 메모리 공간과 IO 공간이 분리 되어 있지
않습니다.
그래서 in 이나 out 같은 함수가 PC와 약간 다르게 설정되어 있읍니다.
거의 사용을 하지 않습니다.
단지 pc용 드라이버를 포팅하기 위해서 메모리 접근 영역으로 설정
되어 있을 뿐입니다.
hamboy wrote..
: 이지보드에서의 디바이스드라이버 제작은 어떻게하죠..?
: 일반피시에서는 시리얼 포트의 경우 0x3f8이라고 정해져있어..
: 이것을 가지고 데이터를 전송 받거나 보내는 드라이버를 제작하는데요..
: 이지보드에서는 어드레스를 어떡게 쓰고 있는지 궁금합니다..
: 드바이스 드라이버를 어떻게 제작을 해야하는지도 궁금합니다..
PC에서의 디바이스 드라이버 제작과 거의 동일합니다.
차이가 있다면
1. 가상어드레스를 설정을 하는 부분
2. SA-1110 용 디바이스 와 제어부 의 차이
3. io 함수
이렇게 있읍니다.
1. 가상 어드레스를 설정을 하는 부분
가상 어드레스란 실제 하드웨어적으로 정의된 물리적인
어드레스와 프로그램에서 다룰 어드레스를 다르게 설정
하는데 이 부분을 설정하는 것을 의미합니다.
이런 설정은 두가지 방법으로 설정합니다.
하나는
linux/arch/arm/mach-sa1100/ezboard.c 의 화일과 같이
아키텍쳐 기본 사항 설정 화일중
static struct map_desc ezboard_io_desc[] __initdata = {
/* virtual physical length domain r w c b */
{ 0xe0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
{ 0xe8000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 */
{ 0xf0000000, 0x10000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Crystal Chip */
{ 0xf0100000, 0x18000000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* Mk712, DS1511 Chip */
{ 0xf0200000, 0x40200000, 0x00100000, DOMAIN_IO, 1, 1, 0, 0 }, /* VGA Chip */
LAST_DESC
};
이런식으로 설정하는 방법
또는 ioremap 과 같은 함수로 등록하는 방법이 있읍니다 .
2. SA-1110 용 디바이스 와 제어부 의 차이
이 부분은 여기서 설명하기에 벅찬 내용이네요.
3. io 함수
실제 PC 와는 달리 ARM 에서는 메모리 공간과 IO 공간이 분리 되어 있지
않습니다.
그래서 in 이나 out 같은 함수가 PC와 약간 다르게 설정되어 있읍니다.
거의 사용을 하지 않습니다.
단지 pc용 드라이버를 포팅하기 위해서 메모리 접근 영역으로 설정
되어 있을 뿐입니다.
hamboy wrote..
: 이지보드에서의 디바이스드라이버 제작은 어떻게하죠..?
: 일반피시에서는 시리얼 포트의 경우 0x3f8이라고 정해져있어..
: 이것을 가지고 데이터를 전송 받거나 보내는 드라이버를 제작하는데요..
: 이지보드에서는 어드레스를 어떡게 쓰고 있는지 궁금합니다..
: 드바이스 드라이버를 어떻게 제작을 해야하는지도 궁금합니다..