我的平臺是TI的816x/389x DDR3 EVM,之前一直用TI提供的SD卡啓動的,SD卡是EZSDK的,EZSDK停止更新了,只好轉到DVRRDK了,我採用nand flash啓動
參考了開發包裏的DM81xx_DVR_RDK_Install_Guide和http://blog.csdn.net/luhao806/article/details/7341439,灰常感謝
1. 安裝DVRRDK-04.01.00.02-Linux-x86-Install
之後二次解壓後得到下圖文件結構,對比了install guide,發現缺少了一些文件夾如live555,好像是因爲安裝包不完全導致的。target目錄下有nfs_DM816x_TI_EVM.tar.lzma,解壓得到文件夾rfs_816x,即linux文件系統,用於第四步NFS掛載系統。
在dvr_rdk目錄下,編譯make -s DVR_RDK_BOARD_TYPE=DM816X_TI_EVM,pre_built_binary和tftphome裏都有編譯生成的uboot、uImage和ubi,拷貝到tftfboot目錄中,前提是裝好tftp服務,之後用tftp下載到nand裏。
2. 利用tftp燒寫uboot到nand
此時啓動模式是SD卡啓動,SW3撥碼爲0000010111(9~0高位到低位),SW4的nand撥碼爲1. 插入SD卡,打開minicom,啓動,中斷uboot,設置開發板的ip並保存
TI8168_EVM#setenv ipaddr 192.168.0.10
TI8168_EVM#setenv serverip 192.168.0.11
TI8168_EVM#mw.b 0x81000000 0xFF 0x260000
TI8168_EVM#tftp 0x81000000 uboot_NAND_DM816X_TI_EVM
TI8168_EVM#nandecc hw 2
TI8168_EVM#nand erase 0x0 0x260000
TI8168_EVM#nand write.i 0x81000000 0x0 0x260000
3. nand啓動uboot後燒寫uImage
改變啓動模式爲nand啓動,SW3撥碼爲0010010010(9~0高位到低位),SW4的nand撥碼爲1.打開minicom,拔掉SD卡,打開minicom,開啓電源出現uboot啓動信息,中斷
TI8168_EVM#mw.b 0x81000000 0xFF 0x300000;
TI8168_EVM#tftp 0x81000000 uImage_DM816X_TI_EVM
TI8168_EVM#nand erase 0x00580000 0x440000
TI8168_EVM#nand write.i0x810000000x00580000 0x300000
4. 安裝NFS服務
在Ubuntu上,安裝nfs服務。
sudo apt-get install nfs-kernel-server
sudo apt-getinstall nfs-common
sudo service nfs-kernel-server restart
改變文件系統目錄權限
chmod 777 usr/DVRRDK/DVRRDK_04.01.00.02/target/rfs_816x
並在/etc/exports中加入
usr/DVRRDK/DVRRDK_04.01.00.02/target/rfs_816x *(rw,nohide,insecure,no_subtree_check,async,no_root_squash,sync)
5. 設置bootcmd及bootargs
setenv bootcmd 'nandecc sw;nand read 0x81000000 0x580000 0x300000;bootm 0x81000000'
setenv bootargs 'mem=256M console=ttyO2,115200n8 root=/dev/nfs rw nfsroot=192.168.0.11:/usr/DVRRDK/DVRRDK_04.01.00.02/target/rfs_816x ip=192.168.0.10:192.168.0.11:192.168.0.1:255.255.255.0::eth0:off vram=20M notifyk.vpssm3_sva=0xBEE00000 ddr_mem=1024M'
保存設置,saveenv,環境變量如圖所示,之後重啓開發板
不出意外的話,重啓之後可以正常啓動kernel和rootfs,如圖所示: