zzsx1983

zzsx1983

0个粉丝

3

问答

0

专栏

1

资料

zzsx1983  发布于  2013-06-26 10:51:38
采纳率 0%
3个问答
7052

分享hi3515 PC端的文档 linux开饭环境用户指南

 
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。
易百纳技术社区文件: Hi3515 Linux开发环境用户指南.pdf
下载
我来回答
回答5个
时间排序
认可量排序

Takin

1个粉丝

41

问答

0

专栏

0

资料

Takin 2016-07-20 07:57:59
认可0
发现海思说明文档以前版本详细些,不知是不是LZ增加了些什么

呆呆

0个粉丝

0

问答

0

专栏

0

资料

呆呆 2016-08-06 11:54:28
认可0
这些sdk里都有呀

呆呆

0个粉丝

0

问答

0

专栏

0

资料

呆呆 2016-08-10 01:55:26
认可0
这些sdk里都有呀

cnc2020

0个粉丝

0

问答

0

专栏

0

资料

cnc2020 2015-04-18 23:40:15
认可0
good job:P

kdkgod

0个粉丝

20

问答

0

专栏

0

资料

kdkgod 2016-07-20 16:03:23
认可0
:handshake:handshake
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区