s3c2440的mmu有一種「steppingstone」.技術,是協助mcu從無法執行程式的nand flash執行啟動程式的一種方法,其啟動步驟如下:
彙編**:
/* 相當於巨集定義,定義儲存控制器和sdram的基位址 */
.equ mem_ctl_base, 0x48000000
.equ sdram_base, 0x30000000
.text
.global _start
_start:
/* 採用呼叫函式的形式 */
bl watch_dog_close @關閉看門狗
bl memsetup @設定儲存控制器的13個暫存器
bl copy_steppingstone_to_sdram @將steppingstone的4kb複製到sdram
ldr pc, =on_sdram @當前程式跳轉到sdram中去執行
on_sdram:
ldr sp, =0x34000000 @設定棧
bl main @跳轉去執行main函式
halt_loop:
b halt_loop
watch_dog_close:
/* 關閉看門狗,否則會一直重啟,位址0x53000000,[0]位寫0關閉 */
ldr r0, =0x53000000
ldr r1, =0
str r1, [r0]
mov pc, lr
memsetup:
/* 儲存控制器的暫存器配置,配置儲存控制器以使用sdram */
mov r1, #mem_ctl_base
adrl r2, mem_cfg_val @將13個暫存器的值偽讀取取到r2中
add r3, r1, #52 @r3=r1+52 52:13*4(13個4byte暫存器)
1: ldr r4, [r2], #4 @將r2中的值讀取到r4中,然後r2+4
str r4, [r1], #4 @將r4的內容寫到r1中儲存的位址後,r1中位址+4(初次r1位址為mem_ctl_base)
cmp r1, r3 @比較r1中現在的位址,看看是否完成13個暫存器的相應配置(13*4byte)
bne 1b @如果未完成,繼續
mov pc, lr @完成後,返回_start繼續執行
.align 4
mem_cfg_val:
/* 儲存控制器的13個暫存器的設定值 */
.long 0x22011110 @bwscon
.long 0x00000700 @bankcon0
.long 0x00000700 @bankcon1
.long 0x00000700 @bankcon2
.long 0x00000700 @bankcon3
.long 0x00000700 @bankcon4
.long 0x00000700 @bankcon5
.long 0x00018005 @bankcon6
.long 0x00018005 @bankcon7
.long 0x008c07a3 @refresh
.long 0x000000b1 @banksize
.long 0x00000030 @mrsrb6
.long 0x00000030 @mrsrb7
copy_steppingstone_to_sdram:
/* 將steppingstone的4kb資料複製到sdram中
*/mov r1, #0 @steppingstone基位址
ldr r2, =sdram_base
mov r3, #4*1024
1: ldr r4, [r1], #4 @從源位址讀取4byte資料
str r4, [r2], #4 @將源位址的4byte資料寫入目標位址
cmp r1,r3 @對比是否複製完畢
bne 1b
mov pc, lr @完成後,返回_start繼續執行
makefile:
all:
arm-linux-gcc -c -o main.o main.c
arm-linux-gcc -c -o head.o head.s
arm-linux-ld -ttext 0x30000000 head.o main.o -o sdram.elf
arm-linux-objcopy -o binary -s sdram.elf sdram.bin
arm-linux-objdump -d sdram.elf > sdram.dis
clean:
rm *.o *.elf *.dis
makefile中:arm-linux-ld -ttext 0x30000000 head.o main.o -o sdram.elf
連線到了sdram的基位址0x30000000 S3C2440 RTC 裸機程式
rtc 實時時鐘 單元可以在當系統電源關閉後通過備用電池工作。rtc 可以通過使用strb ldrb arm 操作傳送8 位二 十進位制交換碼 bcd 值資料給cpu。這些資料報括年 月 日 星期 時 分和秒的時間資訊。rtc 單元工作在外部32.768khz 晶振並且可以執行鬧鐘功能。其特點概括為...
S3C2440彙編中斷程式
雖然現在c語言已經成為主流力量,但是我還是非常喜歡用彙編寫 的高效率,高速度是有天獨厚的,但我更喜歡他那種 指哪打哪 的高透明。265m的ram任你主宰,想把那句話放在哪,就放在哪。這種任性你懂嗎?學習中斷程式兩大感悟 自己卡住的地方 2,位址切記不要寫錯。我就是在這裡卡了將近一天時間。s3c244...
S3C2440 nor flash驅動程式
20150418 s3c2440 nor flash驅動程式 2015 04 18 lover雪兒 和前面的nandflash差不多,我們此處來重新學習一下norflash驅動。1 2 參考 drivers mtd maps physmap.c3 45 include 6 include 7 inc...