diff --git a/parse/sdio/cmd52.c b/parse/sdio/cmd52.c new file mode 100644 index 0000000..5fdd5b5 --- /dev/null +++ b/parse/sdio/cmd52.c @@ -0,0 +1,33 @@ +#include "stdio.h" +#include "stdlib.h" +#include "stdint.h" + +void main(int argc, char *argv[]) +{ + uint32_t cmd, resp; + uint32_t addr, data; + + while (1) { + printf("Please input cmd52 and response\r\n"); + scanf("%x %x", &cmd, &resp); + printf("your input is cmd52:0x%08lX, resp:0x%08lX\r\n", cmd, resp); + /* parse cmd52 */ + addr = (cmd >> 9) & 0x1FFFF; + data = (cmd >> 0) & 0xFF; + if (cmd & (1 << 31)) { + printf("write 0x%02X to 0x%06X. ", data, addr); + if (cmd & (1 << 27)) { + printf("with read. "); + } else { + printf("without read. "); + } + } else { + printf("read data from 0x%06X. ", addr); + } + printf("func=%d\r\n", (cmd >> 28) & 0x7); + /* parse response */ + addr = (resp >> 8) & 0xFF; + data = (resp >> 0) & 0xFF; + printf("return data is 0x%02lX, status=0x%02lX\r\n\r\n", data, addr); + } +}