i2c통신할 때 칩에있는 레지스터에서 받아 온 값이 msb바이트와 lsb바이트가 바뀌어서 받을 수도 있나요?

dct_lim의 이미지

i2c통신할 때 칩에있는 레지스터에서 read한 값이 한바이트를 넘을 때
MSB먼저오고 그 다음 LSB신호가 오잔아요
그걸 CPU가 MSB를 받은 뒤 한바이트씩 쉬프트하면서 받나요?
아니면 MSB를 LSB자리에 받고 그 뒤에 오는 바이트를 MSB쪽에다 계속 붙여넣는 방식으로 받기도 하나요?

한마디로 0X2345가 올 때
0X2345로 받나요 0x4523으로 받나요?

제 타겟은 MSB LSB를 바꿔서 받는 것 같아서요..
커널마다 다를 것 같긴 한데
만약 커널마다 다르다면 커널 어디쪽을 살펴보면 그 방식을 알 수 있을까요?

제 타겟은 TEGRA K1입니다.

답변부탁드립니다..

감사합니다.

shint의 이미지

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

gilgil의 이미지

질문의 요지는 nbo(network byte order)와 hbo(host byte order)를 mapping시키는 문제입니다. network상으로 데이터를 주고 받을 때에는 nbo로 주고 받는게 기본이며 이 데이터를 받아서 처리하기 위해서는 hbo로 바꿔 줘야 합니다. intel 계열 cpu는 little endian으로써 nbo와 hbo가 정 반대이며 arm 계열 cpu는 big endian으로써 nbo와 hbo가 일치합니다.

nbo를 hbo로 바꿔 주기 위해서 ntohs, ntohl, ntohll 등의 함수가 사용되는데, 소스 코드 레벨에서 ntohs, ntohl, ntohll 함수를 사용하면 컴파일러가 알아서 변환해 줍니다(컴파일러는 자신의 시스템이 little endian인지 big endian인지 알고 있어야 함).

라스코니의 이미지

리모트(remote)에서 보낸 순서대로 옵니다. gilgil 님이 이야기한 것 처럼 network byte order 로 오는데 기본적으로 big endian 옵니다. 만약 양쪽의 endian이 모두 big endian-big endian, 또는 little endian-little endian 이면 아무 중간 조작없이 처리하시면 되며, 만약 다르면 byte swap 이 필요할 수 있습니다.

i2c 칩에 있는 버퍼가 한바이트 받으면서 수신하는데 수신 데이터 처리 S/W에서 프린트해보면 알 수 있습니다.

dct_lim의 이미지

리틀엔디안 빅엔디안에 대한 내용을 봐도 무슨 말인지 몰랐었는데
그와 관련된 문제였군요.. 이제 뭔지 감이 잡힙니다
리틀엔디안과 빅엔디안에 대해서 더 공부해보아야겠어요..ㅠ

반갑습니다 ^^

댓글 달기

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