background image

01 Jun 2022

使用platformio上傳arduino時出現錯誤代碼(0107)

第一次接觸arduino,很開心地寫下了一個閃爍板子上的LED程式碼後要上傳到板子,結果上傳時發生了錯誤 出現了Failed to write to target RAM (result was 0107)這樣的錯誤代碼,試了網路上很多的方式都沒有成功,最後發現了原來serial port 不正確...

以下是上傳時發生的錯誤訊息資料

1/usr/local/bin/platformio -c clion run --target upload -e nodemcuv2
2Processing nodemcuv2 (platform: espressif8266; board: nodemcuv2; framework: arduino)
3
4Verbose mode can be enabled via `-v, --verbose` option
5CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcuv2.html
6PLATFORM: Espressif 8266 (3.2.0) > NodeMCU 1.0 (ESP-12E Module)
7HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
8PACKAGES:
9 - framework-arduinoespressif8266 @ 3.30002.0 (3.0.2)
10 - tool-esptool @ 1.413.0 (4.13)
11 - tool-esptoolpy @ 1.30000.201119 (3.0.0)
12 - tool-mklittlefs @ 1.203.210628 (2.3)
13 - tool-mkspiffs @ 1.200.0 (2.0)
14 - toolchain-xtensa @ 2.100300.210717 (10.3.0)
15LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
16LDF Modes: Finder ~ chain, Compatibility ~ soft
17Found 35 compatible libraries
18Scanning dependencies...
19No dependencies
20Building in release mode
21Retrieving maximum program size .pio/build/nodemcuv2/firmware.elf
22Checking size .pio/build/nodemcuv2/firmware.elf
23Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
24RAM:   [===       ]  34.2% (used 28032 bytes from 81920 bytes)
25Flash: [===       ]  25.4% (used 265729 bytes from 1044464 bytes)
26Configuring upload protocol...
27AVAILABLE: espota, esptool
28CURRENT: upload_protocol = esptool
29Looking for upload port...
30Auto-detected: /dev/cu.usbmodem53770161961
31Uploading .pio/build/nodemcuv2/firmware.bin
32esptool.py v3.0
33Serial port /dev/cu.usbmodem53770161961
34Connecting....
35Chip is ESP8266EX
36Features: WiFi
37Crystal is 26MHz
38MAC: e8:db:84:df:34:f7
39Uploading stub...
40
41A fatal error occurred: Failed to write to target RAM (result was 0107)
42*** [upload] Error 2
43 [FAILED] Took 2.01 seconds
44
45Process finished with exit code 1
46

確認線材

因為板子上的usb介面事mirco usb的介面,這個介面很多的線材是只有充電功能而已無法做資料傳輸,所以...首先要先確定你的線材是不是可以做資料傳輸的用途, 否則做了再多的工作可能都無法上傳成功

因此我還上了pchome購買了usb type-c to mirco usb的資料傳輸線...

驅動程式

我使用的板子是nodeMCU ESP-12E(ESP-8266的板子,晶片是CH9102X),搭配的事CLion的IDE開發工具

在網路上找到的問題主要都是第一次上傳到板子沒有安裝相對應的驅動程式所以導致錯誤發生,如果發生這個狀態好解決,安裝相對應的驅動程式就可以解決了 ESP8266的晶片有兩種一種是CH9102另一種是CP2102,網路上搜尋的時候還會出現CH340相關的資料,CH340跟CH9102是相同的所以安裝的時候可以找到CH34x的驅動安裝後即可 但...如果還是不行,可以先確定一下電腦是否有抓到板子在做下一步

1pio device list
2

以下是我的output資訊,有看到/dev/cu.xxxxxx的資料,就表示真的有抓到板子囉!但如果看到了這樣的輸出,還是出現了 A fatal error occurred: Failed to write to target RAM (result was 0107)的錯誤,該怎麼辦?

1/dev/cu.BLTH
2------------
3Hardware ID: n/a
4Description: n/a
5
6/dev/cu.Bluetooth-Incoming-Port
7-------------------------------
8Hardware ID: n/a
9Description: n/a
10
11/dev/cu.wchusbserial53770161961
12-------------------------------
13Hardware ID: USB VID:PID=1A86:55D4 SER=5377016196 LOCATION=20-2
14Description: USB Single Serial
15
16/dev/cu.usbmodem53770161961
17---------------------------
18Hardware ID: USB VID:PID=1A86:55D4 SER=5377016196 LOCATION=20-2
19Description: USB Single Serial
20

確認upload port的設定

安裝驅動跟確認線材的問題我卡了許久,也確認了許多次數後我發現我的輸出錯誤都是在使用/dev/cu.usbmodem53770161961這個serial port上傳, 然後偶爾會出現資院忙碌中的錯誤

1could not open port '/dev/cu.usbmodem53770161961': [Errno 16] could not open port /dev/cu.usbmodem53770161961: [Errno 16] Resource busy:.....
2

在查詢資料過程中想起了一個設定,那就是指定上傳的serial port想說隨便試試看是不是因為serial port的問題...畢竟每次都卡在同一個port上乾脆換一個試試看 所以我在platfromio.ini這個檔案上增加了一行upload_port的設定,沒想到就出現成功的資訊了!如果你在pio device list看到兩個port這個方法可以試試看,或許有用

1[env:nodemcuv2]
2platform = espressif8266
3board = nodemcuv2
4framework = arduino
5upload_port = /dev/cu.wchusbserial53770161961
6

文章標籤