Linkit 系列博文:
联发科Linkit 7688 (一) 上手及在Mac下搭建OpenWrt交叉编译环境,C语言编译Hello,World
联发科Linkit 7688 (二)GPIO基本操作与C语言编程
联发科Linkit 7688 DUO(三): 通过 Arduino 控制外设和传感器
Linkit 7688 DUO(四): 接上各种Arduino传感器和模块——基础篇
Linkit 7688 DUO(五) 接上各种Arduino传感器和模块—扩展篇
Linkit 7688 DUO(六) 加入MQTT物联网协议
淘了一块联发科 Linkit 7688 DUO 开发板(99元)。 这是一块物联网开发板,基于联发科 Linkit 7688芯片、同时兼容Arduino. 内置OpenWrt系统、支持Wifi联网,用于开发智能路由器、智能物体等。
上手过程,记录一下
开发板做得很精致:
1, 首先去官网, 学一下入门教程:
7688官网入口如下:
https://labs.mediatek.com/site/znch/developer_tools/mediatek_linkit_smart_7688/whatis_7688/index.gsp
进入“入门”, 教程写得很详细: 准备硬件及软件、开发板上电、登录WebUI设密码、设置Wifi, 连入互联网, 电脑SSH登入。。。
官网写得很好,过程也不难,这里不重复了
做完这些步,应该能够让 LinkIt 7688开发板连接入WIFI,电脑连入同一个WIFI, 用SSH能登入 7688开发板的OpenWrt系统。
然后,才可以做下面这些步。
2,下载 Linkit 7688的规格书 (Datasheet), 了解一下开发板性能
https://labs.mediatek.com/fileMedia/download/9ef51e98-49b1-489a-b27e-391bac9f7bf3
7688芯片为MIPS 580MHz, 64M RAM。 开发板上另提供128M 存储
芯片支持WIFI 802.11N, USB2.0, 及其它常用接口( 多个GPIO,UART, JTAG等)
3,安装C语言交叉编译器,在OpenWrt下开发程序
对OpenWrt的系统级开发还是要用C,因此要安装 C语言交叉编译器
交叉编译器,是一种特殊的gcc编译器,就是在PC上编译出MIPS的Linux程序
编译器包括 多个工具软件(gcc,gdb,make等), 故称为工具链
安装C语言工具链Toolchain:
在7688官网入口中找到进入 "软件和工具",找到 "OpenWrt SDK" ,点击下载 Toolchain. (注意:不是下载SDK,而是Toolchain)
交叉编译工具链目前只支持linux 和 Mac OS, 我的机器是Mac, 所以下载的是 Toolchain (OSX)
下载得到文件: MediaTek_LinkIt_Smart_7688_Openwrt_toolchain_OSX.bz2 约35M
解压缩出一个目录 : OpenWrt-Toolchain-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Darwin-x86_64
其中有一个子目录: toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2 所有交叉编译的C语言工具( gcc , gdb )就在这个目录中了
为了方便使用,将这个目录改个名字为 CC_TOOLS, 复制到 Desktop中。
则此时在Mac中, 工具链所在目录的位置是: ~/Desktop/CC_TOOLS
打开Mac的终端窗口, (LaunchPad --> 其他 --> 终端)
输命令,进入工具链所在目录
cd Desktop/CC_TOOLS/bin
试了一下,好象交叉编译器中没有gcc, 要用g++。 用C++编译器编译C语言没有问题的。
运行一下 g++, 查看版本
./mipsel-openwrt-linux-g++ --version
第一次运行,出错了,显示 "readlink: illegal option -- f ... ... "
查了一下, mipsel-openwrt-linux-g++ 调用了 mipsel-openwrt-linux-uclibc-wrapper.sh 这个脚本文件
用文本编译器(我用的是UltraEdit for Mac) 打开mipsel-openwrt-linux-uclibc-wrapper.sh
找到 REALNAME=`readlink -f $0` 这一行, 修改为 REALNAME=`readlink $0` (即去掉 -f ), 存盘。
重新运行一下 g++, 查看版本
./mipsel-openwrt-linux-g++ --version
则此时正常显示版本号了,表示交叉编译器gcc安装基本正确了
写一个 Hello, world 程序
#include <stdio.h>
int main() {
printf("hello,world\n");
}
存盘为 hello.c , 最好存盘在工具链 的 bin了目录下 (因为没有设置PATH,放在其它目录下容易出错)
编译一下
./mipsel-openwrt-linux-g++ hello.c -o hello
编译过程显示了几个Warning
mipsel-openwrt-linux-uclibc-g++.bin: warning: environment variable 'STAGING_DIR' not defined
不用管它, 编译正常生成了 hello 程序文件
将Linkit 7688与Mac连入同一个WIFI
用scp命令将 hello程序文件上传到 Linkit 7688 板上的 /root 目录中
scp hello [email protected]:/root (其中:192.168.31.140 是 Linkit 7688连入WIFI网络后获得的IP地址,你自己的具体地址不同,要改一下)
用SSH登录进入 LinkIt 7688, 运行一下 ./hello
则成功显示:hello,world
表明C语言编译OK了。
4, 设置PATH路径
在Mac中,打开终端窗口,输入命令,用vi编辑 ~/.profile 文件
vi ~/.profile
在文件末尾加入一句话 (设置CC_TOOLS/bin目录到PATH中)
export PATH=$PATH:~/Desktop/CC_TOOLS/bin
存盘,退出
关闭终端窗口, 再重新打开终端窗口
输入命令 echo $PATH 查看一下PATH路径已包含 CC_TOOLS/bin
设好了,则可以在任何目录下调用编译器了, 如上例
mipsel-openwrt-linux-uclibc-g++ -o hello hello.c
5, 安装7688 SDK开发包
在7688官网入口中找到进入 "软件和工具",找到 "OpenWrt SDK" ,点击下载 SDK。 (我下的是SDK (OSX) )
下载得到文件:MediaTek_LinkIt_Smart_7688_Openwrt_sdk_OSX.bz2
解压缩出一个目录 : OpenWrt-SDK-ramips-mt7688_gcc-4.8-linaro_uClibc-0.9.33.2.Darwin-x86_64
为了方便使用,将这个目录改个名字为 7688SDK, 复制到 Desktop中。
则此时在Mac中, SDK所在目录的位置是: ~/Desktop/7688SDK
设置STAGING_DIR环境变量
在Mac中,打开终端窗口,输入命令,用vi编辑 ~/.profile 文件
vi ~/.profile
在文件末尾加入一句话
export STAGING_DIR=~/Desktop/7688SDK/staging_dir
存盘,退出
关闭终端窗口, 再重新打开终端窗口
输入命令 echo $STAGING_DIR 查看一下STAGING_DIR环境变量是否已设置好
设好了,再次编译hello.c, 将没有warning
C/C++语言交叉编译开发环境设好了。