도와주세요!!
글 수 15,339
2003.12.05 15:07:33 (*.241.146.1)
6682
안녕하세요! 리눅스 어플리케이션을 어떻게 만들어야 할지 몰라서 ...!!!!
현재 어플리케이션 프로그래밍 환경은
- H/W는 Arm보드에 Linux를 포팅한 상태이고, C를 사용합니다.
- 제어해야 하는 대상은 항상 AGC(Auto Gain Control)기능이나
ADC를 통해 특정 전압 레벨을 감시해서 알람을 발생시켜야 합니다.
- Console을 통해 메뉴를 구성해서 제품의 기능을 En/Disable 하거나,
특정 기능의 파라메터값을 변경할 수 있어야 합니다.
위와 같은 환경에서 문제가 되는 점은
- 이전에 8/16Bit Contorller에서 Firmware 수준으로 프로그래밍을 할 때는
RS232를 통해 문자가 입력되었을 때 인터럽트 루틴을 들어가서
프레임을 구성하고 빠져나오고, 계속해서 while()문 내에서 제어를 수행합니
다.
인터럽트 함수에서 수신받은 프레임이 구성이 완료되면 명령수신 변수를 set
하여
while()문 내의 제어루틴에서 수신받은 프레임을 처리했음.
- Linux에서 C로 프로그래밍을 할 경우, 제어루틴은 항상 while()문 내에서
장비의 상황을 감시하고 있어야 하는데,
Console을 통해 메뉴를 출력한후, 사용자의 명령을 받기 위해
scanf()나 getchar()를 사용해서 명령을 기다리고 있을 수 없다는 것입니
다.
(Firmware레벨에서와 같이 인터럽터 루틴을 작성하는 방법이 있는지 몰라
서...)
그래서, 생각한 것이
1. 두개의 프로세스를 생성해서 한 프로세스는 백그라운드로 제어를 수행하고,
나머지 하나의 프로세스는 명령을 console로 받아서 FIFO로 제어 프로세스
에
명령을 전달하는 방법
2. 위와 비슷한 방법으로 제어 프로세스에서 자식 프로세를 생성하여 PIPE를
통해
수신 받은 명령을 전달하는 방법
이었습니다. 그래서 1의 방법으로 어플리케이션의 구조를 구성해서 통신을 하
고
있는데, 그 방법이 너무 혼자만의(?) 생각이 아닌가하는 걱정이 됩니다.
좀더 좋은 방법이 있지 않을까? 혼자서 이리저리 자료를 찾아 봤는데요!
딱히 관련 자료를 구할 수가 없네요!
어떤 구조로 어플리케이션을 구성해야 할까요?
이런 어플리케이션에 대한 경험을 가지고 계신분들께 조언을 구합니다.
(꼭 갈켜주세요...~~)
현재 어플리케이션 프로그래밍 환경은
- H/W는 Arm보드에 Linux를 포팅한 상태이고, C를 사용합니다.
- 제어해야 하는 대상은 항상 AGC(Auto Gain Control)기능이나
ADC를 통해 특정 전압 레벨을 감시해서 알람을 발생시켜야 합니다.
- Console을 통해 메뉴를 구성해서 제품의 기능을 En/Disable 하거나,
특정 기능의 파라메터값을 변경할 수 있어야 합니다.
위와 같은 환경에서 문제가 되는 점은
- 이전에 8/16Bit Contorller에서 Firmware 수준으로 프로그래밍을 할 때는
RS232를 통해 문자가 입력되었을 때 인터럽트 루틴을 들어가서
프레임을 구성하고 빠져나오고, 계속해서 while()문 내에서 제어를 수행합니
다.
인터럽트 함수에서 수신받은 프레임이 구성이 완료되면 명령수신 변수를 set
하여
while()문 내의 제어루틴에서 수신받은 프레임을 처리했음.
- Linux에서 C로 프로그래밍을 할 경우, 제어루틴은 항상 while()문 내에서
장비의 상황을 감시하고 있어야 하는데,
Console을 통해 메뉴를 출력한후, 사용자의 명령을 받기 위해
scanf()나 getchar()를 사용해서 명령을 기다리고 있을 수 없다는 것입니
다.
(Firmware레벨에서와 같이 인터럽터 루틴을 작성하는 방법이 있는지 몰라
서...)
그래서, 생각한 것이
1. 두개의 프로세스를 생성해서 한 프로세스는 백그라운드로 제어를 수행하고,
나머지 하나의 프로세스는 명령을 console로 받아서 FIFO로 제어 프로세스
에
명령을 전달하는 방법
2. 위와 비슷한 방법으로 제어 프로세스에서 자식 프로세를 생성하여 PIPE를
통해
수신 받은 명령을 전달하는 방법
이었습니다. 그래서 1의 방법으로 어플리케이션의 구조를 구성해서 통신을 하
고
있는데, 그 방법이 너무 혼자만의(?) 생각이 아닌가하는 걱정이 됩니다.
좀더 좋은 방법이 있지 않을까? 혼자서 이리저리 자료를 찾아 봤는데요!
딱히 관련 자료를 구할 수가 없네요!
어떤 구조로 어플리케이션을 구성해야 할까요?
이런 어플리케이션에 대한 경험을 가지고 계신분들께 조언을 구합니다.
(꼭 갈켜주세요...~~)