分享

「嵌入式」基于国产全志科技T3——从开发板到PLC测试案例

 创龙科技 2022-11-26 发布于广东

在这里首先感谢创龙和电子发烧友论坛提供的测试机会,同时感谢创龙厂家和技术给予资源和帮助,我也希望我的困惑和解决方法可以帮助其他使用这块板卡的开发者们少走点弯路。再次感谢电子发烧友论坛 支撑的这个平台生态。
1. 前言
创龙的板卡第一次接触,做工不错,接口也很齐全,说明文档这几天看下来也够用,技术支持回复很及时。这个
开发板是10月中收到的,因为通过百度云下载的相关开发资料比较大,整个板卡测试开始的时间就到这几天了。这两个帖子测试过程中,我只使用了开发板和电源


首先明确我已经过了硬件性能为王的岁数,一个开发板卡的好坏与否,我依据以下的几个标准:

  • 开发平台易于搭建

  • 库支持程度和编译器的兼容性

  • 技术支持态度、水平和响应时间
    2. 开发目标

整个评测的最终目标是完成一个PLC的移植和运行,只要保证整个控制器跑起来就可以了。可能需要解决的问题包括控制器开发、IO开发、i2c或者spi、网络开发(冗余不做)、设备端人机界面不做。如果把hmi部分算上,这个TLT3-EVM的接口应该都可以用到了。评测报告我争取随开发进度完成,我会尽力完成这个开发评测。如果设备够并且厂家允许,破坏性测试也试一下(狗头)。
3. 产品简介


这部分我抄写评估版规格书,主要方便大家知道规格参数。


创龙科技 TLT3-EVM 是一款基于全志科技 T3 处理器设计的 4 核
ARM Cortex-A7 国产工业评估板,每核主频高达 1.2GHz,由核心板和评估底板组成。核心板 CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率 100%。同时,评估底板大部分元器件亦采用国产工业级方案。核心板经过专业的 PCB Layout 和高低温测试验证,稳定可靠,可满足各种工业应用环境。、


评估板接口资源丰富,引出双路网口、双路 CAN、双路 USB、双路 RS485 等
通信接口,板载 Bluetooth、WIFI、4G(选配)模块,同时引出 MIPI LCD、LVDS LCD、TFT LCD、CVBS OUT、CAMERA、LINE IN、H/P OUT 等音视频多媒体接口,支持双屏异显、Mali400 MP2 GPU、1080P@45fps H.264 视频硬件编解码,并支持 SATA 大容量存储接口,方便用户快速进行产品方案评估与技术预研。

图 TLT3-EVM 板卡

4. 本节目标

  • 开发环境的搭建

  • 用最新的ubuntu看看可以搭建开发环境

  • 用QT进行远程调试环境的搭建

5.检查Linux版本


使用 cat /etc/issue 查看信息如下,这应该是全志自己的linux版本。

5.开发环境的搭建(Ubuntu18)


我先从官方技术支持处申请了一个虚拟机,直接按官方提供的linux应用开发手册的过程进行编译和运行,已经可用编译程序了。我最终还是选择手撸一遍开发环境的搭建。
搭建虚拟机和解压SDK

  • 先下载一个ubuntu,这里使用的是18.04.6,下载地址 https://releases./18.04/ubuntu-18.04.6-desktop-amd64.iso

  • 在vmware里面安装ubuntu的操作,这里不罗列了。

  • 开发环境安装:(这里使用的用户名是test3)

  • 建立虚拟机共享,用于共享安装文件包,这些文件包在光盘或者网盘上,我这里使用的U盘挂载,虚拟机中使用U盘比较方便一点,不需要配置什么。

在创龙资料盘里面TLT3-EVM_V1.44-软件资料LinuxLinuxSDK,存放的就是我们下面需要SDK文件。可以通过U盘拷贝到虚拟机的/home/test3/T3目录下

输入命令如下:

  • mkdir /home/test3/T3

  • tar -zxvf LinuxSDK_14_24_15_16.tar.gz -C /home/test3/T3

等待一会,解压完成后在/home/test/T3看见解压包的内容
安装开发工具
在T3目录运行install-tools.sh,需要选择的时候直接回车即可。

这里将会安装SDK需要的环境。下面是我们真正的配置开发环境的步骤。
配置编译环境
在lichee 目录运行./build.sh config 这里我选择hdmi做视频输出。

  • test3@ubuntu:~/T3/lichee$ ./build.sh config

  • Welcome to mkscript setup progress

  • All available chips:

  • 0. sun8iw11p1

  • Choice: 0

  • All available platforms:

  • 0. linux

  • Choice: 0

  • All available kernel:

  • 0. linux-3.10

  • Choice: 0

  • All available boards:

  • 0. t3-mp1

  • 1. t3-p1

  • 2. t3-p2

  • 3. t3-p3

  • 4. tlt3_a40i-evm

  • Choice: 4

  • All available rootfs:

  • 0. buildroot

  • 1. buildroot-201611

  • 2. debian_fs

  • Choice: 1

  • select buildroot-201611

  • All available float:

  • 0. gnueabi

  • 1. gnueabihf

  • Choice: 1

  • select gnueabihf

  • All available qt version:

  • 0. 5.9.0

  • 1. 5.9.7

  • Choice: 0

  • select 5.9.0

  • All available output configs:

  • 0. hdmi

  • 1. vga

  • 2. lvds_lcd

  • 3. mipi_lcd

  • 4. tft_lcd

  • Choice: 0

  • All available output configs:

  • 0. t3

  • 1. a40i

  • Choice: 0

  • create misc_config gnueabihf

  • test3@ubuntu:~/T3/lichee$

输入为0、0、0、4、1、1、0、0、0,
配置编译环境2——编译Uboot
在u-boot-2015.07目录,清理目录后重新配置SPL编译选项

  • test3@ubuntu:~/T3/lichee$ cd brandy/u-boot-2014.07/

  • test3@ubuntu:~/T3/lichee/brandy/u-boot-2014.07$ make distclean

  • test3@ubuntu:~/T3/lichee/brandy/u-boot-2014.07$ make sun8iw11p1_config

  • Configuring for sun8iw11p1 - Board: sun8iw11p1, Options: SUN8IW11P1

然后执行make spl进行编译

编译完成后,生成 SPL 镜像文件"tools/pack/chips/sun8iw11p1/bin/boot0_sdcard_sun8iw11p1.bin",该文件需转化为.fex 格式后使用。(这句话抄资料的,现在的活还没有到烧卡运行那步)
Boot编译,在u-boot-2014.07 目录运行make -j8 ,开始uboot编译,编译完成后,生成 U-Boot 镜像文件"tools/pack/chips/sun8iw11p1/bin/u-boot-sun8iw11p1.bin",该文件需转化为.fex 格式后使用

  • make -j8

编译SDK执行下列命令

  • cd ../../linux-3.10/

  • make distclean

  • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun8iw11p1smp_defconfig

执行如下命令,配置内核选项。根据"arch/arm/configs/sun8iw11p1smp_defconfig"文件进行内核编译配置,并保存配置信息至当前目录.config 文件中
如果需要配置实时内核,参看看厂家手册——Linux系统使用手册(P16页,和树莓派之类的方法是一样的)

执行一下命令,配置系统环境

  • cd ../buildroot-201611/

  • make clean

  • make sun8iw11p1_hf_defconfig

配置内核选项

  • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-sun8iw11p1smp_defconfig

进入 lichee 目录,执行如下命令,一键编译 Linux 内核、内核模块、设备树文件和buildroot 文件系统。执行当前命令不会进行 Qt 编译,编译生成的 buildroot 文件系统镜像比较精简,未支持 Qt 功能。)

  • cd ..

  • ./build.sh

编译时间要由CPU和硬盘速度决定,如果用老机器,估计两个小时都有可能。这一步是生成 Linux 内核、内核模块、设备树文件和 buildroot 文件系统镜像文件,镜像文件需转化为.fex 格式后使用。

最后检查在out/sun8iw11p1/linux/common目录下生产boot.img文件
目录在linux-3.10/output/lib/modules/3.10.65-rt69/
文件linux-3.10/arch/arm/boot/dts/tlt3_a40i-evm.dtb
文件out/sun8iw11p1/linux/common/rootfs.ext4

到这一步已经可用进行console程序开发了。
我们在Dmo目录下例子led_flase/src运行

  • CC=/home/tronlong/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc make

编译完成后,我们使用scp led_flash root@192.168.99.98:/root/ 把编译的结果发送到开发版的root目录下。

  • scp led_flash root@192.168.99.98:/root/

使用ssh root@192.168.99.98 登录开发版,在root目录下,使用chmod +x led_flash给文件添加权限。使用led_flash -n 1或者led_flash -n 2 就可以看到开发版的灯进行闪速了。

  • chmod +x led_flash

  • led_flash -n 1

这部分就是测试目标1中的开发环境按说明书的方法搭建,到现在为止,都没有问题。如果有任何问题,可以用sudo再运行一次。


6.开发环境的搭建(Ubuntu22 & Debian sid)


在最新版的的ubuntu 22根据上述顺序进行搭建,编译sdk时候提示错误应该是版本太低的缘故,具体适配可能需要厂家支持,Debian也是类似问题。
后续可能试一下在wsl里面的效果。
★ 在整个流程中,如果有任何编译问题,可以在sudo下再次运行,看结果是否可以顺利完成。


7.配置QT的远程调试
前面已经可以用命令行进行程序的编译了,不过那样没有任何有用的资料,现在我们配置QT Creator,让其可以做远程调试。配置前用户最好使用使用 ssh
root@192.168.99.98 ,登录一下开发板,方便后续配置。


编译QT支持,在T3目录下的lichee目录下运行下列命令

  • ./comp_qtLib-590_only.sh

等编译完成后,开始配置QT的环境

  • 修改工程配置,位置在QT Creator软件中工具——选择——构建和运行——Debuggers——Add,按图中内容,其中路径需要改成自己本机的。
    Path填写/home/test3/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gdb

  • 编译器中,需要手工添加C++和C的编译选项
    C++编译路径: /home/test3/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-g++

    C编译路径: /home/test3/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/bin/arm-linux-gnueabihf-gcc

  • 配置qmake

  • 配置cmake

  • 配置开发板的连接,就是配置远程开发板的地址了。我的开发版IP是192.168.99.98

    点击上图的Test,可以看见下列画面,即证明开发机可以连接到开发板

  • 构建套件
    其中sysroot路径:/home/test3/T3/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabihf/sysroot (请根据自己本机情况配置)

上述工作完毕后,QT下的开发环境就建立完毕。
下面将进在QT Creator建立一个C++程序,默认用qmake。


这里需要在.pro文件中添加下面两行代码

  • target.path=/root

  • INSTALLS+=target


上述工作做完后,就可以开发和调试了,这里是构建完毕后,在开发板目录下的文件,其中App1就是建立的程序。

下图位是在开发PC上,单步调试下的抓图

我使用Demo里面的led部分的代码进行调试,很方便易用,速度也很快。
到这里,编译环境基本搭建完毕,QT的远程调试也已经完毕。
这次开发环境安装测试在不同的debian和ubuntu系统安装了多次,测试结果还是官方推荐的ubuntu18是没有任何问题的,也测试了使用qt creator通过以太网就进行远程开发调试,这种方法是对嵌入式开发来讲是最好最方便的开发方式。


这里的问题依旧是缺少多种linux版本的支持方案,比如我的工作机器是debian,偶尔会用manjora,debian 都是在sid下,安装兼容性问题是有影响,同时也能理解厂家对ubuntu18 lte的支持是因为其长期官方支持的缘故。
关于PLC的移植开发和编译工作,下来会尝试进行编译,看下整体开发环境兼容性的效果。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多