Hi3559AV100 环境搭建

前言

最近新接触海思平台,发现海思每个平台的环境搭建都有点不同,在官方文档中关于 Hi3559AV100 平台的详细搭建步骤并没有,所以整理了一下关于Hi3559AV100 的环境搭建文 档,希望对大家有帮助。

一、Linux 环境

我这里使用的是 Ubuntu 16.04 环境,官方文档说明推荐使用 64 位 Linux 服务器

  1. 网络环境搭建
    需要事先在自己的 Ubuntu 下安装 nfs,samba, ssh, tftp 等网络组件。 这里就不详细说明,网上有很多相关环境搭建的文档
  2. 软件包安装
    操作系统安装好后,且用户已自行配置好网络环境,则可继续如下步骤完成相关软件包的安装:
    ① 配置默认使用 bash
sudo dpkg-reconfigure dash


选择 no
② 安装软件包

sudo apt-get install make libc6:i386 lib32z1
lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++
u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc

③ 创建 /etc/ld.so.preload 文件,并执行
echo “” > /etc/ld.so.preload,以解决 64bit linux server 上某些第三方库编译失败的问题

  echo "" > /etc/ld.so.preload


注意:出现如上错误的话可以执行

sudo sh -c “echo "" > /etc/ld.so.preload”
 ---- 结束

二、安装 SDK 包

  1. Hi3559AV100 SDK 包的位置在我们拿到的资料中 “Hi3559AV100***/01.software/board” 目录下,您可以看到一个
    Hi3559AV100_SDK_Vx.x.x.x.tgz 的文件,该文件就是 Hi3559AV100 的软件开发包。
  2. 解压缩 SDK 包
tar -zxvf Hi3559AV100_SDK_V2.0.3.1.tgz
  1. 展开 SDK 包内容
    进入到 Hi3559AV100_SDK_V2.0.3.1 目录
sudo ./sdk.unpack

注意:如果您需要通过
WINDOWS 操作系统中转拷贝 SDK 包,请先运行 sudo ./sdk.cleanup 收起 SDK 包的内容,拷贝到新的目录后再展开。
4. 在 linux 服务器上安装交叉编译器
注意:安装交叉编译器需要有 sudo 权限或者 root 权限
① 安装 aarch64 交叉编译器

tar –xzf aarch64-himix100-linux.tgz
chmod +x aarch64-himix100-linux.install
sudo ./aarch64-himix100-linux.install

修改 profile 文件
安装之后打开 profile 文件,查看是否存在:
export PATH="/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin:$PATH"
如果不存在加上这句就行

source /etc/profile

使 profile 文件生效
② 安装 arm-none-eabi 交叉编译器
gcc-arm-none-eabi-4_9-2015q3
交叉编译工具链下载连接:

https://launchpad.net/gcc-arm-embedded/+downloa
解压安装

 tar -zxvf gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar -C /opt/

最后编辑 vim ~/.bashrc ,在文件末尾追加 PATH 环境变量
export PATH=$PATH:/opt/gcc-arm-none-eabi-4_9-2015q3/bin/
使用 source ~/.bashrc 使得新的 PATH 环境变量在当前 shell 生效
验证一下 gcc 是否安装成功

arm-none-eabi-gcc -v


5. 编译 osdrv
osdrv 顶层 Makefile 使用说明:
注意: Ⅰ 由于 Makefile 中文件系统编译依赖组件较多,不能保证单独编译的文件系统可用,建议采用 make all 编译;
Ⅱ 可单独编译 uboot,kernel;
本目录下的编译脚本支持选用 aarch64-himix100-linux 64bit 工具链进行编译,
具体命令如下:
编译整个 osdrv 目录:
① 默认编译

make BOOT_MEDIA=spi AMP_TYPE=linux all

② 编译 (A53MP+A73MP) 多核 linux、 启动介质为 spi(spi nor和spi nand) 的命令

make BOOT_MEDIA=spi AMP_TYPE=linux all

③ 编译 (A53MP+A73MP) 多核 linux、 启动介质为并口 nand 的命令

make BOOT_MEDIA=nand AMP_TYPE=linux all

④ 编译 (A53MP+A73MP) 多核 linux、 启动介质为 emmc 的命令:

make BOOT_MEDIA=emmc AMP_TYPE=linux all

⑤ 编译 (A53MP+A73MP) 多核 linux、 启动介质为 ufs 的命令:

make BOOT_MEDIA=ufs AMP_TYPE=linux all

⑥ 编译 (A53MP+A73MP) 多核 linux+A53UP 单核 liteos、 启动介质为 spi(spi nor 和 spi nand) 的命令

make BOOT_MEDIA=spi AMP_TYPE=linux_liteos all

⑦ 编译 (A53MP+A73MP) 多核 linux+A53UP 单核 liteos、启动介质为并口 nand 的命令

make BOOT_MEDIA=nand AMP_TYPE=linux_liteos all

⑧ 编译 (A53MP+A73MP) 多核 linux+A53UP 单核 liteos、启动介质为 emmc 的命令

make BOOT_MEDIA=emmc AMP_TYPE=linux_liteos all

⑨ 编译 (A53MP+A73MP) 多核 linux+A53UP 单核 liteos、启动介质为 ufs 的命令

make BOOT_MEDIA=ufs AMP_TYPE=linux_liteos all

参数说明:
BOOT_MEDIA:
spi nor 或 spi nand 启动选择 spi ;并口 nand 启动选择 nand;Emmc 启动选择 emmc;ufs 启动选择 ufs 。
AMP_TYPE:
编译多核 linux 传 linux 参数;编译多核 linux+ 单核 liteos 传参数 linux_liteos。
编译遇到的问题:没有 kernel源文件
解决办法:将下载的 linux-4.9.37.tgz 放到 osdrv/opensource/kernel/ 目录下,
详细编译细节可以看 sdk/osdrv/opensource/kernel/ 目录下的 readme_cn.txt 文件
注意:生成的所有镜像在 osdrv/pub / 目录下
6. 清除整个 osdrv 目录的编译文件

make clean
  1. 彻底清除整个 osdrv 目录的编译中间文件
make distclean
  1. 单独编译 kernel image 和单独编译 u-boot
    前面已经提到了不能保证单独编译的文件系统可用建议采用 make all 具体方法步骤可以参考 osdrv/ 目录下的 readme_cn.txt

     ---- 结束
    

三、单系统 Linux 方案烧写

  1. 配置 tftp 服务器
    可以使用任意的 tftp 服务器,将生成的镜像 image_glibc_multi-core_arm64 目录下的相关文件拷贝到 tftp 服务器目录下。
  2. 配置参数
    单板上电后,敲任意键进入 u-boot 。设置 ipaddr (单板 ip )、ethaddr (单板的 MAC 地址)和 serverip (即 tftp 服务器的 ip )
setenv ipaddr 10.86.147.170
setenv ethaddr 00:10:ab:20:81:70
setenv netmask 255.255.254.0
setenv gatewayip 10.86.147.1
setenv serverip 10.86.147.126
ping serverip 10.86.147.126  //确保网络畅通   

以上为举例, IP 以实际为准
3. 地址空间说明

也可以根据实际情况进行调整
4. 拨码开关设置
通过拨码开关 SW1.4 设置选择主 CPU:
0:从 A53MP Core0 启动;
1:从 A53UP 启动
通过拨码开关 SW1[2:1] 选择存储烧录介质
00 SPI Flash 01 nand flash 10 EMMC 11 UFS
根据自己实际情况设置,我这里设置成 00
5. 烧写 u-boot

mw.b 0x44000000 0xff 0x100000
tftp 0x44000000 u-boot-hi3559av100.bin
nand erase 0x0 0x100000
nand write 0x44000000 0x0 0x100000
  1. 烧写内核 kernel image
mw.b 0x44000000 0xff 0x900000
tftp 0x44000000 uImage_hi3559av100_multi-core
nand erase 0x100000 0x900000
nand write 0x44000000 0x100000 0x900000
  1. 烧写文件系统
mw.b 0x44000000 0xff 0x1000000
tftp 0x44000000 rootfs_hi3559av100_2k_24bit.yaffs2
nand erase 0xA00000 0x1000000
nand write.yaffs 0x44000000 0xA00000 0xcfeb00   //(0xcfeb00 为 rootfs 文件实际大小)
  1. 设置启动参数
setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2
mtdparts=hinand:1M(boot),9M(kernel),16M(rootfs)'setenv bootcmd 'nand read 0x44000000 0x100000 0x900000;bootm 0x44000000'saveenv
  1. 重启系统
reset
    ----结束

四、双系统 Linux + Huawei LiteOS 方案烧写

  1. 准备 Huawei LiteOS 端的镜像
    Huawei LiteOS 端的烧写镜像是由客户在 Huawei LiteOS 端的业务代码编译生成的。如果是初次调试环境,可以用发布包中的 sample 编译出来的镜像,A53 端的镜像建议使用 mpp/sample/vio/ sample_vio.bin;M7 端的镜像建议使用 osdrv/platform/liteos_m7/liteos/sample/sample_osdrv
    sample.bin
    注:在对应的目录下直接 make 可以生成相应的所需镜像
  2. 配置 tftp 服务器
    和单系统烧录一样,编译 osdrv/ 目录时选择编译 (A53MP+A73MP)
    多核 linux+A53UP 单核 liteos 命令编译,生成的镜像在 image_glibc_big-little_arm64/ 目录下,将生成的镜像拷贝到 tftp 服务器目录下
  3. 配置参数
    同单系统烧录时配置 tftp 参数
  4. 地址空间说明
  5. 拨码开关设置
    通过拨码开关 SW1.4 设置选择主 CPU:
    0:从 A53MP Core0 启动;
    1:从 A53UP 启动。
    需要拨码到 0,从 A53MP 启动
    通过拨码开关 SW1[2:1] 选择存储烧录介质
    00 SPI Flash 01 nand flash 10 EMMC 11 UFS
    根据自己实际情况设置,我这里设置成 00
  6. 烧写 u-boot
mw.b 0x52000000 0xff 0x100000
tftp 0x52000000 u-boot-hi3559av100.bin
nand erase 0 0x100000
nand write 0x52000000 0 0x100000
  1. 烧写 Linux 内核
mw.b 0x52000000 0xff 0x1000000
tftp 0x52000000 uImage_hi3559av100_big-little
nand erase 0x100000 0x900000
nand write 0x52000000 0x100000 0x900000
  1. 烧写文件系统
mw.b 0x52000000 0xff 0x2000000
tftp 0x52000000 rootfs_hi3559av100_2k_24bit.yaffs2
nand erase 0xA00000 0x2000000
nand write.yaffs 0x52000000 0xA00000 0xd32c00

注意:① 此示例 Flash 为 2KPage 24bitECC,应以实际使用器件选择相应 rootfs 在编译好的镜像中有不同类型的文件系统可供我们选择
② nand write.yaffs 的最后一个参数 (size),应该以实际下载的 rootfs 长度为准如打印:“Bytes transferred = 13839360 (d32c00 hex)”,则为:0xd32c00

  1. 烧写 A53UP Huawei LiteOS
mw.b 0x52000000 0xff 0x1000000
tftp 0x52000000 sample_vio.bin
nand erase 0x2A00000 0x1000000
nand write 0x52000000 0x2A00000 0x1000000
  1. 烧写 Cortex-M7 Huawei LiteOS (此步可选做)
mw.b 0x52000000 0xff 0x100000
tftp 0x52000000 sample.bin
nand erase 0x3A00000 0x100000
nand write 0x52000000 0x3A00000 0x100000
  1. 设置启动参数
setenv bootargs 'mem=512M console=ttyAMA0,115200
clk_ignore_unused rw root=/dev/mtdblock2 rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),32M(rootfs)';
sa

不启动 Cortex-M7

setenv bootcmd 'nand read 0x45000000 0x2A00000
0x1000000; go_a53up 0x45000000; nand read 0x52000000 0x100000 0x900000;bootm
0x52000000'; sa

带 Cortex-M7 启动

setenv bootcmd 'nand read 0x45000000 0x2A00000 0x1000000;
go_a53up 0x45000000; config_m7; nand read 0x52000000 0x3a00000 0x100000; cp.b 0x52000000
0x19000000 0x100000; go_m7; nand read 0x52000000 0x100000 0x900000;bootm
0x52000000'; sa
  1. 重启系统
reset
     ----结束

五、参考资料

① 《WM_Hi3559A╱C V100 SDK 安装及升级使用说明.pdf》
② 《WM_Hi3559A╱CV100 开发环境用户指南.pdf》

注:

未经本人允许,不得转载!谢谢!

【Hi3559AV100 Camera】Hi3559AV100 环境搭建相关推荐

  1. 《HarmonyOS开发 - IPC Camera开发笔记》第2章 HiSpark IPC Camera开发环境搭建(基于V1.1.4)

    开发环境: 开发系统:Ubuntu 20.04 Harmony版本:code-v1.1.4-LTS.tar HiSpark IPC Camera基于华为海思Hi3518芯片,支持LiteOS.Open ...

  2. Android Camera 测试环境搭建:编译Android模拟器

    在 Ubuntu 下面我编译 android 12 已经尝试过很多次,都失败了. 都是执行下面这步的时候,编译了几个小时以后报错 make sdk sdk_repo -j12 一开始给虚拟机分配了 8 ...

  3. Android 13 Camera ITS 环境搭建(从Python安装到环境配置详解)

    Python 版本 根据CameraITS.pdf 以及报错信息提示需要python版本在3.7.9及以上,本次使用的是3.8.10. Python 安装 1.官方网站下载Python源码 wget ...

  4. CTS测试中Camera FOV Calibration标准测试环境搭建

    CTS测试分为自动测试和手动测试,CTS Verifier测试是CTS测试的手动测试部分.以下是CTS Verifier测试的Camera FOV Calibration测试环境搭建. 安装CTS V ...

  5. 【海思AI芯片Hi3559A】学习笔记(1):开发环境搭建、安装SDK

    芯片资料见Hi3559A的资料包 主要参考文档:ReleaseDoc\zh\01.software\board\Hi3559A╱C V100 SDK 安装及升级使用说明.pdf 注意所有解压操作均要在 ...

  6. 启明云端分享|ESP32在开发环境时,环境搭建及应用、软件平台时常遇到的问题答疑(FAQ)

    问题描述及解答: 1.环境搭建 安装环境出现can not create a virtual environment. 该错误是因为新版环境需要安装虚拟python环境,出现错误通常有两个原因. 1. ...

  7. (一)phoneGap之环境搭建教程及其example分析

    phoneGap之环境搭建教程及其example分析 一.环境搭建 与普通的开发android应用一样,phoneGap也同于原生android应用一样,环境相同,只是有部分不同,下面就我做理解,进行 ...

  8. 视觉SLAM十四讲学习笔记-第二讲-开发环境搭建

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 ​​​​​​​ lin ...

  9. ROS中阶笔记(四):机器人仿真—Gazebo物理仿真环境搭建(重点)

    ROS中阶笔记(四):机器人仿真-Gazebo物理仿真环境搭建(重点) 文章目录 1 ros_control 1.1 ros_control安装 2 Gazebo仿真步骤(重点) 2.1 配置物理仿真 ...

最新文章

  1. 餐馆的故事-浅析职责链模式
  2. 符江职高计算机教什么,高县符江职高具体地址
  3. 移动开发者如何更好地学习 React Native? | 技术头条
  4. 怎么把php写入文件格式,如何将一个PHP数组有格式的写入文件中
  5. TLS总结(上)——我们为啥需要TLS
  6. Egret中的三种单例写法
  7. 「JXOI2018」游戏
  8. 计算机组成原理白中英课后习题题答案
  9. nginx常用配置模板
  10. 【例题】【高斯消元】USACO3.2.4 Feed Ratios
  11. Android零基础入门第1节:Android的前世今生
  12. 「云安全」 什么是云访问安全代理(CASB )?
  13. 测试java实现继承接口案例
  14. Android Q 存储新特性适配脑壳疼?指南来了!
  15. 【Unity】防反编译之windows平台加密dll
  16. ORACLE 记录连接用户的IP地址以及登录失败用户的IP地址
  17. Java实现opendir的api_linux文件操作API
  18. 运动App如何实现端侧后台保活,让运动记录更完整?
  19. 自动光感大臂灯触摸芯片-DLT8SA15B-杰力科创
  20. 使用Rust交叉编译arm程序

热门文章

  1. uni-app中使用unicloud短信验证码(开通、模板报备、使用)
  2. Python实现Decision Tree
  3. 关于ch340驱动安装
  4. Excel去重并进行统计(对列)
  5. Postgre 安装提示Installation may not complete correctly.
  6. [CCS] 没有Runtime Object View(ROV)怎么办?
  7. RevMan简单入门指南
  8. DropWizard的AOP扩展点最佳实践
  9. linux的ib网卡驱动安装,linux安装IB驱动方法
  10. 这或许是华为荣耀六root的另一种方法。