娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月10日(星期二)

2021年06月10日 | ARM/uClinux開發環境的建立

發布者:彭勇 來源: eefocus關鍵字:ARM  uClinux  開發環境 手機看文章 掃描二維碼
隨時隨地手機看文章

先說兩句廢話為和我以前一樣對操作系統(尤其是嵌入式操作系統)迷惑的弟兄解釋些概念。因為總是有人在問是不是一定要用操作系統,我的CPU能不能移植操作系統,可以移植什么操作系統,有了操作系統可不可以運行某些程序。


從我的個人經歷來講,這其實就是許多硬件出身的弟兄對操作系統這個東西有神秘感(和我一年前一樣)。說白了,操作系統就是一段設計非常巧妙的程序,和你自己的程序從本質講沒有區別,于是,以上問題轉為,我是不是一定要用這段程序,我的CPU能不能運行這段程序,可以跑什么樣的程序。這個程序可以跑,調用這個程序接口的另一個程序能不能跑!


答案也就變得簡單,操作系統對任何一個CPU都不是必須的(對嵌入式系統更是如此),你可以自己編些程序在沒有操作系統的PC裸機上跑(BIOS就是這樣的),像玩C51一樣,(雖然奢侈的讓人有些心痛),或者移植UCOS到上面。另一方面,現代操作系統大多需要一些硬件的支持,(像保護模式的實現),反過來說,高端CPU中專門有針對支持操作系統的體系結構,這樣,許多操作系統的實現是挑剔硬件平臺的。其實其它程序也一樣,你編的程序使用的片上外設另一CPU上沒有,那這段程序就無法移植了。這就是話粗理不粗。書歸正傳,還是聊聊ARM+uClinux開發模式下開發環境的建立(其實下面說到的東西不僅限于這種硬件平臺和操作系統)


很久以前就在介紹嵌入式系統開發的書上見過“交叉編譯環境”這詞,當時覺得很玄,用了以后才知道,其實就是解決在誰的地盤上用誰的工具編誰的代碼問題。


編譯的最主要的工作就在將你的程序轉化成運行該程序的CPU所能識別的機器代碼,不同的CPU有相應的編譯器,另一方面。編譯器本身也是程序,當然也要在某一個CPU平臺上運行。于是交叉編譯的交叉點就在那個編譯器本身是CPU1上的一個程序,卻在為CPU2編譯代碼(整個一個吃里扒外!)。這么一想,以前用51和dsp的開發軟件(大部分都是IDE-集成開發環境)開發程序時,都算是交叉編譯啦。當然,假如在你的ARM系統上,操作系統已經正常運行,并且你的資源足夠多,你可以把PC機上運行的ARM編譯工具移植到ARM上,然后所有該系統的應用程序都直接在ARM系統上編譯,這就不算交叉編譯,但如果有條件這么作,程序的開發或者移植就方便多了,因為整個開發過程又回到在自己PC機上編應用程序的那種模式了,那就是在自己的地盤上用自己的編譯器編自己的應用程序。


與不使用操作系統的開發模式不同(此處的操作系統尤其指提供了專門的接口函數庫的操作系統,目前的UCOS就不算),在目標板(就是實現系統的板子)使用操作系統的開發模式下,交叉編譯環境中還需要該對應該操作系統的庫。比如uClinux提供的uClibc。此時,開發用的主機上不光要有目標板CPU所需的編譯工具,還要有對應操作系統的庫,又因為一般庫文件還要在開發機上拿目標CPU的編譯器重新編譯一下,所以還要把操作系統的原碼也放到開發機上。(唉,跟目標板沒什么關系,卻要幫它背這么多東西,真是上輩子欠它的!!)。


雖然操作系統的接口庫至關重要,但大家似乎已經淡忘了它的存在。這些多是因為大家已經遠離了刀耕火種的年代(需要告訴編譯器需要的include路徑,lib路徑,以及lib的名稱),集成的編譯環境讓我們編譯鏈接的所有繁瑣工作化作對BUILD按鈕的瀟灑一擊。而且不論是windows環境,還是linux環境,都有環境變量去記錄這些參數。。但嘗試將/usr/lib目錄改一個名字,你就會知道你不能無視他們的存在,因為操作系統的功能都是通過這些庫來交給應用層程序使用的。當然如果你的系統不依靠任何操作系統,像最原始的那種完全自己實現所有代碼,就只需要一個編譯工具,少了這些羅嗦事。


以上的東西一般時候是沒有必要仔細研究,但交叉環境下開發或移植比較大的程序時,你可能就需要了解編譯器,鏈接器等開發工具的幾乎所有重要參數。


我在開發時,主機完全使用的是linux,如果有條件,建議大家這樣作,linux的使用沒有想象的復雜(雖然我現在身邊還要放一本關于linux使用的書籍),而且開發程序可以先在主機上調通,然后用交叉編譯工具為目標系統重新編譯一遍,可以這樣做是因為主機是linux,目標系統跑uClinux,兩個操作系統提供的應用程序接口幾乎是一樣的,所以程序幾乎不用修改。


在我的系統上,建立基本的開發環境過程如下。


(1) 安裝gnu開發工具鏈(是GNU開發的針對ARM CPU的一組編譯開發程序(是linux程序)。包括arm-elf-gcc,arm-elf-ld等

(2) 將uClinux源代碼源代碼解壓到相應路徑下,按照編譯內核的步鄹編譯一遍(此時使用的編譯工具已經是上面提到的ARM編譯工具了,因為它要在ARM CPU上運行,另外,和編譯linux內核一樣,此時可以通過menuconfig來對內核提供的功能進行裁減

(3) 將庫(uClibc)解壓到相應路徑下,用以上工具編譯一遍。


這樣最基本的環境就算搭建好了。

關鍵字:ARM  uClinux  開發環境 引用地址:ARM/uClinux開發環境的建立

上一篇:ARM9礦井風機設計方案
下一篇:解析基于ARM 和Linux 通用工控硬件平臺的設計

推薦閱讀

富士康集團在深圳舉辦實體經濟與數字經濟融合發展高峰論壇,并慶祝富士康30周歲生日,創新工場董事長兼CEO李開復在《AI-工業互聯網與消費互聯網的融合發展》分論壇進行了主題分享。 他首先談到了中美在人工智能領域的差距與不同,李開復表示不同意很多專家認為美國領先的觀點,其實中國在很多領域是絕對領先的,我們有很好的基礎,并且,人工智能全面超越...
無人機作為一種新型的科技產品,在我們生活中的用途越來越多,從最開始娛樂性的飛行表演到航拍、物流、巡檢等各個領域都可以看見無人機的身影。如今,無人機行業發展迅速,使其對于移動通訊網絡的需求越來越旺盛。正因如此,很多人預測無人機將是5G網絡最先商用的幾大行業之一。如今,5G商用牌照已經正式發放,5G網絡真正商用也提上了議程。但是,無人機究...
路透社報道,沃達豐集團警告稱,如果英國決定將華為從電信基礎設施中剔除,那么英國想要在5G技術領域占據領導地位的愿望將面臨巨大打擊。沃達豐英國首席技術官斯科特·佩蒂(Scott Petty)在一份電子郵件聲明中告訴路透社:“如果移動運營商被迫花費時間和金錢更換現有設備,英國將失去在5G領域的領導地位。”佩蒂表示,英國政府應該努力擴大5G網絡覆蓋范圍...
智東西(公眾號:zhidxcom)編譯 | 楊暢編輯 | 李水青智東西6月10日消息,據美國科技媒體IEEE Spectrum報道,近日,麻省理工Sangbae Kim實驗室的研究人員最新設計了一款名為MIT Humanoid的人形機器人,這種機器人形似迷你獵豹(Mini Cheetah)四足機器人的直立版本,可以完成類似跑酷中的后空翻、180度跳躍等雜技動作。值得期待的是,MIT Humanoi...

史海拾趣

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 石门县| 江口县| 贞丰县| 新田县| 瑞金市| 怀宁县| 资中县| 健康| 南城县| 楚雄市| 板桥市| 永善县| 南昌市| 岗巴县| 西宁市| 保亭| 汤原县| 宿州市| 林州市| 舞阳县| 望城县| 垫江县| 河东区| 吉林市| 博罗县| 江孜县| 高州市| 青海省| 龙江县| 南投市| 任丘市| 交城县| 隆化县| 大同县| 大邑县| 兰州市| 越西县| 五莲县| 江源县| 甘泉县| 鹤岗市|