⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bootloader.s

📁 sst flash的读写程序的编写 完整教程和实例程序和几个实用小工具
💻 S
字号:

IMMaddr:	equ	0x10000000
SDRAMaddr:	equ	0x00000000
SDRAMsize:	equ	0x01000000	;16M bytes
SRAMaddr:	equ	0x04000000
SRAMsize:	equ	(4 * 1024)	;;4K

_VECTOR_TABLE	equ	0x00000000

DATA_LENGTH         	  equ     0x00100000 	;	1M bytes,第一部分
FLASH_CODE_ADDR           equ     0xFF020000	;	start address of app. image 
DRAM_START		          equ	  0x00001000	;	app. exec. start address  (start of crt0.s, defined in  xxx.lnk)



	XDEF start
start:
_asm_startmeup:

		move.w		#0x2700,SR

		move.l		#_VECTOR_TABLE,d0
		movec		d0,VBR

		move.l		#SRAMaddr+0x21,d0
		movec		d0,RAMBAR

		move.l		#IMMaddr+0x1,d0
		movec		d0,MBAR

SDRAM_START:		
;DRAM_INIT1:		
		move.w          #0x822A, D0
		move.w          D0, 0x10000100.L       ;DCR


;to init the BANK0
;16MB/32 bits
;From 0x00000000->0x00ffffff
		move.l          #0x00001304, D0
		move.l          D0, 0x10000108.L       ;DACR0
		
		move.l          #0x00FC0001, D0
		move.l          D0, 0x1000010C.L       ;DCMR0
		
		move.l          #0x0000130C, D0
		move.l          D0, 0x10000108.L       ;DACR0
		
		move.l          #0xA5A59696, D0
		move.l          D0, 0x00000400.L       ;dummy write
		
		move.l          #0x00009304, D0
		move.l          D0, 0x10000108.L       ;DACR0

;to init the BANK1
;16MB/32bits
;From 0x01000000->0x01ffffff
		move.l          #0x01001304, D0
		move.l          D0, 0x10000110.L       ;DACR1
		
		move.l          #0x00FC0001, D0
		move.l          D0, 0x10000114.L       ;DCMR1
		
		move.l          #0x0100130C, D0
		move.l          D0, 0x10000110.L       ;DACR1
		
		move.l          #0xA5A59696, D0
		move.l          D0, 0x01000400.L       ;dummy write
		
		move.l          #0x01009304, D0
		move.l          D0, 0x10000110.L       ;DACR1
		
		
;CS_INIT:
		move.w          #0xFF00, D0
		move.w          D0, 0x10000080.L       ;CSAR0		
		move.w          #0x1D80, D0
		move.w          D0, 0x1000008A.L       ;CSCR0		
		move.l          #0x001F0001, D0           
		move.l          D0, 0x10000084.L       ;CSMR0          ;#0x00FF0001   kangyong
		
		move.w          #0xff20, D0
		move.w          D0, 0x1000008C.L       ;CSAR1	       ;#0xff00	
		move.w          #0x1D80, D0
		move.w          D0, 0x10000096.L       ;CSCR1		   ;#0x2980
		move.l          #0x001F0001, D0
		move.l          D0, 0x10000090.L       ;CSMR1          ;#0x007F0000
		
		move.w          #0x2200, D0
		move.w          D0, 0x10000098.L       ;CSAR2		
		move.w          #0x1140, D0
		move.w          D0, 0x100000A2.L       ;CSCR2		
		move.l          #0x00FF0000, D0
		move.l          D0, 0x1000009C.L       ;CSMR2
		
		move.w          #0x4000, D0
		move.w          D0, 0x100000A4.L       ;CSAR3		
		move.w          #0x11A0, D0
		move.w          D0, 0x100000AE.L       ;CSCR3		
		move.l          #0x007F0000, D0
		move.l          D0, 0x100000A8.L       ;CSMR3
		
		move.w          #0xff00, D0
		move.w          D0, 0x100000B0.L       ;CSAR4		
		move.w          #0x3CA0, D0
		move.w          D0, 0x100000BA.L       ;CSCR4		
		move.l          #0x00FF0000, D0
		move.l          D0, 0x100000B4.L       ;CSMR4
		
		move.w          #0xff00, D0
		move.w          D0, 0x100000BC.L       ;CSAR5		
		move.w          #0x29A0, D0
		move.w          D0, 0x100000C6.L       ;CSCR5		
		move.l          #0x00FF0000, D0
		move.l          D0, 0x100000C0.L       ;CSMR5
		
		move.w          #0xff00, D0
		move.w          D0, 0x100000C8.L       ;CSAR6		
		move.w          #0x2980, D0
		move.w          D0, 0x100000D2.L       ;CSCR6		
		move.l          #0x007F0000, D0
		move.l          D0, 0x100000CC.L       ;CSMR6
		
		move.w          #0xff00, D0
		move.w          D0, 0x100000D4.L       ;CSAR7		
		move.w          #0x2980, D0
		move.w          D0, 0x100000DE.L       ;CSCR7		
		move.l          #0x007F0000, D0
		move.l          D0, 0x100000D8.L       ;CSMR7
		
		
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		
		


		
;DRAM_INIT2:
		
		move.l          #0x00009344, D0
		move.l          D0, 0x10000108.L       ;DACR0
		
		move.l          #0xA5A59696, D0
		move.l          D0, 0x00000400.L       ;   
		
		move.l          #0x01009344, D0
		move.l          D0, 0x10000110.L       ;DACR1
		
		move.l          #0xA5A59696, D0
		move.l          D0, 0x01000400.L       ;
		
		
;clear SRAM
		lea.l		SRAMaddr,A0
		move.l		#1024,D0
SRAM_INIT_LOOP:
		clr.l		(A0)+
		subq.l		#1,D0
		bne.b		SRAM_INIT_LOOP


		nop		  
		nop

		nop
		nop
		nop
		move.w #0x2700,SR		;/* mask off IRQ's */
		clr.l d0
		movec d0,ACR0			;/* ACR0 off */
		movec d0,ACR1			;/* ACR1 off */
		move.l #0x01000000,d0           ;/* Invalidate and disable cache */
		movec d0,CACR	
		nop
		nop
		nop


		MOVE.L	#0X0000C000,D0		;CACHE THE SDRAM   , from 0x00000000, WRITE through
		MOVEC	D0,ACR0
		
		
		MOVE.L	#0X0100C000,D0		;CACHE THE SDRAM   , from 0x01000000, WRITE through
		MOVEC	D0,ACR1
				
		MOVE.L	#0xa1000200,D0		;ENABLE CACHE ,with BUFFER, default  no cache precise
		MOVEC	D0,CACR
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop


;load main.dwn code in flash to DRam and jump PC to DRam
	move.l  #DATA_LENGTH, D1
	move.l  #FLASH_CODE_ADDR, A0
	move.l  #DRAM_START, A1
LOAD_NOT_OK:
	move.w  (A0)+, D0
	move.w  D0,    (A1)+
	subq.l  #1,    D1
	BNE     LOAD_NOT_OK

	
;	move.l  #0x00100000/2, D1         ;KANG增加,剩余的第二段代码,位于flash2上起始地址0xFF220000,100000/2个字
;	move.l  #0xFF220000, A0
;LOAD_NOT_OK2:                         
;	move.w  (A0)+, D0
;	move.w  D0,    (A1)+
;	subq.l  #1,    D1
;	BNE     LOAD_NOT_OK2	        ;
	
	JMP     DRAM_START
;end of load and jump

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -