來源:公眾號(hào)【魚鷹談單片機(jī)】,ID ? :emOsprey
當(dāng)然香了。魚鷹使用 MDK 開發(fā)單片機(jī)超十年,大部分 bug 靠對 MDK 的熟悉,都能快速解決,為啥要在 linux 里面開發(fā)單片機(jī)呢。
很少是自己感興趣而學(xué)習(xí),大部分情況還是工作所迫。比如你的工作環(huán)境,就是不能使用 MDK ,只能在 linux 下開發(fā),因?yàn)楣镜捻?xiàng)目都是這個(gè)模式,而一般的道友,因?yàn)榱?xí)慣了 MDK,一到 Linux 環(huán)境下,只能靠串口打印解決問題了,費(fèi)時(shí)費(fèi)力,不知道因?yàn)橐粋€(gè) bug 加了多少班,開發(fā)速度也大大降低了。
前段時(shí)間,魚鷹在使用 Python + web 搭建自己的課程網(wǎng)站,發(fā)現(xiàn)遇到的坑實(shí)在是太多了,之前 Python 全靠打印調(diào)試,最近才用 VSCode 在線調(diào)試了,遇到 bug 的解決速度快多了。
所以,魚鷹覺得,不管任何編程語言,如果能在線調(diào)試看到整個(gè)程序的運(yùn)行過程,都是非常舒服的事情。
而魚鷹目前這個(gè)倉庫,已經(jīng)支持 Python, C /C++,單片機(jī)、linux 開發(fā)板在線調(diào)試,解決bug速度快多了。
前面關(guān)于單片機(jī)的開發(fā)調(diào)試介紹的比較多,總之就是使用 Docker 一條龍服務(wù),少踩非常多坑。同時(shí)魚鷹最近對 yocto 下的調(diào)試開發(fā),也有不少收獲,后面會(huì)陸續(xù)更新到倉庫里。
下面介紹的內(nèi)容,基本上和單片機(jī)類似,都是在 VSCode 遠(yuǎn)程開發(fā)下操作,可以借鑒:
文字說明
下面所有操作都是在 windows 下遠(yuǎn)程 linux 開發(fā),不需要來回切換。
便捷按鈕,編譯、cmake 配置、編譯和拷貝:
配置時(shí),選擇你是進(jìn)行交叉編譯還是本地編譯,docker 鏡像支持兩種,目前暫不支持 arm32,。
然后選擇你的測試程序語言(因?yàn)檫@個(gè)工程用于學(xué)習(xí),所以區(qū)分了語言類型,方便測試)。
最后輸入應(yīng)用程序,目前只有 demo。后面會(huì)增加更多,比如 modbus 等。
配置完成即可點(diǎn)擊編譯按鈕。當(dāng)然也可以點(diǎn)擊編譯和拷貝按鈕,這樣可以把交叉編譯好的程序自動(dòng)拷貝到 Linux 開發(fā)板中。
重點(diǎn)來了。
根據(jù)是本地編譯還是交叉編譯,開始調(diào)試。
此時(shí),工程會(huì)自動(dòng)在開發(fā)板啟動(dòng) gdbserver 程序,同時(shí)啟動(dòng)調(diào)試界面(不需要手動(dòng)登錄開發(fā)板,然后啟動(dòng) gdbserver 程序)。
調(diào)試界面:
交叉編譯調(diào)試情況下,基本沒法直接查看一些 string 和 vector 等的信息。如:
現(xiàn)在魚鷹經(jīng)過研究,解決了這個(gè)問題,可以非常方便查看數(shù)據(jù):
并且在 VSCode 可以直接看到開發(fā)板的打印輸出,不需要再開一個(gè)窗口,大大加快開發(fā)速度。
變量(局部變量、寄存器、全局變量)、調(diào)用棧查看:
匯編單步調(diào)試(以前還以為不支持呢)。
代碼開發(fā):
查看分支提交情況:
查看文件修改和提交:
用了 VScode + docker,發(fā)現(xiàn) linux 開發(fā)還是比較簡單的事情。
目前課程錄制完成了(后面可能繼續(xù)增加視頻),是時(shí)候漲價(jià)一波了,原價(jià)是 799,因?yàn)閭}庫更新了比較多內(nèi)容,因此目前價(jià)格?899,組團(tuán)價(jià) 859(兩人以上),如果對以上內(nèi)容感興趣的,歡迎聯(lián)系魚鷹。