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