[nodemcu 강좌] 1. 펌웨어 컴파일하기

|

nodemcu 는 루아기반의 콘솔 개발환경으로 esp8266모듈상에서 gpio,pwm,uart,i2c,spi,wifi,tcp등을 지원합니다.(새로운 기능들이 現在도 추가 되있습니다.)


nodemcu 펌웨어 소스는 씨언어로 되어있으며 下 link에서 可用的.

https://github.com/nodemcu/nodemcu-firmware

그러나 이것을 컴파일하기위해서는 xtensa칩용 크로스컴파일러가 필요합니다.

소스를 컴파일을 위한 툴체인은 下 link에서 可用的.

https://github.com/pfalcon/esp-open-sdk


우분투14.04에서 설치하는게 가장 쉽습니다.

일단 우분투피씨가 없으면 pc를 한대 구해서 우분투를 설치합니다.

아니면 라즈베리파이도 괜찬습니다.


그리고 기본적인것들부터 설치해줍니다. (라즈베리파이에서는 unrar 대신에 unrar-free를 설치합니다.)

sudo apt-get install make unrar autoconf automake libtool gcc g++ gperf \
    flex bison texinfo gawk ncurses-dev libexpat-dev python sed

sudo apt-get install unzip

sudo apt-get install git


git허브에서 툴체인 소스를 받아옵니다.

git clone https://github.com/pfalcon/esp-open-sdk.git


툴체인 디랙토리로 이동합니다.

cd esp-open-sdk


스탠드얼론버전으로 빌드합니다.

make STANDALONE=y


툴체인이 성공적으로 빌드되면 esp-open-sdk/xtensa-lx106-elf/ 에 파일들이 생성됩니다. (라즈베리에서는 12시간정도 소요됩니다.)

내용은 다음과 같이 컴파일러 링커같은것들입니다.




이상으로 툴체인 설치되었습니다. 다음으로 이걸가지고 nodemcu를 빌드합니다..


git clone https://github.com/nodemcu/nodemcu-firmware.git


cd nodemcu-firmware


툴체인 패스를 설정해줍니다.(한번만 해주면되고 세션이 종료될때까지 유효합니다.)

PATH=$PATH:[툴체인경로]


예>

PATH=$PATH:/home/gbox3d/work/esp8266/esp-open-sdk/xtensa-lx106-elf/bin 


빌드 실행합니다.

make


아래와같이 /bin 에 빌드된바이너리가 생성됩니다.




-추가사항.2015-10-21

raspbian jessie의 경우는 libtool을 찾지못한다는 에러가 납니다. 

이럴때는 ....

apt-get install libtool-bin 을 추가로 해줍니다.


-추가사항 2015-10-28

mac osx 에서 빌드하는 방법입니다.

리눅스와 비슷합니다, 먼저 필요한 모듈을 설치합니다. 

brew 를 이용해서 설치합니다. 리눅스에서 apt-get과 비슷한 개념입니다.

http://brew.sh/index_ko.html <= 여기에 브루설치하는 방법이 있습니다.


brew tap homebrew/dupes

brew install binutils coreutils automake wget gawk libtool gperf gnu-sed --with-default-names grep

 export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH"


그다음에 추가적으로 macosx해주어야할 작업이 있습니다. 리눅스파일시스템과 호환되도록 대소문자폴더를 만들어야합니다. 그리고 거기에서 컴파일해야합니다.

sudo hdiutil create ~/Documents/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS+"

sudo hdiutil mount ~/Documents/case-sensitive.dmg

cd /Volumes/case-sensitive


그리고 마지막으로 또한가지 xcode의 6.1 이상의 툴체인과 충돌이 생기는 문제가있습니다.

xcode의 CLI의 버전을 낮추는 방법도있지만 좋은 방법이 아닌것같습니다.


graphite.c 
graphite-blocking.c 
graphite-clast-to-gimple.c
graphite-dependences.c 
graphite-interchange.c 
graphite-optimize-isl.c 
graphite-poly.c 
graphite-scop-detection.c 
graphite-sese-to-poly.c


위파일들을 찾아서 맨위에 

#include <stddef.h> 를 추가 해주면됩니다. 


일일이 찾기가 귀찬다면 다음은 sed 를 이용해서 자동화시킨것입니다.


sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-blocking.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-clast-to-gimple.c
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-dependences.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-interchange.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-optimize-isl.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-poly.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-scop-detection.c 
sed -i '1s/^/#include <stddef.h>\n/' crosstool-NG/.build/src/gcc-4.8.2/gcc/graphite-sese-to-poly.c








저작자 표시 비영리 동일 조건 변경 허락
신고
TRACKBACK 0 And COMMENT 0