<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux如何運行于8位AVR微控制器?

Linux如何運行于8位AVR微控制器?

作者: 時(shí)間:2013-10-15 來(lái)源:網(wǎng)絡(luò ) 收藏

更新記錄2

太平洋夏令時(shí)(PDT),2012年4月3日凌晨1點(diǎn):上傳了新的源代碼存檔;使用內存的FPM(Fast Page Mode,快頁(yè)模式)模式和修改后的i-cache(指令緩存)配置文件加快了仿真器頻率(6.5KHz->10KHz);更新了移植指南,包括內核鏡像、新的更小的ramdisk(虛擬磁盤(pán))和新的完整鏡像。

更新記錄1

太平洋夏令時(shí)(PDT),2012年3月29日晚19點(diǎn):上傳了新的源代碼存檔;修改了Makefile,并且現在包含了一個(gè)移植指南,它可以幫助您將它移植到其他的開(kāi)發(fā)板或CPU中。

簡(jiǎn)介

我們經(jīng)??梢钥吹匠鯇W(xué)者在論壇中詢(xún)問(wèn)他們是否可以在他們微不足道的小的8位微機中運行。這些問(wèn)題的結果通常是帶來(lái)笑聲。我們也經(jīng)??吹?,在論壇中,詢(xún)問(wèn)運行的最低要求是什么。常見(jiàn)的答案是Linux需要一個(gè)32位架構和一個(gè)MMU(存儲器管理單元),并至少1MB的RAM來(lái)滿(mǎn)足內核的需求。本項旨在(并且成功)粉碎這些概念。下圖中您所看到的開(kāi)發(fā)板基于A(yíng)Tmega1284P。我還制作了一塊基于A(yíng)Tmega644a的開(kāi)發(fā)板,也同樣獲得了成功。該開(kāi)發(fā)板沒(méi)有使用其他處理器,啟動(dòng)Linux 2.6.34內核。事實(shí)上,它甚至可以運行一個(gè)完整的Ubuntu棧,包括X(如果你有時(shí)間等它啟動(dòng))和gnome。

RAM(隨即存取存儲器)

是的,沒(méi)錯,完整的Linux安裝需要數兆字節的RAM和32位帶有MMU的CPU。本項目擁有這一切。首先,讓我們訪(fǎng)問(wèn)RAM。正如您所看到的,在電路中有一塊古董級的30引腳SIMM內存模塊。這些是基于80286的PC曾經(jīng)使用的。它通過(guò)接口和ATmega連接,我寫(xiě)代碼來(lái)訪(fǎng)問(wèn)它并按照規格刷新它(SDRAM需要恒定速率刷新以避免丟失數據)。它到底有多快呢?刷新中斷每62ms發(fā)生一次,占用時(shí)間1.5ms,因此占用3%以下的CPU。訪(fǎng)問(wèn)RAM,為了便于編程,一次訪(fǎng)問(wèn)一個(gè)字節。這樣產(chǎn)生的最大帶寬約為300KBps。

存儲

對于RAM需要工作在休眠狀態(tài),我們有兩件事要處理。存儲并不是太難解決的問(wèn)題。使用SPI可以十分容易的與SD卡交互,我的項目中做到了這一點(diǎn)。一個(gè)1GB的SD卡可以工作的很好,雖然512MB就已經(jīng)滿(mǎn)足這一特殊的文件系統(Ubuntu Jaunty)。ATmega擁有一個(gè)硬件SPI模塊,但無(wú)論出于何種原因,它工作的不是十分順暢,因此我將這個(gè)接口進(jìn)行位拆裂。它仍然足夠塊——大約200KBps。這對項目來(lái)說(shuō)還非常有意義——它能夠在有足夠管腳的任何上實(shí)現,而不用使用其他硬件模塊。

CPU(中央處理單元)

所有剩下的就是那個(gè)32位CPU和MMU需求。不過(guò)沒(méi)有MMU,并且它是8位的。為了克服這一困難,我編寫(xiě)了一款ARM仿真器。ARM是我最熟悉的架構,并且它足夠簡(jiǎn)單,可以讓我很舒服的為它編寫(xiě)出一個(gè)仿真器。為什么要編寫(xiě)一個(gè),而不是移植一個(gè)呢?好吧,移植別人的代碼是沒(méi)有樂(lè )趣的,再加上我看到?jīng)]有將仿真器輕松移植到8位設備上的書(shū)面資料。原因之一:編譯器堅持16位處理整數將會(huì )給你帶來(lái)麻煩,如簡(jiǎn)單的“(120)”,產(chǎn)生0。你需要用“1UL20”。不必要的說(shuō),困擾其他人的未知基本代碼尋遍所有的地方,整數都被假定并將會(huì )失敗,這將是一個(gè)災難。另外,我想用這個(gè)機會(huì )編寫(xiě)一款很好的模塊化ARM仿真器。所以我付諸行動(dòng)。

其他功能

電路板通過(guò)一個(gè)串行端口和真實(shí)世界進(jìn)行通信。目前,它通過(guò)串行端口連接到我PC運行的minicom上,但是它可測的替代連接是連接到電路上的一個(gè)鍵盤(pán)和一個(gè)字符LCD,可以使其完全獨立。電路板上還有兩個(gè)LED。它們指示SD卡的訪(fǎng)問(wèn)情況。一個(gè)代表讀操作,一個(gè)代表寫(xiě)操作。電路板上還有一個(gè)按鈕。當按下并按住1秒時(shí)它將使串行端口脫離仿真的CPU的當前有效速度。的主頻是24MHz(超過(guò)原有20MHz的輕微超頻)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Linux AVR 微控制器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>