📄 main3.objdump
字号:
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 + -