3 Linux常用開發(fā)案例
我司提供的Linux常用開發(fā)案例位于產(chǎn)品資料“4-軟件資料Demo”路徑下的base-demos目錄下。案例bin目錄存放可執(zhí)行文件,src目錄存放源碼。
如需重新編譯Linux常用開發(fā)案例,請將對應(yīng)案例src目錄拷貝至Ubuntu工作目錄下,進(jìn)入src目錄執(zhí)行如下命令配置交叉編譯工具鏈,并執(zhí)行make命令進(jìn)行案例編譯。編譯完成后,將在當(dāng)前目錄下生成可執(zhí)行文件。
Host# source /home/tronlong/RK3562/environment
Host# make
圖34
3.1led_flash案例
3.1.1案例功能
本案例通過向單板機(jī)用戶可編程指示燈LED1設(shè)備節(jié)點(diǎn)反復(fù)交替寫入1、0數(shù)值,實(shí)現(xiàn)LED1閃爍效果。LED1點(diǎn)亮與熄滅時(shí)間均為0.5s。
程序流程如下圖所示。
圖35
LED設(shè)備節(jié)點(diǎn)為"/sys/class/leds/ledX/"目錄下的brightness。
圖36
3.1.2操作說明
將本案例bin目錄下的可執(zhí)行程序led_flash拷貝至單板機(jī)系統(tǒng),并在可執(zhí)行程序所在目錄執(zhí)行如下命令運(yùn)行程序,即可看到單板機(jī)LED1以0.5s的時(shí)間間隔進(jìn)行閃爍。同時(shí),串口終端打印系統(tǒng)全部LED設(shè)備信息和程序當(dāng)前控制的LED1設(shè)備信息。
Target# ./led_flash -help
Target# ./led_flash -n 1
圖37
3.1.3關(guān)鍵代碼
(1)預(yù)定義LED數(shù)組。程序由此數(shù)組獲取LED信息,數(shù)組信息必須為系統(tǒng)已有LED信息,否則程序運(yùn)行報(bào)錯(cuò)。
圖38
(2)LED亮滅操作和時(shí)間間隔。
圖39
3.2can_echo案例
3.2.1案例功能
本案例實(shí)現(xiàn)通過綁定一個(gè)CAN總線接口用于接收數(shù)據(jù),當(dāng)CAN端口接收到數(shù)據(jù)后,將數(shù)據(jù)重新發(fā)送到CAN總線接口。
備注:SBC-TL3562單板機(jī)主板未引出CAN接口,因此本案例僅支持SBC-TL3562-BU、SBC-TL3562-MU或SBC-TL3562-ME整機(jī)測試。
程序流程如下圖所示。
圖40
3.2.2操作說明
本次以SBC-TL3562-BU整機(jī)的CAN功能為例進(jìn)行演示。使用USB-CAN分析儀(型號:廣成科技USBCAN-II FD)連接整機(jī)的CAN1或CAN2任一接口至PC機(jī)USB接口,硬件連接如下圖所示。本次測試以CAN1接口(設(shè)備節(jié)點(diǎn)為:can0)進(jìn)行演示。如需測試CAN2接口,請將設(shè)備節(jié)點(diǎn)修改為can1。
圖41
EX-TLBaseUART擴(kuò)展板CAN1接口與USB-CAN分析儀的連接關(guān)系如下表所示。

請參照《開發(fā)環(huán)境搭建》文檔安裝GCAN Tools調(diào)試軟件。在PC端打開GCANTools軟件,選擇設(shè)備類型,然后點(diǎn)擊“打開設(shè)備”。根據(jù)USB-CAN分析儀實(shí)際硬件連接,選擇CAN1或CAN2。等待軟件檢測到設(shè)備后,設(shè)置波特率為"1000K",然后點(diǎn)擊“確定”,如下圖所示。
圖42
進(jìn)入GCANTools軟件發(fā)送界面,取消"CAN FD"選項(xiàng),USB-CAN分析儀連接成功后將會(huì)顯示Connected狀態(tài),如下圖所示。
圖43
單板機(jī)啟動(dòng)進(jìn)入系統(tǒng),執(zhí)行如下命令配置can0比特率為1Mbps,并啟動(dòng)。
Target# ip link set can0 down
Target# ip link set can0 type can bitrate 1000000
Target# ip link set can0 up
圖44
將本案例bin目錄下的可執(zhí)行程序can_echo拷貝至單板機(jī)系統(tǒng),進(jìn)入可執(zhí)行程序所在目錄,執(zhí)行如下命令查看程序參數(shù)信息。
Target# ./can_echo --help
圖45
執(zhí)行如下命令綁定CAN0接口,并接收由GCANTools發(fā)出的數(shù)據(jù),然后將接收到的數(shù)據(jù)重新發(fā)送出去。在GCANTools中輸入數(shù)據(jù)并點(diǎn)擊發(fā)送按鈕,可看到有兩幀數(shù)據(jù),一幀是發(fā)送數(shù)據(jù),另一幀是接收數(shù)據(jù)。
Target# ./can_echo -v can0
圖46
圖47
圖48
圖49
可按"Crtl + Z"暫停程序,并執(zhí)行如下命令退出程序。
Target# killall -9 can_echo
圖50
3.2.3關(guān)鍵代碼
(1)使用socket監(jiān)聽CAN接口。
圖51
(2)將從CAN接口接收到的數(shù)據(jù)重新發(fā)送出去。
圖52
3.3tcp_udp案例
3.3.1案例功能
本案例主要實(shí)現(xiàn)客戶端(client)與服務(wù)端(server)的文本數(shù)據(jù)相互收發(fā)功能。本案例包含4個(gè)程序:
(1)tcp_server:TCP服務(wù)端測試程序。
(2)tcp_client:TCP客戶端測試程序。
(3)udp_server:UDP服務(wù)端測試程序。
(4)udp_client:UDP客戶端測試程序。
程序流程如下圖所示。
圖53?TCP通信
圖54?UDP通信
服務(wù)端和客戶端程序均可在單板機(jī)、PC機(jī)Ubuntu系統(tǒng)上運(yùn)行。本章節(jié)采用單板機(jī)本地回環(huán)測試,即服務(wù)端與客戶端程序均在單板機(jī)上運(yùn)行,通過127.0.0.1進(jìn)行本地回環(huán)測試,無需經(jīng)過路由器。案例bin目錄下的4個(gè)文件均為ARM端可執(zhí)行程序。
3.3.2操作說明
將本案例bin目錄下的4個(gè)可執(zhí)行程序拷貝至單板機(jī)系統(tǒng)。
在Ubuntu中執(zhí)行如下命令使用OpenSSH登錄單板機(jī)系統(tǒng),如下圖所示。
Host# sudossh root@192.168.13.16 //192.168.13.16為單板機(jī)IP地址,請根據(jù)實(shí)際情況修改
圖55
(1)TCP通信測試
在可執(zhí)行程序所在目錄執(zhí)行如下命令,分別在單板機(jī)運(yùn)行TCP服務(wù)端和客戶端程序。2233為服務(wù)端程序指定的端口號,客戶端程序端口號參數(shù)需與服務(wù)端程序一致。
Target# ./tcp_server 2233 //TCP服務(wù)端命令
Host# ./tcp_client 127.0.0.12233 //TCP客戶端命令
程序執(zhí)行后,客戶端將會(huì)連接服務(wù)端。在服務(wù)端(Target)輸入字符串"Tronlong",按下回車鍵即可在客戶端顯示對應(yīng)內(nèi)容。在客戶端(Host)輸入字符串"Hello Tronlong",按下回車鍵即可在服務(wù)端顯示對應(yīng)內(nèi)容,如下圖所示。
圖56?TCP服務(wù)端
圖57?TCP客戶端
(2)UDP通信測試
在可執(zhí)行程序所在目錄執(zhí)行如下命令,分別在單板機(jī)運(yùn)行UDP服務(wù)端和客戶端程序。2233為服務(wù)端程序指定的端口號,客戶端程序端口號參數(shù)需與服務(wù)端程序一致。
Target# ./udp_server 2233 //UDP服務(wù)端命令
Host# ./udp_client 127.0.0.12233 //UDP客戶端命令
程序執(zhí)行后,客戶端將不會(huì)自動(dòng)連接服務(wù)端。服務(wù)端在收到客戶端信息前無法得知客戶端的存在,因此需要客戶端先向服務(wù)端發(fā)送信息。
在客戶端(Host)輸入字符串"Tronlong",按下回車鍵即可在服務(wù)端顯示對應(yīng)內(nèi)容。在服務(wù)端(Target)輸入字符串"Hello Tronlong",按下回車鍵即可在客戶端顯示對應(yīng)內(nèi)容,如下圖所示。
圖58?UDP客戶端
圖59?UDP服務(wù)端
如需在PC機(jī)Ubuntu系統(tǒng)運(yùn)行服務(wù)端或客戶端程序,請將案例src源碼目錄拷貝至Ubuntu工作目錄。進(jìn)入源碼目錄后執(zhí)行make命令,即可在當(dāng)前目錄下生成x86端可執(zhí)行程序。在不同終端運(yùn)行服務(wù)端或客戶端程序的命令類似,但127.0.0.1需使用服務(wù)器IP地址替代。
Host# make
圖60
3.3.3關(guān)鍵代碼
以TCP通信程序?yàn)槔?/p>
(1)tcp_client.c
注意源碼中的struct sockaddr_in、socket、connect、fgets、send、recv等數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)調(diào)用的使用。
(2)tcp_server.c
注意源碼中的struct sockaddr_in、socket、connect、fgets、send、recv、bind、listen、accept等數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)調(diào)用的使用。
由于篇幅過長等原因,部分內(nèi)容均不逐一展示,如需獲取完整版詳細(xì)資料,請關(guān)注Tronlong創(chuàng)龍科技微信公眾號或官網(wǎng),或者評論區(qū)留言,感謝您的支持!
審核編輯 黃宇
-
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219004 -
python
+關(guān)注
關(guān)注
57文章
4876瀏覽量
90022 -
RK3562
+關(guān)注
關(guān)注
0文章
99瀏覽量
689
發(fā)布評論請先 登錄
RK3562 單板機(jī)圖形用戶界面開發(fā)完全手冊:Qt Creator 配置與 LVGL 案例詳解(二)
RK3562 單板機(jī)圖形用戶界面開發(fā)完全手冊:Qt Creator 配置與 LVGL 案例詳解(一)
RK3562 單板機(jī) Linux-RT 系統(tǒng)開發(fā)指南:內(nèi)核配置、實(shí)時(shí)性優(yōu)化與案例詳解
RK3562 單板機(jī)系統(tǒng)開發(fā)完全手冊:U-Boot/Kernel/Rootfs 開發(fā)與性能優(yōu)化
3562 單板機(jī) Linux 系統(tǒng)固化完全指南:從 SD 卡啟動(dòng)到 eMMC 永久部署
RK3562單板機(jī)系統(tǒng)使用與開發(fā)手冊:基礎(chǔ)操作、升級部署與工具鏈配置(一)
【創(chuàng)龍TL3562-MiniEVM開發(fā)板試用體驗(yàn)】開箱評測
迅為RK3562開發(fā)板2900頁+資料_多種系統(tǒng)適配全開源
有獎(jiǎng)丨米爾 瑞芯微RK3562開發(fā)板免費(fèi)試用新增名額!
觸覺智能RK3562開發(fā)板新版強(qiáng)勢亮相
【米爾-RK3562開發(fā)板試用評測】開箱測評
Linux文件系統(tǒng)打包及鏡像制作,觸覺智能RK3562開發(fā)板演示
RK3562 單板機(jī) Linux 應(yīng)用開發(fā)實(shí)戰(zhàn)手冊:LED/CAN/TCP/UART 案例與 Python 開發(fā)(二)
評論