OpenHarmony实战:烧录Hi3516DV300开发板

前言

烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。

本文基于 Windows10,以 Hi3516DV300 开发板为例,指导如何烧录 OpenHarmony 镜像,镜像也叫固件。

这块开发板是 OpenHarmony 最早完全支持的开发板,属于小型系统和标准系统的开发板,整个烧录、IPOP 测试的过程较为繁琐和原始。

避坑指南

1. 能否用 COM 串口烧录?

  • 可以,但是不建议,因为烧录特别缓慢。建议用 USB 烧录;

2. USB 设备无法识别,怎么办?

  • 在 Ubuntu 设置中移除 USB 设备,因为它把 Windows USB 设备事件拦截了;

3. 烧录时需要 IPOP 和 Hitool 同时操作,并且还有几秒时间窗口限制。

  • HiTool 工具使用“USB 口”烧录
  • IPOP 终端工具发送 USB 设备启用指令 usb device;
  • 点击烧写按钮

三、烧录环境说明

HiTool_16d 请自行搜索下载,文件列表如下。因为压缩包太大(129MB),所以没有提供附件。

四、烧录 L0 LiteOS 版本

4.1 烧录前构建的选项

配置项目生成目标为 ipcamera_hispark_taurus


镜像文件目录
cd out/hispark_taurus/ipcamera_hispark_taurus

4.2 拷贝镜像文件至 Windows 目录

进入编译生成的镜像目录,拷贝目录下的 OHOS_Image.bin、rootfs_vfat.img、userfs_vfat.img 三个文件到 windows 目录。

4.3 进入 uboot 的存放路径,拷贝 u-boot-hi3516dv300.bin 到 windows 目录。

cd device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/

4.4 在 Windows 镜像存储目录新建 Hi3516DV300-emmc.xml 文件,填入以下内容。

<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info ProgrammerFile="">
<Part Sel="1" PartitionName="fastboot" FlashType="emmc" FileSystem="none" Start="0" Length="1M" SelectFile=""/>
<Part Sel="1" PartitionName="OHOS_Image.bin" FlashType="emmc" FileSystem="none" Start="1M" Length="8M" SelectFile=""/>
<Part Sel="1" PartitionName="rootfs_vfat.img" FlashType="emmc" FileSystem="none" Start="9M" Length="50M" SelectFile=""/>
<Part Sel="1" PartitionName="userfs_vfat.img" FlashType="emmc" FileSystem="none" Start="59M" Length="52M" SelectFile=""/>
</Partition_Info>

注意:
1.填写的值可以比镜像文件大,但不能比镜像文件小,单位为 MB。
2.如果地址写错,开发板重启之后只有个别图标。

4.5 打开 HiTool 软件进行烧录

打开 Hitool-Himself516DV300 工具,选择“烧录 eMMC”页。长度也可以在这里修改,默认长度设置简记如下:

.\device\hisilicon\hispark_taurus\sdk_liteos\uboot\out\boot\u-boot-hi3516dv300.bin,OHOS_Image.bin, rootfs_vfat.img,userfs_vfat.img,长度依次为1M, 8M, 50M, 52M

4.6 烧录完 hispark_taurus 之后,屏幕点不亮怎么办

烧录完 hispark_taurus 之后(liteos 内核),更新地址表,否则屏幕点不亮
在 IPOP 终端工具页添加 L1 LiteOS 按钮(名称任意),发送的字符串

setenv bootargs consloe=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=21M rw;saveenvsetenv bootcmd fs probe 0;mmc read 0x0 0x80000000 0x800 0x4800;go 0x80000000;mw 0x12090000 0x001001e0;go 0x80000000;saveenv

【注意】
1.指令间要增加必要的空行,否则指令不能正确执行;
2.仅当烧录镜像完成之后进行;

liteOS 重启不了,如果提示如下,重启后务必发送如上指令。

Wrong Image Format for bootm command  
ERROR: can't get kernel image!  
hisilicon #  

五、烧录 L1 Linux 版本

5.1 烧录 L1 相关镜像

打开 Hitool-Himself516DV300 工具,选择“烧录 eMMC”页。
LINUX 内核,依次填写如下文件:

.\device\hisilicon\hispark_taurus\sdk_liteos\uboot\out\boot\u-boot-hi3516dv300.bin
.\out\hispark_taurus\ipcamera_hispark_taurus_linux\uImage_hi3516dv300_smp,rootfs_ext4.img,userfs_ext4.img,长度依次为1M, 9M, 50M, 50M

【注意】如果地址写错,开发板重启之后只有个别图标。

5.2 烧录完 hispark_taurus_linux 之后,屏幕点不亮怎么办

更新地址表,否则屏幕点不亮
在 IPOP 终端工具页添加 L1 Linux 按钮(名称任意),发送字符串

setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootfstype=ext4 rootwait blkdevparts=mmcblk0:1M(boot),9M(kernel),50M(rootfs),50M(userfs)'setenv bootcmd "mmc read 0x0 0x82000000 0x800 0x4800;bootm 0x82000000";
save;
reset;

【注意】
1.指令间要增加必要的空行,否则指令不能正确执行;
2.仅当烧录镜像完成之后进行;

六、烧录 L2 Linux 版本

6.1 拷贝镜像文件

代码生成路径: out\ohos-arm-release\packages\phone\images\ Hi3516DV300-emmc.xml 。
进入编译生成的镜像目录,拷贝目录下的 Hi3516DV300-emmc.xml、system.img、u-boot-hi3516dv300_emmc.bin、uImage、updater.img、userdata.img、vendor.img 七个文件到 window 目录。

6.2. 打开 HiTool 软件进行烧录。

6.3 通过 IPOP 终端工具发送如下指令

设置环境,最后让设备重启

setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused androidboot.selinux=permissive rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rootfstype=ext4 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),1M(misc),3307M(system),256M(vendor),-(userdata)'setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused androidboot.selinux=permissive rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)'setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000'
saveenv
reset

6.4 通过 IPOP 终端工具发送 usb 设备启用指令

HiTool 工具使用“USB 口”烧录时经常用到
在 IPOP 终端工具页添加 USB 按钮(名称任意),发送的字符串

usb device

【注意】
1.指令间要增加必要的空行,否则指令不能正确执行;
2.开发板 usb 线断通 10 秒倒计时内发送该指令,usb 烧录工具才能起效;有些倒计时窗口为 3 秒。

七、恭喜您!

您成功将镜像(固件)烧录到了开发板,可以一睹芳容!操作相关应用看看功能是否正常,用 IPOP 工具、hdc 工具查看日志,也可以跑一下相关模块的测试用例看看功能是否成功。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ :STL中deque的原理

deque的结构类似于哈希表&#xff0c;使用一个指针数组存储固定大小的数组首地址&#xff0c;当数据分布不均匀时将指针数组内的数据进行偏移&#xff0c;桶不够用的时候会像vector一样扩容然后将之前数组中存储的指针拷贝过来&#xff0c;从原理可以看出deque的性能是非常高的…

ISP-VPN实验

文章目录 ISP-VPN实验一&#xff0c;实验拓扑二、实验要求三、IP规划四、实验配置1、IP配置R1的配置R2的配置R3的配置R4的配置R5的配置 2、配置缺省路由3、认证与被认证配置4、HDLC封装5、构建MGRE和GRE6、整个私有网络基于RIP全网可达7、查看路由配置和PC端配置8、PC端pingR5的…

环境影响与碳排放生命周期评估应用及案例分析

生命周期分析 (Life Cycle Analysis, LCA) 是评价一个产品系统生命周期整个阶段——从原材料的提取和加工&#xff0c;到产品生产、包装、市场营销、使用、再使用和产品维护&#xff0c;直至再循环和最终废物处置——的环境影响的工具。这种方法被认为是一种“从摇篮到坟墓”的…

用JSch实现远程传输文件并打包成jar

本文将简单介绍一下 JSch 这个Java的第三方库的一个简单用法&#xff0c;并以此为实例&#xff0c;讲解 IntelliJ 中打包成 jar 包的2种方式。 实现目标 我们的目标是&#xff0c;做出一个jar包&#xff0c;它能够实现类似于 scp 命令的远程传输文件的功能。用法如下&#xf…

应急响应靶机训练-Linux2题解

前言 接上文&#xff0c;应急响应靶机训练Linux2 靶机地址&#xff1a;应急响应靶机-Linux(2) 题解 登录虚拟机&#xff1a; 修改面板密码 提交攻击者IP 答案&#xff1a;192.168.20.1 查看宝塔日志即可 用的net直接是网关 提交攻击者修改的管理员密码(明文) 答案&…

LeetCode---390周赛

题目列表 3090. 每个字符最多出现两次的最长子字符串 3091. 执行操作使数据元素之和大于等于 K 3092. 最高频率的 ID 3093. 最长公共后缀查询 一、每个字符最多出现两次的最长子字符串 非常经典的滑动窗口问题&#xff0c;即动态维护一段区间&#xff0c;使得这段区间满足…

JUC:park/unpark的用法与原理

park / unpark 用法 // 暂停当前线程 LockSupport.park(); // 恢复某个线程的运行 LockSupport.unpark(暂停线程对象)**先说结论&#xff1a;**无论unpark在park前还是后&#xff0c;都可以解除暂停状态。 先park在unpark可以成功运行&#xff1a; Thread t1 new Thread((…

全局UI方法-弹窗二-列表选择弹窗(ActionSheet)

1、描述 定义列表弹窗 2、接口 ActionSheet.show(value:{ title: string | Resource, message: string | Resource, autoCancel?: boolean, confrim?: {value: string | Resource, action: () > void }, cancel?: () > void, alignment?: DialogAlignment, …

kafka学习笔记02(小滴课堂)

Kafka命令行生产者发送消息和消费者消费消息实战 已存在的kafka不能重复创建。 broker设置的是1&#xff0c;factor大于broker了&#xff0c;所以报错。 生产者发送消息&#xff1a; kafka列表出现了新的kafka。 我们使用这个kafka。 我们启动消费者&#xff1a; 我们现在不从…

【Qt 学习笔记】Day1 | Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Day1 | Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录…

C/C++语言实现简易通讯录 [含文件操作,循环双链表]

文章目录 C/C语言实现简易通讯录概要基本功能运行截图展示主要代码展示 &#x1f396; 博主的CSDN主页&#xff1a;Ryan.Alaskan Malamute &#x1f4dc; 博主的代码仓库主页 [ Gitee ]&#xff1a;ryanala [GitHub]&#xff1a; Ryan-Ala C/C语言实现简易通讯录 ⚠⚠⚠ …

话题通信的python实现

一、发布者Publisher的python实现 step1&#xff1a;在scripts文件夹中创建py节点 step2&#xff1a;第一行是为了指定解释器&#xff0c;Ubuntu20.04是python3&#xff0c;比他低的版本是python。第二行是为了指定编码方式。第五行中&#xff0c;引用index.ros.org中数据类型…

RVM安装ruby笔记

环境 硬件&#xff1a;Macbook Pro 系统&#xff1a;macOS 14.1 安装公钥 通过gpg安装公钥失败&#xff0c;报错如下&#xff1a; 换了几个公钥地址&#xff08;hkp://subkeys.pgp.net&#xff0c;hkp://keys.gnupg.net&#xff0c;hkp://pgp.mit.edu&#xff09;&#xff0c;…

论文笔记:Retrieval-Augmented Generation forAI-Generated Content: A Survey

北大202402的RAG综述 1 intro 1.1 AICG 近年来&#xff0c;人们对人工智能生成内容&#xff08;AIGC&#xff09;的兴趣激增。各种内容生成工具已经精心设计&#xff0c;用于生产各种模态下的多样化对象 文本&代码&#xff1a;大型语言模型&#xff08;LLM&#xff09;…

Java:链表

一、链表简介 1、链表与顺序表的区别 上一篇博客我介绍了顺序表&#xff0c;这次我们来认识认识链表&#xff01;先来看看二者的区别&#xff1a; 顺序表&#xff1a;由于顺序表实际上是一个数组&#xff0c;因此它在物理上是连续的&#xff0c;逻辑上也是连续的&#xff01; …

【IDEA】使用debug方式去运行java程序

什么是debug工具&#xff1f; 调试工具&#xff08;debug工具&#xff09;是一种用于帮助程序员识别和修复程序中的错误的工具。它们提供了一系列的功能&#xff0c;帮助程序员在代码执行的过程中跟踪和检测问题&#xff0c;例如查看变量的值、检查函数的调用栈、设置断点来停…

Spring学习——什么是循环依赖及其解决方式

文章目录 前言一、什么是循环依赖二、解决思路1、循环依赖分类2、对象初始化步骤及对象分类3、spring是如何解决的4、图解5、三级缓存1、区别2、ObjectFactory是什么 三、源码debug1、spring创建对象过程1、dubug第一步——找到getBean2、dubug第二步——getBean与doGetBean3、…

腾讯 tendis 替代 redis linux安装使用

下载地址 Tendis存储版 点击下载 linux 解压 tar -zxvf 安装包.tgz cd 解压安装包/scripts 启动 ./start.sh 停止 ./stop.sh 详细配置 修改 /scripts tendisplus.conf # tendisplus configuration for testing # 绑定本机IIP bind 192.168.31.112 port 51002 #设…

海格里斯助推实体制造业转型升级 “算法定义硬件”解题AIoT市场

随着自动化的发展&#xff0c;电子商务和智能制造推动了自动化立体仓库的快速发展与创新&#xff0c;产生了“密集仓储”的概念。对于一个实体企业来讲&#xff0c;其数智物流转型正在趋向于“去伪存真”&#xff0c;企业追求高ROI与真实经济价值&#xff0c;具有降本增效的业务…

JavaEE 初阶篇-深入了解多线程安全问题(出现线程不安全的原因与解决线程不安全的方法)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 多线程安全问题概述 1.1 线程不安全的实际例子 2.0 出现线程不安全的原因 2.1 线程在系统中是随机调度且抢占式执行的模式 2.2 多个线程同时修改同一个变量 2.3 线…