一、SDK的安装
1、Hi3516A SDK包位置
在"Hi3516A_V100R001***/01.software/board"目录下,您可以看到一个 Hi3516A_SDK_Vx.x.x.x.tgz 的文件,
该文件就是Hi3516A的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3516A_SDK_Vx.x.x.x.tgz ,
解压缩该文件,可以得到一个Hi3516A_SDK_Vx.x.x.x目录。
3、展开SDK包内容
返回Hi3516A_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入Hi3516A_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv300-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限):
进入Hi3516A_SDK_Vx.x.x.x/osdrv/opensource/toolchain/arm-hisiv400-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
二.编译Hi3156A_V1.0.5.0SDK
编译过程中遇到的问题 :
1.“mkimage” command not found – U-Boot images will not be built
找不到mkimage工具,
解决方法1. : 解压uboot, 在uboot的tool 目录中 找到 mkimage 工具 cp 到 /bin/ 目录 即可 .
解决方法2. : sudo apt-get install u-boot-tools . 安装 u-boot 工具链 .
2.compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory
找不到zlib头文件
解决方法 :sudo apt-get install zlib1g-dev
3.configure: error: ncurses or ncursesw selected, but library not found (--without-ncurses to disable)
解决方法 1:编译带上 --without-ncurses
解决方法2 :sudo apt-get install libncurses-dev
4.configure: error: C++ compiler cannot create executables
See `config.log' for more details.
在编译软件之前,进行了export操作,改变了CFLAGS和LIBS的值。
解决方法 1 : 这个时候只要将这个值清空就可以了。
export LIBS=
export CFLAGS=
解决方法 2 : 重装开发编译工具包
sudo apt-get install update
sudo apt-get install build-essential
三.烧写镜像
编译完成后,烧写镜像位于 SDK 的
osdrv/pub/image_uclibc(或者 image_glibc)目录下。
烧写镜像包括:
z U-boot 文件: u-boot-hi3516a.bin
z 内核文件: uImage_hi3516a
z 根文件系统: rootfs_hi3516a_256k.jffs2、 rootfs_hi3516a_2k_4bit.yaffs2 等
其中, jiffs2 用于烧写 SPI Flash,“256k”表示块大小; yaffs2 用于烧写 Nand Flash,
“2k”表示器件页大小, 4bit 表示 ECC 校验能力。请根据具体 Flash 器件类型及特性烧
写对应的根文件系统。
烧写镜像的两种方法:
方法一 :
方法二:
Uboot烧写
以16M SPI Flash为例。
1)地址空间说明
| 1M | 3M | 12M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
sf probe 0 \\探测并初始化SPI flash
mw.b 82000000 ff 100000 \\在内存82000000 开始的 1M空间内用ff 填充
tftp 0x82000000 u-boot-hi3516a.bin \\tftp下载uboot镜像到内存空间 0x82000000
sf probe 0
sf erase 0 100000 \\擦除起始地址0x0开始的1M空间
sf write 82000000 0 100000 \\将地址0x82000000 处的1M大小镜像烧写到0x0地址 .
reset \\重启
3)烧写内核
mw.b 82000000 ff 300000
tftp 82000000 uImage_hi3516a
sf probe 0
sf erase 100000 300000
sf write 82000000 100000 300000
4)烧写文件系统
mw.b 82000000 ff C00000
tftp 0x82000000 rootfs_hi3516a_64k.jffs2
sf probe 0
sf erase 400000 C00000
sf write 82000000 400000 C00000
5)设置启动参数 内核的正常启动依赖这些参数.
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),3M(kernel),12M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'
saveenv