xavier boot fail after change mmcblk0p1 for SPI

Hi guys,
I cost my sunday to enable the SPI on xavier, I find some guide here,
like this topics:
https://devtalk.nvidia.com/default/topic/1044595/jetson-agx-xavier/question-how-do-i-enable-and-address-spi-ports-/
and officail guide for TX2:
https://elinux.org/Jetson/TX2_SPI
and when I fellow them to this step:
sudo dd if=tegra194-p2888-0001-p2822-0000-base.dtb of=/dev/mmcblk0p31
I dont know what ‘mmcblk0p31’ mean, may be it will be replace with mmcblk0p1(official for TX2)
when I use mmcblk0p1. after reboot, my xavier cant boot and show:

 Kernel panic-not syncing: VFS: unable to mount root fs on unknown-block(179,1)

 I find a gude to solve this kind of problem, but it works when ubuntu in recovery mode.I want to use hold on 'shift' to get in ubuntu recovery mode, but I find I cant connect keyboard at all.
 I dont know how can I deal with this ,can anyone help me. I have some code in xavier, I know reflash will work,but I dont want to do like this. 

thanks a lot

Don’t use dd to update your device tree. Update it by download sdk manager to your host and after install go to the nvidia_sdk/JetPack_4.2_Linux_P2888/Linux_for_Tegra and replace the nvidia_sdk/JetPack_4.2_Linux_P2888/Linux_for_Tegra/kernel/dtb/tegra194-p2888-0001-p2822-0000.dtb then issue below command to update it.
sudo ./flash -r -k kernel-dtb jetson-xavier mmcblk0p1

I flash the dtb with flash.sh.
But I found after flash, I can’t find spidev at /dev/, I use the command
sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree
and I check the extracted_proc.dts find my last modify about SPI of the dts does not exist. I don’t know whether my modify should appear in the new dts file, I think it should be.

Suggest to download the kernel source to build the customization Image and DTB.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fkernel_custom.html%23