read 함수를 일정 시간 간격으로 호출 하는 방법 ??

society2000의 이미지


임베이디드 리눅스에서 아래의 경우는 어떻게 처리를 해야 되는 지요?? 그간 펌웨어만 다루다가
이제 막 임베이디드 리눅스를 공부하기 시작했는데 아직 운용 방식이 생소하네요

(장치1 -이하[1]) / (장치 2-이하[2]) / (장치 3 -이하[3]) 이 485 통신을 이용하여 서로 정보를 주고 받습니다.

[1] 은 매 10 msec 마다 [2] 와 [3] 에게 현재 상태 요청 명령을 전송하고 [2] 와 [3]은 해당 명령을 수신하면
자기 data를 송신합니다. [1]은 명령 전송후 10 msec 이내에 첫번째 data를 수신 받지 않으면 해당 디바이스
가 없는 것으로 인식하고 다음 명령을 전송합니다. 즉 [2] 에게 현재 상태를 요청했는데 10 msec 이내 [2]
에게서 응답이 없으면 [3] 에게 현재 상태를 요청하는 구조입니다.

펌웨어로 [2] /[3] 장치 프로그램을 만든다면 10msec 이내 응답 조건을 만족시키기 위해 uart 수신 인터럽트
서비스 루틴 함수에서 수신 명령을 처리하고 전송 준비를 하면 10 msec 이내 응답조건을 충족 시키는데 아무런
문제가 없을것입니다.

Uart 관련 디바이스 드라이버는 커널에서 제공하는 함수를 그대로 사용 해서 상기 조건을 임베이디드 리눅스로
구현한다고 하면, open 함수로 디바이스 드라이버를 열고 read 함수로 data 수신 상태를 확인해서 새로 수신된 data가
있고 [1] 이 보낸 명령으로 확인되면 write 함수를 이용하여 현재 상태 data 를 송신 합니다.
그런데 read 함수의 경우 일종의 폴링 방식 이기 때문에 10 msec 이내 송신 조건을 충족 시키기 위해서는
응용 프로그램의 순환 시간이 10 msec 를 초과하지 않도록 만들던지 read 함수를 프로그램 여러 곳에서 호출
해야 될 것입니다. 이러면 경우에 따라 송신 시간이 초과 될 수 있고 시스템이 불안해 지겠죠

그래서 이런 생각을 해 봤습니다. read 함수를 매 일정 시간마다 호출 할 수는 없을까 ?

책을 뒤져 보면 임베이디드 리눅스에서 일정 시간 마다 특정 조건을 체크 하는 방법은 커널 타이머를 추가 해서 인터럽트
를 받던가 워크 큐 구조체를 이용하여 특정 시간마다 특정 함수를 호출 하면 된다는 것을 알았습니다.
그런데 문제가 워크 큐 도 디바이스 드라이버인데 디바이스 드라이버 에서 read 함수를 호출 할 수 있나요?

임베이드 리눅스를 처음 접할때 가장 답답했던건 응용 프로그램에서는 타이머 인터럽트 서비스 루틴을 만들지 못하고
응용 프로그램에서 사용된 변수 또한 디바이스 드라이버에서 그대로 사용할 수 없다는 점 입니다.

아직 임베이디드 리눅스를 접한지 한달 정도 밖에 않되다 보니 운용 방식에 대해 여러가지 답답한 점이 많습니다.
상기 조건일때 리눅스에서는 어떻게 처리 하면 되나요? 조언 부탁 드립니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.