DM368开发 –IPNC 设置过程[通俗易懂]

2022-09-21 10:16:33 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

参看:Appro DM36x IPNC 4.0 开发环境配置

第一步: IPNC 安装:

安装软件包,解压后包含以下组件:

1. IPNC_RDK_DM36x_Version3.1.0.tar.gz:

这是linux tar文件,需要解压在linux机器。这是主要tar文件IPNC RDK安装。这个包含在以下文件

预构建二进制文件Dm36x平台

配套文献

源代码构建IPNC的RDK所需

硬件包和BoM,图表和Gerber文件

实用程序文件像凝胶,Nand-programmer等等

2. ImageTuningTool_DM36x_Version2.1.0.zip:

这是一个图像优化工具软件包用于优化IPNC图像质量。需要解压缩和用于Windows电脑。它包含以下

图像优化工具安装程序(imagetunningtool – 2.1安装程序

MCR安装程序(MCRInstaller.exe)。这个需要安装安装图像优化工具

3. GUI_VideoPlayer_SDK_Version2.0.30.zip:

这个SDK工具集,需要开发web GUI屏幕和ActiveX的播放器。这需要解压缩和用于Windows电脑。

GUI文件夹包含所有源代码、文档和公用事业构建web GUI屏幕

播放器文件夹包含所有源代码,文档和msys依从者/公用事业需要构建ActiveX视频播放器

业务Model-v3.1 GUI。pdf包含详细的业务TI和GoDB科技之间的模型

4. UserGuide_IPNC_RDK_DM36x.pdf:

业务Model-v3.1 GUI。pdf包含详细的业务TI和GoDB科技之间的模型

5. Release_Notes_IPNC_RDK_DM36x.pdf:

细节特征补充说,已知问题,版本细节,bug修复等

IPNC_RDK_DM36x_Version3.1.0.tar.gz的安装流程:

1. 拷贝IPNC_RDK_DM36x_Version3.1.0.tar.gz 到你的linux系统安装目录

2. 使用下面的命令将文件解压

tar -zxvf IPNC_RDK_DM36x_Version3.1.0.tar.gz

成功将命令解压,文件将生成

Appro_IPNC_RDK_DM36x_v3.1.0.tar.gz

OpenSrc_IPNC_RDK_DM36x_v3.1.0.tar.gz

PrivateTI_IPNC_RDK_DM36x_v3.1.0-Linux-x86-Install.bin

3. 运行文件 “PrivateTI_IPNC_RDK_DM36x_v3.1.0-Linux-x86-Install.bin”

通过安装保护在一个特定的安装目录。

./PrivateTI_IPNC_RDK_DM36x_v3.1.0-Linux-x86-Install.bin

他将会安装 PrivateTI_IPNC_RDK_DM36x_v3.1.0.tar.gz 在选择的位置

用户需要接受许可成功安装

4. 提取/解压文件 “PrivateTI_IPNC_RDK_DM36x_v3.1.0.tar.gz” 在安装目录

tar -zxvf PrivateTI_IPNC_RDK_DM36x_v3.1.0.tar.gz

5. 提取/解压文件 “OpenSrc_IPNC_RDK_DM36x_v3.1.0.tar.gz” 上面的步骤安装目录的上面

tar -zxvf OpenSrc_IPNC_RDK_DM36x_v3.1.0.tar.gz

6. 提取/解压文件 “Appro_IPNC_RDK_DM36x_v3.1.0.tar.gz” 上面的步骤安装目录的上面

tar -zxvf Appro_IPNC_RDK_DM36x_v3.1.0.tar.gz

需要这个将三个文件放到一起解压,如此才能合并. 到此安装完成。

第二步: 修改下面位置的 Rules.make

<installDir>/Source/ipnc_rdk

如:/Release/Source/ipnc_rdk

参考下面的设置

#SYSTEM := EVM

SYSTEM := IPNC

#这是用于选择硬件平台

#IPNC_PLATFORM := DM365

IPNC_PLATFORM := DM368

#这是用于选择芯片ID

#FILESYS_MODE := NFS

FILESYS_MODE := NAND

#这是用于选择模式运行的文件系统

IMGS_ID := IMGS_MICRON_MT9P031_5MP

#这是选择使用的传感器类型

13)如果你的登录并不是root模式,然后使用以下命令登录在安装过程中避免错误

(我的是root模式登录的不需要修改了)

chmod -R a rwx < IPNC_INSTALL_DIR >

chown -R <useracct> < IPNC_INSTALL_DIR >

where,

< useracct > 是你的宿主LINUX电脑上用户的登录ID。

< IPNC_INSTALL_DIR > 您设置的目录在 Rules.make.

14) 移动到Rules.make所在的安装目录

cd $(IPNC_INSTALL_DIR)/ipnc_rdk

例如: cd/Release/Source/ipnc_rdk

15) 使用下面的命令编译:

make sysall

他会拷贝到linux 内核 < TFTP_HOME > 目录下生成“uImage_ipnc_dm36x”.

此外,它使波形的的副本到 ti davinci/arch/arm/boot/ 目录下的文件 uImage.

同时,也会将所有IPNC文件可执行文件复制到文件系统,提到到输出目录位于(EXEC_DIR)设置

$(installDir)/Rules.make

说明:可以使用以下命令基于期望的功能:

IPNC增量构建的应用程序 — “make”

清除IPNC应用程序构建 — “make clean”

重建整个IPNC应用程序 — “make all”

对于增量Linux构建 — “make lsp”

清除Linux构建 — “make lspclean”

重建整个Linux — “make lspall”

对于增量DVSDK构建 — “make dvsdk”

清除DVSDK构建 — “make dvsdkclean”

重建整个DVSDK — “make dvsdkall”

增量构建的系统 — “make sys”

干净的系统构建 — “make sysclean”

重建整个系统 — “make sysall”

“make”命令将只包括构建IPNC应用程序。

“av_capture”和“ipnc_app”文件夹中。它还将复制所有IPNC文件可执行文件到文件系统

“sysall” ,”sysclean” and “sys” 构建选项将构建DVSDK,Linux和IPNC应用程序

17)可以使用以下命令生成的文件系统:

make squashfs

这将从< TFTP_HOME > 目录下复制的文件系统 “ipnc_dm36x_squashfs”

PS: 整个包是安装了ubuntu 10.04 LTS的构建和测试在主机电脑

我们建议用户检查之前,创建一个链接后安装Linux操作系统电脑方面避免编译时错误

执行make sysall 出现错误,显示交叉编译器没有安装

第三步:安装CCS交叉编译器 arm_v5t_le-

下载链接:http://pan.baidu.com/s/1hrwP5Uc 密码:ydpk

执行安装:(选择安装在 /opt/mv_pro_5.0.0目录下)

./mvl_5_0_demo_sys_setuplinux.bin

解压tar -xvf mvltools5_0_0801921_update.tar.gz

最后查看 ls /opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le/bin/arm_v5t_le-gcc

第四步: 设置交叉编译器环境变量:

cd /root

gedit .bashrc

在最后一行添加:

PATH=”/opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le/bin:

/opt/mv_pro_5.0.0/montavista/pro/bin:

/opt/mv_pro_5.0.0/montavista/common/bin:$PATH”

保存

source .bashrc //命令立即生效

第五步: 修改配置文件Rules.make

进入/home/zslf/dm368/dvsdk_dm368_4_02_00_06/psp/Release/Source/ipnc_rdk#

执行 gedit Rules.make

更改第75行,将

BUILD_TOOL_DIR := /data/datalocal_videoapps01/ipnc_tools/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le

改为:BUILD_TOOL_DIR := /opt/mv_pro_5.0.0/montavista/pro/devkit/arm/v5t_le

自动编译uboot

切换到【解压目录】/Release/Source/ipnc_rdk下使用下列命令编译安装:

make uboot clean

make uboot

编译完成后,会自动将uboot_xxxx.bin文件复制到【解压目录】

/Release/Source/ipnc_rdk/Rules.make文件中

TFTP_HOME所标示的tftp目录下。

手动编译 uboot

切换到【解压路径】/Release/Source/dvsdk_ipnctools/ipnc_psp_03_21_00_04/u-boot目录下

使用下列命令编译uboot:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- davinci_dm368_ipnc_config

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

手动内核编译

切换到【解压路径】/Release/Source/dvsdk_ipnctools/ipnc_psp_03_21_00_04/ti-davinci目录,使用命令:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- distclean

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- clean

清空源配置文件和原编译文件;

使用下列命令之一复制默认的配置文件:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- davinci_dm368_ipnc_defconfig

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- davinci_dm368_ipnc_defconfig_nand

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- davinci_dm368_ipnc_defconfig_nfs

使用下列命令修改配置:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

使用下列命令进行内核编译:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage

编译时,如果提示无规则生成csl.o/ drv.o / edmak.o / irqk.o / dm365mmap.o / cmemk.o,请将编译好的csl.o& drv.o & edmak.o & irqk.o & dm365mmap.o &cmemk.o文件复制到【解压路径】Release/Source/dvsdk_ipnctools/ipnc_psp_03_21_00_04/ti-davinci/drivers/char/目录下,这些文件请到【解压路径】

/Release/Source/dvsdk_ipnctools/linuxutils_2_26_02_05/packages/ti/sdo/linuxutils/目录和【解压路径】/Release/Source/dvsdk_ipnctools/dm365mm-module_01_00_03/module/目录和【解压路径】/Release/Source/ipnc_rdk/av_capture/framework/目录去找。

编译完成后,内核文件uImage在【解压路径】

/Release/Source/dvsdk_ipnctools/ipnc_psp_03_21_00_04/ti-davinci/arch/arm/boot下。

/home/zslf/dm368/dvsdk_dm368_4_02_00_06/psp/IPNC/Source/ipnc_rdk# make sysall

然后编译的时候会出错

find . -name drv_audio.c

./av_capture/framework/drv/usermod/src/drv_audio.c

我将这个alsa/asoundlib.h 注释掉再试试

在ipnc_app/sys_server/src/av_server_ctrl.c

有两个参数pConfig -> nVideocodecmode 和pConfig -> nVideocodecres

其中,pConfig -> nVideocodecmode是设置编码方式的,

pConfig -> nVideocodecres 是设置分辨率信息的

例如: ./av_server.out DM368 NTSC 1080P H264 4000000 VBR AUTO MENUOFE & InitAV_Server begin

应用程序编译完生成文件在 /opt/ipnc_rdk/target/filesys/opt/ipnc

执行脚本

#! /bin/sh

DVEVMDIR=/opt/ipnc

cd $DVEVMDIR

./system_server &

$DVEVMDIR/beforeloadkmodule.sh

$DVEVMDIR/loadkmodules.sh

$DVEVMDIR/loadmodules_ipnc.sh

ifconfig lo 127.0.0.1

cd $DVEVMDIR

./boot_proc 1

$DVEVMDIR/autorum.sh

mount devpts /dev/pts -t devpts

ifconfig lo 127.0.0.1

就是系统本身的IP。可在没联网情况下用于网络测试。

比如我的电脑做为网页服务器,但我没联网,没有内网和外网IP。就可以在浏览器中输入127.0.0.1测试。

1. 内核添加MT9P031

make menuconfig

Prompt: mt9p031 support Location: -> Kernel configuration -> Device Drivers -> Multimedia support (MEDIA_SUPPORT [=y]) -> Video capture adapters (VIDEO_CAPTURE_DRIVERS [=y])

2. 在 /arch/arm/mach-davinci/board-dm368-leopard.c:下的 static struct vpfe_subdev_info vpfe_sub_devs

添加MT9P031

uboot启动信息

(11设置U.boot参数:

#setenv bootargs console=ttyS0.1 15200n8 rw mem254M vide02 davincifb:vidO=

OFF:vidl=OFF:osd0=720x576x 1

6,4050K dm365_imp.opermode=O davinci—

capture.device_type2l vpfe_capture.interfaee=l vpfe_capture.con_bufsize=6291456

root=/dev/nfsnfsroot=192.168.0.138:/root/targeffs ip=192.168.0.60:192. 168.0.1:

255.255.255.0

注意,这里需要设置oper mode为0,表示IPIPE Resizer的模式为Continuous Mode,

同时设置device 为1,表示采集设备为.type MT9P031

vpfe_capture.interface=2

for TVP7002 (default)

vpfe_capture.interface=1

for Micron sensor – MT9T031

vpfe_capture.interface=0

for TVP5146

davinci_capture.device_type=0表示使用TVP5146采集

davinci_capture.device_type=1表示使用MT9P031采集,

davinci_capture.device_type=2表示使用TVP7002采集

问题解决:

我是在内核中去除掉的,在board-dm368-ipnc.c文件中:

static struct davinci_nand_pdata davinci_nand_data = {

.parts = davinci_nand_partitions,

.nr_parts = ARRAY_SIZE(davinci_nand_partitions),

//.ecc_mode = NAND_ECC_HW,

.ecc_mode = NAND_ECC_NONE,

.options = NAND_USE_FLASH_BBT,

.ecc_bits = 4,

};

IPNC 设置

Hi Marko,

Thanks for your help. Late last night I tried the same thing, and deleting the .depend file worked. I only had one. For the benefit of those about to try SDK 5.0, here are the steps needed from a clean Linux install (I used Ubintu 12.04):

For the benefit of those seeking help later, the following are the steps needed in addition to the User’s Guide to build the SDK:

1) Install Ubuntu 12.04 LTS 32-bit (didn’t try the 64-bit version)

2) Install Bison (needed to build SDK)

3) Install Flex (needed to build SDK)

4) Install acl library (needed to build file system) (sudo apt-get install libacl1-dev)

5) Install zlib library (needed to build file system) (sudo apt-get install zlib1g-dev)

6) Install lzo library (needed to build file system) (sudo apt-get install liblzo2-dev)

7) Install uuid library (needed to build file system) (sudo apt-get install uuid-dev)

8) Enable “su” (sudo passwd root)

9) Install SDK per instructions in User’s Guide

10) Version 5.0 of the SDK includes a hidden file that will cause your build to fail. Using whatever file manager your choose (for example, Nautilus under Ubuntu 12.04), enable viewing of hidden files (View | Show Hidden Files), navigate to <whatever your IPNC install directory>/Source/ipnc_rdk/ipnc_app/network/boa-0.94.13/src. Locate the file .depend and delete ONLY this one file.

10) As “su”, move to your target directory, (cd <whatever your IPNC install directory>/Source/ipnc_rdk/target), and un-tar the filesystem (tar -zxvf filesys_ipnc_dm36x.tar.gz)

11) As “su”, run “make sysall” per the instructions in the User’s Guide.

11) If the make fails with uImage not being built, the mkimage file cannot be accessed. As “su”, cp <whatever your IPNC install directory>/dvsdk_ipnctools/ipnc_psp_03_21_00_04/u-boot/tools/mkimage /usr/bin/mkimage (note: the name of the ipnc_psp directory in this command may change based on version number, see Rules.make

12) re-run “make sysall” (if necessary)

13) After the “make sysall” completes, the file system needs to be built. The User’s Guide indicates this can be done with “make ubifs”, however the makefile for this is broken. “make ubifsall” was an option in Version 4.1 of the SDK, but this has been removed, as the binaries for creating the file system have been pre-built and no source is provided. These binaries are not true Linux executables and do not accept leading path names, which breaks the makefile. My workaround is to copy the binaries mkfs.ubifs and ubinize from <whatever your IPNC install directory>/Source/ipnc_rdk/target/mtd-utils/64bit to <whatever your IPNC install directory>/Source/ipnc_rdk, and edit the makefile located in <whatever your IPNC install directory>/Source/ipnc_rdk as follows:

Under the label ubifs:

Change this –

ubifs:

ifeq ($(HARDWARE_CFG), dm365)

(UBIFS_PATH)/mkfs.ubifs -r (TARGET_FS) -m 512 -e 15360 -c 1662 -o ubifs.img

(UBIFS_PATH)/ubinize -o (SYSTEM_CFG)_(HARDWARE_CFG)_ubifs -m 512 -p 16KiB (HARDWARE_CFG)_ubinize.cfg

else

(UBIFS_PATH)/mkfs.ubifs -r (TARGET_FS) -m 2048 -e 126976 -c 313 -o ubifs.img

(UBIFS_PATH)/ubinize -o (SYSTEM_CFG)_(HARDWARE_CFG)_ubifs -m 2048 -p 128KiB (HARDWARE_CFG)_ubinize.cfg

endif

To this –

ubifs:

ifeq ($(HARDWARE_CFG), dm365)

mkfs.ubifs -r $(TARGET_FS) -m 512 -e 15360 -c 1662 -o ubifs.img

ubinize -o (SYSTEM_CFG)_(HARDWARE_CFG)_ubifs -m 512 -p 16KiB

else

mkfs.ubifs -r $(TARGET_FS) -m 2048 -e 126976 -c 313 -o ubifs.img

ubinize -o (SYSTEM_CFG)_(HARDWARE_CFG)_ubifs -m 2048 -p 128KiB

endif

Saving the makefile and running “make ubifs” as “su” will now produce the file system, placing it in the proper directory based on your architecture.

I hope this helps…

tftpboot 0x80700000 ubl_432arm_340ddr_ipnc_dm368.bin

nand erase 0x080000 0x08000

nand write 0x80700000 0x080000 0x08000

tftpboot 0x80700000 u-boot-1.3.4-dm368_ipnc.bin

nand erase 0x160000 0x28000

nand write 0x80700000 0x160000 0x28000

tftpboot 0x80700000 diagnostic_ipnc_dm368.bin

nand erase 0x360000 0x30000

nand write 0x80700000 0x360000 0x30000

tftpboot 0x80700000 uImage_ipnc_dm368

tftpboot 0x82000000 ipnc_dm368_ubifs

nand erase 0x500000 0x400000

nand write 0x80700000 0x500000 0x400000

nand erase 0x900000 0x2800000

nand write 0x82000000 0x900000 0x2800000

setenv bootcmd ‘nboot 0x80700000 0 0x500000;bootm

0x80700000′

setenv bootargs ‘mem=48M console=ttyS0,115200n8

noinitrd rw ubi.mtd=3,2048 rootfstype=ubifs

root=ubi0:rootfs cmemk.phys_start=0x83000000

cmemk.phys_end=0x88000000 cmemk.phys_start_1=0x00001000

cmemk.phys_end_1=0x00008000 cmemk.pools_1=1×28672

cmemk.allowOverlap=1 cmemk.useHeapIfPoolUnavailable=1

nohz=off highres=off clocksource=acpi_pm lpj=1077248

eth=$(ethaddr)’

saveenv

reset

setenv bootargs mem=48M console=ttyS0,115200n8 root=/dev/nfs nfsroot=192.168.115.248:/opt/ipnc_rdk/target/filesys rw ip=192.168.115.140:192.168.115.255:192.168.115.1:255.255.255.0 cmemk.phys_start=0x83000000 cmemk.phys_end=0x88000000 cmemk.phys_start_1=0x00001000 cmemk.phys_end_1=0x00008000cmemk.pools_1=1×28672 cmemk.allowOverlap=1 cmemk.useHeapIfPoolUnavailable=1 eth=$(ethaddr)

setenv bootargs mem=48M console=ttyS0,115200n8 noinitrd ip=192.168.2.194:192.168.2.76:192.168.2.1:255.255.255.0 rw ubi.mtd=3,2048 rootfstype=ubifs root=ubi0:rootfs cmemk.phys_start=0x83000000 cmemk.phys_end=0x88000000 cmemk.phys_start_1=0x00001000 cmemk.phys_end_1=0x00008000 cmemk.pools_1=1×28672 cmemk.allowOverlap=1 cmemk.useHeapIfPoolUnavailable=1 nohz=off highres=off clocksource=acpi_pm lpj=1077248 eth=$(ethaddr)

setenv bootargs dm365_imp.oper_mode=0 mem=48M console=ttyS0,115200n8 noinitrd rw ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs vide0=davincifb:vid0=OFF:vidl=OFF:osd0=720x576x16,4050K dm365_imp.oper_mode=0 davinci_capture.device_type=l vpfe_capture.interface=l vpfe_capture.cont_bufsize=6291456 ;

./encode -zxl -v t.264 -I 4 -y 3 -b 1000 -f -w

./encode -v t.264 -I 1 -y 2

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170236.html原文链接:https://javaforall.cn

0 人点赞