ESP-IDFでhello worldした

esp-wroom-32はarduino studioでしか使ったことがなかったので、esp-idfでやって見ようかなと思ったので、やった。

基本的に

docs.espressif.com

ここを進めた。

その際に起こったことを記録する。

FLAGSのエラー

まず、環境変数に、FLAGS関連の環境変数が設定されていると、

make flash

で、

/Users/b1u3/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find crt1-sim.o: No such file or directory
/Users/b1u3/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find _vectors.o: No such file or directory
/Users/b1u3/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lsim
/Users/b1u3/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhandlers-sim
/Users/b1u3/esp/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/5.2.0/../../../../xtensa-esp32-elf/bin/ld: cannot find -lhal
collect2: error: ld returned 1 exit status
make[1]: *** [/Users/b1u3/esp/hello_world/build/bootloader/bootloader.elf] Error 1
make: *** [/Users/b1u3/esp/hello_world/build/bootloader/bootloader.bin] Error 2

これは、環境変数にFLAGS関係の変数(LDFLAGS, CPPFLAGS)が設定されていることに起因しているので、消すなり、実行時だけ追加されるようにするのがいい。project.mkに?=が使われてるからだと思う。

monitorのエラー

make monitor

すると、

MONITOR
--- idf_monitor on /dev/cu.SLAB_USBtoUART 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

Traceback (most recent call last):
  File "/Users/b1u3/Develop/esp/esp-idf/tools/idf_monitor.py", line 743, in <module>
    main()
  File "/Users/b1u3/Develop/esp/esp-idf/tools/idf_monitor.py", line 668, in main
    monitor.main_loop()
  File "/Users/b1u3/Develop/esp/esp-idf/tools/idf_monitor.py", line 337, in main_loop
    self.handle_serial_input(data)
  File "/Users/b1u3/Develop/esp/esp-idf/tools/idf_monitor.py", line 391, in handle_serial_input
    if self._output_enabled and (self._force_line_print or self._line_matcher.match(line)):
  File "/Users/b1u3/Develop/esp/esp-idf/tools/idf_monitor.py", line 256, in match
    m = self._re.search(line)
TypeError: cannot use a string pattern on a bytes-like object
make: *** [monitor] Error 1

というエラーが出る。 v3.1.3だと、idf_monitor.pyにエラーが出る。これはgithubからupstreamの物をそのままコピペして、内容を入れ替えると回避できる。

github.com

回避すると動く

f:id:b1u3:20190307002353j:plain
esp-idfのmonitor