본문 바로가기
개발

[Smartrobot] 아두이노 포팅

by 마스터누누 2017. 4. 18.
728x90
반응형


오늘은 오로카 강좌용 보드인 STM32- Smartrobot 보드를 이용하여 아두이노 포팅을 해 보았습니다.

해당 보드에 대한 핀맵 및 회로도는 아래 링크에 있습니다.




http://cafe.naver.com/openrt/1812





- 포팅 -

포팅이란?
:이식(移植) 또는 포팅(porting)은 컴퓨터 과학에서 실행 가능한 프로그램이 원래 설계된 바와 다른 컴퓨팅 환경(이를테면 CPU운영 체제, 서드 파티 라이브러리 등)에서 동작할 수 있도록 하는 과정을 가리킨다. 이 용어는 소프트웨어나 하드웨어가 다른 환경에서 사용할 수 있게 변경되는 것에도 해당한다. 소스 하나로 여러 플랫폼에서 사용할 수 있는 것을 크로스 플랫폼으로 부른다.


 

사실 저도 공부한지 얼마 안되어서 포팅이 뭔지 명확하게 개념이 잡혀있지 않습니다.

여기 저기 물어본 결과 비유하자면 심장을 이식 할 때 기증자의 심장이 수혜자의 몸에서 최대한 거부 없이 뛸수 있도록 주변 환경을 맞추어 주는 것입니다.

자바 버츄어 머신과 비슷하게 이해했는데 그게 아니라 프로그램이 해당 플랫폼에서 동작할 수 있도록 밑단 자체를 갈아주는 것이라고 하더라고요.

혹시 잘못된 개념이있다면 수정 하도록하겠습니다.


쉽게 생각해서 윈도우에서 돌아가는 프로그램을 리눅스에서도 돌아가게 바꾸어주는 작업을 포팅이라고 볼수 있습니다.

지금 하는 건 STM이라는 다른 환경에서 아두이노가 돌아갈수 있도록 세팅해 주는 것이지요








- 개발환경 -



우선 아두이노 홈페이지에 접속하여 Windows 버전 최신 아두이노를 설치합니다.
아두이노 홈페이지->다운로드에 들어가서 우측 하단 Windows Installer를 클릭하시면 됩니다.
자동설치인 Installer가 실행되지 않으시면 아래에 있는 ZIP파일을 다운 받으셔도됩니다.

다운로드 실행 후 설치를 진행합니다. 별도의 사용자 지정없이 '다음'을 눌러 설치해 주시면됩니다. 설치과정을 찍으려고 했는데 이미 완료되어서 제거 모드로 진행되네요.






아두이노 설치 후 STM32 포팅 파일을 하단의 경로에 넣어줍니다.
설치된 아두이노경로 hardware 폴더 안 입니다. 사진의 Arduino_STM32가 포팅 파일입니다.






 

그리고 설치된 아두이노를 실행,
도구->보드->Boards Manager를 클릭합니다.







여러가지 프로그램들이 뜰건데 그중 2번째 cortex-M3를 위한 패키지를 설치합니다.

저의 경우 이미 설치가 완료 되어서 Remove버튼이 활성화 되었습니다.

설치가 안된 경우면 현재보이는 Remove 위치에 버전과 인스톨 버튼이 있을겁니다.






 


이후에 도구에서 현재 사용중인 모듈의 코어와 포트 설정을 해주시면 완료입니다.

프로그래밍 후 컴파일, 업로드해주시면 실행되는 것을 보실수 있습니다.

그렇다면 테스트를 해보겠습니다.








- PWM소스 -


const int analogInPin = 1;  // Analog input pin that the potentiometer is attached to

const int analogOutPin = 1; // Analog output pin that the LED is attached to


int sensorValue = 0;        // value read from the pot

int outputValue = 0;        // value output to the PWM (analog out)


void setup() {

  Serial.begin(115200);

}


int a = 0;


void loop() {

  analogWrite(analogOutPin, a%256);


  Serial.print("\t output = ");

  Serial.print(a%256);


  delay(500);

  a+=5;

}


아두이노에서 제공하는 Analog-output(PWM)예제를 조금 수정하여 만든 소스입니다.

0.5초당 5씩 상승하고 256이되면 다시 초기화 되는 간단한 예제입니다.

아두이노는 처음이라서 대충 무슨뜻인지는 감이 잡히는데 정확하게는 잘 모르겠습니다

그렇게 어렵지 않다고 하니 함수 사용은 금방 할 수 있을것같습니다.








먼저 시리얼 통신을 통해 출력되는 현재 Parameter값입니다.

프로그래밍한것 처럼 5씩 꾸준하게 증하고 하고 있는 모습을 보입니다.









오실로스코프를 찍어보았습니다.

일단 사진으로 펄스 파형이 일정한 간격으로 생성되는것을 확인 할 수 있습니다.






 

 아무래도 아두이노를 이용하면 다른 툴 보다 직관적이고 쉽게 프로그래밍이 가능한 것이 장점인것 같습니다. 아날로그 출력핀을 여러개로 나누어 쿼드 콥터도 만들수 있을것 같네요.
 

 

  오늘은 SmartRobot 보드에 테스트를 하였지만 현재 연구중인 Spark 모듈에서 아두이노를 포팅한다면 좀 더 쉬운 인터페이스로 STM 조정이 가능합니다.

  또한 SmartRobot의 경우 제공되는 STM 포팅 파일로 진행 하였지만 앞서 말씀드린것과 같이 Spark는 기존의 모듈들과 장치가 조금 다르기 때문에 Wifi기능과 호환을 위해서 프로그램을 수정해야 할 것 같습니다.


반응형

'개발' 카테고리의 다른 글

[Spark] 스파크 모듈 소개  (0) 2017.04.18
[Spark] 스파크 모듈 개발환경 구축  (0) 2017.04.18
[STM32] 소스에서 메모리 주소 찾기  (0) 2017.04.18
[STM32] STM32 세미나  (0) 2017.04.18
[STM32] GPIO 사용방법  (0) 2017.04.18

댓글