====Digi ConnectCore 6核心板/单板计算机上手指南====
拿到CC6核心模块开发套件,首先是烧入最新的嵌入式Linux系统镜像(最新的版本是DEY 2.4),并测试一下性能。DEY提供非常简单的卡烧方式来测试预编译的Linux镜像功能。如果您拿到的是封好外壳的单板机,一般情况下已经预置好一个可用的嵌入式Linux镜像,您可以跳过卡刷这一步,尝试用网络更新固件的方式来烧入新的固件或是直接测试例程和功能。\\
上电后CC6单板机的console口会输出相关的启动信息,我们需要一个串口终端程序来显示它。在Windows下可以是超级终端或putty等。在Linux下常用的是minicom程序。如果您在Linux操作系统中,请按下面命令安装minicom。
sudo apt update
sudo apt install minicom
注意串口终端程序启用时请配置成115200/8/n/1,以便能正确显示核心模块的console口输出。如
sudo minicom -b 115200 -D /dev/ttyUSB0
有些版本minicom默认开启硬件流控,导致console无法响应键盘输入,因此您需要将minicom配置成无流控模式(CTRL+Z O调出minicom配置串口界面进行配置)。\\
从Digi官网的[[ftp://ftp1.digi.com/support/digiembeddedyocto/|FTP服务器]]下载ccimx6sbc-installer.zip卡刷包,也可以从这里下载DEY 2.4.r1[[http://dey-mirror.eccee.com/dey-images/cc6/2.4-r1/cc6-x11-installer.zip|集成dey-examples例程卡刷包]],并解压到一张FAT格式化好的uSD卡根目录上。注意更新包比较大,所以最好用下载工具下载,Linux下可以用uget等下载工具,参考[[digi:arm-embedded:linux:ubuntu常用软件安装配置]]
然后连接好console口到开发用的电脑上,将网口接入内网,上电后马上按任意键停在u-boot界面中并执行:
=> fatload mmc 1 $loadaddr install_linux_fw_sd.scr
=> source $loadaddr
在安装过程中会自动重置环境变量,其中出厂的mac地址等是写保护的,所以会有出错提示,这是正常的,没有关系。固件更新成功后,会自动启动进入Linux系统。默认预编译的镜像用户名是root,密码为空。您可以像在Linux台式机一样对其进行操作。
对于一些较早期出的CC6单板机开发套件,因为内置了较早期的uboot版本,相关的环境参数变量和最新版的有所区别,所以极个别会碰到用SD卡无法成功更新固件,这时可以采用通过网络TFTP的方式手动更新u-boot,然后执行u-boot环境变量实始化,再去更新内核和文件系统或是用卡刷的方式继续更新系统,就能使用最新的固件了。
* 通过网络更新固件
要进一步学习通过网络更新固件,您需要一台电脑跑有TFTP服务器软件,Linux下一般安装tftpboot,windows下则用Digi提供的TFTP server即可。下面以Ubuntu系统的电脑为例:
sudo apt update
sudo apt install tftpd-hpa
sudo nano /etc/default/tftpd-hpa
设置TFTPD_DIRECTROORY="/tftpboot",保存后执行
sudo systemctl restart tftpd-hpa
把uboot等固件文件拷贝到/tftpboot, 这些文件包括.imx,.vfat,.vfat,.ext4
copy <固件文件名> /tftpboot
这样就在电脑TFTP服务端做好了用网络升级的准备
检查以下电脑的IP地址,用ifconfig命令,并记下它。给核心板上电,并按任意键停留在u-boot下,然后设置固定IP或DHCP获取IP和TFTP服务器地址。
如果采用固件IP的方式,只需
=>setenv ipaddr a.b.c.c 注意该IP需和电脑在同一网段
一般地,我们可以将核心板接入内网,使用DHCP来获取IP地址
=> setenv autoload no
=> dhcp
还需设置一下TFTP服务器,再保存参数
=> setenv serverip a.b.c.d
=> saveenv
这样就设置好了核心板的网络,我们在核心板上ping一下电脑,看是否能ping通。注意,UBoot只支持核心板ping电脑,并不通从电脑去ping核心板。
确定ping没有问题后,就可以用update命令更新固件了
update uboot tftp .imx
执行完后,请按reset重启核心板,以便内存加载的是最新的uboot,然后执行环境参数初始化,以便用最新uboot的参数集。
=> env default -a
=> setenv autoload no
=> dhcp
=> setenv serverip a.b.c.d
=> saveenv
接下来,可以继续用TFTP通过网络来刷内核和rootfs固件,首先重新分一下分区,再更新内核和文件系统。
=> setenv mmcdev 0
=> run partition_mmc_linux
=> update linux tftp .vfat
=> update rootfs tftp .ext4
至此,已经可以用boot命令启动了,不过为了充分利用cc6的功能,最好把recovery固件和update分区也重新整好。
=> update recovery tftp .vfat
运行下面命令会进入recovery模式,格式化update分区,然后用最新固件启动
=> setenv recovery_command wipe_update
=> saveenv
=> run recoverycmd
你也可以不进入上述recovery模式,直接用下面命令启动
=> boot
除了在U-Boot中升级固件外,您还可以通过Linux在线升级固件,请阅读[[http://cms.digi.com/resources/documentation/digidocs/90002284/|官方文档]]或[[digi:arm-embedded:linux:dey:固件更新|DEY固件升级]]
DEY支持客户自定义内核功能和定制文件系统,通常测试一个新内核或文件系统,您只需刷linux分区和rootfs分区,而无需每次都去更新uboot。刷好系统后,您可以测试一些Digi预编译的例程,也可以用Digi提供的SDK交叉编译您的应用程序并上传到板子上运行。
**测试LVDS液晶屏**
Digi预编译两种Linux系统镜像:支持人机界面的dey-image-qt和无显示的core-image-base。dey-image-qt带有一个sato桌面(基于gnome mobile的轻量级桌面系统)。如果您使用该镜像,默认地,DEY的主显示器是HDMI接口,只要接有HDMI显示器,进入系统后可以看到这个桌面和相关程序。如果你有LVDS液晶屏套件,可以在uboot中将主显示器改为frame buffer 0
=> setenv extra_bootargs $extra_bootargs video=mxcfb0:dev=ldb,if=RGB666 video=mxcfb1:dev=hdmi,1920x1080M@60
=> saveenv
**测试例程**
Digi提供了各种接口的测试[[https://github.com/digi-embedded/meta-digi/tree/rocko/meta-digi-dey/recipes-digi/dey-examples|例程]]。一些系统镜像已经预编译好例程,可以在命令行中直接执行。如果您的文件系统不带有例程,可以烧一下集成好例程的文件系统镜像,也可以利用DEY应用程序开发章节提供IDE来编译所需的例程。\\
部分例程用法请参考[[digi:arm-embedded:dey-examples|Digi嵌入式Linux例程和测试说明]]
除了Digi提供的官方例程外,许多github上的开源程序都可以很轻松集成到DEY文件系统中,请参考DEY系统开发章节。
进一步阅读:\\
[[digi/arm-embedded/cc6/cc6-recovery|如何修复无法启动的CC6系列核心模块]]
[[digi:arm-embedded:linux:dey:dey_app_development|DEY应用程序开发]]
[[digi:arm-embedded:linux:dey:system-development|DEY系统开发]]
其它固件下载:
[[http://dey-mirror.eccee.com/dey-images/cc6/2.4-r1/cc6-headless-installer.zip|DEY-2.4r1 core-image-base卡刷包下载]](不带sato桌面)