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