全志T536 4核A55 ARM+RISC-V+NPU 17路UART 工业开发板—Linux系统使用手册
前言
请先按照Linux开发环境搭建文档进行开发环境搭建,由于系统编译过程需下载相关工具软件包,请确保Ubuntu可正常访问互联网。本说明文档适用开发环境如下:
Windows开发环境:Windows 7 64bit、Windows 10 64bit
Linux开发环境:Ubuntu20.04.6 64bit
虚拟机:VMware16.2.5
U-Boot:U-Boot-2023.04
Kernel:Linux-5.10.198
Buildroot文件系统版本:Buildroot-2022.05
LinuxSDK:T536_Tina5.0_AIOT V1.1(Linux)
交叉编译工具链:
U-Boot开发使用:gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi
Buildroot、内核开发使用:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu
Linux系统相关软件包位于产品资料“4-软件资料\Linux\”目录下,具体如下表所示。其中,我司已提供SPL、U-Boot、Kernel、Filesystem和Linux系统镜像文件,SPL、U-Boot、Kernel、Filesystem源码位于LinuxSDK开发包内,同时亦提供了Kernel、Filesystem以及LinuxSDK开发包内其他模块的源码压缩包。

备注:我司推荐使用最新版本的LinuxSDK,亦可根据“4-软件资料\Linux\LinuxSDK\LinuxSDK-feature-support.pdf”的变更说明,自行替换对应模块(如device/config/chips/t536)至旧版本LinuxSDK进行使用。
LinuxSDK安装
安装依赖软件
打开Ubuntu,执行如下命令,新建T536工作目录。
Host# mkdir -p /home/tronlong/T536

将产品资料“4-软件资料\Linux\Tools\”目录下的工具包脚本文件install_tools.sh拷贝至T536工作目录下,执行脚本文件安装LinuxSDK开发包依赖软件。
备注:安装过程中,请保证Ubuntu可正常上网,若提示"*** is already the newest version ***"表示该软件已安装,请忽略。
Host# ./install_tools.sh

安装过程中会弹出如下界面,请选择"No"。

执行如下命令,将Python3链接为Python。
Host# sudo ln -s /usr/bin/python3 /usr/bin/python

执行如下命令,安装ncurses库和g++-aarch64-linux-gnu。
Host# sudo apt install libncurses5-dev libncursesw5-dev
Host# sudo apt-get install -y g++-aarch64-linux-gnu


解压LinuxSDK
由我司提供的LinuxSDK-[版本号].tar.gz开发包基于全志科技的T536_Tina5.0_AIOT V1.1,其位于产品资料“4-软件资料\Linux\LinuxSDK\”目录下,LinuxSDK版本号以实际情况为准。
将LinuxSDK开发包拷贝至Windows下的SharedFolders共享目录。

此时可在Ubuntu的共享目录"/mnt/hgfs/SharedFolders/"下看到此开发包。

执行如下命令,将LinuxSDK开发包解压至T536工作目录,耗时约10min后解压完成,生成T536_Tina5.0_AIOT_V1.1文件夹,即为LinuxSDK源码目录。
Host# tar -zxf /mnt/hgfs/SharedFolders/LinuxSDK-v1.0.tar.gz -C /home/tronlong/T536/

执行如下命令,查看已解压的LinuxSDK源码目录。
Host# cd /home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/
Host# ls -al


解压Buildroot dl
请将产品资料“4-软件资料\Linux\LinuxSDK\”目录下的dl.tar.gz压缩包拷贝至T536工作目录。dl.tar.gz为Buildroot dl目录压缩包,用于存放从官网下载的开源软件包,LinuxSDK编译时可从该目录获取开源包,以节约下载时间,提高编译效率,且能避免因网络环境差异导致编译Buildroot失败的问题。
Host# cp /mnt/hgfs/SharedFolders/dl.tar.gz ./
Host# tar -zxf dl.tar.gz -C buildroot/buildroot-202205/

至此,LinuxSDK开发包解压安装完成。
Linux系统镜像编译、生成
配置编译环境
进入LinuxSDK源码目录执行如下命令,加载环境变量,配置Linux内核、内核版本、处理器型号、评估板型号、显示方式、编译器等信息。
Host# cd T536/T536_Tina5.0_AIOT_V1.1/
Host# ./build.sh config
备注:首次执行上述命令会出现官方阅读说明,在等待倒计时结束后输入"Y",按回车确认即可。


Config具体配置如下:
========ACTION List: mk_config ;========
All available platform:
0. android
1. linux
Choice [android]: 1
All available linux_dev:
0. bsp
1. buildroot
Choice [bsp]: 1
All available ic:
0. t536
Choice [t536]: 0
All available board:
0. demo
1. demo_amp
2. demo_kylo
3. demo_nand
4. demo_nor
5. demo_raw_nand
6. tlt536-evm
Choice [demo]: 6
All available output_configs:
0. hdmi
1. lvds-lcd
2. dual-lvds-lcd
3. mipi-lcd
Choice [hdmi]: 0
All available flash:
0. default
1. nor
Choice [default]: 0
All available kern_name:
0. linux-5.10-euler
1. linux-5.10-origin
2. linux-5.10-rt
3. linux-5.10-xenomai
4. linux-5.15-origin
Choice [linux-5.10-euler]: 1

编译LinuxSDK
配置内核选项
我司默认配置的是Linux内核(推荐使用)。如对系统实时性要求较高,则需配置编译为Linux-RT内核,或需修改内核编译选项配置,请继续执行"make xxx menuconfig"命令打开图形配置界面。此命令通过读取当前目录的.config文件,以图形界面的方式提供内核编译配置查看和修改方法。如无需修改内核编译选项配置,可跳过此步骤。
menuconfig是一套图形化的配置工具,需要ncurses库支持。ncurses库提供了一系列的API函数供调用者生成基于文本的图形界面,因此需要先参考“安装依赖环境”章节安装ncurses库。
ncurses库安装完成后,执行如下命令打开图形配置界面。
Host# cd /home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/
Host# ./build.sh menuconfig


可通过键盘的方向键选中对应菜单栏。在<Select>被选中的情况下,可按Enter键进入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应的字母快速选中对应的菜单选项。
每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y键,会将相应的选项配置编译到内核中,同时菜单选项前面变为< * >。按下N键,不会将相应的选项配置编译到内核中。按下M键,会将相应的选项配置编译为内核模块,菜单选项前面变为< M >。如需搜索,可按下/键打开搜索框,然后输入要搜索的内容。

执行如下命令,保存配置的选项。配置保存在"configs/tlt536-evm/linux-5.10-origin/buildroot_linux_defconfig"。
Host# ./build.sh saveconfig

配置Buildroot
如需修改Buildroot配置,请执行如下命令打开Buildroot配置界面,通过读取"out/t536/tlt536-evm/buildroot/buildroot/"目录下的.config文件,以图形界面的方式提供文件系统编译配置查看和修改。如无需修改Buildroot配置,可跳过此步骤。
Host# cd /home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/
Host# ./build.sh buildroot_menuconfig


可通过键盘的方向键选中对应菜单栏。在<Select>被选中的情况下,可按Enter键进入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应的字母快速选中对应的菜单选项。
每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y键,会将相应的选项配置编译到Buildroot中,同时菜单选项前面变为< * >。按下N键,不会将相应的选项配置编译到Buildroot中。如需搜索,可按下/键打开搜索框,然后输入要搜索的内容。
配置完成后,选中<Save>,按Enter键保存配置选项。然后选中<Exit>,按Enter键退出。执行如下命令,保存配置选项。配置选项将自动保存至"/home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/buildroot/buildroot-202205/configs/sun55iw6p1_t536_defconfig"。
Host# ./build.sh buildroot_saveconfig

配置Qt模块
如需增添或删除Qt模块,请进入LinuxSDK源码目录下执行如下命令,打开Buildroot配置界面,通过图形界面的方式提供文件系统编译配置查看和修改。
备注:当前LinuxSDK默认已支持Qt功能,若无需增加或删减Qt模块,可跳过此步骤。
Host# ./build.sh buildroot_menuconfig


在图形配置界面中,进入"Target packages ---> Graphic libraries and applications (graphic/text) ---> Qt5 --->"路径,选中需增加或删除的配置选项。
每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y键,会将相应的选项配置编译到Buildroot中,同时菜单选项前面变为< * >。按下N键,不会将相应的选项配置编译到Buildroot中。如需搜索,可按下/键打开搜索框,然后输入要搜索的内容。
配置完成后,选中,按Enter键保存配置选项。然后选中,按Enter键退出。



执行如下命令,保存配置选项。配置选项将自动保存至"/home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/buildroot/buildroot-202205/configs/sun55iw6p1_t536_defconfig"。
Host# ./build.sh buildroot_saveconfig

编译LinuxSDK
在LinuxSDK源码目录下执行如下命令,一键编译SPL、U-Boot、Linux内核和Buildroot文件系统。
备注:若修改内核、Buildroot、Qt模块等配置,需重新执行"./build.sh"命令,再打包生成Linux系统镜像文件。
Host# ./build.sh

预计耗时约30min编译完成后,生成SPL、U-Boot、Linux内核和Buildroot文件系统镜像文件,镜像文件需转化为.fex格式后使用。

生成SPL镜像文件为"out/t536/tlt536-evm/buildroot/"目录下的boot0_nand_sun55iw6p1.bin、boot0_sdcard_sun55iw6p1.bin和boot0_spinor_sun55iw6p1.bin。

生成U-Boot镜像文件为"out/t536/tlt536-evm/buildroot/u-boot-sun55iw6p1.bin"。

生成Linux内核镜像文件为"out/t536/tlt536-evm/buildroot/boot.img"。

生成文件系统镜像文件"out/t536/tlt536-evm/buildroot/rootfs.ubifs"和"out/t536/tlt536-evm/buildroot/buildroot/images/rootfs.ext4"。

编译生成Linux系统镜像
执行如下命令,打包生成Linux系统镜像文件。
Host# ./build.sh pack


本次操作会将SPL镜像(boot0_nand_sun55iw6p1.bin、boot0_sdcard_sun55iw6p1.bin和boot0_spinor_sun55iw6p1.bin)转化为boot0_sdcard.fex、boot0_nand.fex、boot0_spinor.fex文件;将U-Boot镜像(u-boot-sun55iw6p1.bin)、U-Boot设备树镜像、sys_config配置文件合并生成boot_package.fex文件;将Linux内核镜像(boot.img)、Linux内核设备树镜像转化为boot.fex文件;将文件系统镜像文件转化为rootfs-ubifs.fex文件和rootfs-sdboot.fex文件。
最后将boot0_sdcard.fex、boot0_nand.fex、boot0_spinor.fex、boot_package.fex、boot.fex、rootfs.fex等文件,打包生成"out/t536_linux_tlt536-evm_uart0.img"Linux系统镜像文件。


请参考Linux系统启动卡制作及系统固化文档,将Linux系统镜像文件固化至Micro SD卡、eMMC即可。
局部编译
如需单独编译SPL、U-Boot、Linux内核、设备树或文件系统,可参照本章节内容进行局部编译。
SPL和U-Boot编译
在LinuxSDK源码目录下执行如下命令,单独编译SPL和U-Boot。
Host# ./build.sh bootloader


编译完成后,生成SPL镜像文件为"out/t536/tlt536-evm/buildroot/"目录下的boot0_nand_sun55iw6p1.bin、boot0_sdcard_sun55iw6p1.bin和boot0_spinor_sun55iw6p1.bin。生成U-Boot镜像文件为"out/t536/tlt536-evm/buildroot/u-boot-sun55iw6p1.bin"。
执行如下命令,将镜像文件转化为.fex格式,并打包生成新的Linux系统镜像。
Host# ./build.sh pack



内核编译
在LinuxSDK源码目录下执行如下命令,单独编译Linux内核。
Host# ./build.sh kernel


编译完成后,生成Linux内核镜像文件为"out/pack_out/boot.fex"。
执行如下命令,将镜像文件转化为.fex格式,并打包生成新的Linux系统镜像。
Host# ./build.sh pack


文件系统编译
在Linux源码目录下执行如下命令,单独编译文件系统。
Host# ./build.sh buildroot_rootfs


编译完成后,在"out/t536/tlt536-evm/buildroot/buildroot/images/"目录生成文件系统镜像文件rootfs.ext2和rootfs.ext4。
执行如下命令,将镜像文件转化为.fex格式,并打包生成新的Linux系统镜像。
Host# ./build.sh pack


Linux系统文件替换说明
本章节提供了固化Linux系统文件至Linux系统启动卡和eMMC的方法。Linux系统启动卡和eMMC的设备节点由注册顺序决定,请参考《Linux系统启动卡制作及系统固化》系统启动卡和eMMC分区说明章节确定Linux系统启动卡和eMMC设备节点。
替换SPL
我司已提供SPL镜像boot0_sdcard.fex文件,位于产品资料“4-软件资料\Linux\SPL\image\spl-pub-[版本号]-[Git系列号]\”目录下。
请将SPL镜像boot0_sdcard.fex文件拷贝至评估板文件系统root目录下,执行如下命令固化至Linux系统启动卡或eMMC。
Target# dd if=boot0_sdcard.fex of=/dev/mmcblk0 seek=16 conv=fsync
Target# dd if=boot0_sdcard.fex of=/dev/mmcblk0 seek=256 conv=fsync

替换U-Boot镜像、boot_package.fex
boot_package.fex文件由U-Boot镜像、设备树镜像和sys_config配置文件合并生成。我司提供多个boot_package_xxx.fex文件,位于产品资料“4-软件资料\Linux\U-Boot\image\u-boot-2023-[版本号]-[Git系列号]_u-boot-bsp-[版本号]-[Git系列号]\”目录下。如需替换boot_package_xxx.fex,请将目标boot_package_xxx.fex文件拷贝至评估板文件系统root目录下。以HDMI显示固件(boot_package_hdmi.fex)为例,执行如下命令固化至Linux系统启动卡或eMMC。
Target# dd if=boot_package_hdmi.fex of=/dev/mmcblk0 seek=32800 conv=fsync
Target# dd if=boot_package_hdmi.fex of=/dev/mmcblk0 seek=24576 conv=fsync

备注:如需更换显示输出接口,须同时更换U-Boot和内核镜像。
替换内核、内核模块
我司同时提供了Linux内核镜像(boot_xxx.fex)、Linux内核模块压缩包(modules文件夹),位于产品资料“4-软件资料\Linux\Kernel\image\linux-5.10.198-[版本号]-[Git系列号]_bsp-[版本号]-[Git系列号]\”目录下。如需替换新的内核镜像,请参考如下方法同时替换对应的内核镜像和内核模块至Linux系统启动卡或eMMC。
备注:我司提供了不同显示方式的Linux内核镜像boot_xxx.fex文件。如需更换不同的显示方式,请替换相应的内核镜像。
替换内核镜像
请将内核镜像文件拷贝至评估板文件系统root目录下,执行如下命令固化至Linux系统启动卡,以HDMI显示的内核镜像为例。
Target# dd if=boot_hdmi.fex of=/dev/mmcblk0p3 conv=fsync

替换内核模块
内核模块需与内核版本保持一致,否则会因版本不一致而导致内核模块无法加载。因此替换内核镜像后,请按如下方法替换对应版本的内核模块。
将内核模块压缩包解压后拷贝至评估板文件系统root目录下,执行如下命令,替换Linux系统启动卡或eMMC原有的内核模块。
Target# rm -rf /lib/modules/*
Target# cp -r $(uname -r) /lib/modules/
Target# sync
Target# reboot

替换环境变量
请将编译生成的env.fex文件从LinuxSDK源码目录"/home/tronlong/T536/T536_Tina5.0_AIOT_V1.1/out/pack_out/env.fex"拷贝至评估板文件系统root目录下,执行如下命令将其固化至Linux系统启动卡或eMMC。
Target# dd if=env.fex of=/dev/mmcblk0p2 conv=fsync

由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!