Duskwuff이 맞습니다. 왜 저수준으로 가고 API를 사용하지 않습니까? 당신이 얘기하는 장치가 당신이 얘기 직렬 포트를 사용할 수 있어야 RS-232, 을 닮은 무언가를 지원하는 경우
:
는 http://www.tldp.org/HOWTO/text/IO-Port-Programming 6.3 절을 참조하십시오. 리눅스 직렬 드라이버는 거의 모든 응용 프로그램에 충분해야합니다 ( 은 직렬 포트를 직접 프로그래밍 할 필요가 없으며 커널 드라이버를 작성해야합니다). 상당히 다용도이므로 비표준 bps 속도를 사용하면 문제가되지 않습니다.
포트 (COM1 예 : 0x3F8)에 추가
, 다음 몇 포트 번호가 사용됩니다
여기에 원래의 질문에 "어떻게 전송 속도를 설정"에 대한 대답은,이 문제를 설명하기 위해 다양한 제어 목적을 위해. 전송 속도를 설정하려면 먼저 제수 115200/[원하는 전송 속도]를 계산하십시오. 예 : 당신은 38400 개 보드를 원하는 경우, 제수는 다음 3입니다 :
- PORT의 가장 높은 비트 + 3
- 가 가장 중요한 바이트 보내기 PORT
- 에 제수의 최하위 바이트를 전송 설정 포트 제수 + 1
- 클리어 PORT의 최상위 비트 + 3 코드에서
(동시에, 하위 비트는 비트 등 패리티 설정을 중지하는데 사용될 수있다) :
을
outb(PORT + 3, 0x80); // Enable DLAB (set baud rate divisor)
outb(PORT + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud
outb(PORT + 1, 0x00); // (hi byte)
outb(PORT + 3, 0x03); // 8 bits, no parity, one stop bit
소스는 여기에 있습니다 :
http://wiki.osdev.org/Serial_Ports "이 때 *, 나는 INB 및 OUTB 기능을 사용하여 생각하고 그래서 난 리눅스 TTY 문자 무시 참아 필요가 없습니다 *."당신은하고 있어요 물건 * 많은 * 아무 이유없이 더 복잡합니다. 포트를 원시 모드로 설정하는 것은 간단합니다. –
이 베어 메탈을하고 있다면, DOS 등에서 문서를 읽으십시오. 하지만 당신은 리눅스에 태그를 붙이므로 API 호출을 사용하여 간단히 uart를 다룰 수 있습니다. –