USBISP MK2 http://www.devicemart.co.kr/1077889



AVR 프로그래머를 하나 구매하였는데, 펌웨어와 드라이버가 좀 까다로운 듯...
판매사에서 제공하는 가이드를 보면 사용하는 프로그램의 버전과 호환성이 상당히 까다롭다..


그래도 가이드가 잘 나온 편이니 하라는대로 하면 되겠지만... 나는 맥에서 사용하고 싶었음.

잘 이해가 안가서 해결하는데 상당히 오랜 시간이 걸렸고, 정확한 인과관계가 맞지 않을 수도 있지만,,, 여튼 해결했다.

참고로 내가 구매한건 Olimex 사에서 만든 AVR-ISP-MK2 의 호환 혹은 동일 모델이다.


* 참고로 내가 젤 헤맸던 부분인데, 맥에서 시리얼 포트로 잡히지 않는다! (/dev/cu.usbmodem###, /dev/tty.usbmodem###, /dev/ttyUSB0 등)

이렇게 잡히는 사람도 있는 것 같은데, 나의 경우엔 시리얼 포트가 생성되지 않았지만 사용이 가능했다. (물론 시스템 리포트 등으로 확인시 정상 인식)

아마 mcu에 부트로더 등을 올려야지만 인식이 되는게 아닐까.. 싶다.


1. CrossPack 설치

맥에서 AVR 크로스 컴파일 용으로 CrossPack (https://www.obdev.at/products/crosspack) 이라는 개발킷이 존재한다.
다운받아서 설치해주자.

CrossPack is a development environment for Atmel’s AVR® microcontrollers running on Apple’s Mac OS X, similar to AVR Studio on Windows. It consists of the GNU compiler suite, a C library for the AVR, the AVRDUDE uploader and several other useful tools.


2. AVRDUDE 패치

컴파일된 바이너리를 avr로 업로드할때 사용되는 avrdude...
뭐가 문제인지는 모르겠지만, CrossPack 에서 설치해주는 avrdude 6.0.1 버전은 호환이 되지 않는다.

5 버전을 사용하거나, 6 이상 버전에 패치를 적용해주어야 한다.
작성시점 기준으론 5.11.1 혹은 6.3 버전.

avrdude 의 소스코드는 http://download.savannah.gnu.org/releases/avrdude/ 에서 다운받을 수 있다.


의존성 설치

Homebrew 를 이용해서 의존성을 먼저 설치해주자.
(참고로 homebrew 에서 avrdude 최신버전(6.3)을 제공하지만, 마찬가지로 패치가 필요해서 작동하지 않는다.)

brew install libusb libelf libftdi0 libhid

참고로 위 패키지들을 설치하지 않아도 진행은 가능하나, 컴파일된 바이너리 사용시
avrdude was compiled without usb support. 라고 뜨면서 실질적으로 사용이 불가능하다.


컴파일에 필요한 패키지도 설치하자.
brew install autoconf automake


AVRDUDE 5

위 주소에서 5 버전 소스코드를 다운받고 압축을 해제하자. 나의 경우엔 avrdude-5.11.1.tar.gz

해당 폴더로 이동한 후 다음 명령어들을 차례로 입력해준다.

./bootstrap
./configure
make

이후 make install 을 해주면 /usr/local/bin/avrdude 로 바이너리를 옮겨준다. (다른 것도 몇개 같이 옮김)


AVRDUDE 6

마찬가지로 위 주소에서 6 버전 소스코드를 다운받는다.

폴더로 이동한 후 Olimex 에서 제공하는 패치(https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/resources/endpointdetect_pass1.patch) 도 다운.

cat endpointdetect_pass1.patch | patch -p0 

위 명령어로 패치를 진행한다. (사실 난 안해봐서 안될 수도.)


이미 패치된 코드도 https://github.com/brettyhale/AVR-OSX-and-Olimex-ISP-MK2 여기서 내려받을 수 있다.


이후 컴파일은 위 AVRDUDE 5 와 같은 순서로 진행하면 됨.


작동 확인

avrdude를 컴파일한 후 해당 디렉토리에서
./avrdude -n -vvv -c avrispmkii -p atmega128 -P usb -C ./avrdude.conf
로 잘 작동하는지 테스트해볼 수 있다.

*MCU 가 atmega128 이 아니면 적당히 수정해주자.


잘 작동한다면 아래 접어둔 것과 같은 로그가 표시된다



3. USBISP MK2 펌웨어 교체

나는 헤매는 과정에서 진행했는데, 만약 판매사가 처음부터 이 펌웨어로 발송을 해준다면 진행할 필요가 없다.

여튼 맥에서 사용하기 위해선 libusb+avrdude용 USBISP 펌웨어로 교체가 필요하다.


펌웨어는 마찬가지로 Olimex 의 홈페이지에서 다운로드 가능.
https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/open-source-hardware


Software 쪽에 보면 Firmware files and drivers for older AVR/Atmel Studio and/or Arduino/AVRDUDE 항목이 있다.
직링은 여기 - https://www.olimex.com/Products/AVR/Programmers/AVR-ISP-MK2/resources/AVR-ISP-MK2-Firmware-WindowsDrivers.zip


압축을 풀면 Firmware_Drives/FIRMWARE-FOR-AVRDUDE-LIBUSB/libUSB-AVRISP-MKII.hex 파일이 있다.
해당 파일을 USBISP MK2 에 업로드 해주면 된다.


방법은 내가 구매한 제품 기준으로,

1. 플라스틱 케이스를 벗긴다.

2. JP1 의 스위치(?)를 Normal 에서 Up 으로 변경하고 컴퓨터와 연결

3. dfu-programmer 컴파일 및 사용 (http://blog.iolate.kr/257) 게시글을 참고하여 펌웨어 업로드 진행
        나의 경우 기기종류는 AT90USB162

4. JP1 스위치를 다시 원상태로 돌리기

하면 끝.



4. 프로젝트 생성, 컴파일, 업로드

CrossPack 에서 설치된 avr-project 명령어로 프로젝트 템플릿을 생성할 수 있다.
avr-project FirstProject

이러면 아래와 같이 프로젝트를 생성해준다.

FirstProject
├── firmware
│   ├── Makefile
│   └── main.c
└── FirstProject.xcodeproj

xcode 프로젝트로 생성해주는 것 같은데... 난 그냥 커맨드라인에서 계속 작업했음.

firmware/main.c 파일을 작성하면 된다.


컴파일을 하기 전에 Makefile 을 수정...

20, 21번째 라인에서 DEVICE, CLOCK 을 내가 사용하는 mcu 에 맞게 수정해준다.

나는
DEVICE     = atmega128
CLOCK      = 16000000

이렇게 수정했음.

FUSES 도 
FUSES      = -U hfuse:w:0xd9:m -U lfuse:w:0xff:m
로 수정하였는데 퓨즈비트를 자세히 모르니 패스.


Programmer 쪽도 수정을 해줘야하지만, Makefile의 주석이 권장하는 방법대로 하자.

~/.avrduderc 파일을 생성하고

default_programmer = "avrispmkii";
default_serial = "usb";

이렇게 입력해준다.


이후 make 로 컴파일,

혹은 make flash 로 컴파일 및 업로드 할 수 있다.

make fuse 가 퓨즈비트 설정인 것 같지만 난 안써봤음.


잘 작동하면 성공!



1. MySQL 설치 및 시작

MySQL 홈페이지( http://dev.mysql.com/downloads/mysql/ ) 에서 dmg 로 다운받아 설치.

10.10 요세미티라면, 10.9 가 아니라 10.8 용 버전을 받자.


설치 후 소켓을 위해 아래 명령어 실행한다.

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock


서버 시작 / 종료는..

sudo /usr/local/mysql/support-files/mysql.server start

sudo /usr/local/mysql/support-files/mysql.server stop


접속은

/usr/local/mysql/bin/mysql


난 cui 로 쓸일이 없어서 그냥 저렇게 한두번 쓰고 말거지만, 자주 쓸거면 환경변수에 경로를 넣어두자.


여튼 /usr/local/mysql/bin/mysql/mysql -u root 로 접속 후 (만약 안되면 sudo)


UPDATE mysql.user SET Password=PASSWORD('패스워드') WHERE User='root';

FLUSH PRIVILEGES;


로 root 패스워드를 설정해준다.



그 다음으로는 /usr/local/mysql/my.cnf 파일을 수정한다. utf8 설정을 위해...!!

이 파일을 /etc/my.cnf 혹은 /etc/mysql/my.cnf 로 복사해서 수정해도 될...걸?


여튼 파일을 열어서 아래 더보기 내용을 써둔다.




2. PHPMyAdmin 다운로드

PHPMyAdmin 홈페이지 ( http://www.phpmyadmin.net/ ) 에서 다운,

압축을 풀고 Document Root 에 넣어둔다. 폴더명도 적당히 입력하기 좋게 바꾸고...

Document Root 를 모르겠으면 일단 대기. 밑에 있음



3. Mac 의 웹서버 및 php 활성화

이건 내가 예전에 글을 썼던게 있다. 참고.

Mac 내장 웹서버 활성화 하기 (웹 공유) (2013/09/05)

맥 내장 php 활성화 하기 (2011/01/08)


user directory ( ~/Sites ) 는 모듈이 주석처리된건가..? 뭐 그런것 같으니 php 활성화 방법처럼 활성화 해줘도 되겠지만,

난 userdir 안쓰니 패쓰.

document root 는 php 활성화 글에도 있지만,

/Library/WebServer/Documents/


root 권한 폴더라, 작업하는데 조금 번거로우니 그냥 권한을 바꿔두는 것도 나쁘지 않다.


4. phpmyadmin 설정

맥의 웹서버를 켰고, php 를 활성화 했으며,

phpmyadmin 폴더를 도큐먼트 루트로 이동하고, mysql 을 정상적으로 시작했다면 다음 단계로!


도큐먼트 루트로 옮겨둔 phpmyadmin 폴더 하위에 config 폴더를 만들고 chmod 777 config 을 준다.


그다음 http://localhost/phpmyadmin/setup 으로 접속


새 서버 -> 인증 방식을 cookie -> 적용 -> 저장

하면 config 폴더 안에 config.inc.php 파일이 생겨 있다.

이 파일을 phpmyadmin 폴더 안으로 옮기고 config 폴더는 삭제. (setup 폴더도 삭제해도 됨.)


그 다음 phpmyadmin/examples 폴더로 이동하여

/usr/local/mysql/bin/mysql -u root -p < create_tables.sql


자, 이제

http://localhost/phpmyadmin 으로 들어가서,

root / 설정한 패스워드 로 로그인을 한다.


그 다음 사용자 탭 - phpmyadmin 사용자를 생성하고

phpmyadmin 테이블에 대한 전체 권한을 준다.


phpmyadmin/config.inc.php 에 아래 더보기 내용을 추가




다 했으면 phpmyadmin 을 로그아웃했다가 재 로그인 해보자.


하단에 에러메세지가 나오면 알아서 해결 ㄱㄱ




References

http://miconblog.com/archives/2014/11/mac에서-mysql-설치와-실행-그리고-몇가지-유의사항/

http://nsnotification.blogspot.kr/2013/05/phpmyadmin.html

http://link2me.tistory.com/486

http://jinifactory.tistory.com/10






'개발개발 > Mac, iOS' 카테고리의 다른 글

iOS Push 인증서 pem 변환하기  (0) 2016.07.17
APNS device token 받아오지 못하는 문제  (0) 2015.07.02
IPC on iOS7 with Evais0n  (11) 2014.02.08
BadaSori - 소리바다 for Mac  (10) 2013.12.15
[Mac] 독에서 아이콘 없애기  (0) 2013.12.15




바다소리(맞춤법상으론 "바닷소리"가 맞습니다)는 Mac 용 소리바다 플레이어입니다.


기존의 웹플레이어를 이용해 만들었으며, (당연히) 비공식 어플리케이션입니다.

(고로 별 문제 없으리라 믿지만, 갑자기 작동이 안되거나 사라질 수도...)


http://badasori.iolate.kr/

이 링크를 보고 오시면 어떻게 생겼는지 이해가 가실거에요.


다운로드는 여기

(혹은 위 페이지)


이 플레이어를 만든 이유는

1. 웹플레이어 형태가 웹 서핑시 불편하다

- 새 창을 띄우기 위해 손을 한번 더 쓰거나 실수로 꺼버리는 상황이 발생


2. 키보드 단축키 사용을 위해서


3. 웹으로 인한 자잘한 불편함


4. 맥용 Bugs 플레이어를 고등학생이 만들었다고 기사까지 난거보고

-그리고 수능 친 잉여지만 나도 아직 고등학생.......



아직 불편한 점도 많고 개선할 부분도 많지만 조금씩 개선해나갈 생각입니다.




재생목록과 관련된 부분은 미니플레이어에 있는 소리바다 로고를 누르면 나타나는 소리바다 웹에서 해결해 주셔야합니다..


또한 상태바의 소리바다 아이콘을 우클릭하면 로그인과 설정을 할 수 있는 메뉴가 나타납니다.



감사합니다~!!



ps. 근데,, 소리바다를, 그것도 맥에서 쓰는 사람은 많지 않을 것 같은데 말이죠.....

ps2. 형이 Genie 버전을 내놓아라고 강요하고 있어서 곧 Genie 용 플레이어도 만들어질 수도...


Version 1.0 (2013.12.15) :

최초 버전

미니 플레이어 - 현재 재생 정보, 컨트롤(재생, 다음곡, 이전곡, 시간 탐색, 볼륨, 반복, 셔플)

알림센터 지원

맥용 키보드의 미디어 키(재생, 다음곡, 이전곡) 지원


Version 1.1 (2013.12.17) :

플레이어 새로고침 버튼 추가

로딩 중에도 소리바다 웹을 열 수 있도록 수정

메뉴 - 로그인 시 로그인 탭이 열리지 않던 문제 수정

플레이어가 나타날 때 작업중이던 창이 포커스를 잃는 문제 수정

네비게이트 에러시 url 출력

%hook NSString

-(NSString *)stringWithString:(NSString *)str {

//....

%orig;

}

%end


THEOS 언어를 사용해봤다면, 메서드를 위와 같이 후킹해서 사용하게 된다.

근데 저건 탈옥해서 트윅을 사용할 때의 얘기이고,,,


맥용 앱을 제작할 때 메서드 후킹이 필요할 때가 있을 수 있다.

(iOS 에서는 확인 안해봤지만,, 안되겠지?)


일반적인 경우라면 새로운 클래스를 만들고 원래 클래스를 상속받아서 사용하면 되겠지만..




주저리주저리 하고 싶은 말이 많지만 생략하고, 오버라이딩(후킹)을 위해선 아래 함수를 사용하면 된다.

더보기 클릭!




사용방법은


1. 해당 클래스에 카테고리로 대체용 함수를 만든다.

2. MethodSwizzle 함수를 사용해 필요한 때에 바꿔준다.

3. 원래 메서드를 호출하고 싶다면, 카테고리로 만든 메서드를 호출해 주면 된다.


예시:


@interface NSString (Swizzle)

-(NSString *)alt_stringWithString:(NSString *)str;

@end


@implementation NSString (Swizzle)


-(NSString *)alt_stringWithString:(NSString *)str {

    //......

    

    return [self alt_stringWithString:str];

}


@end


...


-(void)somewhereInYourMind {

MethodSwizzle([NSString class], @selector(stringWithString:), @selector(alt_stringWithString:));


[NSString stringWithString:@""];

}


이렇게 하면 원래 메서드(여기선 stringWithString:) 를 호출하면

alt_stringWithString: 을 거친 다음 원래 메서드가 호출되고, 반환된다.



출처: http://cocoadev.com/MethodSwizzling

설정 conf, key 만들기 등은

http://blog.iolate.kr/121

이 글 참고.


사실 난 우분투에서 만들었던 키 들을 그대로 가져왔기 때문에 잘 모르겠지만

크게 다르진 않을거다.

easy-rsa 의 경우도 구글링 해볼 것.



일단 설치는 간단하다.

brew install openvpn


mac ports 로도 되는 것 같지만 brew 가 훨씬 편하니 난 저것만 쓰겠음.


설치하고 나면 daemon 관련 작업을 하라고 하는데

sudo cp -fv /usr/local/opt/openvpn/*.plist /Library/LaunchDaemons

이것만 하고 그 뒤에 launchctl load 부분은 일단 스킵.


설정 파일가 위치할 폴더는 /usr/local/etc/openvpn/ 이다.

(사실 어디에 있든 상관은 없다.)


위에 링크한, 우분투에 openVPN 설치 글을 참고하여 키와 설정파일 들을 만들자.


그러고 나서 아까 brew 설치 후 시키는 대로 복사한 파일을 수정하자.

루트 권한이니 그냥 터미널로 수정을 추천. 잘 모르겠으면 복사해서 수정 후 다시 집어넣어 주면 된다.


<array>

    <string>/usr/local/opt/openvpn/sbin/openvpn</string>

    <string>--config</string>

    <string>/usr/local/etc/openvpn/openvpn.conf</string>

  </array>

빨간색으로 표시한 부분을 자신의 설정파일에 맞게 바꿔주자.

나의 경우엔 server.conf


만약 디렉토리 자체를 다른 곳에서 시작한 경우 앞부분 경로를 맞게 수정해주고

밑에 WatchPaths 와 WorkingDirectory의 경로도 바꿔주면 된다.


그리고 저장.


데몬을 로드하기 전에 문제가 있나 확인하기 위해 직접 실행해 본다.

나의 경우 설정 파일 경로 부터 key 권한 문제까지 여러 문제가 많았거든..;;ㅋㅋ


자신의 설정파일이 위치한 폴더로 이동 후( cd /usr/local/etc/openvpn/ )

sudo /usr/local/opt/openvpn/sbin/openvpn --config /usr/local/etc/openvpn/openvpn.conf


위에서 설정한 환경에 따라 당연히 인자는 적절히 수정해 줄 것.

실행 후 

Initialization Sequence Completed

라는 메세지가 나오면 성공이다.


인터럽트 걸고 나온 후에

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.openvpn.plist 

를 실행해 주자.



이 후 연결해보면 연결은 잘 될텐데 클라이언트에서 인터넷이 안된다.

우분투에서의 iptables 같은 작업이 필요한 것.


그건 이렇게 하면 된다.


sudo sysctl -w net.inet.ip.fw.enable=1

sudo sysctl -w net.inet.ip.forwarding=1

sudo natd -interface en0

sudo ipfw add divert natd ip from any to any via en0


얘도 재부팅마다 해줘야 하는데,


https://forums.openvpn.net/topic11401.html


여기 들어가보면 저 스크립트를 데몬화 해주는 방법이 있다.

예전엔 시스템 환경설정 - 공유 에 웹 공유가 있었는데,

Lion 부터인지 Mountain Lion 부터인지 없어졌다.


사용자 계정에 Sites 폴더는 그대로인데 말야..



활성화 방법은 간단,

sudo apachectl start


중지는

sudo apachectl stop 

이다.


활성화만 복잡해졌지 그 외 나머지는 이전과 같음.

활성화를 편하게해주는 앱도 있는 듯...?



================

2016.05.02


El capitan 이후 바뀐 설정으로 인해 데몬이 실행이 안된다.


com.apple.xpc.launchd[1]: (org.apache.httpd[23641]) Service exited with abnormal code: 1

콘솔을 보면 이렇게 뜨고,

$ sudo apachectl

이라고만 입력해보면 
AH00526: Syntax error on line 20 of /private/etc/apache2/extra/httpd-mpm.conf:
Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration

이렇게 configtest 결과가 나온다.

/etc/apache2/extra 경로에서,


$ sudo mv httpd-mpm.conf httpd-mpm.conf~elcapitan

$ sudo mv httpd-mpm.conf~orig httpd-mpm.conf


요렇게 해주면 됨.


참고:

https://discussions.apple.com/thread/6602475?tstart=0

http://apple.stackexchange.com/questions/211015/el-capitan-apache-error-message-ah00526

'Mac, iOS' 카테고리의 다른 글

iOS7 아이폰4 반탈  (2) 2013.10.01
iOS7, 벡터 아이콘?  (3) 2013.09.22
[AppStore, 순정] OpenVPN on iOS  (0) 2013.08.14
iOS6, 초기화 하지 않고 iCloud 에서 복원하기 [탈옥]  (1) 2013.02.14
dpkg-scanpackages 문제...  (0) 2013.02.06

항상 헷갈렸다.

DOS 에서 나온 Windows 말고, 나머지 OS 들의 상관관계.

어쩌다 찾아보게 됬고, 정확하지 않을 순 있겠지만 답을 찾았음.


Unix -> BSD -> Mac 까진 맞는 듯 하다.

BSD -> NextStep 과 BSD -> FreeBSD 이 합쳐져 Mac 으로 된것 같긴 하지만.

아마 초기 맥이 FreeBSD 다음으로 파생되어 나왔고 그 다음 잡스의 복귀 이후 인텔로 이전하면서 NextStep 과 합쳐진 것 같다.

Cocoa, UIKit 의 Foundation 들의 클래스명 prefix 인 NS 가 NextStep 의 준말이고, 이 프레임워크는 맥 역사 중반에 들어왔으니 말이다.



여튼 문제는 Linux.


Linux 문서를 보면 Unix 계열이라고는 하나 Unix 와 다른점들이 있고 Unix 규격 문서에서도 Linux가 Unix 규격을 지켜준다고 하진 않는다. (BSD 도 안지킨다는건 왠지 모르겠음)

Linux 의 역사(위키피디아)를 보면 리누스가 미닉스(유닉스 기반)를 보고 만든, 즉 유닉스를 기반으로 하지만, 유닉스에서 파생된 것이 아닌 유닉스를 보고 베낀 클론 운영체제라는 것을 알 수 있다.

유닉스에서 떨어져 나왔다기 보다는 독자적으로 개발된 운영체제라는게 포인트!!


이 점이 리눅스가 유닉스 계열이면서 동시에 유닉스와는 다르게 된 이유인것 같다.


위키피디아 유닉스 계열 문서의 관계도 에서도 리눅스를 Unix 에서 이어진 것이 아닌 새로 생겨난 OS 로 분류하고 있다.


추가로 Unix 는 현재까지 서버 등에 사용되고 있는 상용 OS 라고 한다.

유닉스가 분명히 좋은 점이거나 유리한 점이 있으니 돈주고 아직까지 쓰일테지만 찾아보면

리눅스유닉스비교.pdf <- 이런 식의 리눅스가 무조건 짱이다 싶은 내용들 밖에 안보인다..ㅋ


참고 자료:

http://ko.wikipedia.org/wiki/단일_유닉스_규격

http://ko.wikipedia.org/wiki/유닉스_계열

http://ko.wikipedia.org/wiki/리눅스

http://tmdgus.tistory.com/82

'Linux, Server, Web' 카테고리의 다른 글

특정 국가(중국!!) 차단하기  (0) 2013.10.19
Permanently Redirect (301)  (0) 2013.09.28
phpmyadmin 에러  (2) 2012.11.18
사용해 본 VPS 비교  (2) 2012.11.14
우분투 L2TP VPN 설치/설정법  (2) 2012.09.29

+ Recent posts