問
: 爲何須要串口調試?答
: 由於顯示器直連Respberry Pi的HDMI的啓動信息沒法向上滾動, 沒法查看完整的啓動信息, 很是不方便硬件調試.html
默認 iex
控制檯顯示在鏈接到HDMI
端口的顯示器上. 這對於新手來講是比較友好的, 由於只須要用HDMI線
把樹莓派的HDMI輸出端口
和顯示器的輸入端口
鏈接起來就能夠了. 可是對於調試問題, 高級開發工流程, 一般指望經過FTDI 線或USB TTL線
把開發電腦連鏈接到目標板的串口. 這讓咱們可以經過終端模擬器(好比screen
)與目標設備進行交互.git
本文以上一篇文章 Elixir 下開發嵌入式系統開發: 小試身手 爲基礎進行實際的上手操做, 若是你不瞭解, 能夠先閱讀上一篇文章.github
默認IEx 終端顯示輸出到HDMI接口. segmentfault
能夠切換到UART
(通用異步收發器), 下面講述這個切換過程.windows
USB 轉 TTL 調試線app
根據Mac OS X上使用USB轉串口線鏈接樹莓派安裝驅動.異步
除了OSX系統外, 還有Android和Windows的驅動能夠下載. 選擇合適本身的便可. Windows 用戶請參考 Windows下用串行鏈接控制樹莓派.工具
參考 Elixir 下開發嵌入式系統開發: 小試身手, 從Github Fork代碼庫.spa
配置文件覆蓋, 該配置所指向的目錄會覆蓋系統文件對應的文件. 在 hello_iot/apps/fw/config/config.exs
配置文件中增長以下配置:3d
# ------------ # 增長覆蓋目錄, 覆蓋默認系統文件 # ------------ config :nerves, :firmware, rootfs_additions: "config/rootfs-additions"
在 hello_iot/apps/fw/config/rootfs-additions
下建立 erlinit.config
文件, 該文件能夠從 這裏 下載.
把 -c tty1
修改成 -c ttyS0
下載依賴, 編譯, 製做固件, 燒製固件.
# 切換到固件目錄 cd hello_iot/apps/fw # 下載依賴 mix deps.get # 編譯 mix compile # 固件打包 mix firmware # 燒製固件 mix firmware.burn
UPDATE: Nerves
0.4
把打包工具從Exrm
替換爲Distillery
, 所以在mix deps.get
後須要執行mix release.init
生成發佈配置文件rel/config.exs
用USB串口線把Mac和Respberry Pi鏈接起來. 以下圖:
Respberry Pi 3 的串口線鏈接線示意圖
GPIO針腳15, 接綠線TXD, 14針腳, 接白線RXD, 黑色爲GND地線, 我用的Mini USB的外接電源, 因此這裏紅色的供電針腳不接, 實際接線圖以下
:
把USB插入MAC筆記本的USB端口, 並執行以下命令:
screen /dev/tty.usbserial 115200
其中 115200
爲波特率
重啓樹莓派就能夠看到啓動信息輸出到了開發機的屏幕上了.
screen
的輸出歷史問題:
在 ~/.screenrc
文件中添加下面一行:
defscrollback 10000
而後輸入Ctrl-a
ESC
, 按翻頁, 上下鍵便可查看輸出歷史.