问
: 为何须要串口调试?答
: 由于显示器直连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
, 按翻页, 上下键便可查看输出历史.