1 Cache的原理?
Cache即高速緩存,它的出現(xiàn)基于兩種因素:一、CPU的速度和性能提高很快,而主存速度較低且價格高;二、程序執(zhí)行的局部性特點(diǎn)。將速度較快而容量有限的SRAM構(gòu)成Cache,可以盡可能發(fā)揮CPU的高速度。CPU與外設(shè)交換數(shù)據(jù)時經(jīng)常用到buffer(緩沖),這與緩存極其相似,只不過Cache是為了提高CPU和內(nèi)存之間的數(shù)據(jù)交換速度而設(shè)計,而buffer是為了提高內(nèi)存和硬盤(或其他I/O設(shè)備)之間的數(shù)據(jù)交換速度而設(shè)計的。?
Baidu快照(cache.baidu.com)就是一個緩存的例子,其作用與計算機(jī)CPU緩存有類似之處。? Cache的原理如圖1所示。?
在讀取內(nèi)存數(shù)據(jù)的同時CPU將數(shù)據(jù)保存到Cache數(shù)據(jù)區(qū),同時更新Cache映射表(保存地址信息,表示該地址的數(shù)據(jù)是否已在Cache數(shù)據(jù)區(qū),即是否命中)。這樣,CPU再次讀取該地址數(shù)據(jù)時,就可以直接從Cache提取。讀Cache的時間遠(yuǎn)小于直接讀內(nèi)存,可提高CPU讀取數(shù)據(jù)的效率。???
Cache數(shù)據(jù)區(qū)有成塊讀取的特性(Cache映射表保存的地址是塊地址,節(jié)省空間,也符合程序執(zhí)行的局部性特點(diǎn))。Cache數(shù)據(jù)區(qū)遠(yuǎn)遠(yuǎn)小于內(nèi)存空間,就需要相應(yīng)的替代算法。比如最近最少使用算法,可將新數(shù)據(jù)替代使用頻率低的數(shù)據(jù),同時更新映射表信息。可以推想,Cache空間越大,命中率越高。
寫內(nèi)存需要直接更新內(nèi)存。如果映射表存在該地址信息,還需要同時更新Cache數(shù)據(jù)區(qū)。這種Cache訪問方式就稱作“直寫”,Samsung公司的ARM7微處理器S3CA510B就是這種方式。以下所討論的Cache問題除非特殊說明,否則都是“直寫”方式。
2 嵌入式編程時需注意的問題
2.1?訪問外設(shè)使用Cache的問題
在訪問內(nèi)存時使用Cache是不會出現(xiàn)問題的,但如果訪問數(shù)據(jù)易變外設(shè)(數(shù)據(jù)不依賴于CPU寫操作而改變)時使用Cache就可能出現(xiàn)問題。問題在于外設(shè)數(shù)據(jù)的改變不僅僅依靠CPU寫操作,CPU第一次讀取外設(shè)數(shù)據(jù)時將外設(shè)的數(shù)據(jù)和地址信息保存到Cache,第二次讀取外設(shè)數(shù)據(jù)時就可能有問題出現(xiàn)。這是因為數(shù)據(jù)直接從Cache提取,而外設(shè)的數(shù)據(jù)可能有改變。
因此,在訪問易變外設(shè)時要禁止使能Cache,直接讀取外設(shè)數(shù)據(jù)到CPU,而不經(jīng)過Cache的任何環(huán)節(jié),即保證不改變Cache映射表和Cache數(shù)據(jù)區(qū)內(nèi)容。
S3C4510B的SYSCFG SFR(特殊功能寄存器)有用來控制Cache使能或不使能的,通過對該SFR的設(shè)置可暫時禁止Cache或重新恢復(fù)Cache功能。這樣就可以在讀取外設(shè)前禁止Cache,讀取結(jié)束后重新使能Cache,保證了外設(shè)數(shù)據(jù)讀取的正確性。寫數(shù)據(jù)到外設(shè)時采用“直寫”方式,更沒有問題。
2.2?開關(guān)Cache引發(fā)的新問題
在Cache開關(guān)期間,如果有另一個進(jìn)程/任務(wù)訪問內(nèi)存,在此期間寫內(nèi)存并且該內(nèi)存在Cache中已有映射(注意,它也是被禁止Cache的,所以它不會同時更新Cache數(shù)據(jù)區(qū)的內(nèi)容),那么在Cache重新使能之后Cache數(shù)據(jù)區(qū)的信息已經(jīng)過時了,而Cache映射表還是Cache禁止之前的狀態(tài),如果CPU此時讀數(shù)據(jù)就會得到過時的數(shù)據(jù)。這樣看來,引發(fā)的問題范圍更廣了,連內(nèi)存的數(shù)據(jù)讀寫正確性都無法保證。與內(nèi)存泄漏的影響來比較,內(nèi)存泄漏如果是一顆定時炸彈,那么Cache問題就可以說是隨時隨地都可能踩上的雷區(qū),因為程序一旦開始就可能引發(fā)爆炸。
如圖2所示,Cache使能時Cache映射表和Cache數(shù)據(jù)區(qū)保存了內(nèi)存的數(shù)據(jù)信息,這是CPU訪問內(nèi)存時通過圖中實線箭頭通路實現(xiàn)的。內(nèi)存的信息可以與Cache的信息保持一致。
Cache禁止時的情況有所變化。由圖2中虛線箭頭通路直接進(jìn)行內(nèi)存訪問,且地址0x00處的數(shù)據(jù)由55變?yōu)锳A,但Cache區(qū)的信息仍為之前的狀態(tài)。很明顯,Cache的數(shù)據(jù)是應(yīng)該廢棄的,但是Cache映射表仍保存0x00的地址信息。Cache重新使能后,CPU再次讀取0x00地址的數(shù)據(jù),由于Cache仍是命中,直接從Cache數(shù)據(jù)區(qū)中提取數(shù)據(jù),這樣讀出來的數(shù)據(jù)就是0x55了。
由S3C4510B數(shù)據(jù)手冊第4節(jié)的第21頁可知:通過對SYSCFG寄存器的CE位置1或清0可使能/關(guān)閉Cache,但是Cache沒有內(nèi)容自動刷新功能,在重新使能Cache時需考慮Cache數(shù)據(jù)的正確性。
為了證實以上說法,循環(huán)執(zhí)行如下測試程序:
如果沒有Cache的影響,結(jié)果應(yīng)該是55 aa aa。可見,Cache關(guān)閉再打開的確可造成Cache數(shù)據(jù)過時。
3?其他CPU解決方案
Atmel公司的AT91RM9200和Samsung公司的S3C44B0,用這兩種CPU先后移植過操作系統(tǒng),且在對外設(shè)訪問的整個過程中Cache都是使能的。它們的解決方案是什么呢?
AT91RM9200是ARM9系列帶有MMU的CPU。MMU對內(nèi)存有分頁管理功能,可以實現(xiàn)多個進(jìn)程的內(nèi)存空間保護(hù)。Cache是通過MMU管理的,這也是Cache和MMU經(jīng)常同時存在的原因。
S3C44B0和S3C4510B同樣都是Samsung公司產(chǎn)品,并且都不帶MMU。與S3CA510不同的是,S3C4480自帶的SFR可以配置非緩存范圍,即使Cache使能,所設(shè)置范圍的地址空間訪問也不通過Cache實現(xiàn)。這樣,可以很方便地實現(xiàn)內(nèi)存是緩存區(qū),其他外設(shè)是非緩存區(qū)。
這兩種方案對于S3C4510B都無法實現(xiàn)。網(wǎng)絡(luò)上有人用volatile關(guān)鍵字解決外設(shè)訪問問題。volatile關(guān)鍵字是在源代碼中給編譯器看的,它可能影響編譯器的編譯結(jié)果,但是最終CPU執(zhí)行都體現(xiàn)到匯編語句,如果匯編語句都不能解決Cache問題,volatile語句也是不可能解決的。?
對于易變數(shù)據(jù)的外設(shè)使用volatile關(guān)鍵字是應(yīng)該的,可避免編譯器的優(yōu)化,比如以下語句:?
在兩次讀取portAdd地址的數(shù)據(jù)相同時等待,可以用到等待信號跳變的程序。如果將volatile關(guān)鍵字去除,有可能經(jīng)編譯器優(yōu)化,Value2不會從實際的portAdd地址讀取數(shù)據(jù),而是利用Valuel讀取語句的中間寄存器直接獲得。
4 本文解決方案
由S3C4510B手冊上第5節(jié)的第4頁可知,可以通過兩種方式保證Cache數(shù)據(jù)的正確:
①對Cache映射表的Tag RAM數(shù)據(jù)清零。Cache映射表數(shù)據(jù)一般是通過上電復(fù)位清零的,如果Cache或內(nèi)存段的設(shè)置被修改,則會造成Cache映射表數(shù)據(jù)廢棄,這時就需要通過程序?qū)ache映射表數(shù)據(jù)清0。?
②S3C4510B提供非Cache方式訪問控制位,控制位ADDR[26](地址線26位)為“1”時,按非Cache方式訪問。因此,Cache使能的情況下,地址0x000 0000~0x3FFFFFF按Cache方式訪問,而0x400 0000~0x7FF FFFF按非Cache方式訪問。實際上,0x000 0000+offset與0x400 0000+offset(offset在0x000 0000~0X3FF FFFF之間)是同一地址,不同的是Cache是否起作用。?
可以得到兩種解決方案:?
(1)Cache映射表手動更新? 既然在開關(guān)Cache之后內(nèi)容過時,并且CPU不會自動刷新,可以通過手動更新的辦法來拋棄廢舊信息。也就是說,將Tag RAM區(qū)(前面所說的Cache映射表)清除,這樣所有Cache數(shù)據(jù)區(qū)的內(nèi)容都不使能,再次讀取數(shù)據(jù)時同時更新Cache映射表和Cache數(shù)據(jù)區(qū)內(nèi)容,之后才能使用。清除操作將Tag RAM的1 KB內(nèi)容清零,需要消耗一定時間;并且這樣操作后Cache是0命中率的,只有一定訪問次數(shù)后Cache信息重新填滿,才能恢復(fù)正常的命中率。因此,頻繁地開關(guān)Cache時采用這種方案是不可取的。
(2)bit26位控制Cache使能
S3C4510B的地址線為26位(bit0~bit25),實際上CPU可訪問空間為32位(bit0~bit31)。一般我們都不使用bit26~bit31,不過S3C4510B的這些位有著特殊的控制功能。通過bit26的高電平可以禁止該地址的Cache功能,因此將外設(shè)的地址由原來的ADDR_PORT改為(ADDR PORT∣(1<<26)),就可以實現(xiàn)外設(shè)訪問時Cache不使能。這樣就不用改為SYSCFG的Cache使能控制位。比較來看,SYSCFG的Cache使能位是控制整個CPU訪問的Cache使能與否,而bit26只控制當(dāng)前訪問的一個具體地址的Cache使能與否。采用這種解決方案理論上有依據(jù),并且可以最大程度發(fā)揮CPU的功能。
5 修改程序后的試驗結(jié)果
修改Cache解決方案后,可以解決內(nèi)存訪問錯誤的問題。經(jīng)過測試,采用“bit26位控制Cache使能”的方案可以順利訪問外設(shè),代碼執(zhí)行始終是在Cache使能的情況下,并且不影響內(nèi)存數(shù)據(jù)。若完全關(guān)閉Cache的程序,執(zhí)行同樣代碼需要花費(fèi)5~8倍的時間。
嵌入式編程需注意的Cache機(jī)制及其原理
- 嵌入式(286111)
- 編程(92184)
- CAC(8465)
相關(guān)推薦
嵌入式硬件設(shè)計需注意的幾點(diǎn)
嵌入式設(shè)計是個龐大的工程,今天就說說硬件電路設(shè)計方面的幾個注意事項,首先,咱們了解下嵌入式的硬件構(gòu)架。
2022-10-19 14:59:17683
0基礎(chǔ)沒編程經(jīng)驗?zāi)軐W(xué)嵌入式嗎?
一直以來對于0基礎(chǔ)學(xué)習(xí)嵌入式的同學(xué)都非常的敬佩,畢竟這需要付出比別人更多的努力,才能追平那些本專業(yè)有編程基礎(chǔ)的同學(xué)。從我本人而言,見過0基礎(chǔ)學(xué)習(xí)嵌入式的同學(xué)并不在少數(shù)。今天主要談?wù)?基礎(chǔ)學(xué)習(xí)嵌入式
2021-07-18 17:52:29
嵌入式編程利器
本人正是搞嵌入式編程設(shè)計工作,在實際工作中碰到了不少難題,看了本書目錄,內(nèi)容豐富,深入淺出,與實際工程結(jié)合,有利于分析和解決實際難題,期待擁有。
2021-08-28 22:27:03
嵌入式C++編程的相關(guān)資料分享
特點(diǎn)展示如何使用 C ++ 來構(gòu)建利用可用硬件資源的強(qiáng)大并發(fā)系統(tǒng)。從嵌入式編程入門和 C ++ 17 的最新特性開始,帶您了解優(yōu)秀編程的各個方面您將學(xué)習(xí)如何使用 C ++ 的并發(fā)性、內(nèi)存管理和函數(shù)式
2021-11-09 08:26:24
嵌入式C程序基礎(chǔ)與編程結(jié)構(gòu)相關(guān)資料分享
嵌入式C程序基礎(chǔ)與編程結(jié)構(gòu)Basics of Embedded C Program and Programming Structure嵌入式C編程是處理器在我們?nèi)粘I钪杏龅降拿恳粋€嵌入式系統(tǒng)(如
2021-12-15 06:43:56
嵌入式C程序開發(fā)需注意什么
今天看到一篇很優(yōu)質(zhì)的博客,轉(zhuǎn)發(fā)并推薦下:編寫優(yōu)質(zhì)嵌入式C程序:http://blog.csdn.net/zhzht19861011/article/details/45508029
2021-12-15 08:00:19
嵌入式LInux網(wǎng)絡(luò)編程
嵌入式LInux網(wǎng)絡(luò)編程 嵌入式工程師、嵌入式講師、10多年嵌入式開發(fā)實戰(zhàn)經(jīng)...
2021-12-22 08:17:16
嵌入式Linux多線程編程
嵌入式Linux多線程編程-學(xué)習(xí)資源-華清遠(yuǎn)見清遠(yuǎn)見嵌入式學(xué)院:清遠(yuǎn)見嵌入式學(xué)院:《嵌入式應(yīng)用程序設(shè)計》——第5 章 嵌入式Linux 多線程編程第5 章 嵌入式Linux 多線程編程本章
2021-11-05 06:54:35
嵌入式Linux系統(tǒng)開發(fā)學(xué)習(xí)步驟,深圳嵌入式Linux培訓(xùn)高薪一路相伴
、哈希表、各種查找排序算法等應(yīng)用及其C語言實現(xiàn)過程?! ×篊++ 、QT C++是Linux應(yīng)用開發(fā)主要語言之一,本階段重點(diǎn)掌握面向?qū)ο?b class="flag-6" style="color: red">編程的基本思想以及C++的重要內(nèi)容。圖形界面編程是嵌入式開發(fā)中非
2015-11-25 17:23:50
嵌入式linux學(xué)***匯總
服務(wù)器配置、shell編程、Linux C語言基礎(chǔ)、Linux程序編譯和調(diào)試維護(hù)等內(nèi)容?! ”緯神T利美主編。本書的完成需要感謝華清遠(yuǎn)見嵌入式學(xué)院,教材內(nèi)容參考了學(xué)院與嵌入式企業(yè)需求無縫對接的、科學(xué)
2020-06-08 08:31:35
嵌入式處理器中Cache一致性問題怎么解決?
隨著嵌入式計算機(jī)應(yīng)用的發(fā)展,嵌入式CPU的主頻不斷提高,這就造成了慢速系統(tǒng)存儲器不能匹配高速CPU處理能力的情況。為了解決這個問題,許多高性能的嵌入式處理器內(nèi)部集成了高速緩存Cache。其中,三星公司的S3C44B0X內(nèi)部就集成了8KB空間統(tǒng)一的指令和數(shù)據(jù)Cache?!?/div>
2019-09-05 07:00:20
嵌入式學(xué)習(xí)步驟
管理機(jī)制 熟悉進(jìn)程間通信的幾種方式 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序 8、嵌入式系統(tǒng)中多線程程序設(shè)計 線程的基礎(chǔ)知識 多線程編程
2019-06-03 23:28:35
嵌入式實時操作系統(tǒng)如何簡化應(yīng)用軟件的設(shè)計
在嵌入式領(lǐng)域中,嵌入式實時操作系統(tǒng)(RTOS)正得到越來越廣泛的應(yīng)用。采用嵌入式實時操作系統(tǒng)可以更合理、更有效地利用CPU的資源,簡化應(yīng)用軟件的設(shè)計,縮短系統(tǒng)開發(fā)時間,更好地保證系統(tǒng)的實時性和可靠性。內(nèi)存資源作為嵌入式系統(tǒng)中極為重要的資源之一,其管理機(jī)制歷來是嵌入式系統(tǒng)設(shè)計的重點(diǎn)和難點(diǎn)。
2020-11-25 06:48:44
嵌入式開發(fā)與Python編程有哪些區(qū)別及其聯(lián)系呢
嵌入式開發(fā)是什么?Python又是什么?嵌入式開發(fā)與Python編程有哪些區(qū)別及其聯(lián)系呢?
2021-12-24 07:56:07
嵌入式開發(fā):你是如何理解嵌入式c編程的
一、新手常常問的一個問題是c語言和嵌入式c編程有什么區(qū)別?而嵌入式工程師一般都會告訴你其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執(zhí)行
2017-06-28 10:14:58
嵌入式開發(fā):你是如何理解嵌入式c編程的
本期的嵌入式開發(fā)學(xué)習(xí)將和大家討論什么是嵌入式c編程,你是如何理解嵌入式c編程的。在上個篇章我們有簡單介紹了什么是嵌入式系統(tǒng)的官方定義以及其發(fā)展的階段?如對嵌入式開發(fā)感興趣的童鞋不妨接著往下看。 一
2017-07-25 10:25:17
嵌入式的基本概念及其應(yīng)用
文章目錄系統(tǒng)移植概述及環(huán)境搭建嵌入式基本概念嵌入式系統(tǒng)的應(yīng)用領(lǐng)域什么是嵌入式系統(tǒng)用嵌入式系統(tǒng)硬件組成部分通用嵌入式系統(tǒng)軟件組成部分Linux 在嵌入式中應(yīng)用的條件與前景嵌入式Linux內(nèi)核結(jié)構(gòu)
2021-10-27 07:59:07
嵌入式系統(tǒng)傳統(tǒng)編程模式有哪幾種?
嵌入式系統(tǒng)傳統(tǒng)編程模式有哪幾種嵌入式系統(tǒng)傳統(tǒng)編程方法的困境是什么AnyWhere有什么特點(diǎn)?
2021-04-28 06:17:46
嵌入式系統(tǒng)基礎(chǔ)階段的學(xué)習(xí)建議
嵌入式系統(tǒng)。前面說過,嵌入式系統(tǒng)是軟件與硬件的綜合體。因此,要逐步從MCU的最小系統(tǒng)開始,一點(diǎn)一點(diǎn)理解硬件原理及底層硬件驅(qū)動編程方法。要通過規(guī)范的例子,理解軟件工程封裝、可復(fù)用等思想。通過規(guī)范編程,積累
2020-10-29 07:36:20
嵌入式系統(tǒng)是什么意思
在我們的日常生活中,我們經(jīng)常使用許多使用嵌入式系統(tǒng)技術(shù)設(shè)計的電氣和電子電路和套件。計算機(jī),手機(jī),平板,筆記本電腦,數(shù)字電子系統(tǒng)以及其他電子和電子設(shè)備都是使用嵌入式系統(tǒng)設(shè)計的。什么是嵌入式系統(tǒng)?將硬件
2021-10-28 08:58:02
嵌入式系統(tǒng)是由哪些部分組成的?實時嵌入式系統(tǒng)特征有哪些
嵌入式系統(tǒng)是由哪些部分組成的?實時嵌入式系統(tǒng)特征有哪些?嵌入式移動數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)同步機(jī)制特點(diǎn)是什么?
2021-12-23 09:27:25
嵌入式系統(tǒng)的組成及其特點(diǎn)
嵌入式系統(tǒng)的組成嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)分層組成硬件軟件嵌入式系統(tǒng)的發(fā)展單芯片為核心,可編程控制器階段以嵌入式 CPU 為基礎(chǔ)、簡單操作系統(tǒng)為核心以嵌入式操作系統(tǒng)為標(biāo)志以物聯(lián)網(wǎng)為標(biāo)志嵌入式系統(tǒng)
2021-10-27 09:30:15
嵌入式系統(tǒng)的調(diào)試包括哪些?調(diào)試的方法及注意事項有哪些?
嵌入式系統(tǒng)的調(diào)試包括哪些?調(diào)試的方法及注意事項有哪些?
2021-12-24 07:36:21
嵌入式系統(tǒng)設(shè)計
在我們的日常生活中,我們經(jīng)常使用許多使用嵌入式系統(tǒng)技術(shù)設(shè)計的電氣和電子電路和套件。計算機(jī),手機(jī),平板,筆記本電腦,數(shù)字電子系統(tǒng)以及其他電子和電子設(shè)備都是使用嵌入式系統(tǒng)設(shè)計的。什么是嵌入式系統(tǒng)?將硬件
2021-10-27 06:50:19
嵌入式系統(tǒng)設(shè)計的新發(fā)展及其挑戰(zhàn)是什么
嵌入式系統(tǒng)設(shè)計技術(shù)發(fā)展的特點(diǎn)是什么采用定制SoC有什么缺點(diǎn)?嵌入式系統(tǒng)設(shè)計的新挑戰(zhàn)是什么
2021-04-27 07:02:29
嵌入式系統(tǒng)軟件和編程語言
獨(dú)立工作的器件。 嵌入式系統(tǒng)的軟件部分包括操作系統(tǒng)軟件(要求實時和多任務(wù)操作)和應(yīng)用程序編程。操作系統(tǒng)控制著應(yīng)用程序編程與硬件的交互作用,而應(yīng)用程序控制著系統(tǒng)的運(yùn)作和行為。
2019-07-17 07:34:06
嵌入式網(wǎng)絡(luò)編程+嵌入式Linux系統(tǒng)
D2.25嵌入式網(wǎng)絡(luò)編程+嵌入式Linux系統(tǒng)一、Linux操作系統(tǒng)安裝與使用(命令)二、Linux開發(fā)工具(gcc、gdb、make)三、Linux系統(tǒng)編程(文件、進(jìn)程、線程、網(wǎng)路、數(shù)據(jù)庫
2021-12-22 07:10:18
嵌入式軟件編程中const、static、extern和volatile的原理是什么?怎么使用?
嵌入式軟件編程中const、static、extern和volatile的原理是什么?怎么使用?
2021-04-28 06:21:42
嵌入式軟件編程的基礎(chǔ)知識
:一、嵌入式軟件編程的基礎(chǔ)這一階段重點(diǎn)打好嵌入式軟件編程的基礎(chǔ),包括學(xué)習(xí)Linux系統(tǒng)的基本應(yīng)用...
2021-11-08 09:28:45
嵌入式軟件可靠性設(shè)計的四個方面注意問題
的后果不僅僅是數(shù)據(jù)錯誤而是有可能導(dǎo)致不可估量的災(zāi)難,所以總結(jié)起來,嵌入式軟件可靠性設(shè)計需注意的問題有四個方面:
2019-05-16 10:44:35
C語言嵌入式系統(tǒng)編程注意事項
C語言嵌入式系統(tǒng)編程注意事項C語言嵌入式系統(tǒng)軟件架構(gòu)單任務(wù)程序典型架構(gòu)
2021-02-03 07:44:49
[嵌入式linux] 嵌入式學(xué)習(xí)分享:那些繞不開的技術(shù)點(diǎn)
嵌入式繞不開各種接口比如:uart 、spi、i2c、u***、eth、mipi、edp、can、i2s、hdmi等等。需要了解各接口的使用場景、帶寬、機(jī)制、時序、工作模式、缺點(diǎn),時序等等。我相信硬件
2020-04-16 09:51:11
[公告]嵌入式Linux內(nèi)核設(shè)計高級研修班
;nbsp; 其實不然,我們需要在很多方面進(jìn)行內(nèi)核開發(fā)1、在嵌入式領(lǐng)域,由于有數(shù)不清處理器架構(gòu),所以內(nèi)核在某些架構(gòu)上就沒有得到完全支持。2、在工控領(lǐng)域,我們常常希望獲得高精確時鐘,而在絕大多數(shù)架構(gòu)上
2009-07-24 13:04:45
【下載】《嵌入式C編程與Atmel.AVR》
`內(nèi)容簡介 歡迎進(jìn)入嵌入式編程和微控制器應(yīng)用的世界!使用日益流行且價格適宜的Atmel AVR嵌入式控制器作為學(xué)習(xí)平臺。本書是目前可以獲得的最佳書籍之一。對于初學(xué)者,本書將會是極好的選擇。隨著
2018-01-11 18:02:05
什么是嵌入式編程
《C嵌入式編程設(shè)計模式》第一章 什么是嵌入式編程嵌入式系統(tǒng)的基本知識面向?qū)ο?b class="flag-6" style="color: red">編程與結(jié)構(gòu)化編程使用C語言實現(xiàn)類、繼承、狀態(tài)機(jī) 第二章 嵌入式實時過程Harmony的嵌入式編程嵌入式應(yīng)用開發(fā)中的敏捷過程
2021-11-08 06:15:53
什么是嵌入式系統(tǒng)?
在我們的日常生活中,我們經(jīng)常使用許多使用嵌入式系統(tǒng)技術(shù)設(shè)計的電氣和電子電路和套件。計算機(jī),手機(jī),平板,筆記本電腦,數(shù)字電子系統(tǒng)以及其他電子和電子設(shè)備都是使用嵌入式系統(tǒng)設(shè)計的。什么是嵌入式系統(tǒng)?將硬件
2021-12-22 06:11:56
你是如何理解嵌入式C編程
期的嵌入式開發(fā)學(xué)習(xí)將和大家討論什么是嵌入式c編程,你是如何理解嵌入式c編程的。在上個篇章我們有簡單介紹了什么是嵌入式系統(tǒng)的官方定義以及其發(fā)展的階段?如對嵌入式開發(fā)感興趣的童鞋不妨接著往下看。 一
2017-03-22 10:58:58
你是如何理解嵌入式C編程的
什么是嵌入式系統(tǒng)的官方定義以及其發(fā)展的階段?如對嵌入式開發(fā)感興趣的童鞋不妨接著往下看。 一、新手常常問的一個問題是c語言和嵌入式c編程有什么區(qū)別?而嵌入式工程師一般都會告訴你其區(qū)別在于嵌入式的C語言是跑在嵌入式
2017-03-07 21:15:35
你是如何理解嵌入式c編程的
嵌入式開發(fā):你是如何理解嵌入式c編程的本期的嵌入式開發(fā)學(xué)習(xí)將和大家討論什么是嵌入式c編程,你是如何理解嵌入式c編程的。在上個篇章我們有簡單介紹了什么是嵌入式系統(tǒng)的官方定義以及其發(fā)展的階段?如對
2017-05-05 15:11:30
你是如何理解嵌入式c編程的?
一、新手常常問的一個問題是c語言和嵌入式c編程有什么區(qū)別?而嵌入式工程師一般都會告訴你其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執(zhí)行
2015-10-17 13:23:00
你是如何理解嵌入式c編程的?
一、新手常常問的一個問題是c語言和嵌入式c編程有什么區(qū)別?而嵌入式工程師一般都會告訴你其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執(zhí)行
2015-10-22 19:24:31
使用Java平臺怎么實現(xiàn)可編程嵌入式系統(tǒng)?
傳統(tǒng)的嵌入式產(chǎn)品只能實現(xiàn)某種特定的功能,不能滿足用戶可變的豐富多彩的應(yīng)用需求。為解決這個問題,本文設(shè)計并實現(xiàn)了一種使用Java作為軟件平臺的基于FPGA的可編程嵌入式系統(tǒng),以實現(xiàn)系統(tǒng)對多種本地應(yīng)用和網(wǎng)絡(luò)的支持。
2020-03-25 06:30:05
做嵌入式硬件設(shè)計時需要注意哪些事項?
嵌入式設(shè)計是個龐大的工程,今天就說說硬件電路設(shè)計方面的幾個注意事項,首先,咱們了解下嵌入式的硬件構(gòu)架。
2021-03-09 08:36:18
關(guān)于嵌入式RTDBS的知識點(diǎn)總結(jié)的太棒了
嵌入式RTDBS內(nèi)涵及其體系結(jié)構(gòu)嵌入式RTDBS的數(shù)據(jù)模型嵌入式RTDBS的物理結(jié)構(gòu)嵌入式RTDBS管理系統(tǒng)嵌入式RTDBS設(shè)計實例
2021-04-27 06:42:42
關(guān)于嵌入式系統(tǒng)高級編程語言的基本知識點(diǎn)都在這里
什么是嵌入式系統(tǒng)高級編程語言?嵌入式系統(tǒng)高級語言編程特點(diǎn)有哪些?常用嵌入式系統(tǒng)高級編程語言基本性能有哪些?Java的特點(diǎn)是什么?它與嵌入式系統(tǒng)有什么關(guān)系?
2021-04-27 07:06:58
到底什么是嵌入式?
、PCB設(shè)計在電子設(shè)計中,PCB是我們設(shè)計內(nèi)容的物理載體,所有我們設(shè)計意圖的最終實現(xiàn)就是通過PCB板來表現(xiàn)的。三、C語言C語言是嵌入式開發(fā)中最重要的編程語言,要對這門語言有深入的理解,畢竟不僅僅要會寫程序,看懂
2021-09-19 14:17:58
在嵌入式開發(fā)中,你是如何理解嵌入式C編程的?
`本文來探討嵌入式開發(fā)中的嵌入式C編程,看看跟您理解的一樣嗎?一、新手常常問的一個問題:C語言和嵌入式C編程有什么區(qū)別?而嵌入式工程師一般都會告訴你,其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上
2016-03-22 09:38:57
基于FPGA的帶Cache的嵌入式CPU該怎么設(shè)計?
隨著集成電路設(shè)計和工藝技術(shù)的發(fā)展,嵌入式系統(tǒng)已經(jīng)在PDA、機(jī)頂盒、手機(jī)等信息終端中被廣泛應(yīng)用。嵌入式系統(tǒng)具有電路尺寸小、成本低廉、可靠性高、功耗低等優(yōu)點(diǎn),是未來集成電路發(fā)展的方向。而作為嵌入式系統(tǒng)
2019-10-12 09:31:50
如何從學(xué)習(xí)嵌入式
我,學(xué)生一枚。剛剛接觸嵌入式可基礎(chǔ)基本為零!因為我本科專業(yè)是機(jī)制的,有哪位仁兄能帶我入門小弟將不甚感激!請求幫助!
2013-03-04 20:47:44
如何學(xué)習(xí)嵌入式?
籍:《UNIX環(huán)境高級編程》(第2版) (4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們在嵌入式開發(fā)中,一般很少去寫匯編,但是起碼的要求是能夠看懂a(chǎn)rm匯編。 (5) 系統(tǒng)移植的時候,就需要你從下
2020-06-09 04:35:36
如何理解嵌入式c編程的?
一、新手常常問的一個問題是c語言和嵌入式c編程有什么區(qū)別?而嵌入式工程師一般都會告訴你其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上的,CPU和我們電腦不一樣,所以編譯器也是不一樣的,生成的可執(zhí)行
2017-06-13 10:11:45
如何設(shè)計帶Cache的嵌入式CPU?
隨著集成電路設(shè)計和工藝技術(shù)的發(fā)展,嵌入式系統(tǒng)已經(jīng)在PDA、機(jī)頂盒、手機(jī)等信息終端中被廣泛應(yīng)用。嵌入式系統(tǒng)具有電路尺寸小、成本低廉、可靠性高、功耗低等優(yōu)點(diǎn),是未來集成電路發(fā)展的方向。而作為嵌入式系統(tǒng)
2019-11-05 07:26:21
對嵌入式系統(tǒng)的功耗管理技術(shù)有哪些研究?
嵌入式操作系統(tǒng)有哪幾種工作功耗模式?如何去分析嵌入式操作系統(tǒng)中電源管理機(jī)制?
2021-04-25 08:34:47
工業(yè)嵌入式計算平臺開發(fā)招聘
經(jīng)驗2、熟悉ARM等微處理器架構(gòu),掌握嵌入式操作系統(tǒng)的移植、裁剪、驅(qū)動開發(fā)和應(yīng)用開發(fā)3、精通C/C++編程,熟悉Linux內(nèi)核架構(gòu)和驅(qū)動開發(fā)。4、具有基于ARM ***可信應(yīng)用開發(fā)經(jīng)驗,熟悉ARMv8
2021-10-12 09:32:52
怎樣開始學(xué)習(xí)嵌入式?
嵌入式Linux系統(tǒng)開發(fā)學(xué)習(xí)路線致想學(xué)習(xí)嵌入式和正在學(xué)習(xí)嵌入式的寶寶們一:嵌入式c語言C語言是嵌入式領(lǐng)域最重要也是最主要的編程語言,通過大量編程實例重點(diǎn)理解C語言的基礎(chǔ)編程以及高級編程知識。包括
2017-08-14 15:36:15
求一款可編程嵌入式系統(tǒng)的設(shè)計方案
為什么要設(shè)計一種可編程嵌入式系統(tǒng)?基于Java的可編程嵌入式系統(tǒng)是如何實現(xiàn)的?
2021-04-27 07:20:32
求大神分享一種基于bootloader的嵌入式軟件自動更新機(jī)制
本文提出了一種具有較高穩(wěn)定性和安全性、基于bootloader的嵌入式軟件自動更新機(jī)制。該更新機(jī)制同時保存了3個文件,需要較多的Flash存儲空間,但同時降低了維護(hù)成本。
2021-04-27 06:33:59
求大神推薦嵌入式Linux開發(fā)板
還是學(xué)生,之前一直和老師做一些模擬電路和單片機(jī)的項目,熟悉51和stm32的編程,現(xiàn)在想做一下嵌入式系統(tǒng)方向,本人比較看好嵌入式驅(qū)動工程師,想問一下前輩需要注意一下什么,以及比較適合的開發(fā)板
2015-09-21 20:11:52
解析嵌入式軟件開發(fā)語言:嵌入式C編程
在我們初學(xué)嵌入式開發(fā)的時候,總會出現(xiàn)一個問題。那就是C語言和嵌入式C編程有什么區(qū)別?而嵌入式工程師一般都會告訴你,其區(qū)別在于嵌入式的C語言是跑在嵌入式的開發(fā)板上的,CPU和電腦不一樣,所以編譯器也是
2017-10-18 10:09:19
設(shè)計嵌入式硬件時需要注意哪些問題?
嵌入式開發(fā)項目中,首先需要做需求分析,然后根據(jù)需求分析進(jìn)行綜合考慮,這里給出幾個嵌入式硬件設(shè)計時特別要注意的問題。
2021-03-11 07:21:43
請問如何成為嵌入式高手?
插槽機(jī)制4、 QT圖形界面編程技術(shù)5、QT應(yīng)用程序與Linux驅(qū)動的銜接6、 QT在實際項目中具體應(yīng)用第十部分:無線通訊應(yīng)用1、無線wifi模塊應(yīng)用2、3G模塊應(yīng)用第十一分布:嵌入式系統(tǒng)應(yīng)用程序
2020-08-30 11:28:25
嵌入式CPU指令Cache的設(shè)計與實現(xiàn)
針對嵌入式CPU 指令處理速度與存儲器指令存取速度不匹配問題,本文基于FPGA 設(shè)計并實現(xiàn)了可以有效解決這一問題的指令Cache。根據(jù)嵌入式五級流水線CPU 特性,所設(shè)計指令Cache 的地
2009-08-05 14:27:5436
詳談嵌入式編程需注意的Cache機(jī)制和原理
1 Cache的原理 Cache即高速緩存,它的出現(xiàn)基于兩種因素:一、CPU的速度和性能提高很快,而主存速度較低且價格高;二、程序執(zhí)行的局部性特點(diǎn)。將速度較快而容量有限的SRAM構(gòu)成Cache,可以
2017-11-01 16:16:200
Linux內(nèi)核文件Cache機(jī)制
Linux內(nèi)核文件Cache機(jī)制(開關(guān)電源技術(shù)與設(shè)計 第二版)-Linux內(nèi)核文件Cache機(jī)制? ? ? ? ? ? ? ??
2021-08-31 16:34:544
評論
查看更多