本节我们开始对SDK进行安装和编译
因为我是用的是vmware的虚拟机
所以首先需要将SDK包传到linux中
可以使用putty与linux连接,传输文件
但这里,我们应用的是共享文件夹
通过这个方式可以设置共享文件夹
在linux平台可以看见这个windos文件夹里的文件
注意:要在虚拟机关闭的情况下进行设置
运行和挂起时都不能设置
完成后
1、输入 cd /mnt/hgfs
进入共享区
ls查看你刚才设定的共享文件夹
通过tar -zxf Hi3536_SDK_Vx.x.x.x.tgz 进行解压
在共享区进行编译会出现报错:
ln: 创建符号链接 “asm”: 不支持的操作
2、所以要把文件通过CP之类的命令转移到其他区域
3、打开解压出的Hi3536_SDK_Vx.x.x.x目录
运行./sdk.unpack(请用root或sudo权限执行)
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入Hi3536_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv300-linux目录,运行chmod +x cross.v300.install,然后运行./cross.v300.install即可。
2) 安装glibc交叉编译器:
进入Hi3536_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,运行chmod +x cross.v400.install,然后运行./cross.v400.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
5、编译osdrv
本目录下的编译脚本支持选用下文提到的两种工具链中的任何一种进行编译,因此编译时需要带上一个编译参数以指定对应的工具链 – arm-hisiv300-linux 和 arm-hisiv400-linux。其中,arm-hisiv300-linux工具链对应uclibc库,arm-hisiv400-linux工具链对应glibc库。具体命令如下
(1)编译整个osdrv目录:
make OSDRV_CROSS=arm-hisiv300-linux CPU_TYPE=XXX PCI_MODE=XXX FLASH_TYPE=XXX all
或者
make OSDRV_CROSS=arm-hisiv400-linux CPU_TYPE=XXX PCI_MODE=XXX FLASH_TYPE=XXX all
参数说明:
CPU_TYPE:共有master、slave以及single三个参数。主CPU引导从CPU启动时,编译主CPU版本时使用master参数,编译从CPU版本时使用slave参数。只使用主CPU,编译版本时选择single参数。
PCI_MODE:共有master、slave以及none三个参数。编译PCIE主片版本时使用master参数,编译PCIE从片使用slave参数,编译不使用PCIE的版本时使用none参数。
FLASH_TYPE:如果使用SPINAND器件,需要使用参数spinand;如果不使用SPINAND器件,不使用该参数。
(2)清除整个osdrv目录的编译文件:
make OSDRV_CROSS=arm-hisiv300-linux clean
或者
make OSDRV_CROSS=arm-hisiv400-linux clean
编译的过程可能会出现报错,读者根据自己的需要进行修正
笔者这里列举出一些自己遇到的问题和解决方案
执行编译时 可能会出现以下报错
1.make[2]: arm-hisiv300-linux-gcc: Command not found
原因:makefile只认识arm-hisiv300-linux或者arm-hisiv400-linux
解决方案:给原来的工具链重新创建符号链接为arm-hisiv300-linux或者arm-hisiv400-linux并在~/.brashrc中export PATH导出环境编译,然后source .brashrc使生效。
2.报错:
arm-hisiv300-linux-gcc: command not found
解决方法:
这是因为宿主机是64 位 而交叉编译器是针对32位制作的。所以要安装对应的32位库。
安装命令:
sudo apt install lib32z1-dev、
3.修改后仍然报错
记得每一次要把之前的东西clean掉再编译,不然还是会出错。
编译成功后,本阶段结束