在這裡首先感謝創龍和電子發燒友論壇提供的測試機會,同時感謝創龍廠家和技術給予資源和幫助,我也希望我的困惑和解決方法可以幫助其他使用這塊闆卡的開發者們少走點彎路。再次感謝電子發燒友論壇 支撐的這個平台生态。
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.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso
- 在vmware裡面安裝ubuntu的操作,這裡不羅列了。
- 開發環境安裝:(這裡使用的使用者名是test3)
- 建立虛拟機共享,用于共享安裝檔案包,這些檔案包在CD光牒或者網盤上,我這裡使用的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目錄下。
- scp led_flash [email protected]:/root/
使用ssh 登入開發版,在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 [email protected] ,登入一下開發闆,友善後續配置。
編譯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的移植開發和編譯工作,下來會嘗試進行編譯,看下整體開發環境相容性的效果。