Jetson TX2 與下位機(jī)連接問題(串口通訊,開機(jī)啟動(dòng)闲礼,攝像頭動(dòng)態(tài)打開)

串口通訊

問題描述

TX2上深度學(xué)習(xí)算法布置好了牍汹,但是卻無(wú)法與下位機(jī)進(jìn)行串口通訊琅翻。使用J17口,始終不能打開串口柑贞;使用J21上的串口方椎,由于其作為Console接口用于調(diào)試,會(huì)向下位機(jī)傳輸很多調(diào)試信息钧嘶,并且讀取串口信息存在問題棠众。

解決辦法
  • 官方論壇討論。經(jīng)過論壇的解釋有决,原來是官方系統(tǒng)默認(rèn)沒有打開J17的串口通訊(J17同時(shí)還兼任板載相機(jī)接口的通訊)闸拿,雖然給出了補(bǔ)丁文件,可是并不知道怎么使用(主要是文件路徑找不到啊书幕,歡迎大神指導(dǎo))新荤。打開patch文件后發(fā)現(xiàn)與linuxdev大神給出的回答更改內(nèi)容一致,于是抱著試一試的態(tài)度台汇,參照他給出的具體內(nèi)容進(jìn)行操作苛骨,最后還真地出現(xiàn)了J17對(duì)應(yīng)的串口號(hào)ttyTHS2。下面給出具體的步驟(大部分搬運(yùn)大神的作品):
  1. 通過sudo apt-get install device-tree-compiler命令安裝DTC;
  2. 然后是:
sudo -s
cd /tmp
dtc -I dtb -O dts -o extracted.dts /boot/tegra186-quill-p3310-1000-c03-00-base.dtb
# Search for "serial@c280000" where it is a block of code and not just a single line...
# Change status = "disabled" to status = "okay";
# Build a modified version:
dtc -I dts -o dtb /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb extracted.dts
cd /boot/extlinux
# edit extlinux.conf...add this line between MENU LABEL line and LINUX line:
FDT /boot/modified_tegra186-quill-p3310-1000-c03-00-base.dtb

注意:1.部分命令與大神有所不同苟呐,大概就是dtc的參數(shù)設(shè)置痒芝,如果報(bào)錯(cuò)的話,可以采用man dtc查看命令詳情牵素。
2./tmp在重啟之后會(huì)自動(dòng)刪除文件严衬,可以考慮放到其他盤里面去。

這種做法的大致思路是笆呆,將設(shè)備樹文件(相當(dāng)于二進(jìn)制文件请琳?)反編譯為源代碼,然后更改其某種屬性赠幕,然后再編譯為其二進(jìn)制文件俄精,最后在開機(jī)的時(shí)候加載。這樣在重啟之后通過ls /dev就可以看到ttyTHS2了劣坊。

可是在轉(zhuǎn)換到J17之后嘀倒,各方面表現(xiàn)正常,但是無(wú)論是DJI給的串口通訊C語(yǔ)言接口局冰,以及在網(wǎng)上找的C語(yǔ)言接口(同樣的代碼在筆記本上運(yùn)行可以和下位機(jī)完美通訊),都無(wú)法接收數(shù)據(jù)灌危。為了尋找錯(cuò)誤的來源康二,使用pythonpyserial庫(kù)進(jìn)行串口的讀寫操作,發(fā)現(xiàn)能夠完美通訊勇蝙。而且沫勿,更為神奇的是,在使用python打開串口之后再使用同樣的C程序時(shí),竟然可以實(shí)現(xiàn)完美通訊产雹。不得不感嘆诫惭,這簡(jiǎn)直是玄學(xué)啊B凇(其實(shí)是自己太菜夕土,對(duì)于底層了解太少。大神請(qǐng)指導(dǎo))瘟判。所以怨绣,最后的解決辦法是,開機(jī)之后首先運(yùn)行如下的python腳本:

import serial

ser = serial.Serial('/dev/ttyTHS2')
ser.close()

然后再執(zhí)行深度學(xué)習(xí)相關(guān)命令拷获。

開機(jī)運(yùn)行

攝像頭動(dòng)態(tài)打開

為了減少程序執(zhí)行對(duì)攝像頭打開的要求赢笨,可以通過一個(gè)循環(huán)不斷地嘗試打開攝像頭,然后檢測(cè)攝像頭是否打開成功驮吱,如果成功則跳出循環(huán)质欲。,本來很好的邏輯糠馆,但是在Linux(至少是Jetson板載的L4T和筆記本的Ubuntu 14.04)下嘶伟,使用的視頻流處理庫(kù)V4L(Video for linux)在程序內(nèi)部不能動(dòng)態(tài)地更新設(shè)備,必須要結(jié)束程序后才能更新又碌【琶粒基于此點(diǎn),運(yùn)用如下思路動(dòng)態(tài)打開攝像頭:使用一個(gè) runpython.py腳本使用os.system('python camtest.py')命令來不斷地調(diào)用camtest.py毕匀,并根據(jù)其返回結(jié)果決定是否跳出循環(huán)铸鹰;而camtest.py只需要嘗試打開攝像頭,并根據(jù)攝像頭是否打開成功使用exit(number)來返回不同的程序結(jié)束狀態(tài)皂岔。注意蹋笼,使用exit()而不是return

代碼如下:
runpython.py

import os
import time

count = 0
while True:
    print count
    if os.system("python camtest.py") == 0:
        print "Open Successfully!"
        break
    else: 
        print "Cam open failed!\n\n"
    count += 1
    time.sleep(1)

camtest.py

import cv2
import time


count = 0
cam = cv2.VideoCapture(1)
if not cam.isOpened():
    exit(1)

# while(True):
    # # Capture frame-by-frame
    # ret, frame = cam.read()
    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    # # Display the resulting frame
    # cv2.imshow('frame',gray)
    # if cv2.waitKey(1) & 0xFF == ord('q'):
    #    break
exit(0)

總結(jié)

將檢測(cè)攝像頭中的runpython.py的代碼放到開機(jī)執(zhí)行的pytest.py中躁垛,這樣在開機(jī)之后將先執(zhí)行串口初始化和攝像頭動(dòng)態(tài)打開的任務(wù)剖毯,即在執(zhí)行深度算法之前確保所有的基礎(chǔ)條件已經(jīng)具備。這樣將條件準(zhǔn)備和算法執(zhí)行分開教馆,具有模塊化的一些優(yōu)點(diǎn)逊谋。另外,還可以考慮在無(wú)顯示器的狀態(tài)下通過GPIO(Python有對(duì)應(yīng)的庫(kù))操作LED或者使用USB揚(yáng)聲器通過語(yǔ)音的方式來報(bào)告程序內(nèi)部執(zhí)行狀態(tài)土铺,這樣可以增強(qiáng)與人的交互胶滋,可以起到緩解緊張的作用板鬓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市究恤,隨后出現(xiàn)的幾起案子俭令,更是在濱河造成了極大的恐慌,老刑警劉巖部宿,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抄腔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡窟赏,警方通過查閱死者的電腦和手機(jī)妓柜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涯穷,“玉大人棍掐,你說我怎么就攤上這事】娇觯” “怎么了作煌?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)赚瘦。 經(jīng)常有香客問我粟誓,道長(zhǎng),這世上最難降的妖魔是什么起意? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任鹰服,我火速辦了婚禮,結(jié)果婚禮上揽咕,老公的妹妹穿的比我還像新娘悲酷。我一直安慰自己,他們只是感情好亲善,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布设易。 她就那樣靜靜地躺著,像睡著了一般蛹头。 火紅的嫁衣襯著肌膚如雪顿肺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天渣蜗,我揣著相機(jī)與錄音屠尊,去河邊找鬼。 笑死袍睡,一個(gè)胖子當(dāng)著我的面吹牛知染,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斑胜,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼控淡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了止潘?” 一聲冷哼從身側(cè)響起掺炭,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凭戴,沒想到半個(gè)月后涧狮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡么夫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年者冤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片档痪。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涉枫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腐螟,到底是詐尸還是另有隱情愿汰,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布乐纸,位于F島的核電站衬廷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏汽绢。R本人自食惡果不足惜吗跋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宁昭。 院中可真熱鬧跌宛,春花似錦、人聲如沸久窟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)斥扛。三九已至入问,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稀颁,已是汗流浹背芬失。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匾灶,地道東北人棱烂。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像阶女,于是被迫代替她去往敵國(guó)和親颊糜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哩治,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,736評(píng)論 25 707
  • 樹莓派的串口默認(rèn)為串口終端調(diào)試使用,如要正常使用串口則需要修改樹莓派設(shè)置衬鱼。關(guān)閉串口終端調(diào)試功能后則不能再通過串口登...
    coolwriter閱讀 6,265評(píng)論 2 6
  • 前言 Python的創(chuàng)始人為Guido van Rossum业筏。1989年圣誕節(jié)期間,在阿姆斯特丹鸟赫,Guido為了打...
    依依玖玥閱讀 3,565評(píng)論 6 37
  • 一蒜胖、遇到的問題 iOS編譯報(bào)錯(cuò):linker command failed with exit code 1 (u...
    行者_(dá)IT閱讀 1,614評(píng)論 0 0
  • 《愛的管教》100天分享之29 正確的愛如何表達(dá)?讓孩子感受到愛抛蚤?愛是通過表達(dá)傳遞給對(duì)方的台谢,良好的溝通才能正確的把...
    化化0422閱讀 191評(píng)論 0 3