|
|
1,什么是內(nèi)存對齊?為什么要內(nèi)存對齊?//內(nèi)存池(4字節(jié)對齊)
__align(4) u8 mem1base[MEM1_MAX_SIZE]; //內(nèi)部SRAM內(nèi)存池
__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));
2,內(nèi)存分為哪五個(gè)區(qū)?總的來說內(nèi)存分為ROM,RAM這兩類,指令在cpu中怎么被執(zhí)行的?
3,我們的C語言代碼通過MDK編譯器是怎么變成HEX可執(zhí)行文件的?編譯過程是哪幾步?
4,MDK編譯器生成的map文件有哪些信息?
5,為什么說中斷是CPU的硬件資源?
6,堆棧,隊(duì)列如何操作?它們有什么優(yōu)勢?
上面這些問題都與C語言有關(guān),作為一種接近底層的高級語言學(xué)好它對嵌入式開發(fā)的幫助非常大,幾乎所有的底層開發(fā)都是應(yīng)用C語言。什么是編程,我的理解是:以事物的邏輯關(guān)系與存儲關(guān)系為導(dǎo)向的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)與存儲問題;說白了就是如何設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),如何操作這些數(shù)據(jù)結(jié)構(gòu)的問題。內(nèi)存是個(gè)線性結(jié)構(gòu),如何高效操作這些線性結(jié)構(gòu),都與C語言有關(guān)。
比如,計(jì)算機(jī)的各種操作系統(tǒng)不光算法精妙同時(shí)都大量運(yùn)用了C語言鏈表,指針,函數(shù)回調(diào)方面的知識;比如,emwin,GUI圖形界面程序就大量的函數(shù)指針與函數(shù)回調(diào);比如,嵌入式FAT32文件系統(tǒng)的文件操作函數(shù)幾乎與C語言文件部分函數(shù)操作原理相同,也就是說學(xué)好了C語言文件部分內(nèi)容,再來學(xué)習(xí)FAT32文件系統(tǒng)就so easy了!
玩了幾年單片機(jī),越玩越糊涂。雖然能自己設(shè)計(jì)一些項(xiàng)目,實(shí)現(xiàn)一些功能,但是終究還是感覺有很多很多問題“知其然而不知其所以然”。相信絕大多數(shù)的學(xué)習(xí)者都有這種感受,否則絕不是一個(gè)真正的技術(shù)人;相信只有一定程度深入學(xué)習(xí)的人才會有這種感覺。
我更愿意花大量的時(shí)間來加強(qiáng)這些基本功的學(xué)習(xí),雖然這些東西貌似枯燥,但是真正深入學(xué)習(xí)了C語言之后才能感受C語言的魅力C語言的美。基本功扎實(shí)了,很多困擾的問題也就迎刃而解了。
有感而發(fā),隨便尿幾句,裝裝逼。
---------GKXW--------
|
|