sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:353
353 sd_mmc_card->type = CARD_TYPE_SD;
sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:353
353 sd_mmc_card->type = CARD_TYPE_SD;
sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:353
353 sd_mmc_card->type = CARD_TYPE_SD;
/home/toolsbuild/workspace/arm-gnu-toolchain/gcc-arm-none-eabi-6-2017-q2-update/src/gdb/gdb/inline-frame.c:167: internal-error: void inline_frame_this_id(frame_info*, void**, frame_id*): Assertion `frame_id_p (*this_id)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) [answered Y; input not from terminal]
This is a bug, please report it. For instructions, see:
.
/home/toolsbuild/workspace/arm-gnu-toolchain/gcc-arm-none-eabi-6-2017-q2-update/src/gdb/gdb/inline-frame.c:167: internal-error: void inline_frame_this_id(frame_info*, void**, frame_id*): Assertion `frame_id_p (*this_id)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) [answered Y; input not from terminal]
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
[36m───[0m [1;33mAssembly[0m [36m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;32m0x00000aa0[0m[1;32m [0m[1;32m[0m[1;32m?[0m[1;32m ldr r3, [pc, #580] ; (0xce8)[0m
[1;30m0x00000aa2[0m [1;30m?[0m ldr r4, [pc, #584] ; (0xcec)
[1;30m0x00000aa4[0m [1;30m?[0m ldr.w r2, [r3, #128] ; 0x80
[1;30m0x00000aa8[0m [1;30m?[0m ldr r7, [pc, #580] ; (0xcf0)
[1;30m0x00000aaa[0m [1;30m?[0m ldr r6, [pc, #584] ; (0xcf4)
[1;30m0x00000aac[0m [1;30m?[0m orr.w r2, r2, #268435456 ; 0x10000000
[1;30m0x00000ab0[0m [1;30m?[0m str.w r2, [r3, #128] ; 0x80
[1;30m0x00000ab4[0m [1;30m?[0m ldr.w r2, [r3, #144] ; 0x90
[1;30m0x00000ab8[0m [1;30m?[0m orr.w r2, r2, #268435456 ; 0x10000000
[1;30m0x00000abc[0m [1;30m?[0m str.w r2, [r3, #144] ; 0x90
[36m───[0m [33mBreakpoints[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mExpressions[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mHistory[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mMemory[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mRegisters[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30mr0[0m [1;32m0x00000001[0m [1;30mr1[0m [1;32m0x00000000[0m [1;30mr2[0m [1;32m0x41008000[0m [1;30mr3[0m [1;32m0x0000090d[0m [1;30mr4[0m [1;32m0x00000003[0m [1;30mr5[0m [1;32m0x00000a85[0m [1;30mr6[0m [1;32m0x20010408[0m [1;30mr7[0m [1;32m0x00000036[0m
[1;30mr8[0m [1;32m0x00000001[0m [1;30mr9[0m [1;32m0x00003c63[0m [1;30mr10[0m [1;32m0x00000000[0m [1;30mr11[0m [1;32m0xfffbf5e7[0m [1;30mr12[0m [1;32m0x0000000a[0m [1;30msp[0m [1;32m0x20010580[0m [1;30mlr[0m [1;32m0x00000901[0m [1;30mpc[0m [1;32m0x00000aa0[0m
[1;30mxPSR[0m [1;32m0x61000000[0m
[36m───[0m [33mSource[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mStack[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m0[0m] from [1;32m0x00000aa0[0m
[[32m1[0m] from [32m0x00000900[0m
[36m───[0m [1;33mThreads[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] id [1;32m0[0m from [1;32m0x00000aa0[0m
[36m───[0m [33mVariables[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
0x00000aa0 in ?? ()
scripts/debug.gdb:5: Error in sourced command file:
No executable file specified.
Use the "file" or "exec-file" command.
Cannot find bounds of current function
Starting program:
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
[H[J[3J[36m───[0m [1;33mOutput/messages[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
Program stopped.
[36m───[0m [1;33mAssembly[0m [36m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;32m0x00003ec4[0m[1;32m [0m[1;32m[0m[1;32m?[0m[1;32m ldr r1, [pc, #96] ; (0x3f28)[0m
[1;30m0x00003ec6[0m [1;30m?[0m ldr r0, [pc, #100] ; (0x3f2c)
[1;30m0x00003ec8[0m [1;30m?[0m cmp r1, r0
[1;30m0x00003eca[0m [1;30m?[0m push {r4, lr}
[1;30m0x00003ecc[0m [1;30m?[0m beq.n 0x3ee4
[1;30m0x00003ece[0m [1;30m?[0m ldr r3, [pc, #96] ; (0x3f30)
[1;30m0x00003ed0[0m [1;30m?[0m adds r2, r3, #3
[1;30m0x00003ed2[0m [1;30m?[0m subs r2, r2, r0
[1;30m0x00003ed4[0m [1;30m?[0m bic.w r2, r2, #3
[1;30m0x00003ed8[0m [1;30m?[0m subs r4, r0, #3
[36m───[0m [33mBreakpoints[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mExpressions[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mHistory[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mMemory[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mRegisters[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30mr0[0m [m0x00000001[0m [1;30mr1[0m [m0x00000000[0m [1;30mr2[0m [m0x41008000[0m [1;30mr3[0m [m0x0000090d[0m [1;30mr4[0m [m0x00000003[0m [1;30mr5[0m [m0x00000a85[0m [1;30mr6[0m [m0x20010408[0m [1;30mr7[0m [m0x00000036[0m
[1;30mr8[0m [m0x00000001[0m [1;30mr9[0m [m0x00003c63[0m [1;30mr10[0m [m0x00000000[0m [1;30mr11[0m [m0xfffbf5e7[0m [1;30mr12[0m [m0x0000000a[0m [1;30msp[0m [1;32m0x200105e0[0m [1;30mlr[0m [1;32m0xffffffff[0m [1;30mpc[0m [1;32m0x00003ec4[0m
[1;30mxPSR[0m [1;32m0x01000000[0m
[36m───[0m [33mSource[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mStack[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m0[0m] from [1;32m0x00003ec4[0m
[[32m1[0m] from [32m0xfffffffe[0m
[36m───[0m [1;33mThreads[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] id [1;32m0[0m from [1;32m0x00003ec4[0m
[36m───[0m [33mVariables[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
0x00003ec4 in ?? ()
Continuing.
[H[J[3J[36m───[0m [1;33mOutput/messages[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
target not halted
target samd51p20a.cpu was not halted when resume was requested
Program received signal SIGINT, Interrupt.
[36m───[0m [1;33mAssembly[0m [36m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;32m0x00002a90[0m[1;32m [0m[1;32m[0m[1;32m?[0m[1;32m mov r0, r4[0m
[1;30m0x00002a92[0m [1;30m?[0m blx r6
[1;30m0x00002a94[0m [1;30m?[0m cmp r0, #0
[1;30m0x00002a96[0m [1;30m?[0m beq.n 0x2a90
[1;30m0x00002a98[0m [1;30m?[0m mov r0, r5
[1;30m0x00002a9a[0m [1;30m?[0m ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
[1;30m0x00002a9e[0m [1;30m?[0m mov r0, r1
[1;30m0x00002aa0[0m [1;30m?[0m b.n 0x2a58
[1;30m0x00002aa2[0m [1;30m?[0m nop
[1;30m0x00002aa4[0m [1;30m?[0m ldr r7, [pc, #236] ; (0x2b94)
[36m───[0m [33mBreakpoints[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mExpressions[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mHistory[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mMemory[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mRegisters[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30mr0[0m [1;32m0x00000000[0m [1;30mr1[0m [1;32m0x0000000a[0m [1;30mr2[0m [1;32m0x000000f1[0m [1;30mr3[0m [1;32m0x43000000[0m [1;30mr4[0m [1;32m0x2000058c[0m [1;30mr5[0m [1;32m0x0000003b[0m [1;30mr6[0m [1;32m0x00003c6d[0m [1;30mr7[0m [1;32m0x0000003b[0m
[1;30mr8[0m [1;32m0x00003c55[0m [1;30mr9[0m [m0x00003c63[0m [1;30mr10[0m [m0x00000000[0m [1;30mr11[0m [m0xfffbf5e7[0m [1;30mr12[0m [m0x0000000a[0m [1;30msp[0m [1;32m0x200103e0[0m [1;30mlr[0m [1;32m0x00002a95[0m [1;30mpc[0m [1;32m0x00002a90[0m
[1;30mxPSR[0m [1;32m0x61000000[0m
[36m───[0m [33mSource[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mStack[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m0[0m] from [1;32m0x00002a90[0m
[[32m1[0m] from [32m0x00002a94[0m
[36m───[0m [1;33mThreads[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] id [1;32m0[0m from [1;32m0x00002a90[0m
[36m───[0m [33mVariables[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
0x00002a90 in ?? ()
Cannot find bounds of current function
Starting program:
warning: No executable has been specified and target does not support
determining executable automatically. Try using the "file" command.
[H[J[3J[36m───[0m [1;33mOutput/messages[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
Program stopped.
[36m───[0m [1;33mAssembly[0m [36m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;32m0x00003ec4[0m[1;32m [0m[1;32m[0m[1;32m?[0m[1;32m ldr r1, [pc, #96] ; (0x3f28)[0m
[1;30m0x00003ec6[0m [1;30m?[0m ldr r0, [pc, #100] ; (0x3f2c)
[1;30m0x00003ec8[0m [1;30m?[0m cmp r1, r0
[1;30m0x00003eca[0m [1;30m?[0m push {r4, lr}
[1;30m0x00003ecc[0m [1;30m?[0m beq.n 0x3ee4
[1;30m0x00003ece[0m [1;30m?[0m ldr r3, [pc, #96] ; (0x3f30)
[1;30m0x00003ed0[0m [1;30m?[0m adds r2, r3, #3
[1;30m0x00003ed2[0m [1;30m?[0m subs r2, r2, r0
[1;30m0x00003ed4[0m [1;30m?[0m bic.w r2, r2, #3
[1;30m0x00003ed8[0m [1;30m?[0m subs r4, r0, #3
[36m───[0m [33mBreakpoints[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mExpressions[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mHistory[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mMemory[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mRegisters[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30mr0[0m [m0x00000000[0m [1;30mr1[0m [m0x0000000a[0m [1;30mr2[0m [m0x000000f1[0m [1;30mr3[0m [m0x43000000[0m [1;30mr4[0m [m0x2000058c[0m [1;30mr5[0m [m0x0000003b[0m [1;30mr6[0m [m0x00003c6d[0m [1;30mr7[0m [m0x0000003b[0m
[1;30mr8[0m [m0x00003c55[0m [1;30mr9[0m [m0x00003c63[0m [1;30mr10[0m [m0x00000000[0m [1;30mr11[0m [m0xfffbf5e7[0m [1;30mr12[0m [m0x0000000a[0m [1;30msp[0m [1;32m0x200105e0[0m [1;30mlr[0m [1;32m0xffffffff[0m [1;30mpc[0m [1;32m0x00003ec4[0m
[1;30mxPSR[0m [1;32m0x01000000[0m
[36m───[0m [33mSource[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mStack[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m0[0m] from [1;32m0x00003ec4[0m
[[32m1[0m] from [32m0xfffffffe[0m
[36m───[0m [1;33mThreads[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] id [1;32m0[0m from [1;32m0x00003ec4[0m
[36m───[0m [33mVariables[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
0x00003ec4 in ?? ()
No symbol table is loaded. Use the "file" command.
Breakpoint 1 (main) pending.
m4-metro.elf: No such file or directory.
m4_metro.elf: No such file or directory.
Reading symbols from metro-m4.elf...done.
Loading section .text, size 0x50cc lma 0x0
Loading section .relocate, size 0x74 lma 0x50cc
Start address 0x0, load size 20800
Transfer rate: 28 KB/sec, 6933 bytes/write.
Note: breakpoint 1 also set at pc 0x34ec.
Breakpoint 2 at 0x34ec: file ../main.c, line 8.
Starting program: /storage/Shared/Documents/Projects/ePenguin/e54-GFX-Development-Board/software/Adafruit_Metro_M4_Grand_Central_Firmware/build/metro-m4.elf
[H[J[3J[36m───[0m [1;33mOutput/messages[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
Note: automatically using hardware breakpoints for read-only addresses.
[36m───[0m [1;33mAssembly[0m [36m────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30m~[0m
[1;30m~[0m
[1;30m~[0m
[1;30m~[0m
[1;30m~[0m
[0;41m![0m[1;32m0x000034ec[0m[1;32m [0m[1;32m[0m[1;32mmain+0[0m[1;32m push {r3, lr}[0m
[32m0x000034ee[0m[32m [0m[32m[0m[32mmain+2[0m[32m ldr r3, [pc, #52] ; (0x3524 )[0m
[32m0x000034f0[0m[32m [0m[32m[0m[32mmain+4[0m[32m blx r3[0m
[1;30m0x000034f2[0m [1;30mmain+6[0m ldr r3, [pc, #52] ; (0x3528 )
[1;30m0x000034f4[0m [1;30mmain+8[0m blx r3
[36m───[0m [1;33mBreakpoints[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] [1;32mbreak[0m at [1;32m0x000034ec[0m in [1;32m../main.c[0m:[1;32m8[0m for [1;32mmain[0m hit [1;32m1[0m time
[[1;32m2[0m] [1;32mbreak[0m at [1;32m0x000034ec[0m in [1;32m../main.c[0m:[1;32m8[0m for [1;32mmain[0m hit [1;32m1[0m time
[36m───[0m [33mExpressions[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mHistory[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [33mMemory[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m───[0m [1;33mRegisters[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30mr0[0m [1;32m0x20000078[0m [1;30mr1[0m [1;32m0x00000000[0m [1;30mr2[0m [1;32m0x00f00000[0m [1;30mr3[0m [1;32m0x000034ed[0m [1;30mr4[0m [1;32m0x1ffffffd[0m [1;30mr5[0m [1;32m0x00000017[0m [1;30mr6[0m [1;32m0x20010460[0m [1;30mr7[0m [1;32m0x00000003[0m
[1;30mr8[0m [1;32m0x00003c39[0m [1;30mr9[0m [1;32m0x00003c47[0m [1;30mr10[0m [m0x00000000[0m [1;30mr11[0m [m0xfffbf5e7[0m [1;30mr12[0m [m0x0000000a[0m [1;30msp[0m [1;32m0x200105d8[0m [1;30mlr[0m [1;32m0x00003f09[0m [1;30mpc[0m [1;32m0x000034ec[0m
[1;30mxPSR[0m [1;32m0x61000000[0m
[36m───[0m [1;33mSource[0m [36m──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[1;30m~[0m
[1;30m~[0m
[1;30m~[0m
[1;30m 1[0m #include "examples/driver_examples.h"
[1;30m 2[0m #include
[1;30m 3[0m #include "sd_mmc_start.h"
[1;30m 4[0m #include "pdebug.h"
[1;30m 5[0m int main(void)
[1;30m 6[0m {
[1;30m 7[0m /* Initializes MCU, drivers and middleware */
[0;41m![0m[1;32m 8 atmel_start_init();[0m
[1;30m 9[0m
[1;30m10[0m pdebug_init();
[1;30m11[0m PORT->Group[1].DIR.reg |= (1 << 28);
[1;30m12[0m PORT->Group[1].OUT.reg |= (1 << 28);
[1;30m13[0m
[1;30m14[0m PORT->Group[1].OUT.reg &= ~(1 << 28);
[1;30m15[0m SDMMC_example();
[1;30m16[0m
[1;30m17[0m
[36m───[0m [1;33mStack[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m0[0m] from [1;32m0x000034ec[0m in [1;32mmain[0m+[1;32m0[0m at [1;32m../main.c[0m:[1;32m8[0m
[36m───[0m [1;33mThreads[0m [36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[[1;32m1[0m] id [1;32m0[0m from [1;32m0x000034ec[0m in [1;32mmain[0m+[1;32m0[0m at [1;32m../main.c[0m:[1;32m8[0m
[36m───[0m [33mVariables[0m [36m───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
[36m─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────[0m
Breakpoint 1, main () at ../main.c:8
8 atmel_start_init();
Detaching from program: /storage/Shared/Documents/Projects/ePenguin/e54-GFX-Development-Board/software/Adafruit_Metro_M4_Grand_Central_Firmware/build/metro-m4.elf, Remote target
main () at ../main.c:8
8 atmel_start_init();
─── Assembly ───────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000034ec main+0 push {r3, lr}
0x000034ee main+2 ldr r3, [pc, #52] ; (0x3524 )
0x000034f0 main+4 blx r3
0x000034f2 main+6 ldr r3, [pc, #52] ; (0x3528 )
0x000034f4 main+8 blx r3
─── Breakpoints ────────────────────────────────────────────────────────────────
─── Expressions ────────────────────────────────────────────────────────────────
─── History ────────────────────────────────────────────────────────────────────
─── Memory ─────────────────────────────────────────────────────────────────────
─── Registers ──────────────────────────────────────────────────────────────────
r0 0x20000078 r1 0x00000000 r2 0x00f00000
r3 0x000034ed r4 0x1ffffffd r5 0x00000017
r6 0x20010460 r7 0x00000003 r8 0x00003c39
r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x0000000a sp 0x200105d8 lr 0x00003f09
pc 0x000034ec xPSR 0x61000000 fpscr 0x00000000
msp 0x200105d8 psp 0xfffeefec primask 0x00
basepri 0x00 faultmask 0x00 control 0x00
─── Source ─────────────────────────────────────────────────────────────────────
~
~
~
1 #include "examples/driver_examples.h"
2 #include
3 #include "sd_mmc_start.h"
4 #include "pdebug.h"
5 int main(void)
6 {
7 /* Initializes MCU, drivers and middleware */
8 atmel_start_init();
9
10 pdebug_init();
11 PORT->Group[1].DIR.reg |= (1 << 28);
12 PORT->Group[1].OUT.reg |= (1 << 28);
13
14 PORT->Group[1].OUT.reg &= ~(1 << 28);
15 SDMMC_example();
16
17
─── Stack ──────────────────────────────────────────────────────────────────────
[0] from 0x000034ec in main+0 at ../main.c:8
─── Threads ────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000034ec in main+0 at ../main.c:8
─── Variables ──────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────
Loading section .text, size 0x50cc lma 0x0
Loading section .relocate, size 0x74 lma 0x50cc
Start address 0x00000000, load size 20800
Transfer rate: 28 KB/sec, 6933 bytes/write.
A debugging session is active.
Inferior 1 [Remote target] will be detached.
Quit anyway? (y or n) [answered Y; input not from terminal]
[Inferior 1 (Remote target) detached]
usart_sync_write (io_descr=0x20000584 , buf=0x20010408 "spi_m_sync_adtc_start: cmd 00, arg 0x00000000, R1 timeout\r\n", length=) at ../hal/src/hal_usart_sync.c:246
246 while (!_usart_sync_is_ready_to_send(&descr->device))
─── Assembly ───────────────────────────────────────────────────────────────────
0x00002a52 usart_sync_write+42 ldr.w r8, [pc, #68] ; 0x2a98
0x00002a56 usart_sync_write+46 movs r7, #0
0x00002a58 usart_sync_write+48 ldrb r1, [r6, r7]
0x00002a5a usart_sync_write+50 mov r0, r4
0x00002a5c usart_sync_write+52 blx r8
0x00002a5e usart_sync_write+54 mov r0, r4
0x00002a60 usart_sync_write+56 blx r9
0x00002a62 usart_sync_write+58 cmp r0, #0
0x00002a64 usart_sync_write+60 beq.n 0x2a5e
0x00002a66 usart_sync_write+62 adds r7, #1
─── Breakpoints ────────────────────────────────────────────────────────────────
─── Expressions ────────────────────────────────────────────────────────────────
─── History ────────────────────────────────────────────────────────────────────
─── Memory ─────────────────────────────────────────────────────────────────────
─── Registers ──────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000002c r2 0x000000f1
r3 0x43000000 r4 0x2000058c r5 0x0000003b
r6 0x20010408 r7 0x0000002d r8 0x00003c39
r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x0000000a sp 0x200103e0 lr 0x00002a63
pc 0x00002a5e xPSR 0x61000000 fpscr 0x00000000
msp 0x200103e0 psp 0xfffeefec primask 0x00
basepri 0x00 faultmask 0x00 control 0x00
─── Source ─────────────────────────────────────────────────────────────────────
236 static int32_t usart_sync_write(struct io_descriptor *const io_descr, const uint8_t *const buf, const uint16_t length)
237 {
238 uint32_t offset = 0;
239 struct usart_sync_descriptor *descr = CONTAINER_OF(io_descr, struct usart_sync_descriptor, io);
240
241 ASSERT(io_descr && buf && length);
242 while (!_usart_sync_is_ready_to_send(&descr->device))
243 ;
244 do {
245 _usart_sync_write_byte(&descr->device, buf[offset]);
246 while (!_usart_sync_is_ready_to_send(&descr->device))
247 ;
248 } while (++offset < length);
249 while (!_usart_sync_is_transmit_done(&descr->device))
250 ;
251 return (int32_t)offset;
252 }
253
254 /*
255 * \internal Read data from usart interface
─── Stack ──────────────────────────────────────────────────────────────────────
[0] from 0x00002a5e in usart_sync_write+54 at ../hal/src/hal_usart_sync.c:246
[1] from 0x00003f9a in pprintf+58 at ../shared/util/pdebug.c:32
[2] from 0x000012aa in spi_m_sync_adtc_start+186 at ../sd_mmc/sd_mmc_spi.c:308
[3] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[4] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[5] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00002a5e in usart_sync_write+54 at ../hal/src/hal_usart_sync.c:246
─── Variables ──────────────────────────────────────────────────────────────────
arg io_descr = 0x20000584 : {write = 0x2a29 ,read = 0x2a9d
loc offset = 45, descr = 0x20000584 : {io = {write = 0x2a29 ,read = 0x2a9d ) at ../hpl/sercom/hpl_sercom.c:427
427 return hri_sercomusart_get_interrupt_DRE_bit(device->hw);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00003c46 _usart_sync_is_ready_to_send+0 ldr r3, [r0, #0]
0x00003c48 _usart_sync_is_ready_to_send+2 ldrb r0, [r3, #24]
0x00003c4a _usart_sync_is_ready_to_send+4 and.w r0, r0, #1
0x00003c4e _usart_sync_is_ready_to_send+8 bx lr
~
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000058c r1 0x00000074 r2 0x000000f1 r3 0x43000000 r4 0x2000058c r5 0x00000017
r6 0x20010460 r7 0x00000001 r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x0000000a sp 0x20010438 lr 0x00002a63 pc 0x00003c46 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010438 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
417 uint8_t _usart_sync_read_byte(const struct _usart_sync_device *const device)
418 {
419 return hri_sercomusart_read_DATA_reg(device->hw);
420 }
421
422 /**
423 * \brief Check if USART is ready to send next byte
424 */
425 bool _usart_sync_is_ready_to_send(const struct _usart_sync_device *const device)
426 {
427 return hri_sercomusart_get_interrupt_DRE_bit(device->hw);
428 }
429
430 /**
431 * \brief Check if USART transmission complete
432 */
433 bool _usart_sync_is_transmit_done(const struct _usart_sync_device *const device)
434 {
435 return hri_sercomusart_get_interrupt_TXC_bit(device->hw);
436 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003c46 in _usart_sync_is_ready_to_send+0 at ../hpl/sercom/hpl_sercom.c:427
[1] from 0x00002a62 in usart_sync_write+58 at ../hal/src/hal_usart_sync.c:246
[2] from 0x00003f9a in pprintf+58 at ../shared/util/pdebug.c:32
[3] from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:356
[4] from 0x00000ab4 in sd_mmc_check+48 at ../sd_mmc/sd_mmc.c:1633
[5] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[6] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003c46 in _usart_sync_is_ready_to_send+0 at ../hpl/sercom/hpl_sercom.c:427
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg device = 0x2000058c : {hw = 0x43000000}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Loading section .text, size 0x50cc lma 0x0
Loading section .relocate, size 0x74 lma 0x50cc
Start address 0x00000000, load size 20800
Transfer rate: 29 KB/sec, 6933 bytes/write.
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
Failed to write memory and, additionally, failed to find out where
Polling target samd51p20a.cpu failed, trying to reexamine
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
SWD DPIDR 0x2ba01477
Could not find MEM-AP to control the core
Examination failed, GDB will be halted. Polling again in 100ms
Breakpoint 1 at 0x3504: file ../main.c, line 12.
Note: automatically using hardware breakpoints for read-only addresses.
Starting program: /storage/Shared/Documents/Projects/ePenguin/e54-GFX-Development-Board/software/Adafruit_Metro_M4_Grand_Central_Firmware/build/metro-m4.elf
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Program stopped.
Reset_Handler () at ../samd51a/gcc/gcc/startup_samd51.c:638
638 if (pSrc != pDest) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00003ea8 Reset_Handler+0 ldr r1, [pc, #96] ; (0x3f0c )
0x00003eaa Reset_Handler+2 ldr r0, [pc, #100] ; (0x3f10 )
0x00003eac Reset_Handler+4 cmp r1, r0
0x00003eae Reset_Handler+6 push {r4, lr}
0x00003eb0 Reset_Handler+8 beq.n 0x3ec8
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x00000069 r2 0x000000f1 r3 0x43000000 r4 0x2000058c r5 0x00000017
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x0000000a sp 0x200105e0 lr 0xffffffff pc 0x00003ea8 xPSR 0x01000000 fpscr 0x00000000
msp 0x200105e0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
628 * To initialize the device, and call the main() routine.
629 */
630 void Reset_Handler(void)
631 {
632 uint32_t *pSrc, *pDest;
633
634 /* Initialize the relocate segment */
635 pSrc = &_etext;
636 pDest = &_srelocate;
637
638 if (pSrc != pDest) {
639 for (; pDest < &_erelocate;) {
640 *pDest++ = *pSrc++;
641 }
642 }
643
644 /* Clear the zero segment */
645 for (pDest = &_szero; pDest < &_ezero;) {
646 *pDest++ = 0;
647 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003ea8 in Reset_Handler+0 at ../samd51a/gcc/gcc/startup_samd51.c:638
[1] from 0xfffffffe
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003ea8 in Reset_Handler+0 at ../samd51a/gcc/gcc/startup_samd51.c:638
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Breakpoint 1, main () at ../main.c:12
12 PORT->Group[1].OUT.reg |= (1 << 28);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000034f4 main+8 blx r3
0x000034f6 main+10 ldr r3, [pc, #52] ; (0x352c )
0x000034f8 main+12 ldr.w r2, [r3, #128] ; 0x80
0x000034fc main+16 orr.w r2, r2, #268435456 ; 0x10000000
0x00003500 main+20 str.w r2, [r3, #128] ; 0x80
!0x00003504 main+24 ldr.w r2, [r3, #144] ; 0x90
0x00003508 main+28 orr.w r2, r2, #268435456 ; 0x10000000
0x0000350c main+32 str.w r2, [r3, #144] ; 0x90
0x00003510 main+36 ldr.w r2, [r3, #144] ; 0x90
0x00003514 main+40 bic.w r2, r2, #268435456 ; 0x10000000
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x1c3c0000 r3 0x41008000 r4 0x1ffffffd r5 0x00000017
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x200105d0 lr 0x00003fd9 pc 0x00003504 xPSR 0x61000000 fpscr 0x00000000
msp 0x200105d0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2 #include
3 #include "sd_mmc_start.h"
4 #include "pdebug.h"
5 int main(void)
6 {
7 /* Initializes MCU, drivers and middleware */
8 atmel_start_init();
9
10 pdebug_init();
11 PORT->Group[1].DIR.reg |= (1 << 28);
!12 PORT->Group[1].OUT.reg |= (1 << 28);
13
14 PORT->Group[1].OUT.reg &= ~(1 << 28);
15 SDMMC_example();
16
17
18 /* Replace with your application code */
19 while (1) {
20
21 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003504 in main+24 at ../main.c:12
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003504 in main+24 at ../main.c:12
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
14 PORT->Group[1].OUT.reg &= ~(1 << 28);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000034fc main+16 orr.w r2, r2, #268435456 ; 0x10000000
0x00003500 main+20 str.w r2, [r3, #128] ; 0x80
!0x00003504 main+24 ldr.w r2, [r3, #144] ; 0x90
0x00003508 main+28 orr.w r2, r2, #268435456 ; 0x10000000
0x0000350c main+32 str.w r2, [r3, #144] ; 0x90
0x00003510 main+36 ldr.w r2, [r3, #144] ; 0x90
0x00003514 main+40 bic.w r2, r2, #268435456 ; 0x10000000
0x00003518 main+44 str.w r2, [r3, #144] ; 0x90
0x0000351c main+48 ldr r3, [pc, #16] ; (0x3530 )
0x0000351e main+50 blx r3
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x10000000 r3 0x41008000 r4 0x1ffffffd r5 0x00000017
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x200105d0 lr 0x00003fd9 pc 0x00003510 xPSR 0x61000000 fpscr 0x00000000
msp 0x200105d0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
4 #include "pdebug.h"
5 int main(void)
6 {
7 /* Initializes MCU, drivers and middleware */
8 atmel_start_init();
9
10 pdebug_init();
11 PORT->Group[1].DIR.reg |= (1 << 28);
!12 PORT->Group[1].OUT.reg |= (1 << 28);
13
14 PORT->Group[1].OUT.reg &= ~(1 << 28);
15 SDMMC_example();
16
17
18 /* Replace with your application code */
19 while (1) {
20
21 }
22 }
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003510 in main+36 at ../main.c:14
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003510 in main+36 at ../main.c:14
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
15 SDMMC_example();
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00003508 main+28 orr.w r2, r2, #268435456 ; 0x10000000
0x0000350c main+32 str.w r2, [r3, #144] ; 0x90
0x00003510 main+36 ldr.w r2, [r3, #144] ; 0x90
0x00003514 main+40 bic.w r2, r2, #268435456 ; 0x10000000
0x00003518 main+44 str.w r2, [r3, #144] ; 0x90
0x0000351c main+48 ldr r3, [pc, #16] ; (0x3530 )
0x0000351e main+50 blx r3
0x00003520 main+52 b.n 0x3520
0x00003522 main+54 nop
0x00003524 main+56 subs r7, #57 ; 0x39
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x00000000 r3 0x41008000 r4 0x1ffffffd r5 0x00000017
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x200105d0 lr 0x00003fd9 pc 0x0000351c xPSR 0x61000000 fpscr 0x00000000
msp 0x200105d0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
5 int main(void)
6 {
7 /* Initializes MCU, drivers and middleware */
8 atmel_start_init();
9
10 pdebug_init();
11 PORT->Group[1].DIR.reg |= (1 << 28);
!12 PORT->Group[1].OUT.reg |= (1 << 28);
13
14 PORT->Group[1].OUT.reg &= ~(1 << 28);
15 SDMMC_example();
16
17
18 /* Replace with your application code */
19 while (1) {
20
21 }
22 }
~
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000351c in main+48 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000351c in main+48 at ../main.c:15
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SDMMC_example () at ../sd_mmc_start.c:33
33 while (SD_MMC_OK != sd_mmc_check(0)) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000007bc SDMMC_example+0 push {r4, r5, r6, lr}
0x000007be SDMMC_example+2 ldr r5, [pc, #48] ; (0x7f0 )
0x000007c0 SDMMC_example+4 movs r0, #0
0x000007c2 SDMMC_example+6 blx r5
0x000007c4 SDMMC_example+8 mov r4, r0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x00000000 r3 0x000007bd r4 0x1ffffffd r5 0x00000017
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x200105d0 lr 0x00003521 pc 0x000007bc xPSR 0x61000000 fpscr 0x00000000
msp 0x200105d0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
23 {-1, CONF_SD_MMC_0_WP_DETECT_VALUE},
24 };
25
26 static uint8_t sd_mmc_block[512];
27
28 /*
29 * Example
30 */
31 void SDMMC_example(void)
32 {
33 while (SD_MMC_OK != sd_mmc_check(0)) {
34 /* Wait card ready. */
35 }
36 if (sd_mmc_get_type(0) & (CARD_TYPE_SD | CARD_TYPE_MMC)) {
37 /* Read card block 0 */
38 sd_mmc_init_read_blocks(0, 0, 1);
39 sd_mmc_start_read_blocks(sd_mmc_block, 1);
40 sd_mmc_wait_end_of_read_blocks(false);
41 }
42 #if (CONF_SDIO_SUPPORT == 1)
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000007bc in SDMMC_example+0 at ../sd_mmc_start.c:33
[1] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000007bc in SDMMC_example+0 at ../sd_mmc_start.c:33
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_check (slot=slot@entry=0 '\000') at ../sd_mmc/sd_mmc.c:1616
1616 sd_mmc_err = sd_mmc_select_slot(slot);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00000a84 sd_mmc_check+0 stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr}
0x00000a88 sd_mmc_check+4 ldr r3, [pc, #572] ; (0xcc8 )
0x00000a8a sd_mmc_check+6 sub sp, #28
0x00000a8c sd_mmc_check+8 blx r3
0x00000a8e sd_mmc_check+10 cmp r0, #1
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x00000000 r3 0x000007bd r4 0x1ffffffd r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x200105c0 lr 0x000007c5 pc 0x00000a84 xPSR 0x61000000 fpscr 0x00000000
msp 0x200105c0 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1606
1607 uint8_t sd_mmc_nb_slot(void)
1608 {
1609 return CONF_SD_MMC_MEM_CNT;
1610 }
1611
1612 sd_mmc_err_t sd_mmc_check(uint8_t slot)
1613 {
1614 sd_mmc_err_t sd_mmc_err;
1615
1616 sd_mmc_err = sd_mmc_select_slot(slot);
1617 if (sd_mmc_err != SD_MMC_INIT_ONGOING) {
1618 sd_mmc_deselect_slot();
1619 return sd_mmc_err;
1620 }
1621
1622 // SPI MODE
1623 /*
1624 // Initialization of the card requested
1625 if (sd_mmc_mci_card_init()) {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000a84 in sd_mmc_check+0 at ../sd_mmc/sd_mmc.c:1616
[1] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[2] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000a84 in sd_mmc_check+0 at ../sd_mmc/sd_mmc.c:1616
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot = 0 '\000'
loc sd_mmc_err =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_select_slot (slot=0 '\000') at ../sd_mmc/sd_mmc.c:1276
1276 if (slot >= CONF_SD_MMC_MEM_CNT) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x0000090c sd_mmc_select_slot+0 push {r3, r4, r5, lr}
0x0000090e sd_mmc_select_slot+2 cmp r0, #0
0x00000910 sd_mmc_select_slot+4 bne.n 0x99a
0x00000912 sd_mmc_select_slot+6 ldr r4, [pc, #140] ; (0x9a0 )
0x00000914 sd_mmc_select_slot+8 ldr r3, [r4, #12]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x00000000 r3 0x0000090d r4 0x1ffffffd r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000a8f pc 0x0000090c xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1266 * \param slot Card slot number
1267 *
1268 * \retval SD_MMC_ERR_SLOT Wrong slot number
1269 * \retval SD_MMC_ERR_NO_CARD No card present on slot
1270 * \retval SD_MMC_ERR_UNUSABLE Unusable card
1271 * \retval SD_MMC_INIT_ONGOING Card initialization requested
1272 * \retval SD_MMC_OK Card present
1273 */
1274 static sd_mmc_err_t sd_mmc_select_slot(uint8_t slot)
1275 {
1276 if (slot >= CONF_SD_MMC_MEM_CNT) {
1277 return SD_MMC_ERR_SLOT;
1278 }
1279
1280 if (_cd && _cd[slot].pin != -1) {
1281 /** Card Detect pins */
1282 if (gpio_get_pin_level(_cd[slot].pin) != _cd[slot].val) {
1283 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1284 SD_MMC_STOP_TIMEOUT();
1285 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000090c in sd_mmc_select_slot+0 at ../sd_mmc/sd_mmc.c:1276
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000090c in sd_mmc_select_slot+0 at ../sd_mmc/sd_mmc.c:1276
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot = 0 '\000'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1280 if (_cd && _cd[slot].pin != -1) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
0x0000090c sd_mmc_select_slot+0 push {r3, r4, r5, lr}
0x0000090e sd_mmc_select_slot+2 cmp r0, #0
0x00000910 sd_mmc_select_slot+4 bne.n 0x99a
0x00000912 sd_mmc_select_slot+6 ldr r4, [pc, #140] ; (0x9a0 )
0x00000914 sd_mmc_select_slot+8 ldr r3, [r4, #12]
0x00000916 sd_mmc_select_slot+10 cmp r3, #0
0x00000918 sd_mmc_select_slot+12 beq.n 0x98c
0x0000091a sd_mmc_select_slot+14 ldrsh.w r0, [r3]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x0000000a r2 0x00000000 r3 0x0000090d r4 0x1ffffffd r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x00000912 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1270 * \retval SD_MMC_ERR_UNUSABLE Unusable card
1271 * \retval SD_MMC_INIT_ONGOING Card initialization requested
1272 * \retval SD_MMC_OK Card present
1273 */
1274 static sd_mmc_err_t sd_mmc_select_slot(uint8_t slot)
1275 {
1276 if (slot >= CONF_SD_MMC_MEM_CNT) {
1277 return SD_MMC_ERR_SLOT;
1278 }
1279
1280 if (_cd && _cd[slot].pin != -1) {
1281 /** Card Detect pins */
1282 if (gpio_get_pin_level(_cd[slot].pin) != _cd[slot].val) {
1283 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1284 SD_MMC_STOP_TIMEOUT();
1285 }
1286 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_NO_CARD;
1287 return SD_MMC_ERR_NO_CARD;
1288 }
1289 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD) {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000912 in sd_mmc_select_slot+6 at ../sd_mmc/sd_mmc.c:1280
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000912 in sd_mmc_select_slot+6 at ../sd_mmc/sd_mmc.c:1280
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot = 0 '\000'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1313 if ((sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000982 sd_mmc_select_slot+118 adcs r0, r3
0x00000984 sd_mmc_select_slot+120 b.n 0x936
0x00000986 sd_mmc_select_slot+122 cmp r0, #3
0x00000988 sd_mmc_select_slot+124 bne.n 0x958
0x0000098a sd_mmc_select_slot+126 b.n 0x936
0x0000098c sd_mmc_select_slot+128 ldrb r3, [r4, #26]
0x0000098e sd_mmc_select_slot+130 subs r3, #3
0x00000990 sd_mmc_select_slot+132 cmp r3, #1
0x00000992 sd_mmc_select_slot+134 bhi.n 0x958
0x00000994 sd_mmc_select_slot+136 b.n 0x946
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x2000000c r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x0000098c xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1303 /* Set 1-bit bus width and low clock for initialization */
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1305 sd_mmc_cards[slot].bus_width = 1;
1306 sd_mmc_cards[slot].high_speed = 0;
1307 }
1308 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE) {
1309 return SD_MMC_ERR_UNUSABLE;
1310 }
1311 } else {
1312 /* No pin card detection, then always try to install it */
1313 if ((sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD)
1314 || (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE)) {
1315 /* Card is not initialized */
1316 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1317 /* Set 1-bit bus width and low clock for initialization */
1318 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1319 sd_mmc_cards[slot].bus_width = 1;
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000098c in sd_mmc_select_slot+128 at ../sd_mmc/sd_mmc.c:1313
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000098c in sd_mmc_select_slot+128 at ../sd_mmc/sd_mmc.c:1313
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1302 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000093c sd_mmc_select_slot+48 bne.n 0x942
0x0000093e sd_mmc_select_slot+50 movs r3, #1
0x00000940 sd_mmc_select_slot+52 b.n 0x932
0x00000942 sd_mmc_select_slot+54 cmp r0, #1
0x00000944 sd_mmc_select_slot+56 bne.n 0x986
0x00000946 sd_mmc_select_slot+58 movs r3, #2
0x00000948 sd_mmc_select_slot+60 strb r3, [r4, #26]
0x0000094a sd_mmc_select_slot+62 ldr r3, [pc, #92] ; (0x9a8 )
0x0000094c sd_mmc_select_slot+64 str r3, [r4, #16]
0x0000094e sd_mmc_select_slot+66 movs r3, #1
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x00000001 r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x00000946 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1292 /* Debounce + Power On Setup */
1293 SD_MMC_START_TIMEOUT();
1294 return SD_MMC_ERR_NO_CARD;
1295 }
1296 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1297 if (!SD_MMC_IS_TIMEOUT()) {
1298 /* Debounce on going */
1299 return SD_MMC_ERR_NO_CARD;
1300 }
1301 /* Card is not initialized */
1302 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1303 /* Set 1-bit bus width and low clock for initialization */
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1305 sd_mmc_cards[slot].bus_width = 1;
1306 sd_mmc_cards[slot].high_speed = 0;
1307 }
1308 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE) {
1309 return SD_MMC_ERR_UNUSABLE;
1310 }
1311 } else {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000946 in sd_mmc_select_slot+58 at ../sd_mmc/sd_mmc.c:1302
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000946 in sd_mmc_select_slot+58 at ../sd_mmc/sd_mmc.c:1302
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000940 sd_mmc_select_slot+52 b.n 0x932
0x00000942 sd_mmc_select_slot+54 cmp r0, #1
0x00000944 sd_mmc_select_slot+56 bne.n 0x986
0x00000946 sd_mmc_select_slot+58 movs r3, #2
0x00000948 sd_mmc_select_slot+60 strb r3, [r4, #26]
0x0000094a sd_mmc_select_slot+62 ldr r3, [pc, #92] ; (0x9a8 )
0x0000094c sd_mmc_select_slot+64 str r3, [r4, #16]
0x0000094e sd_mmc_select_slot+66 movs r3, #1
0x00000950 sd_mmc_select_slot+68 strb r3, [r4, #29]
0x00000952 sd_mmc_select_slot+70 movs r3, #0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x00000002 r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x0000094a xPSR 0x21000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1294 return SD_MMC_ERR_NO_CARD;
1295 }
1296 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1297 if (!SD_MMC_IS_TIMEOUT()) {
1298 /* Debounce on going */
1299 return SD_MMC_ERR_NO_CARD;
1300 }
1301 /* Card is not initialized */
1302 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1303 /* Set 1-bit bus width and low clock for initialization */
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1305 sd_mmc_cards[slot].bus_width = 1;
1306 sd_mmc_cards[slot].high_speed = 0;
1307 }
1308 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE) {
1309 return SD_MMC_ERR_UNUSABLE;
1310 }
1311 } else {
1312 /* No pin card detection, then always try to install it */
1313 if ((sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD)
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000094a in sd_mmc_select_slot+62 at ../sd_mmc/sd_mmc.c:1304
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000094a in sd_mmc_select_slot+62 at ../sd_mmc/sd_mmc.c:1304
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1305 sd_mmc_cards[slot].bus_width = 1;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000944 sd_mmc_select_slot+56 bne.n 0x986
0x00000946 sd_mmc_select_slot+58 movs r3, #2
0x00000948 sd_mmc_select_slot+60 strb r3, [r4, #26]
0x0000094a sd_mmc_select_slot+62 ldr r3, [pc, #92] ; (0x9a8 )
0x0000094c sd_mmc_select_slot+64 str r3, [r4, #16]
0x0000094e sd_mmc_select_slot+66 movs r3, #1
0x00000950 sd_mmc_select_slot+68 strb r3, [r4, #29]
0x00000952 sd_mmc_select_slot+70 movs r3, #0
0x00000954 sd_mmc_select_slot+72 strb.w r3, [r4, #46] ; 0x2e
0x00000958 sd_mmc_select_slot+76 ldrb r3, [r4, #4]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x00061a80 r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x0000094e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1295 }
1296 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1297 if (!SD_MMC_IS_TIMEOUT()) {
1298 /* Debounce on going */
1299 return SD_MMC_ERR_NO_CARD;
1300 }
1301 /* Card is not initialized */
1302 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1303 /* Set 1-bit bus width and low clock for initialization */
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1305 sd_mmc_cards[slot].bus_width = 1;
1306 sd_mmc_cards[slot].high_speed = 0;
1307 }
1308 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE) {
1309 return SD_MMC_ERR_UNUSABLE;
1310 }
1311 } else {
1312 /* No pin card detection, then always try to install it */
1313 if ((sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD)
1314 || (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE)) {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000094e in sd_mmc_select_slot+66 at ../sd_mmc/sd_mmc.c:1305
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000094e in sd_mmc_select_slot+66 at ../sd_mmc/sd_mmc.c:1305
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1306 sd_mmc_cards[slot].high_speed = 0;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000948 sd_mmc_select_slot+60 strb r3, [r4, #26]
0x0000094a sd_mmc_select_slot+62 ldr r3, [pc, #92] ; (0x9a8 )
0x0000094c sd_mmc_select_slot+64 str r3, [r4, #16]
0x0000094e sd_mmc_select_slot+66 movs r3, #1
0x00000950 sd_mmc_select_slot+68 strb r3, [r4, #29]
0x00000952 sd_mmc_select_slot+70 movs r3, #0
0x00000954 sd_mmc_select_slot+72 strb.w r3, [r4, #46] ; 0x2e
0x00000958 sd_mmc_select_slot+76 ldrb r3, [r4, #4]
0x0000095a sd_mmc_select_slot+78 cbz r3, 0x996
0x0000095c sd_mmc_select_slot+80 ldrh r0, [r4, #48] ; 0x30
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x00000001 r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x00000952 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1296 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_DEBOUNCE) {
1297 if (!SD_MMC_IS_TIMEOUT()) {
1298 /* Debounce on going */
1299 return SD_MMC_ERR_NO_CARD;
1300 }
1301 /* Card is not initialized */
1302 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1303 /* Set 1-bit bus width and low clock for initialization */
1304 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1305 sd_mmc_cards[slot].bus_width = 1;
1306 sd_mmc_cards[slot].high_speed = 0;
1307 }
1308 if (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE) {
1309 return SD_MMC_ERR_UNUSABLE;
1310 }
1311 } else {
1312 /* No pin card detection, then always try to install it */
1313 if ((sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_NO_CARD)
1314 || (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE)) {
1315 /* Card is not initialized */
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000952 in sd_mmc_select_slot+70 at ../sd_mmc/sd_mmc.c:1306
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000952 in sd_mmc_select_slot+70 at ../sd_mmc/sd_mmc.c:1306
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000094c sd_mmc_select_slot+64 str r3, [r4, #16]
0x0000094e sd_mmc_select_slot+66 movs r3, #1
0x00000950 sd_mmc_select_slot+68 strb r3, [r4, #29]
0x00000952 sd_mmc_select_slot+70 movs r3, #0
0x00000954 sd_mmc_select_slot+72 strb.w r3, [r4, #46] ; 0x2e
0x00000958 sd_mmc_select_slot+76 ldrb r3, [r4, #4]
0x0000095a sd_mmc_select_slot+78 cbz r3, 0x996
0x0000095c sd_mmc_select_slot+80 ldrh r0, [r4, #48] ; 0x30
0x0000095e sd_mmc_select_slot+82 clz r0, r0
0x00000962 sd_mmc_select_slot+86 lsrs r0, r0, #5
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffff r1 0x0000000a r2 0x00000000 r3 0x00000000 r4 0x20000298 r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000a8f pc 0x00000958 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1314 || (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_UNUSABLE)) {
1315 /* Card is not initialized */
1316 sd_mmc_cards[slot].state = SD_MMC_CARD_STATE_INIT;
1317 /* Set 1-bit bus width and low clock for initialization */
1318 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1319 sd_mmc_cards[slot].bus_width = 1;
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
1323
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
1325
1326 /* Initialize interface */
1327 sd_mmc_slot_sel = slot;
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000958 in sd_mmc_select_slot+76 at ../sd_mmc/sd_mmc.c:1324
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000958 in sd_mmc_select_slot+76 at ../sd_mmc/sd_mmc.c:1324
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1327 sd_mmc_slot_sel = slot;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000964 sd_mmc_select_slot+88 ldr r2, [pc, #68] ; (0x9ac )
0x00000966 sd_mmc_select_slot+90 ldr r1, [pc, #72] ; (0x9b0 )
0x00000968 sd_mmc_select_slot+92 ldr r5, [pc, #72] ; (0x9b4 )
0x0000096a sd_mmc_select_slot+94 movw r3, #1324 ; 0x52c
0x0000096e sd_mmc_select_slot+98 blx r5
0x00000970 sd_mmc_select_slot+100 movs r3, #0
0x00000972 sd_mmc_select_slot+102 strb r3, [r4, #4]
0x00000974 sd_mmc_select_slot+104 ldr r3, [pc, #64] ; (0x9b8 )
0x00000976 sd_mmc_select_slot+106 str r3, [r4, #0]
0x00000978 sd_mmc_select_slot+108 ldr r3, [pc, #64] ; (0x9bc )
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x0000052c r2 0x000049b9 r3 0x0000052c r4 0x20000298 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000971 pc 0x00000970 xPSR 0x01000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1317 /* Set 1-bit bus width and low clock for initialization */
1318 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1319 sd_mmc_cards[slot].bus_width = 1;
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
1323
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
1325
1326 /* Initialize interface */
1327 sd_mmc_slot_sel = slot;
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
1334 * \brief Configures the driver with the selected card configuration
1335 */
1336 static void sd_mmc_configure_slot(void)
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000970 in sd_mmc_select_slot+100 at ../sd_mmc/sd_mmc.c:1327
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000970 in sd_mmc_select_slot+100 at ../sd_mmc/sd_mmc.c:1327
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1328 sd_mmc_card = &sd_mmc_cards[slot];
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000968 sd_mmc_select_slot+92 ldr r5, [pc, #72] ; (0x9b4 )
0x0000096a sd_mmc_select_slot+94 movw r3, #1324 ; 0x52c
0x0000096e sd_mmc_select_slot+98 blx r5
0x00000970 sd_mmc_select_slot+100 movs r3, #0
0x00000972 sd_mmc_select_slot+102 strb r3, [r4, #4]
0x00000974 sd_mmc_select_slot+104 ldr r3, [pc, #64] ; (0x9b8 )
0x00000976 sd_mmc_select_slot+106 str r3, [r4, #0]
0x00000978 sd_mmc_select_slot+108 ldr r3, [pc, #64] ; (0x9bc )
0x0000097a sd_mmc_select_slot+110 blx r3
0x0000097c sd_mmc_select_slot+112 ldrb r0, [r4, #26]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x0000052c r2 0x000049b9 r3 0x00000000 r4 0x20000298 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000971 pc 0x00000974 xPSR 0x41000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1318 sd_mmc_cards[slot].clock = SDMMC_CLOCK_INIT;
1319 sd_mmc_cards[slot].bus_width = 1;
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
1323
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
1325
1326 /* Initialize interface */
1327 sd_mmc_slot_sel = slot;
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
1334 * \brief Configures the driver with the selected card configuration
1335 */
1336 static void sd_mmc_configure_slot(void)
1337 {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000974 in sd_mmc_select_slot+104 at ../sd_mmc/sd_mmc.c:1328
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000974 in sd_mmc_select_slot+104 at ../sd_mmc/sd_mmc.c:1328
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1329 sd_mmc_configure_slot();
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000096e sd_mmc_select_slot+98 blx r5
0x00000970 sd_mmc_select_slot+100 movs r3, #0
0x00000972 sd_mmc_select_slot+102 strb r3, [r4, #4]
0x00000974 sd_mmc_select_slot+104 ldr r3, [pc, #64] ; (0x9b8 )
0x00000976 sd_mmc_select_slot+106 str r3, [r4, #0]
0x00000978 sd_mmc_select_slot+108 ldr r3, [pc, #64] ; (0x9bc )
0x0000097a sd_mmc_select_slot+110 blx r3
0x0000097c sd_mmc_select_slot+112 ldrb r0, [r4, #26]
0x0000097e sd_mmc_select_slot+114 subs r3, r0, #2
0x00000980 sd_mmc_select_slot+116 negs r0, r3
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x0000052c r2 0x000049b9 r3 0x200002a8 r4 0x20000298 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000971 pc 0x00000978 xPSR 0x41000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1319 sd_mmc_cards[slot].bus_width = 1;
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
1323
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
1325
1326 /* Initialize interface */
1327 sd_mmc_slot_sel = slot;
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
1334 * \brief Configures the driver with the selected card configuration
1335 */
1336 static void sd_mmc_configure_slot(void)
1337 {
1338 driver_select_device(
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000978 in sd_mmc_select_slot+108 at ../sd_mmc/sd_mmc.c:1329
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000978 in sd_mmc_select_slot+108 at ../sd_mmc/sd_mmc.c:1329
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_configure_slot () at ../sd_mmc/sd_mmc.c:1338
1338 driver_select_device(
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000008e4 sd_mmc_configure_slot+0 push {r0, r1, r4, lr}
0x000008e6 sd_mmc_configure_slot+2 ldr r0, [pc, #28] ; (0x904 )
0x000008e8 sd_mmc_configure_slot+4 ldr r4, [pc, #28] ; (0x908 )
0x000008ea sd_mmc_configure_slot+6 ldr r2, [r0, #0]
0x000008ec sd_mmc_configure_slot+8 ldrb r1, [r2, #30]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x0000052c r2 0x000049b9 r3 0x000008e5 r4 0x20000298 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x0000097d pc 0x000008e4 xPSR 0x41000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
1334 * \brief Configures the driver with the selected card configuration
1335 */
1336 static void sd_mmc_configure_slot(void)
1337 {
1338 driver_select_device(
1339 sd_mmc_hal, sd_mmc_slot_sel, sd_mmc_card->clock, sd_mmc_card->bus_width, sd_mmc_card->high_speed);
1340 }
1341
1342
1343
1344 /**
1345 * \brief Deselect the current card slot
1346 */
1347 static void sd_mmc_deselect_slot(void)
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000008e4 in sd_mmc_configure_slot+0 at ../sd_mmc/sd_mmc.c:1338
[1] from 0x0000097c in sd_mmc_select_slot+112 at ../sd_mmc/sd_mmc.c:1329
[2] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000008e4 in sd_mmc_configure_slot+0 at ../sd_mmc/sd_mmc.c:1338
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_select_device (spi=0x2000056c , slot=0 '\000', clock=400000, bus_width=1 '\001', high_speed=false) at ../sd_mmc/sd_mmc_spi.c:485
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00001558 spi_m_sync_select_device+0 ldr r2, [pc, #16] ; (0x156c )
0x0000155a spi_m_sync_select_device+2 ldr.w r3, [r2, #144] ; 0x90
0x0000155e spi_m_sync_select_device+6 bic.w r3, r3, #268435456 ; 0x10000000
0x00001562 spi_m_sync_select_device+10 str.w r3, [r2, #144] ; 0x90
0x00001566 spi_m_sync_select_device+14 movs r0, #0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00000000 r2 0x00061a80 r3 0x00000001 r4 0x00001559 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010560 lr 0x00000901 pc 0x00001558 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010560 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
486
487 return 0;
488 }
489
490 int32_t spi_m_sync_deselect_device(struct spi_m_sync_descriptor* spi, uint8_t slot)
491 {
492 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
493 PORT->Group[1].OUT.reg |= (1 << SPI_CS_PIN);
494 return 0;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001558 in spi_m_sync_select_device+0 at ../sd_mmc/sd_mmc_spi.c:485
[1] from 0x00000900 in sd_mmc_configure_slot+28 at ../sd_mmc/sd_mmc.c:1338
[2] from 0x0000097c in sd_mmc_select_slot+112 at ../sd_mmc/sd_mmc.c:1329
[3] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001558 in spi_m_sync_select_device+0 at ../sd_mmc/sd_mmc_spi.c:485
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, slot = 0 '\000', clock = 400000, bus_width = 1 '\001', high_speed = false
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
487 return 0;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
0x00001558 spi_m_sync_select_device+0 ldr r2, [pc, #16] ; (0x156c )
0x0000155a spi_m_sync_select_device+2 ldr.w r3, [r2, #144] ; 0x90
0x0000155e spi_m_sync_select_device+6 bic.w r3, r3, #268435456 ; 0x10000000
0x00001562 spi_m_sync_select_device+10 str.w r3, [r2, #144] ; 0x90
0x00001566 spi_m_sync_select_device+14 movs r0, #0
0x00001568 spi_m_sync_select_device+16 bx lr
0x0000156a spi_m_sync_select_device+18 nop
0x0000156c spi_m_sync_select_device+20 strh r0, [r0, #0]
0x0000156e spi_m_sync_select_device+22 asrs r0, r0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00000000 r2 0x41008000 r3 0x00000000 r4 0x00001559 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010560 lr 0x00000901 pc 0x00001566 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010560 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
486
487 return 0;
488 }
489
490 int32_t spi_m_sync_deselect_device(struct spi_m_sync_descriptor* spi, uint8_t slot)
491 {
492 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
493 PORT->Group[1].OUT.reg |= (1 << SPI_CS_PIN);
494 return 0;
495 }
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001566 in spi_m_sync_select_device+14 at ../sd_mmc/sd_mmc_spi.c:487
[1] from 0x00000900 in sd_mmc_configure_slot+28 at ../sd_mmc/sd_mmc.c:1338
[2] from 0x0000097c in sd_mmc_select_slot+112 at ../sd_mmc/sd_mmc.c:1329
[3] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001566 in spi_m_sync_select_device+14 at ../sd_mmc/sd_mmc_spi.c:487
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, slot = 0 '\000', clock = , bus_width = , high_speed = false
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_select_slot (slot=) at ../sd_mmc/sd_mmc.c:1330
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000972 sd_mmc_select_slot+102 strb r3, [r4, #4]
0x00000974 sd_mmc_select_slot+104 ldr r3, [pc, #64] ; (0x9b8 )
0x00000976 sd_mmc_select_slot+106 str r3, [r4, #0]
0x00000978 sd_mmc_select_slot+108 ldr r3, [pc, #64] ; (0x9bc )
0x0000097a sd_mmc_select_slot+110 blx r3
0x0000097c sd_mmc_select_slot+112 ldrb r0, [r4, #26]
0x0000097e sd_mmc_select_slot+114 subs r3, r0, #2
0x00000980 sd_mmc_select_slot+116 negs r0, r3
0x00000982 sd_mmc_select_slot+118 adcs r0, r3
0x00000984 sd_mmc_select_slot+120 b.n 0x936
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000000 r1 0x00000000 r2 0x41008000 r3 0x00000000 r4 0x20000298 r5 0x00003ff5
r6 0x20010460 r7 0x0000000e r8 0x00003c39 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x00000901 pc 0x0000097c xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1320 sd_mmc_cards[slot].high_speed = 0;
1321 }
1322 }
1323
1324 assert(!(sd_mmc_slot_sel != slot && sd_mmc_nb_block_remaining != 0), ">>>");
1325
1326 /* Initialize interface */
1327 sd_mmc_slot_sel = slot;
1328 sd_mmc_card = &sd_mmc_cards[slot];
1329 sd_mmc_configure_slot();
1330 return (sd_mmc_cards[slot].state == SD_MMC_CARD_STATE_INIT) ? SD_MMC_INIT_ONGOING : SD_MMC_OK;
1331 }
1332
1333 /**
1334 * \brief Configures the driver with the selected card configuration
1335 */
1336 static void sd_mmc_configure_slot(void)
1337 {
1338 driver_select_device(
1339 sd_mmc_hal, sd_mmc_slot_sel, sd_mmc_card->clock, sd_mmc_card->bus_width, sd_mmc_card->high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000097c in sd_mmc_select_slot+112 at ../sd_mmc/sd_mmc.c:1330
[1] from 0x00000a8e in sd_mmc_check+10 at ../sd_mmc/sd_mmc.c:1616
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000097c in sd_mmc_select_slot+112 at ../sd_mmc/sd_mmc.c:1330
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_check (slot=slot@entry=0 '\000') at ../sd_mmc/sd_mmc.c:1633
1633 if(sd_mmc_spi_card_init())
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000a94 sd_mmc_check+16 ldr r3, [pc, #564] ; (0xccc )
0x00000a96 sd_mmc_check+18 blx r3
0x00000a98 sd_mmc_check+20 mov r0, r8
0x00000a9a sd_mmc_check+22 add sp, #28
0x00000a9c sd_mmc_check+24 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, r10, r11, pc}
0x00000aa0 sd_mmc_check+28 ldr r4, [pc, #556] ; (0xcd0 )
0x00000aa2 sd_mmc_check+30 ldr r7, [pc, #560] ; (0xcd4 )
0x00000aa4 sd_mmc_check+32 ldr r3, [r4, #0]
0x00000aa6 sd_mmc_check+34 ldr r6, [pc, #560] ; (0xcd8 )
0x00000aa8 sd_mmc_check+36 strb r0, [r3, #11]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00000000 r2 0x41008000 r3 0x0000090d r4 0x1ffffffd r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000901 pc 0x00000aa0 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1623 /*
1624 // Initialization of the card requested
1625 if (sd_mmc_mci_card_init()) {
1626 sd_mmc_card->state = SD_MMC_CARD_STATE_READY;
1627 sd_mmc_deselect_slot();
1628 // To notify that the card has been just initialized
1629 // It is necessary for USB Device MSC
1630 return SD_MMC_INIT_ONGOING;
1631 }
1632 */
1633 if(sd_mmc_spi_card_init())
1634 {
1635 sd_mmc_spi_debug("SD/MMC card ready\n\r");
1636 sd_mmc_card->state = SD_MMC_CARD_STATE_READY;
1637 sd_mmc_deselect_slot();
1638 // To notify that the card has been just initialized
1639 // It is necessary for USB Device MSC
1640 return SD_MMC_INIT_ONGOING;
1641 }
1642 sd_mmc_card->state = SD_MMC_CARD_STATE_UNUSABLE;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000aa0 in sd_mmc_check+28 at ../sd_mmc/sd_mmc.c:1633
[1] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[2] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000aa0 in sd_mmc_check+28 at ../sd_mmc/sd_mmc.c:1633
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg slot = 0 '\000'
loc sd_mmc_err = 1 '\001'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:353
353 sd_mmc_card->type = CARD_TYPE_SD;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00000aa0 sd_mmc_spi_card_init+0 ldr r4, [pc, #556] ; (0xcd0 )
0x00000aa2 sd_mmc_spi_card_init+2 ldr r7, [pc, #560] ; (0xcd4 )
0x00000aa4 sd_mmc_spi_card_init+4 ldr r3, [r4, #0]
0x00000aa6 sd_mmc_spi_card_init+6 ldr r6, [pc, #560] ; (0xcd8 )
0x00000aa8 sd_mmc_spi_card_init+8 strb r0, [r3, #11]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00000000 r2 0x41008000 r3 0x0000090d r4 0x1ffffffd r5 0x00000a85
r6 0x20010460 r7 0x0000000e r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000901 pc 0x00000aa0 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
343 * process, then it sets the SD/MMC card in transfer state.
344 * At last, it will automaticly enable maximum bus width and transfer speed.
345 *
346 * \return true if success, otherwise false
347 */
348 static bool sd_mmc_spi_card_init(void)
349 {
350 uint8_t v2 = 0;
351
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000aa0 in sd_mmc_spi_card_init+0 at ../sd_mmc/sd_mmc.c:353
[1] from 0x00000aa0 in sd_mmc_check+28 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000aa0 in sd_mmc_spi_card_init+0 at ../sd_mmc/sd_mmc.c:353
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err = 1 '\001'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000aa0 sd_mmc_spi_card_init+0 ldr r4, [pc, #556] ; (0xcd0 )
0x00000aa2 sd_mmc_spi_card_init+2 ldr r7, [pc, #560] ; (0xcd4 )
0x00000aa4 sd_mmc_spi_card_init+4 ldr r3, [r4, #0]
0x00000aa6 sd_mmc_spi_card_init+6 ldr r6, [pc, #560] ; (0xcd8 )
0x00000aa8 sd_mmc_spi_card_init+8 strb r0, [r3, #11]
0x00000aaa sd_mmc_spi_card_init+10 movs r5, #0
0x00000aac sd_mmc_spi_card_init+12 strb r5, [r3, #12]
0x00000aae sd_mmc_spi_card_init+14 strh r5, [r3, #8]
0x00000ab0 sd_mmc_spi_card_init+16 ldr r0, [pc, #552] ; (0xcdc )
0x00000ab2 sd_mmc_spi_card_init+18 blx r7
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00000000 r2 0x41008000 r3 0x200002a8 r4 0x20000298 r5 0x00000a85
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000901 pc 0x00000aaa xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
344 * At last, it will automaticly enable maximum bus width and transfer speed.
345 *
346 * \return true if success, otherwise false
347 */
348 static bool sd_mmc_spi_card_init(void)
349 {
350 uint8_t v2 = 0;
351
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
363 return false;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000aaa in sd_mmc_spi_card_init+10 at ../sd_mmc/sd_mmc.c:354
[1] from 0x00000aaa in sd_mmc_check+38 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000aaa in sd_mmc_spi_card_init+10 at ../sd_mmc/sd_mmc.c:354
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err = 1 '\001'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
355 sd_mmc_card->rca = 0;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000aa4 sd_mmc_spi_card_init+4 ldr r3, [r4, #0]
0x00000aa6 sd_mmc_spi_card_init+6 ldr r6, [pc, #560] ; (0xcd8 )
0x00000aa8 sd_mmc_spi_card_init+8 strb r0, [r3, #11]
0x00000aaa sd_mmc_spi_card_init+10 movs r5, #0
0x00000aac sd_mmc_spi_card_init+12 strb r5, [r3, #12]
0x00000aae sd_mmc_spi_card_init+14 strh r5, [r3, #8]
0x00000ab0 sd_mmc_spi_card_init+16 ldr r0, [pc, #552] ; (0xcdc )
0x00000ab2 sd_mmc_spi_card_init+18 blx r7
0x00000ab4 sd_mmc_spi_card_init+20 ldr r0, [r4, #8]
0x00000ab6 sd_mmc_spi_card_init+22 ldr r3, [pc, #552] ; (0xce0 )
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00000000 r2 0x41008000 r3 0x200002a8 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000901 pc 0x00000aae xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
345 *
346 * \return true if success, otherwise false
347 */
348 static bool sd_mmc_spi_card_init(void)
349 {
350 uint8_t v2 = 0;
351
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
363 return false;
364 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000aae in sd_mmc_spi_card_init+14 at ../sd_mmc/sd_mmc.c:355
[1] from 0x00000aae in sd_mmc_check+42 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000aae in sd_mmc_spi_card_init+14 at ../sd_mmc/sd_mmc.c:355
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err = 1 '\001'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
356 sd_mmc_spi_debug("Start SD card install\n\r");
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000aa6 sd_mmc_spi_card_init+6 ldr r6, [pc, #560] ; (0xcd8 )
0x00000aa8 sd_mmc_spi_card_init+8 strb r0, [r3, #11]
0x00000aaa sd_mmc_spi_card_init+10 movs r5, #0
0x00000aac sd_mmc_spi_card_init+12 strb r5, [r3, #12]
0x00000aae sd_mmc_spi_card_init+14 strh r5, [r3, #8]
0x00000ab0 sd_mmc_spi_card_init+16 ldr r0, [pc, #552] ; (0xcdc )
0x00000ab2 sd_mmc_spi_card_init+18 blx r7
0x00000ab4 sd_mmc_spi_card_init+20 ldr r0, [r4, #8]
0x00000ab6 sd_mmc_spi_card_init+22 ldr r3, [pc, #552] ; (0xce0 )
0x00000ab8 sd_mmc_spi_card_init+24 blx r3
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00000000 r2 0x41008000 r3 0x200002a8 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000901 pc 0x00000ab0 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
346 * \return true if success, otherwise false
347 */
348 static bool sd_mmc_spi_card_init(void)
349 {
350 uint8_t v2 = 0;
351
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
363 return false;
364 }
365 if (!sd_cmd8(&v2)) {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000ab0 in sd_mmc_spi_card_init+16 at ../sd_mmc/sd_mmc.c:356
[1] from 0x00000ab0 in sd_mmc_check+44 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000ab0 in sd_mmc_spi_card_init+16 at ../sd_mmc/sd_mmc.c:356
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err = 1 '\001'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
pprintf (fmt=0x90d "\265") at ../shared/util/pdebug.c:21
21 size_t size_str = strlen(fmt);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00003f60 pprintf+0 push {r0, r1, r2, r3}
0x00003f62 pprintf+2 push {r4, r5, lr}
0x00003f64 pprintf+4 sub sp, #268 ; 0x10c
0x00003f66 pprintf+6 ldr r4, [pc, #68] ; (0x3fac )
0x00003f68 pprintf+8 ldr r5, [sp, #280] ; 0x118
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x000049d0 r1 0x00000000 r2 0x41008000 r3 0x200002a8 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000ab5 pc 0x00003f60 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
11 {
12 usart_sync_get_io_descriptor(&USART_DBG, &debug_io);
13 usart_sync_enable(&USART_DBG);
14 printf("Debug Initialized\n");
15
16 return 0;
17 }
18
19 int pprintf(const char* fmt, ...)
20 {
21 size_t size_str = strlen(fmt);
22 if (size_str >= MAX_PRINTF_BUFFER)
23 {
24 return -1;
25 }
26 uint8_t printf_buffer[MAX_PRINTF_BUFFER];
27 memset(printf_buffer, '\0', MAX_PRINTF_BUFFER);
28 va_list args;
29 va_start(args, fmt);
30 vsprintf((char*)printf_buffer, fmt, args);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003f60 in pprintf+0 at ../shared/util/pdebug.c:21
[1] from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:356
[2] from 0x00000ab4 in sd_mmc_check+48 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003f60 in pprintf+0 at ../shared/util/pdebug.c:21
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg fmt = 0x90d "\265": 181 '\265'
loc size_str = , printf_buffer = "Start SD card install\n\r\000\000\000\000\000\000\000\000\000)*\000\000\205@\000\000\340O\000\000`\…, args = {__ap = 0x20010574}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
22 if (size_str >= MAX_PRINTF_BUFFER)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00003f64 pprintf+4 sub sp, #268 ; 0x10c
0x00003f66 pprintf+6 ldr r4, [pc, #68] ; (0x3fac )
0x00003f68 pprintf+8 ldr r5, [sp, #280] ; 0x118
0x00003f6a pprintf+10 mov r0, r5
0x00003f6c pprintf+12 blx r4
0x00003f6e pprintf+14 cmp r0, #255 ; 0xff
0x00003f70 pprintf+16 bhi.n 0x3fa4
0x00003f72 pprintf+18 ldr r3, [pc, #60] ; (0x3fb0 )
0x00003f74 pprintf+20 mov.w r2, #256 ; 0x100
0x00003f78 pprintf+24 movs r1, #0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000017 r1 0x00000000 r2 0x00000000 r3 0x000049e8 r4 0x00004085 r5 0x000049d0
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010458 lr 0x00003f6f pc 0x00003f6e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010458 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
12 usart_sync_get_io_descriptor(&USART_DBG, &debug_io);
13 usart_sync_enable(&USART_DBG);
14 printf("Debug Initialized\n");
15
16 return 0;
17 }
18
19 int pprintf(const char* fmt, ...)
20 {
21 size_t size_str = strlen(fmt);
22 if (size_str >= MAX_PRINTF_BUFFER)
23 {
24 return -1;
25 }
26 uint8_t printf_buffer[MAX_PRINTF_BUFFER];
27 memset(printf_buffer, '\0', MAX_PRINTF_BUFFER);
28 va_list args;
29 va_start(args, fmt);
30 vsprintf((char*)printf_buffer, fmt, args);
31 va_end(args);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003f6e in pprintf+14 at ../shared/util/pdebug.c:22
[1] from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:356
[2] from 0x00000ab4 in sd_mmc_check+48 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003f6e in pprintf+14 at ../shared/util/pdebug.c:22
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg fmt = 0x49d0 "Start SD card install\n\r": 83 'S'
loc size_str = 23, printf_buffer = "Start SD card install\n\r\000\000\000\000\000\000\000\000\000)*\000\000\205@\000\000\340O\000\000`\…, args = {__ap = 0x20010574}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
27 memset(printf_buffer, '\0', MAX_PRINTF_BUFFER);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00003f68 pprintf+8 ldr r5, [sp, #280] ; 0x118
0x00003f6a pprintf+10 mov r0, r5
0x00003f6c pprintf+12 blx r4
0x00003f6e pprintf+14 cmp r0, #255 ; 0xff
0x00003f70 pprintf+16 bhi.n 0x3fa4
0x00003f72 pprintf+18 ldr r3, [pc, #60] ; (0x3fb0 )
0x00003f74 pprintf+20 mov.w r2, #256 ; 0x100
0x00003f78 pprintf+24 movs r1, #0
0x00003f7a pprintf+26 add r0, sp, #8
0x00003f7c pprintf+28 blx r3
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000017 r1 0x00000000 r2 0x00000000 r3 0x000049e8 r4 0x00004085 r5 0x000049d0
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010458 lr 0x00003f6f pc 0x00003f72 xPSR 0x81000000 fpscr 0x00000000
msp 0x20010458 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
17 }
18
19 int pprintf(const char* fmt, ...)
20 {
21 size_t size_str = strlen(fmt);
22 if (size_str >= MAX_PRINTF_BUFFER)
23 {
24 return -1;
25 }
26 uint8_t printf_buffer[MAX_PRINTF_BUFFER];
27 memset(printf_buffer, '\0', MAX_PRINTF_BUFFER);
28 va_list args;
29 va_start(args, fmt);
30 vsprintf((char*)printf_buffer, fmt, args);
31 va_end(args);
32 return io_write(debug_io, (const uint8_t*)printf_buffer, strlen((const char*)printf_buffer));
33 }
34
35 void passert(const bool cond, const char* msg_failure, const char* file, const int line)
36 {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00003f72 in pprintf+18 at ../shared/util/pdebug.c:27
[1] from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:356
[2] from 0x00000ab4 in sd_mmc_check+48 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00003f72 in pprintf+18 at ../shared/util/pdebug.c:27
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg fmt = 0x49d0 "Start SD card install\n\r": 83 'S'
loc size_str = 23, printf_buffer = "Start SD card install\n\r\000\000\000\000\000\000\000\000\000)*\000\000\205@\000\000\340O\000\000`\…, args = {__ap = 0x20010574}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Run till exit from #0 pprintf (fmt=0x49d0 "Start SD card install\n\r") at ../shared/util/pdebug.c:27
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:359
359 driver_send_clock(sd_mmc_hal);
Value returned is $1 = 23
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000aaa sd_mmc_spi_card_init+10 movs r5, #0
0x00000aac sd_mmc_spi_card_init+12 strb r5, [r3, #12]
0x00000aae sd_mmc_spi_card_init+14 strh r5, [r3, #8]
0x00000ab0 sd_mmc_spi_card_init+16 ldr r0, [pc, #552] ; (0xcdc )
0x00000ab2 sd_mmc_spi_card_init+18 blx r7
0x00000ab4 sd_mmc_spi_card_init+20 ldr r0, [r4, #8]
0x00000ab6 sd_mmc_spi_card_init+22 ldr r3, [pc, #552] ; (0xce0 )
0x00000ab8 sd_mmc_spi_card_init+24 blx r3
0x00000aba sd_mmc_spi_card_init+26 ldr r0, [r4, #8]
0x00000abc sd_mmc_spi_card_init+28 mov r2, r5
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000017 r1 0x0000000d r2 0x000000f1 r3 0x00002a29 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000ab5 pc 0x00000ab4 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
349 {
350 uint8_t v2 = 0;
351
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
363 return false;
364 }
365 if (!sd_cmd8(&v2)) {
366 return false;
367 }
368 // Try to get the SDIO card's operating condition
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:359
[1] from 0x00000ab4 in sd_mmc_check+48 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000ab4 in sd_mmc_spi_card_init+20 at ../sd_mmc/sd_mmc.c:359
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_send_clock (spi=0x2000056c ) at ../sd_mmc/sd_mmc_spi.c:470
470 uint8_t dummy = 0xFF;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00001530 spi_m_sync_send_clock+0 push {r0, r1, r4, r5, r6, lr}
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x0000000d r2 0x000000f1 r3 0x00001531 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000abb pc 0x00001530 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
460
461 uint32_t spi_m_sync_get_response(struct spi_m_sync_descriptor* spi)
462 {
463 return sd_mmc_spi_response_32;
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001530 in spi_m_sync_send_clock+0 at ../sd_mmc/sd_mmc_spi.c:470
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001530 in spi_m_sync_send_clock+0 at ../sd_mmc/sd_mmc_spi.c:470
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 0 '\000'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
0x00001530 spi_m_sync_send_clock+0 push {r0, r1, r4, r5, r6, lr}
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x0000000d r2 0x000000f1 r3 0x000000ff r4 0x20000298 r5 0x00000000
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00000abb pc 0x0000153a xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153a in spi_m_sync_send_clock+10 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153a in spi_m_sync_send_clock+10 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 0 '\000', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x0000000d r2 0x000000f1 r3 0x000000ff r4 0x0000000a r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00000abb pc 0x0000153e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 0 '\000', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_io_write (spi=spi@entry=0x2000056c , buf=buf@entry=0x2001056f "\377\230\002", length=length@entry=1) at ../hal/src/hal_spi_m_sync.c:202
202 return _spi_m_sync_io_write(&spi->io, buf, length);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00001680 spi_m_sync_io_write+0 ldr r3, [pc, #4] ; (0x1688 )
0x00001682 spi_m_sync_io_write+2 adds r0, #12
0x00001684 spi_m_sync_io_write+4 bx r3
0x00001686 spi_m_sync_io_write+6 nop
0x00001688 spi_m_sync_io_write+8 asrs r1, r2, #24
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x2001056f r2 0x00000001 r3 0x000000ff r4 0x00000009 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x0000154b pc 0x00001680 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
192 }
193
194 uint32_t spi_m_sync_get_version(void)
195 {
196 return SPI_M_SYNC_DRIVER_VERSION;
197 }
198
199
200 int32_t spi_m_sync_io_write(struct spi_m_sync_descriptor *const spi, const uint8_t *const buf, const uint16_t length)
201 {
202 return _spi_m_sync_io_write(&spi->io, buf, length);
203 }
204
205 int32_t spi_m_sync_io_read(struct spi_m_sync_descriptor *const spi, uint8_t *buf, const uint16_t length)
206 {
207 return _spi_m_sync_io_read(&spi->io, buf, length);
208 }
209
210 #ifdef __cplusplus
211 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001680 in spi_m_sync_io_write+0 at ../hal/src/hal_spi_m_sync.c:202
[1] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[2] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[3] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001680 in spi_m_sync_io_write+0 at ../hal/src/hal_spi_m_sync.c:202
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, buf = 0x2001056f "\377\230\002": 255 '\377', length = 1
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
_spi_m_sync_io_write (io=io@entry=0x20000578 , buf=buf@entry=0x2001056f "\377\230\002", length=1) at ../hal/src/hal_spi_m_sync.c:163
163 ASSERT(io);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x00001610 _spi_m_sync_io_write+0 push {r0, r1, r2, r3, r4, r5, r6, lr}
0x00001612 _spi_m_sync_io_write+2 mov r4, r0
0x00001614 _spi_m_sync_io_write+4 subs r0, #0
0x00001616 _spi_m_sync_io_write+6 it ne
0x00001618 _spi_m_sync_io_write+8 movne r0, #1
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x20000578 r1 0x2001056f r2 0x00000001 r3 0x00001611 r4 0x00000009 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x0000154b pc 0x00001610 xPSR 0x01000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
153 * It blocks until all data sent or error.
154 *
155 * \param[in, out] spi Pointer to the HAL SPI instance.
156 * \param[in] p_xfer Pointer to the transfer information (\ref spi_transfer).
157 * \return Operation status.
158 * \retval size Success.
159 * \retval >=0 Timeout, with number of characters transferred.
160 */
161 static int32_t _spi_m_sync_io_write(struct io_descriptor *const io, const uint8_t *const buf, const uint16_t length)
162 {
163 ASSERT(io);
164
165 struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io);
166 struct spi_xfer xfer;
167
168 xfer.rxbuf = 0;
169 xfer.txbuf = (uint8_t *)buf;
170 xfer.size = length;
171
172 return spi_m_sync_transfer(spi, &xfer);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001610 in _spi_m_sync_io_write+0 at ../hal/src/hal_spi_m_sync.c:163
[1] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[2] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[3] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[4] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[5] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[6] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001610 in _spi_m_sync_io_write+0 at ../hal/src/hal_spi_m_sync.c:163
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg io = 0x20000578 : {write = 0x1611 <_spi_m_sync_io_write>,read = 0x1649 <_spi_m_sync_…, buf = 0x2001056f "\377\230\002": 255 '\377', length = 1
loc spi = , xfer = {txbuf = 0x0 ,rxbuf = 0x0 ,size = 0}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
assert (condition=condition@entry=true, file=file@entry=0x4e8a "../hal/src/hal_spi_m_sync.c", line=line@entry=163) at ../hal/utils/src/utils_assert.c:41
41 if (!(condition)) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000028f8 assert+0 cbnz r0, 0x28fc
0x000028fa assert+2 bkpt 0x0000
0x000028fc assert+4 bx lr
~
~
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000a3 r3 0x000028f9 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001627 pc 0x000028f8 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
31 *
32 */
33
34 #include
35
36 /**
37 * \brief Assert function
38 */
39 void assert(const bool condition, const char *const file, const int line)
40 {
41 if (!(condition)) {
42 __asm("BKPT #0");
43 }
44 (void)file;
45 (void)line;
46 }
~
~
~
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000028f8 in assert+0 at ../hal/utils/src/utils_assert.c:41
[1] from 0x00001626 in _spi_m_sync_io_write+22 at ../hal/src/hal_spi_m_sync.c:163
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000028f8 in assert+0 at ../hal/utils/src/utils_assert.c:41
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg condition = true, file = 0x4e8a "../hal/src/hal_spi_m_sync.c": 46 '.', line = 163
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
45 (void)line;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
0x000028f8 assert+0 cbnz r0, 0x28fc
0x000028fa assert+2 bkpt 0x0000
0x000028fc assert+4 bx lr
~
~
~
~
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000a3 r3 0x000028f9 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001627 pc 0x000028fc xPSR 0x21000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
35
36 /**
37 * \brief Assert function
38 */
39 void assert(const bool condition, const char *const file, const int line)
40 {
41 if (!(condition)) {
42 __asm("BKPT #0");
43 }
44 (void)file;
45 (void)line;
46 }
~
~
~
~
~
~
~
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000028fc in assert+4 at ../hal/utils/src/utils_assert.c:45
[1] from 0x00001626 in _spi_m_sync_io_write+22 at ../hal/src/hal_spi_m_sync.c:163
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000028fc in assert+4 at ../hal/utils/src/utils_assert.c:45
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg condition = true, file = 0x4e8a "../hal/src/hal_spi_m_sync.c": 46 '.', line = 163
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
_spi_m_sync_io_write (io=io@entry=0x20000578 , buf=buf@entry=0x2001056f "\377\230\002", length=) at ../hal/src/hal_spi_m_sync.c:168
168 xfer.rxbuf = 0;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000161c _spi_m_sync_io_write+12 mov r5, r2
0x0000161e _spi_m_sync_io_write+14 ldr r1, [pc, #28] ; (0x163c <_spi_m_sync_io_write+44>)
0x00001620 _spi_m_sync_io_write+16 ldr r3, [pc, #28] ; (0x1640 <_spi_m_sync_io_write+48>)
0x00001622 _spi_m_sync_io_write+18 movs r2, #163 ; 0xa3
0x00001624 _spi_m_sync_io_write+20 blx r3
0x00001626 _spi_m_sync_io_write+22 movs r3, #0
0x00001628 _spi_m_sync_io_write+24 strd r6, r3, [sp, #4]
0x0000162c _spi_m_sync_io_write+28 add r1, sp, #4
0x0000162e _spi_m_sync_io_write+30 ldr r3, [pc, #20] ; (0x1644 <_spi_m_sync_io_write+52>)
0x00001630 _spi_m_sync_io_write+32 str r5, [sp, #12]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000a3 r3 0x000028f9 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001627 pc 0x00001626 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
158 * \retval size Success.
159 * \retval >=0 Timeout, with number of characters transferred.
160 */
161 static int32_t _spi_m_sync_io_write(struct io_descriptor *const io, const uint8_t *const buf, const uint16_t length)
162 {
163 ASSERT(io);
164
165 struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io);
166 struct spi_xfer xfer;
167
168 xfer.rxbuf = 0;
169 xfer.txbuf = (uint8_t *)buf;
170 xfer.size = length;
171
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001626 in _spi_m_sync_io_write+22 at ../hal/src/hal_spi_m_sync.c:168
[1] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[2] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[3] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[4] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[5] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[6] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001626 in _spi_m_sync_io_write+22 at ../hal/src/hal_spi_m_sync.c:168
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg io = 0x20000578 : {write = 0x1611 <_spi_m_sync_io_write>,read = 0x1649 <_spi_m_sync_…, buf = 0x2001056f "\377\230\002": 255 '\377', length =
loc spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, xfer = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x1 "\005\001 \251>",size = 5649}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
170 xfer.size = length;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001620 _spi_m_sync_io_write+16 ldr r3, [pc, #28] ; (0x1640 <_spi_m_sync_io_write+48>)
0x00001622 _spi_m_sync_io_write+18 movs r2, #163 ; 0xa3
0x00001624 _spi_m_sync_io_write+20 blx r3
0x00001626 _spi_m_sync_io_write+22 movs r3, #0
0x00001628 _spi_m_sync_io_write+24 strd r6, r3, [sp, #4]
0x0000162c _spi_m_sync_io_write+28 add r1, sp, #4
0x0000162e _spi_m_sync_io_write+30 ldr r3, [pc, #20] ; (0x1644 <_spi_m_sync_io_write+52>)
0x00001630 _spi_m_sync_io_write+32 str r5, [sp, #12]
0x00001632 _spi_m_sync_io_write+34 sub.w r0, r4, #12
0x00001636 _spi_m_sync_io_write+38 blx r3
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000a3 r3 0x00000000 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001627 pc 0x0000162c xPSR 0x61000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
160 */
161 static int32_t _spi_m_sync_io_write(struct io_descriptor *const io, const uint8_t *const buf, const uint16_t length)
162 {
163 ASSERT(io);
164
165 struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io);
166 struct spi_xfer xfer;
167
168 xfer.rxbuf = 0;
169 xfer.txbuf = (uint8_t *)buf;
170 xfer.size = length;
171
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000162c in _spi_m_sync_io_write+28 at ../hal/src/hal_spi_m_sync.c:170
[1] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[2] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[3] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[4] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[5] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[6] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000162c in _spi_m_sync_io_write+28 at ../hal/src/hal_spi_m_sync.c:170
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg io = 0x20000578 : {write = 0x1611 <_spi_m_sync_io_write>,read = 0x1649 <_spi_m_sync_…, buf = 0x2001056f "\377\230\002": 255 '\377', length =
loc spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, xfer = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 5649}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
172 return spi_m_sync_transfer(spi, &xfer);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001626 _spi_m_sync_io_write+22 movs r3, #0
0x00001628 _spi_m_sync_io_write+24 strd r6, r3, [sp, #4]
0x0000162c _spi_m_sync_io_write+28 add r1, sp, #4
0x0000162e _spi_m_sync_io_write+30 ldr r3, [pc, #20] ; (0x1644 <_spi_m_sync_io_write+52>)
0x00001630 _spi_m_sync_io_write+32 str r5, [sp, #12]
0x00001632 _spi_m_sync_io_write+34 sub.w r0, r4, #12
0x00001636 _spi_m_sync_io_write+38 blx r3
0x00001638 _spi_m_sync_io_write+40 add sp, #16
0x0000163a _spi_m_sync_io_write+42 pop {r4, r5, r6, pc}
0x0000163c _spi_m_sync_io_write+44 ldr r6, [pc, #552] ; (0x1868 <_usb_h_in_req+112>)
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x2001054c r2 0x000000a3 r3 0x000015d5 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001627 pc 0x00001632 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
162 {
163 ASSERT(io);
164
165 struct spi_m_sync_descriptor *spi = CONTAINER_OF(io, struct spi_m_sync_descriptor, io);
166 struct spi_xfer xfer;
167
168 xfer.rxbuf = 0;
169 xfer.txbuf = (uint8_t *)buf;
170 xfer.size = length;
171
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001632 in _spi_m_sync_io_write+34 at ../hal/src/hal_spi_m_sync.c:172
[1] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[2] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[3] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[4] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[5] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[6] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001632 in _spi_m_sync_io_write+34 at ../hal/src/hal_spi_m_sync.c:172
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg io = 0x20000578 : {write = 0x1611 <_spi_m_sync_io_write>,read = 0x1649 <_spi_m_sync_…, buf = 0x2001056f "\377\230\002": 255 '\377', length =
loc spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, xfer = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_transfer (spi=spi@entry=0x2000056c , p_xfer=p_xfer@entry=0x2001054c) at ../hal/src/hal_spi_m_sync.c:179
179 ASSERT(spi && p_xfer);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000015d4 spi_m_sync_transfer+0 push {r4, r5, lr}
0x000015d6 spi_m_sync_transfer+2 mov r4, r1
0x000015d8 spi_m_sync_transfer+4 sub sp, #20
0x000015da spi_m_sync_transfer+6 mov r5, r0
0x000015dc spi_m_sync_transfer+8 cbz r0, 0x15e4
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x2001054c r2 0x000000a3 r3 0x000015d5 r4 0x20000578 r5 0x00000001
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010548 lr 0x00001639 pc 0x000015d4 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010548 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
169 xfer.txbuf = (uint8_t *)buf;
170 xfer.size = length;
171
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
182 msg.rxbuf = p_xfer->rxbuf;
183 msg.size = p_xfer->size;
184 return _spi_m_sync_trans(&spi->dev, &msg);
185 }
186
187 int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io)
188 {
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000015d4 in spi_m_sync_transfer+0 at ../hal/src/hal_spi_m_sync.c:179
[1] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000015d4 in spi_m_sync_transfer+0 at ../hal/src/hal_spi_m_sync.c:179
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, p_xfer = 0x2001054c: {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
loc msg = {txbuf = 0x0 ,rxbuf = 0x0 ,size = 0}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
assert (condition=true, file=file@entry=0x4e8a "../hal/src/hal_spi_m_sync.c", line=line@entry=179) at ../hal/utils/src/utils_assert.c:41
41 if (!(condition)) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000028f8 assert+0 cbnz r0, 0x28fc
0x000028fa assert+2 bkpt 0x0000
0x000028fc assert+4 bx lr
~
~
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x000028f9 r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000028f8 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
31 *
32 */
33
34 #include
35
36 /**
37 * \brief Assert function
38 */
39 void assert(const bool condition, const char *const file, const int line)
40 {
41 if (!(condition)) {
42 __asm("BKPT #0");
43 }
44 (void)file;
45 (void)line;
46 }
~
~
~
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000028f8 in assert+0 at ../hal/utils/src/utils_assert.c:41
[1] from 0x000015ec in spi_m_sync_transfer+24 at ../hal/src/hal_spi_m_sync.c:179
[2] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[3] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[4] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[5] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[6] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[7] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[8] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000028f8 in assert+0 at ../hal/utils/src/utils_assert.c:41
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg condition = true, file = 0x4e8a "../hal/src/hal_spi_m_sync.c": 46 '.', line = 179
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
45 (void)line;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
0x000028f8 assert+0 cbnz r0, 0x28fc
0x000028fa assert+2 bkpt 0x0000
0x000028fc assert+4 bx lr
~
~
~
~
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x000028f9 r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000028fc xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
35
36 /**
37 * \brief Assert function
38 */
39 void assert(const bool condition, const char *const file, const int line)
40 {
41 if (!(condition)) {
42 __asm("BKPT #0");
43 }
44 (void)file;
45 (void)line;
46 }
~
~
~
~
~
~
~
~
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000028fc in assert+4 at ../hal/utils/src/utils_assert.c:45
[1] from 0x000015ec in spi_m_sync_transfer+24 at ../hal/src/hal_spi_m_sync.c:179
[2] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[3] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[4] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[5] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[6] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[7] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[8] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000028fc in assert+4 at ../hal/utils/src/utils_assert.c:45
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg condition = true, file = 0x4e8a "../hal/src/hal_spi_m_sync.c": 46 '.', line = 179
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_transfer (spi=spi@entry=0x2000056c , p_xfer=p_xfer@entry=0x2001054c) at ../hal/src/hal_spi_m_sync.c:181
181 msg.txbuf = p_xfer->txbuf;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000015e2 spi_m_sync_transfer+14 movne r0, #1
0x000015e4 spi_m_sync_transfer+16 movs r2, #179 ; 0xb3
0x000015e6 spi_m_sync_transfer+18 ldr r1, [pc, #28] ; (0x1604 )
0x000015e8 spi_m_sync_transfer+20 ldr r3, [pc, #28] ; (0x1608 )
0x000015ea spi_m_sync_transfer+22 blx r3
0x000015ec spi_m_sync_transfer+24 ldr r3, [r4, #0]
0x000015ee spi_m_sync_transfer+26 str r3, [sp, #4]
0x000015f0 spi_m_sync_transfer+28 ldr r3, [r4, #4]
0x000015f2 spi_m_sync_transfer+30 str r3, [sp, #8]
0x000015f4 spi_m_sync_transfer+32 ldr r3, [r4, #8]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x000028f9 r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000015ec xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
171
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
182 msg.rxbuf = p_xfer->rxbuf;
183 msg.size = p_xfer->size;
184 return _spi_m_sync_trans(&spi->dev, &msg);
185 }
186
187 int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io)
188 {
189 ASSERT(spi && io);
190 *io = &spi->io;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000015ec in spi_m_sync_transfer+24 at ../hal/src/hal_spi_m_sync.c:181
[1] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000015ec in spi_m_sync_transfer+24 at ../hal/src/hal_spi_m_sync.c:181
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, p_xfer = 0x2001054c: {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
loc msg = {txbuf = 0x0 ,rxbuf = 0x0 ,size = 0}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
182 msg.rxbuf = p_xfer->rxbuf;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000015e6 spi_m_sync_transfer+18 ldr r1, [pc, #28] ; (0x1604 )
0x000015e8 spi_m_sync_transfer+20 ldr r3, [pc, #28] ; (0x1608 )
0x000015ea spi_m_sync_transfer+22 blx r3
0x000015ec spi_m_sync_transfer+24 ldr r3, [r4, #0]
0x000015ee spi_m_sync_transfer+26 str r3, [sp, #4]
0x000015f0 spi_m_sync_transfer+28 ldr r3, [r4, #4]
0x000015f2 spi_m_sync_transfer+30 str r3, [sp, #8]
0x000015f4 spi_m_sync_transfer+32 ldr r3, [r4, #8]
0x000015f6 spi_m_sync_transfer+34 str r3, [sp, #12]
0x000015f8 spi_m_sync_transfer+36 add r1, sp, #4
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x2001056f r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000015f0 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
172 return spi_m_sync_transfer(spi, &xfer);
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
182 msg.rxbuf = p_xfer->rxbuf;
183 msg.size = p_xfer->size;
184 return _spi_m_sync_trans(&spi->dev, &msg);
185 }
186
187 int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io)
188 {
189 ASSERT(spi && io);
190 *io = &spi->io;
191 return 0;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000015f0 in spi_m_sync_transfer+28 at ../hal/src/hal_spi_m_sync.c:182
[1] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000015f0 in spi_m_sync_transfer+28 at ../hal/src/hal_spi_m_sync.c:182
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, p_xfer = 0x2001054c: {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
loc msg = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 0}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
183 msg.size = p_xfer->size;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000015ea spi_m_sync_transfer+22 blx r3
0x000015ec spi_m_sync_transfer+24 ldr r3, [r4, #0]
0x000015ee spi_m_sync_transfer+26 str r3, [sp, #4]
0x000015f0 spi_m_sync_transfer+28 ldr r3, [r4, #4]
0x000015f2 spi_m_sync_transfer+30 str r3, [sp, #8]
0x000015f4 spi_m_sync_transfer+32 ldr r3, [r4, #8]
0x000015f6 spi_m_sync_transfer+34 str r3, [sp, #12]
0x000015f8 spi_m_sync_transfer+36 add r1, sp, #4
0x000015fa spi_m_sync_transfer+38 ldr r3, [pc, #16] ; (0x160c )
0x000015fc spi_m_sync_transfer+40 adds r0, r5, #4
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x00000000 r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000015f4 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
173 }
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
182 msg.rxbuf = p_xfer->rxbuf;
183 msg.size = p_xfer->size;
184 return _spi_m_sync_trans(&spi->dev, &msg);
185 }
186
187 int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io)
188 {
189 ASSERT(spi && io);
190 *io = &spi->io;
191 return 0;
192 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000015f4 in spi_m_sync_transfer+32 at ../hal/src/hal_spi_m_sync.c:183
[1] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000015f4 in spi_m_sync_transfer+32 at ../hal/src/hal_spi_m_sync.c:183
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, p_xfer = 0x2001054c: {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
loc msg = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 0}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
184 return _spi_m_sync_trans(&spi->dev, &msg);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000015ee spi_m_sync_transfer+26 str r3, [sp, #4]
0x000015f0 spi_m_sync_transfer+28 ldr r3, [r4, #4]
0x000015f2 spi_m_sync_transfer+30 str r3, [sp, #8]
0x000015f4 spi_m_sync_transfer+32 ldr r3, [r4, #8]
0x000015f6 spi_m_sync_transfer+34 str r3, [sp, #12]
0x000015f8 spi_m_sync_transfer+36 add r1, sp, #4
0x000015fa spi_m_sync_transfer+38 ldr r3, [pc, #16] ; (0x160c )
0x000015fc spi_m_sync_transfer+40 adds r0, r5, #4
0x000015fe spi_m_sync_transfer+42 blx r3
0x00001600 spi_m_sync_transfer+44 add sp, #20
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x00004e8a r2 0x000000b3 r3 0x00000001 r4 0x2001054c r5 0x2000056c
r6 0x2001056f r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000015ed pc 0x000015f8 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
174
175 int32_t spi_m_sync_transfer(struct spi_m_sync_descriptor *spi, const struct spi_xfer *p_xfer)
176 {
177 struct spi_msg msg;
178
179 ASSERT(spi && p_xfer);
180
181 msg.txbuf = p_xfer->txbuf;
182 msg.rxbuf = p_xfer->rxbuf;
183 msg.size = p_xfer->size;
184 return _spi_m_sync_trans(&spi->dev, &msg);
185 }
186
187 int32_t spi_m_sync_get_io_descriptor(struct spi_m_sync_descriptor *const spi, struct io_descriptor **io)
188 {
189 ASSERT(spi && io);
190 *io = &spi->io;
191 return 0;
192 }
193
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000015f8 in spi_m_sync_transfer+36 at ../hal/src/hal_spi_m_sync.c:184
[1] from 0x00001638 in _spi_m_sync_io_write+40 at ../hal/src/hal_spi_m_sync.c:172
[2] from 0x00001686 in spi_m_sync_io_write+6 at ../hal/src/hal_spi_m_sync.c:202
[3] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:476
[4] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[5] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[6] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[7] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000015f8 in spi_m_sync_transfer+36 at ../hal/src/hal_spi_m_sync.c:184
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, p_xfer = 0x2001054c: {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
loc msg = {txbuf = 0x2001056f "\377\230\002",rxbuf = 0x0 ,size = 1}
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_send_clock (spi=0x2000056c ) at ../sd_mmc/sd_mmc_spi.c:474
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
0x0000154a spi_m_sync_send_clock+26 ands.w r4, r4, #255 ; 0xff
0x0000154e spi_m_sync_send_clock+30 bne.n 0x153e
0x00001550 spi_m_sync_send_clock+32 add sp, #8
0x00001552 spi_m_sync_send_clock+34 pop {r4, r5, r6, pc}
0x00001554 spi_m_sync_send_clock+36 asrs r1, r0, #26
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000009 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000154a xPSR 0x61000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000009 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000153e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 1 '\001', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
0x0000154a spi_m_sync_send_clock+26 ands.w r4, r4, #255 ; 0xff
0x0000154e spi_m_sync_send_clock+30 bne.n 0x153e
0x00001550 spi_m_sync_send_clock+32 add sp, #8
0x00001552 spi_m_sync_send_clock+34 pop {r4, r5, r6, pc}
0x00001554 spi_m_sync_send_clock+36 asrs r1, r0, #26
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000008 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000154a xPSR 0x61000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000008 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000153e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 2 '\002', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
0x0000154a spi_m_sync_send_clock+26 ands.w r4, r4, #255 ; 0xff
0x0000154e spi_m_sync_send_clock+30 bne.n 0x153e
0x00001550 spi_m_sync_send_clock+32 add sp, #8
0x00001552 spi_m_sync_send_clock+34 pop {r4, r5, r6, pc}
0x00001554 spi_m_sync_send_clock+36 asrs r1, r0, #26
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000007 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000154a xPSR 0x61000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000007 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000153e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 3 '\003', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
0x0000154a spi_m_sync_send_clock+26 ands.w r4, r4, #255 ; 0xff
0x0000154e spi_m_sync_send_clock+30 bne.n 0x153e
0x00001550 spi_m_sync_send_clock+32 add sp, #8
0x00001552 spi_m_sync_send_clock+34 pop {r4, r5, r6, pc}
0x00001554 spi_m_sync_send_clock+36 asrs r1, r0, #26
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000006 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000154a xPSR 0x61000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001532 spi_m_sync_send_clock+2 movs r3, #255 ; 0xff
0x00001534 spi_m_sync_send_clock+4 ldr r6, [pc, #28] ; (0x1554 )
0x00001536 spi_m_sync_send_clock+6 strb.w r3, [sp, #7]
0x0000153a spi_m_sync_send_clock+10 mov r5, r0
0x0000153c spi_m_sync_send_clock+12 movs r4, #10
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000006 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000153e xPSR 0x21000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
484 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
485 PORT->Group[1].OUT.reg &= ~(1 << SPI_CS_PIN);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000153e in spi_m_sync_send_clock+14 at ../sd_mmc/sd_mmc_spi.c:476
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = 4 '\004', dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
474 for(i = 0; i < 10; i++)
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000153e spi_m_sync_send_clock+14 movs r2, #1
0x00001540 spi_m_sync_send_clock+16 add.w r1, sp, #7
0x00001544 spi_m_sync_send_clock+20 mov r0, r5
0x00001546 spi_m_sync_send_clock+22 subs r4, #1
0x00001548 spi_m_sync_send_clock+24 blx r6
0x0000154a spi_m_sync_send_clock+26 ands.w r4, r4, #255 ; 0xff
0x0000154e spi_m_sync_send_clock+30 bne.n 0x153e
0x00001550 spi_m_sync_send_clock+32 add sp, #8
0x00001552 spi_m_sync_send_clock+34 pop {r4, r5, r6, pc}
0x00001554 spi_m_sync_send_clock+36 asrs r1, r0, #26
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x00000005 r5 0x2000056c
r6 0x00001681 r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010568 lr 0x00003dcb pc 0x0000154a xPSR 0x61000000 fpscr 0x00000000
msp 0x20010568 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
464 }
465
466
467 void spi_m_sync_send_clock(struct spi_m_sync_descriptor* spi)
468 {
469 uint8_t i;
470 uint8_t dummy = 0xFF;
471
472 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
473 // Send 80 cycles
474 for(i = 0; i < 10; i++)
475 {
476 spi_m_sync_io_write(spi, &dummy, 1); // 8 cycles
477 }
478 }
479
480 int32_t spi_m_sync_select_device(struct spi_m_sync_descriptor* spi, uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
481 {
482 UNUSED(bus_width);
483 UNUSED(high_speed);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
[1] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:359
[2] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000154a in spi_m_sync_send_clock+26 at ../sd_mmc/sd_mmc_spi.c:474
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …
loc i = , dummy = 255 '\377'
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Run till exit from #0 spi_m_sync_send_clock (spi=0x2000056c ) at ../sd_mmc/sd_mmc_spi.c:474
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sd_mmc_spi_card_init () at ../sd_mmc/sd_mmc.c:362
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00000ab0 sd_mmc_spi_card_init+16 ldr r0, [pc, #552] ; (0xcdc )
0x00000ab2 sd_mmc_spi_card_init+18 blx r7
0x00000ab4 sd_mmc_spi_card_init+20 ldr r0, [r4, #8]
0x00000ab6 sd_mmc_spi_card_init+22 ldr r3, [pc, #552] ; (0xce0 )
0x00000ab8 sd_mmc_spi_card_init+24 blx r3
0x00000aba sd_mmc_spi_card_init+26 ldr r0, [r4, #8]
0x00000abc sd_mmc_spi_card_init+28 mov r2, r5
0x00000abe sd_mmc_spi_card_init+30 mov.w r1, #4352 ; 0x1100
0x00000ac2 sd_mmc_spi_card_init+34 blx r6
0x00000ac4 sd_mmc_spi_card_init+36 cmp r0, #0
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0xffffffec r1 0x00000000 r2 0x00000000 r3 0x00003d99 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00003dcb pc 0x00000aba xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
352 // In first, try to install SD/SDIO card
353 sd_mmc_card->type = CARD_TYPE_SD;
354 sd_mmc_card->version = CARD_VER_UNKNOWN;
355 sd_mmc_card->rca = 0;
356 sd_mmc_spi_debug("Start SD card install\n\r");
357
358 // Card need of 74 cycles clock minimum to start
359 driver_send_clock(sd_mmc_hal);
360
361 // CMD0 - Reset all cards to idle state.
362 if (!driver_send_cmd(sd_mmc_hal, SDMMC_SPI_CMD0_GO_IDLE_STATE, 0)) {
363 return false;
364 }
365 if (!sd_cmd8(&v2)) {
366 return false;
367 }
368 // Try to get the SDIO card's operating condition
369 if (!sdio_op_cond()) {
370 return false;
371 }
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:362
[1] from 0x00000aba in sd_mmc_check+54 at ../sd_mmc/sd_mmc.c:1633
[2] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[3] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00000aba in sd_mmc_spi_card_init+26 at ../sd_mmc/sd_mmc.c:362
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
loc v2 = 0 '\000', sd_mmc_err =
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_send_cmd (spi=0x2000056c , cmd=cmd@entry=4352, arg=arg@entry=0) at ../sd_mmc/sd_mmc_spi.c:219
219 return spi_m_sync_adtc_start(spi, cmd, arg, 0, 0, false);
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000013cc spi_m_sync_send_cmd+0 push {r0, r1, r4, lr}
0x000013ce spi_m_sync_send_cmd+2 movs r3, #0
0x000013d0 spi_m_sync_send_cmd+4 strd r3, r3, [sp]
0x000013d4 spi_m_sync_send_cmd+8 ldr r4, [pc, #4] ; (0x13dc )
0x000013d6 spi_m_sync_send_cmd+10 blx r4
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00001100 r2 0x00000000 r3 0x00003d99 r4 0x20000298 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010580 lr 0x00000ac5 pc 0x000013cc xPSR 0x61000000 fpscr 0x00000000
msp 0x20010580 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
209 uint8_t crc[2];
210 uint8_t dummy = 0xFF;
211 // Read 16-bit CRC (not cheked)
212 spi_m_sync_io_write(spi, &dummy, 1);
213 spi_m_sync_io_read(spi, crc, 2);
214 }
215
216 bool spi_m_sync_send_cmd(struct spi_m_sync_descriptor* spi, uint32_t cmd,
217 uint32_t arg)
218 {
219 return spi_m_sync_adtc_start(spi, cmd, arg, 0, 0, false);
220 }
221 bool spi_m_sync_adtc_start(struct spi_m_sync_descriptor* spi,
222 uint32_t cmd, uint32_t arg, uint16_t block_size,
223 uint16_t nb_block, bool access_block)
224 {
225 uint8_t dummy = 0xFF;
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000013cc in spi_m_sync_send_cmd+0 at ../sd_mmc/sd_mmc_spi.c:219
[1] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[2] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[3] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[4] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000013cc in spi_m_sync_send_cmd+0 at ../sd_mmc/sd_mmc_spi.c:219
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
spi_m_sync_adtc_start (spi=0x2000056c , cmd=cmd@entry=4352, arg=arg@entry=0, block_size=block_size@entry=0, nb_block=nb_block@entry=0, access_block=access_block@entry=false) at ../sd_mmc/sd_mmc_spi.c:225
225 uint8_t dummy = 0xFF;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
~
~
~
~
~
0x000011f0 spi_m_sync_adtc_start+0 stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr}
0x000011f4 spi_m_sync_adtc_start+4 sub sp, #36 ; 0x24
0x000011f6 spi_m_sync_adtc_start+6 mov r7, r1
0x000011f8 spi_m_sync_adtc_start+8 str r3, [sp, #8]
0x000011fa spi_m_sync_adtc_start+10 movs r3, #255 ; 0xff
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00001100 r2 0x00000000 r3 0x00000000 r4 0x000011f1 r5 0x00000000
r6 0x000013cd r7 0x00003f61 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010570 lr 0x000013d9 pc 0x000011f0 xPSR 0x61000000 fpscr 0x00000000
msp 0x20010570 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
215
216 bool spi_m_sync_send_cmd(struct spi_m_sync_descriptor* spi, uint32_t cmd,
217 uint32_t arg)
218 {
219 return spi_m_sync_adtc_start(spi, cmd, arg, 0, 0, false);
220 }
221 bool spi_m_sync_adtc_start(struct spi_m_sync_descriptor* spi,
222 uint32_t cmd, uint32_t arg, uint16_t block_size,
223 uint16_t nb_block, bool access_block)
224 {
225 uint8_t dummy = 0xFF;
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x000011f0 in spi_m_sync_adtc_start+0 at ../sd_mmc/sd_mmc_spi.c:225
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x000011f0 in spi_m_sync_adtc_start+0 at ../sd_mmc/sd_mmc_spi.c:225
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 5 '\005', cmd_token = "\001\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 32 ' ', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
229 uint8_t dummy2 = 0xFF;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000011fa spi_m_sync_adtc_start+10 movs r3, #255 ; 0xff
0x000011fc spi_m_sync_adtc_start+12 mov r6, r2
0x000011fe spi_m_sync_adtc_start+14 ldr r4, [pc, #400] ; (0x1390 )
0x00001200 spi_m_sync_adtc_start+16 ldr r2, [pc, #400] ; (0x1394 )
0x00001202 spi_m_sync_adtc_start+18 strb.w r3, [sp, #21]
0x00001206 spi_m_sync_adtc_start+22 strb.w r3, [sp, #23]
0x0000120a spi_m_sync_adtc_start+26 ldr r1, [pc, #396] ; (0x1398 )
0x0000120c spi_m_sync_adtc_start+28 movs r3, #232 ; 0xe8
0x0000120e spi_m_sync_adtc_start+30 mov r5, r0
0x00001210 spi_m_sync_adtc_start+32 and.w r10, r7, #63 ; 0x3f
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00001100 r2 0x00004b6c r3 0x000000ff r4 0x00003ff5 r5 0x00000000
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000013d9 pc 0x00001206 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
219 return spi_m_sync_adtc_start(spi, cmd, arg, 0, 0, false);
220 }
221 bool spi_m_sync_adtc_start(struct spi_m_sync_descriptor* spi,
222 uint32_t cmd, uint32_t arg, uint16_t block_size,
223 uint16_t nb_block, bool access_block)
224 {
225 uint8_t dummy = 0xFF;
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001206 in spi_m_sync_adtc_start+22 at ../sd_mmc/sd_mmc_spi.c:229
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001206 in spi_m_sync_adtc_start+22 at ../sd_mmc/sd_mmc_spi.c:229
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 255 '\377', cmd_token = "\001\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 32 ' ', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x000011fc spi_m_sync_adtc_start+12 mov r6, r2
0x000011fe spi_m_sync_adtc_start+14 ldr r4, [pc, #400] ; (0x1390 )
0x00001200 spi_m_sync_adtc_start+16 ldr r2, [pc, #400] ; (0x1394 )
0x00001202 spi_m_sync_adtc_start+18 strb.w r3, [sp, #21]
0x00001206 spi_m_sync_adtc_start+22 strb.w r3, [sp, #23]
0x0000120a spi_m_sync_adtc_start+26 ldr r1, [pc, #396] ; (0x1398 )
0x0000120c spi_m_sync_adtc_start+28 movs r3, #232 ; 0xe8
0x0000120e spi_m_sync_adtc_start+30 mov r5, r0
0x00001210 spi_m_sync_adtc_start+32 and.w r10, r7, #63 ; 0x3f
0x00001214 spi_m_sync_adtc_start+36 ubfx r0, r7, #8, #1
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x2000056c r1 0x00001100 r2 0x00004b6c r3 0x000000ff r4 0x00003ff5 r5 0x00000000
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x000013d9 pc 0x0000120a xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
222 uint32_t cmd, uint32_t arg, uint16_t block_size,
223 uint16_t nb_block, bool access_block)
224 {
225 uint8_t dummy = 0xFF;
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
239 cmd_token[4] = arg;
240 cmd_token[5] = spi_m_sync_crc7(cmd_token, 5);
241
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000120a in spi_m_sync_adtc_start+26 at ../sd_mmc/sd_mmc_spi.c:232
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000120a in spi_m_sync_adtc_start+26 at ../sd_mmc/sd_mmc_spi.c:232
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 255 '\377', cmd_token = "\001\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 255 '\377', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000120c spi_m_sync_adtc_start+28 movs r3, #232 ; 0xe8
0x0000120e spi_m_sync_adtc_start+30 mov r5, r0
0x00001210 spi_m_sync_adtc_start+32 and.w r10, r7, #63 ; 0x3f
0x00001214 spi_m_sync_adtc_start+36 ubfx r0, r7, #8, #1
0x00001218 spi_m_sync_adtc_start+40 blx r4
0x0000121a spi_m_sync_adtc_start+42 orr.w r3, r10, #64 ; 0x40
0x0000121e spi_m_sync_adtc_start+46 strb.w r3, [sp, #24]
0x00001222 spi_m_sync_adtc_start+50 lsrs r3, r6, #24
0x00001224 spi_m_sync_adtc_start+52 strb.w r3, [sp, #25]
0x00001228 spi_m_sync_adtc_start+56 lsrs r3, r6, #16
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x000000e8 r2 0x00004b6c r3 0x000000e8 r4 0x00003ff5 r5 0x2000056c
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x0000121b pc 0x0000121a xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
225 uint8_t dummy = 0xFF;
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
239 cmd_token[4] = arg;
240 cmd_token[5] = spi_m_sync_crc7(cmd_token, 5);
241
242
243 // 8 cycles to respect Ncs timing
244 spi_m_sync_io_write(spi, &dummy, 1);
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000121a in spi_m_sync_adtc_start+42 at ../sd_mmc/sd_mmc_spi.c:235
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000121a in spi_m_sync_adtc_start+42 at ../sd_mmc/sd_mmc_spi.c:235
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 255 '\377', cmd_token = "\001\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 255 '\377', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
236 cmd_token[1] = arg >> 24;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001210 spi_m_sync_adtc_start+32 and.w r10, r7, #63 ; 0x3f
0x00001214 spi_m_sync_adtc_start+36 ubfx r0, r7, #8, #1
0x00001218 spi_m_sync_adtc_start+40 blx r4
0x0000121a spi_m_sync_adtc_start+42 orr.w r3, r10, #64 ; 0x40
0x0000121e spi_m_sync_adtc_start+46 strb.w r3, [sp, #24]
0x00001222 spi_m_sync_adtc_start+50 lsrs r3, r6, #24
0x00001224 spi_m_sync_adtc_start+52 strb.w r3, [sp, #25]
0x00001228 spi_m_sync_adtc_start+56 lsrs r3, r6, #16
0x0000122a spi_m_sync_adtc_start+58 strb.w r3, [sp, #26]
0x0000122e spi_m_sync_adtc_start+62 add.w r12, sp, #24
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x000000e8 r2 0x00004b6c r3 0x00000040 r4 0x00003ff5 r5 0x2000056c
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x0000121b pc 0x00001222 xPSR 0x21000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
226 uint8_t cmd_token[6];
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
239 cmd_token[4] = arg;
240 cmd_token[5] = spi_m_sync_crc7(cmd_token, 5);
241
242
243 // 8 cycles to respect Ncs timing
244 spi_m_sync_io_write(spi, &dummy, 1);
245 // send command
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001222 in spi_m_sync_adtc_start+50 at ../sd_mmc/sd_mmc_spi.c:236
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001222 in spi_m_sync_adtc_start+50 at ../sd_mmc/sd_mmc_spi.c:236
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 255 '\377', cmd_token = "@\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 255 '\377', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
237 cmd_token[2] = arg >> 16;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x00001218 spi_m_sync_adtc_start+40 blx r4
0x0000121a spi_m_sync_adtc_start+42 orr.w r3, r10, #64 ; 0x40
0x0000121e spi_m_sync_adtc_start+46 strb.w r3, [sp, #24]
0x00001222 spi_m_sync_adtc_start+50 lsrs r3, r6, #24
0x00001224 spi_m_sync_adtc_start+52 strb.w r3, [sp, #25]
0x00001228 spi_m_sync_adtc_start+56 lsrs r3, r6, #16
0x0000122a spi_m_sync_adtc_start+58 strb.w r3, [sp, #26]
0x0000122e spi_m_sync_adtc_start+62 add.w r12, sp, #24
0x00001232 spi_m_sync_adtc_start+66 lsrs r3, r6, #8
0x00001234 spi_m_sync_adtc_start+68 strb.w r3, [sp, #27]
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x000000e8 r2 0x00004b6c r3 0x00000000 r4 0x00003ff5 r5 0x2000056c
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x0000121b pc 0x00001228 xPSR 0x41000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
227 uint8_t ncr_timeout;
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
239 cmd_token[4] = arg;
240 cmd_token[5] = spi_m_sync_crc7(cmd_token, 5);
241
242
243 // 8 cycles to respect Ncs timing
244 spi_m_sync_io_write(spi, &dummy, 1);
245 // send command
246 spi_m_sync_io_write(spi, cmd_token, sizeof(cmd_token));
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x00001228 in spi_m_sync_adtc_start+56 at ../sd_mmc/sd_mmc_spi.c:237
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x00001228 in spi_m_sync_adtc_start+56 at ../sd_mmc/sd_mmc_spi.c:237
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c : {func = 0x0 ,dev = {prvt = 0x41012000,char_size = 1 …, cmd = 4352, arg = 0, block_size = 0, nb_block = 0, access_block = false
loc dummy = 255 '\377', cmd_token = "@\000\000\000\071\026", ncr_timeout = , r1 = 0 '\000', dummy2 = 255 '\377', __func__ = "spi_m_sync_adtc_start"
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[H[J[3J─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
238 cmd_token[3] = arg >> 8;
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000121e spi_m_sync_adtc_start+46 strb.w r3, [sp, #24]
0x00001222 spi_m_sync_adtc_start+50 lsrs r3, r6, #24
0x00001224 spi_m_sync_adtc_start+52 strb.w r3, [sp, #25]
0x00001228 spi_m_sync_adtc_start+56 lsrs r3, r6, #16
0x0000122a spi_m_sync_adtc_start+58 strb.w r3, [sp, #26]
0x0000122e spi_m_sync_adtc_start+62 add.w r12, sp, #24
0x00001232 spi_m_sync_adtc_start+66 lsrs r3, r6, #8
0x00001234 spi_m_sync_adtc_start+68 strb.w r3, [sp, #27]
0x00001238 spi_m_sync_adtc_start+72 strb.w r6, [sp, #28]
0x0000123c spi_m_sync_adtc_start+76 movs r2, #6
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] break at 0x00003504 in ../main.c:12 for main.c:12 hit 1 time
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
$$0 = 23
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
r0 0x00000001 r1 0x000000e8 r2 0x00004b6c r3 0x00000000 r4 0x00003ff5 r5 0x2000056c
r6 0x00000000 r7 0x00001100 r8 0x00000001 r9 0x00003c47 r10 0x00000000 r11 0xfffbf5e7
r12 0x00000004 sp 0x20010528 lr 0x0000121b pc 0x0000122e xPSR 0x41000000 fpscr 0x00000000
msp 0x20010528 psp 0xfffeefec primask 0x00 basepri 0x00 faultmask 0x00 control 0x00
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
228 uint8_t r1;
229 uint8_t dummy2 = 0xFF;
230
231 (void)access_block;
232 assert(cmd & SDMMC_RESP_PRESENT, "No SD Card response was present...");
233 sd_mmc_spi_err = SD_MMC_SPI_NO_ERR;
234
235 cmd_token[0] = SPI_CMD_ENCODE(SDMMC_CMD_GET_INDEX(cmd));
236 cmd_token[1] = arg >> 24;
237 cmd_token[2] = arg >> 16;
238 cmd_token[3] = arg >> 8;
239 cmd_token[4] = arg;
240 cmd_token[5] = spi_m_sync_crc7(cmd_token, 5);
241
242
243 // 8 cycles to respect Ncs timing
244 spi_m_sync_io_write(spi, &dummy, 1);
245 // send command
246 spi_m_sync_io_write(spi, cmd_token, sizeof(cmd_token));
247
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000122e in spi_m_sync_adtc_start+62 at ../sd_mmc/sd_mmc_spi.c:238
[1] from 0x000013d8 in spi_m_sync_send_cmd+12 at ../sd_mmc/sd_mmc_spi.c:219
[2] from 0x00000ac4 in sd_mmc_spi_card_init+36 at ../sd_mmc/sd_mmc.c:362
[3] from 0x00000ac4 in sd_mmc_check+64 at ../sd_mmc/sd_mmc.c:1633
[4] from 0x000007c4 in SDMMC_example+8 at ../sd_mmc_start.c:33
[5] from 0x00003520 in main+52 at ../main.c:15
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 0 from 0x0000122e in spi_m_sync_adtc_start+62 at ../sd_mmc/sd_mmc_spi.c:238
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
arg spi = 0x2000056c