当前位置:文档之家› Hi3716C平台SDK安装以及研究

Hi3716C平台SDK安装以及研究

Hi3716C平台SDK安装以及研究
Hi3716C平台SDK安装以及研究

Hi3716C平台SDK安装以及研究

(2011-01-18 13:20:36)

转载▼

分类:嵌入式Linux

标签:

hi3716

linux

gc800

作者:Sam (甄峰) sam_code@https://www.doczj.com/doc/e617236344.html,

因为之前使用过Hi3110平台,觉得海思SDK安装不是特别合乎自己的习惯,所以这次对其安装做研究并修改其行为。

0.Hi3716平台各芯片介绍:

Hi3716M不支持GPU 功能,Hi3716C支持GPU 功能,Hi3716H性能是Hi3716C中的一半。

GPU(Graphics Processing Unit)集成专有的3D 加速引擎,提供OpenGL

ES2.0/1.1/1.0、OpenVG1.1/1.0 标准API 接口。具有超强的运算性能:

400M pixels/s 的像素处理能力。

400M pixels/s 的纹理处理能力。

200M vertex/s 的顶点处理能力。

40M triangles/s 的几何处理能力(平均)。

1. 海思server_install行为:

海思文档中,要求首先以root权限运行server_install

server_install的行为如下:

察看SDK toolchain目录下3个交叉编译器是否存在,如果存在,则进入其中并运行安装和设置程序。

if [ -d ./source/osdrv/toolchains/gcc-3.4.3-csl-uClibc-0.9.30 ] //如果目录存在

then

cd ./source/osdrv/toolchains/gcc-3.4.3-csl-uClibc-0.9.30 //进入之

chmod 777 cross.install //修改权限

./cross.install //运行之

cd -

fi

依次运行3个交叉编译器。

2. cross.install 行为:

if [ -z "$1" ] //如果参数为空

then

echo "CROSS_COMPILER_PATH=$BIN_DIR"

if [ -n "`grep 201001201418 $TOOL_DIR/version`" ] //如果指定安装目录中version中没有特定的字符串(toolchain 版本信息),则表明此toolchain没有安装或者是旧版本。否则,即为此toolchain已经安装。

then

echo "Cross Tools has been installed yet!" >&2

exit 0 //已经安装,则退出安装

fi

mkdir -pv $TOP_DIR // 创建toolchain目录

[ $? != 0 ] && exit 1 //如果返回错误,则退出

echo "Delete exist directory..." >&2

rm $TOOL_DIR -rf //删除目录下所有东西

[ $? != 0 ] && exit 1 //错误则返回

echo "Extract cross tools ..." >&2

tar -xjf $TOOLS_PKG -C $TOP_DIR // 把toolchain解压缩到对应目录下

[ $? != 0 ] && exit 1

//将toolchain/bin目录加入/etc/profile中的PATH中。

if [ -z "`grep "$BIN_DIR" < /etc/profile`" ] ; then

echo "export path $BIN_DIR" >&2 cat >> /etc/profile << EOF

# `date`

# Hisilicon Linux, Cross-Toolchain

PATH

export

PATH="$BIN_DIR:\$PATH"

#

EOF

[ $? != 0 ] && exit 1

else

echo "skip export toolchains path" >&2 fi

exit 0

其实这最后一步,将export PATH=$PATH:..... 加入/etc/profile

就是Sam所不能接受的,Sam通常在同一台Linux上编译超过10种平台的程序,所用toolchain更是庞杂。所以不能接受这种一个人生病,大家全吃药的模式。(因为每个终端起来之前,都会运行/etc/profile)

Sam的做法是:shell保持一个纯净的PATH, LD_LIBRARY_PATH等。需要在本终端设置某toolchain的toolchain,再使用setenv来设置。

SDK的编译:

#make build

修改config file.

#make linux_clean

#make linux

二:烧入和设置:

2.1. 烧入前的准备:

重新启动后立刻按空格进入bootloader 设置状态:

hisilicon #

察看设置:

hisilicon # printenv

设置:

setenv serverip 10.0.0.39

setenv ipaddr 10.0.0.20

setenv netmask 255.255.0.0

保存:

saveenv

察看网络是否可用:

hisilicon # ping 10.0.0.39

Hisilicon ETH net controler

MAC: 9E-1C-54-AC-E0-1C

UP_PORT : phy status change : LINK=DOWN : DUPLEX=FULL : SPEED=100M

UP_PORT : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M

host 10.0.0.39 is alive

2.2: 将Kernel和rootfs保存如tftpboot

#cd pub/image

#cp hi_kernel.bin /tftpboot/

#cp hi_kernel.bin /tftpboot/

2.3:烧入Kernel:

mw.b 82000000 ff 300000 //将ddr写为0xff,写3M

tftp 82000000 hi_kernel.bin //下载kernel到ddr

nand erase 200000 300000 //擦写0x100000后面的3M flash空间

nand write 82000000 200000 300000 //把ddr中的kernel写入nand flash,写入3M的大小2.4: 烧入rootfs:

mw.b 82000000 ff a00000 //将ddr写为0xff, a000000 根据文件系统镜像大小可能需要改动,一般应该大于镜像的大小

tftp 82000000 rootbox.yaffs //下载rootbox到ddr

nand erase 500000 //后面不加长度,擦写0x500000后面的所有flash空间

nand write.yaffs 82000000 500000 xx //把ddr中的rootbox写入nand flash, xx是写入大小(必须是rootbox.yaffs的大小,一个字节也不能错),

Sam: 因为Bytes transferred = 23358720 (1646d00 hex)

nand write.yaffs 82000000 500000 1646d00

2.5:设置启动参数:

setenv bootcmd 'nand read 0x82000000 0x200000 0x300000;bootm 0x82000000'

setenv bootargs 'mem=96M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:5M(boot),60M(rootfs),-(others)'

saveenv

三. Bluetooth modules编译时遇到的问题:

使用正常手段编译了bluetooth modules.

insmod时,l2cap遇到问题,说是crc16没有提供符号。

于是Sam在:

make menuconfig

Library routines --->CRC16 functions

选中其为modules.

并首先装载之,一切OK.

四:Kernel与应用程序使用不同编译器时出的问题:

这个问题在上次其实已经解决了,但放在这里记录下来:

当时在Hi3560H上,海思提供了多个Toolchain,但在Kernel和应用程序编译时使用不同的编译器。Sam当时心中有些不安,觉得这里会是一个隐患,尤其是Bluetooth 需要使用ioctl 来在应用程序和Kernel之间交互数据。

但在察看具体代码后,觉得问题应该不大,因为几乎所有struct,都定义为

__attribute__((packed)) 。

但奇怪的是,哪怕这样,当应用程序和Kernel使用不同的编译器时,也会出现struct解析出错(有规律的错位)的情况。后来统一编译器后,问题就解决。但Sam还是有些不明白为什么__attribute__((packed)) 后还是会出问题。

相关主题
文本预览
相关文档 最新文档