sunspa
X

优视科技—移动执法取证-安全生产可视化指挥调度平台厂商-OEM/ODM!

>
技术支持_详情

BVDM365EVB 嵌入式LINUX应用二次开发说明

浏览量

  基本说明

  基本接口说明:

  

BVDM365EVB 嵌入式LINUX应用二次开发说明

 

  

BVDM365EVB 嵌入式LINUX应用二次开发说明

 

  注意:

  如果开发使用,需要使用PC上的串口终端来操控板卡,用标准串口线(不要交叉)连接目标板跟一台PC机,PC机上启动串口终端软件,例如WINDOWS PC下的超级终端或者putty.exe,secureCRT等或者LINUX下的minicom,串口参数:115200,无硬件流控。

  给目标板上电,串口终端可看到启动信息,启动完毕后,进入命令行。

  出厂默认烧制的是我们的VB_A软件,即支持3G/WiFi/以太网进行视频流传输到监控中心的软件,我们提供了这个软件的内核及驱动源代码,但不提供流媒体管理、传输、协议等应用软件源代码。

  开机

  长按开机键开机。

  注意:

  对于使用DPF板卡,使用时,其开机键位置如下图示:

  此外,这个DPF板卡,没有设计电源接通的LED指示灯。

  

BVDM365EVB 嵌入式LINUX应用二次开发说明

 

  编译LINUX内核

  make dm365_w_1020_vb_a_defconfig ; make uImage

  最终生成:/tftpboot/uImage-dm365-dvsdk

  编译u-boot

  make distclean

  make davinci_dm365bvdpf_config;make

  从最终的编译结果看,生成的u-boot.bin直接放到/tftpboot/目录下,用于板上原有的u-boot通过TFTP进行自我升级。

  注意:

  这种u-boot通过TFTP下载自我升级的版本都是带个wr的,而那种通过跳线到串口boot,用串口下载烧写的则是不带这个wr标记的,两个都是u-boot.bin,但格式有差异,一旦混淆,就会导致板卡无法启动,一直打印BOOTME(即默认的串口启动模式)

  tools/bc_DM36x.exec -blockNum 10 -pageSize 2048 -uboot -o /tftpboot/dm365bvwr-2010.12_u-boot.bin ?u-boot.bin

  注意:

  u-boot一般没什么需要改动的,即使有底层需要改动,也一律应该放到LINUX内核驱动里面去完成,而不要轻易修改u-boot,u-boot应该保持对同一个CPU的通用性,因为u-boot在线升级比较麻烦,一旦出错,就要返厂,而LINUX内核是固件的一部分,可以网络在线升级,甚至远程升级。

  应用程序开发入门

  基本安装

  1、手工安装交叉编译的方法:

  sudo tar xzf arm-2009q1_dm365.tgz-C/opt

  这样最终的交叉编译器为:

  /opt/arm-2009q1/bin/arm-none-linux-gnueabi-gcc

  建议将这个路径加入系统的环境变量$(PATH)

  TOOLCHAIN_DIR="/opt/arm-2009q1/bin "

  TOOLCHAIN_DIR_PROG="/opt/arm-2009q1/bin "

  echo "export PATH=$TOOLCHAIN_DIR/bin:$TOOLCHAIN_DIR_PROG/bin:\$PATH"

  >> /home/$CUR_USER/.bashrc

  echo "export PATH=/opt/arm-2009q1/bin: \$PATH" >> /home/$CUR_USER/.bashrc

  然后您就可以建立一个自己的应用程序的目录,例如myapp:

  mkdir myapp

  vim hello.c

  编制标准的C代码…

  然后创建一个标准的Makefile

  vim Makefile

  CC = arm-none-linux-gnueabi-gcc

  EXEC = hel

  OBJS = hello.o

  all: $(EXEC)

  $(EXEC): $(OBJS)

  $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

  clean:

  -rm -f $(EXEC) *.elf *.gdb *.o

  然后直接在当前目录myapp下执行make,解决编译错误后,即可生成可执行文件hel,这个是for ARM9的ELF格式的可执行文件,可用file工具查看:

  huangning@bvwork00:~/BVDV6446EVB/applications/svalue$ file hel

  hel: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17, dynamically linked (uses shared libs), not stripped

  2、解压rootfs

  tar xzf rootfs_bvdm365evb.tgz –C /tftpboot

  将生成/tftpboot/ filesys.365 目录,这个就是我们使用的根文件系统rootfs。

  这个filesys的目录是为了后续开发调试的时候,NFS as rootfs的时候用的。

  注意:

  如果你的UBUNTU LINUX PC还没配置好TFTP SERVER,则有可能会没有这个/tftpboot目录,具体可参见“Ubuntu_LINUX_ENV_setup_howto_v1.xx.pdf”。

  NFS as rootfs 开发调试模式

  假设您的这台UNBUNTU LINUX PC,即宿主机的IP为192.168.6.33。

  下面介绍最常见的NFS as rootfs的开发调试模式:

  首先,您需要建立NFS的rootfs,建议放到/ tftpboot/ 下面

  然后,设置好你的UBUNTU LINUX PC的NFS SERVER服务,将这个/tftpboot/ filesys.365添加进去后,执行

  sudo /etc/init.d/nfs-kernel-server restart

  然后启动串口终端软件(minicom),给目标板上电,按下空格键进入UBOOT状态,如下设置:

  setenv bootargs 'ip=192.168.6.145:192.168.6.143:192.168.6.254:255.255.255.0:davinci::on mem=86M console=ttyS0,115200n8 root=/dev/nfs rw nfsroot=192.168.6.33:/tftpboot/ filesys.365,nolock eth=00:1e:9a:04:5c:4d video=davincifb:vid0=vid1=800x600x12,2816K:vid1=0x0,0:osd0=800x600x16,1880K dm365_imp.oper_mode=1 dm365_imp.en_serializer=0 vpfe_capture.interface=0 vpfe_capture.bufsize=829440 davinci_enc_mngr.ch0_output=LCD davinci_enc_mngr.ch0_mode=800x600 debug_cmdline';setenv serverip 192.168.6.33;setenv ipaddr 192.168.6.34;tftp 80700000 uImage-dm365-dvsdk;ldparam;bootm

  这样配置好后,

  如果您修改内核,编译后生成的映像文件/tftpboot/ uImage-dm365-dvsdk,您只要每次重启板卡,例如执行reboot –f,则会自动下载新的内核运行测试看到修改的效果;

  如果您是对应用程序的调整,则无需重启板卡,您对应用程序做的修改,直接体现到宿主机的/tftpboot/rootfs/相关的目录下,例如新编译的可执行文件就自动复制到

  /tftpboot/rootfs/bin目录下,库就复制到/tftpboot/ rootfs /lib下面,启动脚本、应用程序配置文件等就直接修改到/tftpboot/ rootfs /etc下相关文件里面,然后您立刻运行自己的应用程序,就可看到修改的效果。

  注意:

  这样操作方式下,LINUX PC宿主机的IP(上例中的192.168.6.33)就不能变更了,一旦修改,NFS连接就将失败,目标板就只能重启了。

  注意:

  目前出厂烧入的固件firmware_BVS-W1020-VB-A_201201131044_release.bin,是默认关闭了CONSOLE串口的,如果要打开串口CONSOLE,则需要启动进入u-boot命令行,输入如下命令:

  setenv bootargs 'ip=192.168.6.232:192.168.6.198:192.168.6.254:255.255.255.0:davinci::on mem=86M console=ttyS0,115200n8 root=/dev/ram rw eth=aa:1e:9a:48:2d:4d video=davincifb:vid0=vid1=720x576x12,2488K:vid1=0x0,0:osd0=720x576x16,1660K dm365_imp.oper_mode=1 dm365_imp.en_serializer=0 vpfe_capture.interface=0 vpfe_capture.bufsize=829440 davinci_enc_mngr.ch0_output=COMPOSITE davinci_enc_mngr.ch0_mode=PAL debug_cmdline'

  制作固件(firmware.bin)的工具

  tar xzf rootfs_dm365_tools.tgz

  解压后

  cd rootfs/dm365/tools

  rootfs/dm365/tools$ cat howto

  sudo ./makfirm.sh BVS-W1020-VB-A

  在内存中运行固件(firmware.bin)

  在u-boot命令行下执行如下命令:

  setenv bootargs 'ip=192.168.7.14:192.168.7.33:192.168.7.254:255.255.255.0:davinci::on mem=86M console=ttyS0,115200n8 root=/dev/ram rw eth=aa:1e:9a:48:2d:2e video=davincifb:vid0=vid1=720x576x12,2488K:vid1=0x0,0:osd0=720x576x16,1660K dm365_imp.oper_mode=1 dm365_imp.en_serializer=0 vpfe_capture.interface=0 vpfe_capture.bufsize=829440 davinci_enc_mngr.ch0_output=COMPOSITE davinci_enc_mngr.ch0_mode=PAL debug_cmdline'

  setenv serverip 192.168.6.33;setenv ipaddr 192.168.6.34;tftp 82000000 firmware.bin;bootm 82000000

  u-boot烧写固件(firmware.bin)命令

  nand erase 0x300000 0x2800000;setenv serverip 192.168.6.33;setenv ipaddr 192.168.6.29;tftp 80070000 firmware_vb_a.bin;nand write.jffs2 0x80070000 0x300000 0x2800000;

  u-boot通过TFTP自我更新

  setenv serverip 192.168.6.1;setenv ipaddr 192.168.6.29;tftp 80070000 dm365bvwr-2010.12_u-boot.bin; nand erase 140000 a0000; nand write.jffs2 80070000 140000 a0000

  串口跳线更新u-boot

  用双跳线短接板卡的J1/J2(RTC电池旁边),

  sfh_DM36x.exe -nandflash ubl_DM36x_nand.bin u-boot-2010.12_dm365bv.bin -p com1

  中间或许会失败一次,不用理会,直接再次重新执行即可。

  -----------------------------------------------------

  TI Serial Flasher Host Program for DM36x

  (C) 2011, Texas Instruments, Inc.

  Ver. 1.50

  -----------------------------------------------------

  Flashing NAND with ubl_DM36x_nand.bin and u-boot-2010.12_dm365bv.bin.

  Attempting to connect to device com1...

  Press any key to end this program at any time.

  Waiting for the DM36x...

  BOOTME commmand received. Returning ACK and header...

  ACK command sent. Waiting for BEGIN command...

  Target:BEGIN

  BEGIN commmand received. Sending CRC table...

  100% [

  ]

  CRC table sent....

  Waiting for DONE...

  DONE received.Sending the UBL...

  100% [

  ]

  UBL sent....

  DONE received.UBL was accepted.

  UBL transmitted successfully.

  Waiting for SFT on the DM36x...

  Target: Starting UART Boot...

  Target: BOOTUBL

推荐产品

4G图传语音调度智能安全帽

H.265安卓4G布控球

技术支持