3. 鲁班猫系统特色功能

3.1. 安装软件

LubanCat OS完全支持debian的apt与dpkg在线与离线安装软件。

1
2
3
4
5
6
7
8
 # 在线安装软件(需联网)
 # 第一次使用需要更新软件列表
 sudo apt update
 # 安装软件
 sudo apt install [要安装的软件包名]

 # 离线安装软件
 sudo dpkg -i  [要安装的软件deb包文件名]

LubanCat OS继承了Debian ARM系统的便捷性,使用APT包管理工具即可直接安装Debian维护的软件, 如 GCC、Python、Opencv、Nginx以及Docker等,免去了传统嵌入式应用部署时自行编译源码的繁琐操作, 提高了稳定性。

具体的软件版本信息可在Debian官网查找到: https://www.debian.org/distrib/packages#search_packages

直接在板卡上安装编译工具链,还能免去交叉编译的麻烦。

3.2. U盘、虚拟串口及虚拟网卡

LubanCat OS提供了USB转U盘、虚拟串口以及虚拟网卡功能。

使用时通过USB线把PC与开发板的USB Device(OTG)接口连接起来, 板卡系统正常启动后,在PC的设备管理器可查看到如下设备:

查看设备管理器

图中依次为板卡适配到PC上的U盘、USB虚拟串口以及USB虚拟网络设备。

3.2.1. U盘功能

U盘功能,即板卡成为了U盘,并挂载了自己的/boot目录内容, 连接后在PC上会出现一个名为“BOOT”的U盘,PC可通过U盘的形式访问板卡中/boot目录的文件:

在PC上以U盘的形式查看板卡的/boot目录

常见应用:

  • /boot目录里包含了uEnv.txt配置文件,可在PC上修改文件快速调整系统配置,具体见《uEnv.txt配置文件

  • /boot目录包含了start.html文件(部分板卡可能没有),在PC上使用浏览器打开可以跳转到对应板卡的说明页面

  • 在PC与板卡之间传输小文件

注意,LubanCat OS视不同设备给/boot目录分配了不同容量,但空间都不大, 只是作为一种途径连通PC与板卡,使用完毕后尽量保持该目录的整洁。

3.2.2. 虚拟串口

板卡虚拟出的串口在PC的COM号可通过设备管理器查看到,如图 查看设备管理器 中是COM3。

而该串口在板卡中的设备名为 /dev/ttyGS0 ,它的使用方法与其它串口并无不同,参考串口的使用章节说明即可。

3.2.3. 虚拟网卡

查看设备管理器 中,虚拟网卡设备出现黄色感叹号,需要安装RNDIS驱动: RNDIS驱动下载

虚拟网卡功能会把PC与板卡通过USB组建至一个局域网中,该局域网的网关为192.168.7.1, 板卡的IP则为 192.168.7.2 ,有了该功能后,只要使用USB线连接板卡和PC, 就可以通过板卡的IP或主机名进行SSH访问。

若PC本身能连接互联网,只要在PC上设置网络桥接,那么板卡也能通过桥接网络访问互联网和PC所在的其它网络。

网络桥接的方式可参考右侧的文章:https://jingyan.baidu.com/article/c33e3f48db4af5ea15cbb53d.html

在板卡上可使用ifconfig命令查看USB网卡的具体信息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 # 在板卡上执行以下命令,查看USB网卡信息
 ifconfig

 # 以下为输出信息中,USB网卡内容
 usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 192.168.7.2  netmask 255.255.255.252  broadcast 192.168.7.3
         inet6 fe80::1ca3:d1ff:fe73:cbad  prefixlen 64  scopeid 0x20<link>
         ether 1e:a3:d1:73:cb:ad  txqueuelen 1000  (Ethernet)
         RX packets 10710  bytes 2302240 (2.1 MiB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 379  bytes 110673 (108.0 KiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3.3. fire-config配置程序

LubanCat OS自带了fire-config程序,它为终端提供了一个易于操作的方式进行各种系统配置, 包括且不限于以下内容:

  • 修改用户名

  • 配置网络、WiFi

  • 配置本地化

  • 配置系统硬件总线

  • 配置外部硬件设备

  • 使能备份或量产烧录

  • 配置默认启动服务

在板卡上使用sudo权限执行fire-config即可。

 # 在开发板执行以下命令
 # 注意:由于该工具会改变一系列不属于当前用户的文件,sudo是必须要加的。
 sudo fire-config

 # 以下为命令输出
 ┌──────┤ pi Embedfire imx6ull Software Configuration Tool (fire-config) ├──────┐
 │                                                                              │
 │         1 Change User Password Change password for the user debian           │
 │         2 Network              Configure network settings                    │
 │         3 Boot                 Configure options for start-up                │
 │         4 Localisation         Set up language and regional settings         │
 │         5 Bus                  Configure connections of bus                  │
 │         6 Device               Configure peripheral device                   │
 │         7 Advanced             Configure advanced settings                   │
 │         8 Shell                Config serial-tty and ssh                     │
 │         9 Help & Update        Fire-config Help and Update                   │
 │                                                                              │
 │                                                                              │
 │                                                                              │
 │                                                                              │
 │                     <Select>                     <Finish>                    │
 │                                                                              │
 └──────────────────────────────────────────────────────────────────────────────┘

该工具使用键盘的“上下”箭头键来挑选菜单,“左右”或“Tab”用于切换按钮, 使用“Enter”进行确定,使用“ESC”退出。

设置后一定要选择“Finish”来保存确认,若强制退出可能导致配置不会生效,部分功能配置后可能会提示确认重启。

3.4. 开机自启程序

LubanCat OS carp版本与debian 10一样,采用systemd的方式控制系统服务与自启程序。

配套的带Qt APP的系统默认启动了一个名为bootlogo与actlogo服务,可通过systemctl命令查看:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 # 在开发板执行命令
 systemctl status bootlogo

 # 以下为命令输出
 ● bootlogo.service - Starts Psplash Boot logo
 Loaded: loaded (/lib/systemd/system/bootlogo.service; enabled; vendor preset:
 Active: failed (Result: exit-code) since Fri 2021-01-08 08:56:03 UTC; 4min 2s
 Process: 209 ExecStart=/bin/sh /opt/scripts/boot/psplash.sh (code=exited, stat
 Main PID: 209 (code=exited, status=254)

 Jan 08 08:56:03 npi systemd[1]: Started Starts Psplash Boot logo.
 Jan 08 08:56:03 npi systemd[1]: bootlogo.service: Main process exited, code=exit
 Jan 08 08:56:03 npi systemd[1]: bootlogo.service: Failed with result 'exit-code'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 # 在开发板执行命令
 systemctl status actlogo

 # 以下为命令输出
 systemctl status actlogo
 ● actlogo.service - Terminate Psplash Act Screen
 Loaded: loaded (/lib/systemd/system/actlogo.service; enabled; vendor preset:
 Active: failed (Result: exit-code) since Fri 2021-01-08 08:56:16 UTC; 9min ag
 Process: 292 ExecStart=/bin/bash /opt/scripts/boot/psplash_quit.sh (code=exite
 Main PID: 468 (code=exited, status=1/FAILURE)

 Jan 08 08:56:14 npi sudo[428]:     root : TTY=unknown ; PWD=/ ; USER=root ; COMM
 Jan 08 08:56:15 npi sudo[428]: pam_unix(sudo:session): session opened for user r
 Jan 08 08:56:15 npi sudo[428]: pam_unix(sudo:session): session closed for user r

可看到bootlogo服务调用了/opt/scripts/boot/psplash.sh脚本,开机启动时的进度条程序就是由它调用执行的。

而actlogo服务调用了/opt/scripts/boot/psplash_quit.sh脚本,野火的Qt app界面程序就是由它调用执行的。

通过修改这两个服务调用的脚本代码,可以控制系统默认启动您自己的应用程序。 当然,也可以创建自己专用的systemd服务启动。

若不希望开机启动运行这两个服务,执行如下命令即可:

1
2
3
4
 # 禁用bootlogo服务
 systemctl disable bootlogo
 # 禁用actlogo服务
 systemctl disable actlogo

3.5. uEnv.txt配置文件

LubanCat OS在u-boot引导阶段,通过/boot/uEnv.txt文件和boot.scr文件配置额外参数, uEnv.txt可以编辑,用户可通过该文件指定内核等以及要加载的设备树插件,达到根据外接硬件调整加载驱动的目的。

LubanCat系统的/boot/uEnv.txt文件(节选)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 # 使用的内核版本
 uname_r=4.19.35-imx-r1
 # 主设备树,uboot会根据flash选择emmc或nand版本,sd卡使用的主设备树与emmc一样
 mmc_dtb=imx6ull-mmc-npi.dtb
 nand_dtb=imx6ull-nand-npi.dtb

 ###U-Boot Overlays###
 ###Documentation: https://doc.embedfire.com/linux/imx6/driver/zh/latest/linux_driver/dynamic_device_tree.html
 ###Master Enable
 enable_uboot_overlays=1
 #overlay_start

 # 设备树插件,通过加载设备树插件设置系统是否加载某个硬件驱动
 # 使用#号表示注释、不加载

 dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-i2c1.dtbo
 dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-i2c2.dtbo
 dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-74hc595.dtbo
 #dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-485r1.dtbo
 #dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-485r2.dtbo
 dtoverlay=/usr/lib/linux-image-4.19.35-imx-r1/overlays/imx-fire-adc1.dtbo

 #overlay_end

 # 以下配置仅当镜像在SD卡时生效,用于把sd卡的镜像烧录至NAND或eMMC,
 # continued为持续烧录(主要用于量产多个板卡),once为只烧录一次
 # 去掉#号注释并重启后生效

 #flash_firmware=continued
 #flash_firmware=once

查看uEnv.txt文件的内容,它主要分为以下配置功能:

  • 第2行:指定板卡使用的内核版本。

  • 第4~5行:指定板卡使用的主设备树,uboot会根据存储器类型加载mmc或nand版本,其中sd卡也属于eMMC设备类型。 主设备树通常只配置了CPU、内存以及FLASH存储设备。

  • 第10行:使能uboot的插件设备树功能,它是后面加载设备树插件的基础,不熟悉的话不要改动。

  • 第11~23行:要加载的设备树插件,“dtoverlay=”后的为要加载的设备树插件名称,“#”号开头的行为注释,不会加载。 设备树插件与主设备树一起,共同组成了整个板卡加载的硬件驱动,这种插件的形式为系统定制提供了极大的灵活度。

  • 第29~30行:这两行默认都是注释的,且仅当系统运行在sd卡时生效,打开配置后系统重启或上电时会执行烧录流程, 把sd卡的内容完整烧录至板载的NAND或eMMC存储设备,“flash_firmware=”后面的“continued”或“once”分别表示把sd卡设置为持续的烧录模式还是只烧录一次。

fire-config配置程序 对默认硬件设备驱动的使能与关闭以及烧录功能,就是通过改动uEnv.txt文件实现的, 若熟悉uEnv.txt文件规则,直接修改该文件会更方便。

3.5.1. 通过uEnv.txt配置设备树插件

野火linux开发板可通过uEnv.txt配置设备树插件,使能或关闭板子上的某些功能。 以LED设备为例,默认情况下板子使能了led相关设备树插件,如下所示

dtoverlay=/usr/lib/linux-image-4.19.35-imx6/overlays/imx-fire-led.dtbo

若用户不想使用led相关的设备,可在前面添加‘#’以注释,重启开发板之后就找不到led相关设备了, 如下所示

#dtoverlay=/usr/lib/linux-image-4.19.35-imx6/overlays/imx-fire-led.dtbo

对其他设备的操作也是类似的。但需注意部分板子外设引脚存在冲突问题,关于板子引脚分配 可参考以下文档: https://doc.embedfire.com/linux/imx6/hardware/zh/latest/board/ebf6ull_pin_tool.html

3.5.2. 通过uEnv.txt配置环境参数:修改mac地址

uEnv.txt文件本质上是配置uboot的环境参数, 基本上所有在uboot中能够设置的参数也能够在uEnv.txt文件中配置。

下面以配置mac为例,通过 /boot/uEnv.txt 设置mac地址,如下所示

/boot/uEnv.txt
1
2
3
4
5
6
7
 #设置第1个网卡的mac地址
 ethaddr=ce:9b:4e:14:94:c1
 #设置第2个网卡的mac地址
 eth1addr=ce:9b:4e:14:94:c2
 #设置第3个网卡的mac地址
 eth2addr=ce:9b:4e:14:94:c3
 #以此类推....

3.6. 参考资料

本文档主要提供有一定经验的使用者快速入门使用,对于初学者可学习以下文档:

《认识系统镜像和固件》

《鲁班猫LubanCat OS镜像日志》

《使用设备树插件》

《探索Systemd》

《Win10禁用驱动程序强制签名》