欢迎关注我的公众号 [极智视界],回复001获取Google编程规范

O_o>_<   o_OO_o~_~o_O

  大家好,我是极智视界,本文介绍了全志 XR806 say hello world 实现。

  咱们之前已经完成了 XR806 鸿蒙系统的固件编译和固件烧录,得到的终端输出类似这样:

   这里进入下一阶段,先让 XR806 板子来一下 blink、blink,以示准备就绪。

   在串口调试命令终端输入如下指令:

hm iot pwm init p=2
hm iot pwd

   看板子的灯 blink~blink~blink~

  接下来开始实现 hello world。

   需要重新走一遍固件编译与固件烧录,打开 <xr806_openharmony_path>/device/xradio/xr806/BUILD.gn,配置为启用 deps += "ohosdemo:ohosdemo",如下:

# device/xradio/xr806/BUILD.gn

import("//build/lite/config/subsystem/lite_subsystem.gni")
import("//build/lite/config/component/lite_component.gni")
import("//base/security/huks/build/config.gni")

build_ext_component("libSDK") {
 exec_path = rebase_path(".", root_build_dir)
 outdir = rebase_path("$root_out_dir")
 command = "./build.sh ${outdir}"
 deps = [
   "//build/lite/:ohos",
   "//kernel/liteos_m:kernel",
   "os:liteos_glue",
]
 if (IsBootloader == "false") {
   deps += [
     "adapter/hals:adapter",
     "adapter/console:app_console",
     "ohosdemo:ohosdemo"           # 启用 ohosdemo
  ]
}
 if (disable_huks_binary == true) {
   deps += [
     "//base/security/huks/frameworks/huks_lite:huks_sdk",
  ]
}
}

group("xr806") {
}

   循着指示到 <xr806_openharmony_path>/device/xradio/xr806/ohosdemo/BUILD.gn,启用 deps = "hello_demo:app_hello",如下:

# device/xradio/xr806/ohosdemo/BUILD.gn

group("ohosdemo") {
   deps = [
       "hello_demo:app_hello",
       #"iot_peripheral:app_peripheral",
       #"wlan_demo:app_WlanTest",
  ]
}

  到这里配置就可以了,为了更加深入一些,咱们继续看,<xr806_openharmony_path>/device/xradio/xr806/ohosdemo 目录结构如下:

-
|-- hello_demo
| |-- src
|     |-- main.c
| |-- BUILD.gn
|-- iot_peripheral
| |-- ...
|-- wlan_demo
| |-- ...
|-- BUILD.gn

  来看一下 hello_demo 文件夹下的 BUILD.gn:

# device/xradio/xr806/ohosdemo/hello_demo/BUILD.gn

import("//device/xradio/xr806/liteos_m/config.gni")

static_library("app_hello") {              # 这里就很容易看懂 "hello_demo:app_hello"
  configs = []

  sources = [
     "src/main.c",
  ]

  cflags = board_cflags

  include_dirs = board_include_dirs
  include_dirs += [
     "//kernel/liteos_m/kernel/arch/include",
  ]
}

   最后的实现在 src/main.c,代码很简单:

#include <stdio.h>
#include "ohos_init.h"
#include "kernel/os/os.h"
static OS_Thread_t g_main_thread;

static void MainThread(void *arg){      /// 每秒打印 hello world
while (1) {
printf("hello world!\n");
LOS_Msleep(1000);}
}

void HelloTestMain(void){
printf("Wifi Test Start\n");
if (OS_ThreadCreate(&g_main_thread, "MainThread", MainThread, NULL,
   OS_THREAD_PRIO_APP, 4 * 1024) != OS_OK) {
printf("[ERR] Create MainThread Failed\n");}
}
SYS_RUN(HelloTestMain);

   以上就是 XR806 say hello world 的整个逻辑,下面要做的就是重新走一遍固件编译和烧录,然后终端展示:

   [注]

   解决终端输出偏移问题,类似:

   对于 Xshell 和 MobaXterm 分别提供解决方法。

  • Xshell:

   work 了:

  • MobaXterm:

   (1) Setting->Configuration->Terminal->Terminal features 取消 "Paste using right-click":

  (2) 右击终端选择 "Change Terminal Settings",然后勾选 "Implicit CR in every LF":

   这样就 work 了:

  以上分享了全志 XR806 板子 say hello 的过程,希望我的分享能对你的学习有一点帮助。

【公众号传送】

【嵌入式AI】全志 XR806 say hello world

【嵌入式AI】全志 XR806 say hello world的更多相关文章

  1. 【嵌入式AI】全志 XR806 OpenHarmony 鸿蒙系统固件烧录

      欢迎关注我的公众号 [极智视界],回复001获取Google编程规范   O_o   >_<   o_O   O_o   ~_~   o_O   大家好,我是极智视界,本教程详细记录了 ...

  2. 锁定“嵌入式AI”应用 中科创达启动第二轮成长

    Thundersoft|中科创达软件股份有限公司  http://www.thundersoft.com/index.php 原文:http://tech.hexun.com/2017-08-29/1 ...

  3. 比特大陆发布终端 AI 芯片 端云联手聚焦安防

    雷帝网 乐天 10月17日报道 比特大陆今日正式发布终端人工智能芯片BM1880,一同发布的还有基于云端人工智能芯片 BM1682 的算丰智能服务器 SA3.嵌入式AI迷你机 SE3.3D 人脸识别智 ...

  4. 浅谈Android发展趋势分析

    去年11月16.17日,我有幸参加了北京2017安卓技术大会,做了关于车载Android系统的演讲,并主持了诸多大咖参与的圆桌讨论,对Android未来几年的发展趋势进行了一番讨论.来自小米.百度.高 ...

  5. 深入浅出理解EdgeBoard中NHWC数据格式

    摘要: 在深度学习中,为了提升数据传输带宽和计算性能,经常会使用NCHW.NHWC和CHWN数据格式,它们代表Image或Feature Map等的逻辑数据格式(可以简单理解为数据在内存中的存放顺序) ...

  6. Jetson TX2

    NVIDIA Jetson TX2作为一个嵌入式平台的深度学习端,具备不错的GPU性能,可以发现TX2的GPU的计算能力是6.2.这意味着TX2对半精度运算有着良好的支持,因此,完全可以在桌面端训练好 ...

  7. 部署TVM Runtime

    部署TVM Runtime本文主要介绍如何在开发板上部署TVM Runtime, 在本地机器安装完整的TVM(包含了TVM Runtime以及编译功能), 并且使用一个简单的远程调用例子测试是否部署成 ...

  8. 电阻存储器为edge-AI提供了仿生架构

    电阻存储器为edge-AI提供了仿生架构 Resistive memories enable bio-inspired architectures for edge AI 近年来,脑启发计算领域的研究 ...

  9. 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系

    你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...

随机推荐

  1. 一个神奇的JS混淆,JSFuck!

    JSFuck,整体由6个字符[, ], (, ), !, +组成,但却是可以正常运行的JS代码,JSFuck程序可以在任何Web浏览器或引擎中运行解释JavaScript! 看一段代码,源代码为:do ...

  2. JavaScript设计模式,单例模式!

    单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点.有些对象只需要一个,这时可用单例模式. 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance ...

  3. 【leetcode】337. House Robber III

    The thief has found himself a new place for his thievery again. There is only one entrance to this a ...

  4. Excel 数据验证:分类选择及输入限制

    几个简单设置让你的数据不再出错 如何快速选择某一大类中的细分小类 多级菜单 注意:引用可以创建二级目录,但是引用前应先用公式定义名称,然后引用,引用只能在本sheet操作.

  5. GO Exit Fatal panic

    Exit() 应用程序(不只是函数)退出执行 defer 不会被执行(因为程序都退出了) log.Fatal() 输出打印内容 应用程序退出 defer 不会被执行 panic() 函数停止执行(不是 ...

  6. virtualbox Linux安装增强功能

    1.点击<设备>--><安装增强功能> 2.创建安装包挂载目录,并挂载 #创建挂载目录 mkdir /mnt/cdrom #挂载光盘内容 mount -t auto -r ...

  7. Linux_spool命令

    spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果. 参数指南 对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直接导入,SQL语句如: ...

  8. Javaj基础知识runtime error

    遇到的java 运行时错误: NullPointerException空指针  ,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始 ...

  9. 基于spring sringmvc mybatis 做的导入导出

    导入 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  10. gitlab的分支保护配置

    目录 一.简介 二.Gitlab配置步骤 一.简介 开发当前开发的分支遇到暂时无法解决的问题,现在有需要开发其他应用,所以希望运维这边将当前有问题分支冻结,让其他人无法进行修改,待后续有时间在排查代码 ...