從今天開始stm32先告一段落了,開始學習ARM920T架構三星公司的S3C2440,今天是頭一天學習,感覺難度要比STM32的難度大得多,主要還是涉及到操作系統就腦袋疼,和學習51和stm32時的步驟一樣,第一次都是先從IO輸出學起,與stm32的IO相比,S3C2440的IO功能起碼現在感覺不如stm32,和stm32一對比stm32若要驅動IO,必須先要開啟對應的IO時鐘,而且輸出速率可為10M 3M50M,并可以配置為4種輸出模式,三種輸入模式,并且每個IO都能夠用來產生外部中斷,相比之下S3C2440的IO共130個,使用之前并不需要開啟對應的IO時鐘,從低功耗來說,stm32簡直太強大了,而且只有24個管腳能產生外部中斷。
S3C2440的GPIOA管腳比較特別,主要是它只有輸出模式,沒有GPAUP這個寄存器
S3C2440需要自己動手來寫啟動代碼,必須要用匯編完成,c語言不能直接操作寄存器,啟動文件包括軟件初始化和硬件初始化兩個部分,軟件部分主要是:
1.設置堆棧
2.設置main的返回地址
3.調用main
4.清理工作
硬件部分是:
1.關閉WATCHDOG
2.時鐘初始化(S3C2440的時鐘最大達400M,上電時為12M)
3.SDRAM初始化
2440有兩種啟動方式,一是NAND啟動,還有一種是NOR啟動,兩種方式的啟動時不一樣的:
NAND啟動方式:1.NAND的前4K拷貝到SRAM
2.從地址0開始執行
NOR啟動方式:1.0地址指向NOR FLASH
2.從0地址開始執行
NOR的訪問形勢和內存訪問類似,而NAND就不一樣了,NOR可以向內存一樣讀數據,但是不可以向內存一樣寫數據,寫入一個數據之前一定要發送擦除指令。
啟動文件如下:
start:
LDR R0,=0X53000000
MOV R1,0x0
STR R1,[R0]
LDR SP,=1024*4
BL MAIN
halt loop:
b halt_loop
|