鸿蒙设备-开发板基础学习(BearPi-HM Micro)


theme: minimalism

每当学习一门新的编程语言或者上手一款新的开发板,在学习鸿蒙设备开发过程中,带大家写的第一个程序,通过这个程序,我们可以对鸿蒙设备开发的整个流程有一个初步的体验。BearPi-HM Micro开发板为例:

BearPi-HM Micro是什么?

BearPi-HM_Micro_Small的意思是小熊派的“BearPi-HM Micro开发板 + OpenHarmony小型系统”。BearPi-HM Micro是一款使用STM32MP157处理器的鸿蒙开发板,目前提供使用LiteOS-A操作系统内核OpenHarmony 3.0发行版源码下载。

BearPi-HM Micro开发板原理图

1.Typec电路原理图

2.音频电路原理图

3.Wi-Fi电路原理图

4.屏幕显示电路原理图

5.E53电路原理图

6.S24电路原理图

环境搭建

1.硬件要求

  • Linux服务器
  • Windows工作台(主机电脑)
  • BearPi-HM_Micro开发板
  • USB Type-C线(Windows工作台通过USB与BearPi-HM_Micr开发板连接)

2.软件要求

3.Linux构建工具要求

4.Windows开发工具要求

5.工具下载地址

安装编译基础环境

1.安装Linux编译环境

将Linux shell改为bash

查看shell是否为bash,在终端运行如下命令

ls -l /bin/sh

如果为显示为/bin/sh -> bash则为正常,否则请按以下方式修改:

方法一:在终端运行如下命令,然后选择 no。

sudo dpkg-reconfigure dash

方法二:先删除sh,再创建软链接。

rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh

2.修改镜像源

打开/etc/apt路径下的sources.list文件

将原本的镜像源改为中科大镜像源,然后关闭文件并保存

deb Index of /ubuntu/ bionic main restricted universe multiverse
deb-src Index of /ubuntu/ bionic main restricted universe multiverse
deb Index of /ubuntu/ bionic-updates main restricted universe multiverse
deb-src Index of /ubuntu/ bionic-updates main restricted universe multiverse
deb Index of /ubuntu/ bionic-backports main restricted universe multiverse
deb-src Index of /ubuntu/ bionic-backports main restricted universe multiverse
deb Index of /ubuntu/ bionic-security main restricted universe multiverse
deb-src Index of /ubuntu/ bionic-security main restricted universe multiverse
deb Index of /ubuntu/ bionic-proposed main restricted universe multiverse
deb-src Index of /ubuntu/ bionic-proposed main restricted universe multiverse

更新镜像源

sudo apt-get update

3.安装必要的库和工具

使用如下apt-get命令安装编译所需的必要的库和工具:

sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler net-tools openssh-server git vim openjdk-11-jre-headless

安装Python3

打开Linux编译服务器终端。

输入如下命令,查看python版本号,若为python3.7+可跳过安装Python3步骤:

python3 --version

如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。

运行如下命令,查看Ubuntu版本

cat /etc/issue

设置python和python3软链接为python3.8。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

安装并升级Python包管理工具(pip3)

apt install python3-pip

4.安装hb

运行如下命令安装hb

python3 -m pip install --user ohos-build==0.4.3

设置环境变量

vim ~/.bashrc

将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

export PATH=~/.local/bin:$PATH

执行如下命令更新环境变量。

source ~/.bashrc

执行"hb -h",有打印以下信息即表示安装成功:

5.安装mkimage.stm32

新建tools目录

mkdir ~/tools

下载mkimage.stm32工具,并复制到/home/bearpi/tools/目录下

执行以下命令修改mkimage.stm32工具权限

chmod 777 ~/tools/mkimage.stm32

设置环境变量

vim ~/.bashrc

将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

export PATH=~/tools:$PATH

执行如下命令更新环境变量。

source ~/.bashrc

5.映射网络磁盘

打开RaiDrive软件,添加链接信息

三、获取源码

创建文件夹:mkdir project 打开文件夹:cd project 输入下列命令行:git clone https://gitee.com/bearpi/bearpi-hm_micro_small.git 等待源码下载。

四、源码编译

在MobaXterm中输入以下指令,进入源码根目录

cd /home/bearpi/project/bearpi-hm_micro_small/

在MobaXterm中输入:

hb set

再输入"."(点)

.

选择“bearpi-hm_micro”,然后回车

在MobaXterm中输入:

hb build -t notest --tee -f

然后回车,等待直到屏幕出现:build success字样,说明编译成功。

在project\bearpi-hm_micro_small\out\bearpi-hm_micro\bearpi-hm_micro路径下

找到以下三个文件:

OHOS_Image.stm32:系统镜像文件
rootfs_vfat.img:根文件系统
userfs_vfat.img:用户文件系统

输入以下命令:

cp out/bearpi_hm_micro/bearpi_hm_micro/OHOS_Image.stm32 applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
cp out/bearpi_hm_micro/bearpi_hm_micro/rootfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/
cp out/bearpi_hm_micro/bearpi_hm_micro/userfs_vfat.img applications/BearPi/BearPi-HM_Micro/tools/download_img/kernel/

五、烧录镜像

将开发板的拨码开关上拨到“000”烧录模式,并按一下开发板的RESET按键

在Windows打开STM32CubeProgrammer工具,选择“USB”烧录方式,再点击刷新按钮,然后点击"Connect"。

点击STM32CubeProgrammer工具的“+”按钮,然后选择烧录配置的tvs文件。

点击Browse按钮,然后选择工程源码下的烧录镜像路径

点击Download按钮启动镜像烧录,并等待烧录完毕。

六、启动开发板进入终端

打开MobaXterm,

点击:Session、Serial按钮

设置Seral port为 第一-4 查看到的COM号

设置Speed为 115200

点击OK

将开发板的拨码开关拨至“010”emmc启动模式,并按一下开发板的“RESET”按钮复位开发板。

MobaXterm上打印出运行日志,等待启动日志运行结束,按键盘“回车”按键进入开发板shell终端,输入例如"ls"命令,可与开发板交互。

开发板屏幕出现桌面及预安装的"setting"应用

本文内容是鸿蒙开发中对开发板技术的简单运用,更多的鸿蒙开发技术可以前往我主页查询,下面分享鸿蒙开发4.0技术分布(略缩图):

高清完整版技术学习路线图如下寻找保存(附鸿蒙文档)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-测试4

一、判断题 1.队列结构的顺序存储会产生假溢出现象。 (T) 2.度为二的树就是二叉树。(F) 二叉树的度可以小于等于2 3. 栈是插入和删除只能在一端进行的线性表;队列是插入在一端进行,删除在另一端进行的线性表。(T&…

代码随想录算法训练营第二十四天 | 回溯算法

理论基础 代码随想录原文 什么是回溯法 回溯也可以叫做回溯搜索法,它是一种搜索的方式。 回溯是递归的副产品,只要有递归就会有回溯。 回溯法的效率 虽然回溯法很难,不好理解,但是回溯法并不是什么高效的算法。因为回溯的本…

对接讯飞聊天机器人接口--复盘

1、准备工作 1)、进入以下平台进行注册,登录后,点击红框处 2)、点击个人免费包(会弹出实名认证,先进行实名认证) 3)、认证后,会进入以下界面,先添加应用 4&am…

栈的经典算法问题(算法村第四关白银挑战)

括号匹配问题 有效的括号 20. 有效的括号 - 力扣(LeetCode) 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类…

滴水逆向1

八进制加法乘法表 EF11101111 j记住其映射关系 十进制的定义:由十个符号组成,分别是0 1 2 3 4 5 6 7 8 9 逢十进一。九进制的定义:由九个符号组成,分别是0 1 2 3 4 5 6 7 8 逢九进一。十六进制的定义:由十六个符号组成…

鸿蒙开发解决agconnect sdk not initialized. please call initialize()

文章目录 项目场景:问题描述原因分析:解决方案:总结:项目场景: 鸿蒙开发报错: agconnect sdk not initialized. please call initialize() 问题描述 报错内容为: 10-25 11:41:01.152 6076-16676 E A0c0d0/JSApp: app Log: 数据查询失败: {“code”:1100001,“messag…

在Kubernetes中优雅地导出和清理Ingress资源

引言 Kubernetes的Ingress资源是定义外部访问集群服务的规则。随着微服务架构和容器化技术的普及,Ingress作为路由流量的关键组件变得愈发重要。当我们需要在环境之间迁移Ingress资源或者备份当前的配置时,就会用到导出功能。然而,直接使用k…

听GPT 讲Rust源代码--compiler(29)

File: rust/compiler/rustc_const_eval/src/util/check_validity_requirement.rs 在Rust编译器的源代码中,rust/compiler/rustc_const_eval/src/util/check_validity_requirement.rs文件的作用是进行验证要求的检查。具体而言,该文件定义了函数check_val…

一文讲透使用Python绘制双纵轴线图

双纵轴线图主要用来展示两个因变量和一个自变量的关系,并且两个因变量的数值单位不同。具体来说,双纵轴线图是指在一幅图上有一个横轴和两个纵轴,适用于三个变量。两个纵轴分别表示一个变量,横轴变量同时适用于两个纵轴上的变量&a…

C++力扣题目--94,144,145二叉树非递归(迭代)遍历

为什么可以用迭代法(非递归的方式)来实现二叉树的前后中序遍历呢? 我们在栈与队列:匹配问题都是栈的强项 (opens new window)中提到了,递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地…

Azure Machine Learning - 人脸识别任务概述与技术实战

Azure AI 人脸服务提供了可检测、识别和分析图像中的人脸的 AI 算法。 人脸识别软件在许多不同情形中都十分重要,例如识别、无接触访问控制和实现隐私的人脸模糊。你可以通过客户端库 SDK,或者直接调用 REST API 使用人脸服务。 目录 一、人脸识别服务场…

Python print()函数高级用法和 len()函数详解:获取字符串长度或字节数

Python print()函数高级用法 我们使用 print() 函数时,都只输出了一个变量,但实际上 print() 函数完全可以同时输出多个变量,而且它具有更多丰富的功能。 print() 函数的详细语法格式如下: print (value,...,sep,end\n,filesys.s…

词嵌入位置编码的实现(基于pytorch)

背景介绍 在transformers架构当中,对于词向量的输入需要加上原本词对应的位置信息,作为输入到模型中训练的input,那具体的位置编码如何实现呢?本篇博客就跟大家一起分享一下对应的步骤 位置编码的公式 对于词向量的位置编码的方…

LaTex引用字体变色

使用下面这条语句进行修改。 ‘citecolor’改变参考文献颜色, ‘linkcolor’改变图标公式引用的颜色, ‘urlcolor’ 文本网站超链接颜色。 \usepackage[colorlinks,bookmarksopen,bookmarksnumbered,citecolorblue, linkcolorblue, urlcolorblue]{hyper…

黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目——第四部分

黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot mybatis plus开发核心技术的真java实战项目——第四部分 1. 套餐管理1.1 新增套餐1.1.1 添加菜品数据回显 1.2 保存添加套餐1.3 套餐信息分页查询1.4 删除套餐1.5 需要自己单独实现的功能1.5.1 套餐管理的启…

leecode-代码随想录-学习笔记1

编程语言基础课,重新学习 kamacoder.com 基础语法;ACM输入输出通用模板;之前Java狂神说的学习笔记(但是还是按照编程习惯用了C,感觉更底层好写代码)。 正式开始: 下面按照题目-我的解答思路和…

深度解析Nginx负载均衡算法及配置实例

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

每天刷两道题——第十天

1.1和为k的子数组 给你一个整数数组 n u m s nums nums 和一个整数 k k k ,请你统计并返回 该数组中和为 k k k 的子数组的个数 。子数组是数组中元素的连续非空序列。 输入:nums [1,2,3], k 3 输出:2 前缀和 1.2如何使用 前缀和的…

VSCode搭建 .netcore 开发环境

一、MacOS 笔者笔记本电脑上安装的是macOS High Sierra(10.13),想要尝试一下新版本的.netcore,之前系统是10.12时,.netcore 3.1刚出来时安装过3.1版本,很久没更新了,最近.net8出来了,想试一下,…

【回溯算法】n-皇后

导航 题目来源题目描述示例思路完整代码 题目来源 n-皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一…