分享hi3515 PC端的文档 linux开饭环境用户指南
2 E币
成为会员,免费下载资料
文件大小:1.81 MB
上传者:zzsx1983
时间:2013-06-26 10:51:23
下载量:25
Hi3515 SDK 安装以及升级使用说明
序
1、先明确文中的几个概念。
第一章 Hi3515 SDK V1.x.x.x 版本升级操作说明
如果您是首次安装本SDK,请直接参看第2章。
第二章 首次安装SDK
1、Hi3515 SDK包位置
在"Hi3515 DMS V100R001C01XXX/software/board/"目录下,您可以看到一个 Hi3515_SDK_V1.x.x.x.tgz 的文件,
该文件就是Hi3515的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3515_SDK_V1.x.x.x.tgz ,
解压缩该文件,可以得到一个Hi3515_SDK_V1.x.x.x目录。
3、在linux服务器上安装交叉编译器
1) 进入tools/toolchains,运行chmod +x cross.install,然后运行./cross.install即可,注意,需要有sudo权限或者root权限
2) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
4、展开SDK包的其他内容(注意!这一步不可以省略)
返回SDK目录,运行./sdk.unpack将会展开SDK包打包压缩存放的其他内容,请按照提示完成操作。这步操作可能需要几分钟。
如果您需要通过WINDOWS中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
5、SDK目录介绍
Hi3515_SDK_VX.X.X.X 目录结构如下:
|-- pub
| |-- images # 可供FLASH烧写的映像文件,如内核、jffs2文件系统
| |-- include # 公共头文件(该目录已废弃)
| |-- kbuild-FULL_REL # 内核头文件,内核模块使用该目录来进行编译
| | `-- include # 应用程序需要的头文件
| |-- lib # 应用程序需要的库文件
| |-- resource # 构成rootfs的各种组件,一般不需要关心
| |-- standee # 各模块的原始安装文件,如需要mmz.ko就可以在这里找到,同时也包含组件所需的调试信息
| `-- tarball # SDK各模块的打包备份文件
|
|-- extdrv # 板级外围驱动源码
|-- rootfs-FULL_REL # 根文件系统
|-- scripts # 存放相关脚本的目录
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- source # 放置所有源代码的目录
| |-- app # 应用程序类源代码
| |-- drv # 驱动类源代码
| |-- lib # Lib类源代码
| `-- os # OS相关源代码,如内核
|-- tools # 工具类
| |-- bin # 可执行程序,如mkfs.cramfs
| `-- toolchains # 交叉工具链,展开SDK时已自动安装
|
|-- mpp # 媒体处理平台发布的头文件、库以及内核模块
|-- component # 组件源代码
|-- include # 对外头文件,包括FB,TDE
|-- ko # 内核模块,包括FB,TDE
|-- lib # release版本库以及音频库
|-- tools # 调试工具
`-- sample # sample代码,进入各个子目录,可以直接编译运行
第三章、安装、升级Hi3515DEMO板开发开发环境
# 如果您使用的Hi3515的DEMO板,可以按照以下步骤安装u-boot,内核以及文件系统,以下步骤均使用网络来更新。
# 通常,您拿到的单板中已经有u-boot,如果没有的话,就需要使用仿真器进行烧写。
# 具体操作步骤,请参见 DMS\software\Doc下的《Hi3515 Linux 开发环境用户指南》和 DMS\application notes\下的《Hi3515 U-boot移植应用 Application Notes》。
# 以下操作假设您的单板已经有了u-boot。
1、配置tftp服务器
# 可以使用任意的tftp服务器,将pub/images下的文件拷贝到tftp服务器的目录下。
2、更新u-boot的环境变量
# 单板上电后,敲Ctrl-C,进入u-boot。先设置好serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,确保网络畅通。
# 具体的使用方法请参见《Hi3515 Linux 开发环境用户指南》。
3、烧写并设置u-boot
(1)烧写
protect off 0x80000000 +0x80000
erase 0x80000000 +0x80000
tftp 0x80000000 u-boot-hi3515v100_230M.bin;
protect on 0x80000000 +0x80000
(2)设置
# 在u-boot下设置启动参数:(操作系统分配32MB的内存,并使用jffs2的文件系统,文件系统的大小为16MB)
setenv bootargs mem=64M console=ttyAMA0,115200 root=1f01 rootfstype=jffs2 mtdparts=physmap-flash.0:14M(boot),16M(rootfs) pcimod=host pciclksel=1
setenv bootcmd 'bootm 0x80100000'
saveenv
4、烧写内核和文件系统
erase 0x80100000 +0x200000;
tftp 0x80100000 kernel-hi3515v100_full_release.img;
erase 0x80E00000 +0x1000000;
tftp 0x80E00000 rootfs-FULL_REL-Flash.jffs2;
5、启动新系统
# 重启单板即可,第一次进入系统时,挂载文件系统的速度可能比较慢,请耐心等待。
8、使用新系统
# 切记,不可随意在Linux下复位单板或断电,因为这样可能会损坏文件系统,导致文件丢失、损坏以致系统无法启动!
# 每次重启单板请使用reboot;同理,单板断电时请先运行halt,待到挂死后再断电,这样可以有效地保护FLASH文件系统,也可以避免不必要的麻烦。
第四章、使用SDK和DEMO板进行开发
1、开启Linux下的网络
# 执行命令加载网络驱动:
modprobe hiether;
# 设置网络
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;
ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
route add default gw xx.xx.xx.xx
# 然后ping一下其他机器,如无意外,网络将能正常工作。
# 如果收包性能不足,目前确认通过增加协议栈缓存即可,可以按如下操作来调整收包缓存默认值和最大值
echo "1048576" /proc/sys/net/core/rmem_default;
echo "2048576" /proc/sys/net/core/rmem_max;
# 在内存紧张的情况下,如果再进行繁重的网络访问,有可能会报出缺页异常。此时通过限制系统将内存用于文件系统cache的数值,
# 可以提高网络突发情况下的处理能力。可以使用下面的命令将min_free_kbytes设置为2MB,提高网络突发情况下的可用内存数量
echo 2000 > /proc/sys/vm/min_free_kbytes
2、使用NFS
# 在开发阶段,推荐使用NFS作为开发环境。您开发的代码都可以放在NFS服务器上,通过NFS可以直接在DEMO板上访问到NFS服务器。
# 执行命令加载NFS驱动:
modprobe nfs
# 然后挂载NFS文件系统:
mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt
# 然后就可以在/mnt目录下看到你服务器上的文件了,当然,如果你挂载的NFS目录就是SDK下面的rootfs,那么你可以:
chroot /mnt
# 然后就可以在新的根目录下工作了。
3、开启telnet服务
# 网络正常后,运行命令 telnetd& 就可以启动单板telnet服务,然后才能telnet到单板。
4、使用硬盘FAT32
# 按以下顺序依次插入ko文件,由于部分模块已经编入内核了,以下可能有部分命令冗余:
modprobe fat
modprobe vfat
modprobe msdos
modprobe nls_ascii
modprobe sd_mod
modprobe ahci enable_ncq=1 # 1, enable_ncq:1,打开NCQ(硬件磁盘调度算法);0,关闭NCQ。
# 注意: 调试时,如果对部分驱动有改动,重新生成了新模块,则无法通过modprobe方式插入,需使用insmod插入新模块。
# 然后挂载FAT32文件系统:
mount -t vfat /dev/sda1 /mnt
# 然后就可以在/mnt目录下看到文件了
# 其他驱动的使用请参考文档《驱动模块使用指南.txt》
#! 当然,你也可以把以上操作都放到脚本里面,并让它在linux启动的时候自动执行。
#! OK,到这里,所有的环境都已经准备好了,你可以开始媒体业务体验之旅了。
5、运行MPP业务
# 进入mpp ko目录,加载KO
cd mpp/ko
./load
# (确保sample已编译)进入各sample目录下,执行即可。例:
cd mpp/sample/vio
./sample_vio 1
第五章 地址空间分配与使用
1、RAM 内存管理
# DEMO板上有一块32bit DDR内存:
# DDR 256M,对应物理地址从0xC0000000 到 0xCFFFFFFF;
# 这些内存,一部分由操作系统管理,称之为os内存;另一部分则需根据业务进行灵活分配,称之为mmz内存。
# 为此,SDK提供了一个内核模块mmz,来管理mmz内存。用户可以在插入mmz模块时,指定其管理的内存,例如:
# modprobe mmz mmz=anonymous,0,0xC2000000,224M anony=1
# 表示mmz管理的内存名字为anonymous,起始地址为 0xC2000000,大小为224M。
2、DEMO板RAM内存分配
# DEMO板的内存分配如下图所示:
图1 DDRA内存分配
-----|-------| 0xC0000000 # memory managed by OS.
64M | OS |
| |
-----|-------| 0xC4000000 # Name:anonymous. Usage: Video Buffer, Frame buffer, stream buffer etc.
192M | MMZ |
| |
-----|-------| 0xD0000000 # End of 32-bit ddr.
3、flash地址空间
demo 板上有一块32-bit的nor flash。
图2 flash空间分配
-----|-------| 0x80000000
1M |boot |
| |
-----|-------| 0x80100000
2M |kernel |
| |
-----|-------| 0x80300000
11M |rsv |
| |
-----|-------| 0x80E00000
16M |fs |
| |
-----|-------| 0x82000000
# Flash 擦除需根据分区情况进行
uboot: erase 0x80000000 +0x80000 # 必须从0x80000000开始擦除,建议擦除大小0x80000, 这样原来保存的环境变量可不被擦除,避免重新设置。
kernel: erase 0x80100000 +0x200000 # 必须擦除足够的空间,以写入kernel image文件
rootfs: erase 0x80E00000 +0x1000000 # 必须从分区2起始地址开始擦除,必须擦除分区2全部内容。
# flash的空间分配,要通过bootargs告诉kernel
setenv bootargs ......(此处省略):14M(boot),16M(rootfs)
14M(boot) 表示分区1,14M,存放 boot(1M),kernel(2M),RSV(11M)。
16M(rootfs) 表示分区2,16M,存放 fs(16M)。
第六章 FAQ
Q1: 如何调整内存分配?
A1: 目前SDK提供了参考内存分配,详见第五章第2节中内存分配图。
你可以调整它,但一定要小心。
*** 请谨记一个原则:内存分配不能重叠。***
+-----+----------+------------------------------------------------------------------------------------+
|序号 | 内存 | 修改示例及说明 |
+-----+----------+------------------------------------------------------------------------------------+
|(1) | os | 修改前 setenv bootargs mem=64M ... os 管理 64M 内存 |
| | | 修改后 setenv bootargs mem=80M ... os 管理 80M 内存 |
+-----+----------+------------------------------------------------------------------------------------+
|(2) | mmz | mpp/ko/load <-- 修改该文件 |
| | | modprobe mmz=anonymous,0,0xC5000000,176M mmz管理0xC4800000开始的176M 内存 |
+-----+----------+------------------------------------------------------------------------------------+
Q2: 编译应用程序时有什么注意事项吗?
A2: 编译应用程序时,请在Makefile中增加宏定义 -Dhi3515。
序
1、先明确文中的几个概念。
第一章 Hi3515 SDK V1.x.x.x 版本升级操作说明
如果您是首次安装本SDK,请直接参看第2章。
第二章 首次安装SDK
1、Hi3515 SDK包位置
在"Hi3515 DMS V100R001C01XXX/software/board/"目录下,您可以看到一个 Hi3515_SDK_V1.x.x.x.tgz 的文件,
该文件就是Hi3515的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3515_SDK_V1.x.x.x.tgz ,
解压缩该文件,可以得到一个Hi3515_SDK_V1.x.x.x目录。
3、在linux服务器上安装交叉编译器
1) 进入tools/toolchains,运行chmod +x cross.install,然后运行./cross.install即可,注意,需要有sudo权限或者root权限
2) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
4、展开SDK包的其他内容(注意!这一步不可以省略)
返回SDK目录,运行./sdk.unpack将会展开SDK包打包压缩存放的其他内容,请按照提示完成操作。这步操作可能需要几分钟。
如果您需要通过WINDOWS中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
5、SDK目录介绍
Hi3515_SDK_VX.X.X.X 目录结构如下:
|-- pub
| |-- images # 可供FLASH烧写的映像文件,如内核、jffs2文件系统
| |-- include # 公共头文件(该目录已废弃)
| |-- kbuild-FULL_REL # 内核头文件,内核模块使用该目录来进行编译
| | `-- include # 应用程序需要的头文件
| |-- lib # 应用程序需要的库文件
| |-- resource # 构成rootfs的各种组件,一般不需要关心
| |-- standee # 各模块的原始安装文件,如需要mmz.ko就可以在这里找到,同时也包含组件所需的调试信息
| `-- tarball # SDK各模块的打包备份文件
|
|-- extdrv # 板级外围驱动源码
|-- rootfs-FULL_REL # 根文件系统
|-- scripts # 存放相关脚本的目录
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- source # 放置所有源代码的目录
| |-- app # 应用程序类源代码
| |-- drv # 驱动类源代码
| |-- lib # Lib类源代码
| `-- os # OS相关源代码,如内核
|-- tools # 工具类
| |-- bin # 可执行程序,如mkfs.cramfs
| `-- toolchains # 交叉工具链,展开SDK时已自动安装
|
|-- mpp # 媒体处理平台发布的头文件、库以及内核模块
|-- component # 组件源代码
|-- include # 对外头文件,包括FB,TDE
|-- ko # 内核模块,包括FB,TDE
|-- lib # release版本库以及音频库
|-- tools # 调试工具
`-- sample # sample代码,进入各个子目录,可以直接编译运行
第三章、安装、升级Hi3515DEMO板开发开发环境
# 如果您使用的Hi3515的DEMO板,可以按照以下步骤安装u-boot,内核以及文件系统,以下步骤均使用网络来更新。
# 通常,您拿到的单板中已经有u-boot,如果没有的话,就需要使用仿真器进行烧写。
# 具体操作步骤,请参见 DMS\software\Doc下的《Hi3515 Linux 开发环境用户指南》和 DMS\application notes\下的《Hi3515 U-boot移植应用 Application Notes》。
# 以下操作假设您的单板已经有了u-boot。
1、配置tftp服务器
# 可以使用任意的tftp服务器,将pub/images下的文件拷贝到tftp服务器的目录下。
2、更新u-boot的环境变量
# 单板上电后,敲Ctrl-C,进入u-boot。先设置好serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,确保网络畅通。
# 具体的使用方法请参见《Hi3515 Linux 开发环境用户指南》。
3、烧写并设置u-boot
(1)烧写
protect off 0x80000000 +0x80000
erase 0x80000000 +0x80000
tftp 0x80000000 u-boot-hi3515v100_230M.bin;
protect on 0x80000000 +0x80000
(2)设置
# 在u-boot下设置启动参数:(操作系统分配32MB的内存,并使用jffs2的文件系统,文件系统的大小为16MB)
setenv bootargs mem=64M console=ttyAMA0,115200 root=1f01 rootfstype=jffs2 mtdparts=physmap-flash.0:14M(boot),16M(rootfs) pcimod=host pciclksel=1
setenv bootcmd 'bootm 0x80100000'
saveenv
4、烧写内核和文件系统
erase 0x80100000 +0x200000;
tftp 0x80100000 kernel-hi3515v100_full_release.img;
erase 0x80E00000 +0x1000000;
tftp 0x80E00000 rootfs-FULL_REL-Flash.jffs2;
5、启动新系统
# 重启单板即可,第一次进入系统时,挂载文件系统的速度可能比较慢,请耐心等待。
8、使用新系统
# 切记,不可随意在Linux下复位单板或断电,因为这样可能会损坏文件系统,导致文件丢失、损坏以致系统无法启动!
# 每次重启单板请使用reboot;同理,单板断电时请先运行halt,待到挂死后再断电,这样可以有效地保护FLASH文件系统,也可以避免不必要的麻烦。
第四章、使用SDK和DEMO板进行开发
1、开启Linux下的网络
# 执行命令加载网络驱动:
modprobe hiether;
# 设置网络
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;
ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
route add default gw xx.xx.xx.xx
# 然后ping一下其他机器,如无意外,网络将能正常工作。
# 如果收包性能不足,目前确认通过增加协议栈缓存即可,可以按如下操作来调整收包缓存默认值和最大值
echo "1048576" /proc/sys/net/core/rmem_default;
echo "2048576" /proc/sys/net/core/rmem_max;
# 在内存紧张的情况下,如果再进行繁重的网络访问,有可能会报出缺页异常。此时通过限制系统将内存用于文件系统cache的数值,
# 可以提高网络突发情况下的处理能力。可以使用下面的命令将min_free_kbytes设置为2MB,提高网络突发情况下的可用内存数量
echo 2000 > /proc/sys/vm/min_free_kbytes
2、使用NFS
# 在开发阶段,推荐使用NFS作为开发环境。您开发的代码都可以放在NFS服务器上,通过NFS可以直接在DEMO板上访问到NFS服务器。
# 执行命令加载NFS驱动:
modprobe nfs
# 然后挂载NFS文件系统:
mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt
# 然后就可以在/mnt目录下看到你服务器上的文件了,当然,如果你挂载的NFS目录就是SDK下面的rootfs,那么你可以:
chroot /mnt
# 然后就可以在新的根目录下工作了。
3、开启telnet服务
# 网络正常后,运行命令 telnetd& 就可以启动单板telnet服务,然后才能telnet到单板。
4、使用硬盘FAT32
# 按以下顺序依次插入ko文件,由于部分模块已经编入内核了,以下可能有部分命令冗余:
modprobe fat
modprobe vfat
modprobe msdos
modprobe nls_ascii
modprobe sd_mod
modprobe ahci enable_ncq=1 # 1, enable_ncq:1,打开NCQ(硬件磁盘调度算法);0,关闭NCQ。
# 注意: 调试时,如果对部分驱动有改动,重新生成了新模块,则无法通过modprobe方式插入,需使用insmod插入新模块。
# 然后挂载FAT32文件系统:
mount -t vfat /dev/sda1 /mnt
# 然后就可以在/mnt目录下看到文件了
# 其他驱动的使用请参考文档《驱动模块使用指南.txt》
#! 当然,你也可以把以上操作都放到脚本里面,并让它在linux启动的时候自动执行。
#! OK,到这里,所有的环境都已经准备好了,你可以开始媒体业务体验之旅了。
5、运行MPP业务
# 进入mpp ko目录,加载KO
cd mpp/ko
./load
# (确保sample已编译)进入各sample目录下,执行即可。例:
cd mpp/sample/vio
./sample_vio 1
第五章 地址空间分配与使用
1、RAM 内存管理
# DEMO板上有一块32bit DDR内存:
# DDR 256M,对应物理地址从0xC0000000 到 0xCFFFFFFF;
# 这些内存,一部分由操作系统管理,称之为os内存;另一部分则需根据业务进行灵活分配,称之为mmz内存。
# 为此,SDK提供了一个内核模块mmz,来管理mmz内存。用户可以在插入mmz模块时,指定其管理的内存,例如:
# modprobe mmz mmz=anonymous,0,0xC2000000,224M anony=1
# 表示mmz管理的内存名字为anonymous,起始地址为 0xC2000000,大小为224M。
2、DEMO板RAM内存分配
# DEMO板的内存分配如下图所示:
图1 DDRA内存分配
-----|-------| 0xC0000000 # memory managed by OS.
64M | OS |
| |
-----|-------| 0xC4000000 # Name:anonymous. Usage: Video Buffer, Frame buffer, stream buffer etc.
192M | MMZ |
| |
-----|-------| 0xD0000000 # End of 32-bit ddr.
3、flash地址空间
demo 板上有一块32-bit的nor flash。
图2 flash空间分配
-----|-------| 0x80000000
1M |boot |
| |
-----|-------| 0x80100000
2M |kernel |
| |
-----|-------| 0x80300000
11M |rsv |
| |
-----|-------| 0x80E00000
16M |fs |
| |
-----|-------| 0x82000000
# Flash 擦除需根据分区情况进行
uboot: erase 0x80000000 +0x80000 # 必须从0x80000000开始擦除,建议擦除大小0x80000, 这样原来保存的环境变量可不被擦除,避免重新设置。
kernel: erase 0x80100000 +0x200000 # 必须擦除足够的空间,以写入kernel image文件
rootfs: erase 0x80E00000 +0x1000000 # 必须从分区2起始地址开始擦除,必须擦除分区2全部内容。
# flash的空间分配,要通过bootargs告诉kernel
setenv bootargs ......(此处省略):14M(boot),16M(rootfs)
14M(boot) 表示分区1,14M,存放 boot(1M),kernel(2M),RSV(11M)。
16M(rootfs) 表示分区2,16M,存放 fs(16M)。
第六章 FAQ
Q1: 如何调整内存分配?
A1: 目前SDK提供了参考内存分配,详见第五章第2节中内存分配图。
你可以调整它,但一定要小心。
*** 请谨记一个原则:内存分配不能重叠。***
+-----+----------+------------------------------------------------------------------------------------+
|序号 | 内存 | 修改示例及说明 |
+-----+----------+------------------------------------------------------------------------------------+
|(1) | os | 修改前 setenv bootargs mem=64M ... os 管理 64M 内存 |
| | | 修改后 setenv bootargs mem=80M ... os 管理 80M 内存 |
+-----+----------+------------------------------------------------------------------------------------+
|(2) | mmz | mpp/ko/load <-- 修改该文件 |
| | | modprobe mmz=anonymous,0,0xC5000000,176M mmz管理0xC4800000开始的176M 内存 |
+-----+----------+------------------------------------------------------------------------------------+
Q2: 编译应用程序时有什么注意事项吗?
A2: 编译应用程序时,请在Makefile中增加宏定义 -Dhi3515。
展开》
折叠》