海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel

本文主要是介绍海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先重申下我的平台为ubuntu18.0.4,SDK的目标平台为Hi3519AV100系列

准备工作
安装himix200交叉编译器
tar –xzf arm-himix200-linux.tgz
sudo ./arm-himix200-linux.install
source /etc/profile
安装SDK包
tar -zxf Hi3519AV100_SDK_V2.0.1.0.tgz
sudo ./sdk.unpack 
这时可能会遇到下面错误:

提示 source命令在shell脚本里面找不到: source: not found

解决办法如下:

注意两点:

SDK所在目录的所有路径不能有中文或空格符。
上面两步的操作说明可在《Hi3519AV100 SDK 安装及升级使用说明》找到。
编译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里面提供了分别编译的步骤。
通过第一步的unpack,uboot code已经解压缩出来如下,根目录是u-boot-2016.11

具体编译步骤:

1. cp configs/hi3519av100_defconfig .config
2. make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
会遇到下面错误:

解决办法是:sudo apt-get install libncurs*

1. 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)

我的解决办法是在Makefile添加一行:export LC_ALL=C

1. cp ../../../tools/pc/uboot_tools/reg_info.bin .reg
2. make ARCH=arm CROSS_COMPILE=arm-himix200-linux- u-boot-z.bin
最终会生成u-boot-hi3519av100.bin

 

Kernel编译
1. 先对下载kernel-4.9.37.tar.gz然后根据xx/opensource/kernel/readme_cn.txt对它打一个patch
2. 开始编译
  1. cp arch/arm/configs/hi3519av100_smp_defconfig .config
  2. make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
  3. make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
会遇到下面问题:

解决办法:


————————————————
版权声明:本文为CSDN博主「ltshan139」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/avideointerfaces/article/details/88694447

这篇关于海思AI芯片(Hi3519A/3559A)方案学习(三)Ubuntu18.0.4上编译Hi3519AV100 uboot和kernel的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597669

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

MySQL中闪回功能的方案讨论及实现

《MySQL中闪回功能的方案讨论及实现》Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据,这篇文章主要来和大家讨论一下MySQL中支持闪回功能的方案,有需要的可以了解下... 目录1、 闪回的目标2、 无米无炊一3、 无米无炊二4、 演示5、小结oracle有一个闪回(flashb

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx