海思3861环境搭建

Posted 耳 东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了海思3861环境搭建相关的知识,希望对你有一定的参考价值。

开发环境

ubuntu18.04

DOPI3861开发板  

Q群:735884031

一.安装编译工具

1.按照官方文档下载编译工具并添加到环境变量中

https://device.harmonyos.com/cn/docs/start/introduce/quickstart-lite-env-setup-linux-0000001105407498

2.切换本地python / python3 环境

3861编译环境最低要求python3.7环境,先查看系统已安装的python环境

/usr/bin# ls python*
python  python2  python2.7  python3  python3.6  python3.6-config  python3.6m  python3.6m-config  python3.8  python3-config  python3m  python3m-config

 笔者系统已经安装了python2.7 、python3.6 和 python3.8版本,如果有小伙伴的系统里没有安装3.8以上版本的请自行更新旧版本python或重新安装新版本的python。

先查看系统默认使用的python版本

/usr/bin# python --version
Python 2.7.17
/usr/bin# python3 --version
Python 3.6.9

这里默认使用的版本显然是不符合3861编译的要求的,接下来将系统默认的版本切换到python3.8,先建立python组添加而可选项

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 # 添加Python可选项,优先级为1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 # 添加Python2可选项,优先级为1

执行完之后可以看到python和python3均链接到 /etc/alternatives/ 下了

/usr/bin# ls -l python*
lrwxrwxrwx 1 root root      24 8月   3 22:21 python -> /etc/alternatives/python
lrwxrwxrwx 1 root root       9 4月  16  2018 python2 -> python2.7
-rwxr-xr-x 1 root root 3633000 2月  27 23:10 python2.7
lrwxrwxrwx 1 root root      25 8月   3 22:26 python3 -> /etc/alternatives/python3
-rwxr-xr-x 2 root root 4526456 1月  26  2021 python3.6
lrwxrwxrwx 1 root root      33 1月  26  2021 python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4526456 1月  26  2021 python3.6m
lrwxrwxrwx 1 root root      34 1月  26  2021 python3.6m-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x 1 root root 5203488 2月  26 06:10 python3.8
lrwxrwxrwx 1 root root      16 10月 25  2018 python3-config -> python3.6-config
lrwxrwxrwx 1 root root      10 10月 25  2018 python3m -> python3.6m
lrwxrwxrwx 1 root root      17 10月 25  2018 python3m-config -> python3.6m-config

 切换python使用版本,选择对应的python版本就可以了

/usr/bin# update-alternatives --config python
有 3 个候选项可用于替换 python (提供 /usr/bin/python)。

  选择       路径              优先级  状态
------------------------------------------------------------
  0            /usr/bin/python2.7   1         自动模式
* 1            /usr/bin/python2.7   1         手动模式
  2            /usr/bin/python3.6   1         手动模式
  3            /usr/bin/python3.8   1         手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:3

查看下当前使用的python版本(将python3也使用同样的方式切换至3.8版本),至此python环境就搭建好了,可以安心的编译了

/usr/bin# python --version
Python 3.8.0

3.安装交叉编译链,下载sdk

交叉编译链下载:

https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz

sdk下载

https://device.harmonyos.com/cn/docs/start/get-code/sourcecode-acquire-0000001050769927

解压交叉编译链,笔者喜欢把交叉编译链放在/opt下,有其他爱好的小伙伴也可以在sdk目录下

/home/cjx/fdsk/hi3861/tools# ls
gn-linux-x86-1717.tar.gz  hcc_riscv32.tar.gz  llvm.tar.gz  ninja.1.9.0.tar
/home/cjx/fdsk/hi3861/tools# tar -zxvf hcc_riscv32.tar.gz -C /opt/

在 /etc/profile 文件的最后添加,也可以在sdk目录下新建一个shll脚本,开发前先source下该脚本

export PATH="/opt/hcc_riscv32/bin:$PATH"

4.编译

解压sdk后再根目录下执行make,全编译

# ls
app  boot  build  build_patch.sh  build.sh  components  config  factory.mk  include  Makefile  non_factory.mk  output  platform  SConstruct  third_party  tools

编译的过程当然不会是一帆风顺了,报错查找不到ecdsa编译工具

在官方文档中开发步骤,安装开发板环境中,按照文档安装python依赖库

 安装完成后重新编译,编译完成

-------------/home/cjx/fdsk/hi3861/Hi3861V100R001C00SPC025/output/bin/Hi3861_demo_ota.bin image info print start-------------
[image_id=0x3c78961e][struct_version=0x0]]
[section_offset=0x280][section_len=0x55780]
[file_type=0xf0][file_version=0x0][encrypt_flag=0x42]
[file_len=0x55a00][key_len=0x120]
[file_attr=0x44]
[hash_alg=0x0][sign_alg=0x3f][sign_param=0x0]
[aes_key[0-1-14-15]=[0x0][0x0][0x0][0x0]]
[aes_iv [0-1-14-15]=[0x0][0x0][0x0][0x0]]
[common key][00]=[0x0]
[common key][01]=[0x0]
[common key][30]=[0x0]
[common key][31]=[0x0]
[common sign][00]=[0x3a]
[common sign][01]=[0xb5]
[common sign][30]=[0xa7]
[common sign][31]=[0xdf]
[section sign][00]=[0x7c]
[section sign][01]=[0x30]
[section sign][30]=[0xbc]
[section sign][31]=[0x6c]
[image_id=0x3c78961e][struct_version=0x0]]
[hash_alg=0x0][sign_alg=0x3f][sign_param=0x0]
[section_count=0x1]
[section0_compress=0x1][section0_offset=0x3c0][section0_len=0x55639]
[section1_compress=0x0][section1_offset=0x0][section1_len=0x0]
-------------/home/cjx/fdsk/hi3861/Hi3861V100R001C00SPC025/output/bin/Hi3861_demo_ota.bin image info print end--------------
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
                              BUILD SUCCESS
< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >
make[1]: 离开目录“/home/cjx/fdsk/hi3861/Hi3861V100R001C00SPC025”
/home/cjx/fdsk/hi3861/Hi3861V100R001C00SPC025#

 5.烧录

选择 output/bin/Hi3861_xxx_allinone.bin,勾选Auto burn

点击connect后按下开发板的复位按键,等待下载完成,下载完成后点击disconnect

 

 5.添加helloword

 在app下新建一个hello_word的文件夹,hello_word下新建一个src用于存放源代码

拷贝app/demo/app.json和SConscript到hello_word下

拷贝app/demo/src/SConscript到hello_word/src下

hello_word# tree
.
├── app.json
├── SConscript
└── src
    ├── helloword.c
    └── SConscript

修改app.json,该文件用于指定工程的源文件和头文件路径

{
    "TARGET_LIB": "demo",
    "APP_SRCS": [
        "src"
    ],
    "INCLUDE": [
        "components/iperf2/include",
        "config/app",
        "config/diag",
        "platform/os/Huawei_LiteOS/net/ripple/exports",
        "components/ripple/exports",
        "components/hilink/include",
        "third_party/mbedtls/include/mbedtls/",
        "include/OHOS"
    ],
    "CC_FLAGS": [
    ],
    "DEFINES": [
        "_PRE_WLAN_FEATURE_CSI",
        "_PRE_WLAN_FEATURE_P2P",
        "LWIP_ENABLE_DIAG_CMD=0"
    ],
    "AR_FLAGS": [],
    "LD_FLAGS": [],
    "AS_FLAGS": [],
    "LD_DIRS": [],
    "CLEAN": []
}

helloword.c文件

hi_void app_main(hi_void)
{
 	while(1)
	{
		printf("hello word\\n");
		sleep(1);
	}
}

SConscript文件不做修改,回到sdk的根目录下使用build.sh单独编译helloword

# ./build.sh hello_word

查看output/bin目录下,生成了hello_word对应的固件

# ll
总用量 29320
drwxrwxrwx 2 root root     4096 8月   6 22:55 ./
drwxrwxrwx 3 1014 1014     4096 8月   5 22:49 ../
-rwxrwxrwx 1 root root    24576 8月   6 22:24 Hi3861_boot_signed_B.bin*
-rw-r--r-- 1 root root    23312 8月   6 22:24 Hi3861_boot_signed.bin
-rwxrwxrwx 1 root root   614820 8月   6 22:24 Hi3861_demo_allinone.bin*
-rwxrwxrwx 1 root root 13982586 8月   6 22:24 Hi3861_demo.asm*
-rwxrwxrwx 1 root root   599984 8月   6 22:24 Hi3861_demo_burn.bin*
-rwxrwxrwx 1 root root    24272 8月   6 22:24 Hi3861_demo_flash_boot_ota.bin*
-rwxrwxrwx 1 root root  2090180 8月   6 22:24 Hi3861_demo.map*
-rwxrwxrwx 1 root root   350720 8月   6 22:24 Hi3861_demo_ota.bin*
-rwxr-xr-x 1 root root  1396384 8月   6 22:24 Hi3861_demo.out*
-rwxrwxrwx 1 root root        8 8月   6 22:24 Hi3861_demo_vercfg.bin*
-rw-r--r-- 1 root root   224324 8月   6 22:55 Hi3861_hello_word_allinone.bin
-rw-r--r-- 1 root root  7575499 8月   6 22:55 Hi3861_hello_word.asm
-rw-r--r-- 1 root root   209488 8月   6 22:55 Hi3861_hello_word_burn.bin
-rw-r--r-- 1 root root    24272 8月   6 22:55 Hi3861_hello_word_flash_boot_ota.bin
-rw-r--r-- 1 root root  1900185 8月   6 22:55 Hi3861_hello_word.map
-rw-r--r-- 1 root root    99024 8月   6 22:44 Hi3861_hello_word_ota.bin
-rwxr-xr-x 1 root root   825080 8月   6 22:55 Hi3861_hello_word.out*
-rw-r--r-- 1 root root        8 8月   6 22:55 Hi3861_hello_word_vercfg.bin
-rw-r--r-- 1 root root    14688 8月   6 22:24 Hi3861_loader_signed.bin

选择Hi3861_hello_word_allinone.bin进行烧录

ready to OS start
hello word
hello word
hello word
hello word

以上是关于海思3861环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

海思3861环境搭建

Ubuntu 搭建小熊派 hi3861 环境

Ubuntu 搭建小熊派 hi3861 环境

Ubuntu 搭建小熊派 hi3861 环境

Ubuntu 搭建小熊派 hi3861 环境

最新 Hi3861开发环境搭建