Tinker Board 2S Manual

来自Waveshare Wiki
跳转至: 导航搜索

入门

简介

  • Tinker Board 2 搭载 64 位 Armv8 架构的Rockchip RK3399 处理器芯片,相较于其他热门的 SBC 主板,性能大幅提升。
  • 另外还采用 Arm big.LITTLE 技术。这是一种异构处理技术,可以将双核 2.0 GHz Cortex-A72 和四核1.5 GHz Cortex-A53整合在同一个 SoC 中,配合 big.LITTLEzido 自动任务分配软件,可以确保每个程序都能使用正确的 CPU 核心,从而达到更具竞争力的处理速度。

开发板版本

  • 开发板有三个版本可选:
    • Tinker Board 2基础版,不带 eMMC,2G 内存。
    • Tinker Board 2S 升级版,带 16GB eMMC,2G内存。
    • Tinker Board 2S 升级版,带 16GB eMMC,4G内存。
  • 如果您购买的是*Tinker Board 2基础版,不带 eMMC,直接查看TF卡烧录镜像部分和登录即可。

安装系统

下载官方镜像

  • Tinker-board官方为Tinker Board 2S提供了两个版本的系统镜像,分别是Debian 10 和Android 11。
  • 你可以直接到tinker-board官网下载最新的官方镜像。

在TF卡上安装镜像

器材准备

  1. TF卡读卡器。
  2. 至少8GB的​​TF卡。

镜像烧录

  • 避免在烧录镜像过程中出错,烧录镜像前需要使用Panasonic_SDFormatter-SD卡格式化软件软件格式化TF卡。
  • 格式化的时候特别注意,如果你的电脑有插入了别的移动硬盘,不要格式化错驱动器了。
  1. 下载并安装balenaEtcher-烧录镜像软件
  2. 打开balenaEtcher烧录软件,将TF卡插入读卡器,将读卡器插入电脑。
  3. 选择下载好的镜像文件,单击“写入”并等待写入完成。
    Tinker-SD.gif

在EMMC上安装镜像(适用Tinker Board 2S)

器材准备

  1. Tinker Board 2S主板。
  2. Type A转Type C双公口USB3.0线 。
  3. 12~19V DC 接口 (5.5/2.5 mm DC 接口)电源适配器。

准备工作

  1. 下载RK驱动助手DriverAssitant-RK驱动助手balenaEtcher-烧录镜像软件
  2. 打开RK驱动助手DriverAssitant安装USB驱动程序,此过程无需连接Tinker Board 2S,安装完成后重启电脑。
    RK驱动.png
  3. 确保跳线帽已经安装在在如图两根排针上(Tinker Board 2S上默认安装黑色跳线帽)。
    跳线帽子.png
  4. 开发板上如果有TF卡,要先移除TF卡。默认启动TF卡镜像。
  5. 将Type C线一端连接电脑USB端口,另一端连接Tinker Board 2S的Type C接口。
  6. 给Tinker Board 2S主板接通电源,电脑会提示你是否需要格式化磁盘,点击取消或者关闭窗口,千万不要格式化磁盘!会把板子的uboot也一并格式化掉!
    取消.png

镜像烧录

  1. 用管理员身份运行balenaEtcher,点击Flash from file选择对应的Debian镜像。
  2. 点击Select target选镜像择对应的路径如下图,然后点击flash开始烧录。
    Tinker-emmc.gif

登录

  • Debian默认用户帐户(非root用户)
    登录名:linaro
    登录密码:linaro

本地登录

  • 如果你使用的是屏幕和键盘来控制Tinker Board 2,需要知道如何启动终端。
    本地登录终端.png

远程登录

准备工作

  • 用一根网线一端连接Tinker Board 2,另一端连接路由器的LAN端口。
  • 确保Tinker Board 2与你的电脑出于一个路由器下或同一网段。

获取Tinker Board 2的IP地址

  • 方法一:登录路由器查找Tinker Board 2的IP地址。
  • 方法二:你可以通过一些局域网IP扫描工具,这里以Advanced IP Scanner为例程
    1. 运行Advanced IP Scanner
    2. 点击Scan按钮,扫描当前局域网内的IP地址
    3. 找到所有Manufacturer中有linaro-alip字样的IP地址并记录
      IPscan.png
    4. 将设备上电,并确保设备连接上网络后
    5. 重新点击Scan按钮,扫描当前局域网内的IP地址
    6. 排除掉所有先前记录的Manufacturer中有linaro-alip字样的IP地址,剩下的就是你的linaro-alipIP地址了

使用MobaXterm登录

终端窗口

  1. 下载MobaXterm远程登录软件,解压即可使用。
  2. 打开MobaXterm远程登录软件,选择Session,选择ssh。
  3. 在Remote host输入我们前面查询到的IP地址192.168.15.100(根据自己的实际IP来填写),填写完成后,点击ok。
    登录.png
  4. 点击accept,输入登录名:linaro,回车输入登录密码:linaro(在输入密码时,屏幕没有变化属于正常现象,点击回车确认即可)
    Aceept-1.png

远程桌面

  1. 打开MobaXterm远程登录软件,选择Session,选择vnc。
  2. 在Remote host输入我们前面查询到的IP地址192.168.15.100(根据自己的实际IP来填写),填写完成后,点击ok。
    Tinker-mvnc1.png
  3. 点击ok,回车输入登录密码:linaro
    Tinker-mvnc2.png

使用VNC登录

Tinker Board 2上开启VNC Server

  1. 在Tinker Board 2下载VNC Server,可以参考配置部分 Interfacing Options
  2. 下载安装完成后,开启VNC Server ,需要设置一个大于6位的登录密码。(输入密码时屏幕上没有变化属于正常现象,密码输入完成后按回车键确认即可)
    Tinker-vnc2.png
  3. 执行完毕后就自动创建了服务器5901端口,回车确认。
    Tinker-vnc3.png

电脑上安装VNC Viewer

  1. 在电脑上下载安装VNC-Viewer

使用VNC Viewer登录Tinker Board 2

  1. 打开VNC Viewer,输入Tinker Board 2的IP地址和端口号回车确认。例如:
    192.168.15.100:5901

    Vnc1.png
  2. 点击continue:
    Vnc2.png
  3. 输入前面设置的VNC登录密码,点击ok:
    Vnc3.png
  4. 此时就成功登录Tinker Board 2了。
    Vnc4.png

Linux操作基础

Linux

  • Linux是一种通用的操作系统,它的网络功能非常强大,对内存等硬件的消耗也小,多用于网络服务器中。
  • 极其稳定、极其安全、可移植性、可扩展性强。
  • 具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。
  • 缺点入门比Windows难,由于缺少桌面周边生态,使用Linux桌面系统的用户也非常少。

为什么学习Linux

  • Linux系统被广泛应用在人们的日常生活用品中,如手机、智能家居、汽车电子、可穿戴设备等,只不过很多人不知道自己使用的电子产品里面运行的是Linux系统,例如我们用的安卓手机系统就是基于Linux内核开发的。
    • 全球100万个顶尖领域中超过90%在使用Linux系统;全球大部分的股票交易市场是基于Linux系统部署的,包括纽交所、纳斯达克等;
    • 全球知名的淘宝、亚马逊、易趣、沃尔玛等电子商务平台都在使用Linux系统。
    • 参与Linux内核开发的开发人员和公司也是最多的、最活跃的。因此了解和学习Linux是十分重要的。

终端

  • 计算机上的终端允许用户对其系统进行大量控制。Windows的用户可能已经接触过Command Promptor Powershell,而mac OS的用户可能已经熟悉了Terminal。所有这些工具都允许用户通过使用命令直接操作他们的系统。
    Tinker-terminal.png
    • linaro 当前用户名/登录名
    • linaro-alip 默认主机名
    • ~ 当前用户所在的目录是/home/linaro
    • $ 字符表示当前登录的是普通用户
    • # 字符表示登录的是root用户
  • 在终端窗口中键入命令,然后按键盘上的回车键运行命令。

Linux 系统目录结构

  • 在Windows中每一个分区都是一个树形结构,有多少个分区就有多少个树形结构,而Linux中只有一个树形结构,所有的文件、分区都是存在于一个树形结构中。在这个结构中,最上层的是根目录,其他所有的目录、文件、分区都是在根目录下建立的。读者可以通过ls /命令来查看整个根目录的文档,如图所示。 Linux-根目录.png
  • 以下是对这些目录的解释:

常用目录

  • /home:用户目录。
    • 除了root用户外,其他所有的使用者的数据都存放在这个目录下,在Tinker Board 2的系统中,/home目录中有一个linaro的子目录,这个就是linaro用户的默认目录。
  • /bin: 主要放置系统的必备执行文件目录。
    • 放置与Linux系统有关(包括运行图形界面所需的)的二进制可执行文件,如ls、mkdir、rm等。
  • /boot:引导目录。
    • 用于存放系统引导程序,如linux内核以及启动配置文件,里面的config.txt也是用户配置使用频率最高的文件。
  • /etc: 系统配置文件存放目录。
    • 在这个目录中存放了几乎所有的Linux系统软件所需的配置文件,如果需要对这个目录中的文本进行修改,那么最好是先将需要修改的文件进行备份,以保证在修改之后还可以回到原来的状态。

其它目录

  • /dev :设备目录。在Linux系统中,所有设备都视为文件,而在这个目录中存放了所有设备,例如第一个SATA硬盘或U盘会被识别为sda文件,而SATA硬盘或U盘第一个分区会被识别为sda1文件。
  • /lib:基本系统的动态链接库存放位置,在这个目录中存放了可以维持一个基本系统启动所需要的库文件。如果没有这个目录,系统程序根本就无法工作。
  • /lost + found/分区系统的目录。系统非正常关机而产生的文件通常都存放在这里,另外由fsck等程序进行硬盘修复后产生的文件也存放在这里。
  • /media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。
  • /mnt:传统的外部设备挂载点。在早期的时候,除了系统分区外的其他分 区,如U盘等设备,都会被挂载到这个目录下以供用户读写。不过现在已经被 /media/取代。
  • /proc:proc是一个虚拟文件系统。这个目录是存放在内存中的,因此不会占用硬盘空间,系统或用户通过读取这些设备来了解它们的信息。例如,可以使用cat /proc/cpuinfo命令来査看CPU信息。
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录。
  • /srv:该目录存放一些服务启动之后需要提取的数据。
  • /sys:与/proc目录一样,也是一个虚拟目录,是由内核中的sysfs系统来实现的,其作用与proc有些类似,但除了与proc具有相同的查看和设定内核参数功能之外,还有为Linux统一设备模型作为管理之用。
  • /tmp:临时目录。由程序所产生的临时文件都会存放在该目录下,不用担心这个目录会占用太多的空间,因为每次系统启动都会清除这个目录的内容;同时这也是系统为数不多的拥有所有用户可读写属性的目录。
  • /usr:Linux系统所安装的程序都是存放在该目录中的,类似于windows下的program files 目录。
  • /run:用于存放系统启动时描述系统信息的文件。这个目录最初是在/var/目录下的,但是现在被提升到根目录下。

重要目录

  • 在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
  • /etc:这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
  • /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下的。
  • /bin, /usr/bin是给系统用户使用的指令(除root外的普通用户),而/sbin,/usr/sbin则是给root使用的指令。
  • /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log目录下。

常见指令介绍

文件系统

sudo

  • sudo命令以系统管理者的身份执行指令。
  • 要想使用root用户,可使用linaro用户登录,执行下面命令
  • sudo su   #切换为超级用户
    su linaro #切换普通用户
    

    Tinker-root.png

ls

  • ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
  • 常用的指令:
    ls
    ls -a   #显示所有文件及目录 (. 开头的隐藏文件也会列出)
    ls -l   #除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    ls -lh  #文件大小以容易理解的格式列出,例如4K
    

    Tinker-Ls.png

  • 想要学习了解指令更多参数,我们可以使用help指令来查看:
    ls --help

    Help.png

chmod

  • chmod命令是控制用户对文件的权限的命令。
  • Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
  • 在下图中,显示了Linux根目录下的详细文件信息。在这些文件信息中, 最重要的就是第一列,它详细描述了文件和目录的权限,而第三与第四列则显示了这个文件和目录属于哪一个用户或组。
    Tinker-chmod1.png
  • Linux的文件属性可以分为三种:只读(r)、写(w)和可执行(x)。但是上面的文件属性却分为10小格,这是因为除了第一格显示目录外,另外三组每组三格分别表示文件所有者权限、同一组内的权限以及其他用户权限。
    • 第一栏中如果显示d,则表示这是一个目录;如果是链接文件,则在这里显示l;如果是设备文件,则显示c。
    • 第一个rwx栏位:-rwx------ 表示文件拥有者所拥有的权限。
    • 第二个rwx栏位:---rwx--- 表示同一工作组内用户权限。
    • 第三个rwx栏位:------rwx 表示其他用户权限。
    • 例如:
    • -rwx rwx rwx 表示无论哪个用户都可以对这个文件读写与执行。
    • -rw- --- --- 表示只有文件拥有者有读写权限,但是没有执行权限。
    • -rw -rw -rw 表示所有用户都有读写权。
  • 符号模式
    • who(用户类型)
      who 用户类型 说明
      u user 文件所有者
      g group 文件所有者所在组
      o others 所有其他用户
      a all 所用用户, 相当于 ugo
    • operator(符号模式表)
      Operator 说明
      + 为指定的用户类型增加权限
      - 去除指定用户类型的权限
      = 设置指定用户权限的设置,即将用户类型的所有权限重新设置
    • permission 的符号模式表
      模式 名字 说明
      r 设置为可读权限
      w 设置为可写权限
      x 执行权限 设置为可执行权限
      X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
      s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
      t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位
    • 符号模式实例
      1. 给file的所有用户增加读权限
        chmod a+r file
      2. 删除file的所有用户的执行权限
        chmod a-x file
      3. 给file的所有用户增加读写权限
        chmod a+rw file
      4. 给file的所有用户增加读写执行权限
        chmod +rwx file 
      5. 对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限)
        chmod u=rw,go= file
      6. 对目录waveshare和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限
        chmod -R u+r,go-r waveshare
  • 八进制语法
    • chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
      # 权限 rwx 二进制
      7 读 + 写 + 执行 rwx 111
      6 读 + 写 rw- 110
      5 读 + 执行 r-x 101
      4 只读 r-- 100
      3 写 + 执行 -wx 011
      2 只写 -w- 010
      1 只执行 --x 001
      0 --- 000
    • 例如:765的解释如下:
      • 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如 rwx ,也就是 4+2+1 ,应该是 7。
      • 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如 rw- ,也就是 4+2+0 ,应该是 6。
      • 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如 r-x ,也就是 4+0+1 ,应该是 5。
    • 常用的数字权限
      • 400 -r-------- 拥有者能够读,其他任何人不能进行任何操作;
      • 644 -rw-r–r-- 拥有者都能够读,但只有拥有者可以编辑;
      • 660 -rw-rw---- 拥有者和组用户都可读和写,其他人不能进行任何操作;
      • 664 -rw-rw-r-- 所有人都可读,但只有拥有者和组用户可编辑;
      • 700 -rwx------ 拥有者能够读、写和执行,其他用户不能任何操作;
      • 744 -rwxr–r-- 所有人都能读,但只有拥有者才能编辑和执行;
      • 755 -rwxr-xr-x 所有人都能读和执行,但只有拥有者才能编辑;
      • 777 -rwxrwxrwx 所有人都能读、写和执行(该设置不建议使用)。
    • 实例
      • 给file的所有用户增加读权限,拥有者和组用户可编辑权限
        sudo chmod 664 file

touch

  • touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
  • 例如,在当前目录下,使用该指令创建一个空白文件"file.txt",输入如下命令:
    touch file.txt

mkdir

  • mkdir命令用于创建目录。
  • 在工作目录下,建立一个名为waveshare的子目录 :
    sudo mkdir waveshare
  • 在工作目录下建立一个名为waveshare/test的目录。
    sudo mkdir -p waveshare/test
  • 若waveshare目录原本不存在,则建立一个。(注:本例若不加 -p 参数,且原本 waveshare 目录不存在,则产生错误。)

cd

  • 切换当前工作目录。
    cd ..            #返回上一层目录
    cd /home/linaro  #进入/home/linaro 目录
    cd               #返回用户目录
    

cp

  • cp命令主要用于复制文件或目录。
  • 参数:
    • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    • -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
    • -f:覆盖已经存在的目标文件而不给出提示。
    • -i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答y时目标文件将被覆盖。
    • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    • -l:不复制文件,只是生成链接文件。
  • 使用指令cp将当前目录test/下的所有文件复制到新目录 newtest 下,输入如下命令:
    sudo cp –r test/ newtest 

mv

  • mv命令用来为文件或目录改名、或将文件或目录移入其它位置。
  • 参数:
    • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
    • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入y表示直接覆盖,输入n表示取消该操作。
    • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
    • -n: 不要覆盖任何已存在的文件或目录。
    • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
  • 使用指令mv将当前目录test/下的file1文件复制到新目录/home/linaro下,输入如下命令:
    sudo mv file1 /home/linaro

rm

  • rm命令用于删除一个文件或者目录。
  • 参数:
    • -i 删除前逐一询问确认。
    • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    • -r 将目录及以下之档案亦逐一删除。
    • 删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
    sudo rm  test.txt 
    • rm:是否删除 一般文件 "test.txt"? y
    sudo rm  homework  
    • rm: 无法删除目录"homework": 是一个目录
    sudo rm  -r  homework  
    • rm:是否删除 目录 "homework"? y

reboot

  • reboot命令用于用来重新启动计算机,更改Tinker Board 2的配置经常需要重启。
  • 参数:
    • -n : 在重开机前不做将记忆体资料写回硬盘的动作
    • -w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
    • -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
    • -f : 强迫重开机,不呼叫 shutdown 这个指令
    • -i : 在重开机之前先把所有网络相关的装置先停止
  • 重新启动
    sudo reboot

shutdown

  • Tinker Board 2的关机是不能直接拔掉电源线的,因为Tinker Board 2会将内存作为暂存区,如果直接拔掉电源线会使一些在内存中的数据没有来得及写入SD卡中,从而造成数据的丢失或是损坏SD卡上的数据,造成系统无法启动。
  • 参数
    • -t seconds : 设定在几秒钟之后进行关机程序。
    • -k : 并不会真的关机,只是将警告讯息传送给所有使用者。
    • -r : 关机后重新开机。
    • -h : 关机后停机。
    • -n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机。
    • -c : 取消目前已经进行中的关机动作。
    • -f : 关机时,不做 fsck 动作(检查 Linux 档系统)。
    • -F : 关机时,强迫进行 fsck 动作。
    • time : 设定关机的时间。
    • message : 传送给所有使用者的警告讯息。
  • 实例
    • 立即关机
    sudo shutdown -h now
    • 指定 10 分钟后关机
    sudo shutdown -h 10
    • 重新启动计算机
    sudo shutdown -r now
  • 无论使用哪一个命令来关闭系统都需要root用户权限,如果用户使用linaro这样的普通用户,可以使用sudo命令暂时获得root权限。

pwd

  • 该pwd命令显示当前工作目录的名称:在Tinker Board 2上,输入pwd将输出类似/home/linaro。

head

  • 该head命令显示文件的开头。可用于-n指定要显示的行数(默认为 10 行),或与-c指定字节数。
    head test.py -n 5

tail

  • 该tail显示文件的结尾。-c字节或-n行数指定文件中的起始点

df

  • 用于df显示已安装文件系统上可用和使用的磁盘空间。用于df -h以可读的格式查看输出,使用 M 表示 MB,而不是显示字节数。
    df -h

zip

  • zip命令用于压缩文件,zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip。
  • 如果在我们在 /home/linaro/waveshare 目录下,将这个目录下所有文件和文件夹打包为当前目录下的waveshare.zip,可以执行以下命令:
    zip -q -r waveshare.zip *

uzip

  • unzip命令用于解压缩zip文件,unzip为.zip压缩文件的解压缩程序。
    unzip waveshare.zip -d user/
    • 其中-d为指定文件解压缩后所要存储的目录。

tar

  • tar命令是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
  • 压缩文件:
    tar -cvzf waveshare.tar.gz *
  • 解压文件:
    tar -xvzf waveshare.tar.gz 

apt

  • apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
  • apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
  • apt 命令执行需要超级管理员权限(root)。
  • apt 常用命令
    • 列出所有可更新的软件清单命令:sudo apt update
    • 升级软件包:sudo apt upgrade
    • 列出可更新的软件包及版本信息:apt list --upgradeable
    • 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
    • 安装指定的软件命令:sudo apt install <package_name>
    • 安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
    • 更新指定的软件命令:sudo apt update <package_name>
    • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
    • 删除软件包命令:sudo apt remove <package_name>
    • 清理不再使用的依赖和库文件: sudo apt autoremove
    • 移除软件包及配置文件: sudo apt purge <package_name>
    • 查找软件包命令: sudo apt search <keyword>
    • 列出所有已安装的包:apt list --installed
    • 列出所有已安装的包的版本信息:apt list --all-versions
  • 例如我们安装nano编辑器
    sudo apt install nano

网络

ifconfig

  • 用于在不带任何参数(即)ifconfig运行时显示当前系统上接口的网络配置详细信息。
  • 用SSH连接时可以通过ifconfig查找IP地址,例如这台设备的有线连接IP地址和无线连接IP地址分别是:192.168.15.103和192.168.15.102
    Tinker-ifconfig.png

hostname

  • 该hostname命令显示系统的当前主机名。我们使用Tinker Board 2的时候经常需要使用远程工具,而默认的网络配置IP地址采用动态分配,会造成IP地址不确定的问题,当我们的Tinker Board 2IP地址发生变化时,可以使用主机名登录。
  1. 登录Tinker Board 2,修改hosts文件,命令如下:
    sudo nano /etc/hosts
    • 将lianro-alip替换成要修改的名字,例如waveshare,按下键盘Ctrl+s保存,按下键盘的Ctrl+x退出:

    Tinker-hostnames.png

  2. 修改hostname文件,将这里linaro也替换成要修改的名字,例如waveshare,按下键盘Ctrl+x,按下键盘的y,回车确认:
    sudo nano /etc/hostname

    Linux-hostname5.png

  3. 修改完成重启Tinker Board 2即可:
    sudo reboot
  4. 修改主机名也可以用sudo tinker-config中: Hostname
  5. 我们也可以使用如下命令查看IP地址:
    hostname -I

配置

连接WIFI

  1. 切换到超级用户模式
    sudo su root
  2. 打开WIFI
    nmcli r wifi on
  3. 扫描WIFI
    nmcli dev wifi
  4. 连接到WIFI网络(“wifi_name”和“wifi_password”需要替换为您的实际 WiFi 的 SSID 和密码。)
    nmcli dev wifi connect wifi_name password "wifi_password"
  5. 显示“ successfully”就成功连接无线网络了,主板下次开机会自动连接到您指定的 WiFi。
    Tinker-WiFi.png

tinker-config 工具

  • tinker-config是Tinker Board 2官方镜像自带的一个系统配置工具。
  • 要打开配置工具,请在命令行中键入以下内容,回车确认:
    sudo tinker-config

    Tinker-config2.png

  • 基本操作:键盘上的上、下键进行菜单项目的选择,回车键进入,左右键进行OK和cancel等按钮的选择,Esc键取消返回,空格键为选择定选项。最后改完后选择Finish退出即可,可能会重启。

Hostname

  • Tinker Board 2系统默认的主机名为linaro-alip,你可以修改自己专属的主机名。
    Tinker-hostname1.gif

Change User Password

  • Tinker Board 2系统默认的登录密码:linaro,你可以修改登录密码来保护账户安全。

Boot Options

  • Desktop / CLI:选择是启动到桌面环境/终端命令模式。

Internationalisation Options

  • Change Locale:设置语言和区域。
  • Change Timezone:设置时区。
  • Change Keyboard Layout:设置键盘布局。

Interfacing Options

  • 在此子菜单中,有以下选项可启用/禁用:VNC,Camera。例如我们启用vnc:
    Tinker-newvnc.gif

Advanced Options

  • A1 Expand Filesystem :允许您扩展文件系统。扩展文件系统将最大化分区的大小以匹配物理TF卡上可用的大小。
  • A2 Resolution:设置屏幕分辨率。

Power Management Tool

  • 查看Tinker Board 2的设备信息、系统配置。
  • 监测当前的CPU的温度、频率、内存占用情况等。
    Power.png

LED

  • 如图所示,Tinker board 2s有三个状态led灯,分别为LED0(Power)、LED1(disk activity)和LED2(Reserve)。
    Topview.png

LED控制

  • 在嵌入式Linux中,LED接口非常普遍,但由于它的特殊性,LED接口的使用和标准的Linux接口存在较大的差异。
  • 对于Tinker Board 2s,LED操作接口位于/sys/class/leds目录下。首先切换为root用户,并且进入LED目录下:
    sudo su root
    cd /sys/class/leds/
  • 查看下官方的原理图,根据NMOS管特性可以分析出三颗LED都是高电平驱动:
    Tinker-led.png

控制LED0

  • 进入 pwr-led 目录:
    cd pwr-led
    echo "1" > brightness  #点亮
    echo "0" > brightness  #熄灭

控制LED1

  • 进入act-led 目录:
    cd act-led
    echo "1" > brightness  #点亮
    echo "0" > brightness  #熄灭

控制LED2

  • 进入rsv-led 目录:
    cd rsv-led
    echo "1" > brightness  #点亮
    echo "0" > brightness  #熄灭

GPIO

简介

  • GPIO全称:通用型输入输出端口(General-purpose input/output)
  • Tinker Board 2 引脚分类
    • 电源引脚:5v,3.3v,GND(Ground)。
    • 常规GPIO控制引脚:可以通过编写程序控制这些引脚的高低电平。
    • 特殊GPIO通讯引脚: SPI通讯,12C通讯,TxD/RxD串口通讯。
  • Tinker Board 2 有一个40针的扩展接头。
    GPIO.jpg

GPIO端口操作

GPIO编号计算

  • GPIO有5个bank,GPIO0到GPIO4,每个bank有32个pin,命名如下:
       GPIO0_A0 ~ A7 
       GPIO0_B0 ~ B7 
       GPIO0_C0 ~ C7 
       GPIO0_D0 ~ D7 
       
       GPIO1_A0 ~ A7 
       .... 
       GPIO1_D0 ~ D7
       .... 
       GPIO4_D0 ~ D7
    
  • 对于 Linux 4.4内核,GPIO 数量可以计算如下,以 GPIO3_D7(40PIN GPIO 上的 PIN40)为例:
        GPIO3_D7 = 3*32 + 3*8 + 7 = 127 
       (A=0, B=1, C=2, D=3)
    
  • 设置 GPIO3_D7输出:
       cd /sys/class/gpio 
       echo 127 > export 
       cd gpio127 
       echo out > direction 
       echo 1 > value # 输出高
       echo 0 > value # 输出低
    

Python控制

  1. 使用如下命令查看Tinker Board 2s预装wiringPi和RPi库
    ls /usr/local/share

    Tinker-usr.png
  2. 使用gpio readall命令查看引脚对应情况
    Tinker-readall.png
  3. 安装Python库
    sudo apt-get update
    sudo apt-get install python3-pip
    sudo pip3 install python-periphery
  4. 编写测试程序吗,使用CPU编号
    from periphery import GPIO
    import time
    
    LED_Pin = 146 #Physical Pin-32 is GPIO 146
    # Open GPIO /sys/class/gpio/gpio73 with output direction
    LED_GPIO = GPIO(LED_Pin, "out")
    
    while True:
        try: 
            LED_GPIO.write(True)
            time.sleep(0.5)
            LED_GPIO.write(False)
            time.sleep(0.5)
        except KeyboardInterrupt:
            LED_GPIO.write(False)
            break
        except IOError:
            print ("Error")
    
    LED_GPIO.close()
    
  5. 运行程序:
    sudo python3 gpio.py

wiringPi控制

  1. 编写测试程序gpio.c
    #include <wiringPi.h>
    
    int main(int argc, char * argv[])
    { 
        char i;
        wiringPiSetup();
        pinMode(26, OUTPUT);
        for(i = 0; i < 10; ++i)
        {
            digitalWrite(26, HIGH);
            delay(500);
            digitalWrite(26, LOW);
            delay(500);
        }
        digitalWrite(26, HIGH);
        return 0;
    }
    
  2. 编译程序
     gcc gpio.c -o gpio -lwiringPi
  3. 运行程序
     sudo ./gpio

C语言控制

  1. 下载C语言程序包
  2. 编译程序
    sudo make
  3. 运行程序
    sudo ./main 146

I2C

简介

  • I2C,中文全称为集成电路总线;
  • 它是一种串行通信总线,使用多主从架构,由飞利浦公司在20世纪80年代为了让主板和嵌入式系统用以连接低速周边设备而开发。I2C的正确读法为“I平方C”("I-squared-C")或者'I方C'

I2C硬件连接方式

  • I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。
  • 通信原理是通过控制SCL和SDA高低电平来产生I2C总线协议所需要的信号进行数据传输。
  • 在总线空闲状态时,SCL和SDA会上拉电阻拉高,保持着高电平。

通过其物理连接方式,我们就可以知道I2C协议是串行、同步通讯协议。

特征

  • I2C总线上的每一个设备都会对应这唯一的I2C地址,部分从设备可以通过外围电路改变I2C地址。
  • 主从设备之间就通过这个地址来确定与哪个器件进行通信。
  • I2C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。

协议详解

  • I2C协议规定,总线上数据的传输必须以一个起始信号作为开始条件,以一个结束信号作为传输的停止条件。起始和结束信号总是由主设备产生(意味着从设备不可以主动发起通信,所有的通信都是主设备发起的,主可以发出询问的指令,然后等待从设备的通信)。
    I2C时序.png
  • 总线在空闲状态时,SCL和SDA都保持着高电平,当SCL为高电平而SDA由高到低的跳变,表示产生一个起始条件;当传输结束时,SCL为高而SDA由低到高的跳变,表示产生一个停止条件。
  • 在起始条件产生后,总线处于忙状态,由本次数据传输的主从设备独占总线,其他I2C器件无法访问总线;在停止条件产生后,本次数据传输的主从设备将释放总线,总线再次处于空闲状态。
    I2C2.png
    I2C3.png


  • 数据传输以字节为单位。主设备在SCL线上产生每个时钟脉冲的过程中将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位,此时才认为一个字节真正的被传输完成。当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将不回传应答位。

Rockchip I²C 主要参数

  • 兼容 I2C 与 SMBus 总线
  • 支持主模式下的 I²C 总线
  • 软件可编程时钟频率和传输速率高达 1000Kbit/秒
  • 支持 7 位和 10 位寻址模式
  • 中断或轮询驱动多个字节数据传输
  • 时钟拉伸和等待状态

Tinker Board 2 I2C接口

开启I2C接口

  • Tinker Board 2一共有两个i2c通道,分别是I2C-6(引脚3和引脚5)和I2C-7(引脚27和引脚28),以开启I2C-6为例,开启方法如下:
    1. 打开配置文件config.txt:
      sudo nano /boot/config.txt
      将#intf:i2c6=off改为intf:i2c6=on

      Nano-i2c.png

    2. 修改完成后,按住键盘的Ctrl+s保存,Ctrl+x退出,重启设备:
      sudo reboot
    3. 重启完成后,我们在终端输入如下命令查看I2C-6开启成功:
      ls /dev/i2c*

      I2c-6.png

i2c测试

硬件连接

  • Tinker Board 2连接引脚对应关系
    10 DOF Tinker Board 2 功能
    Board物理引脚序号
    VCC 5V 电源输入
    GND GND 电源地
    SDA 3 I2C数据输入
    SCL 5 I2C时钟信号

    Tinker1-IIC.png

i2cdetect

  • 查询i2c设备:
     sudo i2cdetect -y -r -a 6

    I2cdetect-read.png

    • 参数: -y是无视交互问题直接执行,-r是SMBus read byte命令,-a是所有地址,6是指i2c-6。
  • 扫描寄存器数据:
    sudo i2cdump -y 6 0x68

    I2cdetect-scan.png

  • 寄存器数据写入:
    sudo i2cset -y 6 0x68 0x90 0x55

    I2cdetect-set.png

    • 参数:
      参数 含义
      6 代表I2C设备号
      0x68 代表I2C设备地址
      0x90 代表寄存器地址
      0x55 代表向寄存器写入的数据
  • 寄存器数据读出:
    sudo i2cget -y 6 0x68 0x90

    I2cdetect-get.png

    • 参数:
      参数 含义
      1 代表I2C设备号
      0x68 代表I2C设备地址
      0x90 代表寄存器地址

I2C编程

下载测试程序

  • 打开Tinker Board 2终端,执行:
    sudo apt-get install p7zip-full -y
    sudo wget  https://www.waveshare.net/w/upload/2/27/Tinker-10_DOF_IMU_Sensor_D_Code.7z
    7z x Tinker-10_DOF_IMU_Sensor_D_Code.7z
    cd Tinker-10_DOF_IMU_Sensor_D_Code/wiringPi

运行测试程序

  • 以下命令请在Tinker Board 2下执行,否则不在索引不到目录;
    sudo make 
    sudo ./10Dof-D_Demo

现象

  • 在运行程序后,就会输出以下数据:
    窗口打印.png

SPI

简介

  • SPI全称为串行外设接口(Serial Peripheral Interface),其是一种高速的,全双工,同步通信总线.
  • 它以主从方式工作,这种模式通常一个主设备对应一个或多个从设备,双向数据传输时需要4根线,单向数据传输时可以裁切为3根线。

硬件连接

  1. MOSI – 主设备输出/从设备输入引脚。该引脚对应主设备数据发送引脚,从设备数据接受引脚
  2. MISO – 主设备输入/从设备输出引脚。该引脚对应主设备数据接受引脚,从设备数据发送引脚
  3. SCLK – 同步时钟,通常由主设备输出.
  4. CS – 从设备选择。用来选择从设备。它的功能是让主设备可以与特定从设备通信,避免数据线上的冲突。

工作方式

  • Linux内核用CPOL和CPHA的组合来表示当前SPI的四种工作模式:
    CPOL=0,CPHA=0		SPI_MODE_0
    CPOL=0,CPHA=1		SPI_MODE_1
    CPOL=1,CPHA=0		SPI_MODE_2
    CPOL=1,CPHA=1		SPI_MODE_3
    
    • CPOL:表示时钟信号的初始电平的状态,0为低电平,1为高电平。
    • CPHA:表示在哪个时钟沿采样,0为第一个时钟沿采样,1为第二个时钟沿采样。
  • SPI的四种工作模式波形图如下:
    Spi时序-1.png
    Spi时序-2.png

开启SPI接口

  • Tinker Board 2一共有两个spi通道,分别是spi-1(引脚13、引脚15、引脚16和引脚18)和spi-5(引脚19、引脚21、引脚23和引脚24),以开启spi-5为例,开启方法如下:
    1. 打开配置文件config.txt:
      sudo nano /boot/config.txt
      将#intf:spi5=off改为intf:spi5=on
    2. 修改完成后,按住键盘的Ctrl+s保存,Ctrl+x退出,重启设备:
      sudo reboot
    3. 重启完成后,我们在终端输入如下命令查看spi-5开启成功:
      ls /dev/spi*

CSI

  • Tinker Board 2支持树莓派摄像头Camera Module v1(感光芯片为豪威科技OV5647)和Camera Module v2(感光芯片为索尼IMX219):
  • Tinker Board 2的系统默认使用的是Camera Module v2。
  • 如果您使用的是Camera Module v1(感光芯片豪威科技 OV5647)摄像头需要手动切换,参考 Interfacing Options开启。
    Tinker-configcamera.png

硬件连接

  • 要测试摄像头,建议给Tinker Board 2接入HDMI屏幕或者DSI屏幕
  • Tinker Board 2主板上的CSI (摄像头) 和 DSI (显示器) 两个接口的封装是相似的,接线的时候注意不要接错了。CSI摄像头接口在Power接口边上。
    Tinker-csi连接.jpg

开启摄像头

  • 由于tinkerboard默认安装了Gstreamer,所以我们可以直接使用。
  1. 首先我们查看摄像头是否连接成功
    v4l2-ctl -V

    V4l2.png

  2. 直接打开终端输入
    gst-launch-1.0 v4l2src ! video/x-raw,format=NV12,width=640,height=480 ! videoconvert ! autovideosink

    Tinker-gst.png

USB

fswebcam

安装

  • Debian 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 TUNA 的软件源镜像
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
    
    deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
  • 打开Tinker Board 2终端, 输入指令安装fswebcam软件
    sudo apt update
    sudo apt upgrade
    sudo apt install fswebcam

用法

  • 输入命令fswebcam后跟文件名,将使用USB摄像头拍摄照片,并保存到指定的文件名:
    fswebcam -d /dev/video5 -r 640x480 ~/image01.jpg

    此命令将显示以下信息:

    --- Opening /dev/video5...
    Trying source module v4l2...
    /dev/video5 opened.
    No input was specified, using the first.
    --- Capturing frame...
    Captured frame in 0.00 seconds.
    --- Processing captured image...
    Writing JPEG image to '/home/linaro/image01.jpg'.
    
    
  • 全分辨率拍摄照片,不带有横幅:
    fswebcam -d /dev/video5 -r 1280x720 --no-banner image3.jpg

MJPG-streamer

  • 将USB摄像头插上,查看是否找到设备,输入指令:
    v4l2-ctl --list-devices

    V4l2-usb.png

    • 其中USB2.0 Camera就是摄像头,说明找到usb设备了。
  • 查看设备驱动是否正常:输入指令:
    ls /dev/video*
    • 其中video5就是摄像头驱动。
  • 安装必要的库,输入以下指令:
    sudo apt install subversion -y
  • 下载mjpeg-stream到树莓派:
    sudo git clone https://github.com/jacksonliam/mjpg-streamer.git
    cd mjpg-streamer/mjpg-streamer-experimental
    sudo make all
    sudo make install
  • 打开start.sh
    cd mjpg-streamer/mjpg-streamer-experimental/
    sudo nano start.sh
    将./mjpg_streamer -i "./input_uvc.so " -o "./output_http.so -w ./www"

    修改为

    ./mjpg_streamer -i "./input_uvc.so -d /dev/video5" -o "./output_http.so -w ./www"
  • 运行start.sh:
    cd mjpg-streamer/mjpg-streamer-experimental/
    sudo ./start.sh 
  • 用Firefox浏览器输入http://<树莓派IP地址>:8080,例如我的树莓派地址是192.168.15.103
    http://192.168.15.103:8080 

    Tinker-mjpg画面.png

    • 此时应该可以看到摄像头的监控画面了。

DSI

产品特点

  • 8寸电容触摸屏,硬件分辨率为800×480
  • 电容式5点触摸控制
  • 钢化玻璃电容触摸面板,硬度达6H
  • 支持Tinker Board 2须另购转接线 DSI-Cable-15cm
  • 直接通过Tinker Board 2的DSI接口驱动LCD,刷新率可达60Hz
  • 配合Tinker Board 2使用时,支持Debian和安卓,免驱
  • 支持通过软件控制背光亮度

特色设计

8inch-DSI-LCD-Manual-design.jpg

  1. LCD FFC 线抗干扰设计,工业使用更稳定。
  2. VCOM电压调节电阻,可调节VCOM电压,以达到最佳的显示效果。
  3. 可使用顶针进行供电,减少繁琐的接线。
  4. 2 种形式的 5V 电源输出接口,方便用户接散热风扇或给其他小功率设备供电。
  5. 触摸板预留摄像头孔位,方便用户集成外部摄像头。
  6. 大盖板设计,方便设计外壳,易于嵌入各种设备中。
  7. 贴片螺母支撑与固定主板,结构更紧凑。

搭配Tinker Board 2使用

硬件连接

  1. 使用22Pin转15Pin的FPC排线,将8inch DSI LCD的DSI接口连接到Tinker Board 2的DSI接口。
    • 注意:软排线和屏幕连接金属面朝上,软排线和开发板连接金属面朝向HDMI接口
  2. 为了方便使用,可以把Tinker Board 2通过螺丝固定的8inch DSI LCD的背面,并组装上铜柱。(Tinker Board 2GPIO接口将通过顶针给LCD供电)

如下图所示:

Tinker-dsi.jpg

背光控制

  • 在终端输入以下命令可以控制背光亮度:
     sudo su root
     echo X > /sys/class/backlight/panel_backlight/brightness

    其中X表示0~255中的任意数字。0表示背光最暗,255表示背光最亮。例如:

     echo 100 > /sys/class/backlight/panel_backlight/brightness
     echo 0 > /sys/class/backlight/panel_backlight/brightness
     echo 255 > /sys/class/backlight/panel_backlight/brightness

资料

软件

图纸

芯片资料