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