女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

8位處理器可以有效地處理這些功能

PCB線路板打樣 ? 來源:LONG ? 2019-08-13 11:51 ? 次閱讀

至少有兩個因素表明轉(zhuǎn)向功能更強大的處理器并不一定意味著需要占用更多比特。隨著應(yīng)用程序的成熟,功能強大,功能特定的處理器或引擎可用于承擔(dān)大部分繁重的工作。例如,使用MP3播放器,您可以購買完整的數(shù)字音頻解碼引擎。您只需要一個用戶

接口和PC的I/O接口,可以充實您的數(shù)字播放器。 8位處理器可以有效地處理這些功能。而且,對于需要更多功能的任務(wù),您可能會驚訝于那些小型8位處理器已經(jīng)成為40-MHz時鐘,可擴展程序存儲器,向量中斷表,浮點庫,C編譯器的強大工具,和外圍設(shè)備的范圍。您可能會發(fā)現(xiàn)選擇使用較少位的處理器可以更好地幫助您滿足成本和性能限制,同時節(jié)省空間。

我花了10多年的時間在工業(yè)控制應(yīng)用程序中使用16位和32位x86組裝。對于這個動手實踐的項目,我想看看我所有的16/32位偏差會讓我們后退并使用8位處理器進行設(shè)計。畢竟,因為處理器不那么復(fù)雜,設(shè)計過程應(yīng)該更簡單,不應(yīng)該嗎?

一個人的愚蠢錯誤往往會產(chǎn)生最好的學(xué)習(xí)材料。因此,一些設(shè)計經(jīng)驗可能有點令人尷尬。幸運的是,總是存在這樣的安慰:在完成這個項目之后,我不再是那些犯了這些錯誤的程序員。如果你正在考慮轉(zhuǎn)向8位處理器,那么閱讀這個項目可能會讓你免于我所遇到的一些痛苦和痛苦。

項目

對于我的項目,我決定制作一個音序器。我的一些工程師和我最近發(fā)現(xiàn)了“Cool-Neon”,也稱為電致發(fā)光線(參考文獻1)。您可以使用逆變器將9V電源轉(zhuǎn)換為300V交流電,從而驅(qū)動電線以創(chuàng)建多色光雕塑。我們首先建造了一條二維魚,我們可以騎在自行車上,創(chuàng)造一個游泳魚群的幻覺。對于我們的下一代項目,我們需要一個可以循環(huán)通過光線模式的音序器,為移動的雕塑或電子萬花筒創(chuàng)造一種運動的幻覺,其中不同時間點亮的不同光束代表短幀和循環(huán)動畫中的幀序列

8位處理器似乎非常適合這個項目。我需要一個輸出引腳來驅(qū)動每根導(dǎo)線;對于10股容量,我需要10個引腳。一個按鈕(使用另一個引腳)將允許某人循環(huán)通過模式選項。在功能列表中,我快速添加了傳感器的輸入。例如,放置在自行車車輪周圍的傳感器可以基于外部事件而不是內(nèi)部計時器來觸發(fā)模式。決定使用MicrochipPIC系列產(chǎn)品,我發(fā)現(xiàn)18引腳封裝處理器有13個I/O引腳,所以我有一個引腳備用,但不會長時間保留備用。

資源有限:記憶

您通常可以通過在更強大的處理器上投入資源(如內(nèi)存,處理和I/O)來解決問題。然而,由于配置的多樣性,8位世界中的家庭成員之間的差異可以直接節(jié)省成本。例如,具有2千字節(jié)板載內(nèi)存的處理器成本低于4千字節(jié)的處理器。我記得有64千克的銀行可用;你可以通過使用一個大表來加速一個關(guān)鍵的計算 - 一個可行的,有時是至關(guān)重要的選項來燃燒記憶。

早期,我做了什么才能成為我的音序器的關(guān)鍵設(shè)計決策。我沒有用1位(10個燈等于10位)表示活動燈,而是創(chuàng)建了一個10字節(jié)長的表,其中包含適當(dāng)邏輯光的物理端口代碼;也就是說,I/O端口A上的指示燈1 =位3)。我制作這張桌子是因為,當(dāng)我測試是否填充了燈光時,我必須計算物理端口。當(dāng)時,存儲這個預(yù)先計算的值似乎更容易。鑒于我的心態(tài),這個選擇是明智的:在開始時(主處理循環(huán)之外)執(zhí)行一次計算,并在每次稍后使用計算時保存那么多循環(huán)。

不幸的是,這個選擇很糟糕。首先,定序器將大部分時間花在輪詢循環(huán)中,等待按鍵是否被按下或是否已觸發(fā)定時器。因此,在輪詢循環(huán)中,我節(jié)省了幾個周期(最多10個燈,10個指令= 100個周期)。其次,更重要的是,我使用了比我需要多8個字節(jié)的RAM。我習(xí)慣丟掉數(shù)百字節(jié)的填充緩沖區(qū)來覆蓋可能出現(xiàn)的最壞情況。但是,當(dāng)8個字節(jié)幾乎占總數(shù)據(jù)存儲器的八分之一時,這是一個糟糕的決定。

在我用完數(shù)據(jù)存儲器之前,我沒有意識到這種選擇的重要性。我添加了一個變量,程序無法運行,因為另一個變量被推入未定義的0xFF區(qū)域。我的項目似乎沒有足夠的復(fù)雜性來使用這么多的內(nèi)存,但是當(dāng)我添加更多功能時,我忘了留意內(nèi)存。當(dāng)我努力恢復(fù)字節(jié)時,擊中數(shù)據(jù)存儲器的頂部使我的開發(fā)暫時停止。然后我犯了一個愚蠢的錯誤,即偶然試圖加倍臨時變量。例如,某些函數(shù)需要循環(huán)計數(shù)器。但是,您可以使用這些循環(huán)計數(shù)器來計算除這些函數(shù)之外的其他內(nèi)容。為了完成這項工作,我需要嚴(yán)格控制變量的范圍,以確保一個函數(shù)不使用相同的變量調(diào)用另一個函數(shù)。

我的第一個直覺指示我只給一個雙重任務(wù)變量一個名字。我可以想象調(diào)試的噩夢是沒有記住兩個不同的變量實際上是相同的變量并相互改變。至少如果他們有相同的名字,如果我不小心違反變量的范圍,我就有更好的機會抓住自己。

當(dāng)我嘗試按范圍對變量進行分組時,我了解到在整個程序中使用變量之前我可以更輕松地執(zhí)行此任務(wù)。例如,變量Temp具有直接范圍,這意味著如果函數(shù)調(diào)用另一個函數(shù),則第一個函數(shù)應(yīng)該假定Temp被銷毀。另一個極端是系統(tǒng)或全局變量,例如Flags,所有函數(shù)都可以使用。然后是灰色區(qū)域。例如,循環(huán)計算當(dāng)前正在處理燈光模式中的哪個步驟。因為一次只能執(zhí)行一個模式,所以每個模式函數(shù)都可以使用Cycle。此外,當(dāng)用戶編輯用戶可編程模式時,沒有預(yù)定義模式正在運行,因此您也可以在此處使用Cycle。但是,當(dāng)我想在編輯時顯示用戶可編程模式時,我確實存在潛在的范圍違規(guī)。我必須在顯示之前存儲Cycle并在編輯后恢復(fù)它,或者我可以讓用戶通過在他或她想要編輯的周期停止顯示來重置Cycle,這是我實現(xiàn)的選擇。

在這種情況下存儲Cycle會需要一個全局變量,因為顯示一個模式使用了主程序循環(huán),但是為此目的專用變量會使變量首先加倍。我也可以選擇實現(xiàn)數(shù)據(jù)堆棧。在16位和32位的世界中,堆棧是一個方便的朋友。但是,我使用的微處理器只有一個內(nèi)部堆棧用于程序地址。 (我確信有一些方法可以欺騙處理器來存儲數(shù)據(jù),但只有8個級別,如果我想保存多于一個或兩個值,我會冒著堆棧的風(fēng)險。)堆棧至少需要一個額外的字節(jié)用于尾部管理,你必須緩沖他們最壞情況下使用。我避免實現(xiàn)堆棧,因為我認(rèn)為我的值太少而無法保存。

變量的范圍對于通過加倍使用變量來跟蹤和創(chuàng)建變量的依賴性至關(guān)重要。這項任務(wù)應(yīng)該是一個謹(jǐn)慎的決定。我試圖將變量劃分為功能塊,但是,即使仔細(xì)規(guī)劃,似乎總是可以同時使用兩個塊,因此也就是所有變量。然后我會發(fā)現(xiàn)自己正在追逐自己造成的錯誤。

一旦您決定將處理器放在電路板上,您就有可能顯著降低處理器的成本。當(dāng)你發(fā)展時,給自己一些重新編程的空間是有意義的;但是,您可能會發(fā)現(xiàn)自己只需幾個字節(jié)就可以將設(shè)計融入更便宜的處理器中。較便宜的選項并不總是等價的,并且會影響開發(fā),因為它們定義了內(nèi)存和性能閾值。通過在開始開發(fā)時而不是在完成開發(fā)時了解這些閾值,您可以確定限制可用資源的緊密程度。無論如何,你可能永遠(yuǎn)不會雇用一個字節(jié)作為一個角色。

資源有限:處理

由于“功能蠕變”-extra功能使設(shè)計復(fù)雜化并拋棄計劃 - 繼續(xù)為順控程序添加選項和增強功能,我意識到我可能也會在程序內(nèi)存中占據(jù)優(yōu)勢。在16位和32位的世界中,我經(jīng)常為一個問題投入內(nèi)存以減少總計算時間。我發(fā)現(xiàn)自己正在使用我的音序器進行反向權(quán)衡。

當(dāng)我設(shè)計用戶可編程模式(存儲在EEPROM中)時,我使用位來表示每個光。但是,10位是1字節(jié),剩下2位,您可以打包成四個組以完全使用另一個字節(jié)。這個決定產(chǎn)生了一個問題,因為模式將以與我用來打開燈光的格式不同的格式存儲。 (EEPROM格式使用邏輯格式來跟蹤被點亮的燈:點亮零到九。燈格式使用物理格式:每個端口一個字節(jié),A和B,每個位代表相應(yīng)的I/O引腳,由于板布局考慮而無序。)存在兩種格式,因為物理格式是用于驅(qū)動輸出端口的實際掩碼。但是,物理格式使用16位而不是像邏輯格式那樣僅使用10位。因此,我需要一個轉(zhuǎn)換函數(shù)。

我通常會同時寫兩個轉(zhuǎn)換函數(shù)的方向。為了最大限度地減少總處理周期,我將EEPROM邏輯格式轉(zhuǎn)換為光/物理格式。當(dāng)用戶編輯模式的這個循環(huán)時,我將制作并顯示光/物理格式的變化。當(dāng)用戶完成編輯此循環(huán)后,我會將光/物理格式轉(zhuǎn)換回EEPROM/邏輯格式并保存循環(huán)。

我決定轉(zhuǎn)而支持內(nèi)存而不是處理性能。通過直接更改EEPROM/邏輯格式,我可以調(diào)用轉(zhuǎn)換函數(shù)來創(chuàng)建光/物理格式并顯示修改后的周期。每次運行此轉(zhuǎn)換需要更多的處理周期,但同樣,這些周期僅來自輪詢循環(huán)。我獲得了廢除逆轉(zhuǎn)換函數(shù)的選項,因為它從未被調(diào)用過。因此,我節(jié)省了程序內(nèi)存和一些開發(fā)時間。我還獲得了將所有更改立即保存在EEPROM中的好處,使我無需在用戶移動到新周期時管理保存更改,想要顯示模式,左編輯模式等等。

計時器

在我的問題上投擲處理能力而不是記憶力幾乎適用于我。 PIC16F84有一個內(nèi)部定時器TMR0,粒度為256個周期,預(yù)分頻器大小為2 8 (256×256 = 65,536個周期)。在沒有預(yù)分頻器的情況下運行,每256個周期發(fā)生一次TMR0中斷。因為我將每個模式的循環(huán)連接到TMR0,所以每個循環(huán)必須在256個循環(huán)內(nèi)完成執(zhí)行,或者在完成處理最后一個循環(huán)之前我會遇到TMR0事件,偶爾在模式期間丟失一個循環(huán)。增加預(yù)分頻器可以選擇將TMR0間隙增加2倍,以防止超出。通過盡可能多地處理中斷以避免中斷處理期間的中斷延遲,保持中斷處理程序的清潔和簡單也很重要。

我使用電位計讓用戶調(diào)整音序器的速度。鑒于你需要在模式的周期之間進行一點處理,我選擇使用RC時鐘而不是晶體。這個決定節(jié)省了晶體成本,系統(tǒng)復(fù)雜性和I/O引腳;電位計驅(qū)動RC時鐘,而不是告訴PIC應(yīng)該運行多快,并在內(nèi)部管理這個速度。如果我想讓兩個序列發(fā)生器相互通信,我將不得不創(chuàng)建一個連接兩個節(jié)點的協(xié)議,這些節(jié)點具有獨立且可能變化的時鐘速度。

我想要幾種速度選項 - 從幾分之一到幾秒 - 用于循環(huán)模式。電位器給了我一個范圍,所以我創(chuàng)建了兩個用戶可選擇的速度區(qū)域,為TMR0使用了不同的預(yù)分頻器。我的設(shè)計最初支持三個區(qū)域,但有兩個簡化的用戶選擇,將速度參數(shù)切換為1位,并簡化了TMR0事件的內(nèi)部管理。

預(yù)分頻器3(2 4 = 16)和4(2 5 <之間的差異/sup> = 32)可以變寬,特別是RC時鐘被調(diào)到5和50 kHz。當(dāng)我的設(shè)計支持三種模式時,我發(fā)現(xiàn)添加(TMR0_COUNT預(yù)分頻器讓我可以更好地控制中斷。如果你用一個10-MHz時鐘運行PIC,你可能會發(fā)現(xiàn)這個額外的預(yù)分頻器讓你測量有用的時間長度。

調(diào)試

鑒于要重復(fù)這個項目,我會獲得一個用于軟件開發(fā)的模擬器。嘗試解決困難編程所節(jié)省的時間很快就會彌補費用。相反,我非常依賴MPLAB模擬器。

模擬器的運行速度比我預(yù)期的要慢得多。有時,我認(rèn)為系統(tǒng)已經(jīng)凍結(jié),因為它努力到達我的斷點。有時候,我引起了一個延遲,例如當(dāng)我在輪詢循環(huán)后將斷點放在代碼中的某個點時,模擬器卡在輪詢循環(huán)中等待我響應(yīng)。我的設(shè)計有一個短于256個時鐘的主循環(huán),所以我可以快速測試迭代和情況。以10 MHz運行的設(shè)計可能有更長的主循環(huán)或更多的輪詢。

我發(fā)現(xiàn)使用Define創(chuàng)建模擬器標(biāo)簽很有用。在真正的董事會上,我想要真正的延遲。但是,通常沒有理由在模擬器中的輪詢或延遲循環(huán)中永遠(yuǎn)等待。例如,我有一個Flash功能,可以閃爍特定的線W次。在模擬器中,我沒有必要“看到”這種閃爍。因此,我添加了以下代碼以跳過無用的函數(shù)和速度模擬:

TMR0也觸發(fā)了事件。我將所有延遲量命名為常量,以便我可以將所有模擬器常量設(shè)置為零。我還添加了一些代碼來模擬按鈕按下或其他事件。有時,等待TMR0中斷變得令人難以忍受。在我的輪詢循環(huán)中,然后,我添加了僅模擬器代碼,它將設(shè)置我的TMR0事件標(biāo)志(然后將TMR0重置為零,以便最終不會觸發(fā)我)。

模擬器代碼的另一個有用位置是中斷處理程序的開頭。我的中斷處理程序足夠短,可以將它留在代碼的前面,而不是調(diào)用放在內(nèi)存中其他地方的函數(shù),這會增加中斷的延遲。但是,當(dāng)我模擬輸入時,會調(diào)用一個中斷,我不得不單步執(zhí)行所有中斷代碼。我添加了代碼:

此代碼創(chuàng)建了一個調(diào)用,我可以用鍵擊來代替。

我通常發(fā)現(xiàn)MPLAB環(huán)境包含很多很好的功能,但是我很痛苦地追逐一個接口問題。例如,我想測試需要按兩次按鈕才能到達的代碼。 MPLAB有一個“激勵模擬器”窗口,通過它我可以激活輸入端口。不幸的是,當(dāng)刺激窗口打開時,模擬器的運行速度明顯變慢,所以我通常不得不關(guān)閉窗口并在幾秒鐘后重新打開它。選擇刺激時鐘似乎比它值得更麻煩,因為我必須弄清楚我希望輸入觸發(fā)的時鐘周期。通過查看合適的輸出引腳,我也可以看到燈是否亮起。但是,對于任何復(fù)雜的輸出序列,驗證準(zhǔn)確的反饋可能很困難。

與MPLAB環(huán)境一樣有用,我建議您訪問一個快速而骯臟的開發(fā)環(huán)境,例如Basic,來測試算法。例如,微芯片應(yīng)用筆記庫中的隨機數(shù)生成器功能似乎在0到255的值中具有不均勻分布的數(shù)字。由于存儲器限制,在Microchip環(huán)境中測試此功能似乎很困難。例如,如果我有256字節(jié)的RAM,我可以很容易地計算很長一段時間內(nèi)的分布。然而,如果不到40H字節(jié),我將不得不想出一個聰明的計數(shù)方案,并且可能會多次運行我的模擬以確定傳播是均勻的。在Basic中,我可以在幾分鐘內(nèi)彈出這段代碼并幾乎立即看到結(jié)果。

我遇到了其他令人沮喪的錯誤;如果我使用了模擬器,我會節(jié)省數(shù)小時的調(diào)試時間。

因為我使用了可重新編程的設(shè)備,所以我不得不將設(shè)備插入板中以及從板中取出設(shè)備以將其放入設(shè)備編程器中。我在電路板上有一個插座,但是將設(shè)備插入插座意味著我必須將插座插入插座中,從而產(chǎn)生松動且因此不良的電氣配合。我最終在一臺設(shè)備上打破了領(lǐng)先優(yōu)勢,使其無用。我還需要偶爾向外彎曲引線,因為向內(nèi)彎曲的引腳連接不良,I/O引腳會神秘地停止工作。使用模擬器可以消除我的大部分套接字問題。

我安裝了一個新的逆變器,可以驅(qū)動比我當(dāng)前的逆變器更多的電線,從而使我能夠同時點亮幾根電線。雖然設(shè)計是在程序模式下,但我會閃現(xiàn)一條線來代表一個參數(shù)。參數(shù)One工作正常,但參數(shù)二不會閃爍。因為我專注于用戶可編程模式并禁用了其他參數(shù),所以我認(rèn)為我的一些更改可能會改變代碼的閃存能力 - 通過使用變量。經(jīng)過大約一個小時的追逐幻象代碼錯誤后,我終于將問題縮小到了實際的電線,除非我點亮另一根電線,否則我無法關(guān)閉。突然間,我意識到新的逆變器可能是問題所在。當(dāng)我連接舊逆變器時,電線正確閃爍。

出現(xiàn)問題是因為逆變器傾向于保持電線點亮;一些導(dǎo)線 - 但不是其他導(dǎo)線 - 超過驅(qū)動導(dǎo)線的三端雙向可控硅開關(guān)中的相位間隙。我通過代碼搜索,因為一根電線工作,而另一根沒電。我懷疑是一個邏輯問題,并且忽視了導(dǎo)線出錯的可能性,因為它之前一直有效。使用模擬器,我會看到端口已經(jīng)變低,我正面臨硬件,而不是邏輯問題。我還了解到,當(dāng)我使用新設(shè)備進行測試時,我應(yīng)該檢查一下,在更改硬件之前是否存在先前設(shè)置中存在的錯誤。

值得一提的是,我保持了“健全性” - 使用舊版本代碼刻錄的幾個芯片。每當(dāng)原型開始變得怪異時,我就會放入其中一個完整的燒傷。如果原型工作,那么我的最新版本的代碼已經(jīng)破壞了一些關(guān)鍵的東西。如果健全性刻錄無法正常工作,則硬件會出現(xiàn)諸如斷線之類的問題。

電源問題引發(fā)了一系列令人討厭的錯誤。我最初使用壁式電源為我的原型供電。但是,我得到了一些奇怪的閃爍,我很快就將其評估為電源問題。由于電路板應(yīng)使用9V電池供電,因此我切換到電池供電。然而,點亮的電線消耗大量電力。我還做了一個不幸的假設(shè),即當(dāng)電池電量太低時我的電線就會死掉。 PIC實際上首先變得缺電,然后行動不穩(wěn)定。我在追逐想象中的錯誤一天之后才發(fā)現(xiàn)了這個事實。使用新電池可以處理所有事情。我希望在嘗試查找錯誤并注釋掉部分,設(shè)置不必要的調(diào)試掛鉤等之前保存了特殊版本的代碼。

為了避免電池問題,我回到墻上供應(yīng)。然后我發(fā)現(xiàn)閃爍不是由電源引起的,正如我所假設(shè)的那樣。 (墻上插座給了我足夠的力量來看到我的弱電池上的閃爍。)相反,這是我在設(shè)置下一個周期之前短暫關(guān)閉燈并顯示它們的問題。我將代碼更改為只是從一個循環(huán)移動到另一個循環(huán)而不顯示其間的所有燈。奇怪的閃爍消失了。

我創(chuàng)建的另一個原型錯誤涉及使用重置按鈕。我在面包板原型上添加了一個復(fù)位按鈕,這樣我就可以輕松地重置電路板而無需進行物理斷開,然后重新連接9V電池。模擬器可以提供相同的功能。但是,最終產(chǎn)品沒有重置按鈕。使用原型,當(dāng)我想離開程序模式時,我會按下重置按鈕重新啟動電路板。然而,這種復(fù)位不是全功率復(fù)位,這意味著標(biāo)志和存儲器沒有被清除;在這種情況下唯一重大的變化是程序計數(shù)器重置為0x00。當(dāng)我最終轉(zhuǎn)移到真正的用戶所擁有的制造原型時,我通過關(guān)閉然后再打開電路板離開編程模式,但是電路板沒有注冊我的更改。出現(xiàn)此問題的原因是斷電復(fù)位也會清除內(nèi)存。

我列舉了這些例子,因為它們說明了使用原型的一些危險。一方面,你需要一個干凈的環(huán)境來開發(fā),所以你不會追逐幻影。您還希望訪問所有硬件,并且應(yīng)該能夠隨意進行探測。另一方面,您需要使用與客戶相同的硬件來查看實際發(fā)生的情況。

時滯

當(dāng)我炸掉我唯一的控制器時,我遇到了開發(fā)周期中最大的延遲之一。我首先訪問Microchip的網(wǎng)站以獲得更多芯片。最快的送貨服務(wù)是三天,這意味著我只能使用模擬器進行開發(fā)。我找到了多個銷售PIC芯片的互聯(lián)網(wǎng)網(wǎng)站,并且可選擇更快的交付。雖然其他站點提供了有限的PIC選擇,但我確實找到了PIC16F84,這是很好的開發(fā),然后計劃換成更便宜的芯片。鑒于PIC微處理器的普遍可用性,我購買了一些零件而無需與經(jīng)銷商建立關(guān)系。我還學(xué)到了庫存的第一條規(guī)則:有一些。當(dāng)出現(xiàn)問題時,您的時間和產(chǎn)品的上市時間應(yīng)該得到一些額外部件的保險。

延遲的一個更具破壞性的因素是特征蠕變。在我完成基本功能之前,我已經(jīng)決定了一系列新功能,例如用戶可編程模式,這些功能已經(jīng)進入規(guī)范。我為需要非標(biāo)準(zhǔn)模式的專家用戶構(gòu)思了用戶可編程模式。這些模式還需要與項目其余部分一樣多的編碼開發(fā)時間。突然之間,由于我努力解決專家代碼中的錯誤,上市時間受到了沖擊。具有諷刺意味的是,beta測試人員對用戶可編程模式不感興趣。換句話說,如果我關(guān)閉了規(guī)范并將專家功能推遲到第二版(參見附文“經(jīng)典混音和錯誤”),我本可以更快地將測試板交付給beta測試人員并測試音序器的基本穩(wěn)健性。

殺手NOP

每當(dāng)我得到一個新工具時,我總會感到興奮。安裝后,我要做的最后一件事是特別注意說明。我已經(jīng)閱讀了足夠的內(nèi)容以便開始,然后向我保證我會返回并稍后完成。

早期,當(dāng)我嘗試實現(xiàn)演示模式時,我發(fā)現(xiàn)了一個奇怪的問題:電路板只能點亮六盞燈。當(dāng)我刪除代碼時,電路板工作正常。此時,我開始重新編寫代碼片段,每次測試電路板時都會進行測試。最后,除了一段代碼之外的所有代碼都重新進入。當(dāng)我注釋掉代碼時,電路板運行了。奇怪的是,只有按下按鈕才會執(zhí)行此代碼。不知何故,我想,事件是錯誤地觸發(fā)的。當(dāng)我刪除除了Goto和Return之外的所有代碼時,代碼工作正常。添加CLRF標(biāo)志會導(dǎo)致失敗。但是怎么樣?然后,我決定添加非操作(NOP)指令而不是CLRF標(biāo)志。隨著NOP,董事會失敗了。如果沒有NOP,代碼就會運行。

當(dāng)NOP指令導(dǎo)致嚴(yán)重錯誤時,通常意味著存在內(nèi)存誤解。果然,我的一張桌子越過100H邊界,因為我慢慢地在它前面添加了程序代碼。在這種情況下,出現(xiàn)問題是因為表地址變?yōu)?位長; 14位PIC指令可以容納Goto地址的額外位,但它們會丟棄算術(shù)指令的第9位和第10位,例如Add。因為我測試的代碼長5個字節(jié),所以表超過了4個字節(jié)。 (因此,在光7之前只有六個燈顯示PIC設(shè)置為00H(復(fù)位)而不是100H。)

我通過將所有表移動到代碼部分的前面然后仔細(xì)閱讀指令集來解決問題,以查看是否有任何更多的命令具有匯編程序無法捕獲的偷偷摸摸的細(xì)微差別。后來,當(dāng)我閱讀John Peatman的使用PIC微控制器進行設(shè)計時,我發(fā)現(xiàn)將表放在存儲器前面是PIC的標(biāo)準(zhǔn)做法,因為這個原因(參考文獻) 2)。我快速閱讀,看看是否還有其他標(biāo)準(zhǔn)做法我應(yīng)該遵循。在中斷區(qū)域,這本書給我?guī)砹撕艽蟮谋瘋?。例如,?6位和32位的世界中,標(biāo)志會自動保存,并且有一個堆棧來保存寄存器。使用PIC系列,您必須自己保存標(biāo)志,但首先必須以一種棘手的方式保存累加器(使用Swap)而不影響標(biāo)志(清單1)。我發(fā)現(xiàn)disable-interrupt命令特別具有欺騙性。由于PIC具有兩級流水線,因此如果中斷因此與請求禁用中斷同時發(fā)生,則會出現(xiàn)問題。 PIC根據(jù)您的指令清除中斷標(biāo)志,然后執(zhí)行掛起中斷。當(dāng)您從中斷返回,從而啟用中斷標(biāo)志時,即使您認(rèn)為剛剛禁用了它們,也會在主代碼中啟用中斷(清單2)。

最后,我發(fā)現(xiàn)PIC規(guī)格表雖然技術(shù)上已經(jīng)完整,但需要一些澄清。至少買一本像皮特曼這樣的書。他建議一個強大的編程結(jié)構(gòu),可以幫助您避免許多問題。然而,他的問題部分讓我煩惱,因為你必須提前閱讀一兩章才能最終發(fā)現(xiàn)答案。在任何情況下,在您發(fā)現(xiàn)之前閱讀本書,與大多數(shù)錯誤一樣,您無法理解架構(gòu)的細(xì)微差別。

你可能會問35條指令有多復(fù)雜。不幸的是,減少的指令集實際上導(dǎo)致更復(fù)雜的程序。對于一個簡單的類比,想象一下,我試著寫這篇文章而不使用字母T.較少的單詞構(gòu)成一個不太復(fù)雜的詞匯,但可用的單詞較少意味著說某些事情需要更長的時間。例如,高階語言具有復(fù)雜的詞匯表,可以讓您在一條指令中描述復(fù)雜的匯編任務(wù),例如打印或乘法。使用精簡的指令集,例如PIC系列的指令集,即使是簡單的函數(shù),例如位移,也會變得更加復(fù)雜。例如,x86的程序集提供了諸如旋轉(zhuǎn)而不進位和旋轉(zhuǎn)CL次等命令(清單3)。當(dāng)我需要將比特封裝的位移實現(xiàn)到這個項目時,我不得不考慮這個過程。沒有旋轉(zhuǎn) - 不進位指令,所以在右旋轉(zhuǎn)的情況下,我必須在每次旋轉(zhuǎn)之前將進位標(biāo)志設(shè)置到最右邊的位置。

創(chuàng)建比特移位等功能并不困難;但是,你仍然需要創(chuàng)建它們。如果您從未在此級別工作 - 例如,如果您始終有可用的打印指令 - 創(chuàng)建基本功能庫可能需要一段時間。您還會發(fā)現(xiàn),第一次嘗試時,您可能無法確定實現(xiàn)功能的最有效或最靈活的方式。因此,我的項目花費的時間比我想象的要長,因為我編寫了“基本”函數(shù),我習(xí)慣于在不太復(fù)雜的16位和32位架構(gòu)中實現(xiàn)這些函數(shù)。

我還發(fā)現(xiàn),盡早構(gòu)建我的基本功能庫可以提高我布置音序器架構(gòu)的能力。例如,一旦我編寫了用于讀寫EEPROM的基本功能,我開始將EEPROM視為一種資源,而不僅僅是我后來需要編寫代碼的東西。這種觀點的改變促使我考慮創(chuàng)建在斷電后保持設(shè)置的靜態(tài)用戶參數(shù)的想法。 EEPROM還打開了一組可用的數(shù)據(jù)存儲器,訪問速度要慢得多,但可以想象我會忘記內(nèi)存堵塞。

硬件/軟件斷開連接

在我編程16位和32位架構(gòu)的過程中,我一直使用完整的硬件系統(tǒng);也就是說,我在PC或已經(jīng)設(shè)計,打印,填充和測試的電路板上工作。在這些條件下,我的首要任務(wù)之一是確定新功能的可行性。通常,您可以在軟件中實現(xiàn)任何功能,因為該功能滿足處理速度,內(nèi)存和接口的限制。如果不是這三個限制,8位μP可以執(zhí)行視頻會議,雖然速度很慢。一旦我確定我有足夠的處理能力,并且我可以在必要時實時執(zhí)行任務(wù),足夠的內(nèi)存和正確的接口,我會編寫該函數(shù)。

然而,在這個項目中,我是構(gòu)建電路板的設(shè)計團隊的一員。雖然我的硬件技能有限,但我提供了一個在代碼中可以合理實現(xiàn)的視角。也就是說,包含PIC無法有效處理的硬件接口將是荒謬的。該團隊開發(fā)的一項功能是自動檢測電路,確定端口是否實際連接到電線。如果沒有這樣的電路,PIC就無法知道用戶想要點亮和循環(huán)多少根導(dǎo)線,除非他每次給電路板加電時輸入該值。相比之下,由于帶有電位計的RC電路為PIC提供時鐘,因此PIC永遠(yuǎn)不會知道它的運行速度。 (PIC的設(shè)計人員認(rèn)為此功能不是必需或有用的。)

請注意,在我們支付第一批電路板之前,我們沒有鎖定硬件規(guī)格??紤]到產(chǎn)品上市時間的壓力,即使我們?nèi)匀恍枰帉懘a,我們也會將電路板放到屏幕上進行篩選。我們完成了足夠的代碼來滿足團隊需求,硬件按照我們的預(yù)期運行,但是我們還沒有把所有的花里胡哨都用到了。

一旦我們鎖定硬件規(guī)格,整個設(shè)計氛圍就會改變:硬件和軟件之間發(fā)生斷開連接。到目前為止,硬件設(shè)計是瓶頸。軟件隨時準(zhǔn)備好等待測試電路板。一旦我們完成硬件,軟件突然成為瓶頸。此外,我們不再討論我們在硬件或軟件方面可以做些什么;現(xiàn)在,這是所有的軟件。硬件團隊離開了項目,因為沒有人能做到。任何硬件“問題”,例如I/O引腳反轉(zhuǎn)或引腳布局,現(xiàn)在都是軟件問題。令人沮喪的一天,當(dāng)硬件團隊努力解決地面問題時,他們宣稱董事會已經(jīng)完成并走開了,留下了一個未能運行與會話開始時相同代碼的原型。我發(fā)現(xiàn),有人將輸入按鈕反轉(zhuǎn)為驅(qū)動低而不是高,但沒有給我這個信息。

此外,每個人都對如何改善董事會的職能有很好的想法,這也帶來了另一個挑戰(zhàn)。我們擁有簡單的硬件基礎(chǔ),為軟件提供了極大的靈活性現(xiàn)在我在槍口下,規(guī)格變化和特征蠕變成了流行病。存在兩類規(guī)范更改:功能更改以及如何向用戶(接口)提供這些功能的更改。在這兩者中,設(shè)計師通常認(rèn)為界面變化更簡單,但實際上它們更難。例如,音序器沒有顯示,只有兩個按鈕。經(jīng)過一些反思,我們意識到我們可以使用線本身來向用戶傳達信息,所以我現(xiàn)在有一個原始的10位顯示器。但是,我還必須創(chuàng)建一個用于“打印”到此顯示的函數(shù)庫。只有兩個按鈕創(chuàng)造了在用戶可編程序列模式下嘗試為多達10個命令提供用戶訪問的挑戰(zhàn)。我們提出了一個擴展移位鍵的想法;也就是說,按住一個按鈕,同時反復(fù)按下另一個按鈕。盡管該計劃允許我們訪問許多功能,但它在按鈕事件的評估中產(chǎn)生了復(fù)雜性。最初,當(dāng)按下按鈕時,我標(biāo)記了按鈕1或按鈕2事件。現(xiàn)在,我仍然不得不支持這個機制來編寫我編寫的代碼,同時創(chuàng)建一個計數(shù)按鈕2按下的移位狀態(tài)并觸發(fā)按鈕1的釋放。鑒于我必須在模擬環(huán)境中調(diào)試此問題,擴展移位起到中斷的作用,并且我必須支持觸發(fā)事件的舊方法,這個函數(shù)是我設(shè)計中最復(fù)雜的部分。

PIC匯編語言最令人煩惱的一個方面是你必須記住位組合。例如,PIC16F84的文檔說您可以在累加器W(0)或正在使用的文件寄存器(1)中存儲計算?;蛘呤侵車钠渌绞?直到我讀到Peatman的書時,我才意識到,在F84包含文件中,PIC的設(shè)計者已經(jīng)為你設(shè)置了W = 0和F = 1的常數(shù)。

使用常量和宏來簡化代碼的誘惑誘惑了我。對于W/F區(qū)別,使用常量是有意義的。但是,我猶豫是否盡可能使用宏。例如,我發(fā)現(xiàn)自己總是被SUBLW和SUBWF拋棄。首先,助記符是不一致的:SUBLW從文字(LW)中減去W,SUBWF從F中減去W(應(yīng)該是SUBWF?)。我一直不得不回到手冊來說明問題。此外,在比較期間使用減法設(shè)置標(biāo)志始終需要仔細(xì)檢查。在x86匯編中,標(biāo)志JA(如果在上面跳轉(zhuǎn)),JB(如果在下面跳轉(zhuǎn))和JZ(如果在零時跳轉(zhuǎn))清楚地定義比較后的動作。這些命令在一條指令中測試零和進位標(biāo)志。您還可以使用PIC(清單4)在一條指令中測試高于,低于和零。但是,您必須在從A減去A或從A減去A以僅檢查進位標(biāo)志而不是零標(biāo)志。 (交換順序會改變進位標(biāo)志是否占零情況。)

我考慮編寫一個宏來進行比較,但是認(rèn)為這個任務(wù)可能變得復(fù)雜,因為值可能是數(shù)據(jù)或常量,因此需要MOVLW或SUBLW。另外,我考慮了宏的一個有害的副作用:它們創(chuàng)建“專有”命令。專有命令的問題在于,有人閱讀代碼最初會發(fā)現(xiàn)它們令人困惑并且必須學(xué)習(xí)它們。此外,您在其他應(yīng)用程序中編寫代碼時會遇到問題,因為某些原因您無法使用宏,或者必須使用其他人的代碼。

Microchip可以通過管理標(biāo)準(zhǔn)宏庫來簡化該領(lǐng)域的開發(fā)。例如,幾乎每個程序都使用比較宏(參考文獻3)。如果您使用標(biāo)準(zhǔn)宏庫,宏將成為整個行業(yè)的命令,而不是程序員之間的絆腳石。在其辯護中,Microchip確實提供了一個令人印象深刻的應(yīng)用筆記庫(參考文獻4),展示了程序員如何在PIC??上實現(xiàn)各種功能。但是,需要花時間對這些筆記進行分類,讓我自己通過自己開發(fā)代碼來節(jié)省時間。

在盒子外面思考

我們在將音序器投入生產(chǎn)時學(xué)到的最重要的一課是設(shè)計不是一個線性過程。團隊通常分為功能組:硬件;軟件;包裝,制造和測試;等等。不幸的是,設(shè)計依賴性不那么整齊。例如,包裝被證明是一種粗魯?shù)挠X醒。塑料盒似乎比電路板成本更高,我們必須將大部分元件安裝在電路板的背面,以使電路板適合我們選擇的現(xiàn)成的??盒子。設(shè)計的每個階段,無論其看似簡單,都對其他階段具有依賴性和影響。如果我們在急于制造電路板之前已經(jīng)看過盒子,我們可以用不同的外形設(shè)計電路板并擴大我們可能的盒子選項。

總而言之,這種經(jīng)歷啟發(fā)了我們。我天真地認(rèn)為編碼只需要幾天時間,所以我對我們超出預(yù)計時間表的時間感到震驚。當(dāng)然,我們每個人都有其他全職工作和個人生活。但是,我嚴(yán)重低估了我加快PIC速度所需的時間。我忘記了我有多年的x86匯編經(jīng)驗,并且已經(jīng)花費了大量的時間來理解該架構(gòu)的復(fù)雜性和細(xì)微差別,以及常見的邏輯結(jié)構(gòu),例如表格。這些知識讓我在PIC開發(fā)方面處于領(lǐng)先地位,但我仍然不得不重新構(gòu)建我可編碼的許多函數(shù),而不用考慮x86,以及克服我的偏見和假設(shè)。關(guān)于假設(shè)的令人討厭的事情是很容易忘記你曾經(jīng)做過它們。

現(xiàn)實情況是,8位μP仍然存在,并且正在尋找越來越復(fù)雜的應(yīng)用程序(參考文獻5)。在某些方面,它們專門用于某些任務(wù),例如接口管理,傳感器監(jiān)控和串行通信,因為音頻解碼器適用于MP3播放器。而且,在設(shè)備不斷變得更加智能化的世界中,它們以低成本提供了相當(dāng)大的智能。

經(jīng)典混淆和錯誤

臭蟲是討厭的小家伙,特別是如果他們是你自己的錯。以下是我制作的一些經(jīng)典混淆和錯誤,希望您能避免:

十六進制/十進制混音:示例:當(dāng)您使用10代替10而不是0'0a時。我發(fā)現(xiàn)最好在整個程序中使用一個基數(shù)和編號約定來避免歧義。

文字/地址混淆:我有很多關(guān)于文字和地址的混淆,因為兩者都被定義為常量。在16位和32位的世界中,匯編程序通常會標(biāo)記對常量的誤用。例如,我沒有使用ADDLW posxw_table,而是使用ADDWF posxw_table,W。很明顯,這個錯誤是我的,因為我試圖在該地址而不是偏移處添加字節(jié)。然而,對于不熟悉的助記符,更容易犯這個錯誤,因為我習(xí)慣于使用Offset命令而不是明確地聲明我在add指令中使用了文字。

拐杖功能:早期,我的設(shè)計需要延遲功能。我第一次寫了一個計算周期。制作這種快速和骯臟功能的問題在于我繼續(xù)使用它的時間比我應(yīng)該的時間長得多。更有用的功能,我知道我最終還是要編寫,是TMR0延遲。因為我依賴于拐杖功能,所以我避免編寫TMR0延遲,它定義了我的中斷結(jié)構(gòu)和事件標(biāo)記機制。當(dāng)我寫TMR0延遲時,我不得不調(diào)整并重新調(diào)整它影響的部分。您應(yīng)該更早而不是更晚地編寫基礎(chǔ)和結(jié)構(gòu)函數(shù)。

始終清除內(nèi)存或假設(shè)它未定義:一度,我遇到了一個看起來像參數(shù)的問題,讓我想知道存儲在EEPROM中的參數(shù)是如何設(shè)置的。當(dāng)我檢查EEPROM時,參數(shù)是正確的,但程序無法根據(jù)參數(shù)執(zhí)行。問題是由物理參數(shù)轉(zhuǎn)換為邏輯參數(shù)造成的。 EEPROM存儲上電參數(shù),但您可以在運行模式下在RAM中更改它們。例如,您可以將速度從慢速切換到快速。我一直在為演示模式開發(fā)代碼,其中邏輯參數(shù)工作(以慢速模式啟動),但是當(dāng)我以正常模式運行(以快速模式啟動)時它們失敗了。我造成了這個問題,因為我在用比特掩碼之前從未清除過邏輯參數(shù);我錯誤地認(rèn)為內(nèi)存從0開始(當(dāng)芯片通過0xff啟動時尤其愚蠢)!

確認(rèn)所有模式在主要代碼更改:我經(jīng)常在演示模式或編程模式下進行更改,然后在返回運行模式時發(fā)現(xiàn)錯誤。模式對整個系統(tǒng)狀態(tài)做出了不同的假設(shè),并且在您花費時間對代碼的其他部分進行重大更改后,確認(rèn)您的代碼不會違反這些假設(shè)。

強大的id =“id1138604-119-strong”>了解設(shè)備的架構(gòu):沒有什么比認(rèn)識到芯片不能按照你想象的那樣工作的尷尬或沮喪。我已經(jīng)說明了PIC家族對我的一些驚喜。雖然我可能會認(rèn)為我使用了不充分的文檔,但我不理解芯片,并且我失去了寶貴的開發(fā)時間。我在16位和32位世界中學(xué)到的許多經(jīng)驗都沒有延續(xù)到8位領(lǐng)域。僅當(dāng)我無法弄清楚某些內(nèi)容時才參考規(guī)格表,這不利于學(xué)習(xí)PIC架構(gòu)。

了解您自己的硬件:一兩次,硬件人員的任務(wù)與他們說的不同。早期,我希望我創(chuàng)建了一個簡單測試硬件特性的虛擬程序,例如它是否驅(qū)動輸出高或低,所以我可以確認(rèn)沒有人在我的原型上“修復(fù)”或“改進”電路板。此程序也類似于“健全性刻錄”,以確認(rèn)測試運行失敗是您的代碼的結(jié)果,而不是因為硬件故障或更改。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PCB打樣
    +關(guān)注

    關(guān)注

    17

    文章

    2972

    瀏覽量

    22353
  • 華強PCB
    +關(guān)注

    關(guān)注

    8

    文章

    1831

    瀏覽量

    28436
  • 華強pcb線路板打樣
    +關(guān)注

    關(guān)注

    5

    文章

    14629

    瀏覽量

    43738
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    新戰(zhàn)局,解析64位處理器以及未來發(fā)展趨勢

    就目前而言,64位處理器對于用戶來說,并沒有太大的意義。不過在未來,或許手機真的需要8GBRAM甚至更高的RAM時,64位處理器及系統(tǒng)應(yīng)用才能真正得到性能上的發(fā)揮,讓用戶真正的體驗到64位處理
    發(fā)表于 10-03 13:30 ?1761次閱讀

    32嵌入式處理器8位處理器應(yīng)用開發(fā)的區(qū)別

    32的RISC嵌入式處理器非常大的優(yōu)勢,為嵌入式設(shè)計帶來豐富的硬件功能和額外的性能,已經(jīng)成為嵌入式應(yīng)用和設(shè)計的主流。而8位處理器通常受到的
    發(fā)表于 09-22 10:42 ?1663次閱讀

    詳細(xì)解析32嵌入式處理器8位處理器應(yīng)用開發(fā)的不同之處

    目前,國內(nèi)熟悉8位處理器開發(fā)的工程師非常多,開發(fā)工具和手段也很豐富,并且價格較低。而32位處理器的開發(fā)與8位處理器的開發(fā)則有著許多明顯的不同
    的頭像 發(fā)表于 02-07 09:14 ?8728次閱讀

    一個簡單的8位處理器完整設(shè)計過程及verilog代碼

    一個簡單的8位處理器完整設(shè)計過程及verilog代碼,適合入門學(xué)習(xí)參考,并含有作者個人寫的指令執(zhí)行過程。
    的頭像 發(fā)表于 04-10 11:43 ?4460次閱讀

    32位處理器可以裝64系統(tǒng)嗎 32位處理器能否裝64系統(tǒng)分析

    32位處理器可以裝64系統(tǒng)嗎?從技術(shù)角度看,32位處理器是不能裝64系統(tǒng)的,因為不支持,不確定的用戶
    發(fā)表于 06-28 09:57

    32位處理器的開發(fā)與8位處理器的開發(fā)有哪些明顯的不同?

    32位處理器的開發(fā)與8位處理器的開發(fā)有哪些明顯的不同?開發(fā)一個32的嵌入式系統(tǒng)需要哪些工具和環(huán)境呢?32嵌入式系統(tǒng)的開發(fā)過程中存在哪些技
    發(fā)表于 04-19 08:11

    何謂32位處理器

    32位處理器首先處理器都是8的倍數(shù):8/16/32/64。表示一個時鐘周期里,處理器處理的代碼數(shù)
    發(fā)表于 07-13 08:41

    為什么說8086是16位處理器

    為什么說8086是16位處理器?什么是編程結(jié)構(gòu)?由哪兩部分組成,功能是啥?AD為何又能發(fā)地址,又能發(fā)數(shù)據(jù)?io端口是什么?編址方法有哪兩種?8086用的哪種?
    發(fā)表于 08-06 06:48

    Intel 32位處理器 ,Intel 32位處理器結(jié)構(gòu)原理

    Intel 32位處理器 ,Intel 32位處理器結(jié)構(gòu)原理是什么? 微型計算機中的運算和控制合起來稱為CPU,因CPU通常集成在一塊大規(guī)模集成電路
    發(fā)表于 03-26 15:05 ?2136次閱讀

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理 現(xiàn)在人們廣泛使用的是由32處理器構(gòu)成的計算系統(tǒng),但是32的計算和操作系統(tǒng)
    發(fā)表于 03-26 15:07 ?3409次閱讀

    AMD 32位處理器,AMD 32位處理器有哪些系列?

    AMD 32位處理器,AMD 32位處理器有哪些系列? AMD,這個成立于1969年、總部位于美國加利福尼亞州桑尼維爾的處理器廠商,經(jīng)過多年不懈地
    發(fā)表于 03-26 15:14 ?4437次閱讀

    基于NiosII 32位處理器的LED大屏幕顯示系統(tǒng)設(shè)計

    本文提出了一種基于NiosII32位處理器的設(shè)計方案,能有效地實現(xiàn)單屏幕多窗口的任意位置顯示,使得顯示方式更加靈活方便。
    發(fā)表于 09-07 11:50 ?1891次閱讀
    基于NiosII 32<b class='flag-5'>位處理器</b>的LED大屏幕顯示系統(tǒng)設(shè)計

    8位處理器上實現(xiàn)高效文件系統(tǒng)

    8位處理器上實現(xiàn)fat fat12 fat16 fat32的高效文件系統(tǒng)
    發(fā)表于 12-30 15:37 ?0次下載

    “硬件軟件化”,32位處理器的開發(fā)與8位處理器的開發(fā)資料下載

    電子發(fā)燒友網(wǎng)為你提供“硬件軟件化”,32位處理器的開發(fā)與8位處理器的開發(fā)資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望
    發(fā)表于 04-22 08:55 ?6次下載
    “硬件軟件化”,32<b class='flag-5'>位處理器</b>的開發(fā)與<b class='flag-5'>8</b><b class='flag-5'>位處理器</b>的開發(fā)資料下載

    到底64位處理器和32位處理器有什么區(qū)別呢?資料下載

    電子發(fā)燒友網(wǎng)為你提供到底64位處理器和32位處理器有什么區(qū)別呢?資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-25 08:47 ?8次下載
    到底64<b class='flag-5'>位處理器</b>和32<b class='flag-5'>位處理器</b>有什么區(qū)別呢?資料下載