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