已经完成了海思sdk包的相关实验,
1 安装海思交叉编译工具链由于工具链是32位的,64位的ubuntu需要安装32位的兼容包;
2 中间遇到问题,使用aptitude安装lib32z1和lib32stdc++6-4.8-dbg;
3 使用/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/toolchain/arm-hisiv300-linux/目录下的cross.install.v300来安装交叉编译工具链,该程序会将交叉编译工具链安装在
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/目录下,符号连接arm-hisiv300-linux-放在了/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin/目录下,所有需要将这个目录导出到环境变量,方法vi打开/etc/profile文件,添加export PATH=”/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin:$PATH”,到文件底部,这样每次开机都会这行这个语句将符号连接导出到换将变量,然后运行一下source /etc/profile,可以通过运行arm-hisiv300-linux-gcc -v来测试工具链是否安装正确
4 编译osdrv
(1)编译整个osdrv目录:make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 all
(2)清除整个osdrv目录的编译文件:make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 clean:
(3)彻底清除整个osdrv目录的编译文件,除清除编译文件外,还删除已编译好的镜像:make OSDRV_CROSS=arm-hisiv300-linux CHIP=hi3518ev200 distclean
(4)单独编译kernel:
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- uImage
(5)单独编译模块:
cp arch/arm/configs/hi3518ev200_full_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- modules
(6)单独编译uboot:
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config
将生成的u-boot.bin 复制到osdrv/tools/pc/uboot_tools/目录下
运行./mkboot.sh reg_info.bin u-boot-ok.bin
生成的u-boot-ok.bin即为可用的u-boot镜像
整体编译过程中出现的错误
错误:compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
因为找不到zlib.h所以编译错误,zlib.h在tools/pc/zlib/tmp/include目录中有,只需要复制到tools/pc/jffs2_tool/tmp/include目录中即可。注意同时要将zconf.h也复制过去的。还有,要将tools/pc/jffs2_tool/tmp/lib目录下的libz.a libz.so libz.so.1 libz.so.1.2.7等4个文件复制到tools/pc/jffs2_tool/tmp/lib目录下,不然一会儿还得报错。
其他错误
还报错就不管了,此时~/sambashare/Hi3518E_SDK_V1.0.3.0/osdrv/tools/pc/jffs2_tool/tmp/mtd-utils-1.5.0已经有了mkfs.jffs2了,我们就是只要这个而已,手工将其复制到osdrv/pub/bin/pc目录下即可。
错误信息:serve_image.c:32:18: error: storage size of ‘hints’ isn’t known
解决方法:修改操作系统头文件/usr/include/netdb.h,将此宏__USE_XOPEN2K注释,如下图(注意#ifdef与#endif是一一对应的,而且里面有两个)
最终结果
在osdrv/pub/image_uclibc目录下得到的uboot和uImage即是我们要的uboot镜像和kernel的uImage镜像,而根文件系统镜像在osdrv/pub目录下。