2015/10/29

[hw]ESP8266のコンパイル環境

ESP8266でATコマンド以外のことをやろうとしたら、ファームを作って焼くことになる。
まずはコンパイル環境を準備しよう。
もうハードウェアのことじゃないけど、いいや。


Step 1. Setup Linux Compile Environment 搭建ESP8266编译环境 - ESP8266 Developer Zone
コンパイル環境はここからダウンロード、とあるが、404 Not Found ...
More detailsのリンク先にあるGoogle Driveは生きていた。
https://drive.google.com/folderview?id=0B5bwBE9A5dBXaExvdDExVFNrUXM&usp=sharing
ダウンロードに時間がかかるので、ここで昼ご飯にしよう。

VirtualBoxに入れて、Guest AdditionsやOSの更新をする。
先にOSの更新をした方がいいのかな?
パスワードはespressifだ(PDF参照)。
これはこれで、かなり時間がかかる。
終わったら、Time and DateとかKeyboard Input Methodsとか、とにかく自分に合うようにしておく。

esp8266_lubuntuを起動しているVirtualBoxの「デバイス>共有フォルダー設定」を開いて、共有フォルダが設定されているか確認しよう。
PDFの手順通りにやるなら、共有名は「share」にしておく。
私はこの確認を、VirtualBox本体の設定画面でやっていたのだが、なぜかマウントがうまくできない。
「デバイス>共有フォルダー設定」の方を開くと、「Guest Additionsがインストールされていない」と警告が出てきた。
たぶん、Guest Additionsのインストール後にOSの更新をしたから、再インストールが必要になってしまったのだな。
やると、mount.shの実行でマウントできた。

そして、iot_sdkのappフォルダに移動して、make・・・と書いてあるけど、Makefileがないので動かない。
PDFと違うじゃないかぁぁぁぁぁぁ。
DSAS開発者の部屋:ESP8266 モジュールの AT コマンドに SSL クライアント機能を追加する
こちらを読むと、ビルドしたいものをappの中に置くらしい。
そして、gen_misc.shのあとにmakeしている。

esp8266@esp8266-VirtualBox:~/Share/esp_iot_sdk_v1.4.1_pre5/app$ ./gen_misc.sh 
gen_misc.sh version 20150511
Please follow below steps(1-5) to generate specific bin(s):
STEP 1: choose boot version(0=boot_v1.1, 1=boot_v1.2+, 2=none)
enter(0/1/2, default 2):
1
boot mode: new
STEP 2: choose bin generate(0=eagle.flash.bin+eagle.irom0text.bin, 1=user1.bin, 2=user2.bin)
enter (0/1/2, default 0):
1
generate bin: user1.bin
STEP 3: choose spi speed(0=20MHz, 1=26.7MHz, 2=40MHz, 3=80MHz)
enter (0/1/2/3, default 2):
2
spi speed: 40 MHz
STEP 4: choose spi mode(0=QIO, 1=QOUT, 2=DIO, 3=DOUT)
enter (0/1/2/3, default 0):
0
spi mode: QIO
STEP 5: choose spi size and map
    0= 512KB( 256KB+ 256KB)
    2=1024KB( 512KB+ 512KB)
    3=2048KB( 512KB+ 512KB)
    4=4096KB( 512KB+ 512KB)
    5=2048KB(1024KB+1024KB)
    6=4096KB(1024KB+1024KB)
enter (0/2/3/4/5/6, default 0):
6
spi size: 4096KB
spi ota map:  1024KB + 1024KB
start...
make[1]: Entering directory `/mnt/Share/esp_iot_sdk_v1.4.1_pre5/app/user'
DEPEND: xtensa-lx106-elf-gcc -M -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -DICACHE_FLASH -DAT_UPGRADE_SUPPORT -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle user_main.c
DEPEND: xtensa-lx106-elf-gcc -M -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections -DICACHE_FLASH -DAT_UPGRADE_SUPPORT -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle at_upgrade.c
make[1]: Leaving directory `/mnt/Share/esp_iot_sdk_v1.4.1_pre5/app/user'
make[1]: Entering directory `/mnt/Share/esp_iot_sdk_v1.4.1_pre5/app/user'
make[1]: Warning: File `.output/eagle/debug/obj/user_main.d' has modification time 3.6 s in the future
xtensa-lx106-elf-gcc -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections  -DICACHE_FLASH -DAT_UPGRADE_SUPPORT   -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle  -o .output/eagle/debug/obj/at_upgrade.o -c at_upgrade.c
xtensa-lx106-elf-gcc -Os -g -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -ffunction-sections -fdata-sections  -DICACHE_FLASH -DAT_UPGRADE_SUPPORT   -I include -I ./ -I ../../include/ets -I ../include -I ../../include -I ../../include/eagle  -o .output/eagle/debug/obj/user_main.o -c user_main.c
xtensa-lx106-elf-ar ru .output/eagle/debug/lib/libuser.a .output/eagle/debug/obj/at_upgrade.o .output/eagle/debug/obj/user_main.o 
xtensa-lx106-elf-ar: creating .output/eagle/debug/lib/libuser.a
make[1]: warning:  Clock skew detected.  Your build may be incomplete.
make[1]: Leaving directory `/mnt/Share/esp_iot_sdk_v1.4.1_pre5/app/user'
make: Warning: File `user/.output/eagle/debug/lib/libuser.a' has modification time 3.7 s in the future
xtensa-lx106-elf-gcc  -L../lib -nostdlib -T../ld/eagle.app.v6.new.2048.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lmain -ljson -lupgrade -lsmartconfig user/.output/eagle/debug/lib/libuser.a                     -lat -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out 
!!!
!!!user bin  1  !!!
-2067508167
2067508166
Support boot_v1.4 and +
Generate user1.4096.new.6.bin successully in folder bin/upgrade.
boot.bin------------>0x00000
user1.4096.new.6.bin--->0x01000
!!!
make: warning:  Clock skew detected.  Your build may be incomplete.
esp8266@esp8266-VirtualBox:~/Share/esp_iot_sdk_v1.4.1_pre5/app$ 

タイムスタンプがずれているのは気にしないでおくれ。

$ ls -l ../bin/upgrade/
total 7742
-rwxrwxrwx 1 root root  284596 Oct 29 14:29 user1.4096.new.6.bin
-rwxrwxrwx 1 root root 2881418 Oct 29 14:29 user1.4096.new.6.dump
-rwxrwxrwx 1 root root 4761082 Oct 29 14:29 user1.4096.new.6.S

なんかはできたようだ。
が、これをいきなり焼く前に、みんなのまねをしてビルド済みのものを焼いてみよう。
幸い、アップデートされるから焼かれたことも確認できる。

image

ESP_DOWNLOAD_TOOLのタイトルはV2.3になってるけど、ファイル名はV2.4だ。
あとね、このツールは日本語のパスとかに置かないようにしよう。STARTするとエラーになったよ。

ready
AT+GMR
AT version:0.50.0.0(Sep 18 2015 20:55:38)
SDK version:1.4.0
compile time:Sep 18 2015 21:30:56
OK

うん、ATは0.25.0.0→0.50.0.0になったし、SDKは1.1.2→1.4.0になった。

気になったのは、焼いたファイルが「user1.2048.new.5.bin」ということ。
さっきビルドしたらuser1.4096.new.6.binができたのだが、それはgen_misc.shのSTEP5で「6」を選んだからじゃないだろうか。
・・・うん、「5」でビルドしたらuser1.2048.new.5.binができた。

readme.txtを見ると、「user1.2048.new.5.bin」を使っているのは16Mbit-C1と32Mbit-C1だけだ。
そしてそもそも「6」のファイルはAT_v0.50の中に入っていない。
うーん、どう考えるとよいのだろうか・・・。

なお、ビルドしたbinの「5」と「6」の違いはこんな程度。
2番目はタイムスタンプっぽいし、3番目はチェックサムだろうか。

image

image

image

STEP 5: choose spi size and map
    0= 512KB( 256KB+ 256KB)
    2=1024KB( 512KB+ 512KB)
    3=2048KB( 512KB+ 512KB)
    4=4096KB( 512KB+ 512KB)
    5=2048KB(1024KB+1024KB)
    6=4096KB(1024KB+1024KB)

IOT_SDK_User_Manual v1.4に「6」を選んだときのメモリマップが載っていた。

image

  • sdk_v1.1.0以降
  • boot v1.4以降
  • flash download tool v1.2以降

「5」は、こう。

image

  • sdk v1.1.0以降
  • boot v1.4以降
  • flash download tool v1.2以降

条件は同じなのだが、右側のFLASHのUser Data領域が「6」の方が広いのだな。
それくらいみたいだから「6」でもいいのかな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。