手賤不小心覆蓋了BootLoader,需要自行燒寫bootloader。
uboot燒寫時的問題
partition manager.exe不能在win 10上跑,一般是因爲版本太老了,無法兼容,需要在網上找了一個Paragon Partition Manager的版本,發現分區前劃分100-200MB後,沒辦法指定盤符了。就像下面:
嘗試了各種辦法都沒有辦法,猜測是因爲我的TF卡內存太大了,64G,當超過32G且文件格式爲FAT32的硬盤無法被window識別的原因。轉向了使用ubuntu燒寫的方法,那麼也就沒有用到九鼎的IROM_Fusing_Tool軟件進行燒寫。
使用ubuntu燒寫uboot
1. 首先,你需要gparted來進行分區。
apt-get install gparted
2. ubuntu查看使用的硬盤的分區情況
這裏的sdb和sdb1是我的TF卡,分爲兩塊是因爲分區了,一般情況下的sda是ubuntu原來自己的,當你插入u盤之類的,就是sdb了。
sudo fdisk /dev/sdb
輸入m幫助可以知道,我們需要刪除分區,輸入d,然後輸入w,保存操作後退出。刪除分區後sdb1消失,剩下sdb。
3. 開始分區
sudo gparted /dev/sdb
這時候就是按照x6818燒寫的參考文檔,前 100-200置空,後續的剩下設置爲FAT32的文件格式
4. 使用腳本燒寫(腳本來源博主:https://www.cnblogs.com/schips/)
#!/bin/sh
# s5p6818 irom sd/mmc boot fusing tool.
# Author: Jianjun Jiang <[email protected]>
# display usage message
USAGE()
{
echo Usage: $(basename "$0") '<device> <bootloader>'
echo ' device = disk device name for SD card.'
echo ' bootloader = /path/to/uboot.bin'
echo 'e.g. '$(basename "$0")' /dev/sdc uboot.bin'
}
#[ `id -u` == 0 ] || { echo "you must be root user"; exit 1; }
[ -z "$1" -o -z "$2" ] && { USAGE; exit 1; }
dev="$1"
xboot="$2"
# validate parameters
[ -b "${dev}" ] || { echo "${dev} is not a valid block device"; exit 1; }
[ X"${dev}" = X"${dev%%[0-9]}" ] || { echo "${dev} is a partition, please use device, perhaps ${dev%%[0-9]}"; exit 1; }
[ -f ${xboot} ] || { echo "${xboot} is not a bootloader binary file."; exit 1; }
# copy the full bootloader image to block device
dd if="${xboot}" of="${dev}" bs=512 seek=1 conv=sync
sync;
echo "OK"
然後再執行
./my_script.sh /dev/sdb uboot.bin
my_scriipt.sh是上述腳本存儲時用的名字
5. 把TF卡插到SD0卡的位置,然後重啓,就ok了。
文件系統,內核的燒寫
有了uboot packet之後,啓動時在限定時間3s內進入bootloader模式,在window已經fastboot時,燒寫過程如下:
//在window的cmd窗口跑
fastboot flash boot boot.img
//在window的cmd窗口跑
fastboot flash system qt-rootfs.img
在開發板的串口終端輸入
setenv bootcmd "ext4load mmc 2:1 0x48000000 uImage;bootm 0x48000000"
setenv bootargs "lcd=wy070ml tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4"
setenv ubootpak 1
setenv boot 1
setenv system 1
save
如果是MIPI接口,第二行是這樣子的
setenv bootargs "lcd=wy070ml tp=gslx680-linux root=/dev/mmcblk0p2 rw rootfstype=ext4"
重啓後,會發現系統燒回來了。