科研項目開發記錄

嵌入式系統petalinux

測試串口首次讀取板卡號(之前到室外測試接收數據爲空,可能是因爲多線程日誌寫入衝突造成的!),項目實際部署時最好還是事先寫入配置文件。(由於項目中沒有嚴格要求從串口動態獲得板卡號,只是作爲設備唯一標識的一個子項,所以可以刪除該子功能——2017.11.29)
 

使用petalinux自帶的ftp命令(ftpget、ftpput)進行文件的上傳與下載。

上傳或下載文件成功,system系統函數返回值爲0,否則爲256。(不知道下載或上傳中斷返回值是多少,應該也是256)。這樣也方便解決遠程update的本地備份問題,只有當下載新版本成功時將舊版本備份,之後將進程切換到新版本,如果新版本運行初始化配置失敗,或出現其他嚴重的錯誤,則刪除新版本工程文件,將原來備份的舊版本恢復到當前工作目錄,並將進程切換到舊版本工程。

如果當前已有備份版本,且當前版本運行正常,現在要更新版本,則首先刪除原來備份的舊版本,將當前正在使用的版本備份起來,然後再啓動新版本工程。

(此方案僅適用於單個進程的系統更新,所以可以進行進程動態切換的操作,對於多個子程序模塊組成的系統採用新的遠程系統更新方案,且系統更新後需要進行系統重啓的操作——2017.11.29)

新的遠程更新系統模塊使用petalinux自帶的wget命令從FTP服務器下載新版本系統壓縮包。爲了避免網絡阻塞使用killall指令時與FTP上載(FTPUpload.elf)程序模塊互相影響,造成異常。

由此可見,petalinux在進行內核及文件系統配置的時候可以根據項目需求提前進行規劃需要保留哪些功能,編譯進內核或文件系統中,使得項目開發減少不必要的工作量。比如遠程校準系統時間的命令ntpdate就比默認配置的rdate更爲好用。
 

對於高精度測量板卡長時間工作讀不出數據的解決方法建議:(原因未知)

原因猜測:因爲高精度測量程序進行採樣配置後使用了saveconfig命令,如果系統在採樣時斷電或重啓就會導致司南板卡默認的unlogall配置被覆蓋修改。而重啓後的系統如果沒有及時採樣,司南板卡就會一直處於頻繁採樣的工作狀態,導致uart數據收發管腳電壓不穩定,最後導致司南板卡無法正常工作。

修改方案:

1、進行硬件復位,在提供電源(VCC)的管腳引出GPIO,方便在軟件層進行控制操作。

2、修改高精度測量子程序模塊,每次進行採樣配置後不執行saveconfig的操作(默認unlogall狀態),且在採樣結束後,多次執行unlogall指令,確保,司南板卡不處於搜星狀態。

 

BLE Mesh Android APP測試

問題背景:

因爲要申請軟著,重新裝上了之前開發的基於BLE Mesh智慧照明系統,結果發現掃描Mesh節點的時候總是掃描不到,而使用藍牙掃描方法則可以掃描到設備節點,然後找到了從前使用的二維碼及設備節點的short code,輸入後進行關聯設備,無一例外的關聯失敗(%0)。以爲是手機版本的問題,新手機使用的Android7.0,對應Android API Level 24,於是修改Android Studio工程的.gradle文件,將target SDK改爲24,安裝之後,問題還是沒有解決。第二天我拿來了原來Android系統版本4.4.4的測試手機,安裝最終版本的APK,發現仍然掃描不到Mesh節點,我就很頭大。

解決方法:

細心(其實是自己之前疏忽大意)的我發現Mesh節點的主板側邊上有一個特別小的按鍵,我忽然想起來這個按鍵的作用,reset!!!,我之所以掃描不到這些Mesh節點,是因爲我之前用其他手機關聯了他們,項目停止後,我沒有將它們解除關聯,導致它們只會發送BLE的廣播消息,而不會向外廣播Mesh的消息,果然,我長按固件復位按鍵後,用新手機一下就掃描到了所有Mesh節點(我開了3個),然後點擊掃描到的設備自動關聯成功,然後單控組控都沒有問題。我還想起來以前好像出現控制沒有反應的情況是因爲修改了場景的密碼。哎,做項目應該多拍照記錄的,否則時間過了,事情過了,再現也是比較麻煩的一件事,因爲你不知道會出現什麼問題,或者你想不起以前的解決方法了。

PetaLinux文件系統崩潰

現象:

無法通過Winscp刪除或創建文件,通過putty客戶端在Linux控制檯進行文件寫操作出現"Read-only file system"的錯誤。

解決方法:

對於PC端Linux系統,可使用 mount -o remount rw /  (讓“/”根文件系統重新掛載並有可讀寫模式),然後重啓系統解決。對於嵌入式PetaLinux系統,可使用mount -o remount rw /run/media/mmcblk0p1,然後使用“shutdown -r now”重啓系統恢復(“/run/media/mmcblk0p1表示存儲系統鏡像(image.ub)的存儲介質eMMC的掛載目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章