DSP

基于Linux的BeagleBoard-xm终端开发环境搭建

2019-07-13 15:24发布

本文均属自己阅读源码的点滴总结,转账请注明出处谢谢。欢迎和大家交流。qq:1037701636 email:gzzaigcn2012@gmail.com今天在处理一些android开发的问题时,找到了去年年初做的一个基于Beagleboard-xm的项目,有个文档当初整理的不错,这个分享给大家吧。 基于Linux的BeagleBoard-xm终端开发环境搭建 PCLinux开发版本:ubuntu10.04及以上PC主要需要安装以下软件:minicomNFS开发板型号:Beagleboard-xm RevcCPU型号:DM3730 软件开发包版本:DVSDK4.0.1Linux内核版本:2.6.32交叉编译环境版本:arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2009q1-203) 4.3.3(注:以下有关命令行的操作均在root用户下进行) 一:交叉编译工具安装 1.1 交叉编译工具安装包的下载:arm-2009q1-203-arm-none-linux-gnueabi.bin:https://www.ridgerun.com/developer/wiki/index.php/Code_Sourcery_ARM_toolchain_2009q1-2031.2 安装包的安装执行命令如下:./arm-2009q1-203-arm-none-linux-gnueabi.bin完成窗口化安装,这里指定的安装目录为/opt/CodeSourcery/Sourcery_G++_Lite/1.3 设置交叉编译器的环境变量执行如下命令:vim/etc/profile在文件尾部添加如下内容:exportPATH=/opt/CodeSourcery/Sourcery_G++_Lite/bin:$PATH在使用时执行source /etc/profile时该环境变量全局生效。 .DVSDK4.0.1软件开发包获取与安装 2.1 DVSDK4.0.1安装包下载网址:http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/4_01_00_09/ 2.2 DVSDK4.0.1的安装:依次执行如下命令:chmod 777dvsdk_dm3730-evm_4_01_00_09_setuplinux./dvsdk_dm3730-evm_4_01_00_09_setuplinux完成窗口化安装过程中需要指定之前安装的编译器目录,本文目录如下:/opt/CodeSourcery/Sourcery_G++_Lite/bin .DVSDK4.0.1 打补丁操作        我们知道DVSDK4.0.1TI专门用于AM/DM37xxEVM等评估板而设计的,如果要将这个DVSDK用到我们的BeagleBoard-xm板上,主要需要打补丁的内容就是xload,ubootlinux kernel3.1补丁文件的下载参考如下wikihttp://processors.wiki.ti.com/index.php/DVSDK_4.x_FAQ#How_to_build_and_install_DVSDK_4.01_on_BeagleBoard-xM可以下载到适用于DVSDK4.0.1的补丁脚本setup-dvsdk-4-01-beaglexm-110126.sh,补丁脚本主要完成以下内容:a.通过git下载xload,ubootlinux kernel源码;b.xload,ubootlinux kernel的打补丁操作;c. makefile做一定的修改;d.SD卡制作脚本mksdboot.sh进行一定的修改;(详细内容见附件)。当然从这里可以我们可以下载到打完补丁的源码:http://sourceforge.net/projects/dvsdkbbxm/files/DVSDK-4.01%20for%20BeagleBoard/DVSDK%20for%20BB%20xM-C/Source%20files/                                                      .DVSDK4.0.1 全编译和部分编译 4.1 DVSDK4.0.1的全编译执行如下命令:make cleanmake all以上命令会完成dvsdk内部所有内容的编译,包括xload,uboot,linux kernel以及用于Davinci架构的核心驱动:cmem.ko,dsplink.ko,sdma.ko等,当然还包括其他的组件。 4.2 DVSDK4.0.1的部分编译这里的部分编译指的是如果只想编译修改过的内核,只需要执行如下命令就行:make linux_cleanmake linux其余模块单独编译也类似。 . 文件系统SD卡启动和NFS启动         Beagleboard-xm板支持内核从SD卡启动,但是文件系统也可以配置为NFS文件系统启动。5.1 制作SD卡文件系统启动DVSDK 自带的脚本可以设置SD卡启动,制作SD卡(最好是4G),需要如下步骤来完成:a: 插入sd卡,执行fdisk -l命令查看SD卡的磁盘号,如/dev/sddb: 进入DVSDK所在目录,执行命令 ./bin/mksdboot.sh --device /dev/sdd --sdk `pwd`c:选择显示设备LCD还是 DVI,最终完成SD卡的文件系统启动,需要一段时间。 5.2 制作SD卡从NFS启动       第一步:配置内核启动NFS文件系统,需要在本地建立一个文件系统,文件系统以DVSDK自带的dvsdk-dm37x-evm-rootfs.tar.gz(在DVSDK安装目录的filesystem目录中)为核心,这里执行如下命令完成文件系统的解压:tar xzvf dvsdk-dm37x-evm-rootfs.tar.gz -C/home/BeagleBoard/rootfs再在DVSDK安装目录下执行make intall完成DVSDK所有模块的文件安装,安装目录在由Rules.make(这个文件很重要,指定了DVSDK中各个组件所在的目录,方便Makefile的编译)的EXEC_DIR变量来指定注:后者的操作很有必要,因为这里会将最新编译出来的驱动模块cmem.ko,dsplink.ko,sdma.ko等对解压出来的文件系统进行覆盖,如果不这样会造成驱动在启动加载时不能和内核相匹配而出现错误。          第二步:修改 mksdboot.sh的内容,其实修改的最终结果是替换bootargs参数的内容,这里配置成文件系统通过NFS来完成挂载:直接从启动文件的参数代码如下:setenv bootargs 'console=ttyS2,115200n8root=/dev/mmcblk0p2 rw ip=off mem=55M@0x80000000 mpurate=1000  omap_vout.vid1_static_vrfb_alloc=yomapfb.vram=0:8M mem=384M@0x88000000 omapfb.mode=lcd omapdss.def_disp=lcdrootwait vram=8M'这里我提供的修改代码如下:setenv bootargs 'console=ttyS2,115200n8 rwmem=55M@0x80000000 mpurate=1000 mem=384M@0x88000000omap_vout.vid1_static_vrfb_alloc=y omapfb.vram=0:8M omapfb.mode=lcd omapdss.def_disp=lcd rootwait root=/dev/nfsnfsroot=192.168.1.55:/home/BeagleBoard/rootfsip=192.168.1.56:192.168.1.55:192.168.1.255:255.255.255.0,off'最终形成boot.scr,该文件的内容会被xload读取作为uboot的环境变量。注意:以上的参数个别变量符号不能写错如vram,否则内核提取时会发生错误,导致系统不能正常启动        第三步:本地NFS配置执行如下命令:vim /etc/exports写入文件系统所在目录到该文件中如:/home/BeagleBoard/rootfs*(rw,nohide,insecure,no_subtree_check,async,no_root_squash)重启NFS服务,执行如下命令exportfs -a/etc/init.d/nfs-kernel-server restart        最后,进入DVSDK所在目录,执行命令 ./bin/mksdboot.sh --device /dev/sdd --sdk`pwd`完成SD卡制作。          . 自己参考设计的脚本文件        通过这段时间的学习,尤其是在对DVSDK4.0.1DVSDK4.0.3做实验对比时,对重复敲打的一些命令写成了脚本,用于方便整个软件开发环境的搭建。1.setup_sd.sh脚本:主要用于配置SD启动文件系统是通过NFS还是SD卡直接启动。2.setup_nfs.sh脚本:用于完成PC机上文件系统的制作,主要是融合了上面提到的一些命令。   NFS配置参数:setenv bootargs 'console=ttyS2,115200n8 rw mem=55M@0x80000000 mpurate=1000 mem=384M@0x88000000 omap_vout.vid1_static_vrfb_alloc=y omapfb.vram=0:8M omapfb.mode=lcd omapdss.def_disp=lcd rootwait vram=8M root=/dev/nfs nfsroot=192.168.1.55:/home/BeagleBoard/rootfs ip=192.168.1.56:192.168.1.55:192.168.1.255:255.255.255.0,off rootdelay=3'