当前位置: 首页 > article >正文

海思Hi3559av100 sdk开发环境搭建

SDK阐释

        海思官方给的sdk布局,如Hi3559AV100R001C02SPC031,其包含编译工具、硬件设计资料、软件sdk、文档等资料,tree布局可以构建如下形式,但不是必要的。

        软件sdk在 01.software中,这个路径下才是真正的软件代码,编译uboot、内核和文件系统都是在这里完成。

编译方法

        在安装完交叉编译链之后,osdrv路径下直接make all的话,会出现各种毛病,建议通常先安装模块来编译解决对应问题。

一、hiboot

进入目录 osdrv/opensource/uboot
解压文件:tar -xzf u-boot-2016.11.tgz
cd u-boot-2016.11
即在此目录下打开终端进行编译:

1)拷贝config配置
cp -f ./configs/hi3559av100_defconfig .config

2)menuconfig配置
make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux- menuconfig
若出现报错则要先安装包:sudo apt-get install libncurs*
然后再进行menuconfig的编译:make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux- menuconfig
编译完成就会出现menuconfig的界面,可直接退出:

再进行不要menuconfig的编译:make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux-
编译完成后从osdrv/tools/pc/uboot_tools目录拷贝reg_info.bin到boot源代码目录,重命名为.reg:cp ../../../tools/pc/uboot_tools/reg_info.bin .reg
最后即可编译uboot:make CROSS_COMPILE=aarch64-himix100-linux- u-boot-z.bin
编译完成后,终端出现提示信息:“u-boot-hi3559av100.bin is Ready.”说明已经编译完成,在目录下会生成u-boot-hi3559av100.bin

二、hikernel

1、参考文档 patch

XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/readme_cn.txt;XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/opensource/kernel/readme_cn.txt;

2、交叉编译内核

1)手动拷贝.config 文件:
cp arch/arm64/configs/hi3559av100_arm64_xxx_defconfig .config
(注1:当启动介质是eMMC、UFS、SPI-Nor Flash或SPI-NAND Flash时,使用
hi3559av100_arm64_big_little_defconfig;当启动介质是NAND Flash时,使用
hi3559av100_arm64_big_little_nand_defconfig)
(注2:Hi3559A的defconfig文件在arch/arm64文件夹中,海思Hi35xx系列的其他芯片应该在arch/arm文件夹中)
2)通过“make menuconfig”进行内核配置:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
3)生成uImage的bin文件:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage

4)make hikernel 或 make atf

如果只能生成image文件而不无法生成uImage的话,是因为缺少mkimage工具,从uboot下拷贝到/usr/bin或/usr/local/bin目录下即可。

三、hirootfs

在顶层目录编译make hirootfs_build,会出现一些常规头文件缺失的问题,解决即可如下。


http://www.kler.cn/news/318150.html

相关文章:

  • 面试金典题2.3
  • 引用和指针的区别
  • canvas绘制线段、矩形、圆形、文字、贝塞尔曲线、图像、视频处理、线性渐变、径向渐变、坐标变化,旋转,缩放,图形移动
  • 使用数据基础描述进行连续变量的特征提取
  • MySQL数据库索引、事务和存储引擎管理
  • Java基础知识扫盲
  • 代码随想录Day 53|题目:110. 字符串接龙、105.有向图的完全可达性、106. 岛屿的周长
  • Taro多端统一开发解决方案
  • 深入理解LLM的可观测性
  • 31. RabbitMQ顺序消费
  • HarmonyOS NEXT:解密从概念到实践的技术创新与应用前景
  • 解决配置文件中有spring.profiles.active = “@spring.profiles.active@“但是读取不到生效的配置文件的问题
  • pg入门17—如何查看pg版本
  • yolo介绍
  • Python画笔案例-059 绘制甩曲彩点动图
  • Linux下搭建iSCSI共享存储-Tgt
  • C++封装
  • 如何在C++中使用Poppler库读取PDF文件(一)
  • 解决方案 | 镭速助力动漫游戏行业突破跨网文件交换瓶颈
  • JUC并发编程_四大函数式接口
  • provide,inject父传子
  • Git使用教程-将idea本地文件配置到gitte上的保姆级别教程
  • 3.postman脚本语言、接口关联(json引用(变量)、脚本用正则表达式)、断言封装、自动化构造接口请求(Postman工具)
  • 如何在云端使用 Browserless 进行网页抓取?
  • 数据结构_1.1、数据结构的基本概念
  • 高校心理辅导系统:Spring Boot技术实现指南
  • Linux usb core阅读
  • 安卓沉浸式状态栏遇到的问题
  • 【Linux实践】实验三:LINUX系统的文件操作命令
  • 【强化学习系列】Gym库使用——创建自己的强化学习环境3:矢量化环境+奖励函数设计