'리눅스'에 해당되는 글 39건

  1. 2010.11.10 아두이노에서 AVR 사용하기 2
  2. 2010.10.23 아두이노 리눅스에서 사용하기 7
  3. 2010.10.03 Makefile애서 플레그도 제대로 붙여야지....
  4. 2010.09.23 [버그] glade 이미지 파일 경로 설정
  5. 2010.09.21 weechat launcher perl 스크립트 작동시키기 4

아두이노에서 AVR 사용하기

Arduino를 조금 써보니깐 왠지 직접 못건드리니 찝찝하다....

C로 직접 건들여보면 더 좋을것 같아서  "AVR 처럼 사용가능하게 하는 방법" 을

구글에서 찾으니깐 다음과 같은 글이 나왔다...
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC
http://symbolx.org/robotics/107-arduinoavr-command-line-dev-environment

2번쩨 링크를 보면....예제소스도 있고, Makefile도 있겠다 싶어서 바로

#make;make upload

해봤으나 실패...

다음과 같은 오류가 떠버리고 더이상 진행되지 않는다.

avrdude: stk500_recv(): programmer is not responding

에러를 또 구글에서 찾아보니깐 다름과 같이 하면 된다구 하네. (역시 구글신은 모르는게 없엉....)

http://www.neuraladvance.com/2010/04/08/using-avrdude-with-the-arduino-duemilanove/

응? 거의 비슷한데.... 하다가 좀더 자세히 보니 upload할때 -b 플래그가 빠져있는것을 확인했다..

man페이지 보니깐 baudrate라고 한다...  업로드 속도 관련된듯하다 (이것도 구글이 갈켜줌...ㅋ)

그래서 최종으로 만들어진 Makefile.... 첫번째 링크의  Makefile과 유사하다.

CC=avr-gcc
CFLAGS=-Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU)
MCU=atmega168
F_CPU=16000000UL

OBJCOPY=avr-objcopy
BIN_FORMAT=ihex

# 통신포트 는 개인마다 다를수 있으므로 수동으로 설정 (arduino 의 그 통신포트를 그대로 사용)
PORT=/dev/ttyACM0
BAUD=19200
PROTOCOL=stk500v1
PART=$(MCU)

# 당연히 avrdude 가 설치되어 있어야 한다.
AVRDUDE=avrdude -F -V

RM=rm -f

.PHONY: all
all: main.hex

main.hex: main.elf

main.elf: main.s

# 소스파일명이 다르다면 변경해 주도록 한다.
main.s: main.c

.PHONY: clean
clean:
        $(RM) main.elf main.hex main.s

.PHONY: upload
upload: main.hex
        $(AVRDUDE) -c $(PROTOCOL) -p $(PART) -P $(PORT) -U flash:w:$<

%.elf: %.s ; $(CC) $(CFLAGS) -s -o $@ $<

%.s: %.c ; $(CC) $(CFLAGS) -S -o $@ $<

%.hex: %.elf ; $(OBJCOPY) -O $(BIN_FORMAT) -R .eeprom $< $@

그리고 다음 소스를 복사해서...

(첫번째 링크에 있는 소스와 같은 소스, 왔다가따 하기 귀찮아서 그냥 따로 붙여 넣었다)
/*
* LED 껌벅 껌벅 소스
*/

#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
/* set PORTB for output*/
DDRB = 0xFF;

while (1) {
/* set PORTB.6 high */
PORTB = 0x20;

_delay_ms(1000);

/* set PORTB.6 low */
PORTB = 0x04;

_delay_ms(1000);
}

return 1;
}

실행하면... 뭐라고 메세지가 쭉 나오고 Arduino 보드에 반응이 나타날것이다

제대로 확인하고 싶으면 딜레이 속도를 조절해서 LED의 깜박임 속도를 보면 된다~

아 그리구 Arduino랑 AVR랑 핀 배열에 조금 차이가 있으니깐 꼭 한번 보자.

Arduino 소스를 AVR로 만들어볼때 유용할듯... 해봐야지...ㅋ

사용자 삽입 이미지
http://www.arduino.cc/en/Hacking/PinMapping168
http://techblog.textcube.com/156

어... 근데 이거 적다보니깐 다 어디서 배껴온거네 ㅋㅋㅋㅋ 내가 만든건 뭐냑 ㅋㅋㅋ



ps1; Makefile로 하는거니깐.... vim에서 이제 편하게 코딩이 가능하다 -_-v 자바 안녕~ 스케치 안녕~

ps2; avrdude로 하니깐 부트로더 툴체인 어쩌고 신경 안써서 편한거 같다.

3학년 임베디드 시간에 툴체인 설정하는거 생각하면 이건 축복이나 다름없다 (뭐 다르긴하다만)

ps3; 위에 적힌대로 말고, 그냥 Arduino Code를 외부 에디터로 사용하려면

다음과 같은 방법을 사용 하면 된다.

http://www.arduino.cc/en/uploads/Hacking/Makefile

난 시도는 해봤는데 이상하게 컴파일은 안되서 때려치웠음 -_-.....

'Hardware' 카테고리의 다른 글

아두이노 리눅스에서 사용하기  (7) 2010.10.23
NEXT-510UHP USB허브 구입기  (10) 2010.09.13
모니터를 사자 #1  (6) 2010.08.01

아두이노 리눅스에서 사용하기

내용과는 아무 상관없는 아두아노 IDE스샷... 그림이 있어야 좀 눈에 띄지 않겠어요? :D

사용자 삽입 이미지

1 장치를 켜고 USB에 연결, 다시한번 회로도에 맞게 되어있는지 확인


2 커널에서 다음을 모듈/커널에 장착해 넣는다 (어지간해선 일반유저는 이거 안건들여도 됨)

Device Drivers ---> [*]USB support --> [*/M] USB Modem (CDC ACM) support

Device Drivers ---> [*]USB support --> <*/M>USB Serial Coverter support --->

[*/M] USB FTDI Single Port Serial Driver

첫번째껀 아두아노에서  usb serial 통신을하기 위한 시리얼포드 설정이다

(윈도우의 COM PORT - 옛날에 모뎀쓸때 쓰던 포트)

보통 메뉴얼에 보면 /dev/ttyUSB*가 나온다고 하는데 다 그런건 아니다

/dev/ttyACM*이 나와도 정상이니깐 신경쓰지말고

뒤에 preferences.txt 파일 설정할때 조심만 하도록 하자

두번째껀 그냥 간단하게 아두이노 에서 사용하는 USB드라이버의 한 종류(FTDI) 라고 생각하면 된다

- 어쨋던 모듈에 신경쓰기 싫다고 하면 나처럼 다 커널안에 넣어버리는것도 한 방법이다.....

3. arduino 설치

- 보통 어지간한 배포판에는 거의다 포함 되어있기 때문에 별 걱정없이 걍 설치해주면 된다...

(적어도 아치, 우분투, 데비안엔 있는것은 확인했다)

아! 그리고 꼭 "32비트용 패키지 인지 64비트용 패키지인지" 확인하고 설치하도록 하자.

(이거때문에 내 황금같은 일요일을 날렸단 말이오!!! 겨우 이거가지고 ㅠㅠ)

이 비트는 지금 운영체제의 비트를 의미하는것이 아니다 - CPU임

32비트 CPU를 가진 컴퓨터라면, 32비트 패키지를 설치해주고,

64비트 CPU를 가진 컴퓨터라면 64비트를 설치하도록 하자

3. uucp그룹에 사용자를 추가히켜 준다.
gpasswd -a <YourID> uucp
4. ~/.arduino/preferences.txt에서

serial.port = /dev/ttyACM0 # 뭐 ttyUSB* 라면 그걸로 맞춰주면 된다

로 설정한다

5. arduino (스케치) 를 실행

Tools -> Board ->에 자신의 arduino모델을 선택

Tools -> Serial Port -> /dev/ttyACM0를 선택한다 (아마 선택되어 있을수도 있다)

- 이제 코드를 집어넣고 upload를 해보자. 스케치에서 작업하는 것은 여기까지

다시한번........Trubleshooting

1. 아두아노 스케치에서 Tool -> Serial Port가 회색인데?, 당근 /dev에 장치도 안올라오구 왜이럼?
- FTDI 모듈이 안잡혔거나, 커널에서 USB 시리얼 포트 설정이 안되서 그럼, 2번을 보셈

2. 컴파일은 잘되는데 업로드가 안되는?
- 다시한번 확인해보셈, 과연 패키지랑 님 시퓨랑 맞나.

ps; 참고로 내 모델은 Uno

이후에 외부 에디터(아마 Vim)에서 아두아노를 컴파일해서 업로드 하는 방법을 포스팅 할 예정
(솔까말 저기 아두이노 스케치로 에디팅하기 정말 불편하다...... 그래서......)


근데 그건 언제일까.......

'Hardware' 카테고리의 다른 글

아두이노에서 AVR 사용하기  (2) 2010.11.10
NEXT-510UHP USB허브 구입기  (10) 2010.09.13
모니터를 사자 #1  (6) 2010.08.01

Makefile애서 플레그도 제대로 붙여야지....

오랜만에 프로파일링 기능함 써볼라구  Makefile.in 에 -pg 옵션을 추가..

그리고 막 소스를 고치고.... 컴파일해서 실행을.....

그런데! 잘 돌아가는 게.. 라이브러리내부에서 (그러니깐 제가 만든게 아니라는) 에러가..

"state not found" 라니, "connection time out" 이라니...

어째서 제대로 이벤트시그널을 Detect해내지를 못하니... 줘도 못먹냐 ㅠㅠ

뭔가 잘못 고쳤을거야... 라고 생각

그래서 소스를 열심히 살펴봄.. 별 바꾼것도 없는데 안됨....

혹시 몰라서 모듈을 따로 분리한다음에 컴파일 해봤음 - "어 이건 되넹" 뭐가 문제야 하다가..

Makefile.in을 차자보니깐 이게 왠걸.. CFLAG에 옵션이 추가된게 아니라 LIB에 -pg가 추가되어 있음

아놔...... 대체 왜 에러가 안난거야? 링크할때나 에러 안나나....

그래서 CFLAG에 추가하니깐 잘 돌아가네염,

아놔 이게 무슨짓이야 이거때문에 어젯밤이랑 오늘 오전 날렸음


3줄 요약

Makefile에도 신경좀 씁시다.


프로그램이 이상하게 돌아가는게 링킹/컴파일이 제대로 안되서(에러가 안나도!)

그럴수두 있다는

[버그] glade 이미지 파일 경로 설정

glade ver 3.6.7에서

리소스 파일을 수정할때

"패스명을 정확하게 수동" 으로 넣어야한다.

(옆에 폴더 아이콘 눌러서 지정해줘도, *.glade파일이 있는 경로랑 같지 않으면 비록 glade 내부에서는

그림이 잘 나오지만, 실제로 프로그램을 실행시키면 다 액박으로 뜬다)

그러니깐 Play_icon.png 라는 파일이 glade파일이 있는 하위홀더 icons에 있다면,

직접 icon/Play_icon.png라고 써놓아야한다.

(시실뭐... 나 같은 경우에는 그냥 직접 xml파일에다가 경로를 썼음)

(원래 스크린샷을 찍을렸는데 display가 갈궈서 자꾸 검은 화면만 나오기 때문에 패스)

weechat launcher perl 스크립트 작동시키기

plugins.conf 파일에 다음을 추가하면 된다.

# plugins.conf -- WeeChat v0.3.3
#

[var]
perl.launcher.signal.weechat_highlight = "aplay ~/.weechat/sounds/beep_1.wav"

(아니면 /set 명령어로 직접 길게 쭉 쳐주는 방법도 있는데 그거보단 이게 편하니)

소리 재생 프로그램, 재생 파일의 경로는 알아서 각각 설정하면 된다.

몇달전부터 계속 소리가 안나는거 쓰고 있었는데... 도저히 참고 참고 참다가 안되서 그냥 고쳐버렸다.

이래서 귀차니즘은 무서운것이....

weechat의 내부 설정이 어떻게 바뀌었는지......

아니면 plugin.conf파일이 초기화 되어서 내용이 날라갔는지는 모르겠는데... 여튼 위와 같이 추가하면 된다.

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

아. weechat프로세스를 다 끄고 난다음에 설정파일을 수정해야한다.

이상하게 weechat은 프로그램 종료시에 설정내용을 설정파일에 rewrite하는거 같다...

왜 이렇게 만들었는지는 모르겠지만 암튼 설정파일 건드릴때 마다 귀찮다. 쩝... 주의하자.

ps; 이제 IRC에서 불러도 제대로 응답(?) 할겁니다 ㅋ
prev 1 2 3 4 5 ··· 8 next