블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

임베디드용 io 라이브러리 설계 계획



avr, pic, arm등의 작은 마이컴칩에 프로그램을 하다보면,

eeprom, uart,spi,i2c,can,...등의 많은 장치와 통신 또는 데이터를 읽고, 쓰는 기능이 필요하다.

그런데 문제는 각 장치들의 특성이 동일하지 않다는 것이 문제.

단순히, write, read함수로 통일할 수 있을것 같지만, 그렇지 않다.

윈도우의 Write함수도 내부적으로 장치별로 verify기능을 가지고 있을 수 있지만, 확실하게 하려면, verify기능도 넣어야 한다. 또한, 내부적으로 verify기능이 있다고 해도, 전체적으로는 각 장치마다 verify코드가 필요하다.

코드 사이즈 감소는 어려워 보인다.


io라이브러리로 추상화 했을때의 장단점을 비교해보자.




io_read/io_write로 추상화하면

--------------------------------------------------------

장점

- write-verify기능을 공용으로 사용할 수 있다.

- 모든 io에 대해 동일한 기능 적용

  각각의 전용 write-verify함수를 작성하는것과의 차이는?

- 약간 코드 수정으로 다양하게 사용할 수 있다.

- 다양한 장치를 하나의 코드를 사용하여, 코드 사이즈 감소가 될 수 도 있다.(거의 불가능)


단점

- 복잡해짐

- 코드사이즈 증가

- 느려짐



verify

----------------------------

- UART와 같은 포트에서는 write-read-cmp가 아닌, crc, check-sum을 데이터에 포함해서 전송하고, 처리 결과 응답을 받아서 확인해야한다.

  (write-read-cmp 적용불가. 능동장치. 속도가 느려, 대역폭에 제한이 큼)

- flash, eeprom등은 write-read-cmp적용가능(수동장치. 속도가 빨라, 대역폭에 제한이 별로 없음)



결론

---------

임베디드 환경에서는 추상화는 다소 무리가 있다.

불편하더라도, 전통적인 방식의, 장치별로 제작된 전용 함수를 사용하는것이 좋을듯 싶다.

Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함