前 言
本文涉及的開發案例位于產品資料“4-軟件資料Demo”路徑下的base-demos和python-demos目錄。
base-demos目錄存放Linux常用開發案例,案例bin目錄存放可執行文件,案例src目錄存放源碼。python-demos目錄存放Python開發案例,案例腳本文件無需編譯,可基于我司提供的文件系統直接運行。
如需重新編譯Linux常用開發案例,請先參考《Linux系統使用手冊》文檔正確安裝LinuxSDK,構建適配評估板的交叉編譯工具鏈。然后將對應案例src目錄拷貝至Ubuntu工作目錄下,在src目錄執行如下命令配置交叉編譯工具鏈,并執行make命令進行案例編譯。編譯完成后,將在當前目錄下生成可執行文件。
備注:LinuxSDK版本號以實際情況為準。
Host#source /home/tronlong/RK3576/rk3576_linux6.1_release/buildroot/output/rockchip_rk3576/host/environment-setup
Host#make
圖 1
開發板簡介
創龍科技 TL3576-EVM 是一款基于瑞芯微 RK3576J/RK3576高性能處理器設計的4核ARM Cortex-A72 +4核 ARM Cortex-A53 + ARM Cortex-M0 國產工業評估板,Cortex-A72 核心主頻高達 2.2GHz,Cortex-A53 核心主頻高達 2.0GHz。評估板由核心板和評估底板組成,核心板 CPU、ROM、RAM、電源、晶振、連接器等所有元器件均采用國產工業級方案,國產化率100%。同時,評估底板大部分元器件亦采用國產工業級方案,國產化率約為 99%(按元器件數量占比,數據僅供參考)。核心板經過專業的PCBLayout 和高低溫測試驗證,質量穩定可靠,可滿足各種工業應用環境要求。
評估板硬件資源圖解1
評估板硬件資源圖解2
Linux常用開發案例
led_flash案例
案例功能
本案例通過向評估底板用戶可編程指示燈LED設備節點反復交替寫入1、0數值,實現LED閃爍效果。LED點亮與熄滅時間均為0.5s。
程序流程如下圖所示。
圖 2
LED設備節點為"/sys/class/leds/user-ledX/"目錄下的brightness。
圖 3
操作說明
將本案例bin目錄下的可執行程序led_flash拷貝至評估板文件系統,并在可執行程序所在目錄執行如下命令運行程序,即可看到評估底板LED以0.5s的時間間隔進行閃爍。同時,串口終端打印系統全部LED設備信息和程序當前控制的LED設備信息。
Target#./led_flash -h
Target#./led_flash -n 2
圖 4
關鍵代碼
預定義LED數組。程序由此數組獲取LED信息,數組信息必須為系統已有LED信息,否則程序運行報錯。
圖 5
LED亮滅操作和時間間隔。
圖 6
key_demo案例
案例功能
本案例通過監聽用戶輸入按鍵USER1(KEY4)、USER2(KEY5)的狀態,檢測按鍵事件。
案例將獲取按鍵事件后進行按鍵鍵值匹配,再進行事件處理,程序流程如下圖所示。
圖 7
操作說明
本次測試以用戶輸入按鍵USER1(KEY4)示例進行測試,如需測試用戶輸入按鍵USER2(KEY5),請修改對應的設備節點。
執行如下命令,查看USER1(KEY4)按鍵對應的設備節點。
Target#cat /proc/bus/input/devices
圖 8
圖 9
將本案例bin目錄下的可執行程序key_demo拷貝至評估板文件系統,在可執行程序所在目錄執行如下命令運行程序,串口終端將打印提示信息。再按下評估板用戶輸入按鍵USER1(KEY4),程序將檢測到按鍵事件,并打印按鍵狀態信息。
Target#./key_demo -h
Target#./key_demo -d /dev/input/event5
圖 10
關鍵代碼
定義按鍵。
圖 11
監聽按鍵事件。
圖 12
循環監聽。
圖 13
can_echo案例
案例功能
本案例實現通過綁定一個CAN總線接口用于接收數據,當CAN端口接收到數據后,將數據重新發送到CAN總線接口。
程序流程如下圖所示。
圖 14
操作說明
請使用USB-CAN分析儀(型號:廣成科技USBCAN-II FD)連接評估板CAN-FD1或CAN-FD2任一接口至PC機USB接口,硬件連接如下圖所示。
本次測試以CAN-FD1接口(設備節點為:can0)為例進行演示。如需測試CAN-FD2接口,請將設備節點修改為can1。
圖 15
評估板CAN-FD1接口與USB-CAN分析儀的連接關系如下表所示。
請參照《調試工具安裝》文檔安裝GCAN Tools調試軟件。在PC端打開GCANTools軟件,選擇設備類型,然后點擊“打開設備”。根據USB-CAN分析儀實際硬件連接,選擇CAN1或CAN2。等待軟件檢測到設備后,將設置波特率為"1000K",數據波特率設置為5000K,然后點擊“確定”,如下圖所示。
圖 16
進入GCANTools軟件發送界面,取消"CAN FD"選項,USB-CAN分析儀連接成功后將會顯示Connected狀態,如下圖所示。
圖 17
評估板啟動進入評估板文件系統,執行如下命令配置CAN0總線波特率為1Mbps,配置數據波特率為5Mbps,并啟動CAN0總線。
Target#ip link set can0 down
Target#ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
Target#ip link set can0 up
圖 18
將本案例bin目錄下的可執行程序can_echo拷貝至評估板文件系統,進入可執行程序所在目錄,執行如下命令查看程序參數信息。
Target#./can_echo --help
圖 19
執行如下命令綁定CAN-FD1接口,并接收由GCANTools發出的數據,然后將接收到的數據重新發送出去。在GCANTools中輸入數據并點擊發送按鈕,可看到有兩幀數據,一幀是發送數據,另一幀是接收數據。
Target#./can_echo -v can0
圖 20
圖 21
圖 22
圖 23
可按"Ctrl + Z"暫停程序,并執行如下命令退出程序。
Target#killall -9 can_echo
圖 24
關鍵代碼
使用socket監聽CAN接口。
圖 25
將從CAN接口接收到的數據重新發送出去。
圖 26
tcp_udp案例
案例功能
本案例主要實現客戶端(client)與服務端(server)的文本數據相互收發功能。本案例包含4個程序:
tcp_server:TCP服務端測試程序。
tcp_client:TCP客戶端測試程序。
udp_server:UDP服務端測試程序。
udp_client:UDP客戶端測試程序。
程序流程如下圖所示。
圖 27TCP通信
圖 28UDP通信
服務端和客戶端程序均可在評估板、PC機Ubuntu系統上運行。本章節采用評估板本地回環測試,即服務端與客戶端程序均在評估板上運行,通過127.0.0.1進行本地回環測試,無需經過路由器。案例bin目錄下的4個文件均為ARM端可執行程序。
操作說明
將本案例bin目錄下的4個可執行程序拷貝至評估板文件系統。
在Ubuntu中執行如下命令使用OpenSSH登錄評估板文件系統,如下圖所示。
Host#sudossh [email protected] //192.168.13.27為評估板IP地址,請根據實際情況修改
圖 29
在評估板系統中執行如下命令,啟用本地回環接口。
Target#ifconfig lo up
圖 30
TCP通信測試
在可執行程序所在目錄執行如下命令,分別在評估板運行TCP服務端和客戶端程序。2233為服務端程序指定的端口號,客戶端程序端口號參數需與服務端程序一致。
Target#./tcp_server 2233 //TCP服務端命令
Host#./tcp_client 127.0.0.12233 //TCP客戶端命令
程序執行后,客戶端將會連接服務端。在服務端(Target)輸入字符串"Tronlong",按下回車鍵即可在客戶端顯示對應內容。在客戶端(Host)輸入字符串"Hello Tronlong",按下回車鍵即可在服務端顯示對應內容,如下圖所示。
圖 31TCP服務端
圖 32TCP客戶端
UDP通信測試
在可執行程序所在目錄執行如下命令,分別在評估板運行UDP服務端和客戶端程序。2233為服務端程序指定的端口號,客戶端程序端口號參數需與服務端程序一致。
Target#./udp_server 2233 //UDP服務端命令
Host#./udp_client 127.0.0.12233 //UDP客戶端命令
程序執行后,客戶端將不會自動連接服務端。服務端在收到客戶端信息前無法得知客戶端的存在,因此需要客戶端先向服務端發送信息。
在客戶端(Host)輸入字符串"Tronlong",按下回車鍵即可在服務端顯示對應內容。在服務端(Target)輸入字符串"Hello Tronlong",按下回車鍵即可在客戶端顯示對應內容,如下圖所示。
圖 33UDP服務端
圖 34UDP客戶端
如需在PC機Ubuntu系統運行服務端或客戶端程序,請將案例src源碼目錄拷貝至Ubuntu工作目錄。進入源碼目錄后執行make命令,即可在當前目錄下生成x86端可執行程序。在不同終端運行服務端或客戶端程序的命令類似,但127.0.0.1需使用服務器IP地址替代。
Host#makeclean
Host#make CC=gcc
圖 35
關鍵代碼
以TCP通信程序為例。
tcp_client.c
注意源碼中的struct sockaddr_in、socket、connect、fgets、send、recv等數據結構和系統調用的使用。
tcp_server.c
注意源碼中的struct sockaddr_in、socket、connect、fgets、send、recv、bind、listen、accept等數據結構和系統調用的使用。
由于篇幅過長等原因,部分內容均不逐一展示,如需獲取完整版詳細資料,請關注創龍科技微信公眾號或官網,或者評論區留言,感謝您的支持!
審核編輯 黃宇
-
Linux
+關注
關注
87文章
11496瀏覽量
213244 -
開發板
+關注
關注
25文章
5622瀏覽量
103574 -
瑞芯微
+關注
關注
25文章
561瀏覽量
52310
發布評論請先 登錄
評論