鲁班猫系统(LubanCat OS)是野火基于Debian ARM架构制作的Linux发行版,该系统适配了野火的所有鲁班猫系列微电脑板卡,共同组成嵌入式平台,为AI、工控、物联网、机器人以及编程教育等应用场景提供了便捷的示例和应用。
野火基于鲁班猫系统提供了大量的行业应用和教程,大大提升了嵌入式应用的部署体验。
4.2. 安装软件¶LubanCat OS完全支持debian的apt与dpkg在线与离线安装软件。
12345678 # 在线安装软件(需联网) # 第一次使用需要更新软件列表 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虚拟网络设备。
在EBF6ULL Mini板中,该接口在《 EBF6ULL_Mini硬件资源图_ 》右上角的USB Device TypeC接口。
在EBF6ULL Pro板中,该接口在 《 EBF6ULL_Pro硬件资源图_ 》 右下角的micro USB接口。
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. 虚拟网卡¶若 查看设备管理器 中,虚拟网卡设备出现黄色感叹号,需要安装RNDIS驱动:RNDIS驱动下载
虚拟网卡功能会把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网卡的具体信息:
1 2 3 4 5 6 7 8 9101112 # 在板卡上执行以下命令,查看USB网卡信息 ifconfig # 以下为输出信息中,USB网卡内容 usb0: flags=4163 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 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 04.4. 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 DeviceConfigure peripheral device│ │ 7 Advanced Configure advanced settings│ │ 8 ShellConfig serial-tty and ssh │ │ 9 Help & UpdateFire-config Help and Update│ │ │ │ │ │ │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────────────────┘该工具使用键盘的“上下”箭头键来挑选菜单,“左右”或“Tab”用于切换按钮,使用“Enter”进行确定,使用“ESC”退出。
设置后一定要选择“Finish”来保存确认,若强制退出可能导致配置不会生效,部分功能配置后可能会提示确认重启。
4.5. 开机自启程序¶LubanCat OS与debian 10一样,采用systemd的方式控制系统服务与自启程序。
配套的带Qt APP的系统默认启动了一个名为bootlogo与actlogo服务,可通过systemctl命令查看:
1 2 3 4 5 6 7 8 910111213 # 在开发板执行命令 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 91011121314 # 在开发板执行命令 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服务启动。
若不希望开机启动运行这两个服务,执行如下命令即可:
1234 # 禁用bootlogo服务 systemctl disable bootlogo # 禁用actlogo服务 systemctl disable actlogo4.6. 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 9101112131415161718192021222324252627282930 # 使用的内核版本 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文件规则,直接修改该文件会更方便。
4.6.1. 系统自带的设备树插件简单说明¶使用相应设备树插件,只需要取消uEnv.txt配置文件里面的“#”即可,而这些设备树插件在鲁班猫系统的目录/usr/lib/linux-image-4.19.35-imx6/overlays/下,如图:
其中,imx-fire-485r1.dtbo、imx-fire-485r2.dtbo 是485设备树插件,开启之后系统会有设备文件/dev/ttymxc1和/dev/ttymxc2
imx-fire-key.dtbo 是板载按键KEY的设备树插件,开启后会有设备文件/dev/input/by-path/platform-sgpio-keys-event
imx-fire-adc1.dtbo 是与adc相关的设备树插件,开启后ADC设备在系统上的目录/sys/bus/iio/devices/iio:device0下
imx-fire-cam.dtbo、imx-fire-74hc595.dtbo 与摄像头使用相关的设备树插件,摄像头开启后对应的设备文件是/dev/video1
imx-fire-dht11.dtbo 温湿度传感器的设备树插件,开启后会有设备文件/dev/dht11
imx-fire-can1.dtbo、imx-fire-can2.dtbo 与can相关的设备树插件,开启后可以使用命令 ifconfig -a查看can总线设备
imx-fire-pwm-led.dtbo、imx-fire-pwm.dtbo 是与pwm相关的设备树插件,开启后设备使用在/sys/class/pwm目录下
imx-fire-lcd.dtbo 屏幕相关的设备树插件,设备文件为/dev/fb0
imx-fire-hdmi.dtbo 与HDMI相关的设备树插件,开启后可以连接HDMI屏幕
imx-fire-touch-capacitive-goodix.dtbo 电容触摸屏相关设备树插件,开启后会有设备文件/dev/input/by-path/platform-21a0000.i2c-event,这个文件是