Memory dump size does not match size of MTD partition
Try: xxd -r -seek -0x20000000 dump.txt dump.bin

xxd -r -p expects input in plain hexadecimal format, without addresses or ASCII. xxd -r without -seek assumes that addresses are zero-based, and will seek or zero-pad its output to skip over regions not present in the dump (the first 0x20000000 = 536870912 bytes).