由于开发板上面没有EMMC或者Nand flash等大容量存储器,因此要使用tinker board,首先要准备一张TF卡,推荐容量为16GB,类型为class 10的。目前开发板官方支持的系统包括Android与Debian。这里烧写的镜像为基于Debian 的Tinker OS。 首先要到官网下载img格式的镜像,下载的镜像名为20171115-tinker-board-linaro-stretch-alip-v2.0.4.img。下载完成之后使用镜像烧写工具Win32 Disk Imager进行烧写。
图3.1 烧写系统 烧写完成之后,将SD卡放入tinker board的SD卡槽中,此时有两种方法可以进行下一步操作 1、 使用鼠标+键盘+外置HDMI显示器,这种方法可以将tinker board作为普通PC来使用。 2、 使用网线+路由器,这种方法适用于没有外置HDMI显示器的情况。使用SSH命令进行交互,后续还可以加上远程桌面来访问桌面环境。 这里笔者选择后一种方法。tinker board接上路由器之后可以在路由器的设备界面找到tinker board,然后打开putty,输入IP和端口(固定为22)进行登陆,登陆的初始用户名和密码都为“linaro”,登陆完成后如下图所示
图3.2 SSH登陆 登陆之后可以开启VNC服务以便后续可以访问桌面环境。执行以下命令来安装VNC服务 $ sudo apt-get update $ sudo apt-get install x11vnc 在安装完VNC之后,可以执行命令 $ vncserver :1 来启动VNC服务,初次使用VNC需要设置一个密码。PC上面安装一个VNC Viewer即可访问其桌面环境,如下图。
性能测试 在介绍完硬件配置并安装好操作系统之后,可以进行大家比较关心的性能测试,毕竟大家选择一款开发板的时候还是比较关心性能的。 性能测试项目包括CPU运算速度、内存读写速度与flash读取速度,对应的工具都为sysbench。参照的开发板为Banana PI m3。之所以选择这样对比,是因为tinker board与Banana PI m3的价格差不多,都为440元左右。两款开发板具体的相关参数对比如下:
此处性能测试都在Debian系统下进行。首先运行lscpu命令,确认所有核心都开启并都被操作系统识别。
然后分别安装sysbench,命令为$ sudo apt-get install sysbench。先来测试以下CPU的性能,执行命令 tinker board:$ sysbench --test=cpu --num-threads=4 run Banana PI m3:$ sysbench --test=cpu --num-threads=8 run 来测试。这里由于前者为4核,后者为8核,因此thread参数分别为4与8。测试结果如下图,这里是计算1到10000中最大的素数,时间越短越好,tinker board使用23.75秒,Banana PI m3使用29.17秒。
图4.3 tinker board CPU性能测试
图4.4 Banana PI m3 CPU性能测试 然后进行内存测试,执行命令 tinker board:$ sysbench --test=memory --memory-block-size=2M --memory-total-size=20G --num-threads=4 run Banana PI m3:$ sysbench --test=memory --memory-block-size=2M --memory-total-size=20G --num-threads=8 run 这里是测试读写20G空间的时间。tinker board花费0.0028s,Banana PI m3花费0.0018s。
图4.5 tinker board 内存测试
最后来进行文件存取测试。这里由于tinker board没有EMMC,因此tinker board的flash为SD卡,Banana PI m3的flash为EMMC。先测试写入,执行命令 tinker board:$ sysbench --test=fileio --file-test-mode=rndwr --file-total-size=32MB --max-requests=500 --num-threads=4 run Banana PI m3:$ sysbench --test=fileio --file-test-mode=rndwr --file-total-size=32MB --max-requests=500 --num-threads=8 run
这里测试写入一个32MB的文件500次,tinker board花费32.31s,Banana PI m3花费1.72s。
再测试读取,执行命令 tinker board:$ sysbench --test=fileio --file-test-mode=rndrd --file-total-size=32MB --max-requests=5000 --num-threads=4 run Banana PI m3:$ sysbench --test=fileio --file-test-mode=rndrd --file-total-size=32MB --max-requests=5000 --num-threads=8 run 这里测试读取一个32MB的文件5000次,tinker board花费0.0254s,Banana PI m3花费0.0210s。
图4.9 tinker board 文件读取测试
图4.10 Banana PI m3 文件读取测试 由上面的测试看出,tinker board的CPU略优于 Banana PI M3,内存与文件读取速度相差不大,但是由于没有EMMC,因此在文件写入速度方面不如Banana PI M3。可见,没有EMMC确实是tinker board的一大缺憾,ASUS后续推出的升级版tinker board S加上了EMMC,弥补了这一缺憾。 简单开发 tinker board自带了40pin的扩展接口,而作为一款开发板,tinker board与普通PC最大的区别就是可以在这个40pin的扩展接口进行相关开发。ASUS官方提供了一系列API可以调用。因此开发的方法也是先编写程序,然后在开发板上面编译运行。 首先下载GPIO相关库。执行命令 $ sudo apt-get install git $ git clone http://github.com/TinkerBoard/gpio_lib_c.git 下载完成之后进行安装,执行命令 $ cd gpio_lib_c/ $ sudo ./build 完成之后执行 $ gpio -v 可以看到GPIO库的相关信息,如下图。
图5.1 GPIO库相关信息 下面来演示一个串口打印的程序。代码如下: - #include
- #include
- #include
- #include
- #include
- int main ()
- {
- int fd ;
- if ((fd = serialOpen ("/dev/ttyS1", 115200)) < 0)
- {
- fprintf (stderr, "Unable to open serial device: %s\n", strerror (errno)) ;
- return 1 ;
- }
- for (;;)
- {
- serialPrintf (fd,"Hello \r\n ") ;
- serialPrintf (fd,"this is tinker board \r\n") ;
- delay (100) ;
- }
- }
复制代码
图5.2 测试用的程序 将完成的源文件保存为serialprint.c,然后运行下面这个命令进行编译 $ arm-linux-gnueabihf-gcc serialprint.c -o serialprint -lwiringPi 这里编译选项需要加上-lwiringPi,意思就是使用wiringPi库。生成的文件为serialprint,这个可执行文件。如下图
图5.3 编译程序 然后将对应串口ttyS1通过串口线连接PC,由GPIO定义表可以看到ttyS1对应的引脚为6->GND,8->UART1TX,10->UART1RX。 如下图。
图5.4 连接对应接口 然后执行命令$./serialprint,PC端使用串口调试软件可以看到如下打印内容。
到这里就完成了一个简单项目的开发。 总结 本次评测介绍了来自ASUS的tinker board。与树莓派一样,这款开发板重点面向对象仍然是创客和Linux学习者,在性能上,tinker board可以与目前市面上的高性能开发板一争高下,当然价格也比较高,可以视为是树莓派系列的升级版。但是,与树莓派一样,这款开发板的底层不开源,取而代之的是,ASUS提供了一系列封装好的库与API供用户开发。综上所述,这款tinker board可以被认为是一款不错的Linux开发板。 |