시리얼 통신 타이밍 관련해서 질문 드립니다.

paeksj98의 이미지

안녕하세요.

질문은 간단합니다.

환경)Linux 2.6. Arm9 기반 입니다. QT환경에서 개발하고 있습니다.

예)1

for(i=0; i<1000; i++)
{
    serialSend(buff, len);
}

예)2
for(i=0; i<1000; i++)
{
    serialSend(buff, len);
    usleep(1);
}

제생각에는 1번같은 경우 포문을 100번돌고 나서 제어권이(?) 넘어가서 실제로 드라이버에서 Write가 이루어질 것 같고
2번은 한번Send가 이루어지고 usleep을 통해서 스위칭이 이루어 지면서 드라이버에서 write가 이루어질 것 같습니다. 제생각이 맞나요..??

개발중 문제사항은 예2번같이 개발을 하면 10ms내외로 Write가 이루어 지는데 실제로 원하는 시간은 1-2ms 내외 입니다.
그래서 sleep를 넣지 말고 1번과 같이 구현을 하면 될것 같아 구현을 했는데 데이터가 드문드문 Write가 되네요.(프레인 단위로 쓰는데 프레임이 중간중간 빠지네요.)

usleepd주면 스위칭이 일어나면서 여러개의 쓰래드를 거쳐서 딜레이가 발생하는 것 같습니다.
이런경우 쓰레드 기반에 이런 방식으로는 힘든건가요..??
혹시 Serial open 옵션에서 바꾸어 주면 가능한 사항인가요..??

생각나는 데로 썻는데 혹시 힌트라도 주실수 있는분 있으시면 조언좀 부탁드립니다.

아래는 시리얼 오픈입니다.

serialOpen()
{
   m_handle = open("/dev/ttySAC2", O_RDWR | O_NOCTTY)
   tcgetattr(m_handle, &oldtio);
   memset(&newtio, 0, sizeof(newtio));
 
   newtio.c_flag=IGNPAR;
   newtio.c_oflag =0;
   newtio.c_lflag=0;
   newtio.c_cflag &= ~HUPCL;
   newtio.c_cc[VTIME]=0;
   newtio.c_cc[VMin]=0;
   tcflush(m_handle,TCIFLUSH);
   tcsetattr(m_handle,TCSANOW,&newtio);
}

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.