使用 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, 按翻页, 上下键便可查看输出历史.

参考资料

系列文章

相关文章
相关标签/搜索