TL62x-EVM的开发初尝试
创龙科技TL62x-EVM是一款基于TI Sitara系列AM62x单/双/四核ARM Cortex-A53 + 单核ARM Cortex-M4F多核处理器设计的高性能低功耗工业评估板,由核心板和评估底板组成。
下面将介绍如何在TL62x-EVM上配置开发环境,安装OpenPLC runtime。
1. 产品测试
遵照官方资料“1-开箱必读”中的《开箱必读》进行产品测试。如下图所示,将电源接口,拨码开关,电源拨动开关移动到相应位置后,核心板的LED辉有规律的闪烁,说明评估板已正常启动,基本功能正常。
2. 安装有关软件
2.1 USB 转串口驱动安装
参照官方文档“3-用户手册”文件夹的《1-1-调试工具安装》进行USB转串口驱动的安装,结果如下所示。
2.2 系统调试工具SecureCRT安装
SecureCRT 是一款支持 SSH 协议的终端仿真软件,可通过串口或网口对评估板系统信息进行查看、对评估板系统进行调试等。
参照官方文档“3-用户手册”文件夹的《1-1-调试工具安装》进行SecureCRT的安装(注意,需要自己购买License 序列号)。如下进行串口连接设置。
结果如下所示:
如果此时开启嵌入式开发板,该窗口有如下显示:
说明使用 Linux 系统启动卡启动评估板成功。
2.3 Linux开发环境搭建
对于普通的嵌入式开发板,可以利用keil进行编程、编译、下载;对于TL62x,需要借助有关的交叉编译工具链才可以编译 U-Boot、内核和应用程序。而Linux Processor SDK 开发包已自带交叉编译工具链,需进行配置方可使用。
为了使用Linux Processor SDK,我们首先需要借助VMware安装Ubuntu虚拟机,然后再在虚拟机上安装Linux Processor SDK。
1. 安装VMware虚拟机
之前已经安装过,在此忽略。
2. 基于虚拟机安装 Ubuntu18.04.4 操作系统
参照官方文档“3-用户手册”文件夹的《1-2-Linux开发环境搭建》进行Ubuntu18.04.4的安装。
3. 安装虚拟机工具
如未安装虚拟机工具,进入系统后,屏幕将无法全屏显示,且不能通过共享目录以 及拖曳方式在 Windows 和虚拟机 Ubuntu 系统之间传输文件。
4. 设置虚拟机共享目录
这样可以直接利用共享目录在主机和虚拟机之间传输文件,而不需要借助xftp了。
但是按照“3-用户手册”文件夹的《1-2-Linux开发环境搭建》进行共享目录的设置时,发现/mnt目录下并没有hgfs目录,于是参照博客:https://blog.csdn.net/challenglistic/article/details/129026025 解决问题。
解决完成后,在主机的共享文件夹中新建文件,可以发现在虚拟机上的相关文件夹也出现了文件,如下。
注意:由于我没有实现虚拟机开机自动挂载目录,在需要利用共享目录在主机和虚拟机传输文件时需要借助如下指令:
sudo vmhgfs-fuse .host:/ /mnt/hgfs
5. Linux Processor SDK安装
参照“3-用户手册”文件夹的《1-2-Linux开发环境搭建》进行SDK的安装即可。结果如下:
6. 交叉编译工具链配置
参照“3-用户手册”文件夹的《1-2-Linux开发环境搭建》进行交叉编译工具链的配置即可。结果如下,其中 arm-none-linux-gnueabihf-gcc-9.2.1 为 Cortex-R5F 核心对应的交叉编译工具链,aarch64-none-linux-gnu-gcc-9.2.1 为 Cortex-A53 核心对应的交 叉编译工具链:
2.4 简单测试
按照“3-用户手册”文件夹的《2-1-评估板测试手册》进行按键测试。
1. 利用SecureCRT登录评估版的文件系统
2. 进行按键测试
执行如下命令,分别按下 USER1、USER2 用户输入按键进行按键测试,串口终端将会 打印如下类似信息。按"Ctrl + C"可终止测试命令。
od -x /dev/input/event1
3. 安装OpenPLC runtime
3.1 评估版连接WiFi
评估板板载 WIFI 模块,型号为:必联 BL-R8188EU2,支持 STA 模式和 AP 模式。
(1)STA 模式:在 STA 工作模式下,WIFI 模块可接收来自无线路由器发出的信号,实现通过路由器连接互联网。
(2) AP 模式:在 AP 工作模式下,WIFI 模块会创建一个无线局域网热点,手机、电脑 等设备可通过此热点组建局域网。
1. 将 2.4G 天线连接至评估板 CON15 接口
2. 文件传输
(1)将SD卡插入主机,将“4-软件资料\Demo\module-demos\usb_wifi_test\”目录的bin目录所有文件和driven目录的所有文件都复制到BOOT分区中。
(2)将系统启动卡插至评估板 Micro SD 卡槽,评估板上电启动系统,进入文件系统执行 如下命令查看分区信息。注意,系统启动卡的 BOOT 分区挂载在评估板文件系统"/run/media/m mcblk1p1/"目录下。
可以看到,有关的文件传输过来了。
3. 加载WIFI驱动
进入评估板文件系统,在 WIFI 驱动 8188eu.ko 文件所在路径下执行如下命令加载 WI FI 驱动。执行如下命令。
执行如下命令关闭其他网络,仅保留 WIFI 网络。
在 wifi_setup.sh 文件所在路径下执行如下命令,将评估板通过 WIFI 模块连接至路由器。"-i"指定 WIFI 名称,"-p"指定 WIFI 密码,请根据实际情况修改。
4. 网络连通测试
在虚拟机上执行如下命令:
在串口终端执行如下命令:
发现已经ping通(按Ctrl+C可停止ping),说明连接成功。
3.2 安装OpenPLC runtime
在串口终端输入如下命令:
git clone https://github.com/thiagoralves/OpenPLC_v3.git
结果如下:
接着执行有关的安装脚本:
发现存在问题:Unsupported linux distro. 即不受支持的linux版本。
回到OpenPLC的源码,发现有关的错误提示信息在以下代码中:
这段代码是一个shell脚本中的条件判断部分,用于根据不同的Linux发行版来安装依赖项。
如果系统中存在yum命令,则表示是基于Red Hat系列的发行版,会执行yum命令来安装一系列依赖包。
如果系统中存在apt-get命令,则表示是基于Debian系列的发行版,会执行apt-get命令来安装一系列依赖包。
如果系统中存在zypper命令,则表示是基于openSUSE的发行版,会执行zypper命令来安装一系列依赖包。
如果系统不是这三种发行版之一,则会输出"Unsupported linux distro."的错误信息。
后发现,创龙官方提供的linux是基于 Ubuntu 官方移植的,支持 Qt 开发,但不支持桌面功能。即这种Ubuntu文件系统不属于传统的Linux发行版,如Red Hat、Debian和openSUSE。它是基于Ubuntu官方移植而来的,专门为支持Qt应用程序的开发和运行而设计。虽然它仍然是基于Linux内核的操作系统,但在功能和用途上与传统的Linux发行版有所不同。
查看linux版本可知为arango:
Arago是一个基于 Linux 的嵌入式操作系统,通常用于嵌入式系统和物联网设备。它是由 Texas Instruments开发,专为其 ARM 架构处理器设计。
于是准备转换移植其他的linux操作系统。
3.2.1 移植Ubuntu
1. 制作Ubuntu系统启动卡
(1)将产品资料“4-软件资料 \Linux\Makesdboot\”目录下的 mksdboot_10_12_12.tar.gz 制卡工具包通过共享目录从主机拷贝到虚拟机上
(2)厘清两个概念:从eMMC启动评估版VS从SD卡启动评估版
-
启动速度:eMMC存储器的读写速度通常比SD卡更快,因此从eMMC启动评估版通常会比从SD卡启动评估版更快。
-
可靠性:eMMC存储器通常比SD卡更稳定和可靠,因为它们使用了更先进的闪存技术和更可靠的控制器。这意味着从eMMC启动评估版相对于从SD卡启动评估版更不容易出现故障或数据损坏。
-
存储容量:eMMC存储器的容量通常比SD卡大,这意味着从eMMC启动评估版可以存储更多的数据和应用程序。
-
兼容性:从SD卡启动评估版通常更具有通用性,因为大多数设备都支持SD卡插槽,而eMMC存储器则可能因为特定设备的设计限制而无法使用。
(3)将有关文件替换ubuntu系统的文件
创建AM62x文件夹,将制卡工具包mksdboot_10_12_12.tar.gz复制到AM62x文件下
将制卡工具包解压到当前目录
然后查看解压后的制卡工具包的具体内容:
然后将制卡工具包"filesystem/rootfs/rootfs-yocto-dunfell-3.1-v1.2-gf5cf17b.tar.gz"文件删 除,同时将位于产品资料“4-软件资料\Linux\Filesystem\Ubuntu\”目录下的 rootfs-ubuntu[1]base-20.04.2-g010ff4e-v1.0.tar.gz 文件拷贝至制作工具包"filesystem/rootfs/"目录下,完成 Ubuntu 根文件系统替换。
利用sudo vmhgfs-fuse .host:/ /mnt/hgfs 挂载目录时,共享目录总是要过一会儿才能正常使用,也不知道为什么
(4)Micro SD 卡挂载和设备节点名确认
将 Micro SD 卡通过读卡器连接至 PC 机,Ubuntu 系统识别后,一般会自动挂载 Micr o SD 卡分区,如下图所示。
执行如下命令,确认 Micro SD 卡在 Ubuntu 系统的设备节点名。
结果如下:
可看到 Micro SD 卡设备节点是"/dev/sdb",并且有三个分区,分别为 sdb1、sdb2 和 sdb3 分区。
(5)PV 工具安装
PV(Pipe Viewer)是一种基于终端的工具,用于通过管道监测数据的进度。 为了更直观地显示系统启动卡的制作进度,Linux 系统启动卡制作过程中会使用到 PV 工具。
执行如下命令可以通过网络安装 PV 工具,如未安装 PV 工具将会导致系统启动卡制作失败。
(6)Ubuntu系统启动卡制作
按照如下命令制作Ubuntu系统启动卡。注意:命令中"/dev/sdb"为 Micro SD 卡设备节点,请确 认命令中设备节点无误后,再执行命令。若错误输入其他存储介质设备节点,将会造成存储介质数据损坏。
根据提示按回车键,进行 Ubuntu 系统启动卡制作。
执行如下命令,查看Ubuntu系统启动卡的分区:
只有Ubuntu 18.04.4
(7)断开 Micro SD 卡与 Ubuntu 之间的连接,完成 Linux 系统启动卡制作
2. 从Ubuntu系统启动评估版
评估板断电,将 Linux 系统启动卡插至评估板 Micro SD 卡槽,根据评估底板丝印将启动方式选择拨码开关拨为 001X1(1~5),此档位为 SD 启动模式。
使用 Type-C 线连接评估板的 USB TO UART0 调试串口至 PC 机,然后利用SecureCRT连接评估版。
串口打印信息:
查看此时的操作系统版本:
发现是Ubuntu,可知操作系统移植成功!
3.2.2 评估版连接网络
1. 尝试按照前面的方法将评估版连接到Wifi
本来想按照3.1节将评估版连接wifi,但此时缺少wifi的驱动,所以打算直接将有关的源码通过SD卡移动,如下。
本来打算直接按按照OpenPLC的runtime,后来发现安装runtime必须要连接网络,所以还是需要去连接wifi。
首先找到了有关无线网络驱动的详解:
https://www.python100.com/html/109996.html
后发现具体问题如下:
出现了错误:
modprobe: FATAL: Modeule 8188eu not found in directory /lib/modules/5.10.168-rt83-g3d1626c9284a
这个错误的含义是:
无线驱动程序未正确安装。之前AM62x官方提供的Linux应该已经安装了有关的驱动,但因为我重装了Ubuntu系统,所以需要重新安装有关驱动。(这里比较离谱的地方是:我就是为了联网才要装驱动,网上一堆方法是让我联网状态下装驱动。。。)
参照以下博客,在离线状态下安装无线网络的驱动:
https://blog.csdn.net/IMchg/article/details/106276015
官方资料中已经提供了网卡有关驱动的源文件,在”TL62x-EVM_V1.4\4-软件资料\Demo\module-demos\usb_wifi_test\src\rtl8188eus”文件夹中,如下:
下载DKMS,在如下网址:
https://launchpad.net/ubuntu/yakkety/amd64/dkms/2.2.0.3-2ubuntu11
于是通过SD卡,将有关的文件传输到评估版上。
本想直接安装dkms,但是发现存在以下问题:
gcc和patch没有安装,但离线安装gcc和patch太麻烦了,于是准备用另一种方法联网。
2. 利用网线将评估版连接到互联网
参考官方资料“TL62x-EVM_V1.4\3-用户手册”文件夹的《2-1-评估板测试手册.pdf》的1.14节 网络接口测试,直接利用网线进行联网。(但这种方法不适合长期使用,回校后没有路由器了,还是需要成功连接到wlan)
(1)准备工作:
①官方资料“TL62x-EVM_V1.4\5-硬件资料”中的《TL62x-EVM工业评估板硬件说明书.pdf》中,15.1节介绍了评估版上的RGMII 千兆网口,如下图:
其中下层为 ETH0 RGMII 千兆网口,上层为 ETH1 RGMII 千兆网口。
②找到一个其上有千兆网口的路由器:
③硬件中提供了网线,如下所示:
④ 利用网线连接路由器和评估版
(2)网络连通测试
按理说,利用网线连接评估版和路由器后,评估版就连通网络了。接下来利用SecureCRT使PC和评估版串口相连接,进入评估版文件系统,执行如下命令:
由于我连接的是eth1,所以关闭eth0和eth2。
接下来,测试网口连接外网是否正常。以访问 www.baidu.com 为例,执行如下命令,"-I"代表指定网口,不加"-I"则使用默认网卡。可按"Ctrl + C"终止 ping 命令。
ping通了,说明连接成功。
3. 安装wifi的驱动
这里又找到了一个安装驱动的博客:https://www.zhihu.com/question/481716897/answer/3306655737
进行如下操作:
发现有些依赖包没有安装,于是安装:
安装完依赖后,继续安装dkms
然后安装dpkg
然后安装驱动
但是出现了问题:
Error! Your kernel headers for kernel 5.10.168-rt83-g3d1626c9284a cannot be found.
Please install the linux-headers-5.10.168-rt83-g3d1626c9284a package,
or use the --kernelsourcedir option to tell DKMS where it's located
Error! Your kernel headers for kernel 5.10.168-rt83-g3d1626c9284a cannot be found.
Please install the linux-headers-5.10.168-rt83-g3d1626c9284a package,
or use the --kernelsourcedir option to tell DKMS where it's located
Finished running dkms install steps.
又卡住了...
3.2.3 安装OpenPLC runtime
因为目前无法用wifi连接网络,于是用网线连接网络,然后直接安装OpenPLC runtime:
安装结果如下:
安装成功!
3.2.4 OpenPLC runtime测试
查看评估版的ip:
尝试通过ip:8080与评估版的openplc runtime的网络服务器连接,但被拒绝了:
重复启动评估版后,发现可以通过ip:8080与评估版的openplc runtime的网络服务器连接了,应该是之前没有openplc runtime服务没有启动的原因。