2019.7.2 IPC–Hi3516 环境搭建

2019.7.2 IPC–Hi3516 环境搭建

1.Ubuntu的安装
使用的是Ubuntu 16.04

2 .海思SDK的安装
1、Hi3516 SDK包位置
在"Hi3516_V100R001***/01.software/board"目录下,您可以看到一个 Hi3516_SDK_Vx.x.x.x.tgz 的文件,
该文件就是Hi3516的软件开发包。

2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3516_SDK_Vx.x.x.x.tgz ,
解压缩该文件,可以得到一个Hi3516_SDK_Vx.x.x.x目录。

3、展开SDK包内容
返回Hi3516_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。

4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入Hi3516_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv300-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限):
进入Hi3516_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。

5、Ubuntu 为64位,Hi3516ev100为32位,需要兼容,需要apt-get以下包

sudo apt-get install lib32stdc++6
sudo apt-get install libc6:i386
sudo apt-get install lib32z1*

不然可能会包以下错误:

/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/…/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/…/…/…/…/arm-hisiv300-linux-uclibcgnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

6、编译osdrv
参见osdrv目录下readme

7、SDK目录介绍
Hi3521A_SDK_Vx.x.x.x 目录结构如下:
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- osdrv # 存放操作系统及相关驱动的目录
| |-- opensource # opensource源代码
| | |-- busybox # busybox源代码
| | |-- kernel # linux内核源代码
| | |-- toolchain # 交叉编译器
| | |-- uboot # uboot源代码
| |-- pub # 编译好的镜像、工具、drv驱动等
| |-- tools # linux工具源代码
| |-- readme_cn.txt # osdrv使用说明(中文版)
| |-- readme_en.txt # osdrv使用说明(英文版)
| |-- … #
| `-- Makefile # osdrv Makefile
|-- package # 存放SDK各种压缩包的目录
| |-- osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包
| |-- mpp.tgz # 媒体处理平台软件压缩包
| |-- drv.tgz # drv压缩包
| |-- rootfs_*.tgz # rootfs压缩包
| |-- image * # 可供FLASH烧写的映像文件,如内核、根文件系统
|-- scripts # 存放shell脚本的目录
|-- drv # drv目录
|-- mpp # 存放媒体处理平台的目录
|-- component # 组件源代码
|-- extdrv # 板级外围驱动源代码
|-- include # 对外头文件
|-- ko # 内核模块
|-- lib # release版本库以及音频库
|-- Makefile.param # mpp一些全局编译选项
|-- tools # 媒体处理相关工具
|–sample #例子

3 . busybox

/bin/sh: arm-hisiv600-linux-gcc: command not found

经过查看arm-hisiv600-linux-gcc -v,一切正常。

然后sudo -s切换到当前用户的root用户,发现PATH中没有arm-hisiv600-linux-gcc的路径,然后加上这个:

export PATH=/opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/bin:$PATH ------liteos编译工具

export PATH=/opt/hisi-linux/x86-arm/arm-hisiv600-linux/target/bin:$PATH ------linux编译工具

@ubuntu:/home/dev/busybox-1.19.3# make menuconfig
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:0:
scripts/kconfig/lxdialog/dialog.h:31:20: fatal error: curses.h: 没有那个文件或目录
compilation terminated.
make[2]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make[1]: *** [menuconfig] 错误 2
make: *** [menuconfig] 错误 2

这时因为ubuntu系统中缺少一个套件 ncurses devel ,把此套件安装下即可

apt-get install libncurses5-dev

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

交叉编译平台 ubuntu12.04 x64
交叉编译工具链:Hi3516 arm-hisiv300

配置交叉环境时出现:

arm-hisiv300-linux-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory```

/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

原因:缺少32位库,由于ubuntu12.04我使用的是64位的
解决:

sudo apt-get install lib32stdc++6*
sudo apt-get install lib32z1*

否则出现还会如下错误:

/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/…/lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/…/…/…/…/arm-hisiv300-linux-uclibcgnueabi/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

4. uboot下通过tftp下载内核与文件系统

在这里插入图片描述
注:这种方式为spi falsh
a. uboot烧录
tftp 0x82000000 uboot_hi3516ev100.bin
将uboot_hi3516ev100.bin保存到 0x82000000
sf probe 0
- init flash device on given SPI bus and chip select
sf erase 0 100000
sf write 0x82000000 0x0 0x100000
将0x82000000的数据cpy到 flash 偏移 0 大小 100000
b. uImage 烧录
tftp 0x82000000 uImage_hi3516ev100.bin
sf probe 0
sf erase 0x100000 0x200000
sf write 0x82000000 0x100000 0x200000
c .文件系统烧录
tftp 0x82000000 rootfs_hi3516ev100_64k.jffs2
sf probe 0
sf erase 0x300000 0x500000
sf write 0x82000000 0x300000 0x500000
d.启动参数设置
setenv bootargs ‘mem=8M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2
rwmtdparts=hi_sfc:1M(boot),2M(kernel),5M(rootfs)’
setenv bootcmd ‘sf probe 0;sf read 0x82000000 0x100000 0x200000;bootm 0x82000000’
save

参数解释: bootcmd :
 sf read 0x82000000 0x100000 0x200000;  uboot启动内核时读取的位置:
 falsh从偏移0x100000,读取的大小:0x200000,将其读到0x8200000,。
 bootm:内核的启动位置0x8200000.

bootargs=mem=24M console=ttyAMA0,115200 root=/dev/nfs rw noinitrd ip=192.168.16.197:192.168.16.130:192.168.16.1:255.255.255.0::eth0::off nfsroot=192.168.16.130:/work/squashfs-root mtdparts=hi_sfc:192K(boot),1344K(kernel),6144K(rootfs),512K(config)

知识点补充

		**1. phy**
		PHY(英语:Port Physical Layer),中文可称之为端口物理层,是一个对OSI
		模型物理层的共同简称。
		2.  tftp
		TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族
		中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、
		开销不大的文件传输服务。端口号为69。是基于UDP实现的。
		3. SVN
		svn是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、
	  	CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多
	  	版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个
	  	人共同开发同一个项目,共用资源的目的。
	  	


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值