无涯物联openwrt 开发手册

128
吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/) –1– 无涯物OpenWrt 开手册 无涯 WKA-76X8Pro 开发套件系列 版本:V1.0.0 日期:2017.7.16 四川无涯智能科技有限公司 Tel:028-85112738

Upload: khangminh22

Post on 26-Jan-2023

8 views

Category:

Documents


0 download

TRANSCRIPT

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 1 –

无涯物联 OpenWrt 开发手册无涯 WKA-76X8Pro 开发套件系列

版本:V1.0.0

日期:2017.7.16

四川无涯智能科技有限公司

Tel:028-85112738

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 2 –

文档声明

注意本手册描述的产品及其附件特性和功能,取决于当地网络环境。因此,本手册中描述的全部

或部分产品及其附件特性和功能可能未包含在您的购买或使用范围之内。

免责声明除非合同另有约定,四川无涯智能科技有限公司对本文档内容不做任何明示或暗示的声明或

保证,并且不对特定目的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作

为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。公司保留随

时修改本手册中任何信息的权利,无需进行提前通知且不承担任何责任。

U-Boot 更新声明U-Boot 仅支持官方升级;如用户自己刷非官方 U-Boot,导致安全风险和损失由用户负

责。

固件包完整性风险声明固件仅支持官方固件或者官方 SDK 源码编译出的固件;如用户自己刷非官方固件,导致

安全风险和损失由用户负责。

版权所有©四川无涯智能科技有限公司。保留一切权利。本手册中描述的产品,可能包含无涯智能及其存在的许可人享有版权的软件,除非获得

相关权利人的许可,否则,非经本公司书面同意,任何单位和个人不得擅自摘抄、复制本手

册内容的部分或全部,并以任何形式传播。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 3 –

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 4 –

目 录

前言...............................................................................................................................................8第 1 章 开发环境的构建...........................................................................................................9

1.1 硬件环境构建...............................................................................................................91.1.1 主机与目标板结合的交叉开发模式..............................................................91.1.2 硬件要求.........................................................................................................10

1.2 软件环境构建.............................................................................................................101.2.1 在 Windows 上安装虚拟机............................................................................ 101.2.2 在虚拟机上安装 Linux................................................................................. 161.2.3 用 SecureCRT 打开 Ubuntu 操作系统的控制台..........................................171.2.4 用 FileZilla 往 Ubuntu 操作系统传文件..................................................191.2.5 用共享文件夹往 Ubuntu 操作系统中传输文件(推荐)..........................20

第 2 章 编译源码.....................................................................................................................252.1 搭建编译环境.............................................................................................................252.2 编译 U-Boot................................................................................................................262.3 编译系统固件.............................................................................................................27

2.3.1 openwrt-hiwooya 源码目录解释................................................................. 282.3.2 openwrt-hiwooya 编译................................................................................. 292.3.3 openwrt-hiwooya 编译过程容易出现的问题...............................................32

第 3 章 烧录固件.....................................................................................................................343.1 Web 界面方式烧录..................................................................................................... 343.2 tftp 方式烧录............................................................................................................353.3 烧录常碰到的问题.................................................................................................... 37

第 4 章 启动 LOG......................................................................................................................394.1 U-Boot 启动 LOG.........................................................................................................394.2 OpenWrt 启动 LOG.......................................................................................................39

4.2.1 Linux 内核版本............................................................................................. 394.2.2 OpenWrt 版本................................................................................................. 394.2.3 完整启动 LOG................................................................................................. 40

第 5 章 串口控制台.................................................................................................................495.1 Windows.......................................................................................................................49

5.1.1 CP210x 驱动下载........................................................................................... 495.1.2 SecureCRT 访问串口控制台......................................................................... 50

5.2 Ubuntu.........................................................................................................................515.2.1 CP210x 驱动下载........................................................................................... 515.2.2 minicom 访问串口控制台............................................................................. 52

第 6 章 基础操作.....................................................................................................................546.1 让硬件联网.................................................................................................................54

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 5 –

6.1.1 通过网线上网................................................................................................ 546.1.2 通过 Wi-Fi 模拟的网卡上网........................................................................ 55

6.2 Telnet、SSH 登录..................................................................................................... 566.2.1 Telnet 登录................................................................................................... 566.2.2 SSH 登录..........................................................................................................576.2.3 关于 Telnet、SSH 登录的问题.................................................................... 59

6.3 SCP 网络文件传输..................................................................................................... 596.4 备份 WiFi 校准数据.................................................................................................. 616.5 恢复出厂设置.............................................................................................................626.6 安装卸载软件.............................................................................................................62

6.6.1 修改软件源配置文件.................................................................................... 626.6.2 更新软件源.................................................................................................... 636.6.3 搜索软件.........................................................................................................646.6.4 安装软件.........................................................................................................666.6.5 卸载软件.........................................................................................................676.6.6 列出已安装的软件........................................................................................ 67

第 7 章 外设编程.....................................................................................................................697.1 IoT 模式/路由模式................................................................................................... 69

7.1.1 IoT 模式/路由模式区别............................................................................... 697.1.2 模式切换.........................................................................................................69

7.2 GPIO.............................................................................................................................707.2.1 控制台操作 GPIO........................................................................................... 707.2.2 设置 GPIO 方向.............................................................................................. 70

7.3 RS232...........................................................................................................................717.3.1 准备工作.........................................................................................................717.3.2 连接关系.........................................................................................................717.3.3 设置串口.........................................................................................................727.3.4 串口发数据.................................................................................................... 72

7.4 RS485...........................................................................................................................737.4.1 准备工作.........................................................................................................737.4.2 连接关系.........................................................................................................74

7.5 PWM...............................................................................................................................747.5.1 参数.................................................................................................................747.5.2 操作.................................................................................................................757.5.3 支持 4 路 PWM................................................................................................. 75

7.6 I2C...............................................................................................................................767.6.1 使用 i2ctools 工具........................................................................................ 767.6.2 文件系统查看 i2c 信息.................................................................................. 77

7.7 SPI...............................................................................................................................78

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 6 –

7.7.1 SPI 设备信息................................................................................................... 787.7.2 SPI 应用 C 调用............................................................................................... 78

7.8 USB...............................................................................................................................807.8.1 USB 查看设备................................................................................................... 807.8.2 USB 挂载............................................................................................................81

7.9 天线.............................................................................................................................827.10 BIT 的单、双天线切换........................................................................................... 827.11 REG 工具....................................................................................................................83

7.11.1 使用方法.........................................................................................................837.12 WIFI...........................................................................................................................84

7.12.1 操作.................................................................................................................847.13 看门狗.......................................................................................................................85

7.13.1 设置看门狗.................................................................................................... 857.14 芯片自身温度...........................................................................................................86

7.14.1 获取信息.........................................................................................................867.15 TF 卡............................................................................................................................87

7.15.1 查看驱动打印信息........................................................................................ 877.15.2 挂载 TF 卡.......................................................................................................88

7.16 4G 模块........................................................................................................................887.16.1 echo 测试 AT 指令......................................................................................... 90

7.17 SIM 卡..........................................................................................................................907.17.1 SIM 卡上网..................................................................................................... 90

7.18 耳机.............................................................................................................................917.18.1 查询有效声卡................................................................................................ 917.18.2 播放音乐.........................................................................................................91

第九章 系统进阶.......................................................................................................................939.1 FLASH 分区..................................................................................................................939.2 U 盘和 TF 卡................................................................................................................949.3 ROOTFS 扩容................................................................................................................949.4 系统定制化.................................................................................................................959.5 程序自启动 init 脚本.............................................................................................. 969.6 应用 NTP 网络时间同步服务.................................................................................... 979.7 UCI 系统......................................................................................................................989.8 Procd 系统进程管理................................................................................................. 999.9 Ubus 进程间通信..................................................................................................... 100

第十章 网络进阶...................................................................................................................10110.1 WAN LAN NAT...........................................................................................................10110.2 网络模式.................................................................................................................10110.3 WIRELESS 和 NETWORK 配置................................................................................... 102

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 7 –

10.4 防火墙 FIREWALL 配置.......................................................................................... 10410.5 检测网线插拔.........................................................................................................105

第十一章 更多玩法...............................................................................................................10611.1 USB 摄像头..............................................................................................................10611.2 motion 动态画面监控........................................................................................... 10711.3 基本音频玩法.........................................................................................................10911.4 MPD 音乐播放器..................................................................................................... 11011.5 eSpeak 语音合成................................................................................................... 11211.6 AIRPLAY 和 DLNA.................................................................................................... 11311.7 AIRKISS 快速配网................................................................................................. 11411.8 网络转串口.............................................................................................................11611.9 FTP 服务器 vsftpd................................................................................................ 118

第十二章 其他操作...............................................................................................................11912.1 刷机.........................................................................................................................11912.2 救砖.........................................................................................................................12312.3 GIT 常用命令..........................................................................................................124

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 8 –

前言

四川无涯智能科技有限公司集研发、生产、销售于一体,主营无线联网通讯模块和设备,

通过了 ISO9001 质量体系认证,拥有 20 余项专利、著作权证书、认证,包括:CE、FCC、

ROHS、CCC 等。

我司在物联网行业干了将近 7 年时间,总结了一下客户对 WiFi 模组的选型,看重的不

外乎就资料、服务、价格这三点:

1)关于资料:做 WiFi 模组,其实就是做芯片增值业务,所以说白了,WiFi 模组的资料

也就是芯片本身的资料,这些资料全世界的供应商基本都是通用的,因为我们都是找芯片厂

家要的,改的,所以你找任何一家公司要到的源码等资料,都可以适用于相同方案的 WiFi

模组,因此资料相对于服务和价格来说,反而不是那么的重要了。虽然相对于不是那么重要

的资料总是能够通过不同途径找到,但是我们为了方便广大客户,我们决定帮大家整理汇总

资料,资料下载地址:http://www.hi-wooya.com/resource.php

2)关于服务:开发是否顺利,产品能不能快速上市。技术支持服务就很重要了,为此

我司开设了技术支持中心(http://www.hi-wooya.com/forum.php),全职工程师在线进行技

术支持,工作时间内提交工单 20 分钟内回复。另外我们还设立了技术支持 QQ 群,只能加 1

个哦!!凭订单号加入无涯物联技术支持1群(292939212)、无涯物联技术支持2群(136088119)。

群里技术支持回复范围为:开发板使用问题(如烧写不进去,启动不了,复用关系不对等等

问题。)和我们提供的文档和资料使用问题。统一技术支持时间为:周一到周六的上午 10

点到 12 点,下午 3 点到 5点,周日休息。

3)关于价格:产品开发好了,那么成本就是任何一家公司都很看重的了。四川无涯智能

科技有限公司现有 SMT 加工线 2 条,可对外 SMT 代加工。无涯智能于 2017 年底开始拥有

自己的工厂,SMT 加工厂现有 SMT 加工线 2 条;进口 DEMO 全自动印刷机; 劲拓 12 温曲

回流焊;AOI 光学检测设备;日产 150 万焊点;无涯智能生产部可帮助客户解决从制版到元

器件配单焊接组装一整套产业链服务,主要针对无线 WiFi 模块定制、贴片、校准、维修服

务。简单的说,我们公司自己有贴片厂,所以,只要您有量,我司出售的 WiFi 模组,就只赚

取加工费和极少的维护费。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 9 –

第 1 章 开发环境的构建

本章目标

了解物联网 Linux 系统开发的交叉开发模式

搭建硬件、软件开发环境

1.1 硬件环境构建

1.1.1 主机与目标板结合的交叉开发模式

开发 PC 机上的软件时,可以直接在 PC 机上编辑、编译、调试软件,最终发布的软件也

是在 PC 机上运行。对于物联网 Linux 系统开发,最初的嵌入式设备是一个空白的系统,需要

通过主机为它构建基本的软件系统,并烧写到设备中;另外,嵌入式设备的资源并不足以用

来开发软件。所以需要用到交叉开发模式:在主机上编辑、编译软件,然后在目标板上运行、

验证程序。主机指 PC 机,目标板指嵌入式设备,在本书中,目标板就是四川无涯智能科技有

限公司独立研发的 WKA-7628A Pro 等基于联发科方案的硬件产品,“目标板”、“开发板”、

“单板”都是同一个意思。

对于四川无涯智能科技有限公司独立研发的 WKA-7628A Pro 等基于联发科方案的硬件产

品,进行物联网 Linux 系统开发时一般可以分为以下 3个步骤。

(1)在主机上编译 U-boot,然后通过 SPI Flash 烧写器烧入单板。

通过 SPI Flash 烧写器烧写程序的效率非常低,而且还需要取下 Flash 芯片,它适用于

烧写空白单板。为方便开发,通常选用具有串口传输、网络传输、烧写 Flash 功能的 U-boot,

它可以快速地从主机获取可执行代码,然后烧入单板。

该 U-boot 在开发板生产时,已经由工厂烧入到了 SPI Flash 中。特别强调,在做物联网

Linux 系统开发时,一般不建议大家自己开发、重新烧写 U-boot!否则,一不小心,开发板

就会变成砖头的哦!

(2)在主机上编译 Linux 系统,通过 U-boot 烧入单板或直接启动。一个可以在单板上

运行的 Linux 系统是进行后续开发的基础。

(3)在主机上编译各类应用程序,经过验证后烧入单板。

烧写、启动 U-boot 后,就可以通过 U-boot 的各类选项来下载、烧写、运行程序了。启

动 Linux 后,也是通过执行各种命令来启动应用程序的。怎么输入这些命令、查看命令运行

的结果呢?一般通过串口来进行输入输出。所以交叉开发模式中,主机与目标板通常需要 2

种连接:串口、网络。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 10 –

1.1.2 硬件要求

1.主机要求

一般的 PC 机就可以用来进行物联网 Linux 系统开发,它应该满足以下要求。

① 有一个 USB 口;

② 支持网络;

③ 至少 20GB 的硬盘。

因为要通过串口来操作 Linux,所以得使用 USB-串口转换器。幸运的是,四川无涯智能

科技有限公司独立研发的WKA-7628A Pro等基于联发科方案的硬件产品已经板载了该转换器。

2.目标板要求

本书使用四川无涯智能科技有限公司(www.hi-wooya.com)提供的 WKA-7628A Pro 基于联

发科方案的硬件产品,当然,读者也可以使用其他公司的同方案的产品,只是可能很多功能

需要自己通过飞线、额外购买更多模块来实现。

由于后面会设计到大量的教程、大量的应用的移植,所以建议大家用128MB 的内存、16MB

的 Flash。

所谓的硬件开发环境搭建很简单,将主机与目标板通过串口线、网线(接单板上的任意网

口)连接起来,将各类设备连接到目标板上去即可。

1.2 软件环境构建

1.2.1 在 Windows上安装虚拟机

本书基于 Ubuntu 16.04进行开发,它是一个很容易安装和使用的 Linux 发行版。光盘映

象文件的下载地址为 http://releases.ubuntu.com/。安装方法有好几种:将映像文件刻录成光盘后安装,通过网络安装等。对于不熟悉 Linux

的读者,可以通过 VMware 虚拟机软件使用映象文件安装,这样可以在 Windows 中使用

Linux──反过来也是可以的,安装 Linux 后,再使用 VMware 安装 windows,这样就可以在

Linux 中同时使用 Windows 了。

这几种安装方法基本相同,下面介绍在 Windows 中通过 VMware 来安装 Linux 的方法。不

管是哪种方法,都建议单独使用一个分区来存放本书所涉及的源码、编译结果,这可以避免

当系统出错、系统重装时破坏学习成果。

从无涯的官方网站 https://www.hi-wooya.com/resource-view-25.html 下载 VMware 工

具,参照以下方法安装。

(1)安装 VMware 虚拟机:

在 Windows 中安装 VMware 虚拟机,其实和安装一个像 QQ 这样的应用程序没什么区别,

不外乎就是设置安装路径,然后不断下一步就行。

① 双击 VMware-workstation-full-10.0.1-1379776.exe 开始安装,然后直接点下一步。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 11 –

图 1.1 启动 VMware 安装程序

② 许可协议,选择“我接受许可协议中的条款”,然后点击下一步。

图 1.2 许可协议

③ 选择安装类型,选“典型”即可,如图 1.3 所示。然后设置安装路径,根据自己实际

的情况进行设置即可,如图 1.4 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 12 –

图 1.3 安装类型

图 1.4 安装路径

④ 软件更新,问是否在软件启动时检查软件更新,建议不要勾选这个选项,如图 1.5

所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 13 –

图 1.5 软件更新

⑤ 用户体验改进计划,建议不要勾选,如图 1.6 所示。

图 1.6 用户体验改进计划

⑥ 快捷方式,这些选择需要创建快捷方式的地方,根据自己实际需要情况勾选即可,

如图 1.7 所示。准备好安装了,是否继续,如图 1.8 所示,直接点击继续即可。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 14 –

图 1.7 快捷方式

图 1.8 已准备好执行请求的操作

⑦ 当软件安装完成后,会自动弹出如图 1.9 所示界面,让输入许可证密码,这时双击注

册机 vm10keygen.exe 便可获得许可证密码,将该许可证密码复制进图 1.9 所示对话框即可,

然后点“输入”,就能完成安装,如图 1.11 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 15 –

图 1.9 输入许可证密码

图 1.10 注册机

图 1.11 安装完成

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 16 –

1.2.2 在虚拟机上安装 Linux

在虚拟机上安装 Linux 系统,方法有很多种,方法一:通过 iso 光盘镜像(ubuntu-16.04-

desktop-i386.iso 文件)进行安装。方法二:直接用 VMware 虚拟机打开别人做好的系统。本

书使用方法二,直接打开无涯物联官方提供的 Ubuntu 16.04 操作系统,下载地址

(https://www.hi-wooya.com/resource-view-26.html)。下面简单介绍关键步骤。

(1)VMware 虚拟机打开 Ubuntu 16.04 操作系统。

① 下载无涯物联官方提供的 Ubuntu 16.04 操作系统,并解压到电脑指定的地方,本书

中是将其解压到“E:\VMware-workstation”。

② 运行 VMware 虚拟机,如图 1.12 所示。

图 1.12 VMware 虚拟机启动界面

③ 选择“打开虚拟”打开刚刚解压好的 Ubuntu 16.04 操作系统即可,如图 1.13 所示。

图 1.13 已加载好操作系统的界面

④ 点“开启此虚拟机”就能启动 Ubuntu 16.04 操作系统(用户名:wooya 密码:123456),

如图图 1.14 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 17 –

图 1.14 Ubuntu 16.04 操作系统登录界面

⑤ 用 Ctrl+Alt+t 打开 Ubuntu 16.04 操作系统的控制台,并输入 ifconfig 命令可以查

看到该 Ubuntu 16.04 操作系统的 IP。

图 1.15 控制台

1.2.3 用 SecureCRT打开 Ubuntu操作系统的控制台

SecureCRT 是一款终端仿真程序,支持 SSH(SSH1 和 SSH2)以及 Telnet 和 rlogin 协议。

因此我们可以用 SecureCRT 来打开 Ubuntu 的控制台,也可以用来作为调试串口的超级终端。

我们这里先讲解,如何让 SecureCRT 打开 Ubuntu 的控制台。

(1)SecureCRT 打开 Ubuntu 的控制台:

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 18 –

用 SecureCRT 打开 Ubuntu 的控制台,其实就是用 SecureCRT 的 SSH 协议登录进 Ubuntu

系统。

① 查看 Ubuntu 系统的 IP 地址,如图 1.15 所示,并且确保 Windows 系统能 ping 通该

IP,如图 1.16。

图 1.16 ping 通虚拟机

② 下载并安装 SecureCRT 软件。

下载地址:https://www.hi-wooya.com/resource-view-28.html

③ 运行“SecureCRT”并填入 IP 和用户名(wooya),然后点“连接”,如图 1.17 所示。

图 1.17 填入登录信息

④ 接着输入密码(123456),如图 1.18 所示。然后点“确认”。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 19 –

图 1.18 输入密码

⑤ 点“确认”后,即能连上 Ubuntu 16.04 操作系统的控制台,并输入 ifconfig 命令

可以查看到该 Ubuntu 16.04 操作系统的 IP,如图 1.19 所示。

图 1.19 控制台

1.2.4 用 FileZilla往 Ubuntu操作系统传文件

FileZilla 是一个免费开源的 FTP 软件,分为客户端版本和服务器版本,具备所有的 FTP

软件功能。可控性、有条理的界面和管理多站点的简化方式使得 Filezilla 客户端版成为一

个方便高效的 FTP 客户端工具,而 FileZilla Server 则是一个小巧并且可靠的支持 FTP&SFTP

的 FTP 服务器软件。

FileZilla 是一种快速、可信赖的 FTP 客户端以及服务器端开放源代码程式,具有多种

特色、直接的接口。FileZilla 在 2002 年 11 月获选为当月最佳推荐专案。

(1)FileZilla 连接 Ubuntu:

用 FileZilla 连接 Ubuntu,其实就是用 FileZilla 的 FTP 协议登录进 Ubuntu 系统。

① 查看 Ubuntu 系统的 IP 地址,如图 1.19 所示,并且确保 Windows 系统能 ping 通该

IP,如图 1.20。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 20 –

图 1.20 ping 通虚拟机

② 下载并安装 FileZilla 软件。

下载地址:https://www.hi-wooya.com/resource-view-29.html

③ 运行“FileZilla”并填入主机(即您虚拟机实际的 IP 地址)、用户名(wooya)、

密码(123456)和端口(22),然后点“快速连接”,如图 1.21 所示。

图 1.21 FileZilla 成功连接 Ubuntu

(2)互传文件:

如图 1.21 所示,FileZilla 已成功连接 Ubuntu,左边窗口为 Windows 系统的文件列表,

右边窗口为 Ubuntu 系统的文件列表,此时只需将左边的文件拖到右边,就完成了从 Windows

系统传文件到 Ubuntu 系统的操作,反之亦然。

1.2.5 用共享文件夹往 Ubuntu操作系统中传输文件(推荐)

虚拟机 Vmware 提供共享文件夹用于传输文件。(需要注意的是,编译源码不能在共享

文件夹下编译,需要将源码打包拷贝到 Ubuntu 私有环境下编译,否则会编译不通过)。

1 在 Windows 系统中创建一个与 Ubuntu 互传的文件夹。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 21 –

2 打开虚拟机菜单栏->设置,或者按“ctrl+D”快捷键。弹出虚拟机设置操作界面,

见图 1.23。

图 1.23 设置虚拟机

3 选项->共享文件夹,设置总是启用,并且按“添加”按钮,进行下一步设置。如图

1.24。

图 1.24 添加共享文件夹

图 1.22 创建共享文件夹

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 22 –

4 设置主机路径就是你在 Windows 下创建的那个文件夹,我选择在 E:\UbuntuShare。

名字默认为 UbuntuShare(最好起英文,因为在 linux 下挂载以后,我们想要访问,

使用中文名不好输入)。

5 下一步选择 “启用此共享(E)”以后,点击完成我们就创建好共享文件夹了。创建

好如图 1.24。

设置好的共享文件夹默认的路径在/mnt/hgfs 下。如果显示如下 UbuntuShare,那么表

示我们的共享文件夹挂载成功。

linux@ubuntu:/mnt/hgfs$ cd /mnt/hgfs/

linux@ubuntu:/mnt/hgfs$ ls

UbuntuShare

(1)挂载不上的情况:

1. 没有安装 VMware Tools 工具。

如果你使用的是无涯提供的 Ubuntu16.04 操作系统,已经装好了这个工具。如果是自己

创建的 Ubuntu 需要手动安装。

图 1.24 共享文件夹设置

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 23 –

1 在虚拟机菜单栏中“虚拟机(M)”->“重新安装 WMware Tools (T)”按钮。Ubuntu

下会自动弹出一个文件夹,如下图,将 VMwareTools-10.0.1-3160059.tar.gz

文件右键“copy”,到 Home 家目录下,右键 paste 进行粘贴见。见图 1.25。

②打开中端命令行窗口进行安装 WMware Tools 工具。

linux@ubuntu:~$ cd

linux@ubuntu:~$ tar -xvf VMwareTools-10.0.1-3160059.tar.gz

linux@ubuntu:~$ cd vmware-tools-distrib/

linux@ubuntu:~/vmware-tools-distrib$ ls

bin caf doc etc FILES INSTALL installer lib vgauth vmware-install.pl

vmware-install.real.pl

linux@ubuntu:~/vmware-tools-distrib$ sudo ./vmware-install.pl

(2)共享文件夹使用方法

将文件从 Windows 传入 Ubuntu 虚拟机内。

①将准备文件test.c放入我们之前在Windows下的E盘的共享文件夹“E:\UbuntuShare”,

如图 1.26。

图 1.25 VmTools工具安装包

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 24 –

图 1.26 Windows下的文件放入共享文件夹

②如果共享文件夹挂载成功的话,打开虚拟机,在/mnt/hgfs/目录下的 UbuntuShare 下

接受 test.c 文件,见图 1.27。并且打开文件,查看文件的内容,见图 1.28。

反之,当我们想要将文件从 Ubuntu 传到 Windows 下,将文件拷贝到/mnt/hgfs 文件夹下

就可以了。

图 1.27 Ubuntu下接受文件

图 1.28 查看传输文件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 25 –

第 2 章 编译源码

本章目标

掌握安装交叉编译工具链的方法

掌握编译 U-Boot、固件的方法

2.1 搭建编译环境

编译 OpenWrt 需要 Linux 环境或 mac 环境,或 win10 下的 WSL(Ubuntu16.04),或者安

装虚拟机。

Linux (建议使用 Ubuntu16.04 稳定发行版本)。

注意 1:在 Ubuntu18.04 上编译将无法通过,所以推荐使用低版本编译

注意 2:如果提示找不到 openjdk-8-jdk,可以试试 openjdk-7-jdk

注意 3:zlib1g 里面第二个 1是阿拉伯数字

注意 4:如果找不到依赖源,建议更新源文件为香港源或者清华源,下列提供香港源

替换源文件:

$ sudo vi /etc/apt/sources.list

deb http://hk.archive.ubuntu.com/ubuntu/ xenial main restricted

deb http://hk.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

deb http://hk.archive.ubuntu.com/ubuntu/ xenial universe

deb http://hk.archive.ubuntu.com/ubuntu/ xenial-updates universe

deb http://hk.archive.ubuntu.com/ubuntu/ xenial multiverse

deb http://hk.archive.ubuntu.com/ubuntu/ xenial-updates multiverse

deb http://hk.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe

multiverse

deb http://security.ubuntu.com/ubuntu xenial-security main restricted

deb http://security.ubuntu.com/ubuntu xenial-security universe

deb http://security.ubuntu.com/ubuntu xenial-security multiverse

编译前要安装以下依赖:

$ sudo apt-get update

$ sudo apt-get install git g++ make libncurses5-dev subversion libssl-dev gawk

libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g-dev

openjdk-8-jdk build-essential ccache gettext xsltproc openssl

如果是 64 位操作系统,需要多操作如下步骤:

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 26 –

$ sudo dpkg --add-architecture i386

$ sudo apt-get update

$ sudo apt-get install libc6i386 libncurses5i386 libstdc++6i386

2.2 编译 U-Boot

U-Boot 是用于引导 Linux 内核的一段代码,相当于电脑的 BIOS 程序。U-Boot 的具体编

译方法如下。

(1)下载 U-Boot 源码

首先我们要下载u-boot打源码,我们这里以git方式来作为演示。在虚拟机Ubuntu 16.04

的控制台中执行以下命令。下载完成如图 2.1。(如果下载不了,或者速度过慢,详见 2.3.3

节)。

linux@ubuntu:~$ cd /work

linux@ubuntu:/work$ git clone https://github.com/hi-wooya/u-boot-hiwooya.git

(2)安装 openjdk,并保证系统语言为英文

linux@ubuntu:/work$ sudo apt-get install openjdk-8-jdk

(3)我们现在已经将 uboot 源码下载到/work 工作目录下了,之后进入 u-boot 源码目

录下,开始解压 buildroot 工具,当输出最后一行代表解压完成,如图 2.2。

linux@ubuntu: /work$ cd u-boot-hiwooya/

linux@ubuntu: /work/u-boot-hiwooya$ sudo tar -xvf buildroot-gcc342.tar.bz2 -C /opt/

(4)配置 U-Boot 源码

图 2.1 克隆 uboot源码成功

图 2.2 解压 buildroot 完成

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 27 –

linux@ubuntu: /work/u-boot-hiwooya$ make clean

linux@ubuntu: /work/u-boot-hiwooya$ make menuconfig

以 MT7628A 内存 DDR2 为 128MBye,SPI Flash 为 16MBye 为例进行配置并退出保存,配置

如下,见图 2.3。

Chip ID: MT7628 // 选择主控芯片,MT7688 和 MT7628 通用

DRAM Type: DDR2 // 选择 DDR 类型,用的是 DDR2

DDR Component: 512Mb // 选择 DDR 大小,128MBye 就是 1024Mb,但是要考虑位宽

DDR Width: 16bits // 选择位宽

图 2.3 配置 make menuconfig

(5)编译 U-Boot 源码

linux@ubuntu:/work/u-boot-hiwooya$ make

编译安装过程大概耗时 10 几秒钟,取决于您电脑的性能,当最终看到如图 3.1 所示的结

果,表示编译成功。uboot.bin 就是我们编译出来的可以直接烧录在设备上的 U-Boot 文件。

2.3 编译系统固件

openwrt-hiwooya(OpenWrt 系统源码)是四川无涯智能科技有限公司自主研发维护的嵌

入式 Linux 系统源码,该源码是基于 OpenWrt 官网的 OpenWrt CC1505 版本移植而成,支持

图 2.3 编译完成吐 2.3

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 28 –

RT5350、MT7688A、MT7628A、MT7620A、MT7621 等联发科主控。

2.3.1 openwrt-hiwooya源码目录解释

我们将源代码从官方下载而来的目录称之为原始目录,将编译后生成的目录称之为生成

目录,分两部分介绍各个目录。

图 2.4 原始目录

几个重要的目录:

(1)scripts:存放了一些脚本,使用了 bash,Python,perl 等多种脚本语言.编译过程中,

用于第三方软件包管理的 feeds 文件也是在这个目录当中.在编译过程中,使用到的脚本也统

一放在这个目录中;

(2)tools:编译时,主机需要使用一些工具软件,tools 里包含了获取和编译这些工具

的命令。软件包里面有 Makefile 文件,有的还包含了 patch。每个 Makefile 当中都有一句

$(eval $(call HostBuild)),这表明编译这个工具是为了在主机上使用的;

(3)config:存放着整个系统的配置文件;

(4)docs:包含了整个宿主机的文件源码的介绍,里面还有 Makefile 为目标系统生成

docs。使用 make -C docs 可以为目标系统生成文档。

(5)toolchain:嵌入式的工程应该都知道交叉编译工具链,这个文件中存放的就是交叉

编译工具链的软件包。包括 binutils,gcc,libc 等等;

(6)target:openwrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目

录里定义了 firmware 和 kernel 的编译过程;

(7)package:存放了 openwrt 系统中适用的软件包,包含针对各个软件包的 Makefile。

openwrt 定义了一套 Makefile 模板,各软件参照这个模板定义了自己的信息,如软件包的版

本、下载地址、编译方式、安装地址等。在二次开发过程中,这个文件夹我们会经常打交道。

事实上,通过./scripts/feeds update -a 和./scripts/feeds install -a 的软件包也会存放

在这个目录之中;

(8)include:openwrt 的 Makefile 都存放在这里。文件名为 .mk。这里的文件上是在

Makefile 里被 include 的,类似于库文件。这些文件定义了编译过程;

(9)文件:主要目录就是前面提及的 8 个,剩下的是单个文件,具体如下:

a,Makefile:在顶层目录执行 make 命令的入口文件。

b,rules.mk:定义了 Makefile 中使用的一些通用变量和函数。

c,Config.in:在 includetoplevel.mk 中我们可以看到,这是和 make menuconfig 相关

联的文件。

d,feeds.conf.default:是下载第三方一些软件包时所使用的地址。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 29 –

e,LICENSE & README:即软件许可证和软件基本说明。其中 README 描述了编译软件的

基本过程和依赖文件。

图 2.5 生成目录

在我们编译完成后除了下载的源码文件,多出来的部分很明显就是编译过程中新生成的。

如图 2.5 所示。具体解释如下。

(1)feeds:openwrt 的附加软件包管理器的扩展包索引目录。有点绕,简单来说就是

下载管理软件包的。默认的 feeds 下载有 packages、management、luci、routing、telephony。

如要下载其他的软件包,需打开源码根目录下面的 feeds.conf.default 文件,去掉相应软件

包前面的#号,然后执行.scriptsfeeds update -a 更新源,执行.scriptsfeeds install -a

安装下载好的包;

(2)build_dir:在前面的原始目录中,我们提到了 host 工具,toolchain 工具还有目标

文件.openwrt 将在这个目录中展开各个软件包,进行编译。所以这个文件夹中包含 3 个子文

件夹,具体如下:

a,host:在该文件夹中编译主机使用的工具软件。

b,toolchain-XXX:在该文件夹中编译交叉工具链。

c,target-XXX:在此编译目标平台的目标文件,包括各个软件包和内核文件。

d,bin:保存编译完成后的二进制文件,包括完整的 bin 文件,所有的 ipk 文件。

e,dl:在编译过程中使用的很多软件,刚开始下载源码并没有包含,而是在编译过程中从

其他服务器下载的,这里是统一的保存目录。

f,staging_dir:用于保存在 build_dir 目录中编译完成的软件。所以这里也和

build_dir 有同样的子目录结构。 比如,在 target-XXX 文件夹中保存了目标平台编译好

的头文件,库文件。在我们开发自己的 ipk 文件时,编译过程中,预处理头文件,链接动态

库,静态库都是到这个子文件夹中。

g,tmp:从名字来看,是临时文件夹。在编译过程中,有大量中间临时文件需要保存,都是

在这里。

h,logs:这个文件夹,有时可以看到,有时没有。这是因为这个文件夹保存的是,编译过

程中出错的信息,只有当编译出错了才会出现。我们可以从这里获取信息,从而分析我们

的软件编译为什么没有完成。

2.3.2 openwrt-hiwooya编译

以 MT7628 内存 DDR2 为 128MBye,SPI Flash 为 16MBye 为例,讲解下编译过程。

(1)下载 openwrt-hiwooya 源码

在前面的章节中我们已经讲解过如何来下载 U-Boot 源码了,我们这里以 git 方式来作为

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 30 –

演示。在虚拟机 Ubuntu 16.04 的控制台中执行以下命令。最后我们下载成功 openwrt 源码如

图 2.6。(如果下载不了,或者速度过慢,详见 2.3.3 节)。

linux@ubuntu:/work$ git clone https://github.com/hi-wooya/openwrt-hiwooya.git

linux@ubuntu:/work$ cd openwrt-hiwooya

linux@ubuntu:/work/openwrt-hiwooya$ ./scripts/feeds update -a

linux@ubuntu:/work/openwrt-hiwooya$ ./scripts/feeds install -a

(2)拷贝平台相关的配置文件到源码顶层目录

发现有时候由于环境的差异,选择 HIWOOYA 后其他的依赖没有自动被处理好,或者说很

多客户朋友很难一次把需要的东西全部配置完成,所以我们这里给出了一份我本地选择

HIWOOYA16128 后的.config 文件作为默认配置文件 config-HIWOOYA16128,大家只需要将其

重命名为.config 即可。

linux@ubuntu:/work/openwrt-hiwooya$ cp config-HIWOOYA16128 .config

(3)进一步配置

很多读者会有疑问,如果我们的板卡配置不是 HIWOOYA16128 怎么办?那么我们只需要完

成上一步的操作以后,再进行 make menuconfig 稍做修改然后保存退出即可。如图 2.7。

linux@ubuntu:/work/openwrt-hiwooya$ make menuconfig

如何进行修改,我们给出以下参考。

如果是 16MB+128MB 配置:

Target System: Ralink RT288x/RT3xxx

Subtarget: MT7688 based boards

Target Profile: HIWOOYA16128

如果是 32MB+128MB 配置:

Target System: Ralink RT288x/RT3xxx

Subtarget: MT7688 based boards

Target Profile: HIWOOYA32128

如果是 16MB+64MB 配置:

Target System: Ralink RT288x/RT3xxx

Subtarget: MT7688 based boards

Target Profile: HIWOOYA1664

图 2.6 克隆 openwrt 源码完成

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 31 –

如果是 32MB+64MB 配置:

Target System: Ralink RT288x/RT3xxx

Subtarget: MT7688 based boards

Target Profile: HIWOOYA3264

(4)下载 dl 到源码顶层目录

因为众所周知的原因,在国内编译 OpenWrt 很困难,有很多包被墙无法下载。 我们提供

了一个 dl 镜像的地方,推荐如果编译过程中发现某些包找不到,去无涯网站搜索 dl 镜像包

(https://www.hi-wooya.com/resource.php?mod=view&rid=36),下载后放到共享文件夹

下,然后直接解压到 openwrt-hiwooya 根目录中的即可生成 dl 文件夹,减少编译时间。如图

2.8。

linux@ubuntu:/work/openwrt-hiwooya$ tar -xvf /mnt/hgfs/UbuntuShare/dl.tar.bz2

-C ./

(5)开始编译

linux@ubuntu:/work/openwrt-hiwooya$ make V=99 -j4

编译安装过程大概耗时几十分钟,取决于您电脑的性能,当最终看到如图 2.9 所示的结

果,表示编译完成。最终编译出来的固件存放在 openwrt-hiwooya/bin/ramips 目录,固件名

为 openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin。

图 2.8 解压到 openwrt目录下的 dl包

图 2.7 配置 make menuconfig

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 32 –

图 2.9 openwrt-hiwooya 编译完成

2.3.3 openwrt-hiwooya编译过程容易出现的问题

feeds 脚本执行错误

由于我们要使用 scripts 脚本克隆 github 下的内容,如果出现失败的情况,那么请修

改/etc/hosts 文件,添加从 http://www.ipaddress.com/ 链接下的搜索返回失败的网址,

并且依照其他格式添加到 hosts 文件中,如下。这样我们就可以下载 feeds 脚本到 openwrt

源码下了,如图 2.10。这样我们就可以完美地克隆到 openwrt 源码下,见图 2.11。

linux@ubuntu:/work/openwrt-hiwooya$ sudo vi /etc/hosts

127.0.0.1 localhost

127.0.1.1 ubuntu

140.82.113.3 github.com/hi-wooya/u-boot-hiwooya.git

140.82.113.3 github.com/hi-wooya/openwrt-hiwooya.git

140.82.113.3 github.com/openwrt-management/packages.git/

140.82.113.3 github.com/hi-wooya/luci.git

140.82.113.3 github.com/hi-wooya/packages.git

140.82.113.3 github.com/hi-wooya/

140.82.113.3 github.com/

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 33 –

图 2.10 获取可用的 ip

图 2.11 克隆 feeds执行完毕

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 34 –

第 3 章 烧录固件

本章目标

掌握几种常见的固件烧录方法

板卡里面已经预置我司移植好了的 U-Boot,该 U-Boot 支持界面烧录和 tftp 方式烧录。

您只需要根据自己的 U-Boot 的启动信息,选择对应的烧录方式即可。

3.1 Web 界面方式烧录

在电脑的设备管理器中能看到串口对应的端口号,在通过 SecureCRT 访问串口控制台(详

细步骤见 5.1.1 小节)。当出现如图 3.1 所示的启动信息时,我们只需要在倒计时时,按下

硬件平台的 Reload 键 2 到 7 秒,U-Boot 便会进入烧录模式,如图 3.2 所示。

图 3.1 U-Boot 启动信息

图 3.2 U-Boot 进入烧录模式

当 U-Boot 进入如图 3.2 所示的烧录模式以后,我们只需要通过网线将硬件平台的网口和

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 35 –

电脑的网口直连,然后打开浏览器,输入 10.10.10.2 的 IP 地址,就能进入如图 3.3 所示的

烧录界面。需要注意的是,一定要确保您电脑的有线网卡一定要是 10.10.10.x 网段的,因此

需要手动将电脑中与开发板相连的网口适配器的 IPV4 属性设置为 10.10.10.x 的网段并配置

好子网掩码。

图 3.3 烧录界面

当进入如图 3.3 所示的烧录界面以后,我们只需选择需要烧录的固件,然后点击 Update

Firmware 按钮,就能完成固件的更新。更新完成以后,系统会自动重启。

3.2 tftp方式烧录

在通过 SecureCRT 访问串口控制台后,当出现如图 3.4 所示的启动信息时,我们只需要

在倒计时结束之后,键盘输入 2,U-Boot 便会进入烧录模式,如图 3.4 所示。

图 3.4 U-Boot 启动信息

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 36 –

图 3.5 U-Boot 进入烧录模式

当 U-Boot 进入如图 3.5 所示的烧录模式以后,我们只需要通过网线将硬件平台的网口和

电脑的网口直连,然后需要打开 3CDaemon 这个 TFTP 服务器软件,该软件的下载地址为

(https://www.hi-wooya.com/resource-view-31.html),需要注意的是,3CDaemon 运行起

来以后,一定要确保它有监听到电脑有线网卡的 IP 地址,如图 3.6 所示。

图 3.6 3CDaemon 界面

3CDaemon 软件是一款在 Windows 环境中运行的 TFTP 服务软件。在如图 3.6 中我们只需

要使用“设置 TFTP 服务器”与“TFTP 服务器启动”按钮。“设置 TFTP 服务器”中的上传下

载设置项中进行 tftp 目录的设置,将想要下载到开发板的固件存放于设置的目录中即可。

“TFTP 服务器启动”按钮用于开启监控电脑中可以监控到以太网 IP 地址的服务。

之后我们设置以太网卡适配器的IP地址为10.10.10.x以及掩码,我们可以看到如图3.6

所示界面,有监听到 10.10.10.10 的 IP 地址,这个 IP 地址就是我们电脑有线网卡的 IP 地址

(自己手动设置的)。

接下来我们回到如图 3.5 所示的 U-Boot 烧录模式,我们需要依次填写 Input device IP

(设备的 IP 地址,例如 10.10.10.2),这个 IP 可以任意填写,但是必须和电脑有线网卡的

IP 同一个网段;Input server IP(服务器 IP 地址,例如 10.10.10.10),这个 IP 地址必须

填写以太网适配器的 IP,也就是我们刚才设置的 10.10.10.10;Input Linux Kernel filename

(固件名称,例如:openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin),这

里需要输入要烧录固件的完整名字。如图 4.7 所示,填入完整信息以后,敲回车变开始烧录,

########表示烧录进度。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 37 –

图 3.7 烧录

3.3 烧录常碰到的问题

问题 1:由于 20180420 的 Openwrt 固件存在 bug,通过 uboot_env 工具搞乱了 env 分区,

导致 IP 为 0.0.0.0,如图 3.8 所示。修复方法如下:

图 3.8 IP 为 0.0.0.0

uboot 启动过程中,按"4"进入 uboot 的命令行。

setenv bootcmd tftp

设置 uboot 默认启动命令

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 38 –

setenv bootdelay 2

设置 uboot 上电后的延迟等待时间

setenv ethaddr 00:AA:BB:CC:DD:10

设置开发板的物理地址

setenv ipaddr 10.10.10.2

设置开发板的地址

setenv serverip 10.10.10.10

设置主机地址

setenv ethmode l

设置 IoT 模式/路由模式,见第八章

saveenv

保存上述设置环境变量,之后重启,进入 uboot 的刷机模式,刷最新固件。

如果需要查看一下设置的环境变量使用“pri”命令进行查看。如图 3.9。

图 3.9 查看环境变量

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 39 –

第 4 章 启动 LOG

本章目标

了解系统输出日志

熟悉嵌入式开发的读者,都会知道嵌入式设备一上电首先运行的是片内 ROM 固化的一段

代码(该代码是芯片厂商搞的,我们不知道),其次运行的是 U-Boot(也就是 Bootloder),

然后引导 Linux 内核启动。

4.1 U-Boot 启动 LOG

uboot 的 LOG 中可以找到如下打印:

Wooya by wuya,V1.0.6

代表是 1.0.6 版本。

Ralink UBoot Version: 4.3.0.0

表示该 uboot 基于联发科的 4300 版本构建。

4.2 OpenWrt启动 LOG

4.2.1 Linux内核版本

Linux 内核解压缩完打印的第一句就可以找到 linux 版本:

[ 0.000000] Linux version 3.18.29 (linux@ubuntu) (gcc version 4.8.3

(OpenWrt/Linaro GCC 4.8-2014.04 unknown) ) #3 Wed Mar 17 00:47:33 PDT 2021

4.2.2 OpenWrt版本

_ _ _

| | | (_)_ _____ ___ _ _ __ _

| |_| | \ \ /\ / / _ \ / _ \| | | |/ _` |

| _ | |\ V V / (_) | (_) | |_| | (_| |

|_| |_|_| \_/\_/ \___/ \___/ \__, |\__,_|

|___/

-----------------------------------------------------

CHAOS CALMER (Chaos Calmer, unknown) Ver:0.1.9-20190812 by HIWOOYA

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 40 –

-----------------------------------------------------

可以看到我们维护的版本是:0.1.9,而 CHAOS CALMER 则是 OpenWrt 的 CC15.05 代号,

基于此版本构建。

4.2.3 完整启动 LOG

Wooya by wuya,V1.0.6

Board: Ralink APSoC DRAM: 128 MB

relocate_code Pointer at: 87fb0000

flash manufacture id: ef, device id 40 18

find flash: W25Q128BV

============================================

Ralink UBoot Version: 4.3.0.0

--------------------------------------------

ASIC 7628_MP (Port5<->None)

DRAM component: 1024 Mbits DDR, width 16

DRAM bus: 16 bit

Total memory: 128 MBytes

Flash component: SPI Flash

Date:Aug 23 2017 Time:15:21:32

============================================

icache: sets:512, ways:4, linesz:32 ,total:65536

dcache: sets:256, ways:4, linesz:32 ,total:32768

##### The CPU freq = 575 MHZ ####

estimate memory size =128 Mbytes

RESET MT7628 PHY!!!!!!MT7688 wifi module: www.hi-wooya.com

if you press the WPS button for more than 2 seconds will automatically enter the Update

mode,more than 7 seconds enter gpio test mode

0

1

2

3

4

5

6

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 41 –

7

8

9

Continuing normal boot...

Please choose the operation:

1: Load system code to SDRAM via TFTP.

2: Load system code then write to Flash via TFTP.

3: Boot system code via Flash (default).

4: Entr boot command line interface.

5: Entr ALL LED test mode.

6: Entr Web failsafe mode.

7: Load Boot Loader code then write to Flash via Serial.

9: Load Boot Loader code then write to Flash via TFTP.

3

You choosed 3

0

3: System Boot system code via Flash.

## Booting image at bc050000 ...

Image Name: MIPS OpenWrt Linux-3.18.29

Image Type: MIPS Linux Kernel Image (lzma compressed)

Data Size: 1150308 Bytes = 1.1 MB

Load Address: 80000000

Entry Point: 80000000

Verifying Checksum ... OK

Uncompressing Kernel Image ... OK

No initrd

## Transferring control to Linux (at address 80000000) ...

## Giving linux memsize in MB, 128

Starting kernel ...

[ 0.000000] Linux version 3.18.29 (linux@ubuntu) (gcc version 4.8.3

(OpenWrt/Linaro GCC 4.8-2014.04 unknown) ) #3 Wed Mar 17 00:47:33 PDT 2021

[ 0.000000] Board has DDR2

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 42 –

[ 0.000000] Analog PMU set to hw control

[ 0.000000] Digital PMU set to hw control

[ 0.000000] SoC Type: MediaTek MT7628AN ver:1 eco:2

[ 0.000000] bootconsole [early0] enabled

[ 0.000000] CPU0 revision is: 00019655 (MIPS 24KEc)

[ 0.000000] MIPS: machine is HIWOOYA-NEO

[ 0.000000] Determined physical RAM map:

[ 0.000000] memory: 08000000 @ 00000000 (usable)

[ 0.000000] Initrd not found or empty - disabling initrd

[ 0.000000] Zone ranges:

[ 0.000000] Normal [mem 0x00000000-0x07ffffff]

[ 0.000000] Movable zone start for each node

[ 0.000000] Early memory node ranges

[ 0.000000] node 0: [mem 0x00000000-0x07ffffff]

[ 0.000000] Initmem setup node 0 [mem 0x00000000-0x07ffffff]

[ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.

[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes

[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages:

32512

[ 0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2

[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)

[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

[ 0.000000] Writing ErrCtl register=000647ef

[ 0.000000] Readback ErrCtl register=000647ef

[ 0.000000] Memory: 126272K/131072K available (2544K kernel code, 124K rwdata,

520K rodata, 196K init, 185K bss, 4800K reserved)

[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

[ 0.000000] NR_IRQS:256

[ 0.000000] intc: using register map from devicetree

[ 0.000000] CPU Clock: 580MHz

[ 0.000000] clocksource_of_init: no matching clocksources found

[ 0.000000] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)

[ 0.060000] pid_max: default: 32768 minimum: 301

[ 0.060000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)

[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)

[ 0.080000] pinctrl core: initialized pinctrl subsystem

[ 0.090000] NET: Registered protocol family 16

[ 0.110000] mt7621_gpio 10000600.gpio: registering 32 gpios

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 43 –

[ 0.120000] mt7621_gpio 10000600.gpio: registering 32 gpios

[ 0.130000] mt7621_gpio 10000600.gpio: registering 32 gpios

[ 0.140000] Switched to clocksource MIPS

[ 0.150000] NET: Registered protocol family 2

[ 0.150000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)

[ 0.170000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)

[ 0.180000] TCP: Hash tables configured (established 1024 bind 1024)

[ 0.190000] TCP: reno registered

[ 0.200000] UDP hash table entries: 256 (order: 0, 4096 bytes)

[ 0.210000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

[ 0.220000] NET: Registered protocol family 1

[ 0.230000] futex hash table entries: 256 (order: -1, 3072 bytes)

[ 0.250000] squashfs: version 4.0 (2009/01/31) Phillip Lougher

[ 0.260000] jffs2: version 2.2 (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c)

2001-2006 Red Hat, Inc.

[ 0.280000] msgmni has been set to 246

[ 0.300000] io scheduler noop registered

[ 0.310000] io scheduler deadline registered (default)

[ 0.320000] drivers/phy/phy-ralink-usb.c:ralink_usb_phy_probe[336]

[ 0.330000] drivers/phy/phy-ralink-usb.c:ralink_usb_phy_probe[350]

[ 0.350000] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled

[ 0.360000] console [ttyS0] disabled

[ 0.370000] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 28, base_baud =

2500000) is a 16550A

[ 0.380000] console [ttyS0] enabled

[ 0.380000] console [ttyS0] enabled

[ 0.400000] bootconsole [early0] disabled

[ 0.400000] bootconsole [early0] disabled

[ 0.410000] 10000d00.uart1: ttyS1 at MMIO 0x10000d00 (irq = 29, base_baud =

2500000) is a 16550A

[ 0.430000] 10000e00.uart2: ttyS2 at MMIO 0x10000e00 (irq = 30, base_baud =

2500000) is a 16550A

[ 0.450000] spi-mt7621 10000b00.spi: sys_freq: 193333333

[ 0.470000] m25p80 spi32766.0: w25q128 (16384 Kbytes)

[ 0.480000] m25p80 spi32766.0: using chunked io

[ 0.490000] 4 ofpart partitions found on MTD device spi32766.0

[ 0.500000] Creating 4 MTD partitions on "spi32766.0":

[ 0.510000] 0x000000000000-0x000000030000 : "u-boot"

[ 0.520000] 0x000000030000-0x000000040000 : "u-boot-env"

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 44 –

[ 0.530000] 0x000000040000-0x000000050000 : "factory"

[ 0.540000] 0x000000050000-0x000001000000 : "firmware"

[ 0.580000] 2 uimage-fw partitions found on MTD device firmware

[ 0.590000] 0x000000050000-0x000000168da4 : "kernel"

[ 0.600000] 0x000000168da4-0x000001000000 : "rootfs"

[ 0.610000] mtd: device 5 (rootfs) set to be root filesystem

[ 0.630000] 1 squashfs-split partitions found on MTD device rootfs

[ 0.640000] 0x000000630000-0x000001000000 : "rootfs_data"

[ 0.660000] ralink_soc_eth 10100000.ethernet eth0: ralink at 0xb0100000, irq 5

[ 0.680000] mt7621_wdt 10000100.watchdog: Initialized

[ 0.690000] TCP: cubic registered

[ 0.690000] NET: Registered protocol family 17

[ 0.700000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated.

Update your scripts to load br_netfilter if you need this.

[ 0.730000] 8021q: 802.1Q VLAN Support v1.8

[ 0.750000] VFS: Mounted root (squashfs filesystem) readonly on device 31:5.

[ 0.760000] Freeing unused kernel memory: 196K (8031f000 - 80350000)

[ 2.040000] init: Console is alive

[ 2.040000] init: - watchdog -

[ 4.410000] usbcore: registered new interface driver usbfs

[ 4.420000] usbcore: registered new interface driver hub

[ 4.430000] usbcore: registered new device driver usb

[ 4.440000] reg_opt_init

[ 4.460000] exFAT: Version 1.2.9

[ 4.500000] SCSI subsystem initialized

[ 4.510000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver

[ 4.530000] ehci-platform: EHCI generic platform driver

[ 4.710000] U2PHY P0 set SRCTRL calibration value: 6

[ 4.710000] ehci-platform 101c0000.ehci: EHCI Host Controller

[ 4.730000] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus

number 1

[ 4.740000] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000

[ 4.770000] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00

[ 4.780000] hub 1-0:1.0: USB hub found

[ 4.790000] hub 1-0:1.0: 1 port detected

[ 4.800000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver

[ 4.810000] ohci-platform: OHCI generic platform driver

[ 4.820000] ohci-platform 101c1000.ohci: Generic Platform OHCI controller

[ 4.840000] ohci-platform 101c1000.ohci: new USB bus registered, assigned bus

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 45 –

number 2

[ 4.850000] ohci-platform 101c1000.ohci: irq 26, io mem 0x101c1000

[ 4.920000] hub 2-0:1.0: USB hub found

[ 4.930000] hub 2-0:1.0: 1 port detected

[ 4.950000] MTK MSDC device init.

[ 4.990000] mtk-sd: MediaTek MT6575 MSDC Driver

[ 5.000000] sdhci: Secure Digital Host Controller Interface driver

[ 5.010000] sdhci: Copyright(c) Pierre Ossman

[ 5.020000] sdhci-pltfm: SDHCI platform and OF driver helper

[ 5.040000] usbcore: registered new interface driver usb-storage

[ 5.110000] usb 1-1: new high-speed USB device number 2 using ehci-platform

[ 5.120000] init: - preinit -

[ 5.380000] mmc0: new high speed SDHC card at address aaaa

[ 5.400000] mmcblk0: mmc0:aaaa SL32G 29.7 GiB

[ 5.410000] mmcblk0: p1 p2

[ 5.590000] hub 1-1:1.0: USB hub found

[ 5.590000] hub 1-1:1.0: 7 ports detected

[ 5.700000] random: procd urandom read with 10 bits of entropy available

[ 5.970000] rt305x-esw 10110000.esw: link changed 0x00

[ 6.010000] (NULL device *): kill_sig_workq

[ 6.020000] usb 1-1.5: new high-speed USB device number 3 using ehci-platform

Press the [f] key and hit [enter] to enter failsafe mode

Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level

[ 9.370000] mount_root: loading kmods from internal overlay

[ 9.730000] jffs2: notice: (383) jffs2_build_xattr_subsystem: complete building

xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan)

found.

[ 9.760000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab

[ 9.780000] block: extroot: not configured

[ 9.860000] jffs2: notice: (380) jffs2_build_xattr_subsystem: complete building

xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan)

found.

[ 10.160000] block: attempting to load /tmp/jffs_cfg/upper/etc/config/fstab

[ 10.170000] block: extroot: not configured

[ 10.180000] mount_root: switching to jffs2 overlay

[ 10.220000] procd: - early -

[ 10.230000] procd: - watchdog -

[ 11.010000] procd: - ubus -

Command failed: Not found

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 46 –

[ 12.090000] procd: - init -

Please press Enter to activate this console.

[ 13.210000] NET: Registered protocol family 10

[ 13.290000] ip6_tables: (C) 2000-2006 Netfilter Core Team

[ 13.310000] i2c /dev entries driver

[ 13.520000] PandoraBox MT76X8 AP Driver Version-4.1.0.0(Aug 8 2019 08:13:30).

[ 13.580000] i2c-mt7621 10000900.i2c: clock 100 kHz

[ 13.600000] Linux video capture interface: v2.00

[ 13.660000] GobiNet: Quectel_Linux_GobiNet_SR01A02V15

[ 13.670000] GobiNet 1-1.5:1.4 eth1: register 'GobiNet' at usb-101c0000.ehci-1.5,

GobiNet Ethernet Device, 8e:8c:e8:e9:ef:5a

[ 13.720000] creating qcqmi1

[ 13.720000] usbcore: registered new interface driver GobiNet

[ 13.740000] Enable Ralink GDMA Controller Module

[ 13.740000] GDMA IP Version=3

[ 13.790000] *******Enter codec_wm8960_i2c_probe********

[ 13.800000] soc-audio soc-audio: ASoC: machine MTK APSoC I2S should use

snd_soc_register_card()

[ 13.820000] wm8960 0-001a: No platform data supplied

[ 13.830000] ****** wm8960_preinit ******

[ 14.340000] soc-audio soc-audio: wm8960-hifi <-> mt76xx-i2s mapping ok

[ 14.370000] ip_tables: (C) 2000-2006 Netfilter Core Team

[ 14.400000] nf_conntrack version 0.5.0 (1976 buckets, 7904 max)

[ 14.430000] usbcore: registered new interface driver usbserial

[ 14.450000] usbcore: registered new interface driver usbserial_generic

[ 14.460000] usbserial: USB Serial support registered for generic

[ 14.480000] usbcore: registered new interface driver uvcvideo

[ 14.490000] USB Video Class driver (1.1.1)

[ 14.510000] xt_time: kernel timezone is -0000

[ 14.540000] PPP generic driver version 2.4.2

[ 14.550000] NET: Registered protocol family 24

[ 14.560000] usbcore: registered new interface driver option

[ 14.570000] usbserial: USB Serial support registered for GSM modem (1-port)

[ 14.590000] option 1-1.5:1.0: GSM modem (1-port) converter detected

[ 14.600000] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB0

[ 14.620000] option 1-1.5:1.1: GSM modem (1-port) converter detected

[ 14.630000] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB1

[ 14.640000] option 1-1.5:1.2: GSM modem (1-port) converter detected

[ 14.650000] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB2

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 47 –

[ 14.670000] option 1-1.5:1.3: GSM modem (1-port) converter detected

[ 14.680000] usb 1-1.5: GSM modem (1-port) converter now attached to ttyUSB3

ETHMODE

[ 20.800000] device eth0.1 entered promiscuous mode

[ 20.810000] device eth0 entered promiscuous mode

[ 20.860000] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready

[ 20.930000] GobiNet 1-1.5:1.4 eth1: kevent 12 may have been dropped

[ 20.940000] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready

[ 21.010000] br-lan: port 1(eth0.1) entered forwarding state

[ 21.020000] br-lan: port 1(eth0.1) entered forwarding state

[ 21.150000] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready

[ 23.020000] br-lan: port 1(eth0.1) entered forwarding state

[ 25.350000] =====================================================

[ 25.360000] Channel 1 : Busy Time = 54853, Skip Channel = FALSE

[ 25.370000] Channel 2 : Busy Time = 14709, Skip Channel = FALSE

[ 25.380000] Channel 3 : Busy Time = 3389, Skip Channel = FALSE

[ 25.390000] Channel 4 : Busy Time = 1542, Skip Channel = FALSE

[ 25.400000] Channel 5 : Busy Time = 1258, Skip Channel = FALSE

[ 25.420000] Channel 6 : Busy Time = 2664, Skip Channel = FALSE

[ 25.430000] Channel 7 : Busy Time = 79, Skip Channel = FALSE

[ 25.440000] Channel 8 : Busy Time = 3762, Skip Channel = FALSE

[ 25.450000] Channel 9 : Busy Time = 1888, Skip Channel = FALSE

[ 25.460000] Channel 10 : Busy Time = 6099, Skip Channel = FALSE

[ 25.470000] Channel 11 : Busy Time = 687, Skip Channel = FALSE

[ 25.480000] Channel 12 : Busy Time = 465, Skip Channel = TRUE

[ 25.500000] Channel 13 : Busy Time = 66, Skip Channel = TRUE

[ 25.510000] =====================================================

[ 25.520000] Rule 3 Channel Busy time value : Min Channel Busy ==> Select Channel

7

[ 25.530000] Min Channel Busy = 79

[ 25.540000] BW = 40

[ 25.570000] |--------------------------------------------------------|

[ 25.580000] |------------Widora wifi driver--version:1.5-------------|

[ 25.590000] |Copyright 2016-2019 by WIDORA TECH. All rights reserved|

[ 25.610000] | This Driver licensing-only runs on Widora HW! |

[ 25.620000] | Found bug? Please contact [email protected] , thanks! |

[ 25.630000] |--------------------------------------------------------|

[ 26.490000] device ra0 entered promiscuous mode

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 48 –

[ 26.500000] br-lan: port 2(ra0) entered forwarding state

[ 26.510000] br-lan: port 2(ra0) entered forwarding state

[ 27.530000] [EXFAT] trying to mount...

[ 27.870000] [EXFAT] mounted successfully

[ 28.510000] br-lan: port 2(ra0) entered forwarding state

Hiwooya login: root

Password:

BusyBox v1.23.2 (2021-03-14 21:02:53 PDT) built-in shell (ash)

_ _ _

| | | (_)_ _____ ___ _ _ __ _

| |_| | \ \ /\ / / _ \ / _ \| | | |/ _` |

| _ | |\ V V / (_) | (_) | |_| | (_| |

|_| |_|_| \_/\_/ \___/ \___/ \__, |\__,_|

|___/

-----------------------------------------------------

CHAOS CALMER (Chaos Calmer, unknown) Ver:0.1.9-20190812 by HIWOOYA

-----------------------------------------------------

root@Hiwooya:~#

root@Hiwooya:~#

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 49 –

第 5章 串口控制台

本章目标

掌握串口控制台的使用

搞嵌入式,尽量避免使用 PL2303、CH330、CH340 这类极不稳定又兼容性不好的 USB 转串

口芯片,推荐使用 CP210X 和 FT232 这些,一分钱一分货。无涯 WKA-7628A Pro 开发套件系列

板载了 CP210X 这颗芯片,所以我们需要通过一条 Type-C 接口的数据线将电脑的 USB 接口和

WKA-7628A Pro 开发套件的 Type-C USB 接口直连和一根“5V 1A”的电源适配器,如图 5.1

所示。

图 5.1 串口线接法

5.1 Windows

5.1.1 CP210x驱动下载

CP210x 驱动下载地址(https://www.hi-wooya.com/resource-view-34.html)。驱动下

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 50 –

载安装成功以后,在电脑的设备管理器中能看到串口对应的端口号,如图 5.2 所示。

图 5.2 设备管理器

5.1.2 SecureCRT访问串口控制台

SecureCRT 是一款终端仿真程序,支持 SSH(SSH1 和 SSH2)以及 Telnet 和 rlogin 协议。

因此我们可以用 SecureCRT 来打开 Ubuntu 的控制台,也可以用来作为调试串口的超级终端。

我们这里先讲解,如何让 SecureCRT 打开 Ubuntu 的控制台。

用 SecureCRT 打开 Ubuntu 的控制台,其实就是用 SecureCRT 的 serial 协议访问串口控

制台。

(1)如图 5.2 所示,在电脑设备管理器中查看到串口对应的串口号;

(2)下载并安装 SecureCRT 软件。

下载地址:https://www.hi-wooya.com/resource-view-28.html

(3)运行“SecureCRT”并选择端口、波特率、数据位等,一定不要勾选流控,然后点

“连接”,如图 5.3 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 51 –

图 5.3 串口设置

(4)接着就能正常访问串口控制台了,如图 5.4 所示。该固件串口控制台默认的用户名

为:root 和密码为:12345678

图 5.4 访问成功

5.2 Ubuntu

5.2.1 CP210x驱动下载

对于 Ubuntu 系统来说,已经内置了 CP210x 驱动,所以不用单独下载安装驱动了。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 52 –

5.2.2 minicom访问串口控制台

minicom 是用于设置串口控制台的软件。在 Windows 下我们使用的是 SecureCRT 进行调

试目标板,而在 Linux 下的 Ubuntu 发行版中作为超级终端的小软件。

(1)查看串口设备如图 5.5所示。

图 5.5 设备串口号

(2)安装 minicomlinux@ubuntu:~$ sudo apt install minicom

(3)执行 sudo minicom –s进入到软件设置界面如图 5.6所示。

图 5.6 设置界面

(4)选择 Serial port setup后,将 A设置为对应的串口设备,E设置为 57600 8N1,F设

置为 No如图 5.7所示。

图 5.7 minicom 设置

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 53 –

(4)设置完,选择 Save setup as dfl后,再选择 Exit,此时会进入控制台,敲几次回车,

进入输入命令状态,进入控制台后,敲两次 tab 键,可以看到固件支持的命令如图 5.8所示。

图 5.8 固件命令

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 54 –

第 6 章 基础操作

本章目标

掌握让硬件联网、传文件等基本操作

网络是物联网设备的基础,Telnet、SSH 登录更是后期开发必不可少的手段,当然读者

时不时肯定还想往设备里面传点文件什么的。

6.1 让硬件联网

网络是物联网设备的基础,WKA-7628A Pro 开发套件联入互联网非常简单,首先你需要

有一台能正常上网的路由器。

6.1.1 通过网线上网

(1)用网线将 WKA-7628A Pro 开发套件的 WAN 网口与你的路由器 LAN 口相连,会看到

WKA-7628A Pro 开发套件上 WAN 灯亮起;如图 6.1。

(2)控制台里运行命令:ethmode w 命令,稍等 10 秒;

(3)控制台中使用 ifconfig eth0 看 WKA-7628A Pro 开发套件是否获取到 IP 了;

(4)如果此时 eth0 和 br-lan 网段重复,需要修改/etc/config/network 中 LAN 部分的

IP 为其他网段,改完后使用“nr”命令重启网络一下即可。

图 6.1 WAN灯亮起

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 55 –

6.1.2 通过 Wi-Fi模拟的网卡上网

在这里,我们首先要感谢一下友商的 WiFi 驱动软件,不可否认,确实封装得挺好的。不

过我们作为源头工厂,相信能在大家更看重的服务支持和价格上做得更好。当然,我们也有

研发,只是没必要重头去做了。

(1)控制台中运行命令:wifimode apsta ssid key,如果没有密码,那么命令里省略

key 字段即可,ssid 部分是你的 WI-FI 信号,key 部分是密码。

大约 10 秒中,终端打印如图 6.2 所示:

图 6.2 通过 WiFi 上网

(2)控制台中使用 ifconfig apcli0 看 WKA-7628A Pro 开发套件是否获取到 IP 了,如

图 6.3 所示。如果此时 apcli0 和 br-lan 网段重复,需要修改/etc/config/network 中 LAN

部分的 IP 为其他网段,改完后使用“nr”命令重启网络一下即可。

图 6.3 获取 IP检查

(3)测试链接,PING 一下外网试试,如图 6.4 所示。

图 6.4 测试

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 56 –

6.2 Telnet、SSH登录

6.2.1 Telnet登录

用 SecureCRT 的 Telnet 协议登录设备。

(1)我们需要知道设备的 IP 地址,这里我们在串口控制台通过 ifconfig 命令查看设

备的 IP 地址,如图 6.5 所示;

图 6.5 查看设备的 IP

(2)确保电脑连接的是设备的 LAN 或者 WiFi,并且 IP 要和设备 IP 同一个网段;

(3)将开发套件的网口设置为 LAN,如图 6.6 所示;

(4)运行“SecureCRT”并选择 Telnet 协议,填入主机名(即上面查询得到的设备 IP,

192.168.8.1),然后点“连接”,如图 6.7 所示;

图 6.6 设置网

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 57 –

图 6.7 Telnet 设置

(5)运行“SecureCRT”并选择 Telnet 协议连接成功以后,如图 6.8 所示。

图 6.8 连接成功

6.2.2 SSH登录

用 SecureCRT 的 SSH2 协议登录设备。

(1)我们需要知道设备的 IP 地址,这里我们在串口控制台通过 ifconfig 命令查看设

备的 IP 地址,如图 6.9 所示;

图 6.9 查看设备的 IP

(2)确保电脑连接的是设备的 LAN 或者 WiFi,并且 IP 要和设备 IP 同一个网段;

(3)运行“SecureCRT”并选择 SSH2 协议,填入主机名(即上面查询得到的设备 IP,

192.168.8.1)、端口(默认 22 即可)、用户名(设备默认的用户名为 root),然后点“连

接”,如图 6.10 所示;

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 58 –

图 6.10 SSH2 设置

(4)连接成功以后,需要输入密码(设备默认密码为 12345678),如图 6.11、图 6.12、

图 6.13 所示。

图 6.11 保存密匙

图 6.12 输入密码

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 59 –

图 6.13 连接成功

6.2.3 关于 Telnet、SSH登录的问题

如果你登录连接失败,可能是“确保电脑连接的是设备的 LAN 或者 WiFi”这一条没注意。

如果你的设备是使用LAN进行连接的,那么就需要切换为LAN口模式,使用命令“ethmode

l”或者“ethmode lllll”。然后在主机中 Ping 通目标板就可以了登录成功了。

如果你想用 Wifi 网络进行登录,只需要将网口转换为 WAN 模式,使用“ethmode w”指

令就可以了。

6.3 SCP 网络文件传输

有时候,我们需要将电脑上的文件传给设备,又或者把设备的文件传给电脑,总之:我

们可能经常用网络传输文件。

这个事情对于 SCP 来说是很方便的。具体操作如下。

方法一:通过 WinSCP 软件传输

(1)我们需要知道设备的 IP 地址,这里我们在串口控制台通过 ifconfig 命令查看设

备的 IP 地址,如图 6.14 所示;

图 6.14 查看设备的 IP

(2)确保电脑连接的是设备的 LAN 或者 WiFi,并且 IP 要和设备 IP 同一个网段;

(3)下载并安装 WinSCP 软件。

下载地址:https://www.hi-wooya.com/resource-view-35.html

(4)运行 WinSCP,协议选择 SCP,填入主机名(即设备的 IP),用户名(默认 root),

密码 12345678,点击登录,如图 6.15。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 60 –

图 6.15 SCP 登录设置

(5)登录成功,如图 6.16 所示,这个比较简单了,左侧是本机目录,右侧是设备的目

录,想要复制文件拖过去即可。

图 6.16 SCP 登录成功

如果使用 WinSCP 软件过程中连接不上开发板 IP,可以查看 6.2.3 小结同理。

方法二:直接用系统自带的 scp 工具传输

(1)我们需要知道设备的 IP 地址,这里我们通过串口控制台使用 ifconfig 命令查看

设备的 IP 地址,如图 6.14 所示;

(2)上传本地文件到服务器

命令格式: scp /path/filename username@servername:/path,例如将本地文件

README.md 传输到服务器根目录下,如图 6.15 所示;

图 6.15 传输文件到服务

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 61 –

传输成功后再根据上一节的 SSH 登录到服务器,可查看到/根目录下有了 README.md 文件,如

图 6.16 所示。

图 6.16 查看文件传输结果

(3)拷贝服务器端文件到本地

命令格式:scp username@severname:psth/filename .

例如将服务器/根目录下的 README.md 拷贝到本地目录,传输完成后 ls 查看到当前目录

下有了 README.md 文件。如图 6.17。

6.4 备份 WiFi校准数据

为什么要备份无线校准文件?

每一个路由器硬件,无线部分的硬件参数都是不同的,为了让不同的硬件参数都发挥出

统一的性能,就需要一个校准过程,校准后会生成一个校准文件保存在每个板子 FLASH 的

factory 区域,所以每个板子的校准文件都是独一无二的。无涯设备出厂都已校准完毕,以

防用户丢失 ART 数据,请自行导出保存。当你拿到设备后,千万不要慌忙的用编程器刷机。

·备份 ART 数据。每个板子都会有唯一的 ART 数据(无线参数校准数据),这个不通用,

也不能混用。只要搞丢了基本是找不回来的。

·别用常规的 SPI 编程器刷设备。玩路由器的朋友们很多,通常习惯是用 SPI 的编程器

刷固件,这种方法是毁灭性质的。因为 SPI 编程器会把 FLASH 中的 ART 数据抹除,如果没有

做过备份 ART 数据,千万不要用编程器。

备份 ART 数据,步骤如下:

(1)这里需要登录到设备上操作,前几节已经介绍过登录方法。那这里就直接贴命令

了。 首先,无线校准数据占了 FLASH 上一个独立的分区“factory”,我们先看一下究竟是

哪个分区。通过 cat /proc/mtd 命令查看分区;

root@Hiwooya:~# cat /proc/mtd

dev: size erasesize name

mtd0: 00030000 00010000 "u-boot"

mtd1: 00010000 00010000 "u-boot-env"

图 6.17 文件拷贝结果

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 62 –

mtd2: 00010000 00010000 "factory"

mtd3: 00fb0000 00010000 "firmware"

mtd4: 00118dab 00010000 "kernel"

mtd5: 00e97255 00010000 "rootfs"

mtd6: 009e0000 00010000 "rootfs_data"

root@Hiwooya:~#

(2)通过查看分区可以知道,factory 分区其实就是 mtd2;

(3)接着就通过 dd 命令进行 ART 数据备份;

root@Hiwooya:~# dd if=/dev/mtd2 of=/www/art.bin

128+0 records in

128+0 records out

root@Hiwooya:~#

(4)备份出来位于 www 目录的 art.bin 就是我们需要的文件。既然已经知道了把校准数

据暂时放到了/www/art.bin 目录,那么我们可以用上一节的知识讲 art.bin 保存到电脑上

了。

对于 art.bin 文件中参数的解释,可自行阅读 mt7628_eeprom_guideline_v2_00.pdf

文件。

6.5 恢复出厂设置

这个是说设备在我们操作过程中,不小心搞坏了系统里的文件或者配置等等,OpenWrt

有一个好处:你所有的更改,都被记录到了一个差量化的文件系统中,这就是 overlay 的作

用。恢复出厂设置的原理就是将 overlay 分区格式化就好了。好在系统还提供了专用命令。

操作如下:

root@Hiwooya:~# firstboot -y

/dev/mtdblock6 is mounted as /overlay, only erasing files

root@Hiwooya:~# reboot

6.6 安装卸载软件

6.6.1 修改软件源配置文件

软件源配置文件/etc/opkg/distfeeds.conf 包含了 base、package、luci、routing、

telephone、management 等类型软件包的源路径。 如果要更新某个类型的软件包,那么需要

将其前面的#号去掉。默认情况下它们都被注释掉了。package 软件源一般都必须选中,因为

其他软件包可能会依赖于 package 软件源。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 63 –

6.6.2 更新软件源

通过 opkg update 命令更新软件源。有时候不行就检查一下是否是没有联网,点背的话

可能赶上 openwrt.org 网站抽风,等一会儿就好。

root@Hiwooya:~# opkg update

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/base/Pa

ckages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_base.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/base/Pa

ckages.sig.

Signature check passed.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/telepho

ny/Packages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_telephony.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/telepho

ny/Packages.sig.

Signature check passed.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/package

s/Packages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_packages.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/package

s/Packages.sig.

Signature check passed.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/routing

/Packages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_routing.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/routing

/Packages.sig.

Signature check passed.

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 64 –

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/luci/Pa

ckages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_luci.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/luci/Pa

ckages.sig.

Signature check passed.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/managem

ent/Packages.gz.

Updated list of available packages in /var/opkg-lists/chaos_calmer_management.

Downloading

http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7688/packages/managem

ent/Packages.sig.

Signature check passed.

root@Hiwooya:~#

6.6.3 搜索软件

如何搜索想要的软件,比如我们要搜索 python,使用命令:opkg list | grep python。

root@Hiwooya:~# opkg list | grep python

bluez-examples - 5.30-1 - contains many examples apps for bluetooth, requiring python

boost-python - 1_58_0-4 - Boost provides free peer-reviewed portable C++ source

libraries . This package contains the Boost python library.

micropython - 1.4.5-20150827-936e25b164d837fc91e4bafd76580e747b235dff-1 - This

package contains Micro Python, a lean and fast implementation of the Python 3.4

programming language that is optimised to run on a microcontroller (and low power

computers).

micropython-lib - 0.5-20150827-bfbbf85a181d84e2494ea6f15be311734666bf67-1 - This

package contains micropython-lib, a project to develop a non-monolothic standard

library for Micro Python. Note that this is a work in progress and several libraries

may be missing, incomplete or buggy.

openvswitch-python - 2.3.90-58be9c9fd732b5bdd3d4c2e9b8cc2313f570094d - Provides

bindings and libraries for using Python to manipulate/work with Open vSwitch.

python - 2.7.9-6 - This package contains the (almost) full Python install. It's

python-light + all other packages.

python-base - 2.7.9-6 - This package contains only the interpreter and the bare

minimum for the interpreter to start.

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 65 –

python-codecs - 2.7.9-6 - Python 2.7 codecs + unicode support

python-compiler - 2.7.9-6 - Python 2.7 compiler module

python-ctypes - 2.7.9-6 - Python 2.7 ctypes module

python-db - 2.7.9-6 - Python 2.7 db module

python-decimal - 2.7.9-6 - Python 2.7 decimal module

python-distutils - 2.7.9-6 - Python 2.7 distutils

python-dns - 1.12.0-1 - dnspython is a DNS toolkit for Python. It supports almost

all record types. It can be used for queries, zone transfers, and dynamic updates.

It supports TSIG authenticated messages and EDNS0.

python-email - 2.7.9-6 - Python 2.7 email module

python-gdbm - 2.7.9-6 - Python 2.7 gdbm module

python-imglib - 1.1.7-1 - The Python Imaging Library adds image processing

capabilities to your Python interpreter. This library provides extensive file

format support, an efficient internal representation, and fairly powerful image

processing capabilities. The core image library is designed for fast access to data

stored in a few basic pixel formats. It should provide a solid foundation for a general

image processing tool.

python-light - 2.7.9-6 - This package is essentially the python-base package plus

a few of the rarely used (and big) libraries stripped out into separate packages.

python-logging - 2.7.9-6 - Python 2.7 logging module

python-multiprocessing - 2.7.9-6 - Python 2.7 multiprocessing

python-mysql - 1.2.5-1 - MySQLdb is an thread-compatible interface to the popular

MySQL database server that provides the Python database API.

python-ncurses - 2.7.9-6 - Python 2.7 ncurses module

python-openssl - 2.7.9-6 - Python 2.7 SSL module

python-pip - 1.5.6-1 - A tool for installing and managing Python packages.

python-pydoc - 2.7.9-6 - Python 2.7 pydoc module

python-pyserial - 2.7-1 - serial port python bindings

python-setuptools - 7.0-1 - Easily download, build, install, upgrade, and uninstall

Python packages

python-sqlite3 - 2.7.9-6 - Python 2.7 sqlite3 module

python-unittest - 2.7.9-6 - Python 2.7 unittest module

python-xml - 2.7.9-6 - Python 2.7 xml libs

python-yaml - 3.11-1 - YAML parser and emitter for Python

python3 - 3.4.3-2 - This package contains the (almost) full Python install. It's

python3-light + all other packages.

python3-asyncio - 3.4.3-2 - Python 3.4 asyncio module

python3-base - 3.4.3-2 - This package contains only the interpreter and the bare

minimum for the interpreter to start.

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 66 –

python3-bottle - 0.12.8-1 - Bottle is a fast, simple and lightweight WSGI micro

web-framework for Python. It is distributed as a single file module and has no

dependencies other than the Python Standard Library.

python3-codecs - 3.4.3-2 - Python 3.4 codecs + unicode support

python3-ctypes - 3.4.3-2 - Python 3.4 ctypes module

python3-dbm - 3.4.3-2 - Python 3.4 dbm module

python3-decimal - 3.4.3-2 - Python 3.4 decimal module

python3-distutils - 3.4.3-2 - Python 3.4 distutils module

python3-email - 3.4.3-2 - Python 3.4 email module

python3-gdbm - 3.4.3-2 - Python 3.4 gdbm module

python3-light - 3.4.3-2 - This package is essentially the python3-base package plus

a few of the rarely used (and big) libraries stripped out into separate packages.

python3-logging - 3.4.3-2 - Python 3.4 logging module

python3-lzma - 3.4.3-2 - Python 3.4 lzma module

python3-multiprocessing - 3.4.3-2 - Python 3.4 multiprocessing

python3-ncurses - 3.4.3-2 - Python 3.4 ncurses module

python3-openssl - 3.4.3-2 - Python 3.4 SSL module

python3-pydoc - 3.4.3-2 - Python 3.4 pydoc module

python3-sqlite3 - 3.4.3-2 - Python 3.4 sqlite3 module

python3-unittest - 3.4.3-2 - Python 3.4 unittest module

python3-xml - 3.4.3-2 - Python 3.4 xml libs

root@Hiwooya:~#

6.6.4 安装软件

安装软件,比如 python。使用命令:opkg install python。

root@Hiwooya:/etc/opkg# opkg install python

Installing python (2.7.9-6) to root...

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/python_

2.7.9- 6_ramips_24kec.ipk.

Installing python-light (2.7.9-6) to root...

......

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/python-

pydoc_2.7.9-6_ramips_24k.

Installing python-sqlite3 (2.7.9-6) to root...

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 67 –

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/python-

sqlite3_2.7.9-6_ramips_2.

Installing libsqlite3 (3081101-1) to root...

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/libsqli

te3_3081101-1_ramips_24k.

Installing python-unittest (2.7.9-6) to root...

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/python-

unittest_2.7.9-6_ramips_.

Installing python-xml (2.7.9-6) to root...

Downloading

http://dl.widora.io/chaos_calmer/15.05.1/ramips/mt7688/packages/packages/python-

xml_2.7.9- 6_ramips_24kec.

Configuring python-base.

Configuring libffi.

......

Configuring python-unittest.

Configuring python-xml.

Configuring python.

Configuring python3-asyncio.

注意,如果出现依赖失败的提示,就不能用 opkg 安装了,需要在 OpenWrt 源码中将此软

件包重新编译,后续会讲到编译方法。

6.6.5 卸载软件

卸载软件,比如卸载 python,使用命令:opkg remove python。

6.6.6 列出已安装的软件

使用命令 opkg list-installed 会列出所有安装的软件包,这包括固件自带的和后来通

过 opkg install 命令安装的所有软件。如图 6.18 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 68 –

图 6.18 列出安装软件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 69 –

第 7 章 外设编程

本章目标

掌握硬件网口、UART、IIC、SPI 等外设编程

对于嵌入式编程,网口、UART、IIC、SPI 等外设接口的操作是必不可少的,本章将一一

给大家讲解。

7.1 IoT模式/路由模式

7.1.1 IoT模式/路由模式区别

一般处理器的外设资源都会存在一些复用关系,MT7628 也如此,下表介绍了网口 1-4 与

普通外设资源的复用冲突。

值得注意的是,网口 1-4 的复用状态存在联动性,也就是 MT7628 芯片要么是 Port0+若

干外设的模式,要么是 5个网口模式。

接口资源 单网口模式(Port0) 五网口模式(Port0-4)

UART2和 PWM模式 1: PWM0,PWM1,UART2

被网口 2占用模式 2:PWM0,PWM1,PWM2,PWM3

SDIO 可用 被网口 3、4占用

GPIO14-17 可用 被网口 1占用

网口 Port0 可用 可用

网口 Port1-4 不可用 可用

表 1 IoT 模式/路由模式区别

7.1.2 模式切换

单口和 5 口模式通过 ethmode 命令切换。

ethmode命令 网口状态

ethmode l 单网口 0,LAN

ethmode w 单网口 0,WAN

ethmode wllll 五网口,Port0为 WAN,其余为 LAN

ethmode lllll 五网口,均为 LAN

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 70 –

表 2 ethmode 用法

7.2 GPIO

GPIO 的英文全称 baiGeneral-Purpose Input /Output Ports,中文意思是通用 I/O 端口。

在嵌入式系统中,需要控制外部设备或者电路,这些设备的电路只要求有开/关两种状态,所

以,嵌入式为处理器通常提供这种叫做通用输入/输出端口的外设,也叫 GPIO。

一提起 IO,就想到了玩 51 的那个年代,其实那会儿不管是什么单片机,总是从 IO 控制

开始的。LED 闪灯会兴奋半天。

无涯 WKA-76X8A 系列默认支持多个 GPIO,分别是 GPIO0(实为 GPIO11),14,15,16,17,

39,40,41,42 等。可以通过改动引脚复用关系获得更多的 GPIO。

7.2.1 控制台操作 GPIO

终端进入/sys/class/gpio/目录,导出想要控制的 GPIO,比如导出 GPIO42,则输入以下

命令。

root@Hiwooya:/# cd /sys/class/gpio/

root@Hiwooya:/sys/class/gpio# echo 42 > export

然后通过 ls 命令查看一下,然后发现多出了一个 gpio42 文件夹,这是一个连接路径,

我们进去后就会跳转到与该外设相关的属性信息存储路径/sys/devices。该文件夹下通过改

变属性信息来更改驱动的状态。

root@Hiwooya:/sys/class/gpio# ls

export gpio42 gpiochip0 gpiochip32 gpiochip64 unexport

root@Hiwooya:/sys/class/gpio# cd gpio42

root@Hiwooya:/sys/devices/10000000.palmbus/10000600.gpio/gpio/gpio42# ls

active_low device direction edge subsystem uevent value

其中我们可以改变 direction 表示 gpio42 端口的方向,可以写入 in 或者 out;value

表示 gpio42 引脚的电平,0(低电平),1(高电平);edge 是中断的触发方式,该文件可

配置为“none”引脚为中断输入,不是中断引脚,“rising”引脚为中断输入,上升沿触发,

“falling”引脚为中断输入,下降沿触发,“both”引脚为中断输入,边沿触发。

7.2.2 设置 GPIO方向

设置 GPIO 方向,支持 in 和 out,比如将 gpio42,设置为输出,并控制 LED 灯的灭(如图

7.1)与亮(如图 7.2)。

# echo out > gpio42/direction

# echo 1 > value // 输出高电平,LED 灯灭

# echo 0 > value // 输出低电平,LED 灯亮

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 71 –

图 7.1 LED 灯灭 图 7.2 LED 灯亮

7.3 RS232

RS-232 是现在主流的串行通信接口之一。接口的信号电平值较高,易损坏接口电路的芯

片,不支持热拔插。它是一个“半双工”总线, 开发板中 RS-232 使用的是 DB9 接口,该接

口通常使用 TXD 与 RXD 两根信号线。逻辑“1”为 -3— -15V;逻辑“0”为 +3— +15V。

MT7628 单网口模式下可以有 3 个串口,0 为默认控制台始终可用。1 和 2 用作和其他设

备通信 (多网口模式下仅有两个串口,0仍然是默认控制台,1,2 可以和其他设备通讯)。

7.3.1 准备工作

要测试 WKA-7628A Pro 的串口,需要找一个 DB9 转 USB 的数据线与 WKA-7628A Pro 互发

数据,在使用串口之前,我们务必要保证如下事情:

将 WKA-7628A Pro 的串口已经正确初始化参数,例如波特率、开始位、数据位、停

止位、是否有校验等等

插好 RS232 的跳线帽并接上数据线

使用 echo 和 cat 测试收发

7.3.2 连接关系

WKA-7628A Pro 的 ttyS0 仍是控制台,也就是调试串口。

WKA-7628A Pro的ttyS1或S2 与电脑通过DB9转USB串口直接连接的方式如图7.3所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 72 –

7.3.3 设置串口

默认控制台登录 WKA-7628A Pro。使用 stty 工具或者 uarttest 工具或者 Linux 标准 C

编程设置串口参数,需要注意的是未设置参数的串口是不能使用的。以ttyS2为例,先对ttyS2

进行设置:

uarttest /dev/ttyS2 57600 8 0 1 0

设置完 Ctrl + C 退出即可。

7.3.4 串口发数据

(1)测试 1:从 ttyS2 发送数据给电脑

打开监视窗口(多打开一个终端来监视另一端的串口,波特率一定要和您自己设置的统

一,这里是 57600)

在 WKA-7628A Pro 控制台敲如下命令:

root@Hiwooya:~#echo “I am from hiwooya ttyS2” > /dev/ttyS2

运行后,监视窗口可以看到发送过来的数据,如图 7.4 所示。

(2)测试 2: 从电脑发送数据给 ttyS2

让 hiwooya ttyS2 处于接收状态,控制台敲如下命令:

root@Hiwooya:~#cat /dev/ttyS2

图 7.4 数据发送结果显示

图 7.3跳线帽与数据线连接 ttyS1

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 73 –

在电脑串口终端中敲:I am from PC!,敲的过程中,hiwooya 终端会实时显示出来接收

到的字符,如图 7.5 所示。

ttyS1 测试方法同理,我们的 ttyS1 接的是 RS232_1 电路。

7.4 RS485

RS485 是一个优秀的互联总线口,总线上可以挂非常多的设备,很多工业场合使用 modbus

协议进行通讯。但鲜有 SOC 可以直接提供 485,一般都是提供 TTL 口,这就需要 TTL 和 485

转换电路。

做过 485 通讯的人都知道,这是一个“半双工”总线,一般总线中存在一个主机,若干

个从机。在任一时刻,只允许主机和从机之间有单方向的数据流。对于主机来说,TTL 至 485

桥接芯片一般会有一条控制收发状态的引脚,然而该引脚如何连接 NEO 并合理控制就是一个

难题。

WKA-7628APro 是带有两个 RS485 电路的,对应的设备节点为 ttyS1 与 ttyS2,与 RS232

一样的是 RS485 与 RS232 接在同一个 IO 上,因此也要使用跳线帽接将 IO 连到 485 上。

7.4.1 准备工作

要测试 WKA-7628A Pro 的串口,需要找一个 DB9 转 USB 的数据线与 WKA-7628A Pro 互发

数据,在使用串口之前,我们务必要保证如下事情:

将 WKA-7628A Pro 的串口已经正确初始化参数,例如波特率、开始位、数据位、停

止位、是否有校验等等

插好RS232的跳线帽并需要找一个3.3V TTL电平的串口模块和WKA-7628A互发数据

使用 echo 和 cat 测试收发

图 7.5 数据接收结果显示

图 7.6 UART 转 RS485

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 74 –

7.4.2 连接关系

WKA-7628A Pro 的 ttyS1 或 S2 ===交叉连接=== 电脑通过 USB 转出来的 3.3V TTL 串口

(下面简称监视窗口),串口接线方式如图 7.7 所示。

如图 7.6 所示,给出经过验证的 UART 转 485 电路实例。得益于 SP3485EN 芯片,收发自

动切换。省去了收发控制引脚。另外,该芯片工作非常稳定!测试方式与 RS232 一样,请参

考 RS232 章节。

7.5 PWM

WKA-7628A Pro 默认提供了 2 路硬件 PWM,与 GPIO 模拟成的 PWM 相比最大区别就是运行

时不占用 CPU,可输出高频率、高精度 PWM。最多可提供 4 路(另外两路与 UART2 复用 IO,

启用的话需要修改 DTS)。

7.5.1 参数

最高频率 调节精度

40MHz 1-bit

20MHz 2-bit

10MHz 3-bit

5MHz 4-bit

2.5MHz 5-bit

1.25MHz 6-bit

图 7.7 RS485连接方式

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 75 –

625Khz 7-bit

表 3 PWM 参数表

7.5.2 操作

我们可以在控制台中通过指令操作,从而实现控制 PWM,方法如下:

(1)进入/sys/class/pwm/pwmchip0/目录

root@Hiwooya:/# cd /sys/class/pwm/pwmchip0

(2)导出 pwm0 和 pwm1

# echo 0 > export

# echo 1 > export

(3)再看此目录,会发现 pwm0 和 pwm1 目录,拿操作 pwm0 为例。一个 pwm 的属性要有

enable 是否使能该外设;period 设置 pwm 的周期;duty_cycle 设置占空比;polarity 设置

极性。

enable 可以设置为 0(禁能),1(使能);polarity 接受 normal 或 inversed 两个参

数。

# cd pwm0/

# ls

duty_cycle enable period polarity uevent

(4)duty_cycle 是高电平时间,单位 ns;period 是 PWM 波形周期,单位 ns。例如产

生一个 20KHz,50% 占空比波形,那么我们就需要将计算 period 的值为(1/20000)*10^9,由

于占空比是 50%,因此 duty_cycle=period*50%。操作如下:

# echo 1 > enable

# echo 50000 > period

# echo 25000 > duty_cycle

7.5.3 支持 4路 PWM

要支持 4 路 PWM,必须修改 OpenWrt 源码,进入/target/linux/ramips/dts/,打开

HIWOOYA16128.dts (根据你的平台选择修改对应的 dts)。

在 pinctrl 段增加 uart2 方法 ,例如在 36 行开始增加如图 7.8 所示的内容。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 76 –

保存完重新编译即可。

7.6 I2C

WKA-7628A Pro 默认提供一组 I2C 总线,用于与 wm8960 芯片进行通信。

7.6.1 使用 i2ctools工具

openwrt 固件内置了 i2ctools 软件包。所以我们只需要通过该软件直接操作 I2C 即可。

(1)用 i2cdetect -l 命令来列出所有 I2C 总线。

root@Hiwooya:/# i2cdetect -l

i2c-0 i2c 10000900.i2c I2C adapter

(2)用 i2cdetect -F 0 来查看 I2C 0 号总线启用的功能。

root@Hiwooya:/# i2cdetect -F 0

Functionalities implemented by /dev/i2c-0:

I2C yes

SMBus Quick Command yes

SMBus Send Byte yes

SMBus Receive Byte yes

SMBus Write Byte yes

SMBus Read Byte yes

SMBus Write Word yes

SMBus Read Word yes

图 7.8 修改对应 dts 内容

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 77 –

SMBus Process Call yes

SMBus Block Write yes

SMBus Block Read no

SMBus Block Process Call no

SMBus PEC yes

I2C Block Write yes

I2C Block Read yes

(3)查看 I2C 0 号总线上挂载的设备。

root@Hiwooya:/# i2cdetect -y 0

0 1 2 3 4 5 6 7 8 9 a b c d e f

00: -- -- -- -- -- -- -- -- -- -- -- -- --

10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --

20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

30: -- -- -- -- UU -- -- -- -- -- -- -- -- -- -- --

40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

70: -- -- -- -- -- -- -- --

其中标识为 UU 的设备(地址分别为 0x1a 和 0x34)表示内核已经加载了相应的驱动。

(5)用 i2cdump -y 0 0x48 W 命令来读取地址为 0x48 的 I2C 设备(LM75 温度传感器)

所有寄存器中的内容。由于我们并没有接 LM75 温度传感器,所以这里就不截图了。

(6)用 i2cget -y 0 0x48 0 w 命令来读取地址为 0x48 的 I2C 设备 0 号寄存器中的内

容。

(7)用 i2cset -y 0 0x48 0 0x1 命令来设置地址为 0x48 的 I2C 设备 0 号寄存器的容

为 0x1。

7.6.2 文件系统查看 i2c信息

(1)在 sysfs 文件中可查看已被内核驱动的 I2C 设备的名称

root@Hiwooya:/# ls /sys/bus/i2c/devices

0-001a 0-0034 i2c-0

root@Hiwooya:/# cat /sys/bus/i2c/devices/0-001a/name

wm8960

root@Hiwooya:/# cat /sys/bus/i2c/devices/0-0034/name

codec_wm8960

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 78 –

7.7 SPI

SPI 外设串行接口是微处理器与外围 IC 如传感器、ADC、DAC 之间的最广泛的接口之一。

它由四根线组成,分别是 CS,MOSI,MISO,CLK。微处理器上的 SPI 可以通过加片选信号来与更

多的从机进行通信。WKA-7628A Pro 的 spi 接口有两个片选,CS0 用于接 w25q128 的 flash 芯

片,CS1 已经用作 LCD 的 SPI 片选信号。 spi 目前的驱动只支持 half_duplex 传输方式, 并

且每次传输的最大字节数为 36bytes。

7.7.1 SPI设备信息

开发板中设备树已经配置了 spi 驱动,如下图 7.9 所示。

7.7.2 SPI应用 C调用

因此可以在 C 语言环境下进行 spi 配置和传输操作, 先打开 /dev/spidev32766.1 设备

节点, 然后用 ioctl()函数来进行操作. 比如: 用 ioctl(fd,SPI_IOC_WR_MODE, &spi_mode)

对 spi 的工作模式进行配置,用 ioctl(fd,SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed) 对时钟

频率进行设置, 最后用 ioctl(fd, SPI_IOC_MESSAGE(n), xfer)函数来发送和接收数据. 由

于是半双工方式, 因此 xfer[n].rx_buf 和 xfer[n].tx_buf 中只有一个有效, 默认.tx_buf

或.rx_buf 为 NULL 的那个无效. 每次 ioctl 进行 SPI_IOC_MESSAGE 传输操作的发送和接收

字段总长不能超过 36bytes(这个正好是 spi 硬件的最大 buffer)。如下代码是调用方法。

图 7.9 spi设备树

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 79 –

int fd = -1;

int ret = -1;

unsigned char spi_mode = 0; /*设置CPOL=0,CPHA=0*/

unsigned long spi_speed = 40*1000*1000; /*设置40MHz频率*/

unsigned char txbuf[BufSize], rxbuf[BufSize]; /*收发buf*/

unsigned int len = 0;

unsigned int i = 0;

struct spi_ioc_transfer tr ={

.tx_buf = (unsigned long) txbuf,

.rx_buf = (unsigned long) rxbuf,

.len = len,

.delay_usecs = delay,

};

fd = open(“/dev/spidev32766.1” ,O_RDWR );

if(fd < 0){

printf(“fd error\n”);

return -1;

}

ret = ioctl(fd,SPI_IOC_WR_MODE, &spi_mode);

if(ret == -1){

printf(“can’t set spi_mode\n”);

return -1;

}

ret = ioctl(fd,SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed);

if(ret == -1){

printf(“can’t set spi_speed\\n”);

return -2;

}

ret = ioctl(fd, SPI_IOC_MESSAGE(1), &tr);

if(ret < 1){

printf(“can’t send message\n”);

return -3;

}

else{

#if SPI_SEND

/*对于发送而言*/

printf(“spi send message success\n”);

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 80 –

printf(“spi send len is %d\n” , len);

for(i = 0 ; i < len ; i++){

printf(“0x%02x ” , txbuf[i]);

}

printf(“\n”);

#if else SPI_RECV

/*对于接收而言*/

printf(“spi receive message success\n”);

printf(“spi receive len is %d\n” , len);

for(i = 0 ; i < len ; i++){

if(i%8 == 0){

printf(“0x%02x ” , rxbuf[i]);

}

printf(“\n”);

}

}

需要注意的是:如果是 3 次有效发送+1 次有效接收, 那么这些发送和接收的字段总长不

能超过 36bytes, 不然 ioctl 会返回错误。

7.8 USB

USB 是一种新兴的的外部总线标准并逐渐取代其他接口标准的数据通信方式,由它规范

电脑与外部设备的连接和通讯。它有极高的传输速度来满足告诉数据传输的应用环境要求。

USB 总线供电简单,安装配置简单支持热插拔,扩展端口简易,通过集线器可以扩展 127 个

外设。

WKA-7628A Pro 开发板有两组 USB。

7.8.1 USB查看设备

用 lsusb 命令列出所有的 usb 设备信息。如图 8.6 所示,Bus 001 表示第 1 个 usb 主控

制器;Device 002 表示系统给 usb 分配的设备号;ID 05e3:0608 表示 USB 设备的 ID,这个

ID 由芯片制造商设置,可以唯一表示该设备。

图 7.10 查看 usb 设备

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 81 –

7.8.2 USB挂载

当我们插入 USB 的时候,就会显示 USB 相关驱动信息。下例实验是插入 USB 接口的 SD

卡,如图 7.11,7.12 所示。由于插入的是块设备,由于识别 USB 成功,出现 sda 盘符,查

看/dev 下发现,多出了 sda、sda1、sda2 的块设备,如图 7.13 所示。

图 7.13 设备盘符 sda

图 7.11 USB设备插入

图 7.12 USB识别驱动打印信息

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 82 –

7.9 天线

(1)默认使用了板载天线,也是 2.4G 频段设计常用的天线:倒 F 天线,具有体积小、

效果好的优点。

(2)但有些场合需要远距离 Wi-Fi,板载天线就不满足了,我们可以通过板上的 IPEX

端子外接高增益天线。射频领域,两个天线是不能直接并联的,所以要改动一个 OR 电阻完成

切换。原始图片如图 7.14 所示。

(3)BIT 外设天线,BIT3、BIT4、BIT5 均设计了 IPEX 端子,默认走 IPEX 端子,所以直

接连接 IPEX 接口天线就行了。如图 7.15 所示。

7.10 BIT 的单、双天线切换

单天线模式下,比较简单,也就等同于 MT7688AN,1T1R,此模式下使用的是 BIT5

标有 RF0 接口。

双天线模式下,等同于 MT7628,2T2R,同时也会有更高的电流消耗,实测主 CPU 温

度比单天线模式下温度升高 5 摄氏度,此模式下同时使用 BIT5 标有 RF0、RF1 的接

口。

(1)手动改为单天线,命令如图 8.9 所示。

(2)改回双天线,命令如图 8.10 所示。

图 7.14 原始图片 图 7.15 外接天线

图 7.16 改为单天线

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 83 –

7.11 REG 工具

有时在 Linux 开发过程中需要修改寄存器,这里固件中提供了一个 reg 工具,可以查看、

修改寄存器的值。

7.11.1 使用方法

通过使用 reg 命令会提示它的使用方法,如图 7.18。一共有两种用法,一种是读取寄存

器的值,一种是往寄存器的地址中写入数值。

查看寄存器的值,例如读取 0X10000000 的值,根据 MT7688 的 datasheet 得知默认应该

是:0x3637544d,如图 7.19 所示;

读取 0x000000C 的值,根据 MT7688 的 datasheet 得知默认应该是 0x00010102,如图 7.20

所示;

这里假定控制 WLED,但 WLED 默认连接到了内部 WI-FI 组件用于指示 WI-FI 状态,默认的

固件系统起来后WLED是长亮的。如果我修改了GPIO2_MODE寄存器的低两位修改WLED的通路,

可以达到改变此 LED 灯的效果,点亮 WLED 灯如图 8.14 所示,熄灭 WLED 灯如图 8.15 所示。

root@Hiwooya:~#reg r 0x10000064

add:0x10000064 = 0x550

root@Hiwooya:~#reg w 0x10000064 0x550 //点亮 WLED 灯

root@Hiwooya:~#reg w 0x10000064 0x552 //熄灭 WLED 灯

图 7.18 使用方法

图 7.19 查看寄存器的值

图 7.20 0x100000C 的值

图 7.17 改回双天线

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 84 –

图 7.21 WLED 灯点亮 图 7.22 WLED 灯熄灭

7.12 WIFI

物联网无线通讯 wifi 模块分为 ap 与 sta 模式。Wifi 模块为串口或 TTL 电平转 Wifi 通

信的一种传输转换模块,内置无线网络协议 IEEE802.11 协议栈,需要了解的概念是:

1. AP,无线接入点,是一个无线网络的创建者。例如家庭中使用的无线路由器。

2. STA,每一个连接到无线网络中的终端都可以称为一个站点。

7.12.1 操作

(1)aps 命令运行后大概 5 秒,在控制台打印扫描到的结果如图 7.23 所示。

(2)检查是否连接好上级 AP(wifi 连接上网见 6.1.2 章节),如图 7.24 所示,返回“OK”

代表已经连好,并 ping 下外网,检查是否能够上网。

图 7.23 AP 扫描结果

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 85 –

(3)查看多少设备连接 hiwooya 的 WIFI,如图 7.25 所示。

7.13 看门狗

看门狗定时器是一个软件在出错的时候可以复位计算机系统的硬件电路。如图 7.26 的

/dev/watchdog 并不对应真实的物理设备,只是为应用提供了一个与操作硬件 watchdog 的

相同的接口。当看门狗启动以后,计数器开始自动计数,经过一定时间,如果没有被复位,

计数器溢出就会对 CPU 产生一个复位信号使系统重启,俗称 “被狗咬”。系统正常运行时,

在看门狗运行的时间间隔内对看门狗计数器清零,俗称“喂狗”。

7.13.1 设置看门狗

查看看门狗,如图 7.27 所示。

图 7.24 检查是否连接

图 7.25 查看连接设备

图 7.26 看门狗接口

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 86 –

(2)停止系统喂狗操作,如图 8.20 所示。

停止后,默认是 30 秒系统重启。

(3)恢复系统喂狗操作,如图 7.29 所示。

7.14 芯片自身温度

7.14.1 获取信息

wifi 驱动部分提供了这个接口,直接拿 iwpriv ra0 stat 命令就可以获取到,如图 7.30

所示,芯片自身温度 54°。

图 7.27 查看看门狗

图 7.28 停止系统喂狗

图 7.29 恢复系统喂狗

图 7.30 获取接口

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 87 –

7.15 TF 卡

TF 卡又称 microSD,是一种极细小的快闪存储器卡。因为它拥有体积小的有点,随着不

断提升容量,慢慢普及到各种手机、GPS 设备、便携式音乐播放器以及一些快闪存储器盘中

使用。使用之前先接好 SD 相关引脚的跳线帽,如图 7.31。

7.15.1 查看驱动打印信息

开机查看关于 SD 卡相关的开机信息如下:

我们在内核模块中添加了自动选择文件系统,以及 exfat 和 vfat 文件系统,系统

自动进行了默认使用 exfat 系统进行挂载。

下面代码块显示了文件系统的内核加载信息,分别是 exfat 文件系统版本号,sd 卡

驱动及控制器加载,插入 sd 卡的内存块设备信息。

图 7.31 TF 接口跳线帽

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 88 –

[ 4.400000] exFAT: Version 1.2.9

[ 4.960000] MTK MSDC device init.

[ 5.000000] mtk-sd: MediaTek MT6575 MSDC Driver

[ 5.010000] sdhci: Secure Digital Host Controller Interface driver

[ 5.020000] sdhci: Copyright(c) Pierre Ossman

[ 5.030000] sdhci-pltfm: SDHCI platform and OF driver helper

[ 5.360000] mmc0: new high speed SDHC card at address aaaa

[ 5.400000] mmcblk0: mmc0:aaaa SL32G 29.7 GiB

[ 5.410000] mmcblk0: p1 p2将sd卡进行挂载

7.15.2 挂载 TF卡

(1)使用 mount 命令进行挂载

root@Hiwooya:~# mount -t exfat /dev/mmcblk0p1 /mnt/

[ 343.430000] [EXFAT] trying to mount...

[ 343.440000] [EXFAT] mounted successfully

(2)查看 tf 卡的内容

如果 tf 卡中有东西,就会显示,如图 7.32。

7.16 4G 模块

WKA-7628A Pro 开发板支持 4G 模块,当往 PCIE-4G 卡槽里插入 EC20 4G 模块以后,

图 7.32 tf卡查询

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 89 –

LED1 小灯持续闪烁,见图 7.33。

图 7.34 4G设备节点显示

在/dev 下会显示四个 ttyUSBx,如图 7.34。其中 ttyUSB0 代表 DM,ttyUSB1 用于 GPS

导航设备统一的 RTCM 标准协议信息输出,ttyUSB2 用于发送 AT 指令,ttyUSB3 用于 PPP 连

接。在移植 4G 模块过程中,需要移植 GobiNet 驱动,会产生一个网络设备 ethX 和一个 QMI

通道(/dev/qcqmi1 节点)。网络设备用于进行数据传输,QMI 通道用来进行 qmi 信息交互。

图 7.33 插入 4G模块

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 90 –

7.16.1 echo测试 AT指令

root@Hiwooya:/dev# cat /dev/ttyUSB2 &

root@Hiwooya:/dev# echo "AT+CGMM" >/dev/ttyUSB2 #输出模块型号

EC20F #返回模块型号

OK

root@Hiwooya:/dev# echo "AT+CGMI" >/dev/ttyUSB2 #输出厂商

Quectel #返回厂商名称

OK

7.17 SIM 卡

7.17.1 SIM卡上网

WKA-7628A Pro 开发板板载一个 SIM 卡卡槽,SIM 卡配合 EC20 4G 模块,可以连接上网。

确保 4G 模块能够正常使用情况下,开发板插入 SIM 卡,如图 7.35。使用“fournet &”指令

可以上网。如图 7.36,当打印出①“SIM_READY”信息,代表检测到了 SIM 卡,如果打印出②

图 7.36 fournet打印信息

图 7.35 SIM卡

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 91 –

CONNECTED 代表连接成功,就可以上网了。

接下来 ping 一下外网,出现图 7.37 的情况,就连接成功了。

7.18 耳机

开发板中使用 wm8960 芯片,该芯片用于音频转解码的作用。该硬件配合麦克,插

入式耳机,以及一个喇叭进行工作。该芯片的工作需要一个 REFCLK 为 WM8960 提供时钟输入,

一个 I2C 总线进行寄存器的读写(音频解码器的从设备地址 0x1a),一个 I2S 来传输音频

数据。

7.18.1 查询有效声卡

root@Hiwooya:~# aplay -l

**** List of PLAYBACK Hardware Devices ****

card 0: I2S [MTK APSoC I2S], device 0: WMserious PCM wm8960-hifi-0 []

Subdevices: 1/1

Subdevice #0: subdevice #0

7.18.2 播放音乐

使用 aplay 与 madplay 指令进行音乐播放,mp3 格式要用 madpaly 指令播放。耳机

插入,就可以听音乐了。

图 7.37 连接成功

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 92 –

root@Hiwooya:~# aplay -M /mnt/test.wav

Playing raw data '/mnt/Nigel.mp3' : Unsigned 8 bit, Rate 8000 Hz, Mono

[ 567.180000] ****** wm8960_postinit ******

[ 567.200000] playback free_dma_buffer

[ 567.210000] ptri2s_config->mmap_index:0

root@Hiwooya:~# madplay /mnt/Nigel.mp3

MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.

Title: Better Together

Artist: MILK

Album: ▒▒▒▒▒▒ ▒10▒

Track: 3

Genre: Blues

[ 647.260000] ****** wm8960_postinit ******

[ 647.290000] playback free_dma_buffer

[ 647.300000] ptri2s_config->mmap_index:8

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 93 –

第九章 系统进阶

本章目标

了解 FLASH 分区、U 盘和 TF 卡的挂载

掌握 ROOTFS 扩容方法、系统定制化方法、程序自启动 init 脚本的建立等

9.1 FLASH 分区

1、启动 LOG 中看到的分区如图 9.1 所示。

2、各个分区如表 1 所示。

分区 ID 分区位置 容量 作用

u-boot 0x000000000000-0x000000030000 192KB 引导程序,Bootloader

u-boot-env 0x000000030000-0x000000040000 64KB uboot 的 env 存储,配置参数

factory 0x000000040000-0x000000050000 64KB MT7688 校准,MAC 地址等参数

firmware 0x000000050000-0x000001000000 15.68MB 固件分区

kernel 0x000000050000-0x00000017edba 1211KB固件分区内的 Linux 内核分区,大小会根据

内核编译配置不同而有所变化

rootfs 0x00000017edba-0x000001000000 14.5MB固 件 分 区 内 的 文 件 系 统 分 区 , 包 含

rootfs_rom(只读)和 rootfs_data(可写)

rootfs_data 0x000000640000-0x000001000000 9.74MB 固件分区内的可写文件系统分区 jffs2

表 1 各个分区

3、OpenWrt 文件系统挂载。

(1)首先,引导程序启动内核完成后,会加载 rootfs_rom 只读分区部分来完成系统的

初步启动;

图 9.1 启动 LOG 分区情况

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 94 –

(2)rootfs_rom 一般采用的是 squashFS 文件系统,这是一种压缩只读文件系统,加载

完毕后将其挂载到/rom 目录(同时也挂载为/根目录);

(3)首次刷机系统会使用 jffs2 文件系统格式化 rootfs_data 分区,并挂载到/overlay

目录;

(4)系统再将/overlay 目录挂载为/根目录;

(5)最后将一部分内存挂载为/tmp 目录。

9.2 U 盘和 TF 卡

(1)插入 U 盘,默认串口控制台会打印如图 9.2 所示内容。

-

(2)U盘会自动挂载至“/tmp/mounts/”目录下,如图 9.3 所示。

(3)进入 USB-A1 可以看到 U 盘的文件列表如图 9.4 所示。(实际命令要和挂载的文件

夹一致。)

(4)TF 卡挂载同理,也会挂载至“/tmp/mounts/”目录。

9.3 ROOTFS扩容

Overlay 是一种新型的联合文件系统,类似于透过一片玻璃来画画,而 Flash 原始

的文件系统则是玻璃下面的背景。从外表看在玻璃上画画就和画到背景上没什么不

同。如果想要恢复出厂设置,那就把玻璃擦干净即可。

图 9.2 控制台打印

图 9.3 U 盘自动挂载

图 9.4 查看 U盘列表

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 95 –

Openwrt 装软件提示空间不足时,这时要把 rootfs 扩展到 U 盘,可以把软件安装到

U盘上去。

1、扩容前准备:

(1)将 U 盘或 TF 卡插入板卡,为了避免之前的文件系统自动挂载形成干扰,先执行卸

载命令:“umount /tmp/mounts/USB-A1/”或“umount /tmp/mounts/SD-P1”。实际命令要

和挂载的文件夹一致。

(2)格式化,U 盘使用“mkfs.ext4 /dev/sda”,TF 卡使用“mkfs.ext4 /dev/mmcblk0”。

2、生成 fstab。

(1)block detect > /etc/config/fstab。

(2)vi /etc/config/fstab。

(3)修改 option ‘target’‘/overlay’,修改 option ‘enabled’‘1’.

(4)重启。

3、接下来就可以安装很多软件了。

9.4 系统定制化

临时修改:表示在板子上直接修改,一般重启后生效,但板子恢复出厂设置后会失

效。

永久修改:表示用于定制固件,修改源代码完编译后生效,恢复出厂设置后也不会

失效。

(1)临时修改 banner,在/etc/config/system 文件中的 hostname 临时修改机器名字,

如图 9.5 所示。

(2)永久修改在 openwrt-openwrt-master/package/base-files/files/etc/config

/system 文件中的 hostname。

(3)临时修改 wifi 名字,在/etc/config/wireless,如图 9.6 所示,修改 ssid 后的字

符串即可。

(4)永久修改在 openwrt-openwrt-master/package/mtk-wifi/files/lib/wifi

图 9.5 修改机器名字

图 9.6 修改 WIFI 名字

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 96 –

/relink.sh 文件中修改。

9.5 程序自启动 init 脚本

开发板在挂载根文件系统以后,我们就已经可以使用了,但是我们在使用过程中,如果

每次上电以后都需要重复地使用一些命令等进行设置就是一件很麻烦的事情,因此就需要添

加一个程序自启动脚本。

(1)在/etc/init.d/目录下建立自启动脚本 coolpy,如图 9.7 所示。

(2)给 init 脚本赋予权限如图 9.8 所示。

(3)执行命令/etc/init.d/coolpy enable 后查看/etc/rc.d 目录,会发现已自动生成

链接文件 S85coolpy,如图 9.9 所示,系统重启后,/etc/rc.d 目录下的脚本将会根据编号

Sxx 的顺序依次启动。

(4)有时候我们希望系统能监控自启动的程序,当程序意外退出时系统会尝试重启进程,

这时我们可以使用基于 procd 的自启动 init 脚本,基于 procd 的自启动 init 脚本如图 9.10

所示。其中 procd_set_param respawn 告诉系统程序在意外退出后尝试重启。要注意的是所

运行的程序不能为守护进程。

图 9.7 coolpy 脚本

图 9.8 赋予权限

图 9.9 生成链接文件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 97 –

9.6 应用 NTP网络时间同步服务

开发板的时间使用 date 命令查看可以与实际时间不一样,因此需要进行时间同步。NTP

服务需要提供符合国际标准的时间 UTC,而该时间的来源我们通过 Inetnet 来获取比较方便。

在 busybox 中提供的 ntpd 命令来调用一次网络时间协议,也可以配置 system 的 UCI 配置文

件,使 nptd 作为 NTP 的客户机守护进程使用,在 system 中的 ntp 部分中设置 UCI 选项

enable_server 来启用服务时间。NTP(网络时间协议)用于通过互联网或本地网络同步计算

机时钟,或通过跟踪解释 GPS、DCF-77、NIST 或类似时间信号的精确硬件接收器来保持计算

机时钟的准确性。

(1)NTP(Network Time Protocol,网络时间协议)是通过网络来同步时间段的一种协

议,网络时间由 NTP 服务器来提供。通过修改配置文件/etc/config/system 来设置本机所在

时区,并指定 NTP 服务器。可以参考如下图 9.11 所示设置。

各选项说明:

timezone 本机所在时区

list server NTP 服务器列表,可以增删

enabled 是否启用网络时间同步,1—启用;0—停止。

enable_server 0—本机仅作为授时客户端;1—本机设置为 NTP 中继服务器。

(2)如果 ntpd 未启动,依次执行下面的命令来启动,如图 9.12 所示。

(3)如果你需要立即启动同步时间,那么直接执行 ntpd 命令,比如:

ntpd -n -d -q -p 1.cn.pool.ntp.org

连接 NTP 服务器和同步时间可能需要等待一些时间,直到出现“setting time to …”,

此时时间同步完成。如图 9.12 连接 ntp 服务器所示。

图 9.10 基于 procd 的脚本

图 9.11

图 9.12 启动 ntpd

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 98 –

最后执行 date 命令查看当前时间。前提是要连接到互联网的状态下才可以进行。

9.7 UCI系统

(1)UCI 是(Unified Configuration Interface)的缩写,即统一配置接口。UCI 是

Openwrt 提供的一套软件包参数配置管理系统,其目的是让系统和软件包的配置更加简单,

并且易于集中管理,主要配置用户界面设置,这些设置通常是嵌入式设备和路由器的 web 节

目中的设置,例如包括网络接口设置,无线设置,日志功能和远程访问配置等,而且一些第

三方程序也与 UCI 系统兼容。UCI 的配置文件全部放置在/etc/config 目录下,其中 hiwooya

最基本和常用的一些配置文件如图 9.13 所示。

/etc/config/wireless 无线配置

/etc/config/network 网络配置

/etc/config/firewall 防火墙配置

/etc/config/dropbear SSH 配置

/etc/config/system 网络时间同步配置等

/etc/config/fstab (块设备)文件系统和交换分区的挂载配置

/etc/config/dhcp DHCP 和 DNS 配置

/etc/config/uhttpd Web 服务器配置

/etc/config/mountd USB 存储设备自动挂载配置

(2)更改 UCI 配置文件时,都需要通过 init.d 程序调用重新启动,以便将更新配置。

直接重启可执行文件而不调用 init.d 是不会更新 UCI 的。比如,你更新好 network 配置文件

以后,需要重启/etc/init.d/network 才会更新 UCI 程序。

root@Hiwooya:/# /etc/init.d/network restart

图 9.13 UCI 配置文件

图 9.13 连接 ntp 服务器

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 99 –

9.8 Procd系统进程管理

procd 是非常重要的系统守护进程,它几乎贯穿了 openwrt 系统的整个运行生命周期,

系统正常运行时它的 pid 是 1,通常它被用于分析在用户空间中程序启动的执行顺序。

procd 被设计用来初始化系统、管理进程、处理热插拔事件和 watchdog 、参与 debug 信息

管理、处理内核与用户的部分交互等。 procd 通过 ubus 与其他进程的交互来触发、验证和

管理上述各项事务。

procd 主要功能有:

(1)初始化系统, procd 在系统初始化时会调用系统/lib/preinit 脚本,读取/etc/

inittab 文件,按照顺序执行/etc/rc.d 录下的脚本。

(2)对进程和配置文件的监控和管理,使用ps命令可以查看进程运行的状态,如图9.14

所示。在/etc/init.d/文件夹内带有 USE_PROCD=1 标志的脚本就是应用了 procd 管理。

procd 可以监控指定进程的运行状态。

图 9.14 进程监控

设置 procd_set_param espawn:进程意外退出,procd 会重新启动该进程。

设置 procd_add_reload_trigger “cui_conf”:配置文件如果改变,procd 可以重新读取配

置,并重启进程。

(3)处理热插拔事件,procd 收到内核的 uevent 后会根据/etc/hotplug.json 文件的描

述来处理热插拔事件,它会根据设定的监控变量名来触发 hotplug.d 目录下的相应脚本。可

以使用 export DBGLVL=10; procd –h /etc/hotplug.json 命令让 procd 输出热插拔事件的

具体debug信息,然后用dmesg可以查看。在/etc/hotplug.d/iface目录下编辑文件50-play,

内容如图 9.15 所示。(注意:符号‘[’、‘]’和‘=’两侧均有空格。“$INTERFACE”=lan

或 wan 根据你实际的网络接口设定。)

图 9.15 处理热插拔事件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 100 –

9.9 Ubus 进程间通信

ubus 是 openwrt 用来实现进程间通信的一种消息总线机制,其数据格式类似 json。守

护进程 dbusd 以 server/client 的方式统一管理进程间的通信,进程可以通过 ubus 向其他

进程发送数据、调用服务,或者向 dbus 订阅特定消息。

(1)ubus 中的每个对象都用路径(object path)的方式来表达,命令 ubus list 可以

列出所有注册对象,如图 9.15 所示。

(2)加上-v 选项可以列出指定对象可调用的具体方法如图 9.16 所示。

图 9.15 注册对象

图 9.16 对象调用

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 101 –

第十章 网络进阶

本章目标

了解网络模式以及网络的配置

在进行开发的过程中,有时需要对网络配置文件进行修改,本章将对网络配置文件作详

细讲解。

10.1 WAN LAN NAT

(1)名词解释。

WAN:连接互联网接口

LAN:连接局域网接口

br-lan:虚拟设备,LAN 口桥接

eth0:真实设备,CPU 内部连接交换机芯片的接口,在芯片内

eth0.1:虚拟设备,由 VLAN 划分的有线 LAN 口,VLAN 编号 1

eth0.2:虚拟设备,由 VLAN 划分的有线 WAN 口,VLAN 编号 2

Io:虚拟设备,回环设备

Ra0:真实设备,启动 WIFI 后的 AP

ap-client:真实设备,启动 WIFI 后的 Client

pppoe:虚拟设备,是 PPPOE 拨号上网成功后产生的

10.2 网络模式

(1)查看网络模式命令 ethmode。

ethmode 命令 网口状态

ethmode l 单网口 0,LAN

ethmode w 单网口 0,WAN

ethmode wllll 五网口,Port0 为 WAN,其余为 LAN

ethmode lllll 五网口,均为 LAN

(2)设置 WIFI 模式命令 wifimode。

wifimode 命令 状态

wifimode ap 仅 AP 热点,AP 为 LAN

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 102 –

wifimode sta 仅 STA(apcli0),STA 为 WAN

wifimode apsta 以上两者共存,AP 为 LAN,STA 为 WAN

10.3 WIRELESS 和 NETWORK 配置

1、无线配置文件/etc/config/wireless

(1)无线配置文件/etc/config/wireless,wireless 用来配置 wifi 无线设备和接口,

典型的 wireless 配置文件如图 10.1 所示。

(2)WIFI 设备配置说明。

country 应用的国家

hwmode 无线协议,可选 11a,11b,11g,11an,11bgn 等,对应 IEEE 802.11 标准

htmode 有效宽带,可选 HT20 和 HT40,40MHz 带宽可应用于 802.11n 标准

channel 信道,可选 1~14

disable 是否关闭,1(关闭)或 0(开启)

(3)WIFI 接口配置说明。

device 关联的 wifi 设备名称

mode wifi 工作模式,可选 ap 或 sta,ap—wifi 热点模式,允许终端无线接入;sta—

终端模式。

network 网络设备模型,对应/etc/config/network 中的接口段,通常为 lan 或 wan。

ssid wifi 无线网络名称(ap 模式为本机热点名称,sta 模式时为上级接入点的名称)

encrypyion 无线加密方式,可选 none,psk,psk2 和 psk-mixed。none 用于开放网络

key 秘钥,至少 8 个字符长度。Encryption 为 none 时无效。

hidden 是否隐藏 wifi 无线网络名称,1(隐藏)或 0(显示)

2、网络配置文件/etc/config/network

(1)网络配置文件在目录/etc/config/network 文件中,network 文件用来配置网络接

口,典型的 network 配置文件如图 10.2 所示。

图 10.1 wireless 配置文件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 103 –

(2)interface 网络接口配置,interface 类型用于声明逻辑网络服务的各种信息,

interface 段包括 loopback、lan 和 wan 接口,其主要选项有:

ifname 接口名称

proto 接口协议,可选 static(静态的 ip),dhcp(动态的 ip),ppp,pppoe 等。

type 接口类型,如果设置为“bridge”,将建立一个 ifname 所述接口的网桥。

macaddr 接口的 MAC 地址

(3)对于‘static’协议另有以下选项:

ipaddr ip 地址

netmask 子网掩码

gateway 默认网关

bcast 广播地址(默认自动生成)

ip6addr IPv6 地址

ip6gw IPv6 网关

dns DNS 服务器(可以多个)

ip6assign IPv6 网络前缀位

(4)对 switch 段的配置,switch 负责虚拟网络 VLAN 的划分,一般来说,虚拟交换设

备 switch 的 0、1、2、3 端口是路由器 LAN 口,端口 4 是路由器 WAN 口,端口 5 表示 CPU,

switch 段主要选项有:

name switch 设备名称

reset 是否重置

enable_vlan 是否启用虚拟网络 VLAN,1—启用,0—不启用

(5)当 enable_vlan 设置为“1”时需要另配置 switch_vlan 段,常用选项有:

图 10.2 network 配置文件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 104 –

device 关联的网络设备名称

vlan 对应虚拟网络号

ports 对应 switch 端口

(6)globals 段配置,globals 段的 ula_prefix 选项设置了唯一的本地 IPv6 单播地址

(ULA,Unique Local IPv6 Unicast Address)的网络前缀号。

3、配置修改完成后,执行/etc/init.d/network restart 使配置生效。

10.4 防火墙 FIREWALL 配置

通过修改文件/etc/config/firewall 可以调整防火墙策略和规则。Firewall 配置文件主

要含有以下几个段(config section)。

(1)default 段,默认基本配置具有选项,这里 input 是指接收的数据包的目的 IP 地

址属于当前域的情况;output 指发送的数据包的源 IP 地址属于当前域的情况;forward 是指

数据包通过当前域进行转发的情况。

syn_flood 是否启用防洪水攻击。可选:0—关闭,1—启用。

input 输入策略 可选:ACCEPT—接受,REJECT—拒绝。

output 输出策略 可选:ACCEPT—接受,REJECT—拒绝。

Forward 转发策略 可选:ACCEPT—接受,REJECT—拒绝。

Disable_ipv6 是否禁用 IPv6 防火墙策略 可选:1—禁用,0—启用

(2)zone 段,域配置,域(zone)是一组网络接口,域可作为 IP 转发的源地或目的地

来进行相应配置。这里主要是对 wan 域和 lan 域的策略进行配置,选项有:

name 域名称

network (列表)被绑定到此域的网络接口,比如 lan,wan,wan6

input 输入策略 可选:ACCEPT—接受,REJECT—拒绝。

output 输出策略 可选:ACCEPT—接受,REJECT—拒绝。

forward 转发策略 可选:ACCEPT—接受,REJECT—拒绝。

masq 是否设置传输伪装 可选:1—是,0—否。如果是 wan 口,必须设置为 1。

mtu_fix 是否设置 MTU 的 MSS 钳制 可选:1—是,0—否。如果是 wan 口,设置为 1。

(3)forwarding 段,转发配置,选项有:

src 转发来源域,一般为 lan 域

dest 转发目的域,一般为 wan 域

(4)rule 段,规则配置,Rule 段可以对特定的端口或主机设置基本的“接受/拒绝”规

则,其主要选项有:

src 数据包源地址所属域(zone)

src_ip 数据包源 IP 地址

src_port 源地址端口号

dest 数据包目的地所属域(zone)

dest_ip 数据包目的地 IP 地址

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 105 –

dest_port 目的地端口号

proto 数据包的协议类型

target 设置防火规则,可选:ACCEPT,REJECT,DROP,MARK,NOTRACKdest 转发目的域,

一般为 wan 域

(5)redirect 段,端口转发配置,如果从外域来访的数据包符合转发规则,那么数据

包将会被转发到目的域中指定的地址和端口。主要选项有:

src 数据包源地址所属域(zone)

src_ip 数据包源 IP 地址

src_mac 数据包源 MAC 地址

src_port 数据包源端口

proto 数据包的协议类型

dest 数据包目的地址所属域(zone)

dest_ip 数据包目的 IP 地址

dest_port 数据包目的端口

dest_mac 数据包目的 MAC 地址

(6)最后执行命令/etc/init.d/firewall restart 使修改后的配置生效。

10.5 检测网线插拔

(1)检测网口插拔命令,有网线插入如图 10.3 所示,拔掉网线如图 10.4 所示。

图 10.3 有网线插入

图 10.4 拔掉网线

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 106 –

第十一章 更多玩法

本章目标

掌握外设的连接与使用方法

掌握音频文件的播放、语音合成等操作

本章主要通过一些例子对外设的连接与使用以及对音频文件的操作等作讲解。

11.1 USB摄像头

注意 1:此操作说明使用的是 30W 像素的 USB 免驱摄像头,理论兼容所有 USB 免驱

摄像头。

注意 2:摄像头尽可能选用支持 MJPG 格式的,如果仅仅支持 YUV 会很浪费 CPU。

(1) 连接 uvc 摄像头,查看 hiwooya 是否认出摄像头。

root@Hiwooya:/#ls /dev/video*

/dev/video0

(2)设置mjpg-streamer,进入/etc/config/目录,该文件内容下图11.1所示。将enabled

改为‘1’,分辨率改为摄像头支持的分辨率,比如‘640x480’帧数改为‘30’,改完后按

‘ESC’键后输入‘:wq’保存退出。

root@Hiwooya:/#cd /etc/config/

root@Hiwooya:/#vi mjpg-streamer

(3)重启 mjpg 服务:

root@Hiwooya:/#/etc/init.d/mjpg-streamer restart

(4)网络查看:电脑网络连接 hiwooya 设备,可以有线也可以无线。访问 hiwooya 地址:

192.168.8.1:8080(如果不知道地址,请使用 ifconfig br-lan 命令查看)。

图 11.1 设置 mjpg-streamer

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 107 –

如果要求输入用户名和密码,就按照设置文件的输入即可。获取到的视频截图如图 11.2

所示(建议使用谷歌浏览器)。

获取视频:http://192.168.8.1:8080/?action=stream

获取单帧:http://192.168.8.1:8080/?action=snapshot

如果不显示,可能你买到的是不支持 mjpg 的摄像头,那就把配置文件中的 yuv 一项值从

0改为 1,再重启 mjpg 推流服务即可。

11.2 motion动态画面监控

motion 是一款开源软件,通过实时读取和分析摄像头的视频数据,实现动态画面的抓拍

和录像等功能。Motion 一旦检测到当前监控画面的像素较前一画面出现了一定量的变化它就

会自动启动抓拍或录像来保存画面,并可激活设置的外部脚本;motion 同时可以对画面进行

简单处理,比如对动态区域进行加框处理,在画面上附加时间和文字标识等;当然,motion

也可以当做普通的网络监控软件来使用,和 mjpeg-streamer 相似,可实现简单的流媒体服务

功能,在抓拍同时可通过 http 来观看实时监控画面。Motion 甚至可以通过 pwm 来控制马达

实现对动态目标的追踪拍摄。

注意:motion 与 mjpg 服务同时运行会有冲突。

1、安装和配置

(1)安装

图 11.2 获取视频

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 108 –

root@Hiwooya:~#opkg update

root@Hiwooya:~#opkg install motion

root@Hiwooya:~# motion –c /etc/motion.conf #启动 motion

此时打开浏览器访问localhost:8081看到如下图11.3所示的灰色图像表明motion已经

成功安装。(建议使用谷歌浏览器)

(2)编辑配置文件:vim /etc/motion.conf

关键的几点配置:

daemon on

width 640

height 480

framerate 100

stream_localhost off

(3)启动 motion

root@Hiwooya:~#motion –c /etc/motion.conf

再访问 localhost:8081 即可看到摄像头拍摄的画面。

2、配置文件参数项

/etc/motion.conf 配置文件中的其他可调整参数项可参考如下:

(1)Daemon 后台模式 Daemon 运行模式开/关,pid-file 路径。

(2)Basic Setup Mode 基本配置模式:是否运行在配置模式,日志文件,日志级别,

日志类别过滤。

(3)摄像设备选项

图 11.3 访问 localhost:8081

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 109 –

视频设备,V4L2 文件格式选择,视频输入(video/TV 卡或 USB 摄像头),图像旋转,图像

大小,最大幀率,最小抓图间隔,网络摄像头的 URL 和用户名密码(user:password),网络连

接 KEEP-ALIVE 设置,netcam 网络服务器设置,netcam-tolerant-check, RTSP 应用 TCP 设置,

自动亮度和亮度调节,对比度调节,饱和度调节,色彩度调节。

(4)Round Robin 轮询设置:每轮帧数每轮跳帧数,roundrobin 噪音过滤。

(5)运动检测设置

门限像素值,自动门限下调,噪音等级,自动噪音门限,Despeckle 降噪滤镜设置,预

设检测分区,PGM 灵敏度 Mask 文件,SMART_ MASK 速度调整,亮度变化敏感度,motion 判定

连续幀数,motion 前摄录幀数,motion 后摄录幀数,motion 事件间隔录像文件最长时间,连续

存图模式。

(6)图像输出:图像输出模式,动态像素输出模式,JPEG 压缩质量,图像格式(jpeg,

ppm)。

(7)外部视频编码器设置。

(8)快照(Snapshots)间隔时间设置。

(9)图片附加文字设置:运动目标加框,加框样式,右下侧文字,左下侧文字,变化像

素值(右上侧),事件变化标识,字体双倍大小,JPEG EXIF 描述。

(10)影像目录和文件名:图片和录像保存路径(base),快照(snapshots)相对 base 的保

存路径,激活图片相对 base 的保存路径。

(11)网络选项 ipv6 enable。

(12)直播流媒体服务器:端口,jpeg 质量,流播放开/关,最大幀率,是否仅连接本地

主机,图像传送数量限制,认证方式,用户名和密码设置。

(13)HTTP 基本控制:网络控制端口号,本机网络控制开/关,html/纯文本方式,用户

名和密码设置。

(14)摄像头追踪:追踪模式,自动追踪开/关,串口号,X 轴马达编号,X 轴马达反转

开/关,y 轴马达编号,y轴马达反转开/关,X 轴最大值,X 轴最小值,y轴最大值,y 轴最小

值,X 轴中值,y 轴中值,ID of an iomojo camera X 轴步进角,y 轴步进角,步进马达速度

设置,最大步进数。

(15)外部命令,警告和日志设置:声音报警开/关,事件开始-激活命令,事件结束-

激活命令,图片保存-激活命令,运动幀-激活命令,运动区域-激活命令,摄像头断开-激活

命令。

(16)影像环回设备:图片环回设备,动画环回设备。

(17) motion 线程配置文件。

11.3 基本音频玩法

(1)录音:目前使用 alsa 提供的接口,录音一般为 WAV。

(2)条件:准备一条带 MIC 的耳机插入耳机座,运行如下命令后把声音录到内存中。

root@Hiwooya:/#arecord –f cd /tmp/a.wav

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 110 –

执行后将持续录音,停止请按“ctrl+c”组合键。

播放:如下命令可回放刚才的录音。

root@Hiwooya:/#aplay /tmp/a.wav

(3)听音乐:一般的音乐文件都是 wav 和 mp3 格式,wav 使用如上的 aplay 命令,而 mp3

则需要使用 madplay 命令,例如:

root@Hiwooya:/#madplay /tmp/xxx.mp3

(4)alsamixer 音频调节工具:alsa 提供了字符画的音频调节工具,前提是需要串口终

端支持,例如 putty 和 minicom 就可以很好的支持字符画。进入后可以使用上下左右等进行

选择和调整。

root@Hiwooya:/#alsamixer

(5)amixer 命令:使用 amixer 命令同样可以实现对 alsa 进行音频调节。

设定 Headphone 输出音量:

root@Hiwooya:/#amixer set Headphone 85%

开启 3D 音效到 95%:

root@Hiwooya:/#amixer set 3D on

root@Hiwooya:/#amixer set 3D 95%

11.4 MPD 音乐播放器

MPD(Music Player Daemon)是一款客户端/服务端结构的音乐播放器,MPD 作为服务端

以守护进程形式运行于后台,前台客户端用 mpc 命令进行播放的控制。用它可以来播放 mp3

和 mms 文件,以 hiwooya 设备为例:

1、分别安装 mpd 和 mpc

root@Hiwooya:/#opkg update

root@Hiwooya:/#opkg install mpd-full

root@Hiwooya:/#opkg install mpc

如果你需要播放 mms 节目,那么需要安装 libffmpeg-full。

MT7688 没有 fpu 单元,用 mpc 播放 mms 节目会有点卡,特别是播放高码率的节目。

2、修改/etc/mpd.conf 文件

将原来的/etc/mpd.conf 修改成如下图 11.4 所示内容,其中 music_directory 是你存放

原始 mp3 文件的目录,请按照自己的情况设定各目录。.mpd 文件夹如果无法自动生成的话请

用手工创建。注意文件夹的权限设置。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 111 –

3、添加歌曲到播放列表

首先运行 mpd 服务端:

root@Hiwooya:/#/etc/init.d/mpd start

默认情况下 mpd 会开机自启动。查看 mpc 帮助:

root@Hiwooya:/#mpc help

每次先更新一下 mpd 的数据库:

root@Hiwooya:/#mpc update

列出 music_directory 中的所有歌曲:

root@Hiwooya:/#mpc listall

添加 music_directory 中的指定歌曲到播放列表:

root@Hiwooya:/#mpc add xxx.mp3

添加 music_directory 中的所有歌曲到播放列表:

root@Hiwooya:/#mpc listall | mpc add

打印当前播放列表:

root@Hiwooya:/#mpc playlist

删除播放列表中的第 3 首歌曲:

root@Hiwooya:/#mpc del 3

清空播放列表:

root@Hiwooya:/#mpc clear

添加 mms 播放地址:

root@Hiwooya:/#mpc add mms://111.75.206.136/yinyue (例子)

4、播放歌曲

按照播放列表进行播放:

root@Hiwooya:/#mpc play

暂停:

root@Hiwooya:/#mpc pause

停止:

root@Hiwooya:/#mpc stop

图 11.4 修改 mpd.conf 文件

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 112 –

播放下一首:

root@Hiwooya:/#mpc next

播放前一首:

root@Hiwooya:/#mpc prev

快进到歌曲的 60%处:

root@Hiwooya:/#mpc seek 60%

单曲模式:

root@Hiwooya:/#mpc single on (repeat off 时播放完后停止,repeat on 时循环播放)

启用重复播放:

root@Hiwooya:/#mpc repeat on

启用随机播放:

root@Hiwooya:/#mpc random on

播放列表中第 5首歌曲:

root@Hiwooya:/#mpc play 5

显示当前播放状态:

root@Hiwooya:/#mpc 或 root@Hiwooya:/#mpc status

播放 mms 的时候加载时间会稍长,这和网络通畅程度有关。

5、控制音量

请预先用 alsamxier 命令对 Headphone 和 Speaker 输出的最大音量进行设定。将音量调

节到 90%:

root@Hiwooya:/#mpc volume 90

6、其他

(1)mpd 会自动记住当前播放状态,因此重新启动系统后它会继续播放。

(2)从 Ubuntu scp 传 mp3 文件到 hiwooya 设备可以防止歌曲名出现乱码。

(3)mpc 也可以播放 mp4 等视频文件里的音频。

11.5 eSpeak语音合成

eSpeak 是一款开源的语音合成软件,可以将英文和中文转化成语音输出。用它来播放指

令和短语还是很有用的。

1、安装

root@Hiwooya:/#opkg update

root@Hiwooya:/#opkg install espeak

2、英文合成

root@Hiwooya:/#espeak --stdout “Hello, I am hiwooya!” | aplay

3、中文合成

root@Hiwooya:/#espeak --stdout -v zh “大家好,我是无涯!” | aplay

4、文本转化成语音输出

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 113 –

可以将整个文本转化成语音输出:

root@Hiwooya:/#espeak --stdout -f news.txt | aplay

5、语速

通过-s 选项来调整语速,默认(-s 175)每分钟 175 个词语:

root@Hiwooya:/#espeak --stdout -s 125 “hello” | aplay

6、口音

通过-v 选项来选择不同的口音,espeak-voice 查看所有口音:

root@Hiwooya:/#espeak --stdout -v en-wi “Country road,takes me home” | aplay

7、其他

(1)espeak 使用 protaudio 来转换成语音,需要将其结果用-stdout 输出,并通过无名

管道传给 aplay 播放,直接播放会 crash alsa!

(2)eSpeak 目前已经有演进版本 eSpeak-NG。

11.6 AIRPLAY 和 DLNA

Airplay 适用于 iphone、ipad、iturns 客户端远程推送音乐。使用前,先保证 hiwooya

以 repeater 方式(此方式与手机、iPad 是平行的)连接路由器让 hiwooya 连接互联网,手

机、iPad 等和 hiwooya 在同一个路由器下边,或者手机、iPad 直连 hiwooya 的 WI-FI。

1、在控制台上编辑/etc/config/shairport 文件,将第二行的 disabled 修改为 0。如图

11.5 所示。

2、重启 shairport 服务:

root@Hiwooya:/#/etc/init.d/shairport restart

3、手机、iPad 此时就可以发现 AirPort 设备了。

DLNA 技术为数字媒体和内容服务提供了互联互通的路径,通过 DLNA 可以实现在同一网

络内对不同设备上的媒体文件进行搜索、浏览、上下传、播放等功能。我们可以把 hiwooya

设备设置成 DLNA 服务器,这样它就可以向其他安装有 DLNA 软件的设备推送媒体文件。

1、安装 minidlna,(默认)设置随系统启动/etc/init.d/minidlna enable。

2、配置/etc/config/minidlna,典型参考如下图 11.6 所示:

图 11.5 编辑 shairport

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 114 –

这 里 要 注 意 的 是 option interface 项 对 应 dlna 的 网 络 接 口 , 同 时 需 调 整

/etc/config/firewall 的配置,以开放此接口对应的端口。最简单的方法就是将相应网络域

的 input,output 都设置为 ACCEPT。

list_media_dir 是你存放媒体文件的目录。

3、在电脑或手机的浏览器地址栏中输入“IP 地址:8200”将显示如下图 11.7 所示内容:

如果无法显示,就很有可能是配置的问题。

4、其他

(1)iOS 上客户端软件有 mconnectFree。

(2)miniDLNA 不支持 rmvb 视频文件。

(3)注意客户端的播放软件是否支持 miniDLNA 共享的媒体文件。

(4)minidlna 和 vsftpd 同时运行可能会有冲突。

11.7 AIRKISS 快速配网

1、微信配网说明

图 11.6 配置 minidlna

图 11.7 浏览器访问 DLNA 服务器

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 115 –

(1)扫码:

目前该模式的触发是 aac 命令,暂未关联外部按钮。配网手机支持 iOS 和安卓,安装了

最新版本微信,再就是连接家庭路由器的 2.4G WI-FI。Hiwooya 进入配网模式:

root@Hiwooya:/#aac

手机打开微信,扫一扫如下二维码:

扫码后点击配置设备上网,输入当前网络的密码,点击连接后控制台会出现如下图 11.8

所示的打印(ssid 部分是你 wifi 信号的名称,key 部分是密码),并开始联网,稍等片刻,

hiwooya 会以 client 模式连上网络。

(2)检查联网:

依然用 ap_client 命令,返回 ok 代表联网,返回 no 代表未联网。

root@Hiwooya:/#ap_client

ok

图 11.8 微信配网

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 116 –

11.8 网络转串口

这个功能一般用于将 hiwooya 作为一个网络转发工具,可以实现预设的 TCP 端口数据和

某个串口数据互通。类似市面上各个网络转串口、串口转 Wi-Fi 等等的产品。

1、安装 ser2net 软件

(1)让 hiwooya 上网,参考 7.1 小节联网部分;

(2)进入 hiwooya 终端,更新源:opkg update;

(3)安装软件:opkg install ser2net。

2、修改配置文件

Ser2net 工具在安装完成后,可执行文件放在:/usr/sbin/ser2net,配置文件在

/etc/ser2net.conf

vi 打开配置文件,配置项说明如下:配置格式

<TCP port>:<state>:<timeout>:<device>:<options>

格式说明:

TCP port:TCP/IP 端口号,可以加 IP 信息如 127.0.0.1,2000 或者 localhost,2000;

如果这里指定了 IP,则只能绑定在这个固定的 IP

state:四种可选状态

off:禁止该端口的连接

raw:端口和串口设备之间双向通信

rawlp:端口向串口设备单向通信

telnet:使用 telnet 协议时用

timeout:超时,以秒为单位;当没有活动的连接时,可以设置这个时间关闭端口;常写 0,

关闭该功能,即不会超时

device:指定映射本机的哪个串口(This must be in the form of /dev/<device>)

options:设置串口的参数如:波特率(300,1200,2400,4800,9600,19200,38400,57600,

115200)

校验(EVEN,ODD,NONE)

停止位(1STOPBIT,2STOPBITS)

数据位(7DATABITS,8DATABITS)

开启(关闭)XON\XOFF:XONXOFF(-XONXOFF)

开启(关闭)硬件控制流:RTSCTS(-RTSCTS)

2、练手

实现 202TCP 端口与串口 1互通

ser2net.conf 文件中有很多我们用不到的端口配置,这里将其他 200X 端口都注释掉,

保留 2002,波特率改为 57600。如下图 11.9 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 117 –

保存退出,运行命令:ser2net -c /etc/ser2net.conf,至此配置完成。

3、测试

准备 Socket 工具和串口工具,设置注意:

Socket 工具连接 Hiwooya 的 IP 为 br-lan,可到 Hiwooya 上用“ifconfig br-lan”

命令查看。

串口工具设置 57600 波特率,8 数据位,1 停止位,0 校验位,并且要关闭硬件流控。

连接前断开电脑连接的 wifi 网络。

在控制台运行命令:uarttest /dev/ttyS1 115200 8 0 1 0 后,打开 Socket 工具,进行

连接后便可收发数据,我这里的收发测试如图 11.10 所示。

图 11.9 修改 ser2net.conf

图 11.10 收发测试

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 118 –

11.9 FTP服务器 vsftpd

利用 vsftpd 可以把 hiwooya 配置成一个简单的 FTP 服务器,通过 FTP 可以很方便地与电

脑和手机互传文件。

1、安装 vsftpd:

root@Hiwooya:/#opkg update

root@Hiwooya:/#opkg install vsftpd

2、配置/etc/vsftpd.conf 文件

如下图 11.11 是一个仅允许本机用户登录的典型配置:

3、配置/etc/config/firewall 开放 ftp 端口

需要对相应的网络接口开放21端口,可以在 firewall中增加一个rule配置,如图11.12

所示。

4、设置完成后重新启动 vsftpd

root@Hiwooya:/#/etc/init.d/vsftpd enable

root@Hiwooya:/#/etc/init.d/vsftpd restart

5、其他

(1)vsftpd 和 minidlna 有时会有冲突,最好不要同时运行。

(2)FTP 存储(SD 卡或 U盘)的文件系统最好采用 ext4 格式。

(3)默认安装的 vsftpd 是不支持 SSL 的,需要的话要在编译的时候加上这个选项。

(4)客户端软件 android 上有 AndFTP,iOS 上有 BUZZ_player。

图 11.11 配置 vsftpd.conf

图 11.12 配置 firewall

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 119 –

第十二章 其他操作

本章目标

掌握刷机、救砖操作

了解 GIT 常用命令

在开发过程中,当出现系统被损坏、造成功能失效等问题时,通常需要通过刷机或救砖

来解决。本章将主要对刷机和救砖操作进行讲解。

12.1 刷机

1、基于 Uboot 刷机

刷机用于更新 Openwrt 固件,更新 Uboot 或更新校准数据等等,Hiwooya 提供了在 Uboot

状态下的 web 页面刷机功能,该刷机方式需要在板子上 WPS 按键的配合以及一条网线。

注意:此刷机方法在更新 Uboot 和 Openwrt 时不会覆盖无线校准数据。

操作步骤如下:

(1)安装设置串口工具 minicom。(详细步骤见 6.2.2)

(2)设置电脑与 Hiwooya 网线连接的网卡 IP 为同网段,例如 192.168.1.10,子网掩码

255.255.255.0。如图 12.1 为网口设置 IP 地址,进入编辑连接之后,选择 IPv4 手动添加 IP

地址为 192.168.1.10,子网掩码为 255.255.255.0,网关默认不填,点击保存后 ifconfig

命令查看 IP 地址设置成功如图 12.2 所示。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 120 –

图 12.2 IP 地址设置成功

图 12.1 设置网口 IP 地址

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 121 –

(3)针对 1.0.7 及以后版本 Uboot:在 Hiwooya 刚上电或者刚按下 Reset 按钮后,按住

WPS 按钮 2到 7秒,看到 WLED 灯闪烁大约 10 次,表明此时已经进入 web 刷机状态。

针对 1.0.6 及之前版本 Uboot: 在 Hiwooya 刚上电或者刚按下 Reset 按钮后,WLED 灯闪

烁的时候按住 WPS 键 1 到 2 秒左右放开,WLED 灯会快速闪烁几下,表明已经进入 web 刷机状

态。

这时会自动打开 HTTP server,IP 地址打印在下方,如图 12.3 所示。

(4)打开浏览器(推荐 Chrome 和 Safari,避免用 IE),访问 192.168.1.111,看到如

下图 12.4 的刷机界面。

可以看到有三排更新按钮,第一排用于刷系统固件,例如 Hiwooya 固件、OpenWrt、SDK

等等。第二排用于升级 Uboot,第三排用于刷无线校准文件。点击浏览选择固件

(openwrt-ramips-mt7688-HIWOOYA16128-squashfs-sysupgrade.bin)或 Uboot(uboot.bin)

后点击后面的 Update 开始刷机。

刷机进行时页面如下图 12.5(一直持续),刷完 Hiwooya 会自动重启(网页不会自动刷

新,WLED 会闪 10 次左右表明刷机完成)。

图 12.3 打印出 IP 地址

图 12.4 web 刷机界面

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 122 –

注意:刷机完成后板子会重启进入新系统,进入新系统后可能有上一个系统的残留,建

议执行一遍:firstboot –y 命令进行恢复出厂设置,再重启就是彻底全新了。

2、基于已有的 OpenWrt 刷机

条件:该方式操作的前提是 7688 模块中已经有了 OpenWrt 正常固件。借助已有的固件上

的 sysupgrade 命令而已。所以要使用该更新方式,有两步:

固件拷贝至模块的文件系统中,最好是/tmp 内存目录。

在板子的控制台运行 sysupgrade /tmp/newimage.bin 命令更新固件。

运行完重启后,运行 firstboot –y。

(1)使用 scp 将固件传输到 Hiwooya。

(2)进入板子控制台执行更新命令:

root@Hiwooya:/#cd /tmp

root@Hiwooya:/#sysupgrade openwrt.bin

执行一次清理操作:

root@Hiwooya:/#firstboot –y

该操作执行后重启生效。

3、刷机常碰到的问题

1、IP 为 0.0.0.0,如图 12.6 所示。

图 12.5 刷机进行时

图 12.6 IP 为 0.0.0.0

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 123 –

此情况是由于 20180420的 Openwrt固件存在 bug,通过 uboot_env工具搞乱了 env 分区。

修复方法如下:

uboot 启动过程中,按“4”进入 uboot 的命令行

setenv bootcmd tftp

setenv bootdelay 2

setenv ethaddr 00:AA:BB:CC:DD:10

setenv ipaddr 192.168.1.111

setenv serverip 192.168.1.100

setenv ethmode

saveenv

之后重启,进入 uboot 的刷机模式,刷最新固件。

12.2 救砖

救砖操作(适用于 3B 模式的 32M,以及 16M 以下的 FLASH)

此方法需要用到 SPI 编程器。编程器刷机注意:

板子的 wifi 校准数据已备份(备份方法参考 7.4 小节)。若丢失 wifi 校准数据,

刷后板子的 wifi 可能性能很差或者无法使用。

板子的 Uboot 已经损坏,启动串口无任何 Log 输出,只能救砖。

1、首先,保证不要给 7688 板子供电,找到 FLASH 编程器的 SPI 编程接口(3.3VD、MOSI、

CLK、MISO、CS、GND,参考图 12.7),使用杜邦线按照下图 12.8 和 7688 板子连接,注意编

程器的 3.3VD 要连接 7688 板子的 VDD_FLASH(FLASH 独立供电端)。

图 12.7 接口参考图 图 12.8 连接编程器和 7688 板子

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 124 –

2、电脑上使用编程器软件正常的烧写即可。

(1)如芯片未识别,请手动选择芯片型号,如图 12.9 所示检测到容量为 16M 的芯片,

这是就可以开始烧录了。

(2)点击“打开”,选择要烧录的文件,或者直接拖拽烧录文件到软件框内。

(3)点击“烧录”,开始烧录。

(4)烧录完成后会自动进行校验,校验芯片内数据是否和烧录文件一致,校验完后弹出

如图 12.10 所示对话框。如果一致,说明文件已经烧录成功。

一般 SPI NOR FLASH 要求写入前必须格式化,仅仅写入 UBOOT 即可。UBOOT 启动后,可

以参考 UBOOT 刷机方法刷无线校准数据和系统镜像。

12.3 GIT常用命令

1、初始化

图 12.9 芯片识别成功

图 12.10 校验成功

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 125 –

(1)初始化 git 仓库

git init

(2)自报家门

git config --global user.name “xxxx”

git config --gloal usr.email “xxxx”

(3)把文件添加到仓库(添加前必须文件已存在)

git add readme.txt

(4)提交到仓库

git commit -m “xxxxx”

xxxxx:本次提交说明

(5)查看目前 git 状态

git status

(6)查看提交历史记录

git log

(7)如果眼花缭乱,可以加上参数

git log --pretty=oneline

(8)回滚到上一版本

git reset --hard HEAD^

(9)再回到未来某个版本

git reset --hard xxxxxxx

(10)git 提供了一个 git reflog 命令来记录你的每一次命令

git reflog

git add 实际上是把文件修改添加到暂存区

git commit 实际上是把暂存区的所有内容提交到当前分支

(11)当你乱修改工作区的内容,想丢弃工作区的修改

git checkout -- file

(12)当你不但乱改了工作区的内容,还修改了暂存区的内容,想丢弃修改,分两步

git reset HEAD file

git checkout -- file

(13)假设你删除了某个文件,有两个选择,第一是你确实想删除某个文件,那就是:

git rm file

第二就是你删错了,想还原,那就是:

git check -- file

2、SSHKEY

(1)创建 sshkey

ssh-keygen -t rsa -C “[email protected]

接下来一路回车,生成两个文件:id_rsa 是私钥,不能泄露。id_rsa.pub 是公匙,可以

放心告诉任何人。

登录 github,add ssh key,title 任意填写,key 里边粘贴 id_rsa.pub 内容即可。

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 126 –

远端先创建一个仓库,点击 Create a new repo,填写仓库名字 learngit,其他默认,

点击 Create repository。

(2)关联一个远程库

git remote add origin [email protected]:guangmangdz/learngit.git

如果报错的话

git remote rm origin

接下来再推送

git push -u origin master

实际上就是把当前分支推送到远程。由于远端库是空的,所以加了-u 参数,以后可以不

加。

从现在起,只要本地做了提交,就可以通过命令:

git push origin master

把本地 master 分支最新更改推送至 github

(3)删除远程分支

git push origin --delete [branchname]

(4)从远程库克隆

git clone [email protected]:xxxxxxxx/xxxxx.git

3、分支管理

(1)创建分支,例如 dev

git checkout -b dev

(2)也可以用一下两条命令创建

git branch dev 创建 dev 分支

git checkout dev 切换到 dev 分支

(3)列出当前分支

git branch

(4)合并分支

git merge dev 操作前提是已经处于 master 分支状态

(5)合并完成后,就可以放心的删除 edv 分支了

git branch -d dev

(6)察看 git 分支合并图

git lob --graph

(7)正常的合并是 fast forward 模式,当然也可以禁用

git merge --no-ff -m “merge with no-ff” dev

首先,master 分支应该是非常稳定的,也就是用来发布新版本,平时不用在上面干活。

干活都在 dev 分支上,也就是说,你和你的小伙伴们每个人都在 dev 分支上干活,每个人都

有自己的分支,是不是得往 dev 分支上合并就可以了。

(8)bug 分支

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 127 –

假如这种情况,你正在 dev 分支下写代码,但还没写完,又不能提交,而此时接到一个

紧急处理 bug 的紧急任务,且该任务来源于 master 分支。可以先用 git stash 将当前工作现

场储存起来。

bug 解决完了,再回到 dev 分支,如何恢复现场?

git stash apply 恢复后,stash 不删除,需要调用 git stash drop

git stash pop 恢复同时把 stash 内容也删除

(9)feature 分支

开发过程中,有无穷无尽的新功能添加进来,但你不希望一些实验性质的代码把主分支

搞乱了,所以,每添加一个新功能,最好新建一个 feature 分支,在上面开发。

git checkout -b feature

开发完成后,切回 dev,准备合并

git checkout dev

但是!突然该功能要求取消,必须销毁这个分支

git branch -d feature 正常的话会提示销毁失败,因为还未合并,所以就来了下面的命

令:

git branch -D feature 强制删除一个分支

4、多人写作

(1)查看远程库信息

git remote

(2)加-v 可以查看更详细的信息

git remote -v

(3)推送分支

git push oregin master

git push origin dev

(4)你的小伙伴想在 dev 分支下开发,就必须创建远程 origin 的 dev 分支到本地

git check -b dev origin/dev

(5)多人写作工作模式通常如下

1.首先,试图用 git push origin branch-name 推送自己的修改

2.如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并

3.如果合并有冲突,则解决冲突,并在本地提交

4.没有冲突或解决冲突后,再用 git push origin branch-name 推送就能成功

5.如果 git pull 提示“no tracking infor…”,说明本地分支和远程分支的链接关系没有

创建,用命令 git branch --set-upstream branch-name origin/branch-name

5、标签管理

(1)发布一个新版本时,通常打一个标签。这个标签唯一确定了打标签时刻的版本。标

签也版本库的一个快照。

git tag xxx

(2)查看所有标签

git tag

吾生有涯,而智无涯 无涯物联科技(https://www.hi-wooya.com/)

– 128 –

(3)给历史某次提交的 commit id 打标签

git tag vx.x xxxxxxx

(4)创建带说明的标签

git tag -a vx.x -m “tags shuoming” xxxxxxx

(5)打错了标签,也可以删除

git tag -d Vx.x

(6)推送某个标签到远程

git push origin vx.x

(7)一次性推送所有未推送的标签到远程

git push origin --tags

(8)删除远程标签(需先删除本地标签)

git tag -d v0.9

git push origin :refs/tags/v0.9

(9)让 git 显示颜色

git config --global color.ui true

(10)git 可以忽略特殊文件,所有配置文件在

https://github.com/github/gitignore

.gitignore 文件本身也需要放到版本库里

(11)git show 哈希 用来查看某次自己的变更。

(12)删除远程分支

git push upstream -delete branchname

(13)git 删除 Untracked files 文件

git clean -f -n

git clean -f

(14)如果合并未成功,并且切换不到其他 branch,可以使用

git reset --merge