您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么進行嵌入式linux系統應用開發,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
??平時大家說的嵌入式其實范圍比較廣的,是一種軟硬件可裁剪,以應用為中心開發的專用系統,硬件平臺可以是單片機,或者以ARM系列的處理器。單片機一般直接裸奔程序,不過現在有了好多基于單片機的系統,最近比較火的開源系統RT-Thread,做的還是不錯的;基于ARM架構的處理器大部分用的是linux系統作為軟件平臺,也有部分設備用的是安卓系統(內核也是linux);
??嵌入式系統開發包括內核、驅動、應用三大部分,今天主要說應用開發,內核與驅動就不多說了。嵌入式linux系統就是移植的linux內核,使用對應的編譯器,把linux內核編譯后下載到存儲芯片,然后還需要做一個基本的根文件系統,這樣系統就可以跑起來了,相對于PC上的系統,還是比較簡單的。
??現在網上有好多視頻教程,一般第一節課都會教你怎么搭建開發環境。我這里簡單羅列一下:
安裝一個linux系統的虛擬機,我用的是Ubuntu。
然后給虛擬機安裝對應的交叉編譯工具。
安裝常用工具,并配置:nfs、tftp、ftp、ssh服務、samba服務、vi必要的配置。
在板子上面使用nfs,還需要給板子的linux內核配置上nfs-client和nfs文件系統支持;
我喜歡在板子上移植一些好用的工具,比如:ftp、ssh服務(終端登錄和傳文件用)、crontab等
虛擬機登錄:安裝ssh服務, 后可以用一些終端軟件通過ssh登錄,這樣不用在虛擬機的桌面里使用terminal了
共享文件:我喜歡通過samba與windows共享目錄, 在windows下把共享目錄映射為網盤,使用起來也比較方便;我覺得這種共享很方便,比使用一些共享軟件要方便。掛載為網盤后和操作本地磁盤一樣,比較直觀。
??在一些視頻教程中,一般介紹的開發流程是這樣的:在windows下編輯好代碼,在虛擬機里使用交叉編譯器對代碼進行交叉編譯,然后通過tftp/ftp下載到板子里,或者nfs掛載后運行測試; 入門時是這樣,但是如果是在公司做實際的產品開發,這樣效率就會很低的。
??下面是我常用的流程:
在windows下或者虛擬機里編輯代碼,代碼編輯器一般用sourceInsight、VSCode、Eclipse等。
代碼在寫的時候,注意把與底層硬件交互的地方加編譯選項,這樣是通過編譯開關控制硬件訪問的代碼是否啟用。
第二步所做的工作,在這一步就起到了作用,在Makefile里,會寫上根據不同的編譯選項,選擇不同的編譯器,如果是使用Ubuntu里的編譯器,那么就把硬件相關的交互屏蔽,這樣編譯出來的程序,可以直接在Ubuntu上運行了,這樣一來,我們可以在Ubuntu上做代碼單元測試、程序的邏輯驗證、運行性能測試等。80%的問題可以在Ubuntu里解決。
在Ubuntu里測試沒問題后,在交叉編譯,通過nfs共享目錄,在板子里運行調試。
??這樣其實是減少下載程序到板子上這個過程,把邏輯驗證、代碼單元功能驗證放在Ubuntu里來驗證測試,而且Ubuntu里使用GDB調試也比較板子上方便。
??最常用,也是最有效的方式就是加打印信息,記日志!基本上可以解決80%的問題。如果遇到程序異常掛掉(比如段錯誤等),程序掛掉一般沒有任何提示信息,也不確定是在那里掛掉的,這種問題一般使用GDB跟蹤,或者在代碼里加入backtrace信息輸出的代碼。
??嵌入式linux系統應用開發,相對于內核、驅動開發,入門可能是比較容易的,畢竟應用層的開發,沒有那么多高深的東西。應用層與具體業務關聯比較大,因此也就導致應用開發的工作量比較大,需求也會有經常變更風險,但是應用開發里會有好多技巧,可以大大提高工作效率;linux應用可以使用C++進行開發,利用C++的面向對象思想,以及現在C++11之后的新特性功能,提供了好多類似于Java里的一些好用的功能,可以大大提高應用的開發效率。
關于怎么進行嵌入式linux系統應用開發就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。