【嵌入式AI】全志 XR806 say hello world
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范
O_o
>_<
o_O
O_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的更多相关文章
- 【嵌入式AI】全志 XR806 OpenHarmony 鸿蒙系统固件烧录
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本教程详细记录了 ...
- 锁定“嵌入式AI”应用 中科创达启动第二轮成长
Thundersoft|中科创达软件股份有限公司 http://www.thundersoft.com/index.php 原文:http://tech.hexun.com/2017-08-29/1 ...
- 比特大陆发布终端 AI 芯片 端云联手聚焦安防
雷帝网 乐天 10月17日报道 比特大陆今日正式发布终端人工智能芯片BM1880,一同发布的还有基于云端人工智能芯片 BM1682 的算丰智能服务器 SA3.嵌入式AI迷你机 SE3.3D 人脸识别智 ...
- 浅谈Android发展趋势分析
去年11月16.17日,我有幸参加了北京2017安卓技术大会,做了关于车载Android系统的演讲,并主持了诸多大咖参与的圆桌讨论,对Android未来几年的发展趋势进行了一番讨论.来自小米.百度.高 ...
- 深入浅出理解EdgeBoard中NHWC数据格式
摘要: 在深度学习中,为了提升数据传输带宽和计算性能,经常会使用NCHW.NHWC和CHWN数据格式,它们代表Image或Feature Map等的逻辑数据格式(可以简单理解为数据在内存中的存放顺序) ...
- Jetson TX2
NVIDIA Jetson TX2作为一个嵌入式平台的深度学习端,具备不错的GPU性能,可以发现TX2的GPU的计算能力是6.2.这意味着TX2对半精度运算有着良好的支持,因此,完全可以在桌面端训练好 ...
- 部署TVM Runtime
部署TVM Runtime本文主要介绍如何在开发板上部署TVM Runtime, 在本地机器安装完整的TVM(包含了TVM Runtime以及编译功能), 并且使用一个简单的远程调用例子测试是否部署成 ...
- 电阻存储器为edge-AI提供了仿生架构
电阻存储器为edge-AI提供了仿生架构 Resistive memories enable bio-inspired architectures for edge AI 近年来,脑启发计算领域的研究 ...
- 从产业链、架构和技术三个层面,看元宇宙与RPA的发展关系
你可能还不知道,元宇宙也将带动RPA高速发展 一文读懂RPA如何赋能元宇宙,虚拟空间更需要RPA无处不在 三个层面,解读元宇宙如何利好RPA行业发展 从产业链.架构和技术三个层面,看元宇宙与RPA的发 ...
随机推荐
- 【模板】最小费用最大流(网络流)/洛谷P3381
题目链接 https://www.luogu.com.cn/problem/P3381 题目大意 输入格式 第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数.有向边的个数.源点序号.汇点 ...
- BIO/NIO/AIO对比
IO 模型 就是使用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能. Java 支持三种网络编程模型:BIO.NIO.AIO. Java BIO,同步并阻塞(传统阻塞型),服务器实现 ...
- flink04 -----1 kafkaSource 2. kafkaSource的偏移量的存储位置 3 将kafka中的数据写入redis中去 4 将kafka中的数据写入mysql中去
1. kafkaSource 见官方文档 2. kafkaSource的偏移量的存储位置 默认存在kafka的特殊topic中,但也可以设置参数让其不存在kafka的特殊topic中 3 将k ...
- ubuntu18.10搜狗输入法的安装
记录一下 1.卸载ibus ubuntu默认使用ibus管理输入法,官方推荐使用fcitx.我们先卸载ibus sudo apt-get remove ibus 清除ibus配置,如果没有设置 sud ...
- 爬虫系列:使用 MySQL 存储数据
上一篇文章我们讲解了爬虫如何存储 CSV 文件,这篇文章,我们讲解如何将采集到的数据保存到 MySQL 数据库中. MySQL 是目前最受欢迎的开源关系型数据库管理系统.一个开源项目具有如此之竞争力实 ...
- 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(五)-文件管理初步介绍
其他链接 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 ...
- Dubbo中CompletableFuture异步调用
使用Future实现异步调用,对于无需获取返回值的操作来说不存在问题,但消费者若需要获取到最终的异步执行结果,则会出现问题:消费者在使用Future的get()方法获取返回值时被阻塞.为了解决这个问题 ...
- C++易错小结
C++ 11 vector 遍历方法小结 方法零,对C念念不舍的童鞋们习惯的写法: void ShowVec(const vector<int>& valList) { int c ...
- 计算机网络 Raw_Socket编程 Ping C语言
计算机网络做了一个附加题,用C语言Raw_Socket实现ping指令. 通过本部的Mooc学习了一下Socket编程,然后成功写了出来orz 先放一下代码: #include <stdio.h ...
- java多线程7:ReentrantReadWriteLock
真实的多线程业务开发中,最常用到的逻辑就是数据的读写,ReentrantLock虽然具有完全互斥排他的效果(即同一时间只有一个线程正在执行lock后面的任务), 这样做虽然保证了实例变量的线程安全性, ...