下一篇:OpenHarmonyOs / LiteOs-a 驱动开发
本文介绍了在 Ubuntu 20.04 系统搭建 OpenHarmonyOs / LiteOs-a 开发环境的方法。
开发板用的是润和的ipcamera_hispark_taurus,芯片是HI3516DV300。
包括安装配置 Ubuntu 系统和注册 Gitee 账户。如果两者都准备好了可以略过。
https://ubuntu.com/download/desktop
在主机 Windows 10 的 E 盘新建一个 share 文件夹。然后在 Vmware 点虚拟机
然后点设置,然后点选项,然后点共享文件夹,然后点添加,然后点下一步,
然后点浏览,选择新建的共享文件夹,然后点下一步,
选启用此共享,然后点完成。
然后点确定。
这时候在 Ubuntu 会生成一个路径
/mnt/hgfs/share/
1)更新软件List
sudo apt update
2)安装和配置vim
安装vim文本编辑器
sudo apt-get install vim
配置vim:打开 ~/.vimrc
vim ~/.vimrc
添加
set nu
set hlsearch
set cursorline
set cursorcolumn
set autoindent
set laststatus=2
"highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue
function! CurDir()
let curdir = substitute(getcwd(), $HOME, "~", "g")
return curdir
endfunction
set statusline=\ %f%m%r%h\ \|\ \ pwd:\ %{CurDir()}\ \ \|%=\|\ %l,%c\ %p%%
https://gitee.com/signup?from=homepage
注册步骤:(略)
安装版本管理工具 git 和 git-lfs:
sudo apt-get install git
sudo apt-get install git-lfs
配置 git:
用户名 UserName
邮箱 [email protected]
git config --global user.name "UserName"
git config --global user.email "[email protected]"
git config --global credential.helper store
1)生成 ssh 密钥
如果已生成 ssh 密钥可以略过这步
ssh-keygen -t rsa
一路回车后,生成 ssh 密钥在路径 ~/.ssh/
cat ~/.ssh/id_rsa.pub
打印出来这坨很长的东西就是 ssh 公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZxilDryT.................................
2)添加公钥
登录 Gitee https://gitee.com/login#lang=zh-CN
点配置小齿轮
然后点 SSH 公钥,然后把生成的密钥贴进公钥的框框,然后点确定
1)安装 repo 代码仓库管理工具
sudo apt install curl
mkdir ~/bin
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
sudo chmod 777 ~/bin/repo
打开 ~/.bashrc
vim ~/.bashrc
在最后一行添加系统环境变量
export PATH=~/bin:$PATH
source 一下!
. ~/.bashrc
2)安装 python 2.7
因为 Ubuntu 20.04 自带的 python 是3.9版本的,而 repo 需要用到 python 2.7,所以安装一下 python 2.7 并配置为默认的 python
sudo apt install python2.7
sudo ln -sf /usr/bin/python2.7 /usr/bin/python
3)安装 pip3 和 requests 库
sudo apt install python3-pip
python3 -m pip install -i https://repo.huaweicloud.com/repository/pypi/simple requests
这个不知道是搞毛用的,但是官网的文档里有,勉为其难地装一下
(Requests is an elegant and simple HTTP library for Python, built for human beings. )
4)下载代码
新建工作路径放代码
mkdir ~/work/OpenHOS -p
cd ~/work/OpenHOS
init 一下 repo,下载 master 分支的源码。(master 分支的代码包含最新的功能,而 LTS 分支的代码比较稳定。)
官网上的文档用的是这个命令
repo init -u [email protected]:openharmony/manifest.git -b master --no-repo-verify
但是我这里会报错。如果报错的话试试添加 --no-clone-bundle
repo init -u [email protected]:openharmony/manifest.git -b master --no-repo-verify --no-clone-bundle
开始同步代码!
repo sync -c
repo forall -c 'git lfs pull'
源码总共18G左右,注意预留硬盘空间。
编译源码用到的库
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
因为 OpenHarmonyOs 跑在 Arm 平台,而源代码是在 PC 平台上编译,所以需要交叉编译工具来编译(出)在 Arm 平台上跑的软件。
在源码根目录下跑
bash build/prebuilts_download.sh
会在上层目录新建一个目录 OpenHarmony_2.0_canary_prebuilts,保存交叉编译工具的压缩包,之后会自动解压到源码中相应的位置
python3 -m pip install --user ohos-build
添加系统环境变量
vim ~/.bashrc
最后一行添加
export PATH=~/.local/bin:$PATH
source 一下!
source ~/.bashrc
编译源码打包 hap 应用的时候会用到 openjdk
sudo apt install openjdk-11-jdk
hb -h
打印一堆东西
usage: hb [-h] [-v] {build,set,env,clean} ...
OHOS Build System version 0.4.6
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
hb set
因为开发板是润和的开发板ipcamera_hispark_taurus,所以选择对应的配置 ipcamera_hispark_taurus 项,回车
可以用 hb env 打印出来配置好的编译参数
~/work/OpenHOS$ hb env
[OHOS INFO] root path: /home/username/work/OpenHOS
[OHOS INFO] board: hispark_taurus
[OHOS INFO] kernel: liteos_a
[OHOS INFO] product: ipcamera_hispark_taurus
[OHOS INFO] product path: /home/username/work/OpenHOS/vendor/hisilicon/hispark_taurus
[OHOS INFO] device path: /home/username/work/OpenHOS/device/board/hisilicon/hispark_taurus/liteos_a
[OHOS INFO] device company: hisilicon
hb build -f
编译完成的信息
......
[OHOS INFO] [6635/6637] STAMP obj/build/ohos/packages/copy_testfwk_required_files_phone.stamp
[OHOS INFO] [6636/6637] STAMP obj/build/ohos/packages/package_testcase.stamp
[OHOS INFO] [6637/6637] STAMP obj/build/core/gn/make_test.stamp
[OHOS INFO] 54614+0 records in
[OHOS INFO] 54614+0 records out
[OHOS INFO] 27962368 bytes (28 MB, 27 MiB) copied, 0.0615173 s, 455 MB/s
[OHOS INFO] 54598+0 records in
[OHOS INFO] 54598+0 records out
[OHOS INFO] 27954176 bytes (28 MB, 27 MiB) copied, 0.0614429 s, 455 MB/s
[OHOS INFO] 102400+0 records in
[OHOS INFO] 102400+0 records out
[OHOS INFO] 52428800 bytes (52 MB, 50 MiB) copied, 0.112262 s, 467 MB/s
[OHOS INFO] c targets overlap rate statistics
[OHOS INFO] subsystem files NO. percentage builds NO. percentage overlap rate
[OHOS INFO] aafwk 67 1.0% 67 1.0% 1.00
[OHOS INFO] ace 693 10.6% 693 10.6% 1.00
[OHOS INFO] ai 76 1.2% 76 1.2% 1.00
[OHOS INFO] appexecfwk 38 0.6% 38 0.6% 1.00
[OHOS INFO] communication 218 3.3% 218 3.3% 1.00
[OHOS INFO] distributedschedule 43 0.7% 43 0.7% 1.00
[OHOS INFO] global 38 0.6% 38 0.6% 1.00
[OHOS INFO] graphic 331 5.1% 331 5.1% 1.00
[OHOS INFO] hdf 625 9.6% 625 9.6% 1.00
[OHOS INFO] hiviewdfx 9 0.1% 9 0.1% 1.00
[OHOS INFO] kernel 2435 37.4% 2435 37.4% 1.00
[OHOS INFO] multimedia 124 1.9% 124 1.9% 1.00
[OHOS INFO] powermgr 25 0.4% 25 0.4% 1.00
[OHOS INFO] securec 117 1.8% 117 1.8% 1.00
[OHOS INFO] security 284 4.4% 284 4.4% 1.00
[OHOS INFO] sensors 7 0.1% 7 0.1% 1.00
[OHOS INFO] startup 68 1.0% 68 1.0% 1.00
[OHOS INFO] third_party 1333 20.5% 1333 20.5% 1.00
[OHOS INFO] updater 4 0.1% 4 0.1% 1.00
[OHOS INFO] utils 12 0.2% 12 0.2% 1.00
[OHOS INFO]
[OHOS INFO] c overall build overlap rate: 1.00
[OHOS INFO]
[OHOS INFO]
[OHOS INFO] ipcamera_hispark_taurus build success
[OHOS INFO] cost time: 0:07:47
编译出来的镜像路径
device/board/hisilicon/hispark_taurus/uboot/out/boot/u-boot-hi3516dv300.bin
out/hispark_taurus/ipcamera_hispark_taurus/OHOS_Image.bin
out/hispark_taurus/ipcamera_hispark_taurus/rootfs_vfat.img
out/hispark_taurus/ipcamera_hispark_taurus/userfs_vfat.img
注意 LTS 分支编译出来的 uboot 路径是在
device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot/u-boot-hi3516dv300.bin
跟 master 分支不同。
复制编译出来的镜像到共享文件夹
mkdir images
cp device/board/hisilicon/hispark_taurus/uboot/out/boot/u-boot-hi3516dv300.bin images
cp out/hispark_taurus/ipcamera_hispark_taurus/OHOS_Image.bin images
cp out/hispark_taurus/ipcamera_hispark_taurus/rootfs_vfat.img images
cp out/hispark_taurus/ipcamera_hispark_taurus/userfs_vfat.img images
cp images /mnt/hgfs/share/ -frp
emmc 分区表文件包含 fastboot,kernel,rootfs,user 分区的分区名字 PartitionName,文件系统 FileSystem,起始地址 Start,长度 Length,路径 SelectFile
先在源码根目录
ls -l images
可以获得镜像大小
-rwxrwxr-x 1 lu lu 6.3M Apr 24 05:13 OHOS_Image.bin
-rw-rw-r-- 1 lu lu 27M Apr 24 05:13 rootfs_vfat.img
-rwxrwxr-x 1 lu lu 259K Apr 24 05:13 u-boot-hi3516dv300.bin
-rw-rw-r-- 1 lu lu 50M Apr 24 05:13 userfs_vfat.img
由镜像大小来确定起分区始地址和长度:分区长度要大于镜像大小,分区起始地址 = 上一个分区的起始地址 + 上一个分区的长度
在 E:\share\images 目录新建文件 3516.xml,添加各分区的信息:
<?xml version="1.0" encoding="GB2312" ?>
<Partition_Info>
<Part Sel="1" PartitionName="fastboot" FlashType="emmc" FileSystem="none" Start="0" Length="1M" SelectFile="E:\share\images\u-boot-hi3516dv300.bin"/>
<Part Sel="1" PartitionName="kernel" FlashType="emmc" FileSystem="none" Start="1M" Length="9M" SelectFile="E:\share\images\OHOS_Image.bin"/>
<Part Sel="1" PartitionName="rootfs" FlashType="emmc" FileSystem="none" Start="10M" Length="30M" SelectFile="E:\share\images\rootfs_vfat.img"/>
<Part Sel="1" PartitionName="user" FlashType="emmc" FileSystem="none" Start="40M" Length="50M" SelectFile="E:\share\images\userfs_vfat.img"/>
</Partition_Info>
可以在润和官网上下载。貌似要注册账号。
串口线连接开发板和 Win10。串口从左到右依次是 GND,RX,TX
USB 线一端连接开发板背面的 TypeC 口,另一端接电脑连 Win10。
打开解压后的Hitool,保证当前芯片选择的是 Hi3516DV300
打开设备管理器查看串口号
在Hitool的传输方式选串口,设置串口号
点终端1标签的设置
设置串口号,配置波特率为 115200,以及数据位停止位等,然后点确定
点连接串口
然后传输方式选择 USB 口
点烧写 eMMC 标签
点浏览选择分区表文件,然后各分区信息会显示在表格里
如果烧写不同类型内核的系统,需要先擦除分区:
1)先点擦除全器件,
2)然后按住开发板上 update 键的同时,
3)同时拔插一下接电脑端的 USB线重新给开发板上电
像这样:
4)注意此时虚拟机会弹个框框让选择连接虚拟机还是连接主机 Win10,须要选择连接主机 Win10,否则会擦除失败
5)此时出现绿色进度条,开始擦除分区
6)擦除完成后点烧写
7)如果烧写失败则需要重做这个流程:点烧写,按开发板 update 键,同时拔插 USB 线给开发板重新上电,选择连接主机 Win10,等绿色进度条出现
8)烧写完成后开发板自动重新开机,终端1的框框会打印信息
此时需要配置 uboot 启动参数,在终端1的框框中依次输入命令然后回车
setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";
setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=30M rw";
saveenv
reset
开发板重启后正常进系统
Hitool 里的终端1框框里可以输入命令
下一篇讲讲驱动。
下一篇:OpenHarmonyOs / LiteOs-a 驱动开发