📄 main.lss
字号:
//############################################################################
{
428: e92d4070 stmdb sp!, {r4, r5, r6, lr}
42c: e24dd008 sub sp, sp, #8 ; 0x8
//Commando 16 zum lesen eines Blocks von der MMC/SD - Karte
unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF};
430: e28d5002 add r5, sp, #2 ; 0x2
434: e1a04000 mov r4, r0
438: e1a06001 mov r6, r1
/*Die Adressierung der MMC/SD-Karte wird in Bytes angegeben,
addr wird von Blocks zu Bytes umgerechnet danach werden
diese in das Commando eingef黦t*/
addr = addr << 9; //addr = addr * 512
43c: e1a04484 mov r4, r4, lsl #9
440: e3a02006 mov r2, #6 ; 0x6
444: e59f103c ldr r1, [pc, #60] ; 488 <.text+0x488>
448: e1a00005 mov r0, r5
44c: eb0004ab bl 1700 <memcpy>
CMD[1] = ((addr & 0xFF000000) >>24 );
CMD[2] = ((addr & 0x00FF0000) >>16 );
CMD[3] = ((addr & 0x0000FF00) >>8 );
450: e2043cff and r3, r4, #65280 ; 0xff00
454: e1a0cc24 mov ip, r4, lsr #24
458: e1a03423 mov r3, r3, lsr #8
MMC_Read_Block(CMD,Buffer,512);
45c: e1a00005 mov r0, r5
460: e1a01006 mov r1, r6
464: e1a04824 mov r4, r4, lsr #16
468: e3a02c02 mov r2, #512 ; 0x200
46c: e5cdc003 strb ip, [sp, #3]
470: e5cd4004 strb r4, [sp, #4]
474: e5cd3005 strb r3, [sp, #5]
478: ebffffce bl 3b8 <MMC_Read_Block>
return(0);
}
47c: e3a00000 mov r0, #0 ; 0x0
480: e28dd008 add sp, sp, #8 ; 0x8
484: e8bd8070 ldmia sp!, {r4, r5, r6, pc}
488: 0000195c andeq r1, r0, ip, asr r9
0000048c <Read_CID_MMC>:
//############################################################################
//Routine zum lesen des CID Registers von der MMC/SD-Karte (16Bytes)
unsigned char Read_CID_MMC (unsigned char *Buffer)
//############################################################################
{
48c: e92d4030 stmdb sp!, {r4, r5, lr}
490: e24dd008 sub sp, sp, #8 ; 0x8
//Commando zum lesen des CID Registers
unsigned char CMD[] = {0x4A,0x00,0x00,0x00,0x00,0xFF};
494: e28d4002 add r4, sp, #2 ; 0x2
498: e1a05000 mov r5, r0
49c: e3a02006 mov r2, #6 ; 0x6
4a0: e1a00004 mov r0, r4
4a4: e59f101c ldr r1, [pc, #28] ; 4c8 <.text+0x4c8>
4a8: eb000494 bl 1700 <memcpy>
MMC_Read_Block(CMD,Buffer,16);
4ac: e1a00004 mov r0, r4
4b0: e1a01005 mov r1, r5
4b4: e3a02010 mov r2, #16 ; 0x10
4b8: ebffffbe bl 3b8 <MMC_Read_Block>
return(0);
}
4bc: e3a00000 mov r0, #0 ; 0x0
4c0: e28dd008 add sp, sp, #8 ; 0x8
4c4: e8bd8030 ldmia sp!, {r4, r5, pc}
4c8: 00001956 andeq r1, r0, r6, asr r9
000004cc <Read_CSD_MMC>:
//############################################################################
//Routine zum lesen des CSD Registers von der MMC/SD-Karte (16Bytes)
unsigned char Read_CSD_MMC (unsigned char *Buffer)
//############################################################################
{
4cc: e92d4030 stmdb sp!, {r4, r5, lr}
4d0: e24dd008 sub sp, sp, #8 ; 0x8
//Commando zum lesen des CSD Registers
unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};
4d4: e28d4002 add r4, sp, #2 ; 0x2
4d8: e1a05000 mov r5, r0
4dc: e3a02006 mov r2, #6 ; 0x6
4e0: e1a00004 mov r0, r4
4e4: e59f101c ldr r1, [pc, #28] ; 508 <.text+0x508>
4e8: eb000484 bl 1700 <memcpy>
MMC_Read_Block(CMD,Buffer,16);
4ec: e1a00004 mov r0, r4
4f0: e1a01005 mov r1, r5
4f4: e3a02010 mov r2, #16 ; 0x10
4f8: ebffffae bl 3b8 <MMC_Read_Block>
return(0);
}
4fc: e3a00000 mov r0, #0 ; 0x0
500: e28dd008 add sp, sp, #8 ; 0x8
504: e8bd8030 ldmia sp!, {r4, r5, pc}
508: 00001950 andeq r1, r0, r0, asr r9
0000050c <mmc_init>:
50c: e59f21b0 ldr r2, [pc, #432] ; 6c4 <.text+0x6c4>
510: e5923008 ldr r3, [r2, #8]
514: e3c33020 bic r3, r3, #32 ; 0x20
518: e5823008 str r3, [r2, #8]
51c: e5923008 ldr r3, [r2, #8]
520: e3833010 orr r3, r3, #16 ; 0x10
524: e5823008 str r3, [r2, #8]
528: e5923008 ldr r3, [r2, #8]
52c: e3833040 orr r3, r3, #64 ; 0x40
530: e5823008 str r3, [r2, #8]
534: e5923008 ldr r3, [r2, #8]
538: e3833b01 orr r3, r3, #1024 ; 0x400
53c: e5823008 str r3, [r2, #8]
540: e5923008 ldr r3, [r2, #8]
544: e3833080 orr r3, r3, #128 ; 0x80
548: e5823008 str r3, [r2, #8]
54c: e5923000 ldr r3, [r2]
550: e3833b01 orr r3, r3, #1024 ; 0x400
554: e5823000 str r3, [r2]
558: e2822901 add r2, r2, #16384 ; 0x4000
55c: e5923000 ldr r3, [r2]
560: e3c33c03 bic r3, r3, #768 ; 0x300
564: e5823000 str r3, [r2]
568: e5923000 ldr r3, [r2]
56c: e3833c01 orr r3, r3, #256 ; 0x100
570: e5823000 str r3, [r2]
574: e5923000 ldr r3, [r2]
578: e3c33b03 bic r3, r3, #3072 ; 0xc00
57c: e5823000 str r3, [r2]
580: e5923000 ldr r3, [r2]
584: e3833b01 orr r3, r3, #1024 ; 0x400
588: e5823000 str r3, [r2]
58c: e5923000 ldr r3, [r2]
590: e3c33a03 bic r3, r3, #12288 ; 0x3000
594: e5823000 str r3, [r2]
598: e5923000 ldr r3, [r2]
59c: e3833a01 orr r3, r3, #4096 ; 0x1000
5a0: e5823000 str r3, [r2]
5a4: e5923000 ldr r3, [r2]
5a8: e3c33903 bic r3, r3, #49152 ; 0xc000
5ac: e5823000 str r3, [r2]
5b0: e5923000 ldr r3, [r2]
5b4: e92d4010 stmdb sp!, {r4, lr}
5b8: e59f1108 ldr r1, [pc, #264] ; 6c8 <.text+0x6c8>
5bc: e3833901 orr r3, r3, #16384 ; 0x4000
5c0: e5823000 str r3, [r2]
5c4: e3a030f8 mov r3, #248 ; 0xf8
5c8: e581300c str r3, [r1, #12]
5cc: e3a03030 mov r3, #48 ; 0x30
5d0: e5813000 str r3, [r1]
5d4: e24dd008 sub sp, sp, #8 ; 0x8
5d8: e3a02000 mov r2, #0 ; 0x0
5dc: e1a00000 nop (mov r0,r0)
5e0: e59f30e4 ldr r3, [pc, #228] ; 6cc <.text+0x6cc>
5e4: e2822001 add r2, r2, #1 ; 0x1
5e8: e1520003 cmp r2, r3
5ec: 1afffffa bne 5dc <mmc_init+0xd0>
5f0: e3a01000 mov r1, #0 ; 0x0
5f4: e59f30cc ldr r3, [pc, #204] ; 6c8 <.text+0x6c8>
5f8: e3a020ff mov r2, #255 ; 0xff
5fc: e5832008 str r2, [r3, #8]
600: e59f30c0 ldr r3, [pc, #192] ; 6c8 <.text+0x6c8>
604: e5933004 ldr r3, [r3, #4]
608: e3130080 tst r3, #128 ; 0x80
60c: 0afffffb beq 600 <mmc_init+0xf4>
610: e2813001 add r3, r1, #1 ; 0x1
614: e20310ff and r1, r3, #255 ; 0xff
618: e351000a cmp r1, #10 ; 0xa
61c: 1afffff4 bne 5f4 <mmc_init+0xe8>
620: e28d0002 add r0, sp, #2 ; 0x2
624: e59f10a4 ldr r1, [pc, #164] ; 6d0 <.text+0x6d0>
628: e3a02006 mov r2, #6 ; 0x6
62c: eb000433 bl 1700 <memcpy>
630: e3a04000 mov r4, #0 ; 0x0
634: ea000003 b 648 <mmc_init+0x13c>
638: e35400c9 cmp r4, #201 ; 0xc9
63c: 03a00001 moveq r0, #1 ; 0x1
640: 0a00001d beq 6bc <mmc_init+0x1b0>
644: e1a04823 mov r4, r3, lsr #16
648: e28d0002 add r0, sp, #2 ; 0x2
64c: ebffff23 bl 2e0 <Write_Command_MMC>
650: e2843001 add r3, r4, #1 ; 0x1
654: e3500001 cmp r0, #1 ; 0x1
658: e1a03803 mov r3, r3, lsl #16
65c: 1afffff5 bne 638 <mmc_init+0x12c>
660: e3a03041 mov r3, #65 ; 0x41
664: e5cd3002 strb r3, [sp, #2]
668: e3a04000 mov r4, #0 ; 0x0
66c: e3e03000 mvn r3, #0 ; 0x0
670: e5cd3007 strb r3, [sp, #7]
674: ea000003 b 688 <mmc_init+0x17c>
678: e35400c9 cmp r4, #201 ; 0xc9
67c: 03a00002 moveq r0, #2 ; 0x2
680: 0a00000d beq 6bc <mmc_init+0x1b0>
684: e1a04823 mov r4, r3, lsr #16
688: e28d0002 add r0, sp, #2 ; 0x2
68c: ebffff13 bl 2e0 <Write_Command_MMC>
690: e2843001 add r3, r4, #1 ; 0x1
694: e3500000 cmp r0, #0 ; 0x0
698: e1a03803 mov r3, r3, lsl #16
69c: 1afffff5 bne 678 <mmc_init+0x16c>
6a0: e59f3020 ldr r3, [pc, #32] ; 6c8 <.text+0x6c8>
6a4: e3a02008 mov r2, #8 ; 0x8
6a8: e583200c str r2, [r3, #12]
6ac: e59f2010 ldr r2, [pc, #16] ; 6c4 <.text+0x6c4>
6b0: e5923000 ldr r3, [r2]
6b4: e3833b01 orr r3, r3, #1024 ; 0x400
6b8: e5823000 str r3, [r2]
6bc: e28dd008 add sp, sp, #8 ; 0x8
6c0: e8bd8010 ldmia sp!, {r4, pc}
6c4: e0028000 and r8, r2, r0
6c8: e0020000 and r0, r2, r0
6cc: 00004e20 andeq r4, r0, r0, lsr #28
6d0: 00001968 andeq r1, r0, r8, ror #18
000006d4 <mmc_write_sector>:
6d4: e92d4070 stmdb sp!, {r4, r5, r6, lr}
6d8: e24dd008 sub sp, sp, #8 ; 0x8
6dc: e28d5002 add r5, sp, #2 ; 0x2
6e0: e1a04000 mov r4, r0
6e4: e3a02006 mov r2, #6 ; 0x6
6e8: e1a06001 mov r6, r1
6ec: e1a00005 mov r0, r5
6f0: e59f10e8 ldr r1, [pc, #232] ; 7e0 <.text+0x7e0>
6f4: eb000401 bl 1700 <memcpy>
6f8: e1a02424 mov r2, r4, lsr #8
6fc: e1a03c24 mov r3, r4, lsr #24
700: e1a00005 mov r0, r5
704: e1a04824 mov r4, r4, lsr #16
708: e5cd3003 strb r3, [sp, #3]
70c: e5cd4004 strb r4, [sp, #4]
710: e5cd2005 strb r2, [sp, #5]
714: ebfffef1 bl 2e0 <Write_Command_MMC>
718: e3500000 cmp r0, #0 ; 0x0
71c: 1a00002d bne 7d8 <mmc_write_sector+0x104>
720: e1a04000 mov r4, r0
724: ebfffee2 bl 2b4 <Read_Byte_MMC>
728: e2843001 add r3, r4, #1 ; 0x1
72c: e20340ff and r4, r3, #255 ; 0xff
730: e3540064 cmp r4, #100 ; 0x64
734: 1afffffa bne 724 <mmc_write_sector+0x50>
738: e59f30a4 ldr r3, [pc, #164] ; 7e4 <.text+0x7e4>
73c: e3a020fe mov r2, #254 ; 0xfe
740: e5832008 str r2, [r3, #8]
744: e59f3098 ldr r3, [pc, #152] ; 7e4 <.text+0x7e4>
748: e5933004 ldr r3, [r3, #4]
74c: e3130080 tst r3, #128 ; 0x80
750: 0afffffb beq 744 <mmc_write_sector+0x70>
754: e3a01000 mov r1, #0 ; 0x0
758: e4d62001 ldrb r2, [r6], #1
75c: e59f3080 ldr r3, [pc, #128] ; 7e4 <.text+0x7e4>
760: e5832008 str r2, [r3, #8]
764: e59f2078 ldr r2, [pc, #120] ; 7e4 <.text+0x7e4>
768: e5923004 ldr r3, [r2, #4]
76c: e3130080 tst r3, #128 ; 0x80
770: 0afffffb beq 764 <mmc_write_sector+0x90>
774: e2813001 add r3, r1, #1 ; 0x1
778: e1a03803 mov r3, r3, lsl #16
77c: e1a01823 mov r1, r3, lsr #16
780: e3510c02 cmp r1, #512 ; 0x200
784: 1afffff3 bne 758 <mmc_write_sector+0x84>
788: e3a030ff mov r3, #255 ; 0xff
78c: e5823008 str r3, [r2, #8]
790: e59f204c ldr r2, [pc, #76] ; 7e4 <.text+0x7e4>
794: e5923004 ldr r3, [r2, #4]
798: e3130080 tst r3, #128 ; 0x80
79c: 0afffffb beq 790 <mmc_write_sector+0xbc>
7a0: e3a030ff mov r3, #255 ; 0xff
7a4: e5823008 str r3, [r2, #8]
7a8: e59f3034 ldr r3, [pc, #52] ; 7e4 <.text+0x7e4>
7ac: e5933004 ldr r3, [r3, #4]
7b0: e3130080 tst r3, #128 ; 0x80
7b4: 0afffffb beq 7a8 <mmc_write_sector+0xd4>
7b8: ebfffebd bl 2b4 <Read_Byte_MMC>
7bc: e35000ff cmp r0, #255 ; 0xff
7c0: 1afffffc bne 7b8 <mmc_write_sector+0xe4>
7c4: e59f201c ldr r2, [pc, #28] ; 7e8 <.text+0x7e8>
7c8: e5923000 ldr r3, [r2]
7cc: e3833b01 orr r3, r3, #1024 ; 0x400
7d0: e5823000 str r3, [r2]
7d4: e3a00000 mov r0, #0 ; 0x0
7d8: e28dd008 add sp, sp, #8 ; 0x8
7dc: e8bd8070 ldmia sp!, {r4, r5, r6, pc}
7e0: 00001962 andeq r1, r0, r2, ror #18
7e4: e0020000 and r0, r2, r0
7e8: e0028000 and r8, r2, r0
000007ec <Load_FAT>:
void Load_FAT ( unsigned short int Cluster, //Angabe Startcluster
unsigned long *Block,
unsigned char *TMP_Buffer) //Workingbuffer
//############################################################################
{
7ec: e1a00800 mov r0, r0, lsl #16
7f0: e3a0c000 mov ip, #0 ; 0x0
7f4: e92d41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
7f8: e1a08001 mov r8, r1
7fc: e1a06002 mov r6, r2
800: e1a05820 mov r5, r0, lsr #16
804: e1a0700c mov r7, ip
//Zum 躡erpr黤en ob der FAT Block schon geladen wurde
unsigned short int FAT_Block_Store = 0;
//Byte Adresse innerhalb des Fat Blocks
unsigned short int FAT_Byte_Addresse;
//FAT Block Adresse
unsigned short int FAT_Block_Addresse;
//Berechnung f黵 den ersten FAT Block (FAT Start Addresse)
for (unsigned short int a = 0;;a++)
{
if (a == *Block)
808: e5982000 ldr r2, [r8]
80c: e1a03807 mov r3, r7, lsl #16
810: e1520823 cmp r2, r3, lsr #16
{
*Block = (0x0000FFFF & Cluster);
return;
}
if (Cluster == 0xFFFF)
{
break; //Ist das Ende des Files erreicht Schleife beenden
}
//Berechnung des Bytes innerhalb des FAT Block磗
FAT_Byte_Addresse = (Cluster*2) % BlockSize;
//Berechnung des Blocks der gelesen werden mu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -