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

📄 boot.asm

📁 此程序代码为dsp应用文件的下载程序
💻 ASM
字号:

*BOOTLOAD
;boot module
;======================== boot.asm =========================
;       
		.mmregs
		.def erase_flash,prog_flash,boot_table
	
		.text
		
*******************************************************
		.bss  io_map,1
		.bss  adder,1
		.bss  byte_h,1
		.bss  byte_l,1
		.bss  x,1
erase_flash:
		ST #0,*(io_map)
		PORTW *(io_map)	,0x8000	;A[19:15]=00000
		;在CPLD逻辑控制中选中FLASH存储器,使FLASH的FLASHCE=DS
		
	    ST #0xaa,*(0xd555)		;AAH--->5555H
	    						;0xd555的地址线A15为高表示访问的是外部存储器
	    nop						;5555H是FLASH内部的偏移量
	    nop						
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0x80,*(0xd555)		;80H--->5555H

	    nop
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H

	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH
	    
	    nop
	    nop
	    ST #0x10,*(0xd555)		;10H--->5555H
	    
	    STM #200,AR1
erase_loop:
	    RPT #(50000-1)
	    NOP
	    BANZ erase_loop,*AR1-
	    RET
	    
********************************************************
prog_flash:
		ST #(0x2000-8),*(adder)
		STM #(0x1000+8+2),AR3		;前面加了8个字的数据格式,后面加了两 个0
		STM #0x8000,AR2
	

prog1:		
	    LD *(adder),A
	    ADDM #1,*(adder)
	    READA *(byte_l)             ;取低八位数据
	    
	    LD *(byte_l),A
	    ANDM #0xff,*(byte_l)
	    
	    STL A,-8,*(byte_h)
	    ANDM #0xff,*(byte_h)        ;取高八位数据
	    
	    nop
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H
	    
	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0xa0,*(0xd555)		;A0H--->5555H
	    
	   
prog_hw:    
		MVKD *(byte_h),*AR2         ;将高八位数据写入FLASH
	    RPT #(1000-1)
	    NOP
prog_hr:    
		MVDK *AR2,*(x)              ;从FLASH中读入高八位数据
	    LD *(byte_h),A
	    XOR *(x),A                  ;比较写入的数据是否和读出的对应
	    AND #0x80,A
	    BC prog_hr,ANEQ
*-------------------------------------------------------	    
		LD *AR2+,A 				;AR2++ 将FLASH中的地址加1
		
		nop
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H
	    
	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0xa0,*(0xd555)		;A0H--->5555H
	   
prog_lw:    
		MVKD *(byte_l),*AR2
	    RPT #(1000-1)
	    NOP
prog_lr:    
		MVDK *AR2,*(x)
	    LD *(byte_l),A
	    nop
	    nop
	    XOR *(x),A
	    nop
	    nop
	    AND #0x80,A
	    BC prog_lr,ANEQ
	    
	    LD *AR2+,A 				;AR2++
*------------------------------------------------------
		BANZ prog1,*AR3-		;比较数据是否写完
		
		
		RET

*********************************************************
boot_table:
		STM #(0x2000-8),AR3     ;在被烧写程序的中断项量表后面加上
		RPT #(8-1)				;FLASH数据的存储格式。
		MVPD #boot1,*AR3+
		
		STM #(0x2000+0x1000),AR3 ;在被烧写数据的末尾加上两个零
		RPT #(2-1)
		ST #0,*AR3+
		
		RET 
boot1:		
		.data 
		.word 0x08aa,0x7e08,0xf800,0x0000
		.word 0x2f80,0x1000,0x0000,0x2000
		
    
	    
	    
	    
	    

⌨️ 快捷键说明

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