海思AI芯片(Hi3519A/3559A)方案学习一Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
参考了这位大佬的https://blog.csdn.net/avideointerfaces/article/details/88694447
先重申下我的平台为ubuntu18.0.4,SDK的目标平台为Hi3519AV100系列
准备工作
1. 安装himix200交叉编译器
tar –xzf arm-himix200-linux.tgz
sudo ./arm-himix200-linux.install
source /etc/profile
问题:
由于ubuntu18.0.4是64位的,编译器是32位的,必须通过如下命令安装x64兼容x86的运行库及环境。
# sudo apt-get install lib32ncurses5
# sudo apt-get install lib32z1
此处参考https://blog.csdn.net/fangye945a/article/details/86568216
安装后用arm-himix200-linux-gcc -v查看编译器版本,依旧报错
loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed. Aborted (core dumped)
然后执行vim ~/.bashrc,添加以下代码:
export LC_ALL=C
export PATH="/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH"
source ~/.bashrc
参考https://www.cnblogs.com/Lxk0825/p/10538455.html
再用arm-himix200-linux-gcc -v查看编译器版本,OK了,如下:
2. 安装SDK包
tar -zxf Hi3519AV100_SDK_V2.0.1.0.tgz
sudo ./sdk.unpack
这时遇到了下面的错误:
提示 source命令在shell脚本里面找不到: source: not found
解决办法如下:
注意两点:
- SDK所在目录的所有路径不能有中文或空格符。
- 上面两步的操作说明可在《Hi3519AV100 SDK 安装及升级使用说明》找到。
- root权限的获得:https://mp.csdn.net/postedit/95095185
编译uboot
通过上面Unpack操作后的SDK根目录,如下所示:
上面红框勾选目录osdrv是我们关注的重点,它的内容如下所示:
首先要好好研读readme_cn.txt,里面提供两个编译思路:
直接在osdrv根目录下 make all 这样就可以一次性的把kernel和uboot都编译好。当然为了使其在目标平台能运行正确,可能需要加一些额外参数, 比如CHIP=hi3519av100 BOOT_MEDIA=xxx等。这是后话,本文主要讲编译。 但是,我们发现直接在这里做总的编译,很难成功。总是容易遇到uboot或kernel问题。后来,我去uboot单个目录下把编译搞定,回过头来这里make all,结果把以前编译好的uboot binary还有修改的uboot的makefile都删掉了。
所以,我个人认为在osdrv下总的编译是个坑,最好是去opensource下面来分别编译kernel和uboot。好在该readme里面提供了分别编译的步骤。
先尝试在osdrv下编译。
我在编译的过程中遇到这个错误:Cannot create symlink to `xxx': Operation not supported;
找了一圈原因,是这个放在和windows共享的目录下了:https://blog.csdn.net/childbor/article/details/95313084
是由于把SDK放在和windows共享的目录下了。改到opt目录下;
然后把内核的补丁打到v4.9.37的linux kernel上。
1、获取内核补丁:开发包里有linux-4.9.37.tar.gz ;
2、打补丁
1)将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中
2)在linux服务器中进入 osdrv 的根目录,执行如下命令:
cd opensource/kernel
tar -zxf linux-4.9.37.tar.gz
mv linux-4.9.37 linux-4.9.y
cd linux-4.9.y
patch -p1 < ../linux-4.9.37.patch
cd ../
tar -czf linux-4.9.y.tgz linux-4.9.y
cd ../../
顺利完成;
解决了上面俩问题后,在osdrv下make all,果然出错了:
arm-himix200-linux-gcc: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Makefile:164: warning: overriding recipe for target 'hinotools_prepare'
Makefile:135: warning: ignoring old recipe for target 'hinotools_prepare'
mkdir /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/pub/smp_image_glibc -p
mkdir /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/pub/bin/board_glibc -p
mkdir /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/pub/bin/pc -p
---------task [0] hiregbin_prepare
tar xzf /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1.tgz -C /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools
chmod 777 /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1/hiregbin
cp /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/Hi3519AV100-DMEB_8L_T-DDR4_2664M_2GB_16bitx2-A53_1500M.xlsm /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1
cd /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1 && ./hiregbin Hi3519AV100-DMEB_8L_T-DDR4_2664M_2GB_16bitx2-A53_1500M.xlsm reg_info.bin;cd -
./hiregbin: line 3: ./jre/bin/java: No such file or directory
/opt/Hi3519AV100_SDK_V2.0.1.0/osdrv
mv /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1/reg_info.bin /opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools
mv: cannot stat '/opt/Hi3519AV100_SDK_V2.0.1.0/osdrv/tools/pc/uboot_tools/hiregbin-v5.0.1/reg_info.bin': No such file or directory
Makefile:155: recipe for target 'hiregbin_prepare' failed
make: *** [hiregbin_prepare] Error 1
先不管它,分别编译uboot,kenerl等。
uboot具体编译步骤:
- cp configs/hi3519av100_defconfig .config
- make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
会遇到下面错误:
这是因为编译器32位的,ubuntu64位的,
这部分参考上文 准备工作 的安装himix200交叉编译器部分;安装兼容库之后OK;
会遇到下面错误:
解决办法是:sudo apt-get install libncurs*
命令运行后,出现如下选项表,
选择各项参数后,选择保存,然后退出即可;
3. make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
会遇到错误:
loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
打开内核和U-boot的Makefile,注释掉unexport LC_ALL,再次编译,通过。
参考https://www.cnblogs.com/Lxk0825/p/10538455.html
- cp ../../../tools/pc/uboot_tools/reg_info.bin .reg
- make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin
最终会生成u-boot-hi3519av100.bin
Kernel编译
先对下载kernel-4.9.37.tar.gz然后根据xx/opensource/kernel/readme_cn.txt对它打一个patch
----这部分有点波折,开始直接在opt下unpack SDK,按照指导打patch,老是报错,
后来在opt下新建文件夹hisilicon/hi3519a,把sdk包放进去,然后unpack SDK,再按照指导打patch,顺利成功;
开始编译
cp arch/arm/configs/hi3519av100_smp_defconfig .config
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
会遇到下面问题:
解决办法:
1. 最后一条编译语句遇到的问题和编译UBOOT时同样的问题:
loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)
按照同样的方法解决:参考https://www.cnblogs.com/Lxk0825/p/10538455.html;
2. 编译了十几分钟,报错:
"mkimage" command not found - U-Boot images will not be built
参考:https://blog.csdn.net/armeasy/article/details/6540593;
第一步:编译uboot,这时将会在uboot/tools下生成mkimage工具;
第二步:声明环境变量,在/etc/bash.bashrc中添加如下语句:
export PATH=/opt/program/mx53_android/uboot/tools:$PATH
这里要和自己的uboot的路径对应。
然后更新bashrc脚本:
source /etc/bash.bashrc
注意一定要在和编译内核同一个终端执行该语句,否则同样会出现
"mkimage" command not found - U-Boot images will not be built
的错误。
由于我们随时可能清空掉uboot中的编译文件,这意味着mkimage文件随时会被清除,我们
可以将它复制到/usr/bin下,然后在bashrc中声明,以确保内核正常编译。
编译成功:
海思AI芯片(Hi3519A/3559A)方案学习一Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel相关推荐
- 海思AI芯片(Hi3519A/3559A)方案学习(十四)JPEG图片转换成bgr文件
原文:https://blog.csdn.net/avideointerfaces/article/details/89931156 前言 在系列文章海思AI芯片(Hi3519A/3559A)方案学习 ...
- 海思AI芯片(Hi3519A/3559A)方案学习(十七)开发板上运行yolo3模型的代码分析
前言 前面的博客系列 已经介绍了如何将caffemodel转换成wk文件,如何将jpg文件转成bgr格式数据以及如何在PC上仿真模型推理等,基于这些基础,本文来结合代码分析如何在板子上推理yolov3 ...
- 海思AI芯片(Hi3519A/3559A)方案学习(一)资料以及术语介绍
芯片系列介绍 海思AI芯片Hi35xx系列具体包括的型号Hi3559A V100, Hi3559C V100, Hi3519A V100, Hi3516C V500以及Hi3516D V300.下面要 ...
- 海思AI芯片(Hi3519A/3559A)方案学习(四)如何在3519A板子上运行sample code
sample code编译 先解压缩SDK(Hi3519AV100_SDK_V2.0.1.0.tgz)得到Hi3519AV100_SDK_V2.0.1.0文件夹.其sample源代码藏在Hi3519A ...
- 海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel
先重申下我的平台为ubuntu18.0.4,SDK的目标平台为Hi3519AV100系列 准备工作 安装himix200交叉编译器 tar –xzf arm-himix200-linux.tgz su ...
- 海思AI芯片(Hi3519A/3559A)方案学习(二十六)VPSS不同channel的不同放缩能力
前言 在用VPSS的channel1对vdec解码出来的图片进行放大时,比如说(260,260)放大到(928,608),遇到了类似下面的错误. [Func]:VPSS_DRV_CheckVpssCa ...
- 海康摄像头 海思AI芯片(Hi35XX): 图像jpg转.bgr
前言 把一张jpg图片转成bgr(注意顺序是bgr)二进制文件,最近在弄华为Hi3516DV300开发板上的一些深度学习的样例程序,换言之,35xx nnie SDK只支持BGR以及yuv格式的数据输 ...
- 华为海思AI芯片HI3516DV300上SSD代码的移植和优化
前一段时间一直在做海思AI芯片 HI3516DV300上SSD代码的优化工作,这里总结一下优化的一些心得体会.之所以要对海思AI芯片 HI3516DV300上SSD代码做优化,是因为SSD有一部分是运 ...
- 【海思AI芯片Hi3559A】学习笔记(1):开发环境搭建、安装SDK
芯片资料见Hi3559A的资料包 主要参考文档:ReleaseDoc\zh\01.software\board\Hi3559A╱C V100 SDK 安装及升级使用说明.pdf 注意所有解压操作均要在 ...
最新文章
- PHP对于浮点型的数据需要用不同的方法去解决
- 用Quartus II Timequest Timing Analyzer进行时序分析 :实例讲解 (三)
- VBScript 之文件 IO 篇
- java序列化与反序列化(转)
- python 打包自己得到的结果
- cocos2dx标准容器_cocos2dx 容器Layout
- 产业数字化升级进入深化期,腾讯智慧出行释放“数字底座”核心能力
- 两个表点击分页的时候怎么判断点的是哪一个表_如何对指数估值,估值表怎么用?...
- 小型英语字典(字典训练)
- java函数命名规范_java命名规范
- 医学图像处理眼科检查
- Java编程入门:使用Eclipse快捷键
- 数据库性能优化的五种方案(mycat,基于阿里coba开源的数据库中间件,很容易实现分库分表、主从切换功能。另一个当当网开源的一个库 sharding-jdbc)
- 谷粒商城高级篇(39)——认证服务之验证码注册
- discuz 模板php代码,自定义HTML模板DIY支持PHP代码解析
- 笔记本共享网络给台式机
- SylixOS设备驱动
- 哈工大人工智能研究院院长刘劼:打造从科研到产业的创新生态
- 前端表单提交方式大全
- 2020年精彩文章回顾
热门文章
- 微信小程序 - 实现车牌输入功能,自定义车牌号输入法组件(键盘弹出后输入车牌号,可自定义各地区及界面样式)超详细注释组件插件示例源码
- html5服务器推送消息的各种解决办法,WEB服务器推送消息的各种解决办法
- html5图片锐化,让照片达到最佳“锐度” 这5种“锐化”方式需掌握
- 乱七八糟代码合集٩(๑◡๑)۶
- unity 如何切换输入系统(Input System)
- NHibernate Mapping Attribute实现复合主键映射
- Kaggle数据集-贷款逾期预测
- 备案注销申请表_怎么注销单个网站备案?
- 3分钟通过一个App的演示深入理解区块链运行原理
- (SQL)修改表结构[字段类型]、表字段长度,