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

📄 main3.objdump

📁 FPGA flash 编程序,使用CYCLONE和FLASH
💻 OBJDUMP
📖 第 1 页 / 共 2 页
字号:

main3.elf:     file format elf32-littlenios2

Disassembly of section .text:

001000a0 <_start>:
  1000a0:	00400034 	movhi	at,0
  1000a4:	08420004 	addi	at,at,2048
  1000a8:	00800804 	movi	r2,32

001000ac <text_init>:
  1000ac:	0801483a 	initi	at
  1000b0:	0883c83a 	sub	at,at,r2
  1000b4:	007ffd16 	blt	zero,at,1000ac <text_init>
  1000b8:	00400034 	movhi	at,0
  1000bc:	08410004 	addi	at,at,1024
  1000c0:	00800104 	movi	r2,4

001000c4 <data_init>:
  1000c4:	08000033 	initd	0(at)
  1000c8:	0883c83a 	sub	at,at,r2
  1000cc:	007ffd16 	blt	zero,at,1000c4 <data_init>
  1000d0:	06c00834 	movhi	sp,32
  1000d4:	dec00004 	addi	sp,sp,0
  1000d8:	06800474 	movhi	gp,17
  1000dc:	d6a17004 	addi	gp,gp,-31296
  1000e0:	010053c0 	call	10053c <alt_main>
  1000e4:	0009303a 	rdctl	r4,status
  1000e8:	00fffff4 	movhi	r3,65535
  1000ec:	18ffff94 	ori	r3,r3,65534
  1000f0:	20c8703a 	and	r4,r4,r3
  1000f4:	2001703a 	wrctl	status,r4

001000f8 <crt0_end>:
  1000f8:	003fff06 	br	1000f8 <crt0_end>

001000fc <sst39vf160_flash_write_16>:
  unsigned short us1, us2;
  int result = 0;
//na_uart1->np_uartcontrol=0;
#ifdef nasys_main_flash
  if (-1 == (int)fb)
  1000fc:	01ffffc4 	movi	r7,-1
  100100:	deffff04 	addi	sp,sp,-4
  100104:	3011883a 	mov	r8,r6
  100108:	0013883a 	mov	r9,zero
  10010c:	21c01a26 	beq	r4,r7,100178 <sst39vf160_flash_write_16+0x7c>
    fb = nasys_main_flash;
#endif // nasys_main_flash

  fb[0x555] = 0xAA; // 1st cycle  addr = 0x5555, data = AA
  100110:	00802a84 	movi	r2,170
  100114:	2082aaad 	sthio	r2,2730(r4)
  fb[0x2aa] = 0x55; // 2nd cycle  addr = 0x2aaa, data = 55
  100118:	00c01544 	movi	r3,85
  10011c:	20c1552d 	sthio	r3,1364(r4)
  fb[0x555] = 0xA0; // 3rd cycle  addr = 0x5555, data = A0
  100120:	00802804 	movi	r2,160
  100124:	2082aaad 	sthio	r2,2730(r4)

 
  *a = val;     // 4th cycle  addr = PA, data = PD
  100128:	2980002d 	sthio	r6,0(r5)
  10012c:	3809883a 	mov	r4,r7
  100130:	01800b44 	movi	r6,45
  100134:	01c00084 	movi	r7,2
  100138:	d9c00035 	stwio	r7,0(sp)
  10013c:	d8800037 	ldwio	r2,0(sp)
  100140:	10bfffc4 	addi	r2,r2,-1
  100144:	d8800035 	stwio	r2,0(sp)
  100148:	d8c00037 	ldwio	r3,0(sp)
  10014c:	193ffb1e 	bne	r3,r4,10013c <sst39vf160_flash_write_16+0x40>
  100150:	31bfffc4 	addi	r6,r6,-1
  100154:	01bff816 	blt	zero,r6,100138 <sst39vf160_flash_write_16+0x3c>

  // Delay 40us
  wait_tiny(45);

  us1 = *a;
  100158:	2880002b 	ldhuio	r2,0(r5)
  if (us1 != val)
  10015c:	40ffffcc 	andi	r3,r8,65535
  100160:	10bfffcc 	andi	r2,r2,65535
  100164:	10c00126 	beq	r2,r3,10016c <sst39vf160_flash_write_16+0x70>
    result = -1;
  100168:	027fffc4 	movi	r9,-1
//na_uart1->np_uartcontrol=np_uartcontrol_irrdy_mask;
  return result;
}
  10016c:	4805883a 	mov	r2,r9
  100170:	dec00104 	addi	sp,sp,4
  100174:	f800283a 	ret
  100178:	01080004 	movi	r4,8192
  10017c:	003fe406 	br	100110 <sst39vf160_flash_write_16+0x14>

00100180 <nr_flash_write_hw>:

// ---------------------------------------------
// Public Routines

// Write val to the given flash address.
// Return value: 0 on success, -1 on failure.
int nr_flash_write_hw (
    unsigned short *flash_base,
    unsigned short *addr,
    unsigned short val  )
{

  return (sst39vf160_flash_write_16(flash_base,addr,val));
  100180:	31bfffcc 	andi	r6,r6,65535
  100184:	02000434 	movhi	r8,16
  100188:	42003f04 	addi	r8,r8,252
  10018c:	4000683a 	jmp	r8

00100190 <nr_flash_erase_block>:
}

// Erase the flash sector at sector_address.
// Return value: 0 on success, -1 on failure.

int nr_flash_erase_sector (
      unsigned short *flash_base,
      unsigned short *sector_address  )
{
	return(nr_flash_erase_block(flash_base,sector_address));
}
	

int nr_flash_erase_block  (
      unsigned short *flash_base,
      unsigned short *sector_address  )
{
  100190:	defffc04 	addi	sp,sp,-16
  100194:	dc800015 	stw	r18,0(sp)
  volatile unsigned short *fb = (unsigned short *) flash_base;
  100198:	2007883a 	mov	r3,r4
  volatile unsigned short *sa = (unsigned short *) sector_address;
  int result=0;

#ifdef nasys_main_flash
  if (-1 == (int)fb)
  10019c:	04bfffc4 	movi	r18,-1
  1001a0:	dc000215 	stw	r16,8(sp)
  1001a4:	dc400115 	stw	r17,4(sp)
  1001a8:	dfc00315 	stw	ra,12(sp)
    fb = nasys_main_flash;
#endif // nasys_main_flash

  fb[0x555] = 0xAA; // 1st cycle  addr = 5555, data = AA
  1001ac:	01802a84 	movi	r6,170
  fb[0x2aa] = 0x55; // 2nd cycle  addr = 2aaa, data = 55
  1001b0:	01c01544 	movi	r7,85
  fb[0x555] = 0x80; // 3rd cycle  addr = 5555, data = 80
  fb[0x555] = 0xAA; // 4th cycle  addr = 5555, data = AA
  fb[0x2aa] = 0x55; // 5th cycle  addr = 2aaa, data = 55

  *sa = 0x30; // 6th cycle  addr = XXX, data = 50

  // Delay 50ms
  nr_delay(50);
  1001b4:	01000c84 	movi	r4,50
  1001b8:	2821883a 	mov	r16,r5
  1001bc:	0023883a 	mov	r17,zero
  1001c0:	1c801526 	beq	r3,r18,100218 <nr_flash_erase_block+0x88>
  1001c4:	1982aaad 	sthio	r6,2730(r3)
  1001c8:	19c1552d 	sthio	r7,1364(r3)
  1001cc:	00802004 	movi	r2,128
  1001d0:	1882aaad 	sthio	r2,2730(r3)
  1001d4:	1982aaad 	sthio	r6,2730(r3)
  1001d8:	19c1552d 	sthio	r7,1364(r3)
  1001dc:	00800c04 	movi	r2,48
  1001e0:	8080002d 	sthio	r2,0(r16)
  1001e4:	01005b00 	call	1005b0 <nr_delay>

  if (0xFF != *sa)  // done? note: 8bit data
  1001e8:	80c0002b 	ldhuio	r3,0(r16)
  1001ec:	00803fc4 	movi	r2,255
  1001f0:	18ffffcc 	andi	r3,r3,65535
  1001f4:	18800126 	beq	r3,r2,1001fc <nr_flash_erase_block+0x6c>
    result = -1;	// erase error
  1001f8:	9023883a 	mov	r17,r18

  return result;
}
  1001fc:	8805883a 	mov	r2,r17
  100200:	dfc00317 	ldw	ra,12(sp)
  100204:	dc000217 	ldw	r16,8(sp)
  100208:	dc400117 	ldw	r17,4(sp)
  10020c:	dc800017 	ldw	r18,0(sp)
  100210:	dec00404 	addi	sp,sp,16
  100214:	f800283a 	ret
  100218:	00c80004 	movi	r3,8192
  10021c:	003fe906 	br	1001c4 <nr_flash_erase_block+0x34>

00100220 <nr_flash_erase_sector>:
  100220:	02000434 	movhi	r8,16
  100224:	42006404 	addi	r8,r8,400
  100228:	4000683a 	jmp	r8

0010022c <nr_flash_erase_sector_4kB>:


int nr_flash_erase_sector_4kB  (
      unsigned short *flash_base,
      unsigned short *sector_address  )
{
  10022c:	defffc04 	addi	sp,sp,-16
  100230:	dc800015 	stw	r18,0(sp)
  volatile unsigned short *fb = (unsigned short *) flash_base;
  100234:	2007883a 	mov	r3,r4
  volatile unsigned short *sa = (unsigned short *) sector_address;
  int result=0;

//na_uart1->np_uartcontrol=0;

#ifdef nasys_main_flash
  if (-1 == (int)fb)
  100238:	04bfffc4 	movi	r18,-1
  10023c:	dc000215 	stw	r16,8(sp)
  100240:	dc400115 	stw	r17,4(sp)
  100244:	dfc00315 	stw	ra,12(sp)
    fb = nasys_main_flash;
#endif // nasys_main_flash

  fb[0x555] = 0xAA; // 1st cycle  addr = 5555, data = AA
  100248:	01802a84 	movi	r6,170
  fb[0x2aa] = 0x55; // 2nd cycle  addr = 2aaa, data = 55
  10024c:	01c01544 	movi	r7,85
  fb[0x555] = 0x80; // 3rd cycle  addr = 5555, data = 80
  fb[0x555] = 0xAA; // 4th cycle  addr = 5555, data = AA
  fb[0x2aa] = 0x55; // 5th cycle  addr = 2aaa, data = 55

  *sa = 0x30; // 6th cycle  addr = XXX, data = 30

  // Delay 50ms
  nr_delay(50);
  100250:	01000c84 	movi	r4,50
  100254:	2821883a 	mov	r16,r5
  100258:	0023883a 	mov	r17,zero
  10025c:	1c801526 	beq	r3,r18,1002b4 <nr_flash_erase_sector_4kB+0x88>
  100260:	1982aaad 	sthio	r6,2730(r3)
  100264:	19c1552d 	sthio	r7,1364(r3)
  100268:	00802004 	movi	r2,128
  10026c:	1882aaad 	sthio	r2,2730(r3)
  100270:	1982aaad 	sthio	r6,2730(r3)
  100274:	19c1552d 	sthio	r7,1364(r3)
  100278:	00800c04 	movi	r2,48
  10027c:	8080002d 	sthio	r2,0(r16)
  100280:	01005b00 	call	1005b0 <nr_delay>

  if (0xFF != *sa)  // done? note: 8bit data
  100284:	80c0002b 	ldhuio	r3,0(r16)
  100288:	00803fc4 	movi	r2,255
  10028c:	18ffffcc 	andi	r3,r3,65535
  100290:	18800126 	beq	r3,r2,100298 <nr_flash_erase_sector_4kB+0x6c>
    result = -1;	// erase error
  100294:	9023883a 	mov	r17,r18

//na_uart1->np_uartcontrol=np_uartcontrol_irrdy_mask;
  return result;
}
  100298:	8805883a 	mov	r2,r17
  10029c:	dfc00317 	ldw	ra,12(sp)
  1002a0:	dc000217 	ldw	r16,8(sp)
  1002a4:	dc400117 	ldw	r17,4(sp)
  1002a8:	dc800017 	ldw	r18,0(sp)
  1002ac:	dec00404 	addi	sp,sp,16
  1002b0:	f800283a 	ret
  1002b4:	00c80004 	movi	r3,8192
  1002b8:	003fe906 	br	100260 <nr_flash_erase_sector_4kB+0x34>

001002bc <nr_flash_erase>:


// Erase the entire flash.
// Return value: 0 on success, -1 on failure.

int nr_flash_erase(unsigned short *flash_base)
{
  1002bc:	defffc04 	addi	sp,sp,-16
  1002c0:	dc000215 	stw	r16,8(sp)
  1002c4:	dc800015 	stw	r18,0(sp)
  1002c8:	2021883a 	mov	r16,r4
  volatile unsigned char *fb = (unsigned char*) flash_base;
  int result = 0;

#ifdef nasys_main_flash
  if (-1 == (int)fb)
  1002cc:	04bfffc4 	movi	r18,-1
  1002d0:	dc400115 	stw	r17,4(sp)
  1002d4:	dfc00315 	stw	ra,12(sp)
  {
    fb = nasys_main_flash;
  }
#endif // nasys_main_flash

  //result = erase_flash_single_command(fb);
	// Erase the entire flash in one command. AKA CHIP ERASE sst39vf160
  fb[0x555] = 0xAA; // 1st cycle  addr = 0x5555, data = AA
  1002d8:	00ffea84 	movi	r3,-86
  fb[0x2aa] = 0x55; // 2nd cycle  addr = 0x2aaa, data = 55
  1002dc:	01401544 	movi	r5,85
  fb[0x555] = 0x80; // 3rd cycle  addr = 0x5555, data = 80
  fb[0x555] = 0xAA; // 4th cycle  addr = 0x5555, data = AA
  fb[0x2aa] = 0x55; // 5th cycle  addr = 0x2aaa, data = 55
  fb[0x555] = 0x10; // 6th cycle  addr = 0x5555, data = 10

  //Delay 200ms
  nr_delay(200);
  1002e0:	01003204 	movi	r4,200
  1002e4:	0023883a 	mov	r17,zero
  1002e8:	84801c26 	beq	r16,r18,10035c <nr_flash_erase+0xa0>
  1002ec:	80c15565 	stbio	r3,1365(r16)
  1002f0:	8140aaa5 	stbio	r5,682(r16)
  1002f4:	00bfe004 	movi	r2,-128
  1002f8:	80815565 	stbio	r2,1365(r16)
  1002fc:	80c15565 	stbio	r3,1365(r16)
  100300:	8140aaa5 	stbio	r5,682(r16)
  100304:	00800404 	movi	r2,16
  100308:	80815565 	stbio	r2,1365(r16)
  10030c:	01005b00 	call	1005b0 <nr_delay>
  
  if(0xff == *fb)
  100310:	80c00023 	ldbuio	r3,0(r16)
  100314:	00803fc4 	movi	r2,255
  100318:	18c03fcc 	andi	r3,r3,255
  10031c:	18800726 	beq	r3,r2,10033c <nr_flash_erase+0x80>
  	result = -1;
  
  return result;
}
  100320:	8805883a 	mov	r2,r17
  100324:	dfc00317 	ldw	ra,12(sp)
  100328:	dc000217 	ldw	r16,8(sp)
  10032c:	dc400117 	ldw	r17,4(sp)
  100330:	dc800017 	ldw	r18,0(sp)
  100334:	dec00404 	addi	sp,sp,16
  100338:	f800283a 	ret
  10033c:	9023883a 	mov	r17,r18
  100340:	8805883a 	mov	r2,r17
  100344:	dfc00317 	ldw	ra,12(sp)
  100348:	dc000217 	ldw	r16,8(sp)
  10034c:	dc400117 	ldw	r17,4(sp)
  100350:	dc800017 	ldw	r18,0(sp)
  100354:	dec00404 	addi	sp,sp,16
  100358:	f800283a 	ret
  10035c:	04080004 	movi	r16,8192
  100360:	003fe206 	br	1002ec <nr_flash_erase+0x30>

00100364 <nr_flash_write>:


int nr_flash_write (

⌨️ 快捷键说明

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