• [技术交流] rk3568使用napi进行uart串口开发,遇到问题。
    rk3568使用uart进行串口通信代码实现,napi代码如下#include "napi/native_api.h"#include "platform_if.h"#include "uart_if.h"#include "hdf_base.h"#include <cstdint>#include "hdf_types.h"#include <cstdlib>#include <functional>#include <hilog/log.h>#include <js_native_api_types.h>static napi_value Add(napi_env env, napi_callback_info info){ size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); double value0; napi_get_value_double(env, args[0], &value0); double value1; napi_get_value_double(env, args[1], &value1); napi_value sum; napi_create_double(env, value0 + value1, &sum); return sum;}unsigned long open(char port[50]) { return open(port); }static napi_value UartOpen(napi_env env, napi_callback_info info){ size_t requireArgc = 1; size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); size_t size; char port[50] ; napi_get_value_string_utf8(env, args[0], port, 50, &size); size_t ret; ret = open(port); if (ret == NULL) { HDF_FAILURE; } }unsigned long setAttribute(char port, char attribute) { setAttribute(port, attribute); }static napi_value UartSetAttribute(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env,args[0], &valuetype1); char port{50}; size_t size; size_t ret; struct UartAttribute attribute; attribute.dataBits = UART_ATTR_DATABIT_8; attribute.parity = UART_ATTR_PARITY_NONE; attribute.stopBits = UART_ATTR_STOPBIT_1; // UART传输数据停止位为1位 attribute.rts = UART_ATTR_RTS_DIS; // UART禁用RTS attribute.cts = UART_ATTR_CTS_DIS; // UART禁用CTS attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN; // UART使能RX FIFO attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN; // UART使能TX FIFO ret = UartSetAttribute(&port, &attribute); if (ret != HDF_SUCCESS) { LOG_ERROR; } LOG_INFO;} struct napi_value__ * write(int port, unsigned long data) {return write(port, data);}static napi_value UartWrite(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); int32_t port; DevHandle handle = UartOpen(port); napi_get_value_int32(env, args[0], &port); napi_get_value_int32(env, args[0], &port); char value0[50]; size_t data; napi_get_value_string_utf8(env, args[1], value0, 50, &data); int32_t size; size = sizeof(data); napi_value ret;ret = write(port,data); napi_create_int32(env, data,&ret ); return ret; if (ret == NULL) { LOG_ERROR; }return ret;} struct napi_value__ * read(int port, char data[512]) { return read(port, data); }static napi_value UartRead(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); int32_t port; napi_get_value_int32(env, args[0], &port); char value0[50]; size_t data; napi_get_value_string_utf8(env, args[1], value0, 50, &data); napi_value ret; ret = read(port,value0); napi_create_int32(env, data,&ret ); return ret; if (ret == NULL) { LOG_ERROR; }return ret;}struct napi_value__ * set(char port[50], unsigned int BaudRate) { return set(port, BaudRate);}static napi_value UartSetBaud(napi_env env, napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); char port[50]; size_t size1; napi_get_value_string_utf8(env, args[0], port, 50, &size1); int32_t BaudRate ; BaudRate= 150000; napi_value result; napi_create_int32(env, 1500000,&result); napi_value ret; ret = set(port,15000000); if (ret == NULL ) { HDF_FAILURE; } return ret; } struct napi_value__ * get(char port[50], int BaudRate) { return get(port, BaudRate);}static napi_value UartGetBaud(napi_env env, napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); char port[50]; size_t size1; napi_get_value_string_utf8(env, args[0], port, 50, &size1); int32_t BaudRate; napi_value ret; napi_create_int32(env, BaudRate, &ret); napi_create_int32(env, size1, &ret); ret = get(port, BaudRate); if (ret == nullptr) { HDF_FAILURE;; } return ret; }struct napi_value__ * close(int port) { return close(port);}static napi_value UartClose(napi_env env, napi_callback_info info){ size_t requireArgc = 1; size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); int port; napi_get_value_int32(env, args[0], &port); close(port); napi_value ret; napi_create_int32(env, port, &ret); if (ret == NULL) { HDF_FAILURE; }return ret;}EXTERN_C_STARTstatic int32_t UartTest(void ) { int32_t ret; uint32_t port; uint32_t baud = 15000000; DevHandle handle = NULL; uint8_t wbuff[] = {}; uint8_t rbuff[] = {}; struct UartAttribute attribute; attribute.dataBits = UART_ATTR_DATABIT_8; // UART传输数据位宽,一次传输8个bit attribute.parity = UART_ATTR_PARITY_NONE; // UART传输数据无校检 attribute.stopBits = UART_ATTR_STOPBIT_1; // UART传输数据停止位为1位 attribute.rts = UART_ATTR_RTS_DIS; // UART禁用RTS attribute.cts = UART_ATTR_CTS_DIS; // UART禁用CTS attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN; // UART使能RX FIFO attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN;// UART使能TX FIFO ret = UartSetAttribute(handle, &attribute); handle = UartOpen(port); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartSetBaud(handle, 1500000); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartGetBaud(handle, &baud); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartWrite(handle, wbuff, sizeof(wbuff)); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartRead(handle, rbuff, sizeof(rbuff)); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } UartClose(handle); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } return HDF_SUCCESS;}static napi_value Init(napi_env env, napi_value exports){ napi_property_descriptor desc[] = { { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartOpen", nullptr, UartOpen, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartClose", nullptr, UartClose, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartWrite", nullptr, UartWrite, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartRead", nullptr, UartRead, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartSetBaud", nullptr, UartSetBaud, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartGetBaud", nullptr, UartGetBaud, nullptr, nullptr, nullptr, napi_default, nullptr } }; napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); return exports;}EXTERN_C_ENDstatic napi_module demoModule = { .nm_version = 1, .nm_flags = 0, .nm_filename = nullptr, .nm_register_func = Init, .nm_modname = "entry", .nm_priv = ((void*)0), .reserved = { 0 },};extern "C" __attribute__((constructor)) void RegisterEntryModule(void){ napi_module_register(&demoModule);}cmakelist.txt内容如下:# the minimum version of CMake.cmake_minimum_required(VERSION 3.4.1)project(Uart)if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")endif()if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/path/to/openharmony/libs")endif()set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})SET (CMAKE_BUILD_TYPE Debug CACHE INTERNAL “” FORCE)if(DEFINED PACKAGE_FIND_FILE) include(${PACKAGE_FIND_FILE})endif()include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include)add_library(entry SHARED napi_init.cpp) target_link_libraries(serialhelper PUBLIC libace_napi.z.so libc++.a libhilog_ndk.z.so libuv.so libserialport_service_api.z.so)运行工程报错: > hvigor ERROR: Failed :entry:default@BuildNativeWithCmake...  > hvigor ERROR: Exceptions happened while executing: Not searching for unused variables given on the command line. -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:3 (project):   The CMAKE_CXX_COMPILER:      C:/Program Files/Huawei/DevEco Studio/license/DevEco Studio/sdk/HarmonyOS-NEXT-DB1/openharmony/native/llvm/bin/clang++.exe    is not a full path to an existing compiler tool.    Tell CMake where to find the compiler by setting either the environment   variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path   to the compiler, or to the compiler name if it is in the PATH.  -- Configuring incomplete, errors occurred! See also "C:/Users/Administrator/DevEcoStudioProjects/Uart/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeOutput.log". See also "C:/Users/Administrator/DevEcoStudioProjects/Uart/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeError.log".  > hvigor ERROR: BUILD FAILED in 2 s 908 ms  hilog中报错如下:08-05 17:28:11.725   5162-5162    C02f00/teecd                   pid-5162              E     open tee client dev failed, fd is <private> 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     fs agent init failed 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     open tee client dev failed, fd is <private> 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     misc agent init failed 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     open tee client dev failed, fd is <private> 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     fs agent init failed 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     open tee client dev failed, fd is <private> 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     misc agent init failed 08-05 17:28:11.768   5164-5164    C02f00/teecd                   pid-5164              E     open tee client dev failed, fd is <private> 08-05 17:28:11.768   5164-5164    C02f00/teecd                   pid-5164              E     fs agent init failed 08-05 17:28:11.769   5164-5164    C02f00/teecd                   pid-5164              E     open tee client dev failed, fd is <private> 08-05 17:28:11.769   5164-5164    C02f00/teecd                   pid-5164              E     misc agent init failed 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     open tee client dev failed, fd is <private> 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     fs agent init failed 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     open tee client dev failed, fd is <private> 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     misc agent init failed 08-05 17:28:14.679   547-866      C01719/ffrt                    foundation            E     20299:FFRTQosApplyForOther:242 qos apply failed for task 5170 08-05 17:28:15.883   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:15.884   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:16.279   5179-5179    C01810/SAFWK                   pid-5179              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.280   5179-5179    C01810/SAFWK                   pid-5179              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.330   5180-5180    C01810/SAFWK                   pid-5180              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.330   5180-5180    C01810/SAFWK                   pid-5180              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.378   5181-5181    C01810/SAFWK                   pid-5181              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.378   5181-5181    C01810/SAFWK                   pid-5181              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.426   5182-5182    C01810/SAFWK                   pid-5182              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.426   5182-5182    C01810/SAFWK                   pid-5182              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:18.399   263-298      C01719/ffrt                    samgr                 E     8683:FFRTQosApplyForOther:242 qos apply failed for task 5183 08-05 17:28:18.411   469-469      C01560/WifiHalWpaCommon        wifi_hal_service      E     WpaCliCmd, ctrl/ctrl->pSend is NULL! 08-05 17:28:18.412   469-469      C01560/WifiHalWpaCommon        wifi_hal_service      E     WpaCliCmd, ctrl/ctrl->pSend is NULL! 08-05 17:28:18.412   469-469      C01560/WifiHalStaInterface     wifi_hal_service      E     StartScan failed! ret=-1 08-05 17:28:18.413   1002-1285    C01562/ScanStateMachine        wifi_manager_se       E     WifiStaHalInterface::GetInstance().scan failed. 08-05 17:28:18.413   1002-1285    C01560/WifiScanManager         wifi_manager_se       E     DealScanFinished, state: 0! 08-05 17:28:18.421   547-5170     C01719/ffrt                    foundation            E     20338:FFRTQosApplyForOther:242 qos apply failed for task 5184 08-05 17:28:18.423   547-5170     C01719/ffrt                    foundation            E     20353:FFRTQosApplyForOther:242 qos apply failed for task 5185 08-05 17:28:18.428   547-5170     C01719/ffrt                    foundation            E     20379:FFRTQosApplyForOther:242 qos apply failed for task 5186 08-05 17:28:18.430   547-5170     C01719/ffrt                    foundation            E     20396:FFRTQosApplyForOther:242 qos apply failed for task 5187 08-05 17:28:18.747   264-944      C01719/ffrt                    hiview                E     3023:FFRTQosApplyForOther:242 qos apply failed for task 5188 08-05 17:28:21.044   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:21.045   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.536   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.537   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.633   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.634   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.641   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.642   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:26.180   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:26.180   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:27.812   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:27.812   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:28.838   264-944      C01719/ffrt                    hiview                E     3041:FFRTQosApplyForOther:242 qos apply failed for task 5223 08-05 17:28:31.342   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:31.343   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:32.974   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:32.975   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:36.502   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:36.503   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:38.165   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:38.166   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106!
  • [问题求助] [问题求助]偶现SVP_NPU推理报错,错误码:200005
    问题描述:我们在测试机器重复开关机中发现,偶然会出现svp_npu推理报错的问题。具体的流程和日志如下图,麻烦路过的朋友帮忙看看报错日志:[Func]:svp_npu_runtime_impl_get_device_and_stream_node_id [Line]:466 [Info]:Error, please set device or create context first [Func]:svp_npu_runtime_impl_execute_model_async [Line]:1519 [Info]:Error, get device and stream id failed when execute model async [Func]:svp_npu_model_execute_async [Line]:794 [Info]:Error, runtime execute model async failed  failed at InferModelAsync: LINE: 82 with 0x30d45!硬件型号: SS928SDK版本:[SVP_NPU] Version: [SS928V100V2.0.2.1 B050 Release], Build Time[Apr 27 2022, 16:54:46]程序开机后的运行流程:每次开机后,机器会先创建线程1,等线程1结束后,再创建线程2。线程1和线程2跑的模型不一样。有时会出现在线程2中,第一次调用推理时就报错
  • [问题求助] LiteOS-Studio新建工程失败
    各位大侠,有遇到这种情况的吗!!!
  • ARMv8知识点
    ARM指令集和微架构体系不同指令集之间的指令不同微架构是指指令集实现的方式,比如结合了性能、物理尺寸已经成本等多方面. ARMv7以后统一使用Cortex命名微架构。指令集命名规则:ARMv | n | variants | x ( variants )l    -ARMv --固定字符,即ARM Version    -n--指令集版本号。迄今为之,ARM架构版本发布了8个系列,所以n=[1:8]。    -variants --变种。    -x ( variants)--排除x后指定的变种微架构命名规则:ARM{xHyHzHTHDHMHIHEHJHFH-S}    x--处理器系列    y -- 存储管理/保护单元    z-- cache    T --支持Thumb指令集    D--支持片上调试    M--支持快速乘法器    I--支持Embedded lCE,支持嵌入式跟踪调试    E--支持增强型DSP指令    J--支持Jazelle    F--具备向量浮点单元VFP    -S --可综合版本ARMv8不同系列及应用场景ARMv8的运行模式-AArch64在本模式下,所有地址保存在64位寄存器中,基本指令集可以使用64位寄存器来处理。AArch64状态下的指令集称为A64。-AArch32在本模式下,所有地址保存在32位寄存器中,基本指令集可以使用32位寄存器来处理。AArch32状态下的指令集可分为A32和T32。ARMv8支持的数据类型1、整型数据类型:字节——8位半字——16位字——32位双字——64位四字——128位2、浮点型数据类型:半精度、全精度、双精度ARMv8特权级别划分ARMv8将特权级别分为4个level,分别是ELO,EL1,EL2,EL3。而每个level的特权不一样的,特权大小ELO<EL1<EL2<EL3。不同的level之间使用异常( exception)进行切换1、一次执行必须包括EL0&1,EL2&3非必须但可以进行两者的任意组合,且不要求等级连续。2、Normal World代表的是普通世界,比如android手机中linux操作系统就在normalworld3、Secure World就是安全世界,比如android手机中的高通的QSEE就是运行在SecureWorld4、EL0:普通用户应用程序5、EL1:操作系统内核通常被描述为特权,在Secure World则就是Trusted os,比如高通的QSEE,开源的OP-TEE,豌豆荚的TEE等6、EL2:管理程序,如hypervisor,ARM为了支持虚拟化,设计的Hypervisor层,只有在Noraml world使用。7、EL3:低级固件,包括安全监视器,在应用处理器上,安全固件必须是系统启动的第一个程序。当noraml world想要访问secure world需要发送SMC指令进入SecureMoniter层,然后进入到Secure world8、. Secure Moniter是安全世界和普通世界的桥梁,二者切换的时候需要通过其来切换。9、普通世界由以下部分组成:          (1)应用:运行在普通世界的应用程序。          (2)GuestOS:这些包括在非安全EL1中运行的Linux或Windows。在虚拟机管理程序下运行时,操作系统内核可以作为客户机或主机运行,                      具体取决于虚拟机管理程序模式。          (3)Hypervisor:这在EL2上运行。当管理程序出现并启用时,可以在多个客户操作系统之间进行切换操作。10、安全世界有以下组件:(1)安全APP:它提供了多种服务,包括平台初始化,可信操作系统的安装以及路由安全监视器的调用。安全固件在EL3上执行。(2)可信的操作系统:可信的操作系统为普通世界提供安全服务,并为执行安全或受信任的应用程序提供运行时环境。它在EL3使用AArch64时在安全EL1上执行,在EL3使用AArch32时在安全EL3上执行。
  • [工具链] MDC300使用OpenGL进行360环视算法开发
    我们现在使用MDC300去开发环视算法,使用OpenGL ES渲染1.MDC610是有使用GPU加速OpenGL ES?2.MDC300没有GPU,是不是就只能使用host芯片自带CPU跑?,我理解mini芯片的NPU是加速AI相关的,应该无法用来搞这方面的那岂不是说使用MDC300开发OpenGL渲染相关的会很吃力,毕竟MDC610也使用GPU加速渲染?请帮忙再回答一下,万分感谢!!!
  • [问题求助] MDC300 中OpenGL可视化
            您好!我目前需要在MDC300中部署我们的360环视算法,直接在MDC里运行OpenGL的一个小demo,无法调用Opengl的窗口在上位机Ubuntu系统显示,也无法直接在MDC端可视化。请问是因为可视化一定需要通过ROS转发,然后通过MDC的Mviz工具进行显示吗?Mviz如何和OpenGL配合实现交互式的可视化?有没有其他的可视化办法?我看MDC里没有OpenGL相关示例,请问有在MDC开发360环视算法或者OpenGL的示例或者其他资料吗?
  • 使用Paho-MQTT集成ID²,实现数据安全上云
    1. 简介:IoT设备身份认证(IoT Device ID,ID²)是物联网设备接入到系统时的设备身份标识和设备认证系统,通过可信计算和密码技术为物联网系统提供设备认证、传输通道加密、业务数据加密等端到端的可信接入能力。MQTT是一种基于发布/订阅模式的轻量级消息传输协议,专门针对低带宽和不稳定网络环境的物联网应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。Eclipse Paho提供许多不同版本的MQTT Client以供不同平台使用,其中Paho Embedded-C是为嵌入式平台提供的MQTT开源实现。本文介绍如何基于Paho-MQTT集成IoT设备认证(ID²),通过身份认证、数据加密等功能,实现物联网数据安全上云。2. 基于阿里云物联网平台使用:本节说明在物联网设备(Linux)中通过Paho-MQTT集成IoT设备身份认证设备端SDK并接入阿里云物联网平台,通过身份认证、通道加密等功能,实现物联网数据安全上云。2.1 创建产品:只有认证方式为ID²的产品才可以使用IoT设备身份认证的服务,接下来我们需要创建一个新的产品并指定认证方式为ID²。前提条件:拥有阿里云物联网平台实例(华东2上海region)。具有IoT设备身份认证的认证授权, 可通过阿里云免费试用,或者购买ID²认证授权。登录产品控制台,在左侧导航栏,选择常规>集成与部署 > IoT设备身份认证,单击组合使用(与阿里云物联网平台)卡片的开始接入按钮。​在配置产品页面创建新产品&分配ID²授权,然后单击下一步按钮。请选择新增产品,并输入产品名称。ID²有效期:免费试用、或者付费授权。分配ID²授权数量:请输入ID²授权数量。2.2 选择设备认证算法:IoT设备身份认证支持国际算法(AES-128、AES-192、AES-256)和国密算法(SM1-128、SM2-256、SM4-128),能满足企业不同安全等级的需求。说明:国密算法SM1需要配合ID²安全芯片使用,SM2用于业务数据完整性校验和加密。ID²新增产品中默认选择的设备认证算法是AES-128;如需选择其他设备认证算法,请按如下步骤操作:在产品控制台,选择常规>集成与部署 > IoT设备身份认证,单击独立使用(三方物联网平台)卡片的开始接入按钮。在配置产品页面获取配置信息,然后单击下一步按钮。选择产品:请选择现有产品,在下拉框中勾选产品名称。在获取配置信息页面,单击设备认证算法后的更换按钮,查看支持的密钥类型(如SM4-128),并确认。在产品详情页面,记录下实例ID、ProductKey、ProductSecret。实例ID:阿里云物联网平台的实例标识。企业实例ID是字符串,公共实例ID是符号“-”。ProductKey:设备所属产品的ProductKey。ProductSecret:由IoT设备身份认证颁发的产品密钥,与 ProductKey 成对出现。2.3  集成设备端SDK:下载设备端SDK:执行wget命令获取设备端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Client_SDK.tar执行命令tar -xvf ID2_Client_SDK.tar完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²设备端的示例代码:lpdemo:提供通过MQTT组件使用ID²连接到阿里云物联网平台的演示示例。paho:基于Paho MQTT开源组件的示例代码。external用于存放外部的组件:mqtt - MQTT的组件paho:存放Eclipse Paho embdded-c的源码。includeID²的头文件目录libsID²的静态库make.rules编译规则文件,可配置编译工具链和编译参数make.settings编译配置文件,可配置ID²的密钥类型(如AES、SM4)makefile编译脚本srcID²的源码目录testsID²的测试用例,包括HAL和ID²的测试。toolsID²的本地工具/脚本:ls_lp_demo.sh:与阿里云物联网平台组合使用场景中的设备端演示示例。集成设备端SDK:1. 设备硬件及系统层集成。适配接口说明请参考ID²设备端SDK适配接口,包括:OSA接口适配:实现src/osa/ls_osa.c中的接口。HAL接口适配:实现src/hal/km/demo/ls_hal_km.c中的接口,通过hal_test测试用例验证(成功日志:“HAL KM Test Pass”)。2. 设备连接通道层集成。使用默认的Paho SDK,请跳过此步骤。下载Paho Embedded-C SDK,并且拷贝其中的源码到external/mqtt/paho/paho_embedded_c目录git clone cid:link_153. 设备应用层集成。设备接入域名(mqtt_host)、MQTT服务器端口的配置:设备接入域名:${YourProductKey}.itls.cn-shanghai.aliyuncs.com,其中${YourProductKey}为IoT设备身份认证产品的ProductKeyMQTT服务器端口:1883生成阿里云物联网平台MQTT Connect的参数:MQTT客户端的标识 - ClientId:# 使用物联网平台的企业实例deviceId+"|securemode=8,signmethod=hmacsha1,timestamp=2524608000000,authtype=id2[,instanceId=xxx]|"deviceId:${deviceName}  + “&” + ${productKey}instanceId:填写物联网平台的企业实例ID,如使用公共实例(短横线‘"-"),此字段忽略掉MQTT客户端的用户名 - UserName:# 由设备标识和产品标识组合而成${deviceName} + “&” + ${productKey}MQTT客户端的密码 - Password:# 64字节长度的全0字符串"0000000000..000"适配Paho的网络抽象接口:更新Network的结构体,且重新实现Network的接口,参考实现如下:#include "hal_itls.h"typedef struct Network { char *product_key; char *product_secret; uintptr_t handle; int my_socket; int (*mqttread) (struct Network*, unsigned char*, int, int); int (*mqttwrite) (struct Network*, unsigned char*, int, int);} Network;int mqtt_itls_read(Network* n, unsigned char* buffer, int len, int timeout_ms) { return hal_itls_read(n->handle, buffer, len, timeout_ms);}int mqtt_itls_write(Network* n, unsigned char* buffer, int len, int timeout_ms){ return hal_itls_write(n->handle, buffer, len, timeout_ms);}void NetworkSetConfig(Network* n, char *product_key, char *product_secret) { n->product_key = product_key; n->product_secret = product_secret;}void NetworkInit(Network* n) { n->handle = 0; n->mqttread = mqtt_itls_read; n->mqttwrite = mqtt_itls_write;}int NetworkConnect(Network* n, char* addr, int port) { n->handle = hal_itls_establish(addr, port, n->product_key, n->product_secret); if (n->handle == 0) { return -1; } return 0;}void NetworkDisconnect(Network* n) { hal_itls_destroy(n->handle);}4. 设备端SDK的编译。在ID² SDK的根目录,执行命令vi ./make.settings打开文件,修改如下参数:配置CONFIG_LS_ID2_KEY_TYPE,选择同ID²产品选择的认证算法保持相同配置CONFIG_LS_ID2_MQTT_NAME,选择使用Paho执行命令 vi demos/lpdemo/paho/mqtt_id2_demo.c打开文件,配置mqtt_id2_demo.c示例中的参数:如选择使用Link SDK时,执行命令 vi demos/mqtt/lk/mqtt_id2_demo.c打开文件:ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。DeviceName:自定义,同一个产品下唯一。LP_Instance_ID:填写在ID²产品详情中获得的企业实例ID字符串;如果是公共实例,填写NULL执行命令“make clean & make plat=xxx”进行编译Linux x86_64默认使用系统中的GCC作为编译工具,且默认指定“plat=x86_64”参数如要编译其他架构,如armhf,在make.rules中配置编译工具,运行编译命令“make clean & make plat=armhf”2.4 安全接入:在完成设备端集成的基础上,运行设备应用,  或者演示示例接入阿里云物联网平台。1. 使用演示示例:在Linux x86_64设备上下载ID² SDK,执行命令vi ./make.settings打开文件。配置CONFIG_LS_ID2_KEY_TYPE,选择同ID²产品选择的认证算法保持相同修改CONFIG_LS_ID2_MQTT_NAME的值为Paho执行命令make clean & make进行编译。编辑vi tools/ls_lp_demo.sh填写如下参数:ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。DeviceName:自定义,同一个产品下唯一。InstanceId:填写在ID²产品详情中获得的企业实例ID字符串,如公共实例ID:“-”。执行命令./tools/ls_lp_demo.sh运行设备端演示示例,查看设备端打印的日志。在日志中,可以看到此设备上的ID² ID(“ 000FF...”)基于ID²进行设备和LP平台之间的双向认证(“Verify iTLS Server AuthCode OK”),并建立设备和LP平台的TLS安全传输通道(ID²-iTLS);MQTT消息开始基于TLS通道进行加密传输(“Start to use itls to encrypt message buffer”)2. 查看设备状态:登录产品控制台,在左侧导航栏,选择资产>设备,查看设备状态为正常,安全状态为安全。3.  基于自建的物联网平台使用:本节说明在物联网应用中集成ID²云端SDK、在物联网设备(Linux)中通过Paho-MQTT集成ID²设备端SDK,通过身份认证、业务数据加密等功能,实现物联网数据安全上云。3.1 创建产品:本章节描述了如何在IoT设备身份认证控制台创建产品并分配授权额度,包括:创建产品分配授权额度前提条件:具有IoT设备身份认证的认证授权, 可通过阿里云免费试用,或者购买ID²认证授权。1. 登录产品控制台,在左侧导航栏,选择常规>集成与部署 > IoT设备身份认证,单击独立使用(三方物联网平台)卡片的开始接入按钮。2. 在配置产品页面创建新产品&分配ID²授权,然后单击下一步按钮。选择产品:请选择创建新产品,并输入产品名称。ID²有效期:免费试用、或者付费授权。分配ID²授权数量:请输入ID²授权数量。3.2 选择设备认证算法:IoT设备身份认证支持国际算法(AES-128、AES-192、AES-256)和国密算法(SM1-128、SM2-256、SM4-128),能满足企业不同安全等级的需求。说明:国密算法SM1需要配合ID²安全芯片使用,SM2用于业务数据完整性校验和加密。ID²新增产品中默认选择的设备认证算法是AES-128;如需选择其他设备认证算法,请按如下步骤操作:1. 在查看配置信息页面,选择设备认证算法为SM4-128,单击提交按钮。2. 在查看配置信息页面,您需要记录下ProductKey、ProductSecret。ProductKey:设备所属产品的ProductKey。ProductSecret:由IoT设备身份认证颁发的产品密钥,与 ProductKey 成对出现。3. 单击下一步按钮进入集成云端SDK页面。3.3 集成云端SDK: 阿里云账号的AccessKey:AccessKey是调用阿里云API的身份凭证,请参见获取AccessKey。需要注意的是AccessKey的归属账号必须与创建产品时的账号保持一致。下载云端SDK:1. 执行wget命令获取云端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Server_SDK.tar2. 在云端环境执行命令tar -xvf ID2_Server_SDK.tar 完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²云端的示例代码libID²云端的Jar包集成云端SDK:1. 添加Maven项目依赖,引入阿里云Java SDK公共包。<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.6</version></dependency>2. 导入云端SDK中的lib/aliyun-java-sdk-id2-1.1.4.jar到项目工程中,初始化云端SDK。public static String ACCESS_KEY = null;public static String ACCESS_SECRET = null;public static String REGION_ID = "cn-shanghai";public static String END_POINT = "id2." + REGION_ID + ".aliyuncs.com";// Load ACCESS_KEY and ACCESS_SECRET From Config FileloadConfigProperties("xxx.conf");IClientProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY, ACCESS_SECRET);DefaultProfile.addEndpoint(REGION_ID, PRODUCT_CODE, END_POINT);client = new DefaultAcsClient(profile);3. 发起调用,ID²云端SDK为每个API封装了一个类,命名为${API名称}+"Request",如VerifyRequest,用于API的调用请求,ID²云端API列表请参考ID²云端API手册。ID²空发OtpGetId2Request request = new OtpGetId2Request();request.setDeviceAuthCode(authCode);request.setApiVersion(1.1.2);OtpGetId2Response response = client.getAcsResponse(request);获取ID²认证挑战字GetServerRandomRequest request = new GetServerRandomRequest();request.setId2(id2Id);request.setApiVersion(1.1.2);GetServerRandomResponse response = client.getAcsResponse(request);System.out.println("GetServerRadom requestId:" + response.getRequestId());ID²设备认证和业务密钥加密VerifyAndEncryptRequest request = new VerifyAndEncryptRequest();request.setApiVersion(1.1.2);request.setProductKey(productKey);request.setId2(id2Id);request.setAuthCode(authCode);request.setData(keyInfo);VerifyAndEncryptResponse response = client.getAcsResponse(request);System.out.println("VerifyAndEncrypt requestId:" + response.getRequestId());4. 应用集成ID²云端SDK的示例代码,请参考demos/ID2SPDemo3.4 集成设备端SDK:下载设备端SDK:1. 执行wget命令获取设备端SDK:wget https://id2-schip-daily.oss-cn-shanghai.aliyuncs.com/static_resources/ID2_Client_SDK.tar2. 执行命令tar -xvf ID2_Client_SDK.tar完成解压,执行命令cd <解压SDK后的目录>。设备端SDK的目录说明见表格内容:目录/文件说明demosID²设备端的示例代码:spdemo:提供独立使用ID²的演示示例external用于存放外部的组件:mqtt - MQTT的组件paho:存放Eclipse Paho embdded-c的源码。includeID²的头文件目录libsID²的静态库make.rules编译规则文件,可配置编译工具链和编译参数make.settings编译配置文件,可配置ID²的密钥类型(如AES、SM4)makefile编译脚本srcID²的源码目录testsID²的测试用例,包括HAL和ID²的测试。toolsID²的本地工具/脚本:ls_sp_demo.sh:独立使用场景中的设备端演示示例集成设备端SDK:1. 设备硬件及系统层集成,详情请参考ID²设备端SDK适配接口OSA接口适配:实现src/osa/ls_osa.c中的接口。HAL接口适配:实现src/hal/km/demo/ls_hal_km.c中的接口,通过hal_test测试用例验证(成功日志: “HAL KM Test Pass”)。2. 设备应用层集成,详情请参考ID²设备端API手册设备应用首先调用ID²的初始化函数,完成设备端SDK的初始化。{ int ret; ret = id2_client_init(); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client init fail, %d\n", ret); return -1; }}获取ID²设备端的烧录状态:如ID²已烧录(is_prov == true),退出ID²空发流程{ int ret = 0; bool is_prov = false; ret = id2_client_get_prov_stat(&is_prov); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get prov stat fail, %d\n", ret); return -1; } }生成ID²设备端的空发认证码。{ int ret = 0; uint8_t auth_code[ID2_MAX_AUTH_CODE_LEN] = {0}; uint32_t auth_code_len = ID2_MAX_AUTH_CODE_LEN; ret = id2_client_get_otp_auth_code( (uint8_t *)product_secret, (int)strlen(product_secret), auth_code, &auth_code_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2_client_get_otp_auth_code fail, %d\n", ret); return -1; }}ID²空发的网络请求和响应。authCode:ID²空发认证码的Base64编码otpData:ID²云端下发的空发数据(Base64格式)# ID²空发请求:{commandId:xxx, authCode: xxx}# ID2空发响应:{commandId:xxx, otpData: xxx}存储ID²密钥到设备安全存储区。{ int ret = 0; ret = id2_client_load_otp_data(otp_data, otp_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 load otp data fail, %d\n", ret); return -1; }}获取设备端的ID² ID。{ int ret = 0; uint8_t id2_id[ID2_ID_MAX_LEN + 1] = {0}; uint32_t id2_id_len = ID2_ID_MAX_LEN; ret = id2_client_get_id(id2_id, &id2_id_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get id fail, %d\n", ret); return -1; }}ID²认证挑战字的网络请求和响应。# ID²认证挑战字的请求:{commandId:xxx, Id2Id: xxx}# ID2认证挑战字的响应:{commandId:xxx, challenge: xxx}获取设备端的ID²认证码。{ int ret = 0; uint8_t auth_code[ID2_MAX_AUTH_CODE_LEN] = {0}; uint32_t auth_code_len = ID2_MAX_AUTH_CODE_LEN; ret = id2_client_get_challenge_auth_code( challenge, NULL, 0, auth_code, &auth_code_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client get challenge auth code fail, %d\n", ret); return -1; }}设备端认证和数据加密的网络请求和响应。cipherData:ID²云端下发的加密数据# ID²设备认证和数据加密的请求:{commandId:xxx, productKey:xxx, Id2Id:xxx, authCode:xxx}# ID2设备认证和数据加密的响应:{commandId:xxx, cipherData: xxx}解密ID²云端加密下发的数据。{ int ret = 0; ret = id2_client_decrypt(cipher_data, cipher_len, cipher_data, &cipher_len); if (ret != IROT_SUCCESS) { ls_osa_print("id2 client decrypt fail\n"); return -1; }}应用集成ID²设备SDK的示例代码,请参考demos/spdemo3. 设备端SDK的编译:在ID² SDK的根目录,执行命令vi ./make.settings打开文件, 修改CONFIG_LS_ID2_KEY_TYPE的值同ID²产品选择的认证算法保持相同执行命令“make clean & make plat=xxx”进行编译Linux x86_64默认使用系统中的GCC作为编译工具,且默认指定“plat=x86_64”参数如要编译其他架构,如armhf,在make.rules中配置编译工具,运行编译命令“make clean & make plat=armhf”3.5 业务数据加密:在完成设备端集成的基础上,运行设备应用,  或者使用演示示例,进行ID²认证和加密,以及业务数据加密的调试。1. 使用演示示例:部署EMQX物联网平台,详情参见EMQX安装和部署本节描述在Ubuntu 22.04上通过Docker部署EMQX物联网平台的示例安装和启动Docker工具:# Install Dockercurl -fsSL get.docker.com -o get-docker.shsudo sh get-docker.sh --mirror Aliyun# Start Dockersudo systemctl enable dockersudo systemctl start docker# Get Docker Versiondocker -v使用Docker安装EMQX物联网平台:# Get emqx-5.1.3 docker imagedocker pull emqx/emqx:5.1.3# Start docker emqx instancedocker run -d --name emqx -p 1883:1883 emqx/emqx:5.1.3# Get docker instance infodocker ps部署云端演示示例,在ID²云端SDK根目录,配置vi demos/ID2SPMessage/Id2SpDemo.conf文件中的AccessKey和AccessSecret信息。执行命令cd demos/ID2SPMessage,执行命令java -jar Id2SpDemo.jar启动云端演示示例。在ID²设备端SDK目录,执行命令vi tools/ls_sp_demo.sh填写如下参数:HostAddr:云端演示示例的IP地址,localhost代表本机网络。ProductKey:ID²产品的ProductKey。ProductSecret:ID²产品的ProductSecret。PublishData:设备端应用上报的业务数据,建议不超过1024字节。执行命令./tools/ls_sp_demo.sh运行设备端演示示例,查看设备端打印的日志。在设备端日志中,可以看到完成ID²的设备认证,以及通过ID²加密下发SP Key Info;设备端通过ID²设备端接口解密后,获得明文的Key ID和Data在设备端日志中,可看到由SPKey加密下发的业务数据(“SP Server Subscribed Cipher Data”);通过在调用SPKey解密后,可得到明文的下行业务数据(“SP_Server_Hello”)在云端查看打印的日志。可看到由SPKey加密的业务数据("Device Published Cipher Data")使用SPKey解密后,可得到正确的上行业务数据(“SP_Client_Hello”)2. 查看设备状态:登录产品控制台,在左侧导航栏,选择资产>设备,查看设备状态为正常,安全状态为安全。3. 延申阅读:IoT设备身份认证产品试用,请查看IoT设备身份认证免费试用常见问题以及处理方案,请查看常见问题。使用虚拟机模拟物联网设备,请查看最佳实践。在实际业务环境中使用ID²的最佳实践,请查看最佳实践。在Android、RTOS设备中使用IoT设备身份认证,请查看最佳实践。IoT设备身份认证的计量计费规则说明,请查看计费说明。
  • [问题求助] 交叉编译后在arm中运行,acl资源初始化错误。返回错误:507008; // soc version error
     aclError ret = aclInit(aclConfigPath);    if (ret != ACL_SUCCESS) {        ERROR_LOG("acl init failed, errorCode = %d", static_cast<int32_t>(ret));        return FAILED;    }以上是初始化代码:开发环境是x86,CANN版本是 6.3.RC1.alpha001运行环境是arm,docker中自带CANN套件,版本是6.3.RC1,具体是alpha001还是alpha002,不太清楚;问题定位到libascendcl.so库,和头文件不匹配;求助一下大佬,是不是开发环境和运行环境CANN套件中库不匹配,导致无法初始化
  • 华为atlas openeuler操作系统制卡失败
    制卡失败,失败原因为qemu is broken or the version of qemu is not compatible我已经按照华为官方文档的要求安装了相应的依赖软件,为什么还会出现qemu broken的错误
  • [问题求助] 【Euler21.10+ARM】欧拉系统的鲲鹏服务器怎么安装kvm去拉虚机?
    【Euler21.10+ARM】欧拉系统的鲲鹏服务器怎么安装kvm去拉虚机?
  • [问题求助] QT QSunod交叉编译到ARM板不发声
    ubuntu18  QT QSunod交叉编译到ARM板不发声报错如下
  • [问题求助] 华为云 鲲鹏服务器(CPU 鲲鹏920) 安装KAEZIP zlib加速库 失败(虚拟文件系统下 没有 对应的加速器设备)
    通过 https://www.hikunpeng.com/document/detail/zh/kunpengaccel/compress/devg-kaezip/kunpengaccel_kaezip_0007.html 进行操作,虚拟文件系统下 没有 对应的加速器设备,kaezip_perf 测试的压缩速度 也没到预期。
  • [其他] DSP+ZYNQ评估板例程使用手册XQTyer【分享】
    【开源资料】XQTyer评估板例程使用手册链接:https://share.weiyun.com/8csewUvh 密码:8r9by7         XQ6657Z35/45-EVM(XQTyer 评估板)是一款基于 TI KeyStone 架构 C6000 系列 TMS320C6657双核C66x 定点/浮点 DSP以及 Xilinx Zynq-7000 系列 XC7Z035/045 SoC 处理器设计的高端异构多核评估板,由核心板与评估底板组成。
  • [Ubuntu] 求教:安装clash遇到的问题,该如何处理?
    设备型号:华为擎云L410KLVU-WDU0B操作系统:银河麒麟桌面操作系统V10(SP1)故障描述:下载clash,地址如下:https://github.com/Fndroid/clash_for_windows_pkg/releases/download/0.20.12/Clash.for.Windows-0.20.12-arm64-linux.tar.gz解压缩后,运行cfw程序,提示:[75140:1230/230532.671202:ERROR:gpu_memory_buffer_support_x11.cc(44)] dri3 extension not supported.
  • [问题求助] 华为云鲲鹏openEuler 20.03安装kubesphere,出现exec /shell-operator: exec format error
    华为云鲲鹏openEuler 20.03安装kubesphere,之前已安装好kubernetes,现在在 Kubernetes 上最小化安装 KubeSphere,出现exec /shell-operator: exec format error,看样子,好像是下载了x86的文件?怎么解决[root@master01 ~]# kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yamlcustomresourcedefinition.apiextensions.k8s.io/clusterconfigurations.installer.kubesphere.io creatednamespace/kubesphere-system createdserviceaccount/ks-installer createdclusterrole.rbac.authorization.k8s.io/ks-installer createdclusterrolebinding.rbac.authorization.k8s.io/ks-installer createddeployment.apps/ks-installer created[root@master01 ~]# kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -fError from server (BadRequest): container "installer" in pod "ks-installer-85dcfff87d-c9jbv" is waiting to start: ContainerCreating[root@master01 ~]# kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -fexec /shell-operator: exec format error