로그인 유지
안녕하세요!
안드로이드에서 시리얼 통신을 해볼려고 하는데
그냥 일반적인 C언어로 짠 시리얼 통신프로그램을
bash shell에서 실행을 할려니 파일을 찾을수 없다고 뜨더라고요..
혹시 JNI같은것을 이용하여 디바이스를 제어해야되는건지 궁금합니다.
일단 시리얼 통신을 하려면 UART 노드부터 만들어 주셔야겠죠?
ttySAC1, ttySAC2 노드파일을 /dev/ 디렉토리 밑에 만들어 주셔야 합니다.
저희 램디스크로 부팅하시면 두 파일의 노드번호를 확인하실 수 있습니다.
그리고 JNI를 이용해서 디바이스를 제어하는 것은 실질적으로 허용되지 않습니다.
모 사이트에서 NDK를 이용해서 C로 프로그램을 짠 다음에 JNI 로 어플리케이션과 통신하게 짜면 하드웨어가 제어된다는 말을 하는데요... 큰일날 소리 입니다.
NDK 로 만들어지는 SO 파일은 JNI 로 JAVA로 만들어진 어플리케이션과 통신합니다.
그래서 뭔가 C로 프로그램 만들었으니까 하드웨어 제어도 가능하겠지 싶지만... 실상은 그 SO 파일의 권한이 어플리케이션과 동일한 관계로 불가능 합니다.
하지만 C로만 만들어진 기존의 시리얼 통신 프로그램을 Static 하게 빌드하신다면 그 프로그램이 독립적으로 돌아가는 것은 무방합니다.
결국 안드로이드도 리눅스 기반이니까요. ^^
아하!! 감사합니다~!!
일단 시리얼 통신을 하려면 UART 노드부터 만들어 주셔야겠죠?
ttySAC1, ttySAC2 노드파일을 /dev/ 디렉토리 밑에 만들어 주셔야 합니다.
저희 램디스크로 부팅하시면 두 파일의 노드번호를 확인하실 수 있습니다.
그리고 JNI를 이용해서 디바이스를 제어하는 것은 실질적으로 허용되지 않습니다.
모 사이트에서 NDK를 이용해서 C로 프로그램을 짠 다음에 JNI 로 어플리케이션과 통신하게 짜면 하드웨어가 제어된다는 말을 하는데요... 큰일날 소리 입니다.
NDK 로 만들어지는 SO 파일은 JNI 로 JAVA로 만들어진 어플리케이션과 통신합니다.
그래서 뭔가 C로 프로그램 만들었으니까 하드웨어 제어도 가능하겠지 싶지만... 실상은 그 SO 파일의 권한이 어플리케이션과 동일한 관계로 불가능 합니다.
하지만 C로만 만들어진 기존의 시리얼 통신 프로그램을 Static 하게 빌드하신다면 그 프로그램이 독립적으로 돌아가는 것은 무방합니다.
결국 안드로이드도 리눅스 기반이니까요. ^^