CAFE

openSupport 소식

빙챗이나 ChatGPT로 제안받은 아두이노 코드의 활용하여 펌웨어 업무 적용 방법

작성자코드메이커|작성시간23.04.05|조회수18 목록 댓글 0

흔히들,

빙챗이나 ChatGPT를 이용하여 프로그래밍에 이용하면서

답변으로 아두이노 샘플 코드를 많이 제안 받습니다.

 

즉, 해당 칩셋의 해당 SDK의 API를 이용하여 

코드 제안을 받기는 어려운 상황인 것 같고

아두이노 샘플코드가 가장 일반적이어서 그런 것 같기도 합니다.

 

그럼, 이 제안 받은 아두이코 코드를 기반으로

자신의 칩셋과 거기에 맞는 SDK의 API로 실제 업무에 적용하기 위해 코딩을 하려면,,,

 

해당 칩셋의 SDK의 API는 어느정도 익숙하다고 할때

기존 빙챗으로 제안받은

아두이노 코드를 원하는 프로젝트 업무에 포팅을 하면 됩니다.

 

그러기 위해서 전제조건이

제안 받은 아두이노 코드의 아두이노 API의 내부 구현 코드를 확인하고

이 내부 코드를 자신의 프로젝트의 칩셋 기반의 SDK API로 대체하면 될 것 입니다.

 

예를들어,

I2C 아두이노 라이브러리인 Wire라이브러리의 

TwoWire::write, TwoWire::available, TwoWire::read

등의 함수 내부를 확인하면 아래와 같은 링크의 내용의 코드로 구현된 것을 알 수 있습니다.

ArduinoCore-avr/Wire.cpp at master · arduino/ArduinoCore-avr (github.com)

 

만약, 아래와 같은 I2C통신을 위한 아두이노 코드를

빙챗이나 챗GPT에게서 제안 받았다면,

 

 

위의 제안 받은 코드를 자신의 칩셉의 SDK API로 구현해야 합니다.

이때 이미 언급드린 위 링크에서

begin, beginTransmission, write, endTransmission 함수등을 내부에 아두이노 기반의 AVR 기반의

API로 구현된 것을 알 수 있습니다.

 

예를들면,

Wire.beginTransmission은 다음과 같고,

 

Wire.write 함수는 이렇게,

 

Wire.endTransmission 함수는 다음과 같이 AVR API를 사용하여 코딩되어 있습니다.

 

이렇게, 아두이노 내부코드는 AVR I2C API인,

twi_transmit, twi_writeTo

 

등의 함수로 구현되어 있습니다.

 

이 함수들을 자신의 칩셋 SDK API로 대체하여 구현해서

예를들면,

자신의 I2C 라이브러리가 halI2CWriteBytes()  와 halI2CReadBytes()로 제공된다면,

twi_transmit / twi_writeTo 함수를 halI2CWriteBytes 함수로 대체하여 구현하면 된다는 것입니다.

 

그러면,

초기에 빙챗이나 ChatGPT로 제안받은 아두이노 코드를 이용하면서

자신의 업무에 적용하면 됩니다.

 

 

 

(추가1)

물론,

twi_transmit / twi_writeTo 함수를 halI2CWriteBytes 함수로 대체하여 구현할 때

일대일로 매핑되어 대체되긴 힘들고 어느정도 workaround를 가지고 포팅을 하는 것을 의미합니다.

 

 

다음검색
현재 게시글 추가 기능 열기
  • 북마크
  • 공유하기
  • 신고하기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼