2440启动文件分析
頭文件分為標(biāo)準(zhǔn)頭文件和自定義頭文件,尖括號內(nèi)對應(yīng)標(biāo)準(zhǔn)頭文件,標(biāo)準(zhǔn)頭文件是按DOC系統(tǒng)的環(huán)境變量include所指定的目錄順序搜索;雙引號對應(yīng)的為自定義頭文件,搜索時,先在當(dāng)前目錄中搜索,其次,按環(huán)境變量include所指定的目錄順序搜索。
1、匯編文件:
slib.s主要功能:實現(xiàn)中斷、禁止FIQ/IRQ、MMU Cache控制、TLB函數(shù)、處理器ID函數(shù)等。
SysInit.s主要功能:初始化系統(tǒng),包括禁止看門狗、屏蔽中斷使能、設(shè)置PLL時鐘、初始化SDRAM等。
vector.s主要功能:異常中斷向量文件,包括程序的入口、中斷向量表、各模式堆棧初始化等。
2、C語言文件
control.c主要功能:定義處理器外圍函數(shù),包括端口初始化函數(shù)、存儲器配置初始化、改變時鐘分頻器函數(shù)、設(shè)置PLL函數(shù)、串口初始化函數(shù)等。
utils.c:相關(guān)的量化函數(shù)定義等。
Main.c:整個工程的主文件,包括實現(xiàn)整個系統(tǒng)的初始化,系統(tǒng)時鐘初始化,設(shè)置Nand Flash的配置寄存器,GPIO的初始化,選擇串口0波特率,執(zhí)行應(yīng)用程序等。
MMU.c:MMU相關(guān)的控制函數(shù),包括MMU初始化、MMU Cache清除以及改變MMU Cache狀態(tài)等。
3、頭文件
2440addr.h:定義2440寄存器的地址,包括存儲器寄存器地址、中斷向量地址、DMA地址、時鐘電源管理寄存器地址、LCD控制寄存器地址、Nand Flash地址、UART、PWM定時器、USB Device、WatchDog、IIC、IIS、I/O端口、ADC、SPI、SD卡、ISR寄存器地址等。
2440slib.h:定義相關(guān)的MMU函數(shù)。
board.h:? 定義板卡外圍器件設(shè)備函數(shù)。
config.h:? 定義相關(guān)函數(shù)設(shè)置。
def.h:??? 定義相關(guān)量的參數(shù)。
mmu.h:?? 定義MMU相關(guān)參數(shù)。
utils.h:?? 定義存儲器相關(guān)函數(shù)。
4、匯編文件的頭文件
2440addr.inc:定義2440寄存器的地址,包括存儲器寄存器地址、中斷向量地址、DMA地址、時鐘電源管理寄存器地址、LCD控制寄存器地址、Nand Flash地址、UART、PWM定時器、USB Device、WatchDog、IIC、IIS、I/O端口、ADC、SPI、SD卡、ISR寄存器地址等。
option.inc:定義配置PLL和總線寬度寄存器的位。
memcfg.inc:定義存儲器的位定義。
5、.h文件和.c文件
H文件和C文件怎么用呢?一般來說,H文件中是declare(聲明),C文件中是define(定義)。因為C文件要編譯成庫文件(Windows下是.obj/.lib,UNIX下是.o/.a),如果別人要使用你的函數(shù),那么就要引用你的H文件,所以,H文件中一般是變量、宏定義、枚舉、結(jié)構(gòu)和函數(shù)接口的聲明,就像一個接口說明文件一樣。而C文件則是實現(xiàn)細(xì)節(jié)。
?
H文件和C文件最大的用處就是聲明和實現(xiàn)分開。這個特性應(yīng)該是公認(rèn)的了,但我仍然看到有些人喜歡把函數(shù)寫在H文件中,這種習(xí)慣很不好。(如果是C++話,對于其模板函數(shù),在VC中只有把實現(xiàn)和聲明都寫在一個文件中,因為VC不支持export關(guān)鍵字)。而且,如果在H文件中寫上函數(shù)的實現(xiàn),你還得在makefile中把頭文件的依賴關(guān)系也加上去,這個就會讓你的makefile很不規(guī)范。最后,有一個最需要注意的地方就是:帶初始化的全局變量不要放在H文件中!
總結(jié)
以上是生活随笔為你收集整理的2440启动文件分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ARM微处理器的体系结构
- 下一篇: malloc源码