赞
踩
很荣幸获得极术设区提供的这次试用机会,可以接触鸿蒙操作系统。我工作接触最多的是linux 平台的嵌入式ARM平台较多,这次跑了下鸿蒙,也非常有趣。
不过接进年底了,日常大小琐碎事情突然多了起来,测评的比较匆忙,目前只把代码拉了下来,跑了几个Demo,遂写点简单的吧,顺带记录下从中遇到的问题,一并贴出来,给后面玩XR806小伙伴一个参考
不过现在应该恢复了。应该按照官方文档只接获取即可
XR806 WIKI
烧录也是按照官方文档即可
2. 编译配置

**** cjson 文件夹中的main.c 中
/* * Copyright (C) 2021 XRADIO TECHNOLOGY CO., LTD. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. * 3. Neither the name of XRADIO TECHNOLOGY CO., LTD. nor the names of * its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <stdio.h> #include "ohos_init.h" #include "kernel/os/os.h" #include "cjson/cJSON.h" #include <stdio.h> #include <stdlib.h> #include <string.h> static OS_Thread_t g_main_thread; /* Used by some code below as an example datatype. */ struct record { const char *precision; double lat; double lon; const char *address; const char *city; const char *state; const char *zip; const char *country; }; /* Create a bunch of objects as demonstration. */ static int print_preallocated(cJSON *root) { /* declarations */ char *out = NULL; char *buf = NULL; char *buf_fail = NULL; size_t len = 0; size_t len_fail = 0; /* formatted print */ out = cJSON_Print(root); /* create buffer to succeed */ /* the extra 5 bytes are because of inaccuracies when reserving memory */ len = strlen(out) + 5; buf = (char*)malloc(len); if (buf == NULL) { printf("Failed to allocate memory.\n"); exit(1); } /* create buffer to fail */ len_fail = strlen(out); buf_fail = (char*)malloc(len_fail); if (buf_fail == NULL) { printf("Failed to allocate memory.\n"); exit(1); } /* Print to buffer */ if (!cJSON_PrintPreallocated(root, buf, (int)len, 1)) { printf("cJSON_PrintPreallocated failed!\n"); if (strcmp(out, buf) != 0) { printf("cJSON_PrintPreallocated not the same as cJSON_Print!\n"); printf("cJSON_Print result:\n%s\n", out); printf("cJSON_PrintPreallocated result:\n%s\n", buf); } free(out); free(buf_fail); free(buf); return -1; } /* success */ printf("%s\n", buf); /* force it to fail */ if (cJSON_PrintPreallocated(root, buf_fail, (int)len_fail, 1)) { printf("cJSON_PrintPreallocated failed to show error with insufficient memory!\n"); printf("cJSON_Print result:\n%s\n", out); printf("cJSON_PrintPreallocated result:\n%s\n", buf_fail); free(out); free(buf_fail); free(buf); return -1; } free(out); free(buf_fail); free(buf); return 0; } /* Create a bunch of objects as demonstration. */ static void create_objects(void) { /* declare a few. */ cJSON *root = NULL; cJSON *fmt = NULL; cJSON *img = NULL; cJSON *thm = NULL; cJSON *fld = NULL; int i = 0; /* Our "days of the week" array: */ const char *strings[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; volatile double zero = 0.0; /* Our "days of the week" array: */ root = cJSON_CreateStringArray(strings, 7); if (print_preallocated(root) != 0) { cJSON_Delete(root); exit(EXIT_FAILURE); } cJSON_Delete(root); } int test_main(void) { /* print the version */ printf("Version: %s\n", cJSON_Version()); /* Now some samplecode for building objects concisely: */ create_objects(); return 0; } static void MainThread(void *arg) { LOS_Msleep(10000); test_main(); while (1) { 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);
**** cjson文件夹下的BUILD.gn 设置如下:
static_library("app_cjson") {
configs = []
sources = [
"src/main.c",
]
cflags = board_cflags
include_dirs = board_include_dirs
include_dirs += [
"//kernel/liteos_m/kernel/arch/include",
]
}
修改xradion/xr806下的BUILD.gn
group("ohosdemo") {
deps = [
"cjson:app_cjson",
#"blink:app_blink",
#"hello_demo:app_hello",
#"iot_peripheral:app_peripheral",
#"wlan_demo:app_WlanTest",
#"wlan:app_wlan",
#"httpc:app_httpc",
]
}
`hb build -f`
可能会报固件分区有问题,只接将xxxxx/device/xradio/xr806/xr_skylark/project/demo/audio_demo/image/xr806/image_auto_cal.cfg中的分区拷贝到image.cfg ,重新编译。
重新烧写,串口调试打印如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。