使用 Elixir 開發嵌入式系統: 串口調試

: 爲何須要串口調試?
: 由於顯示器直連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 爲波特率

重啓樹莓派就能夠看到啓動信息輸出到了開發機的屏幕上了.

ttys0

screen 的輸出歷史問題:

~/.screenrc 文件中添加下面一行:

defscrollback 10000

而後輸入Ctrl-a ESC, 按翻頁, 上下鍵便可查看輸出歷史.

參考資料

系列文章

相關文章
相關標籤/搜索