beagelboard-xm上dvsdk移植4:sd卡启动脚本以及NFS文件系统的制作和配置

       这次遇到问题真心静下来去仔细看了一下sd卡的脚本,主要是遇到sd卡制作的文件系统可以正常启动,但是挂载nfs系统却不能正常工作,一些模块不能正常加载。

归于原因,主要定位于sd卡脚本都文件系统做了很大的修改,接下去会分析到。毕竟这个DVSDK都是用到EVM板子上的,所以出现这个很正常。DVSDK自己带的setup-targetfs-nfs.sh脚本,只是完成了自带文件系统的解压,没有将DVSDK最新编译出来的模块加入到NFS文件系统中去。


先来看sd卡启动直接文件系统的脚本核心如下:

execute "mkdir -p /tmp/sdk/$$"  
execute "mount ${device}2 /tmp/sdk/$$"  
echo "Extracting filesystem on ${device}2 ..."  
rootfs=`ls -1 $sdkdir/filesystem/dvsdk*rootfs.tar.gz`  
execute "tar zxf $rootfs -C /tmp/sdk/$$"  
sync  
  
# check if we need to create symbolic link for matrix to auto start  
echo -n "Creating matrix-gui-e symbolic link..."  
if [ -f /tmp/sdk/$$/etc/init.d/matrix-gui-e ]; then  
  if [ -h /tmp/sdk/$$/etc/rc3.d/*matrix* ]; then  
    echo " (skipped) "  
  else  
    ln -s  ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc3.d/S99matrix-gui-e  
    ln -s  ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc5.d/S99matrix-gui-e  
    echo "done"  
  fi  
fi  
  
sync  
echo "unmounting ${device}2"  
execute "umount /tmp/sdk/$$"  
  
if [ "$pc2" != "" ]; then  
  echo "Copying $copy on ${device}3 ..."  
  execute "mount ${device}3 /tmp/sdk/$$"  
  execute "cp -ar $copy /tmp/sdk/$$"  
  execute "cp $sdkdir/bin/setup.htm /tmp/sdk/$$"  
  execute "cp $sdkdir/bin/top_omap35x_evm.png /tmp/sdk/$$/"  
  execute "cp $sdkdir/docs/TMS320DM3730_EVM_Quick_Start_Guide.pdf /tmp/sdk/$$/quickstartguide.pdf"  
  sync  
  echo "unmounting ${device}3"  
  execute "umount /tmp/sdk/$$"  
fi  
  
execute "rm -rf /tmp/sdk/$$"  
echo "completed!"  
  
echo "Updating FS with modified beagleboard-xM files"  
execute "mkdir -p /tmp/sdk/$$"  
execute "mount ${device}2 /tmp/sdk/$$"  
execute "cp $sdkdir/psp/asound.state.beagle /tmp/sdk/$$/etc/asound.state"  
execute "sed -i -e s:ttyO0:ttyO2:g /tmp/sdk/$$/etc/inittab"  
execute "sed -i -e s:usb0:usb1:g /tmp/sdk/$$/etc/network/interfaces"  
execute "sed -i -e s:eth0:usb0:g /tmp/sdk/$$/etc/network/interfaces"  
execute "sed -i -e s:dm37x-evm:beagleboard-dvsdk:g /tmp/sdk/$$/etc/hostname"  
execute "pushd $sdkdir"  
execute "cp Rules.make Rules.make.sdbak"  
echo EXEC_DIR=/tmp/sdk/$$ >> Rules.make  
execute "make depmod_install"  
execute "cp Rules.make.sdbak Rules.make"  
execute "popd"  
sync  
echo "unmounting ${device}2"  
execute "umount /tmp/sdk/$$"  
echo "Done"  

可以总结出核心命令在于以下几句命令行:

    ln -s ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc3.d/S99matrix-gui-eln -s ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc5.d/S99matrix-gui-e  
      
    execute "cp Rules.make Rules.make.sdbak"  
    echo EXEC_DIR=/tmp/sdk/$$ >> Rules.make  
    execute "make depmod_install"  
    execute "cp Rules.make.sdbak Rules.make"
这里可以看到首先是完成对DVSDK自带文件系统的解压,然后是对图形界面的启动做软连接,最后的几句比较关键,主要执行make depmod_install命令 我们回到DVSDK的Makefile中去。可以看到如下depmod_install的依赖性关系:

    name="code" class="plain">depmod_install: install    
        cp -a $(EXEC_DIR)/opt/gfxlibraries/gfx_rel_es5.x/*.ko $(EXEC_DIR)/lib/modules/$(KERNEL_VERSION)/kernel    
        depmod -a -b $(EXEC_DIR) $(KERNEL_VERSION)    
        sed -i $(EXEC_DIR)/lib/modules/$(KERNEL_VERSION)/modules.dep -e s:kernel:/lib/modules/$(KERNEL_VERSION)/kernel:g
这里可以看到,执行这个目标是,会先查看install这个依赖文件,intall这里会完成如下的依赖文件

linux_install opengldemos_install cmem_install sdma_install ceexamples_install codecs_install lpm_install dsplink_install    
u-boot_install dmai_install demos_install  psp_examples_install c6accel_install xload_install c6run_install matrix_install     
gstreamer_ti_install loadmodule_install dvtb_install
至此可以发现,这里会将最新编译出来的各种驱动模块,库函数安装到NFS文件系统中去。
以此说明,这个过程不但但是DVSDK自带文件系统完成解压,更重要的是他会覆盖原文件系统自带的模块,这样最新的内核就可以和文件系统启动加载的内核模块相互匹配。这也正式NFS文件系统制作关键的一步


评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值