{"id":1252,"date":"2015-09-23T20:13:18","date_gmt":"2015-09-23T11:13:18","guid":{"rendered":"https:\/\/hack.gpl.jp\/?p=1252"},"modified":"2015-09-23T20:13:18","modified_gmt":"2015-09-23T11:13:18","slug":"post-1252","status":"publish","type":"post","link":"https:\/\/hack.gpl.jp\/2015\/09\/23\/post-1252.html","title":{"rendered":"espeink \u306e\u30bd\u30fc\u30b9\u3092\u30b3\u30f3\u30d1\u30a4\u30eb"},"content":{"rendered":"
\u3055\u3066\u3001\u30cf\u30fc\u30c9\u306e\u8abf\u67fb\u304c\u7d42\u308f\u3063\u305f\u306e\u3067\u3001\u4eca\u5ea6\u306f\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306e\u8abf\u67fb\u3067\u3059\u3002<\/p>\n
\u307e\u305a\u3001\u3056\u3063\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u898b\u3066\u307f\u307e\u3059\u3002<\/p>\n
osx 10.9.5 \u3067\u3084\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n
\n\u25bc\u30bd\u30fc\u30b9\u3092\u30b2\u30c3\u30c8
$ git clone http:\/\/git.spritesserver.nl\/espeink.git\/<\/a>
$ cd espeink\/
$ git submodule init
$ git submodule update<\/p>\n<\/blockquote>\n\u4ee5\u4e0b\u306e\u3053\u3068\u304c\u308f\u304b\u308a\u307e\u3057\u305f\u3002<\/p>\n
\u25bc\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u6982\u7565
\u30fbESP12 \u306e\u4e2d\u3067\u52d5\u4f5c\u3059\u308bweb\u30b5\u30fc\u30d0\u304cmkespfsimage\u3092\u4f7f\u3044e-ink \u306b\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0
\u30fb\u30c7\u30fc\u30bf\u53d7\u3051\u6e21\u3057\u306f\u3001PhantomJS\uff08pixelserver.js\uff09\u3092\u4f7f\u3063\u3066\u3044\u308b\u3088\u3046
\u30fb\u753b\u50cf\u5f62\u5f0f\u306f\u3001.bm \u3068\u3044\u3046\u767d\u9ed2\uff12\u5024\uff08\u30b0\u30ec\u30fc\u8868\u793a\u306f\u3042\u308b\u306e\u304b\u306a\uff1f\uff09800×600\u3092\u4f7f\u7528
\u30fb\u30c7\u30d5\u30a9\u30eb\u30c8\u306760\u79d2\u3054\u3068\u306bsleep \u304b\u3089\u76ee\u899a\u3081\u308b\u3088\u3046 -> sleeptime , system_deep_sleep(60*1000*1000);
\u30fb\u521d\u56de\u8d77\u52d5\u6642\u306f\u3001\u30a2\u30af\u30bb\u30b9\u30dd\u30a4\u30f3\u30c8\u306e\u8868\u793a\u306e\u521d\u671f\u8a2d\u5b9a\u304c\u52d5\u4f5c\u3002\u30e1\u30e2\u30ea\u306e\u7279\u5b9a\u9818\u57df\u306b\u5024\u304c\u3042\u308b\u304b\u306a\u3044\u304b\u3092\u898b\u3066\u3044\u308b\u6a21\u69d8 -> RTC_MAGIC
\u30fb\u30e9\u30a4\u30bb\u30f3\u30b9\u306f\u3001Beer-Ware license \ud83d\ude42
https:\/\/en.wikipedia.org\/wiki\/Beerware<\/a>
\u3053\u308c\u306f\u4f5c\u8005\u306e\u30b8\u30e7\u30fc\u30af\u304b\u3068\u3002GPL\u30e9\u30a4\u30d6\u30e9\u30ea\u30fc\u306b\u30ea\u30f3\u30af\u3057\u3066\u3044\u308b\u306e\u3067\u3053\u306e\u30bd\u30fc\u30b9\u3082GPL\u306b\u306a\u308a\u307e\u3059\u304c\u3001
\u4f55\u304b\u4f5c\u8005\u306b\u9001\u308a\u305f\u3044\u3067\u3059\u3088\u306d\u3002
\u30fb\u5727\u7e2e\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3001Heatshrink\u4f7f\u7528
https:\/\/github.com\/atomicobject\/heatshrink<\/a>
Lempel\u2013Ziv\u2013Storer\u2013Szymanski (LZSS)\u30d9\u30fc\u30b9\u306e\u3088\u3046\u3067\u3059\u3002
\u30fb\u30bd\u30fc\u30b9\u3092\u30d3\u30eb\u30c9\u3059\u308b\u306b\u306f\u3001SDK (toolchain) \u304c\u5fc5\u8981
\u30fbesp-open-sdk\u306e\u74b0\u5883\u3092\u4f5c\u308c\u3070\u826f\u3044\u304b\u3068\u601d\u3046
\u30fb\u74b0\u5883\u69cb\u7bc9\u306f\u3001osx \u3067\u307e\u305a\u30c1\u30e3\u30ec\u30f3\u30b8<\/p>\n<\/p>\n
PhantomJS\u3063\u3066\u4f55\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n
\u3068\u308a\u3042\u3048\u305a\u3001\u307e\u3041\u3001\u4f7f\u3063\u3066\u307f\u308c\u3070\u7406\u89e3\u3082\u6df1\u307e\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n
osx \u306e\u30ed\u30fc\u30ab\u30eb\u306b\u5165\u308c\u3066\u307f\u307e\u3059\u3002<\/p>\n
\n$ brew install phantomjs<\/p>\n<\/blockquote>\n
\u30b5\u30f3\u30d7\u30eb\u306f\u30b0\u30b0\u3063\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002<\/p>\n
---- test.js\n\/\/ Headless \u30d6\u30e9\u30a6\u30b6\u306e\u751f\u6210\nvar page = require('webpage').create();\n\n\/\/ URL \u3092\u958b\u304f\npage.open('http:\/\/hack.gpl.jp\/about\/', function(status) {\n if (status === 'success') {\n \/\/ \u30b9\u30af\u30ea\u30fc\u30f3\u30ad\u30e3\u30d7\u30c1\u30e3\n page.render('junkhack.png');\n \/\/ \u30d6\u30e9\u30a6\u30b6\u5185\u3067 JS \u3092\u5b9f\u884c\u3057\u3066\u30c7\u30fc\u30bf\u3092\u53d7\u3051\u53d6\u308b\n var title = page.evaluate(function() {\n var title = document.title;\n return title;\n });\n console.log(title);\n }\n \/\/ exit \u3057\u306a\u3044\u3068\u7d42\u4e86\u3057\u306a\u3044\n phantom.exit();\n});<\/pre>\n<\/p>\n
\u30fb\u5b9f\u884c\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n
\n$ phantomjs test.js<\/p>\n<\/blockquote>\n
\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u3001junkhack.png \u304c\u3067\u304d\u3066\u3044\u308b\u3002\u307b\u30fc\u306a\u308b\u307b\u3069\u3002
\n
\u3068\u3044\u3046\u3053\u3068\u306f\u3001PhantomJS\u304c\u52d5\u4f5c\u3059\u308b\u30b5\u30fc\u30d0\u304c\u5fc5\u8981\u3060\u3063\u3066\u3053\u3068\u3067\u3057\u3087\u3046\u304b\u306d\uff1fESP12 \u3067PhantomJS\u304c\u52d5\u4f5c\u3059\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u304b\u306d\uff1f\u3061\u3087\u3063\u3068\u3053\u306e\u3042\u305f\u308a\u306f\u826f\u304f\u308f\u304b\u3063\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\u305d\u306e\u5185\u3001\u9032\u3080\u306b\u3064\u308c\u89e3\u308b\u306f\u305a\u3060\u3068\u601d\u3046\u306e\u3067\u3001\u30b9\u30eb\u30fc\u3057\u307e\u3059\u3002<\/p>\n
<\/p>\n
<\/p>\n
\u3068\u308a\u3042\u3048\u305a\u3001osx \u3067\u30d3\u30eb\u30c9\u3059\u308b\u74b0\u5883\u3092\u6574\u3048\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n
<\/p>\n
\u25bc\u30d3\u30eb\u30c9\u3059\u308b\u74b0\u5883\u306e\u69cb\u7bc9 for osx 10.9.5 <\/p>\n
\u30fb\u4ee5\u4e0b\u306b\u3042\u308b\u8aac\u660e\u901a\u308a <\/p>\n
https:\/\/github.com\/pfalcon\/esp-open-sdk<\/a><\/p>\n
\n$ brew tap homebrew\/dupes
\n
$ brew install binutils coreutils automake wget gawk libtool gperf gnu-sed –with-default-names grep<\/p>\n<\/blockquote>\n\u2605\u3061\u3087\u3063\u3068\u6642\u9593\u306f\u304b\u304b\u308a\u307e\u3059\u3002\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3044\u306a\u3044\u304b\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u78ba\u8a8d\u3002<\/p>\n
<\/p>\n
\u30fbsed \u306f gnu \u306e\u3092\u4f7f\u3046\u3088\u3046\u306b\u3059\u308b\u3088\u3046\u3067\u3059\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3089\u306a\u3051\u308c\u3070\u3001\u30d1\u30b9\u3092.bash_profile\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304d\u307e\u3059\u3002 <\/p>\n
$ which sed
\n
\/usr\/local\/opt\/gnu-sed\/libexec\/gnubin\/sed <\/p>\n$ export PATH="\/usr\/local\/opt\/gnu-sed\/libexec\/gnubin:$PATH"<\/p>\n
<\/p>\n
\u30fb10G \u306e\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u533a\u5225\u3059\u308bHFS+\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f5c\u88fd\u3002\u30de\u30a6\u30f3\u30c8\u3057\u3001\u79fb\u52d5\u3002 <\/p>\n
$ sudo hdiutil create ~\/Documents\/case-sensitive.dmg -volname "case-sensitive" -size 10g -fs "Case-sensitive HFS+"\n$ sudo hdiutil mount ~\/Documents\/case-sensitive.dmg\n$ cd \/Volumes\/case-sensitive\n\n$ git clone --recursive https:\/\/github.com\/pfalcon\/esp-open-sdk.git<\/pre>\n\u30b9\u30bf\u30f3\u30c9\u30a2\u30ed\u30fc\u30f3\u306aSDK \u3092\u4f5c\u308c\u3070\u3001-I\u3068-L\u30d5\u30e9\u30b0\u3092\u4ed8\u3051\u306a\u304f\u3066\u3088\u3044\u3088\u3046\u3067\u3059\u304c\u3001espeink \u306emakefile \u306f
\n
-I \u3068 -L \u306f\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001SDK \u3092\u5206\u96e2\u3057\u3066\u4f5c\u308a\u307e\u3059\u3002 <\/p>\n\n$ cd esp-open-sdk\/
\n
$ make STANDALONE=n<\/p>\n<\/blockquote>\n\u2605\u3061\u3087\u3063\u3068\u6642\u9593\u306f\u304b\u304b\u308a\u307e\u3059\u3002\u30b3\u30fc\u30d2\u30fc\u30bf\u30a4\u30e0\u3067\u3059\u3002
\n
ESP8266 \u306e\u30c1\u30c3\u30d7\u306f\u3001\u30b1\u30a4\u30c7\u30f3\u30b9\u30fb\u30c7\u30b6\u30a4\u30f3\u30fb\u30b7\u30b9\u30c6\u30e0\u30ba\u793e\u304c\u4f5c\u3063\u3066\u3044\u308bXtensa\u30d7\u30ed\u30bb\u30c3\u30b5\u306a\u3093\u3067\u3059\u306d\u3002<\/p>\nEspressif Systems\u793e\u304c\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u305f\u3001\u30c6\u30f3\u30b7\u30ea\u30abXtensa\u30d7\u30ed\u30bb\u30c3\u30b5\u304c\u8f09\u3063\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u306e<\/p>\n
\u3088\u3046\u3067\u3059\u3002<\/p>\n
https:\/\/www.cadence.co.jp\/news\/2015-01-29-929.html<\/p>\n
<\/p>\n
\u30fb\u3055\u3066\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u308c\u3070OK\u3067\u3059\u3002\u30d1\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002 <\/p>\n
::
\n
Xtensa toolchain is built, to use it:<\/p>\nexport PATH=\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH<\/p>\n
Espressif ESP8266 SDK is installed. Toolchain contains only Open Source components<\/p>\n
To link external proprietary libraries add:<\/p>\n
xtensa-lx106-elf-gcc -I\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include -L\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib<\/p>\n
<\/p>\n
\u30fb\u3053\u3053\u3082\u30d1\u30b9\u3092\u901a\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n
---- .bashrc\u3000\u8ffd\u8a18\nexport PATH=\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin:$PATH<\/pre>\n\u4ee5\u4e0b\u306b\u3001\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u3042\u308a\u307e\u3059\u3002<\/pre>\n\n$ ls \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin
\n
esptool.py xtensa-lx106-elf-ct-ng.config xtensa-lx106-elf-gcov xtensa-lx106-elf-ranlib<\/p>\nxtensa-lx106-elf-addr2line xtensa-lx106-elf-elfedit xtensa-lx106-elf-gdb xtensa-lx106-elf-readelf<\/p>\n
xtensa-lx106-elf-ar xtensa-lx106-elf-g++ xtensa-lx106-elf-gprof xtensa-lx106-elf-size<\/p>\n
xtensa-lx106-elf-as xtensa-lx106-elf-gcc xtensa-lx106-elf-ld xtensa-lx106-elf-strings<\/p>\n
xtensa-lx106-elf-c++ xtensa-lx106-elf-gcc-4.8.2 xtensa-lx106-elf-ld.bfd xtensa-lx106-elf-strip<\/p>\n
xtensa-lx106-elf-c++filt xtensa-lx106-elf-gcc-ar xtensa-lx106-elf-nm<\/p>\n
xtensa-lx106-elf-cc xtensa-lx106-elf-gcc-nm xtensa-lx106-elf-objcopy<\/p>\n
xtensa-lx106-elf-cpp xtensa-lx106-elf-gcc-ranlib xtensa-lx106-elf-objdump <\/p>\n<\/blockquote>\n
<\/p>\n
\u30fb\u30b3\u30f3\u30d1\u30a4\u30e9\u304c\u547c\u3073\u51fa\u305b\u308c\u3070OK\u3067\u3059\u3002 <\/p>\n
\n$ which xtensa-lx106-elf-gcc
\n
\/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\/xtensa-lx106-elf-gcc<\/p>\n<\/blockquote>\n\n$ xtensa-lx106-elf-gcc –version
\n
xtensa-lx106-elf-gcc (crosstool-NG 1.20.0) 4.8.2<\/p>\nCopyright (C) 2013 Free Software Foundation, Inc.<\/p>\n
This is free software; see the source for copying conditions. There is NO<\/p>\n
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. <\/p>\n<\/blockquote>\n
\u30fb\u4f55\u304b\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u52d5\u4f5c\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n
$ git clone https:\/\/github.com\/esp8266\/source-code-examples.git\n$ cd source-code-examples\/blinky<\/pre>\n<\/p>\n
\u30fbsed \u3067 make \u30d5\u30a1\u30a4\u30eb\u306e\u6307\u5b9a\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\u3002
\n
\u203b\u30d1\u30b9\u304c\u3042\u308b\u306e\u3067\u3001\u89e3\u308a\u306b\u304f\u3044\u3002sed \u306f s\/\u7f6e\u304d\u63db\u3048\u524d\/\u7f6e\u304d\u63db\u3048\u5f8c\/g \u3067\u3059\u3002 <\/p>\n\u4ee5\u4e0b\u3060\u3068\u3001
\n
Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin<\/p>\n\u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\n
esp-open-sdk\/xtensa-lx106-elf\/bin <\/p>\n
Espressif\/ESP8266_SDK
\n
\u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\nesp-open-sdk\/sdk <\/p>\n
Espressif
\n
\u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\nesp-open-sdk <\/p>\n
opt\/
\n
\u3092\u4ee5\u4e0b\u306b\u7f6e\u304d\u63db\u3048<\/p>\nVolumes\/case-sensitive\/<\/p>\n
$ sed -i 's\/Espressif\\\/crosstool-NG\\\/builds\\\/xtensa-lx106-elf\\\/bin\/esp-open-sdk\\\/xtensa-lx106-elf\\\/bin\/g' Makefile\n$ sed -i 's\/Espressif\\\/ESP8266_SDK\/esp-open-sdk\\\/sdk\/g' Makefile\n$ sed -i 's\/Espressif\/esp-open-sdk\/g' Makefile\n$ sed -i 's\/opt\\\/\/Volumes\\\/case-sensitive\\\/\/g' Makefile<\/pre>\n<\/p>\n
make \u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n
$ make <\/p>\n
\u30fb\u4ee5\u4e0b\u304c\u5b9f\u884c\u7d50\u679c\u3067\u3059\u3002\u30a8\u30e9\u30fc\u306a\u304f\u30d3\u30eb\u30c9\u3067\u304d\u308c\u3070\u307e\u3041\u3001\u52d5\u304f\u3067\u3057\u3087\u3046\u3002<\/p>\n
\n$ tree
\n
.<\/p>\n\u251c\u2500\u2500 Makefile<\/p>\n
\u251c\u2500\u2500 README<\/p>\n
\u251c\u2500\u2500 build<\/p>\n
\u2502 \u251c\u2500\u2500 app.out\u2605\u5b9f\u884c\u30d0\u30a4\u30ca\u30ea\u30d5\u30a1\u30a4\u30eb<\/p>\n
\u2502 \u251c\u2500\u2500 app_app.a<\/p>\n
\u2502 \u251c\u2500\u2500 driver<\/p>\n
\u2502 \u2514\u2500\u2500 user<\/p>\n
\u2502 \u2514\u2500\u2500 user_main.o<\/p>\n
\u251c\u2500\u2500 firmware<\/p>\n
\u2502 \u251c\u2500\u2500 0x00000.bin\u2605<\/p>\n
\u2502 \u2514\u2500\u2500 0x40000.bin\u2605<\/p>\n
\u2514\u2500\u2500 user<\/p>\n
\u251c\u2500\u2500 user_config.h<\/p>\n
\u2514\u2500\u2500 user_main.c <\/p>\n
5 directories, 9 files<\/p>\n<\/blockquote>\n
<\/p>\n
\u25bc\u3068\u308a\u3042\u3048\u305a\u3001esp-open-sdk \u3067\u30b3\u30f3\u30d1\u30a4\u30eb\u3057\u3066\u307f\u307e\u3059\u3002Makefile \u306e\u30b3\u30d4\u30fc\u3092\u53d6\u3063\u3066\u30d1\u30b9\u3092\u66f8\u304d\u63db\u3048\u3002 <\/p>\n
\n$ cd espeink\u306e\u30bd\u30fc\u30b9
\n
$ cp Makefile Makefile_org <\/p>\n<\/blockquote>\n\u203b\u884c\u982d\u306e$ \u306f\u53d6\u3063\u3066\u3042\u308a\u307e\u3059\u3002<\/p>\n
sed -i 's\/Espressif\\\/crosstool-NG\\\/builds\\\/xtensa-lx106-elf\\\/bin\/esp-open-sdk\\\/xtensa-lx106-elf\\\/bin\/g' Makefile\nsed -i 's\/Espressif\\\/ESP8266_SDK\/esp-open-sdk\\\/sdk\/g' Makefile\nsed -i 's\/Espressif\/esp-open-sdk\/g' Makefile\nsed -i 's\/opt\\\/Espressif\\\/arch\\\/lib\/Volumes\\\/case-sensitive\\\/esp-open-sdk\\\/sdk\\\/lib\/g' Makefile\nsed -i 's\/opt\\\/\/Volumes\\\/case-sensitive\\\/\/g' Makefile<\/pre>\n\u30fbosx \u3058\u3083\u306a\u304f\u3001Linux \u3067\u3084\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u307b\u3069\u3088\u304f\u66f8\u304d\u63db\u3048\u3002\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30d1\u30b9\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\u3002<\/p>\n
$ diff Makefile Makefile_org \n15c15\n< XTENSA_TOOLS_ROOT ?= \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\n---\n> XTENSA_TOOLS_ROOT ?= \/opt\/Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin\n18,19c18,19\n< SDK_EXTRA_INCLUDES ?= \/Volumes\/case-sensitive\/esp-open-sdk\/include\n< SDK_EXTRA_LIBS ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib\n---\n> SDK_EXTRA_INCLUDES ?= \/opt\/Espressif\/include\n> SDK_EXTRA_LIBS ?= \/opt\/Espressif\/arch\/lib\n22c22\n< SDK_BASE ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\n---\n> SDK_BASE ?= \/opt\/Espressif\/ESP8266_SDK<\/pre>\n<\/p>\n
\u30fb\u3055\u3066\u3001make\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n
make \u3057\u307e\u3057\u305f\u304c\u3001\u306a\u3093\u304b\u30a8\u30e9\u30fc\u3067\u307e\u3059\u306d\u3002\u4f5c\u8005\u306f\u3001SDK \u30d0\u30fc\u30b8\u30e7\u30f3\u3044\u304f\u3064\u3092\u4f7f\u3063\u3066\u3044\u305f\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n
unknown type name ‘uint32_t’
\n
unknown type name ‘uint8_t’<\/p>\nunknown type name ‘uint16_t’<\/p>\n
conflicting types for ‘os_random’ <\/p>\n
$ make
\n
CC user\/cgiwifi.c<\/p>\nIn file included from \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/os_type.h:10:0,<\/p>\n
from \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/user_interface.h:9,<\/p>\n
from user\/cgiwifi.c:17:<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:14:1: error: unknown type name ‘uint32_t’<\/p>\n
typedef uint32_t ETSSignal;<\/p>\n
^<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:15:1: error: unknown type name ‘uint32_t’<\/p>\n
typedef uint32_t ETSParam;<\/p>\n
^<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:27:1: error: unknown type name ‘uint32_t’<\/p>\n
typedef uint32_t ETSHandle;<\/p>\n
^<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:32:5: error: unknown type name ‘uint32_t’<\/p>\n
uint32_t timer_expire;<\/p>\n
^<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/ets_sys.h:33:5: error: unknown type name ‘uint32_t’<\/p>\n
uint32_t timer_period;<\/p>\n
^<\/p>\n
In file included from user\/cgiwifi.c:17:0:<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/user_interface.h:316:1: error: unknown type name ‘uint8_t’<\/p>\n
void wifi_promiscuous_set_mac(const uint8_t *address);<\/p>\n
^<\/p>\n
In file included from user\/cgiwifi.c:20:0:<\/p>\n
user\/io.h:3:16: error: unknown type name ‘uint16_t’<\/p>\n
void ioSpiSend(uint16_t data);<\/p>\n
^<\/p>\n
user\/io.h:8:18: error: unknown type name ‘uint8_t’<\/p>\n
void ioEinkWrite(uint8_t data);<\/p>\n
^<\/p>\n
In file included from user\/cgiwifi.c:21:0:<\/p>\n
include\/espmissingincludes.h:42:5: error: conflicting types for ‘os_random’<\/p>\n
int os_random();<\/p>\n
^<\/p>\n
In file included from user\/cgiwifi.c:16:0:<\/p>\n
\/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/include\/osapi.h:45:15: note: previous declaration of ‘os_random’ was here<\/p>\n
unsigned long os_random(void);<\/p>\n
^<\/p>\n
make: *** [build\/user\/cgiwifi.o] Error 1<\/p>\n
<\/p>\n
\u25bcsdk \u3092\u3044\u308d\u3044\u308d\u4ee3\u3048\u3066\u8a66\u3057\u30010.9.5\u3042\u305f\u308a\u304b\u3089\u8a66\u3057\u307e\u3057\u305f\u3002<\/p>\n
\n$ cd \/Volumes\/case-sensitive\/esp-open-sdk\/
\n
$ ln -s esp_iot_sdk_v0.9.5 sdk<\/p>\n<\/blockquote>\n\u25bc\u30d0\u30a4\u30ca\u30ea\u306f\u3067\u304d\u308b\u3051\u3069\u3082\u3001\u30d5\u30a1\u30fc\u30e0\u30a6\u30a7\u30a2\u304c\u3067\u304d\u306a\u3044\u306e\u3067\u3001Makefile \u3092\u66f8\u304d\u63db\u3048\u3002
\n
\u203b \u307e\u3060\u5b9f\u6a5f\u3067\u8a66\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u3053\u308c\u3067\u826f\u3044\u304b\u4e0d\u660e\u3067\u3059\u304c\u3002<\/p>\n$ cat Makefile.patch \n--- Makefile_org 2015-09-11 00:13:00.000000000 +0900\n+++ Makefile 2015-09-23 15:29:56.000000000 +0900\n@@ -12,18 +12,18 @@ BUILD_BASE = build\n FW_BASE = firmware\n \n # Base directory for the compiler\n-XTENSA_TOOLS_ROOT ?= \/opt\/Espressif\/crosstool-NG\/builds\/xtensa-lx106-elf\/bin\n+XTENSA_TOOLS_ROOT ?= \/Volumes\/case-sensitive\/esp-open-sdk\/xtensa-lx106-elf\/bin\n \n #Extra Tensilica includes from the ESS VM\n-SDK_EXTRA_INCLUDES ?= \/opt\/Espressif\/include\n-SDK_EXTRA_LIBS ?= \/opt\/Espressif\/arch\/lib\n+SDK_EXTRA_INCLUDES ?= \/Volumes\/case-sensitive\/esp-open-sdk\/include\n+SDK_EXTRA_LIBS ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\/lib\n \n # base directory of the ESP8266 SDK package, absolute\n-SDK_BASE ?= \/opt\/Espressif\/ESP8266_SDK\n+SDK_BASE ?= \/Volumes\/case-sensitive\/esp-open-sdk\/sdk\n \n #Esptool.py path and port\n-ESPTOOL ?= esptool\n-ESPPORT ?= \/dev\/ttyUSB0\n+ESPTOOL ?= esptool.py\n+ESPPORT ?= \/dev\/tty.SLAB_USBtoUART\n #ESPDELAY indicates seconds to wait between flashing the two binary images\n ESPDELAY ?= 3\n ESPBAUD ?= 115200\n@@ -61,9 +61,9 @@ SDK_INCDIR = include include\/json\n # we create two different files for uploading into the flash\n # these are the names and options to generate them\n FW_FILE_1 = 0x00000\n-FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec\n+#FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec\n FW_FILE_2 = 0x40000\n-FW_FILE_2_ARGS = -es .irom0.text $@ -ec\n+#FW_FILE_2_ARGS = -es .irom0.text $@ -ec\n \n # select which tools to use as compiler, librarian and linker\n CC := $(XTENSA_TOOLS_ROOT)\/xtensa-lx106-elf-gcc\n@@ -117,13 +117,17 @@ endef\n \n all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2)\n \n-$(FW_FILE_1): $(TARGET_OUT) firmware\n- $(vecho) "FW $@"\n- $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS)\n-\n-$(FW_FILE_2): $(TARGET_OUT) firmware\n- $(vecho) "FW $@"\n- $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS)\n+$(FW_BASE)\/%.bin: $(TARGET_OUT) | $(FW_BASE)\n+ $(vecho) "FW $(FW_BASE)\/"\n+ $(Q) $(ESPTOOL) elf2image -o $(FW_BASE)\/ $(TARGET_OUT)\n+ \n+#$(FW_FILE_1): $(TARGET_OUT) firmware\n+# $(vecho) "FW $@"\n+# $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS)\n+\n+#$(FW_FILE_2): $(TARGET_OUT) firmware\n+# $(vecho) "FW $@"\n+# $(Q) $(ESPTOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS)\n \n $(TARGET_OUT): $(APP_AR)\n $(vecho) "LD $@"\n@@ -138,14 +142,20 @@ checkdirs: $(BUILD_DIR) $(FW_BASE)\n $(BUILD_DIR):\n $(Q) mkdir -p $@\n \n-firmware:\n+#firmware:\n+# $(Q) mkdir -p $@\n+$(FW_BASE):\n $(Q) mkdir -p $@\n \n+#flash: $(FW_FILE_1) $(FW_FILE_2)\n+# $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x00000 -cf firmware\/0x00000.bin -v\n+# $(Q) [ $(ESPDELAY) -ne 0 ] && echo "Please put the ESP in bootloader mode..." || true\n+# $(Q) sleep $(ESPDELAY) || true\n+# $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x40000 -cf firmware\/0x40000.bin -v\n flash: $(FW_FILE_1) $(FW_FILE_2)\n- $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x00000 -cf firmware\/0x00000.bin -v\n- $(Q) [ $(ESPDELAY) -ne 0 ] && echo "Please put the ESP in bootloader mode..." || true\n- $(Q) sleep $(ESPDELAY) || true\n- $(Q) $(ESPTOOL) -cp $(ESPPORT) -cb $(ESPBAUD) -ca 0x40000 -cf firmware\/0x40000.bin -v\n+ $(ESPTOOL) --port $(ESPPORT) write_flash $(FW_FILE_1_ADDR) $(FW_FILE_1) $(FW_FILE_2_ADDR) $(FW_FILE_2)\n+\n+\n \n clean:\n $(Q) rm -f $(APP_AR)<\/pre>\n\u30fb\u518d\u5ea6make <\/p>\n
\n$ make clean
\n
$ make<\/p>\nCC user\/cgiwifi.c<\/p>\n
CC user\/config.c<\/p>\n
CC user\/eink.c<\/p>\n
CC user\/espfs.c<\/p>\n
CC user\/heatshrink_decoder.c<\/p>\n
CC user\/httpd.c<\/p>\n
CC user\/httpdclient.c<\/p>\n
CC user\/httpdespfs.c<\/p>\n
CC user\/io.c<\/p>\n
CC user\/stdout.c<\/p>\n
CC user\/user_main.c<\/p>\n
AR build\/einkdisp_app.a<\/p>\n
LD build\/einkdisp.out<\/p>\n
FW firmware\/<\/p>\n<\/blockquote>\n
\u30a8\u30e9\u30fc\u306f\u306a\u304f\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n
\u30fb\u3068\u308a\u3042\u3048\u305a\u3001\u3053\u3093\u306a\u611f\u3058\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 <\/p>\n
$ tree
\n
.<\/p>\n\u251c\u2500\u2500 Makefile<\/p>\n
\u251c\u2500\u2500 Makefile.patch<\/p>\n
\u251c\u2500\u2500 Makefile_org<\/p>\n
\u251c\u2500\u2500 README<\/p>\n
\u251c\u2500\u2500 build<\/p>\n
\u2502 \u251c\u2500\u2500 driver<\/p>\n
\u2502 \u251c\u2500\u2500 einkdisp.out\u2605\u3053\u308c\u306f\u3069\u306e\u9818\u57df\u306b\u66f8\u304d\u8fbc\u3081\u3070\u3044\u3044\u306e\u3067\u3057\u3087\u3046\u304b\u306d\uff1f<\/p>\n
\u2502 \u251c\u2500\u2500 einkdisp_app.a<\/p>\n
\u2502 \u2514\u2500\u2500 user<\/p>\n
\u2502 \u251c\u2500\u2500 cgiwifi.o<\/p>\n
\u2502 \u251c\u2500\u2500 config.o<\/p>\n
\u2502 \u251c\u2500\u2500 eink.o<\/p>\n
\u2502 \u251c\u2500\u2500 espfs.o<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_decoder.o<\/p>\n
\u2502 \u251c\u2500\u2500 httpd.o<\/p>\n
\u2502 \u251c\u2500\u2500 httpdclient.o<\/p>\n
\u2502 \u251c\u2500\u2500 httpdespfs.o<\/p>\n
\u2502 \u251c\u2500\u2500 io.o<\/p>\n
\u2502 \u251c\u2500\u2500 stdout.o<\/p>\n
\u2502 \u2514\u2500\u2500 user_main.o<\/p>\n
\u251c\u2500\u2500 firmware<\/p>\n
\u2502 \u251c\u2500\u2500 0x00000.bin\u2605<\/p>\n
\u2502 \u2514\u2500\u2500 0x40000.bin\u2605<\/p>\n
\u251c\u2500\u2500 html<\/p>\n
\u2502 \u251c\u2500\u2500 140medley.min.js<\/p>\n
\u2502 \u251c\u2500\u2500 apconnect.bm<\/p>\n
\u2502 \u251c\u2500\u2500 batempty.bm<\/p>\n
\u2502 \u251c\u2500\u2500 connecting.html<\/p>\n
\u2502 \u251c\u2500\u2500 icons.png<\/p>\n
\u2502 \u251c\u2500\u2500 neterror.bm<\/p>\n
\u2502 \u251c\u2500\u2500 style.css<\/p>\n
\u2502 \u2514\u2500\u2500 wifi.tpl<\/p>\n
\u251c\u2500\u2500 icons<\/p>\n
\u2502 \u251c\u2500\u2500 apconnect.png<\/p>\n
\u2502 \u251c\u2500\u2500 batempty.png<\/p>\n
\u2502 \u2514\u2500\u2500 neterror.png<\/p>\n
\u251c\u2500\u2500 include<\/p>\n
\u2502 \u251c\u2500\u2500 espmissingincludes-ip.h<\/p>\n
\u2502 \u251c\u2500\u2500 espmissingincludes.h<\/p>\n
\u2502 \u251c\u2500\u2500 ip_addr.h<\/p>\n
\u2502 \u251c\u2500\u2500 lwipopts.h<\/p>\n
\u2502 \u251c\u2500\u2500 spi_register.h<\/p>\n
\u2502 \u251c\u2500\u2500 stdint.h<\/p>\n
\u2502 \u251c\u2500\u2500 uart_hw.h<\/p>\n
\u2502 \u2514\u2500\u2500 user_config.h<\/p>\n
\u251c\u2500\u2500 lib<\/p>\n
\u2502 \u2514\u2500\u2500 heatshrink<\/p>\n
\u2502 \u251c\u2500\u2500 LICENSE<\/p>\n
\u2502 \u251c\u2500\u2500 Makefile<\/p>\n
\u2502 \u251c\u2500\u2500 README.md<\/p>\n
\u2502 \u251c\u2500\u2500 dec_sm.dot<\/p>\n
\u2502 \u251c\u2500\u2500 enc_sm.dot<\/p>\n
\u2502 \u251c\u2500\u2500 greatest.h<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink.c<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_common.h<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_config.h<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_decoder.c<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_decoder.h<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_encoder.c<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_encoder.h<\/p>\n
\u2502 \u251c\u2500\u2500 test_heatshrink_dynamic.c<\/p>\n
\u2502 \u251c\u2500\u2500 test_heatshrink_dynamic_theft.c<\/p>\n
\u2502 \u2514\u2500\u2500 test_heatshrink_static.c<\/p>\n
\u251c\u2500\u2500 mkespfsimage<\/p>\n
\u2502 \u251c\u2500\u2500 Makefile<\/p>\n
\u2502 \u251c\u2500\u2500 espfsformat.h<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_encoder.c<\/p>\n
\u2502 \u251c\u2500\u2500 heatshrink_encoder.o<\/p>\n
\u2502 \u251c\u2500\u2500 main.c<\/p>\n
\u2502 \u251c\u2500\u2500 main.o<\/p>\n
\u2502 \u2514\u2500\u2500 mkespfsimage<\/p>\n
\u251c\u2500\u2500 mkimg.php<\/p>\n
\u251c\u2500\u2500 server<\/p>\n
\u2502 \u251c\u2500\u2500 README<\/p>\n
\u2502 \u2514\u2500\u2500 pixelserver.js<\/p>\n
\u2514\u2500\u2500 user<\/p>\n
\u251c\u2500\u2500 cgiwifi.c<\/p>\n
\u251c\u2500\u2500 cgiwifi.h<\/p>\n
\u251c\u2500\u2500 config.c<\/p>\n
\u251c\u2500\u2500 config.h<\/p>\n
\u251c\u2500\u2500 eink.c<\/p>\n
\u251c\u2500\u2500 eink.h<\/p>\n
\u251c\u2500\u2500 espfs.c<\/p>\n
\u251c\u2500\u2500 espfs.h<\/p>\n
\u251c\u2500\u2500 heatshrink_config_httpd.h<\/p>\n
\u251c\u2500\u2500 heatshrink_decoder.c<\/p>\n
\u251c\u2500\u2500 httpd.c<\/p>\n
\u251c\u2500\u2500 httpd.h<\/p>\n
\u251c\u2500\u2500 httpdclient.c<\/p>\n
\u251c\u2500\u2500 httpdclient.h<\/p>\n
\u251c\u2500\u2500 httpdconfig.h<\/p>\n
\u251c\u2500\u2500 httpdespfs.c<\/p>\n
\u251c\u2500\u2500 httpdespfs.h<\/p>\n
\u251c\u2500\u2500 io.c<\/p>\n
\u251c\u2500\u2500 io.h<\/p>\n
\u251c\u2500\u2500 stdout.c<\/p>\n
\u251c\u2500\u2500 stdout.h<\/p>\n
\u2514\u2500\u2500 user_main.c <\/p>\n
12 directories, 86 files<\/p>\n
<\/p>\n
\u25bc\u307e\u3068\u3081<\/p>\n
\u30fbSDK \u306b\u3044\u304f\u3064\u3092\u4f7f\u3063\u3066\u3044\u305f\u304b\u4e0d\u660e\u3002\u4f5c\u8005\u306b\u805e\u304f\u3053\u3068\u306b<\/p>\n
\u30fbPhantomJS \u3067\u52d5\u4f5c\u3059\u308b pixelserver.js \u306f\u5225\u30b5\u30fc\u30d0\u306b\u304a\u304f\u306e\u304b\u3069\u3046\u304b\uff1f<\/p>\n
\u30fb\u30d3\u30eb\u30c9\u3059\u308b\u306b\u306f\u3001esp-open-sdk \u3092\u4f7f\u3048\u3070\u3044\u3044\u306e\u304b\u3001\u305d\u308c\u3068\u3082\u4ed6\u306e\u65b9\u6cd5\u304b\u4e0d\u660e\u3002<\/p>\n
\u30fb\u30d3\u30eb\u30c9\u3057\u3066\u3067\u304d\u305f\u3082\u306e\u306f\u3001\u3069\u306e\u3088\u3046\u306b\u3069\u306e\u9818\u57df\u306b\u66f8\u304d\u8fbc\u3081\u3070\u3044\u3044\u306e\u304b\u4e0d\u660e\u3002<\/p>\n
<\/p>\n
\u25bc\u53c2\u8003
\n
http:\/\/nemuisan.blog.bai.ne.jp\/?eid=215341<\/a><\/p>\nhttp:\/\/dsas.blog.klab.org\/<\/a><\/p>\n
http:\/\/www.homu.net\/esp8266%E7%94%A8open-sdk%E3%82%92macosx%E7%94%A8%E3%81%AB%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B\/<\/a><\/p>\n
http:\/\/bbs.espressif.com\/viewforum.php?f=46<\/a><\/p>\n
https:\/\/github.com\/esp8266\/esp8266-wiki\/tree\/master\/sdk<\/a><\/p>\n