4. 鲁班猫系统特色功能¶
4.1. 鲁班猫系统简介¶
鲁班猫系统(LubanCat OS)是野火基于Debian ARM架构制作的Linux发行版, 该系统适配了野火的所有鲁班猫系列微电脑板卡,共同组成嵌入式平台, 为AI、工控、物联网、机器人以及编程教育等应用场景提供了便捷的示例和应用。
野火基于鲁班猫系统提供了大量的行业应用和教程,大大提升了嵌入式应用的部署体验。
4.2. 安装软件¶
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
直接在板卡上安装编译工具链,还能免去交叉编译的麻烦。
4.3. U盘、虚拟串口及虚拟网卡¶
LubanCat OS提供了USB转U盘、虚拟串口以及虚拟网卡功能。
使用时通过USB线把PC与开发板的USB Device(OTG)接口连接起来, 板卡系统正常启动后,在PC的设备管理器可查看到如下设备:

图中依次为板卡适配到PC上的U盘、USB虚拟串口以及USB虚拟网络设备。 在IMX8M MINI板中,该USB Device TypeC接口位于 《IMX8M_MINI硬件资源图》中DC 5V电源的旁边。
4.3.1. U盘功能¶
U盘功能,即板卡成为了U盘,并挂载了自己的/boot目录内容, 连接后在PC上会出现一个名为“BOOT”的U盘,PC可通过U盘的形式访问板卡中/boot目录的文件:

常见应用:
/boot目录里包含了uEnv.txt配置文件,可在PC上修改文件快速调整系统配置,具体见《uEnv.txt配置文件》
/boot目录包含了start.html文件(部分板卡可能没有),在PC上使用浏览器打开可以跳转到对应板卡的说明页面
在PC与板卡之间传输小文件
注意,LubanCat OS视不同设备给/boot目录分配了不同容量,但空间都不大, 只是作为一种途径连通PC与板卡,使用完毕后尽量保持该目录的整洁。
4.3.2. 虚拟串口¶
板卡虚拟出的串口在PC的COM号可通过设备管理器查看到,如图 查看设备管理器 中是COM3。
而该串口在板卡中的设备名为 /dev/ttyGS0
,它的使用方法与其它串口并无不同,参考串口的使用章节说明即可。
4.3.3. 虚拟网卡¶
虚拟网卡功能会把PC与板卡通过USB组建至一个局域网中,该局域网的网关为192.168.7.1,
板卡的IP则为 192.168.7.2
,有了该功能后,只要使用USB线连接板卡和PC,
就可以通过板卡的IP或主机名进行SSH访问。
若PC本身能连接互联网,只要在PC上设置网络桥接,那么板卡也能通过桥接网络访问互联网和PC所在的其它网络。
网络桥接的方式可参考右侧的文章:https://www.firebbs.cn/forum.php?mod=viewthread&tid=34475
在板卡上可使用ifconfig命令查看USB网卡的具体信息:
:linenos:
:emphasize-lines: 6
# 在板卡上执行以下命令,查看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
错误
有些电脑可能没有RNDIS驱动,无法识别USB虚拟网络设备,特别是Win11系统,又或者有些电脑默认是某个RNDIS驱动,不稳定经常断线,所以建议用户更换微软自带的RNDIS驱动。
4.3.4. 更换微软RNDIS驱动¶

如果有RNDIS驱动,但不是微软自带的驱动,而是其他驱动,则可能是带有RNDIS相关字眼的设备,如下图。

右击选中上述RNDIS设备,再选择“更新驱动程序”,然后选择“浏览我的电脑以查找驱动程序”,如下图。

再选择“让我从计算机上的可用驱动程序列表中选取”,如下图。

再在常见硬件类型列表中,往下拉,选择“网络适配器”,如下图。

如果有“显示兼容设备”的选项,需要打勾,没有则直接厂商选择“Microsoft”,型号选择“远程NDIS兼容设备”即可。

如果弹出警告提示windows无法验证这个驱动程序是否与硬件兼容,如下图,在确保一开始选择对RNDIS的设备以及后续步骤正确的情况下,选择“是”即可。

完成以上步骤后可以看到RNDIS设备显示为远程NDIS兼容设备,如下图。

在网络连接管理页面,可以看到RNDIS网卡,如下图。

4.4. 开机自启程序¶
LubanCat OS与debian 10一样,采用systemd的方式控制系统服务与自启程序。
系统默认启动了一个名为generic-board-startup服务,可通过systemctl命令查看:
1 2 3 4 5 6 7 8 9 10 | # 在开发板执行命令
systemctl status generic-board-startup.service
# 以下为命令输出
● generic-board-startup.service - Generic Board Startup
Loaded: loaded (/lib/systemd/system/generic-board-startup.service; enabled>
Active: active (exited) since Tue 2024-01-09 00:00:04 CST; 9min ago
Process: 405 ExecStart=/bin/sh /opt/scripts/boot/generic-startup.sh (code=e>
Main PID: 405 (code=exited, status=0/SUCCESS)
CPU: 359m
|
可看到generic-board-startup服务调用了/opt/scripts/boot/generic-startup.sh脚本,脚本内容包括扩容、配置ssh、烧录系统相关内容。
通过修改这这个服务调用的脚本代码,可以控制系统默认启动您自己的应用程序。 当然,也可以创建自己专用的systemd服务启动。
详细参考:探索Systemd 章节。
4.5. uEnv.txt配置文件¶
LubanCat OS在u-boot引导阶段,通过/boot/uEnv.txt文件和boot.scr文件配置额外参数, 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 31 32 33 34 35 36 37 38 | # 使用的内核版本
uname_r=5.4.47-imx8mm
# 主设备树,uboot会根据flash选择emmc或nand版本,sd卡使用的主设备树与emmc一样
mmc_dtb=freescale/imx8mm-ebf-basic.dtb
nand_dtb=freescale/imx8mm-ebf-basic.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-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-rx8010sj.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-leds.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-keys.dtbo
dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-rs485.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-rs232.dtbo
dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-touch-capacitive-goodix.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-cam.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-hdmi.dtbo
dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-mipi-hx8399.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-sound.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-pcie.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-btwifi.dtbo
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-rpmsg.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存储设备。
第11行:使能uboot的插件设备树功能,它是后面加载设备树插件的基础,不熟悉的话不要改动。
第17~29行:要加载的设备树插件,“dtoverlay=”后的为要加载的设备树插件名称,“#”号开头的行为注释,不会加载。 设备树插件与主设备树一起,共同组成了整个板卡加载的硬件驱动,这种插件的形式为系统定制提供了极大的灵活度。
第37-38行:这两行默认都是注释的,且仅当系统运行在sd卡时生效,打开配置后系统重启或上电时会执行烧录流程, 把sd卡的内容完整烧录至板载的NAND或eMMC存储设备,“flash_firmware=”后面的“continued”或“once”分别表示把sd卡设置为持续的烧录模式还是只烧录一次。
4.5.1. 系统自带的设备树插件简单说明¶
使用相应设备树插件,只需要取消uEnv.txt配置文件里面的“#”即可,而这些设备树插件在鲁班猫系统的目录/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays下,如图:

其中,imx8mm-fire-rs485.dtbo imx8mm-fire-rs232.dtbo 是485/232设备树插件,开启之后系统会有设备文件/dev/ttymxcX(X代表数字)
imx8mm-fire-keys.dtbo 是板载按键KEY的设备树插件,开启后会有设备文件/dev/input/by-path/platform-gpio-keys-event
imx8mm-fire-cam.dtbo 与摄像头使用相关的设备树插件,摄像头开启后对应的设备文件是/dev/videoX(X代表数字)
imx8mm-fire-pwm1.dtbo imx8mm-fire-pwm2.dtbo 是与pwm相关的设备树插件,开启后设备使用在/sys/class/pwm目录下
imx8mm-fire-mipi-hx8399.dtbo imx8mm-fire-mipi-ili9881c.dtbo 屏幕相关的设备树插件,设备文件为/dev/fb0
imx8mm-fire-hdmi.dtbo 与HDMI相关的设备树插件,开启后可以连接HDMI屏幕
imx8mm-fire-touch-capacitive-goodix.dtbo 电容触摸屏相关设备树插件,开启后会有设备文件platform-30370000.snvs:snvs-powerkey-event,这个文件是链接文件会指向/dev/input/event1 不同板子情况可能不同
imx8mm-fire-sound.dtbo 板载音频的设备树插件,开启该插件后在/dev/snd目录下会设备文件,具体使用参考音频播放内容
imx8mm-fire-spi.dtbo 这些是spi相关的设备树插件,开启后会有对应的设备文件/dev/spidevX.0(X代表数字)
imx8mm-fire-uart3.dtbo 这些串口相关的设备树插件,开启之后会有相应的设备文件/dev/ttymxcX (X代表数字)
4.5.2. 通过uEnv.txt配置设备树插件¶
野火linux开发板可通过uEnv.txt配置设备树插件,使能或关闭板子上的某些功能。 以LED设备为例,默认情况下板子使能了led相关设备树插件,如下所示
dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-leds.dtbo
若用户不想使用led相关的设备,可在前面添加‘#’以注释,重启开发板之后就找不到led相关设备了, 如下所示
#dtoverlay=/usr/lib/linux-image-5.4.47-imx8mm/freescale/overlays/imx8mm-fire-leds.dtbo
对其他设备的操作也是类似的。但需注意部分板子外设引脚存在冲突问题。
4.5.3. 通过uEnv.txt配置环境参数:修改mac地址¶
uEnv.txt文件本质上是配置uboot的环境参数, 基本上所有在uboot中能够设置的参数也能够在uEnv.txt文件中配置。
下面以配置mac为例,通过 /boot/uEnv.txt 设置mac地址,如下所示
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
#以此类推....
|