diff --git a/en/device-dev/apinotes/.keep b/en/device-dev/apinotes/.keep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/zh-cn/device-dev/apinotes/.keep b/zh-cn/device-dev/apinotes/.keep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/zh-cn/device-dev/apis/driver/adc_if.h b/zh-cn/device-dev/apis/driver/adc_if.h deleted file mode 100755 index a14cdc5d87fe9a719fde50f7d90b49616c9b8f07..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/apis/driver/adc_if.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * - * HDF is dual licensed: you can use it either under the terms of - * the GPL, or the BSD license, at your option. - * See the LICENSE file in the root of this repository for complete details. - */ - -/** - * @addtogroup ADC - * @{ - * - * @brief 定义用于模/数转换器驱动程序开发的标准ADC API。 - * 此ADC模块抽象了不同系统平台的ADC功能,以提供稳定的API,用于模/数转换器驱动程序开发。您可以使用此模块获取/释放ADC设备句柄。 - * - * @since 1.0 - */ - -/** - * @file adc_if.h - * - * @brief 声明标准ADC接口函数。 - * - * @since 1.0 - */ - -#ifndef ADC_IF_H -#define ADC_IF_H - -#include "hdf_platform.h" - -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif -#endif /* __cplusplus */ - -struct AdcIoMsg { - /** ADC设备号 */ - uint32_t number; - /** ADC设备通道号 */ - uint32_t channel; -}; - -/** - * @brief 获取ADC设备的句柄。 - * 在访问ADC设备之前,必须调用此函数。 - * - * @param number ADC设备ID。 - * - * @return 如果操作成功,则返回指向ADC设备的DevHandle的指针;否则返回NULL。 - * - * @since 1.0 - */ -DevHandle AdcOpen(uint32_t number); - - /** - * @brief 释放ADC设备的句柄。 - * 如果不再需要访问ADC设备,则应调用此函数关闭其句柄,以便释放未使用的内存资源。 - * - * @param handle 指向通过{@link AdcOpen}获得的ADC设备的设备句柄的指针。 - * - * @since 1.0 - */ -void AdcClose(DevHandle handle); - -/** - * @brief 从ADC设备读取指定大小的数据。 - * - * @param handle 指向通过{@link AdcOpen}获得的ADC设备的设备句柄的指针。 - * @param channel ADC设备通道。 - * @param val 指向存储读出数据指针。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * @since 1.0 - */ -int32_t AdcRead(DevHandle handle, uint32_t channel, uint32_t *val); - -#ifdef __cplusplus -#if __cplusplus -} -#endif -#endif /* __cplusplus */ - -#endif /* ADC_IF_H */ diff --git a/zh-cn/device-dev/apis/driver/hdmi_if.h b/zh-cn/device-dev/apis/driver/hdmi_if.h deleted file mode 100755 index 3e3b4bd1a713f6dc5bd608a3851a50b876f347a2..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/apis/driver/hdmi_if.h +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * - * HDF is dual licensed: you can use it either under the terms of - * the GPL, or the BSD license, at your option. - * See the LICENSE file in the root of this repository for complete details. - */ - -/** - * @addtogroup HDMI - * @{ - * - * @brief 声明基本高清多媒体接口(HDMI)功能的标准API。 - * 您可以使用此模块访问HDMI,并使驱动程序能够操作HDMI接收器设备。 - * 这些功能包括在HDMI上启动和停止传输,设置一些属性,并读取接收器设备的EDID数据。 - * - * @since 1.0 - */ - -/** - * @file hdmi_if.h - * - * @brief 声明标准HDMI接口函数。 - * - * @since 1.0 - */ - -#ifndef HDMI_IF_H -#define HDMI_IF_H - -#include "hdf_platform.h" - -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif -#endif /* __cplusplus */ - -/** - * @brief HDMI接收器设备的EDID的最大长度为512字节。 - * - * @since 1.0 - */ -#define HDMI_EDID_MAX_LEN 512 - -/** - * @brief 色深 - * 详见HDMI协议1.4第6.2.4节。 - * - * @since 1.0 - */ -enum HdmiDeepColor { - HDMI_DEEP_COLOR_24BITS = 0, - HDMI_DEEP_COLOR_30BITS = 1, - HDMI_DEEP_COLOR_36BITS = 2, - HDMI_DEEP_COLOR_48BITS = 3, - HDMI_DEEP_COLOR_OFF = 0xff, - HDMI_DEEP_COLOR_BUTT, -}; - -/** - * @brief 视频位深度。 - * 详见HDMI协议1.4第6.6节。 - * - * @since 1.0 - */ -enum HdmiVideoBitDepth { - HDMI_VIDEO_BIT_DEPTH_8 = 0, - HDMI_VIDEO_BIT_DEPTH_10 = 1, - HDMI_VIDEO_BIT_DEPTH_12 = 2, - HDMI_VIDEO_BIT_DEPTH_16 = 3, - HDMI_VIDEO_BIT_DEPTH_OFF, -}; - -/** - * @brief 色彩空间。 - * 详见HDMI协议1.4第6节。 - * - * @since 1.0 - */ -enum HdmiColorSpace { - HDMI_COLOR_SPACE_RGB = 0, - HDMI_COLOR_SPACE_YCBCR422 = 1, - HDMI_COLOR_SPACE_YCBCR444 = 2, - HDMI_COLOR_SPACE_YCBCR420 = 3, - HDMI_COLOR_SPACE_BUTT, -}; - -/** - * @brief 比色法。 - * 详见HDMI协议1.4第6.7节和HDMI协议2.0第7.2节。 - * - * @since 1.0 - */ -enum HdmiColorimetry { - HDMI_COLORIMETRY_NO_DATA = 0, - HDMI_COLORIMETRY_ITU601 = 1, - HDMI_COLORIMETRY_ITU709 = 2, - HDMI_COLORIMETRY_EXTENDED = 3, -}; - -/** - * @brief 扩展比色法。 - * 详见HDMI协议1.4第6.7节和HDMI协议2.0第7.2节。 - * - * @since 1.0 - */ -enum HdmiExtendedColorimetry { - HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0, - HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1, - HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2, - HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3, - HDMI_EXTENDED_COLORIMETRY_OPRGB = 4, - HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5, - HDMI_EXTENDED_COLORIMETRY_BT2020 = 6, - HDMI_EXTENDED_COLORIMETRY_ADDITIONAL = 7, - HDMI_EXTENDED_COLORIMETRY_BUTT, -}; - -/** - * @brief 量化范围。 - * 详见HDMI协议1.4第6.6节和HDMI协议2.0第7.3节。 - * - * @since 1.0 - */ -enum HdmiQuantizationRange { - HDMI_QUANTIZATION_RANGE_DEFAULT = 0, - HDMI_QUANTIZATION_RANGE_LIMITED = 1, - HDMI_QUANTIZATION_RANGE_FULL = 2, - HDMI_QUANTIZATION_RANGE_BUTT, -}; - -/** - * @brief YCC量化范围。 - * 详见HDMI协议1.4第6.6节和HDMI协议2.0第7.3节。 - * - * @since 1.0 - */ -enum HdmiYccQuantizationRange { - HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0, - HDMI_YCC_QUANTIZATION_RANGE_FULL = 1, - HDMI_YCC_QUANTIZATION_RANGE_BUTT, -}; - -/** - * @brief 视频三维结构。 - * 详见HDMI协议1.4第8.2.3节。 - * - * @since 1.0 - */ -enum HdmiVideo3dStructure { - HDMI_VS_VIDEO_3D_FRAME_PACKING = 0, - HDMI_VS_VIDEO_3D_FIELD_ALTERNATIVE = 1, - HDMI_VS_VIDEO_3D_LINE_ALTERNATIVE = 2, - HDMI_VS_VIDEO_3D_SIDE_BY_SIDE_FULL = 3, - HDMI_VS_VIDEO_3D_L_DEPTH = 4, - HDMI_VS_VIDEO_3D_L_DEPTH_GFX_GFX_DEPTH = 5, - HDMI_VS_VIDEO_3D_TOP_AND_BOTTOM = 6, - HDMI_VS_VIDEO_3D_SIDE_BY_SIDE_HALF = 8, - HDMI_VS_VIDEO_3D_BUTT, -}; - -/** - * @brief 影像时序。 - * 详见HDMI协议1.4第8.2.3节。 - * - * @since 1.0 - */ -enum HdmiVideoTiming { - HDMI_VIDEO_TIMING_NONE = 0, - HDMI_VIDEO_TIMING_640X480P60 = 1, - HDMI_VIDEO_TIMING_720X480P60 = 2, - HDMI_VIDEO_TIMING_720X480P120 = 3, - HDMI_VIDEO_TIMING_720X480P240 = 4, - HDMI_VIDEO_TIMING_720X576P50 = 5, - HDMI_VIDEO_TIMING_720X576P100 = 6, - HDMI_VIDEO_TIMING_720X576P200 = 7, - HDMI_VIDEO_TIMING_1280X720P24 = 8, - HDMI_VIDEO_TIMING_1280X720P25 = 9, - HDMI_VIDEO_TIMING_1280X720P30 = 10, - HDMI_VIDEO_TIMING_1280X720P48 = 11, - HDMI_VIDEO_TIMING_1280X720P50 = 12, - HDMI_VIDEO_TIMING_1280X720P60 = 13, - HDMI_VIDEO_TIMING_1280X720P100 = 14, - HDMI_VIDEO_TIMING_1280X720P120 = 15, - HDMI_VIDEO_TIMING_1440X240P60 = 16, - HDMI_VIDEO_TIMING_1440X288P50 = 17, - HDMI_VIDEO_TIMING_1440X480I60 = 18, - HDMI_VIDEO_TIMING_1440X480P60 = 19, - HDMI_VIDEO_TIMING_1440X480I120 = 20, - HDMI_VIDEO_TIMING_1440X480I240 = 21, - HDMI_VIDEO_TIMING_1440X576I50 = 22, - HDMI_VIDEO_TIMING_1440X576P50 = 23, - HDMI_VIDEO_TIMING_1440X576I60 = 24, - HDMI_VIDEO_TIMING_1440X576I100 = 25, - HDMI_VIDEO_TIMING_1440X576I200 = 26, - HDMI_VIDEO_TIMING_2880X288P50 = 27, - HDMI_VIDEO_TIMING_2880X480I60 = 28, - HDMI_VIDEO_TIMING_2880X480P60 = 29, - HDMI_VIDEO_TIMING_2880X240I60 = 30, - HDMI_VIDEO_TIMING_2880X576I50 = 31, - HDMI_VIDEO_TIMING_2880X576P50 = 32, - HDMI_VIDEO_TIMING_1680X720P24 = 33, - HDMI_VIDEO_TIMING_1680X720P25 = 34, - HDMI_VIDEO_TIMING_1680X720P30 = 35, - HDMI_VIDEO_TIMING_1680X720P48 = 36, - HDMI_VIDEO_TIMING_1680X720P50 = 37, - HDMI_VIDEO_TIMING_1680X720P60 = 38, - HDMI_VIDEO_TIMING_1680X720P100 = 39, - HDMI_VIDEO_TIMING_1680X720P120 = 40, - HDMI_VIDEO_TIMING_2560X1080P24 = 41, - HDMI_VIDEO_TIMING_2560X1080P25 = 42, - HDMI_VIDEO_TIMING_2560X1080P30 = 43, - HDMI_VIDEO_TIMING_2560X1080P48 = 44, - HDMI_VIDEO_TIMING_2560X1080P50 = 45, - HDMI_VIDEO_TIMING_2560X1080P60 = 46, - HDMI_VIDEO_TIMING_2560X1080P100 = 47, - HDMI_VIDEO_TIMING_2560X1080P120 = 48, - HDMI_VIDEO_TIMING_1920X1080I60 = 49, - HDMI_VIDEO_TIMING_1920X1080P60 = 50, - HDMI_VIDEO_TIMING_1920X1080I50 = 51, - HDMI_VIDEO_TIMING_1920X1080P50 = 52, - HDMI_VIDEO_TIMING_1920X1080P24 = 53, - HDMI_VIDEO_TIMING_1920X1080P25 = 54, - HDMI_VIDEO_TIMING_1920X1080P30 = 55, - HDMI_VIDEO_TIMING_1920X1080P48 = 56, - HDMI_VIDEO_TIMING_1920X1080I100 = 57, - HDMI_VIDEO_TIMING_1920X1080I120 = 58, - HDMI_VIDEO_TIMING_1920X1080P120 = 59, - HDMI_VIDEO_TIMING_1920X1080P100 = 60, - HDMI_VIDEO_TIMING_3840X2160P24 = 61, - HDMI_VIDEO_TIMING_3840X2160P25 = 62, - HDMI_VIDEO_TIMING_3840X2160P30 = 63, - HDMI_VIDEO_TIMING_3840X2160P48 = 64, - HDMI_VIDEO_TIMING_3840X2160P50 = 65, - HDMI_VIDEO_TIMING_3840X2160P60 = 66, - HDMI_VIDEO_TIMING_3840X2160P100 = 67, - HDMI_VIDEO_TIMING_3840X2160P120 = 68, - HDMI_VIDEO_TIMING_4096X2160P24 = 69, - HDMI_VIDEO_TIMING_4096X2160P25 = 70, - HDMI_VIDEO_TIMING_4096X2160P30 = 71, - HDMI_VIDEO_TIMING_4096X2160P48 = 72, - HDMI_VIDEO_TIMING_4096X2160P50 = 73, - HDMI_VIDEO_TIMING_4096X2160P60 = 74, - HDMI_VIDEO_TIMING_4096X2160P100 = 75, - HDMI_VIDEO_TIMING_4096X2160P120 = 76, - HDMI_VIDEO_TIMING_5120X2160P24 = 77, - HDMI_VIDEO_TIMING_5120X2160P25 = 78, - HDMI_VIDEO_TIMING_5120X2160P30 = 79, - HDMI_VIDEO_TIMING_5120X2160P48 = 80, - HDMI_VIDEO_TIMING_5120X2160P50 = 81, - HDMI_VIDEO_TIMING_5120X2160P60 = 82, - HDMI_VIDEO_TIMING_5120X2160P100 = 83, - HDMI_VIDEO_TIMING_5120X2160P120 = 84, - HDMI_VIDEO_TIMING_7680X4320P24 = 85, - HDMI_VIDEO_TIMING_7680X4320P25 = 86, - HDMI_VIDEO_TIMING_7680X4320P30 = 87, - HDMI_VIDEO_TIMING_7680X4320P48 = 88, - HDMI_VIDEO_TIMING_7680X4320P50 = 89, - HDMI_VIDEO_TIMING_7680X4320P60 = 90, - HDMI_VIDEO_TIMING_7680X4320P100 = 91, - HDMI_VIDEO_TIMING_7680X4320P120 = 92, - HDMI_VIDEO_TIMING_10240X4320P24 = 93, - HDMI_VIDEO_TIMING_10240X4320P25 = 94, - HDMI_VIDEO_TIMING_10240X4320P30 = 95, - HDMI_VIDEO_TIMING_10240X4320P48 = 96, - HDMI_VIDEO_TIMING_10240X4320P50 = 97, - HDMI_VIDEO_TIMING_10240X4320P60 = 98, - HDMI_VIDEO_TIMING_10240X4320P100 = 99, - HDMI_VIDEO_TIMING_10240X4320P120 = 100, - HDMI_VIDEO_TIMING_VESA_DEFINE = 101, - HDMI_VIDEO_TIMING_VESA_800X600_60 = 102, - HDMI_VIDEO_TIMING_VESA_848X480_60 = 103, - HDMI_VIDEO_TIMING_VESA_1024X768_60 = 104, - HDMI_VIDEO_TIMING_VESA_1280X720_60 = 105, - HDMI_VIDEO_TIMING_VESA_1280X768_60 = 106, - HDMI_VIDEO_TIMING_VESA_1280X768_60_RB = 107, - HDMI_VIDEO_TIMING_VESA_1280X800_60 = 108, - HDMI_VIDEO_TIMING_VESA_1280X800_60_RB = 109, - HDMI_VIDEO_TIMING_VESA_1280X960_60 = 110, - HDMI_VIDEO_TIMING_VESA_1280X1024_60 = 111, - HDMI_VIDEO_TIMING_VESA_1360X768_60 = 112, - HDMI_VIDEO_TIMING_VESA_1366X768_60 = 113, - HDMI_VIDEO_TIMING_VESA_1400X1050_60 = 114, - HDMI_VIDEO_TIMING_VESA_1440X900_60 = 115, - HDMI_VIDEO_TIMING_VESA_1440X900_60_RB = 116, - HDMI_VIDEO_TIMING_VESA_1440X1050_60 = 117, - HDMI_VIDEO_TIMING_VESA_1440X1050_60_RB = 118, - HDMI_VIDEO_TIMING_VESA_1600X900_60_RB = 119, - HDMI_VIDEO_TIMING_VESA_1600X1200_60 = 120, - HDMI_VIDEO_TIMING_VESA_1680X1050_60 = 113, - HDMI_VIDEO_TIMING_VESA_1680X1050_60_RB = 114, - HDMI_VIDEO_TIMING_VESA_1792X1344_60 = 115, - HDMI_VIDEO_TIMING_VESA_1856X1392_60 = 116, - HDMI_VIDEO_TIMING_VESA_1920X1080_60 = 117, - HDMI_VIDEO_TIMING_VESA_1920X1200_60 = 118, - HDMI_VIDEO_TIMING_VESA_1920X1200_60_RB = 119, - HDMI_VIDEO_TIMING_VESA_1920X1440_60 = 120, - HDMI_VIDEO_TIMING_VESA_2048X1152_60 = 121, - HDMI_VIDEO_TIMING_VESA_2560X1440_60_RB = 122, - HDMI_VIDEO_TIMING_VESA_2560X1600_60 = 123, - HDMI_VIDEO_TIMING_VESA_2560X1600_60_RB = 124, - HDMI_VIDEO_TIMING_USER_DEFINE = 125, - HDMI_VIDEO_TIMING_USER_1920X2160_30 = 126, - HDMI_VIDEO_TIMING_USER_2560X1440_30 = 127, - HDMI_VIDEO_TIMING_USER_2560X1440_60 = 128, - HDMI_VIDEO_TIMING_USER_1280X720_60 = 129, - HDMI_VIDEO_TIMING_USER_1366X768_60 = 130, - HDMI_VIDEO_TIMING_USER_1600X900_60_RB = 131, - HDMI_VIDEO_TIMING_USER_1920X1080_60 = 132, - HDMI_VIDEO_TIMING_USER_2048X1152_60 = 133, - HDMI_VIDEO_TIMING_BUTT, -}; - -/** - * @brief 图片的纵横比。 - * 详见HDMI协议1.4第8.2.1节。 - * - * @since 1.0 - */ -enum HdmiPictureAspectRatio { - HDMI_PICTURE_ASPECT_NO_DATA = 0, - HDMI_PICTURE_ASPECT_4_3 = 1, - HDMI_PICTURE_ASPECT_16_9 = 2, - HDMI_PICTURE_ASPECT_64_27 = 3, - HDMI_PICTURE_ASPECT_256_135 = 4, - HDMI_PICTURE_ASPECT_BUTT = 5, -}; - -/** - * @brief 活动格式的长宽比。 - * 详见HDMI协议1.4第8.2.1节。 - * - * @since 1.0 - */ -enum HdmiActiveFormatAspectRatio { - HDMI_ACTIVE_FORMAT_ASPECT_16_9_TOP = 2, - HDMI_ACTIVE_FORMAT_ASPECT_14_9_TOP = 3, - HDMI_ACTIVE_FORMAT_ASPECT_16_9_CENTER = 4, - HDMI_ACTIVE_FORMAT_ASPECT_PICTURE = 8, - HDMI_ACTIVE_FORMAT_ASPECT_4_3 = 9, - HDMI_ACTIVE_FORMAT_ASPECT_16_9 = 10, - HDMI_ACTIVE_FORMAT_ASPECT_14_9 = 11, - HDMI_ACTIVE_FORMAT_ASPECT_4_3_SP_14_9 = 13, - HDMI_ACTIVE_FORMAT_ASPECT_16_9_SP_14_9 = 14, - HDMI_ACTIVE_FORMAT_ASPECT_16_9_SP_4_3 = 15, - HDMI_ACTIVE_FORMAT_ASPECT_BUTT, -}; - -/** - * @brief NUP(非均匀图片缩放)。 - * 详见HDMI协议1.4第8.2.1节。 - * - * @since 1.0 - */ -enum HdmiNups { - HDMI_NUPS_UNKNOWN = 0, /* 没有已知的非均匀缩放 */ - HDMI_NUPS_HORIZONTAL = 1, /* 图片已水平缩放 */ - HDMI_NUPS_VERTICAL = 2, /* 图片已垂直缩放 */ - HDMI_NUPS_BOTH = 3, /* 图片已水平和垂直缩放 */ -}; - -/** - * @brief 定义视频属性结构。 - * - * @since 1.0 - */ -struct HdmiVideoAttr { - uint32_t tmdsClock; /* 单位:千赫 */ - uint32_t pixelClock; /* 单位:千赫 */ - uint32_t pixelRepeat; - enum HdmiColorSpace colorSpace; - enum HdmiColorimetry colorimetry; - enum HdmiExtendedColorimetry extColorimetry; - enum HdmiQuantizationRange quantization; - enum HdmiYccQuantizationRange yccQuantization; - enum HdmiDeepColor deepColor; - enum HdmiVideo3dStructure _3dStruct; - enum HdmiVideoTiming timing; - enum HdmiPictureAspectRatio aspect; - enum HdmiActiveFormatAspectRatio activeAspect; - enum HdmiNups nups; - bool xvycc; -}; - -/** - * @brief 音频编码类型。 - * 详见HDMI协议1.4第7节。 - * - * @since 1.0 - */ -enum HdmiAudioCodingType { - HDMI_AUDIO_CODING_TYPE_STREAM = 0, - HDMI_AUDIO_CODING_TYPE_LPCM = 1, - HDMI_AUDIO_CODING_TYPE_AC3 = 2, - HDMI_AUDIO_CODING_TYPE_MPEG1 = 3, - HDMI_AUDIO_CODING_TYPE_MP3 = 4, - HDMI_AUDIO_CODING_TYPE_MPEG2 = 5, - HDMI_AUDIO_CODING_TYPE_AAC_LC = 6, - HDMI_AUDIO_CODING_TYPE_DTS = 7, - HDMI_AUDIO_CODING_TYPE_ATRAC = 8, - HDMI_AUDIO_CODING_TYPE_OBA = 9, - HDMI_AUDIO_CODING_TYPE_EAC3 = 10, - HDMI_AUDIO_CODING_TYPE_DTS_HD = 11, - HDMI_AUDIO_CODING_TYPE_MLP = 12, - HDMI_AUDIO_CODING_TYPE_DST = 13, - HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14, - HDMI_AUDIO_CODING_TYPE_CXT = 15, -}; - -/** - * @brief 音频接口类型。 - * - * @since 1.0 - */ -enum HdmiAudioInterfaceType { - HDMI_AUDIO_IF_TYPE_I2S = 0, /* I2S总线 */ - HDMI_AUDIO_IF_TYPE_SPDIF = 1, /* 索尼/飞利浦数字接口 */ - HDMI_AUDIO_IF_TYPE_OTHER, -}; - -/** - * @brief 音频位深度。 - * 详见HDMI协议1.4第7节。 - * - * @since 1.0 - */ -enum HdmiAudioBitDepth { - HDMI_ADIO_BIT_DEPTH_UNKNOWN, - HDMI_ADIO_BIT_DEPTH_8 = 8, - HDMI_ADIO_BIT_DEPTH_16 = 16, - HDMI_ADIO_BIT_DEPTH_18 = 18, - HDMI_ADIO_BIT_DEPTH_20 = 20, - HDMI_ADIO_BIT_DEPTH_24 = 24, - HDMI_ADIO_BIT_DEPTH_32 = 32, - HDMI_ADIO_BIT_DEPTH_BUTT, -}; - -/** - * @brief 用于音频的采样率。 - * 详见HDMI协议1.4第7.3节。 - * - * @since 1.0 - */ -enum HdmiSampleRate { - HDMI_SAMPLE_RATE_UNKNOWN, - HDMI_SAMPLE_RATE_8K = 8000, - HDMI_SAMPLE_RATE_11K = 11025, - HDMI_SAMPLE_RATE_12K = 12000, - HDMI_SAMPLE_RATE_16K = 16000, - HDMI_SAMPLE_RATE_22K = 22050, - HDMI_SAMPLE_RATE_24K = 24000, - HDMI_SAMPLE_RATE_32K = 32000, - HDMI_SAMPLE_RATE_44K = 44100, - HDMI_SAMPLE_RATE_48K = 48000, - HDMI_SAMPLE_RATE_88K = 88200, - HDMI_SAMPLE_RATE_96K = 96000, - HDMI_SAMPLE_RATE_176K = 176400, - HDMI_SAMPLE_RATE_192K = 192000, - HDMI_SAMPLE_RATE_768K = 768000, - HDMI_SAMPLE_RATE_BUTT, -}; - -/** - * @brief 音频格式通道。 - * 详见HDMI协议1.4第7节。 - * - * @since 1.0 - */ -enum HdmiAudioFormatChannel { - HDMI_AUDIO_FORMAT_CHANNEL_2 = 2, - HDMI_AUDIO_FORMAT_CHANNEL_3, - HDMI_AUDIO_FORMAT_CHANNEL_4, - HDMI_AUDIO_FORMAT_CHANNEL_5, - HDMI_AUDIO_FORMAT_CHANNEL_6, - HDMI_AUDIO_FORMAT_CHANNEL_7, - HDMI_AUDIO_FORMAT_CHANNEL_8, - HDMI_AUDIO_FORMAT_CHANNEL_BUTT, -}; - -/** - * @brief 定义音频属性结构。 - * - * @since 1.0 - */ -struct HdmiAudioAttr { - enum HdmiAudioCodingType codingType; - enum HdmiAudioInterfaceType ifType; - enum HdmiAudioBitDepth bitDepth; - enum HdmiSampleRate sampleRate; - bool downSample; - enum HdmiAudioFormatChannel channels; -}; - -/** - * @brief 电光传递函数(EOTF)。 - * 详见CTA-861-G第6.9节。 - * - * @since 1.0 - */ -enum HdmiEotfType { - HDMI_EOTF_SDR_LUMIN = 0, /* 传统gamma-SDR亮度范围 */ - HDMI_EOTF_HDR_LUMIN = 1, /* 传统gamma-HDR亮度范围 */ - HDMI_EOTF_SMPTE_ST_2048 = 2, /* SMPTE ST 2048 */ - HDMI_EOTF_HLG = 3, /* 基于ITU-R BT.2100-0的混合对数伽马(HLG) */ - HDMI_EOTF_BUTT, -}; - -/** - * @brief hdr色度计。 - * 详见HDMI协议2.1。 - * - * @since 1.0 - */ -enum HdmiHdrColormetry { - HDMI_HDR_COLORIMETRY_NONE, - HDMI_HDR_COLORIMETRY_ITU_601, - HDMI_HDR_COLORIMETRY_ITU_709, - HDMI_HDR_COLORIMETRY_EXTENDED, - HDMI_HDR_EXTENDED_COLORIMETRY_XV_YCC_601, - HDMI_HDR_EXTENDED_COLORIMETRY_XV_YCC_709, - HDMI_HDR_EXTENDED_COLORIMETRY_S_YCC_601, - HDMI_HDR_EXTENDED_COLORIMETRY_ADOBE_YCC_601, - HDMI_HDR_EXTENDED_COLORIMETRY_ADOBE_RGB, - HDMI_HDR_EXTENDED_COLORIMETRY_2020_CONST_LUMINOUS, /* BT2020 c_ycc */ - HDMI_HDR_EXTENDED_COLORIMETRY_2020_NON_CONST_LUMINOUW -}; - -/** - * @brief hdr模式。 - * 详见HDMI协议2.1。 - * - * @since 1.0 - */ -enum HdmiHdrMode { - HDMI_HDR_MODE_DISABLE, /* HDR和杜比模式禁用 */ - HDMI_HDR_MODE_DOLBY_NORMAL, /* 杜比正常(ycbcr422-12位)模式启用 */ - HDMI_HDR_MODE_DOLBY_TUNNELING, /* 杜比隧道(RGB-8bit)模式启用 */ - HDMI_HDR_MODE_CEA_861_3, /* HDR标准模式启用(根据) */ - HDMI_HDR_MODE_CEA_861_3_AUTHEN, /* HDR授权模式 */ - HDMI_HDR_MODE_BUTT -}; - -/** - * @brief hdr用户模式。 - * 详见HDMI协议2.1。 - * - * @since 1.0 - */ -enum HdmiHdrUserMode { - HDMI_HDR_USERMODE_SDR, - HDMI_HDR_USERMODE_HDR10, - HDMI_HDR_USERMODE_DOLBY, - HDMI_HDR_USERMODE_BUTT -}; - -/** - * @brief 静态元数据类型。 - * 详见CTA-861-G第6.9节。 - * - * @since 1.0 - */ -enum HdmiStaticMetadataType { - HDMI_DRM_STATIC_METADATA_TYPE_1 = 0, /* 静态元数据类型1 */ - HDMI_DRM_STATIC_METADATA_BUTT, -}; - -/** - * @brief 静态元数据描述符1st。 - * 详见CTA-861-G第6.9节。 - * - * @since 1.0 - */ -struct HdmiStaticMetadataDescriptor1st { - uint16_t displayPrimaries0X; /* display_primaries_x[0], in units of 0.00002 */ - uint16_t displayPrimaries0Y; /* display_primaries_y[0], in units of 0.00002 */ - uint16_t displayPrimaries1X; /* display_primaries_x[1], in units of 0.00002 */ - uint16_t displayPrimaries1Y; /* display_primaries_y[1], in units of 0.00002 */ - uint16_t displayPrimaries2X; /* display_primaries_x[2], in units of 0.00002 */ - uint16_t displayPrimaries2Y; /* display_primaries_y[2], in units of 0.00002 */ - uint16_t whitePointX; /* white_point_x, in units of 0.00002 */ - uint16_t whitePointY; /* white_point_y, in units of 0.00002 */ - uint16_t maxDisplayMasteringLuminance; /* max_display_mastering_luminance, in units of 1 cd/m^2 */ - uint16_t minDisplayMasteringLuminance; /* min_display_mastering_luminance, in units of 0.0001 cd/m^2 */ - uint16_t maxContentLightLevel; /* Maximum Content Light Level, in units of 1 cd/m^2 */ - uint16_t maxFrameAverageLightLevel; /* Maximum Frame-average Light Level, in units of 1 cd/m^2 */ -}; - -/** - * @brief 定义静态元数据描述符。 - * 详见CTA-861-G第6.9节。 - * - * @since 1.0 - */ -union HdmiStaticMetadataDescriptor { - struct HdmiStaticMetadataDescriptor1st type1; -}; - -/** - * @brief 定义hdr属性结构。 - * - * @since 1.0 - */ -struct HdmiHdrAttr { - enum HdmiHdrMode mode; - enum HdmiHdrUserMode userMode; - /* 当模式为HDMI_HDR_mode_CEA_861_3时,以下成员有效 */ - enum HdmiEotfType eotfType; - enum HdmiStaticMetadataType metadataType; - union HdmiStaticMetadataDescriptor descriptor; - enum HdmiHdrColormetry colorimetry; -}; - -/** - * @brief 定义hdmi HPD(热插拔检测)回调信息。 - * - * @since 1.0 - */ -struct HdmiHpdCallbackInfo { - void *data; - void (*callbackFunc)(void *data, bool hdp); -}; - -/** - * @brief 打开具有指定总线号的HDMI控制器。 - * 在使用HDMI接口之前,您可以获取HDMI控制器的设备句柄。 - * 通过调用HdmiOpen,此函数与HdmiClose成对使用。 - * - * @param busNum 总线号。 - * - * @return 如果操作成功,则返回HDMI控制器的设备句柄DevHandle;否则返回NULL。 - * - * @since 1.0 - */ -DevHandle HdmiOpen(uint16_t busNum); - -/** - * @brief 启动HDMI传输。 - * 此函数与HdmiStop成对使用。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiStart(DevHandle handle); - -/** - * @brief 停止HDMI传输。 - * 此函数与HdmiStart成对使用。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiStop(DevHandle handle); - -/** - * @brief HDMI声音图像消隐设置。 - * 首先将显示设备置于黑屏静音状态,等待HDMI输出设备开关。接着发送清除AVMute信号,启动显示设备。通过此设置,切换过程中的花屏现象将会被屏蔽掉。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param enable 是否启用avmute。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiAvmuteSet(DevHandle handle, bool enable); - -/** - * @brief 设置色深。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param color 要设置的色深,请参见HdmiDeepColor。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiDeepColorSet(DevHandle handle, enum HdmiDeepColor color); - -/** - * @brief 获取色深。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param color 指向要获取的色深的指针,请参见HdmiDeepColor。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiDeepColorGet(DevHandle handle, enum HdmiDeepColor *color); - -/** - * @brief 设置视频属性。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param attr 指向要设置的视频属性的指针,请参见HdmiVideoAttr。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiSetVideoAttribute(DevHandle handle, struct HdmiVideoAttr *attr); - -/** - * @brief 设置音频属性。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param attr 指向要设置的音频属性的指针,请参见HdmiAudioAttr。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiSetAudioAttribute(DevHandle handle, struct HdmiAudioAttr *attr); - -/** - * @brief 设置HDR属性。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param attr 指向要设置的hdr属性的指针,请参见HdmiHdrAttr。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiSetHdrAttribute(DevHandle handle, struct HdmiHdrAttr *attr); - -/** - * @brief HDMI读取接收器设备的原始EDID数据。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param buffer 指向要读取的数据的指针。 - * @param len 要读取的数据的长度。 - * - * @return 如果操作成功,返回读取数据的长度;如果操作失败,则返回负值或0。 - * - * @since 1.0 - */ -int32_t HdmiReadSinkEdid(DevHandle handle, uint8_t *buffer, uint32_t len); - -/** - * @brief 注册HPD(热插拔检测)回调函数。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * @param callback 指向回调信息的指针。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * - * @since 1.0 - */ -int32_t HdmiRegisterHpdCallbackFunc(DevHandle handle, struct HdmiHpdCallbackInfo *callback); - -/** - * @brief HDMI注销HPD(热插拔检测)回调函数。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * - * @return 如果操作成功,则返回0;如果操作失败,则返回负值。 - * @since 1.0 - */ -int32_t HdmiUnregisterHpdCallbackFunc(DevHandle handle); - -/** - * @brief 关闭HDMI控制器。 - * 使用HDMI接口后,可以通过调用HdmiClose关闭HDMI控制器。此函数与HdmiOpen成对使用。 - * - * @param handle 指向HDMI控制器的设备句柄的指针。 - * - * @since 1.0 - */ -void HdmiClose(DevHandle handle); - -#ifdef __cplusplus -#if __cplusplus -} -#endif -#endif /* __cplusplus */ - -#endif /* HDMI_IF_H */ diff --git a/zh-cn/device-dev/apis/driver/i3c_if.h b/zh-cn/device-dev/apis/driver/i3c_if.h deleted file mode 100755 index 6130b13920b99e23029d31516e6e7edcb6dea1e9..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/apis/driver/i3c_if.h +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * - * HDF is dual licensed: you can use it either under the terms of - * the GPL, or the BSD license, at your option. - * See the LICENSE file in the root of this repository for complete details. - */ - -/** - * @addtogroup I3C - * @{ - * - * @brief 提供改进的Improved Inter-Integrated Circuit (I3C)接口。 - * 该模块允许驱动程序在I3C控制器上执行操作,以访问I3C总线上的设备。 - * 包括创建和销毁I3C控制器句柄以及读取和写入数据。 - * - * @since 1.0 - */ - -/** - * @file i3c_if.h - * - * @brief 声明标准I3C接口函数。 - * - * @since 1.0 - */ - -#ifndef I3C_IF_H -#define I3C_IF_H - -#include "hdf_platform.h" -#include "i3c_ccc.h" - -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif -#endif /* __cplusplus */ - -enum TransMode { - /** I2C传输模式 */ - I2C_MODE = 0, - /** I3C传输模式 */ - I3C_MODE, - /** CCC(通用命令代码)模式 */ - CCC_CMD_MODE, -}; - -enum I3cBusMode { - /** 单数据速率模式 */ - I3C_BUS_SDR_MODE = 0, - /** 高数据速率模式 */ - I3C_BUS_HDR_MODE, -}; - -/** - * @brief 定义I3C控制器的配置。 - * - * @since 1.0 - */ -struct I3cConfig { - /** I3C总线模式 */ - enum I3cBusMode busMode; - /** 当前主设备,当控制器是主设备时,其为NULL */ - struct I3cDevice *curMaster; -}; - -/** - * @brief 定义I3C传输、I2C传输或发送CCC(通用命令代码)期间使用的I3C传输消息。 - * - * @attention 此结构不限制len指定的数据传输长度,允许的最大长度由特定控制器确定。 - * 设备地址addr表示原始设备地址,不需要包含读/写标志位。 - * @since 1.0 - */ -struct I3cMsg { - /** 目标设备的地址 */ - uint16_t addr; - /** 用于存储传输数据的缓冲区地址 */ - uint8_t *buf; - /** 传输数据的长度 */ - uint16_t len; - /** - * 传输模式标志 | 说明 - * ------------| ----------------------- - * I2C_FLAG_READ | 读标志 - * I2C_FLAG_READ_NO_ACK | 无确认读取标志 - * I2C_FLAG_IGNORE_NO_ACK | 忽略无确认标志 - * I2C_FLAG_NO_START | 无启动条件标志 - * I2C_FLAG_STOP | 停止条件标志 - */ - uint16_t flags; - /** 传输模式选择,默认为I2C_MODE */ - enum TransMode mode; - /** CCC(通用命令代码)结构,用于CCC_CMD_MODE传输模式 */ - struct I3cCccCmd *ccc; - /** I3C错误代码,由驱动程序更新 */ - uint16_t err; -}; - -/** - * @brief 定义I3C IBI(带内中断)的数据。 - * - * @attention 生成IBI时,IBI函数中的有效载荷和buf可获得IBI数据。 - * - * @since 1.0 - */ -struct I3cIbiData { - /** 有效载荷数据长度。IBI有效负载数据的长度。当IBI已生成,读取时请勿修改。 */ - uint32_t payload; - /** 数据缓冲区。有效负载数据的指针。 */ - uint8_t *buf; -}; - -enum I3cFlag { - /** 读标志。值1表示读取操作,0表示写入操作。 */ - I3C_FLAG_READ = (0x1 << 0), - /** 无ACK读标志。值1表示在读取过程中没有发送ACK信号。 */ - I3C_FLAG_READ_NO_ACK = (0x1 << 11), - /** 忽略ACK标志。值1表示忽略非ACK信号。 */ - I3C_FLAG_IGNORE_NO_ACK = (0x1 << 12), - - /** 无启动条件标志。值1表示消息没有启动条件转移。 */ - I3C_FLAG_NO_START = (0x1 << 14), - /** 停止条件标志。值1表示当前传输以停止条件结束。 */ - I3C_FLAG_STOP = (0x1 << 15), -}; - -/** - * @brief IBI(带内中断)回调函数。 - * 使用{@link I3cRequestIbi}将其连接到I3C设备。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param addr 重新设置IBI(带内中断)的设备地址。 - * @param data IBI的数据结构。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * @since 1.0 - */ -typedef int32_t (*I3cIbiFunc)(DevHandle handle, uint16_t addr, struct I3cIbiData data); - -/** - * @brief 获取I3C控制器的句柄。 - * 在访问I3C总线之前,必须调用此函数。 - * - * @param number I3C控制器ID。 - * - * @return 如果操作成功,则返回指向I3C控制器的DevHandle的指针;否则返回NULL。 - * - * @since 1.0 - */ -DevHandle I3cOpen(int16_t number); - - /** - * @brief 释放I3C控制器的句柄。 - * 如果不再需要访问I3C控制器,则应调用此函数关闭其句柄,以便释放未使用的内存资源。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * - * @since 1.0 - */ -void I3cClose(DevHandle handle); - - /** - * @brief 启动到I3C设备或兼容的I2C设备的传输,或者向支持的I3C设备发送CCC(通用命令代码)。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param msg 指向I3C传输消息结构数组的指针。 - * @param count 消息结构数组的长度。 - * @param mode 传输模式。 - * - * @return 如果操作成功,返回传输的消息结构数; - * @see I3cMsg - * @attention 此结构不限制len指定的数据传输长度。 特定的 I3C 控制器决定了允许的最大长度。 设备地址addr表示原始设备地址,不需要包含读/写标志位。 - * - * @since 1.0 - */ -int32_t I3cTransfer(DevHandle handle, struct I3cMsg *msg, int16_t count, enum TransMode mode); - - /** - * @brief 重新设置受支持的I3C设备的IBI(带内中断)。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param addr 重新设置IBI(带内中断)的设备地址。 - * @param func IBI回调函数。 - * @param payload 有效负载数据的长度,以字节为单位。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t I3cRequestIbi(DevHandle handle, uint16_t addr, I3cIbiFunc func, uint32_t payload); - - /** - * @brief 释放{@link I3cRequestIbi}重新设置的IBI(带内中断)。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param addr 要释放IBI的设备的地址。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t I3cFreeIbi(DevHandle handle, uint16_t addr); - - /** - * @brief 设置I3C控制器的配置。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param config 要设置的配置结构的指针。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t I3cSetConfig(DevHandle handle, struct I3cConfig *config); - - /** - * @brief 获取I3C控制器的配置。 - * - * @param handle 指向通过{@link I3cOpen}获得的I3C控制器句柄的指针。 - * @param config 用于存储配置的结构体。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t I3cGetConfig(DevHandle handle, struct I3cConfig *config); - -#ifdef __cplusplus -#if __cplusplus -} -#endif -#endif /* __cplusplus */ - -#endif /* I3C_IF_H */ -/** @} */ diff --git a/zh-cn/device-dev/apis/driver/mipi_csi_if.h b/zh-cn/device-dev/apis/driver/mipi_csi_if.h deleted file mode 100755 index e5f169e0aa18863b3e0d1bf667b14b4997481486..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/apis/driver/mipi_csi_if.h +++ /dev/null @@ -1,537 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * - * HDF is dual licensed: you can use it either under the terms of - * the GPL, or the BSD license, at your option. - * See the LICENSE file in the root of this repository for complete details. - */ - -/** - * @addtogroup MIPI CSI - * @{ - * - * @brief 定义用于外设接收端驱动程序开发的标准MIPI CSI API。 - * 此MIPI CSI模块抽象了不同系统平台的MIPI CSI功能,以提供稳定的API。 - * 用于外设接收端驱动程序开发。您可以使用此模块获取/释放MIPI CSI设备句柄。 - * - * @since 1.0 - */ - -/** - * @file mipi_csi_if.h - * - * @brief 声明用于显示驱动程序开发的标准MIPI CSI API。 - * - * - * - * @since 1.0 - */ - -#ifndef MIPI_CSI_IF_H -#define MIPI_CSI_IF_H - -#include "hdf_platform.h" - -#ifdef __cplusplus -#if __cplusplus -extern "C" { -#endif -#endif /* __cplusplus */ - -/** - * @brief MIPI RX的MIPI设备支持的最大通道数。 - * - * @since 1.0 - */ -#define MIPI_LANE_NUM 4 - -/** - * @brief Mipi Rx的LVDS设备支持的最大通道数。 - * - * @since 1.0 - */ -#define LVDS_LANE_NUM 4 - -/** - * @brief 定义支持的最大虚拟通道数。 - * - * @since 1.0 - */ -#define WDR_VC_NUM 4 - -/** - * @brief 为LVDS的每个虚拟通道定义同步代码的数量。 - * - * @since 1.0 - */ -#define SYNC_CODE_NUM 4 - -/** - * @brief 最多3组扩展数据类型。 - * - * @since 1.0 - */ -#define MAX_EXT_DATA_TYPE_NUM 3 - -/** - * @brief Mipi-Rx的通道分布。 - * - * @since 1.0 - */ -typedef enum { - LANE_DIVIDE_MODE_0 = 0, - LANE_DIVIDE_MODE_1 = 1, - LANE_DIVIDE_MODE_BUTT -} LaneDivideMode; - -/** - * @brief MIPI接收输入接口类型。 - * - * @since 1.0 - */ -typedef enum { - /** mipi */ - INPUT_MODE_MIPI = 0x0, - /** SUB_LVDS */ - INPUT_MODE_SUBLVDS = 0x1, - /** LVDS */ - INPUT_MODE_LVDS = 0x2, - /* HISPI */ - INPUT_MODE_HISPI = 0x3, - /** CMOS */ - INPUT_MODE_CMOS = 0x4, - /** BT601 */ - INPUT_MODE_BT601 = 0x5, - /** BT656 */ - INPUT_MODE_BT656 = 0x6, - /** BT1120 */ - INPUT_MODE_BT1120 = 0x7, - /** MIPI Bypass */ - INPUT_MODE_BYPASS = 0x8, - INPUT_MODE_BUTT -} InputMode; - -/** - * @brief MIPI接收速率。 - * - * @since 1.0 - */ -typedef enum { - /** output 1 pixel per clock */ - MIPI_DATA_RATE_X1 = 0, - /** output 2 pixel per clock */ - MIPI_DATA_RATE_X2 = 1, - MIPI_DATA_RATE_BUTT -} MipiDataRate; - -/** - * @brief Mipi图像区域。 - * - * @since 1.0 - */ -typedef struct { - int x; - int y; - unsigned int width; - unsigned int height; -} ImgRect; - -/** - * @brief 传输的数据类型。 - * - * @since 1.0 - */ -typedef enum { - DATA_TYPE_RAW_8BIT = 0, - DATA_TYPE_RAW_10BIT, - DATA_TYPE_RAW_12BIT, - DATA_TYPE_RAW_14BIT, - DATA_TYPE_RAW_16BIT, - DATA_TYPE_YUV420_8BIT_NORMAL, - DATA_TYPE_YUV420_8BIT_LEGACY, - DATA_TYPE_YUV422_8BIT, - /** YUV422 8位转换用户定义16位原始数据 */ - DATA_TYPE_YUV422_PACKED, - DATA_TYPE_BUTT -} DataType; - -/** - * @brief 定义YUV和原始数据格式以及位深度。 - * - * @since 1.0 - */ -typedef struct { - uint8_t devno; - unsigned int num; - unsigned int extDataBitWidth[MAX_EXT_DATA_TYPE_NUM]; - unsigned int extDataType[MAX_EXT_DATA_TYPE_NUM]; -} ExtDataType; - -/** - * @brief MIPI D-PHY WDR模式定义。 - * - * @since 1.0 - */ -typedef enum { - HI_MIPI_WDR_MODE_NONE = 0x0, - /** Virtual Channel */ - HI_MIPI_WDR_MODE_VC = 0x1, - /** Data Type */ - HI_MIPI_WDR_MODE_DT = 0x2, - /** DOL Mode */ - HI_MIPI_WDR_MODE_DOL = 0x3, - HI_MIPI_WDR_MODE_BUTT -} MipiWdrMode; - -/** - * @brief Mipi设备属性。 - * - * @since 1.0 - */ -typedef struct { - /** 数据类型:8/10/12/14/16位 */ - DataType inputDataType; - /** MIPI WDR模式定义 */ - MipiWdrMode wdrMode; - /** 通道id: -1 - 禁用 */ - short laneId[MIPI_LANE_NUM]; - - union { - /** 由HI_MIPI_WDR_MODE_DT使用 */ - short dataType[WDR_VC_NUM]; - }; -} MipiDevAttr; - -/** - * @brief LVDS WDR模式定义。 - * - * @since 1.0 - */ -typedef enum { - HI_WDR_MODE_NONE = 0x0, - HI_WDR_MODE_2F = 0x1, - HI_WDR_MODE_3F = 0x2, - HI_WDR_MODE_4F = 0x3, - HI_WDR_MODE_DOL_2F = 0x4, - HI_WDR_MODE_DOL_3F = 0x5, - HI_WDR_MODE_DOL_4F = 0x6, - HI_WDR_MODE_BUTT -} WdrMode; - -/** - * @brief LVDS同步模式。 - * - * @since 1.0 - */ -typedef enum { - /** 传感器SOL、EOL、SOF、EOF */ - LVDS_SYNC_MODE_SOF = 0, - /** SAV, EAV */ - LVDS_SYNC_MODE_SAV, - LVDS_SYNC_MODE_BUTT -} LvdsSyncMode; - -/** - * @brief LVDS 列同步类型。 - * - * @since 1.0 - */ -typedef enum { - LVDS_VSYNC_NORMAL = 0x00, - LVDS_VSYNC_SHARE = 0x01, - LVDS_VSYNC_HCONNECT = 0x02, - LVDS_VSYNC_BUTT -} LvdsVsyncType; - -/** - * @brief LVDS-Vsync列同步参数。 - * - * @since 1.0 - */ -typedef struct { - LvdsVsyncType syncType; - - /* 当 sync_type 为 LVDS_VSYNC_HCONNECT 时,需要配置 hblank1 和 hblank2,表示 Hconnect 的消隐区长度 */ - unsigned short hblank1; - unsigned short hblank2; -} LvdsVsyncAttr; - -/** - * @brief 帧ID类型。 - * - * @since 1.0 - */ -typedef enum { - LVDS_FID_NONE = 0x00, - /** SAV 4th中的帧标识id */ - LVDS_FID_IN_SAV = 0x01, - /** 第一个数据中的帧标识id */ - LVDS_FID_IN_DATA = 0x02, - LVDS_FID_BUTT -} LvdsFidType; - -/** - * @brief 帧ID配置信息。 - * - * @since 1.0 - */ -typedef struct { - LvdsFidType fidType; - - /** 索尼DOL有帧信息线,在DOL H连接模式下, - 应将此标志配置为false以禁用输出帧信息行。 */ - unsigned char outputFil; -} LvdsFidAttr; - -/** - * @brief 位大小端模式。 - * - * @since 1.0 - */ -typedef enum { - LVDS_ENDIAN_LITTLE = 0x0, - LVDS_ENDIAN_BIG = 0x1, - LVDS_ENDIAN_BUTT -} LvdsBitEndian; - -/** - * @brief LVDS/SUBSLVDS/HiSPi设备属性。 - * - * @since 1.0 - */ -typedef struct { - /** 数据类型:8/10/12/14位 */ - DataType inputDataType; - /** 波分复用模式 */ - WdrMode wdrMode; - - /** 同步模式:SOF,SAV */ - LvdsSyncMode syncMode; - /** 正常、共享、连接 */ - LvdsVsyncAttr vsyncAttr; - /** 帧识别码 */ - LvdsFidAttr fidAttr; - - /** 数据端:小/大 */ - LvdsBitEndian dataEndian; - /** 同步代码endian:小/大 */ - LvdsBitEndian syncCodeEndian; - /** 通道id: -1 - 禁用 */ - short laneId[LVDS_LANE_NUM]; - - /** 每个vc有4个参数,syncCode[i]: - 同步模式是SYNC_MODE_SOF:SOF、EOF、SOL、EOL - 同步模式是SYNC_MODE_SAV:无效SAV、无效eav、有效SAV、有效eav */ - unsigned short syncCode[LVDS_LANE_NUM][WDR_VC_NUM][SYNC_CODE_NUM]; -} LvdsDevAttr; - -/** - * @brief 组合设备的属性。 - * 组合设备属性,由于 MIPI Rx 能够对接 CSI-2、LVDS、HiSPi 等时序,所以将 MIPI Rx 称为组合设备。 - * - * @since 1.0 - */ -typedef struct { - /** 设备号 */ - uint8_t devno; - /** 输入模式:MIPI/LVDS/SUBSLVDS/HISPI/DC */ - InputMode inputMode; - MipiDataRate dataRate; - /** MIPI Rx设备裁剪区域(与原始传感器输入图像大小相对应) */ - ImgRect imgRect; - - union { - MipiDevAttr mipiAttr; - LvdsDevAttr lvdsAttr; - }; -} ComboDevAttr; - -/** - * @brief 共模电压模式。 - * - * @since 1.0 - */ -typedef enum { - PHY_CMV_GE1200MV = 0x00, - PHY_CMV_LT1200MV = 0x01, - PHY_CMV_BUTT -} PhyCmvMode; - -/** - * @brief 获取具有指定通道ID的MIPI CSI设备句柄。 - * - * @param id 表示 MIPI CSI通道id。 - * - * @return 如果操作成功,则返回MIPI CSI设备句柄;否则返回NULL。 - * - * @since 1.0 - */ -DevHandle MipiCsiOpen(uint8_t id); - -/** - * @brief 释放MIPI CSI设备句柄。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * - * @since 1.0 - */ -void MipiCsiClose(DevHandle handle); - -/** - * @brief 将Mipi、CMOS或LVDS摄像机的参数设置到控制器。 - * 参数包括工作模式、图像面积、图像深度、数据速率和物理通道。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param pAttr 指向属性的指针。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiSetComboDevAttr(DevHandle handle, ComboDevAttr *pAttr); - -/** - * @brief 设置共模电压模式。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param devno 总共有2个设备编号,指向0或1。 - * @param cmvMode 共模电压模式参数。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiSetPhyCmvmode(DevHandle handle, uint8_t devno, PhyCmvMode cmvMode); - -/** - * @brief 复位传感器。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param snsResetSource 传感器的复位信号线号在软件中称为传感器的复位源。 - * sns是传感器的缩写。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiResetSensor(DevHandle handle, uint8_t snsResetSource); - -/** - * @brief 撤销复位传感器。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param snsResetSource 传感器的复位信号线号在软件中称为传感器的复位源。 - * sns是传感器的缩写。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiUnresetSensor(DevHandle handle, uint8_t snsResetSource); - -/** - * @brief 复位 MIPI RX。 - * 不同的s32WorkingViNum有不同的enSnsType。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param comboDev MIPI Rx或者SLVS 设备类型。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiResetRx(DevHandle handle, uint8_t comboDev); - -/** - * @brief 未设置的MIPI RX. - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param comboDev MIPI Rx或者SLVS 设备类型。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiUnresetRx(DevHandle handle, uint8_t comboDev); - -/** - * @brief 设置Mipi Rx的通道分布。 - * 根据硬件连接形式选择具体模式。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param laneDivideMode 通道划分模式参数。 - * - * @since 1.0 - */ -int32_t MipiCsiSetHsMode(DevHandle handle, LaneDivideMode laneDivideMode); - -/** - * @brief 使能mipi的时钟。 - * 根据上层函数电泳传递的enSnsType参数决定是用 MIPI 还是LVDS。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param comboDev MIPI接收或LVDS设备类型。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiEnableClock(DevHandle handle, uint8_t comboDev); - -/** - * @brief 关闭Mipi的时钟。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param comboDev MIPI接收或LVDS设备类型。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiDisableClock(DevHandle handle, uint8_t comboDev); - -/** - * @brief 启用Mipi上的传感器时钟。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param snsClkSource 传感器的时钟信号线号,在软件中称为传感器的时钟源。 - * sns是传感器的缩写。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiEnableSensorClock(DevHandle handle, uint8_t snsClkSource); - -/** - * @brief 关闭传感器时钟。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param snsClkSource 传感器的时钟信号线号,在软件中称为传感器的时钟源。 - * sns是传感器的缩写。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiDisableSensorClock(DevHandle handle, uint8_t snsClkSource); - -/** - * @brief 设置YUV和原始数据格式以及位深度。 - * - * @param handle 通过{@link MipiCsiOpen}获得的MIPI CSI设备句柄。 - * @param dataType 指向图像数据格式的指针。 - * - * @return 如果操作成功,则返回0;否则返回负值。 - * - * @since 1.0 - */ -int32_t MipiCsiSetExtDataType(DevHandle handle, ExtDataType* dataType); - -#ifdef __cplusplus -#if __cplusplus -} -#endif -#endif /* __cplusplus */ - -#endif /* MIPI_CSI_IF_H */ diff --git a/zh-cn/device-dev/apis/usb/usbd_client.h b/zh-cn/device-dev/apis/usb/usbd_client.h deleted file mode 100644 index c8b8e1f9b53cf6f5572899f1d4b38b6f86506cbf..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/apis/usb/usbd_client.h +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright (c) 2021 Huawei Device Co., Ltd. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @addtogroup USB - * @{ - * - * @brief Declares USB-related APIs, including the custom data types and functions - * used to obtain descriptors, interface objects, and request objects, and to submit requests. - * - * @since 3.0 - * @version 1.0 - */ - -/** - * @file usbd_client.h - * - * @brief Defines the usbd Interface. - * - * @since 3.0 - * @version 1.0 - */ - -#ifndef USBD_CLIENT_H -#define USBD_CLIENT_H - -#include "usb_param.h" -#include "usbd_subscriber.h" - -namespace OHOS { -namespace USB { -class UsbdClient { -public: - /* * - * @brief 打开设备,建立连接 - * - * @param dev usb设备地址信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t OpenDevice(const UsbDev &dev); - - /* * - * @brief 关闭设备,释放与设备相关的所有系统资源 - * - * @param dev usb设备地址信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t CloseDevice(const UsbDev &dev); - - /* * - * @brief 获取设备描述符device - * - * @param dev usb设备地址信息 - * @param decriptor usb设备描述符信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetDeviceDescriptor(const UsbDev &dev, std::vector &decriptor); - - /* * - * @brief 根据String ID获取设备的字符串描述符string - * - * @param dev usb设备地址信息 - * @param descId usb的string ID - * @param decriptor 获取usb设备config信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetStringDescriptor(const UsbDev &dev, uint8_t descId, std::vector &decriptor); - - /* * - * @brief 根据config ID获取设备的配置描述符config - * - * @param dev usb设备地址信息 - * @param descId usb的config ID - * @param decriptor 获取usb设备config信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetConfigDescriptor(const UsbDev &dev, uint8_t descId, std::vector &decriptor); - - /* * - * @brief 获取原始描述符 - * - * @param dev usb设备地址信息 - * @param decriptor usb设备原始描述符 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetRawDescriptor(const UsbDev &dev, std::vector &decriptor); - - /* * - * @brief 设置当前的config信息 - * - * @param dev usb设备地址信息 - * @param configIndex usb设备config信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t SetConfig(const UsbDev &dev, uint8_t configIndex); - - /* * - * @brief 获取当前的config信息 - * - * @param dev usb设备地址信息 - * @param configIndex usb设备config信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetConfig(const UsbDev &dev, uint8_t &configIndex); - - /* * - * @brief 打开接口,并申明独占接口,必须在数据传输前执行 - * - * @param dev usb设备地址信息 - * @param interfaceid usb设备interface ID - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t ClaimInterface(const UsbDev &dev, uint8_t interfaceid); - - /* * - * @brief 关闭接口,释放接口的占用,在停止数据传输后执行 - * - * @param dev usb设备地址信息 - * @param interfaceid usb设备interface ID - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t ReleaseInterface(const UsbDev &dev, uint8_t interfaceid); - - /* * - * @brief 设置指定接口的备选设置,用于在具有相同ID但不同备用设置的两个接口之间进行选择 - * - * @param dev usb设备地址信息 - * @param interfaceid usb设备interface ID - * @param altIndex interface 的 AlternateSetting 信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t SetInterface(const UsbDev &dev, uint8_t interfaceid, uint8_t altIndex); - - /* * - * @brief 在给定端点上执行批量数据读取,返回读取的数据和长度,端点方向必须为数据读取可以设置超时时间 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 获取写入的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - BulkTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); - - /* * - * @brief 在给定端点上执行批量数据写入,返回读取的数据和长度,端点方向必须为数据写入 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 写入的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - BulkTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, const std::vector &data); - - /* * - * @brief 对此设备执行端点零的控制事务,传输方向由请求类型决定。如果requestType& - * USB_ENDPOINT_DIR_MASK是USB_DIR_OUT,则传输是写入,如果是USB_DIR_IN,则传输是读取。 - * - * @param dev usb设备地址信息 - * @param ctrl usb设备控制数据包结构 - * @param data 读取/写入 的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t ControlTransfer(const UsbDev &dev, const UsbCtrlTransfer &ctrl, std::vector &data); - - /* * - * @brief 在给定端点上执行中断数据读取,返回读取的数据和长度,端点方向必须为数据读取 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 读取的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - InterruptTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); - - /* * - * @brief 在给定端点上执行中断数据写入,返回读取的数据和长度,端点方向必须为数据写入 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 读取的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - InterruptTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); - - /* * - * @brief 在给定端点上执行等时数据读取,返回读取的数据和长度,端点方向必须为数据读取 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 读取的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t IsoTransferRead(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); - - /* * - * @brief 在给定端点上执行等时数据写入,返回读取的数据和长度,端点方向必须为数据写入 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param timeout 超时时间 - * @param data 读取的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - IsoTransferWrite(const UsbDev &dev, const UsbPipe &pipe, int32_t timeout, std::vector &data); - - /* * - * @brief 将指定的端点进行异步数据发送或者接收请求,数据传输方向由端点方向决定 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param clientData 用户数据 - * @param buffer 传输数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t RequestQueue(const UsbDev &dev, - const UsbPipe &pipe, - const std::vector &clientData, - const std::vector &buffer); - - /* * - * @brief 等待RequestQueue异步请求的操作结果 - * - * @param dev usb设备地址信息 - * @param clientData 用户数据 - * @param buffer 传输数据 - * @param timeout 超时时间 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t - RequestWait(const UsbDev &dev, std::vector &clientData, std::vector &buffer, int32_t timeout); - - /* * - * @brief 取消待处理的数据请求 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t RequestCancel(const UsbDev &dev, const UsbPipe &pipe); - - /* * - * @brief 获取从设备支持的功能列表(按位域表示)(从设备) - * - * @param funcs 获取当前设备的function的值 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t GetCurrentFunctions(int32_t &funcs); - - /* * - * @brief 设置从设备支持的功能列表(按位域表示)(从设备) - * - * @param funcs 传入设备支持的function的值 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t SetCurrentFunctions(int32_t funcs); - - /* * - * @brief 关闭设备,释放与设备相关的所有系统资源 - * - * @param portId port接口 ID - * @param powerRole 电源角色的值 - * @param dataRole 数据角色的值 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t SetPortRole(int32_t portId, int32_t powerRole, int32_t dataRole); - - /* * - * @brief 查询port端口的当前设置 - * - * @param portId port接口 ID - * @param powerRole 电源角色的值 - * @param dataRole 数据角色的值 - * @param mode 模式的值 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t QueryPort(int32_t &portId, int32_t &powerRole, int32_t &dataRole, int32_t &mode); - - /* * - * @brief 绑定订阅者 - * - * @param subscriber 订阅者信息 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static ErrCode BindUsbdSubscriber(const sptr &subscriber); - - /* * - * @brief 解绑订阅者 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static ErrCode UnbindUsbdSubscriber(); - - /* * - * @brief 异步批量读取数据,传输大量数据时使用 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param length 打算以什么长度读取数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t BulkRequstDataSize(const UsbDev &dev, const UsbPipe &pipe, uint32_t &length); - - /* * - * @brief 与BulkRequstDataSize配合使用,获取读取结果 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param data 读取到的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t BulkReadData(const UsbDev &dev, const UsbPipe &pipe, std::vector &data); - - /* * - * @brief 异步批量写数据,传输大量数据时使用 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param data 要写入的数据 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t BulkWriteData(const UsbDev &dev, const UsbPipe &pipe, const std::vector &data); - - /* * - * @brief 与BulkWriteData配合使用,获取写入状态,由length描述 - * - * @param dev usb设备地址信息 - * @param pipe usb设备pipe信息 - * @param length 已经写入的数据长度 - * - * @return 0 表示成功,其他返回值表示失败 - * @since 3.0 - */ - static int32_t BulkGetWriteCompleteLength(const UsbDev &dev, const UsbPipe &pipe, uint32_t &length); - -private: - static void PrintBuffer(const char *title, const uint8_t *buffer, uint32_t length); - static int32_t SetDeviceMessage(MessageParcel &data, const UsbDev &dev); - static int32_t SetBufferMessage(MessageParcel &data, const std::vector &tdata); - static int32_t GetBufferMessage(MessageParcel &data, std::vector &tdata); - static sptr GetUsbdService(); - static ErrCode DoDispatch(uint32_t cmd, MessageParcel &data, MessageParcel &reply); -}; -} // namespace USB -} // namespace OHOS -#endif // USBD_CLIENT_H diff --git a/zh-cn/device-dev/get-code/sourcecode-acquire.md b/zh-cn/device-dev/get-code/sourcecode-acquire.md index fc6b2296d30476f81e90e589417d082e04f90297..76ffab757623f06b3c4bd39c56ff7d6246a68b66 100644 --- a/zh-cn/device-dev/get-code/sourcecode-acquire.md +++ b/zh-cn/device-dev/get-code/sourcecode-acquire.md @@ -14,8 +14,7 @@ - [获取方式3:从镜像站点获取](#section1186691118430) - [获取方式4:从github镜像仓库获取\(每天UTC时间23点同步\)](#section23448418360) -- [源码目录](#section1072115612811) - +- [源码目录简介](#section1072115612811) ## OpenHarmony介绍 @@ -77,7 +76,7 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 - **OpenHarmony主干代码获取** - 方式一(推荐):通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 + 方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 ``` repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify @@ -85,7 +84,7 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 repo forall -c 'git lfs pull' ``` - 方式二:通过repo + https 下载。 + 方式二:通过repo + https下载。 ``` repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify @@ -93,10 +92,9 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 repo forall -c 'git lfs pull' ``` +- **OpenHarmony发布版本代码获取** -- **OpenHarmony 发布版本代码获取** - - OpenHarmony发布版本源码获取方式请参考[Release-Notes](../../release-notes/Readme.md)。 + OpenHarmony发布版本获取源码方式请参考[Release-Notes](../../release-notes/Readme.md)。 ## 获取方式2:从DevEco Marketplace获取 @@ -113,7 +111,7 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 官网下载并在本地安装Node.js. - [Node.js](https://nodejs.org/) 版本需不低于12.x \(包含 npm 6.14.4\),推荐安装 LTS版本。 + [Node.js](https://nodejs.org/) 版本需不低于12.x \(包含npm 6.14.4\),推荐安装LTS版本。 2. 通过Node.js自带的npm安装hpm命令行工具。 @@ -175,126 +173,190 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 为了获得更好的下载性能,您可以选择从以下站点的镜像库获取源码或者对应的解决方案。 -本部分只提供OpenHarmony Master最新版本和LTS最新版本的源码获取方式, 其他版本源码获取方式以及具体版本信息请参考[Release-Notes](../../release-notes/Readme.md)。 +本部分只提供OpenHarmony Master最新版本和LTS最新版本的获取源码方式, 其他版本获取源码方式以及具体版本信息请参考[Release-Notes](../../release-notes/Readme.md)。 -**表 1** 源码获取路径 +**表 1** 获取源码路径 - - diff --git a/zh-cn/device-dev/quick-start/oem_minitinier_des_3518.md b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3518.md similarity index 93% rename from zh-cn/device-dev/quick-start/oem_minitinier_des_3518.md rename to zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3518.md index b1b7ac95f1cdc1899967f9cf55d11162d891c9ff..ff1f64345ed002848fd3ad2061c01c4125e6e884 100644 --- a/zh-cn/device-dev/quick-start/oem_minitinier_des_3518.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3518.md @@ -1,4 +1,4 @@ -# Hi3518开发板介绍 +# Hi3518开发板介绍 - [简介](#section14815247616) - [开发板规格](#section765112478446) @@ -7,11 +7,13 @@ Hi3518EV300作为新一代智慧视觉处理SOC,集成新一代ISP\(Image Signal Processor\)以及H.265视频压缩编码器,同时采用先进低功耗工艺和低功耗架构设计,使其在低码率、高画质、低功耗等方面引领行业水平。 -**图 1** Hi3518EV300单板正面外观图 +**图 1** Hi3518EV300单板正面外观图 ![](figures/Hi3518EV300单板正面外观图.png "Hi3518EV300单板正面外观图") -**图 2** Hi3518EV300单板背面外观图 -![](figures/Hi3518EV300单板背面外观图.png "Hi3518EV300单板背面外观图") +**图 2** Hi3518EV300单板背面外观图 + + +![](figures/Hi3518正背面.png) ## 开发板规格 diff --git a/zh-cn/device-dev/quick-start/oem_minitinier_des_3861.md b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md similarity index 92% rename from zh-cn/device-dev/quick-start/oem_minitinier_des_3861.md rename to zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md index f1aabccf6a5f112c1689945fa0158ca6c560f954..c25192dba43b4a238db330dadb2b7b4d3affe26e 100644 --- a/zh-cn/device-dev/quick-start/oem_minitinier_des_3861.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md @@ -1,4 +1,4 @@ -# Hi3861开发板介绍 +# Hi3861开发板介绍 - [简介](#section19352114194115) - [资源和约束](#section82610215014) @@ -7,32 +7,36 @@ ## 简介 -Hi3861 WLAN模组是一片大约2cm\*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持OpenHarmony,并配套提供开放、易用的开发和调试运行环境。 +Hi3861开发板是一片大约2cm\*5cm大小的开发板,是一款高度集成的2.4GHz WLAN SoC芯片,集成IEEE 802.11b/g/n基带和RF(Radio Frequency)电路。支持OpenHarmony,并配套提供开放、易用的开发和调试运行环境。 -**图 1** Hi3861 WLAN模组外观图 -![](figures/Hi3861-WLAN模组外观图.png "Hi3861-WLAN模组外观图") +**图 1** Hi3861开发板外观图 +![](figures/Hi3861开发板外观图.png "Hi3861开发板外观图") -另外,Hi3861 WLAN模组还可以通过与Hi3861底板连接,扩充自身的外设能力,底板如下图所示。 +另外,Hi3861开发板还可以通过与Hi3861底板连接,扩充自身的外设能力,底板如下图所示。 -**图 2** Hi3861底板外观图 -![](figures/Hi3861底板外观图.png "Hi3861底板外观图") +**图 2** Hi3861底板外观图 + + +![](figures/zh-cn_image_0000001171455564.png) - RF电路包括功率放大器PA(Power Amplifier)、低噪声放大器LNA(Low Noise Amplifier)、RF Balun、天线开关以及电源管理等模块;支持20MHz标准带宽和5MHz/10MHz窄带宽,提供最大72.2Mbit/s物理层速率。 - Hi3861 WLAN基带支持正交频分复用(OFDM)技术,并向下兼容直接序列扩频(DSSS)和补码键控(CCK)技术,支持IEEE 802.11 b/g/n协议的各种数据速率。 - Hi3861芯片集成高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,外设接口包括SPI(Synchronous Peripheral Interface)、UART(Universal Asynchronous Receiver & Transmitter)、I2C(The Inter Integrated Circuit)、PWM(Pulse Width Modulation)、GPIO(General Purpose Input/Output)和多路ADC(Analog to Digital Converter),同时支持高速SDIO2.0(Secure Digital Input/Output)接口,最高时钟可达50MHz;芯片内置SRAM(Static Random Access Memory)和Flash,可独立运行,并支持在Flash上运行程序。 - Hi3861芯片适用于智能家电等物联网智能终端领域。 - **图 3** Hi3861功能框图 - ![](figures/Hi3861功能框图.png "Hi3861功能框图") + **图 3** Hi3861功能框图 + + + ![](figures/zh-cn_image_0000001171455566.png) ## 资源和约束 -Hi3861 WLAN模组资源十分有限,整板共2MB FLASH,352KB RAM。在编写业务代码时,需注意资源使用效率。 +Hi3861开发板资源十分有限,整板共2MB FLASH,352KB RAM。在编写业务代码时,需注意资源使用效率。 ## 开发板规格 -**表 1** Hi3861 WLAN模组规格清单 +**表 1** Hi3861开发板规格清单

LTS版本源码

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -302,7 +364,7 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 ## 获取方式4:从github镜像仓库获取\(每天UTC时间23点同步\) -方式一(推荐):通过repo + ssh 下载(需注册公钥,请参考[GitHub帮助中心](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account))。 +方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[GitHub帮助中心](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account))。 ``` repo init -u git@github.com:openharmony/manifest.git -b master --no-repo-verify @@ -310,7 +372,7 @@ repo sync -c repo forall -c 'git lfs pull' ``` -方式二:通过repo + https 下载。 +方式二:通过repo + https下载。 ``` repo init -u https://github.com/openharmony/manifest.git -b master --no-repo-verify @@ -318,9 +380,9 @@ repo sync -c repo forall -c 'git lfs pull' ``` -## 源码目录 +## 源码目录简介 -下表是OpenHarmony源码的目录及简单说明: +下表是OpenHarmony源码目录: **表 2** 源码目录 diff --git a/zh-cn/device-dev/guide/device-camera-control-example.md b/zh-cn/device-dev/guide/device-camera-control-example.md index 0c5aafaf121c932471eb5025961474b1aea60587..d663e721fcf44d08baa791e7bc8761d8113a889a 100644 --- a/zh-cn/device-dev/guide/device-camera-control-example.md +++ b/zh-cn/device-dev/guide/device-camera-control-example.md @@ -3,7 +3,7 @@ 本示例将运行源码中的camera示例代码,通过本示例可以实现使用开发板进行拍照、录像及预览等功能。 - 本示例源码路径为“applications/sample/camera/media/camera\_sample.cpp”。 -- 在运行本示例前需先完成编译烧录、运行镜像等步骤,相关操作请参考[Hi3516快速入门](../quick-start/oem_minitinier_des_3516.md#section26131214194212)。 +- 在运行本示例前需先完成编译烧录、运行镜像等步骤,相关操作请参考[Hi3516快速入门](../quick-start/quickstart-lite-overview.md)。 >![](../public_sys-resources/icon-note.gif) **说明:** >开发板启动后默认会加载launcher应用,应用的图形界面默认显示在媒体图层上方,会影响camera\_sample的演示结果,因此需要在编译或是打包时去掉launcher应用。 diff --git a/zh-cn/device-dev/guide/device-camera-visual-run.md b/zh-cn/device-dev/guide/device-camera-visual-run.md index dfbdc4472ce32fff064a3dd720db102152ce1477..798c16bb43fec9d2f03c6a68577d193ea79591dd 100644 --- a/zh-cn/device-dev/guide/device-camera-visual-run.md +++ b/zh-cn/device-dev/guide/device-camera-visual-run.md @@ -1,6 +1,6 @@ # 真机运行 -应用编译打包后即可安装到开发板。安装应用前需要先完成[DevEco Device Tool的安装配置](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905),然后将OpenHarmony烧录到开发板并运行。编译烧录、运行镜像的基本操作请参考快速入门手册:[Hi3516快速入门](../quick-start/oem_minitinier_des_3516.md#section26131214194212)。完成镜像运行,系统正常启动后,执行如下步骤安装或卸载三方应用。 +应用编译打包后即可安装到开发板。安装应用前需要先完成[DevEco Device Tool的安装配置](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905),然后将OpenHarmony烧录到开发板并运行。编译烧录、运行镜像的基本操作请参考快速入门手册:[Hi3516快速入门](../quick-start/quickstart-lite-overview.md)。完成镜像运行,系统正常启动后,执行如下步骤安装或卸载三方应用。 1. 将IDE编译的未签名应用安装包和安装工具(镜像文件生成目录中的dev\_tools)放在sdcard中,将sdcard插入开发板卡槽。 2. 应用安装默认要校验签名,需要执行以下命令,关闭签名校验。 diff --git a/zh-cn/device-dev/guide/device-iotcamera-control-example.md b/zh-cn/device-dev/guide/device-iotcamera-control-example.md index c5dfe01f028576b13feb79575245731c1876f9d3..2a8f94bc82951c7d998d2d9519e9aba6f4f05818 100644 --- a/zh-cn/device-dev/guide/device-iotcamera-control-example.md +++ b/zh-cn/device-dev/guide/device-iotcamera-control-example.md @@ -1,6 +1,6 @@ # 应用实例 -- 开发板介绍、编译烧录、运行镜像等操作请参考[Hi3518快速入门](../quick-start/oem_minitinier_des_3518.md#section14815247616),编译结果包含示例,结果文件为out/ipcamera\_hi3518ev300/dev\_tools/bin/camera\_sample,可将文件通过读卡器复制至TF卡中,或者修改camera\_sample的编译脚本将结果文件复制至rootfs.img中。 +- 开发板介绍、编译烧录、运行镜像等操作请参考[Hi3518快速入门](../quick-start/quickstart-lite-overview.md),编译结果包含示例,结果文件为out/ipcamera\_hi3518ev300/dev\_tools/bin/camera\_sample,可将文件通过读卡器复制至TF卡中,或者修改camera\_sample的编译脚本将结果文件复制至rootfs.img中。 修改applications/sample/camera/media/BUILD.gn中的output\_dir。 diff --git a/zh-cn/device-dev/guide/device-outerdriver-demo.md b/zh-cn/device-dev/guide/device-outerdriver-demo.md index 926e949916345e618f17ee4bc989a382e506c02f..b5ba5dbd3b9861daaee42b2894f8d747fe9c71fd 100644 --- a/zh-cn/device-dev/guide/device-outerdriver-demo.md +++ b/zh-cn/device-dev/guide/device-outerdriver-demo.md @@ -335,25 +335,25 @@ Input模型由三层驱动组成,开发者适配一款全新触摸屏驱动只 其中touch\_gt911.o为本示例中追加的内容。 -2. 具体编译及烧录操作请参考[标准系统快速入门编译及烧录章节](../quick-start/quickstart-standard-burn.md)。 +2. 具体编译及烧录操作请参考[标准系统快速入门编译及烧录章节](../quick-start/quickstart-standard-overview.md)。 ## 调试验证 如下所示为开机启动日志部分截取 ``` -[I/HDF_INPUT_DRV] HdfInputManagerInit: enter // 管理驱动层初始化 -[I/HDF_INPUT_DRV] HdfInputManagerInit: exit succ // 初始化成功 -[I/osal_cdev] add cdev hdf_input_host success -[I/HDF_LOG_TAG] HdfTouchDriverProbe: enter // 公共驱动层初始化 -[I/HDF_LOG_TAG] HdfTouchDriverProbe: main_touch exit succ // 初始化成功 -[I/osal_cdev] add cdev hdf_input_event1 success -[I/HDF_INPUT_DRV] HdfGoodixChipInit: enter // 器件驱动层初始化 -[I/HDF_INPUT_DRV] ChipDetect: IC FW version is 0x1060 -[I/HDF_INPUT_DRV] Product_ID: 911_1060, x_sol = 960, y_sol = 480 -[I/HDF_LOG_TAG] ChipDriverInit: chipDetect succ, ret = 0 -[I/HDF_LOG_TAG] InputDeviceInstance: inputDev->devName = main_touch -[I/HDF_INPUT_DRV] HdfGoodixChipInit: exit succ, chipName = gt911 // 初始化成功 +[I/HDF_INPUT_DRV] HdfInputManagerInit: enter // 管理驱动层初始化 +[I/HDF_INPUT_DRV] HdfInputManagerInit: exit succ // 初始化成功 +[I/osal_cdev] add cdev hdf_input_host success +[I/HDF_LOG_TAG] HdfTouchDriverProbe: enter // 公共驱动层初始化 +[I/HDF_LOG_TAG] HdfTouchDriverProbe: main_touch exit succ // 初始化成功 +[I/osal_cdev] add cdev hdf_input_event1 success +[I/HDF_INPUT_DRV] HdfGoodixChipInit: enter // 器件驱动层初始化 +[I/HDF_INPUT_DRV] ChipDetect: IC FW version is 0x1060 +[I/HDF_INPUT_DRV] Product_ID: 911_1060, x_sol = 960, y_sol = 480 +[I/HDF_LOG_TAG] ChipDriverInit: chipDetect succ, ret = 0 +[I/HDF_LOG_TAG] InputDeviceInstance: inputDev->devName = main_touch +[I/HDF_INPUT_DRV] HdfGoodixChipInit: exit succ, chipName = gt911 // 初始化成功 ``` ## Input模型工作流程解析 diff --git a/zh-cn/device-dev/guide/oem_wifi_sdk_des.md b/zh-cn/device-dev/guide/oem_wifi_sdk_des.md index add96b6c88418f5fa8e5a87ea7daee4f55c22427..c14fcebb21787d630d5bcdcba3fe7051dbb076c4 100644 --- a/zh-cn/device-dev/guide/oem_wifi_sdk_des.md +++ b/zh-cn/device-dev/guide/oem_wifi_sdk_des.md @@ -10,7 +10,7 @@ OpenHarmony WLAN模组基于Hi3861平台提供了丰富的外设操作能力, ## 开发 -1. 请先完成[《Hi3861快速入门》](../quick-start/oem_minitinier_des_3861.md#section19352114194115)。 +1. 请先完成[《Hi3861快速入门》](../quick-start/quickstart-lite-overview.md)。 LED控制参考示例存放于applications/sample/wifi-iot/app/iothardware/led\_example.c文件中。 @@ -101,7 +101,7 @@ OpenHarmony WLAN模组基于Hi3861平台提供了丰富的外设操作能力, ## 验证 -编译过程请参考《[Hi3861快速入门-源码编译](../quick-start/quickstart-lite-steps-hi3861-connection.md#section191121332125319)》,烧录过程请参考《[Hi3861快速入门-镜像烧录](../quick-start/quickstart-lite-steps-hi3861-connection.md#section3288165814218)》。 +编译过程请参考《[Hi3861快速入门-源码编译](../quick-start/quickstart-lite-steps-hi3861-building.md)》,烧录过程请参考《[Hi3861快速入门-镜像烧录](../quick-start/quickstart-lite-steps-hi3861-burn.md)》。 完成以上两步后,按下RST键复位模组,可发现LED在周期性闪烁,与预期相符,验证完毕。 diff --git "a/zh-cn/device-dev/kernel/figure/\344\273\273\345\212\241\347\212\266\346\200\201\350\277\201\347\247\273\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/kernel/figure/\344\273\273\345\212\241\347\212\266\346\200\201\350\277\201\347\247\273\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..c8920829c4f329643974a00a47775aac7de4ce25 Binary files /dev/null and "b/zh-cn/device-dev/kernel/figure/\344\273\273\345\212\241\347\212\266\346\200\201\350\277\201\347\247\273\347\244\272\346\204\217\345\233\276.png" differ diff --git a/zh-cn/device-dev/kernel/kernel-small-start-user.md b/zh-cn/device-dev/kernel/kernel-small-start-user.md index 77797471fdbf044bca1c8983e6884f07d71580d1..ebac98e200a7703668d2447d9c7ed59364460926 100644 --- a/zh-cn/device-dev/kernel/kernel-small-start-user.md +++ b/zh-cn/device-dev/kernel/kernel-small-start-user.md @@ -57,7 +57,7 @@ LITE_USER_SEC_ENTRY VOID OsUserInit(VOID *args) clang --target=arm-liteos --sysroot=prebuilts/lite/sysroot -o helloworld helloworld.c ``` - **clang**:参考[LLVM安装指导](../quick-start/quickstart-lite-env-setup-linux.md)安装LLVM编译器。 + **clang**:参考[LLVM安装指导](../quick-start/quickstart-lite-package-environment.md)安装LLVM编译器。 **--target**:--target=arm-liteos,指定编译平台为arm-liteos。 diff --git a/zh-cn/device-dev/porting/Readme-CN.md b/zh-cn/device-dev/porting/Readme-CN.md index 3f9eac0318f50c8de8fac8530eb68f1d035df3f5..8154f0b712fd9c0823295e897d14b69a796d61e0 100755 --- a/zh-cn/device-dev/porting/Readme-CN.md +++ b/zh-cn/device-dev/porting/Readme-CN.md @@ -1,4 +1,4 @@ -# 概述 +## 概述 目前OpenHarmony已经成立了SIG组[sig-devboard](https://gitee.com/openharmony/community/blob/master/sig/sig-devboard/sig_devboard_cn.md)。该SIG组以支持更多第三方开发板为目标,提供开发板移植的支撑。 在了解开发板移植前,需要先了解一下OpenHarmony对设备的分类。不同设备类型的移植方法会有较大差异。 @@ -9,7 +9,7 @@ | 小型系统类设备 | 内存>1MB、有MMU | LiteOS-A、Linux | | 标准系统类设备 | 内存>128MB | Linux | -# 代码准备 +## 代码准备 目前OpenHarmony已经为各厂家创建了仓库并在openharmony-sig中进行孵化。参与孵化仓开发,需要使用如下方法初始化和下载代码。 @@ -19,7 +19,7 @@ repo init -u https://gitee.com/openharmony-sig/manifest.git -b master -m devboar 其他下载步骤与主线相同。 -# 开发板移植指导 +## 芯片移植指导 - [轻量系统芯片移植指导](porting-minichip.md) - [移植准备](porting-chip-prepare.md) @@ -49,10 +49,16 @@ repo init -u https://gitee.com/openharmony-sig/manifest.git -b master -m devboar - [移植概述](porting-smallchip-driver-overview.md) - [平台驱动移植](porting-smallchip-driver-plat.md) - [器件驱动移植](porting-smallchip-driver-oom.md) -- 标准系统系统芯片移植指导 +- [标准系统芯片移植指导](standard-system-porting-guide.md) - [标准系统移植指南](standard-system-porting-guide.md) - [一种快速移植OpenHarmony Linux内核的方法](porting-linux-kernel.md) - [轻量和小型系统三方库移植指导]( porting-thirdparty.md) - [概述](porting-thirdparty-overview.md) - [CMake方式组织编译的库移植](porting-thirdparty-cmake.md) - - [Makefile方式组织编译的库移植](porting-thirdparty-makefile.md) \ No newline at end of file + - [Makefile方式组织编译的库移植](porting-thirdparty-makefile.md) + +## 芯片移植案例 + +- [轻量系统芯片移植案例](porting-minichip-cases.md) + - [带屏解决方案之恒玄芯片移植案例](porting-bes2600w-on-minisystem-display-demo.md) + diff --git a/zh-cn/device-dev/porting/porting-smallchip-prepare-building.md b/zh-cn/device-dev/porting/porting-smallchip-prepare-building.md index 4aceb0ec34627729d29d8dc517250dd0fda3aad1..15adc37f7525d8167aa00896d658a9427dca0dcd 100644 --- a/zh-cn/device-dev/porting/porting-smallchip-prepare-building.md +++ b/zh-cn/device-dev/porting/porting-smallchip-prepare-building.md @@ -6,7 +6,7 @@ ## 编译环境搭建 -首先请搭建OpenHarmony基础环境,步骤请参考轻量和小型系统入门[linux环境搭建](../quick-start/quickstart-lite-env-setup-linux.md)。用户态和LiteOS-A的内核态编译均使用llvm编译器编译,安装方法在搭建基础环境中已提供。若选择移植linux内核,请执行如下命令安装gcc-arm-linux-gnueabi交叉编译工具链,用于编译linux内核态镜像: +首先请搭建OpenHarmony基础环境,步骤请参考轻量和小型系统入门[linux环境搭建](../quick-start/quickstart-lite-package-environment.md)。用户态和LiteOS-A的内核态编译均使用llvm编译器编译,安装方法在搭建基础环境中已提供。若选择移植linux内核,请执行如下命令安装gcc-arm-linux-gnueabi交叉编译工具链,用于编译linux内核态镜像: ``` sudo apt-get install gcc-arm-linux-gnueabi diff --git a/zh-cn/device-dev/porting/porting.md b/zh-cn/device-dev/porting/porting.md index 735393aaf20573cd471bd71ca0cbef732244b68b..f91d8af91d792e8f0e76d5a221d6f41ed42c38e8 100644 --- a/zh-cn/device-dev/porting/porting.md +++ b/zh-cn/device-dev/porting/porting.md @@ -6,6 +6,6 @@ - **[小型系统芯片移植指导](porting-smallchip.md)** -- **[标准系统移植指南](standard-system-porting-guide.md)** +- **[标准系统移植指导](standard-system-porting-guide.md)** diff --git a/zh-cn/device-dev/quick-start/Readme-CN.md b/zh-cn/device-dev/quick-start/Readme-CN.md index 343e16248f597f2b9a502d17ba0c38001dccc256..6e047f03b5b596eb1f2c26c93541dd22f2d083ef 100644 --- a/zh-cn/device-dev/quick-start/Readme-CN.md +++ b/zh-cn/device-dev/quick-start/Readme-CN.md @@ -1,36 +1,64 @@ # 快速入门 -- [轻量和小型系统入门](quickstart-lite.md) - - [概述](quickstart-lite-overview.md) - - [入门介绍](quickstart-lite-introduction.md) - - [Hi3861开发板介绍](oem_minitinier_des_3861.md) - - [Hi3516开发板介绍](oem_minitinier_des_3516.md) - - [Hi3518开发板介绍](oem_minitinier_des_3518.md) - - [搭建系统环境](quickstart-lite-env-setup.md) - - [概述](quickstart-lite-env-setup-overview.md) - - [Windows开发环境准备](quickstart-lite-env-setup-windows.md) - - [获取源码及Ubuntu编译环境准备](quickstart-lite-env-setup-linux.md) - - [常见问题](quickstart-lite-env-setup-faqs.md) - - [开发步骤](quickstart-lite-steps.md) - - [Hi3861开发板](quickstart-lite-steps-hi3861.md) - - [安装开发板环境](quickstart-lite-steps-hi3861-setting.md) - - [WLAN联网(编译、烧录)](quickstart-lite-steps-hi3861-connection.md) - - [运行Hello World](quickstart-lite-steps-hi3861-running.md) - - [常见问题](quickstart-lite-steps-hi3861-faqs.md) - - [Hi3516开发板](quickstart-lite-steps-hi3516.md) - - [安装开发板环境](quickstart-lite-steps-hi3516-setting.md) - - [运行Hello OHOS(编译、烧录)](quickstart-lite-steps-hi3516-running.md) - - [驱动开发示例](quickstart-lite-steps-hi3516-program.md) - - [常见问题](quickstart-lite-steps-hi3516-faqs.md) - - [Hi3518开发板](quickstart-lite-steps-hi3518.md) - - [安装开发板环境](quickstart-lite-steps-hi3518-setting.md) - - [运行Hello OHOS(编译、烧录)](quickstart-lite-steps-hi3518-running.md) - - [常见问题](quickstart-lite-steps-hi3518-faqs.md) -- [标准系统入门](quickstart-standard.md) - - [入门介绍](quickstart-standard-overview.md) - - [搭建Windows开发环境](quickstart-standard-windows-environment.md) - - [搭建Ubuntu环境\(获取源码及编译,Docker方式\)](quickstart-standard-docker-environment.md) - - [搭建Ubuntu环境\(获取源码及编译,安装包方式\)](quickstart-standard-package-environment.md) - - [镜像烧录](quickstart-standard-burn.md) - - [镜像运行](quickstart-standard-running.md) - - [常见问题](quickstart-standard-faqs.md) \ No newline at end of file +- [轻量和小型系统入门](quickstart-lite.md) + - [轻量与小型系统入门概述](quickstart-lite-overview.md) + - [搭建轻量与小型系统环境](quickstart-lite-env-setup.md) + - [搭建系统环境概述](quickstart-lite-env-setup-overview.md) + - [开发环境准备](quickstart-lite-env-prepare.md) + - [获取源码](quickstart-lite-sourcecode-acquire.md) + - [使用安装包方式搭建编译环境](quickstart-lite-package-environment.md) + - [使用Docker方式搭建编译环境](quickstart-lite-docker-environment.md) + - [常见问题](quickstart-lite-env-setup-faqs.md) + + - [运行“Hello World”](quickstart-lite-steps.md) + - [Hi3861开发板](quickstart-lite-steps-hi3861.md) + - [安装开发板环境](quickstart-lite-steps-hi3861-setting.md) + - [新建应用程序](quickstart-lite-steps-hi3861-application-framework.md) + - [编译](quickstart-lite-steps-hi3861-building.md) + - [烧录](quickstart-lite-steps-hi3861-burn.md) + - [调试验证](quickstart-lite-steps-hi3861-debug.md) + - [运行](quickstart-lite-steps-hi3816-running.md) + - [常见问题](quickstart-lite-steps-hi3861-faqs.md) + + - [Hi3516开发板](quickstart-lite-steps-hi3516.md) + - [安装开发板环境](quickstart-lite-steps-hi3516-setting.md) + - [新建应用程序](quickstart-lite-steps-hi3516-application-framework.md) + - [编译](quickstart-lite-steps-hi3516-building.md) + - [烧录](quickstart-lite-steps-hi3516-burn.md) + - [运行](quickstart-lite-steps-hi3516-running.md) + - [常见问题](quickstart-lite-steps-hi3516-faqs.md) + + - [Hi3518开发板](quickstart-lite-steps-hi3518.md) + - [安装开发板环境](quickstart-lite-steps-hi3518-setting.md) + - [新建应用程序](quickstart-lite-steps-hi3518-application-framework.md) + - [编译](quickstart-lite-steps-hi3518-building.md) + - [烧录](quickstart-lite-steps-hi3518-burn.md) + - [运行](quickstart-lite-steps-hi3518-running.md) + - [常见问题](quickstart-lite-steps-hi3518-faqs.md) + + - [附录](quickstart-lite-introduction.md) + - [Hi3861开发板介绍](quickstart-lite-introduction-hi3861.md) + - [Hi3516开发板介绍](quickstart-lite-introduction-hi3516.md) + - [Hi3518开发板介绍](quickstart-lite-introduction-hi3518.md) + +- [标准系统入门](quickstart-standard.md) + - [标准系统入门简介](quickstart-standard-overview.md) + - [标准系统开发环境准备(仅Hi3516需要)](quickstart-standard-env-setup.md) + - [获取源码](quickstart-standard-sourcecode-acquire.md) + - [运行“Hello World”](quickstart-standard-running.md) + - [Hi3516开发板](quickstart-standard-running-hi3516.md) + - [创建应用程序](quickstart-standard-running-hi3516-create.md) + - [编译](quickstart-standard-running-hi3516-build.md) + - [烧录](quickstart-standard-running-hi3516-burn.md) + - [运行](quickstart-standard-running-hi3516-run.md) + + - [RK3568开发板](quickstart-standard-running-rk3568.md) + - [创建应用程序](quickstart-standard-running-rk3568-create.md) + - [编译](quickstart-standard-running-rk3568-build.md) + - [烧录](quickstart-standard-running-rk3568-burn.md) + - [运行](quickstart-standard-running-rk3568-run.md) + + - [常见问题](quickstart-standard-faqs.md) + - [附录](quickstart-standard-appendix.md) + - [Hi3516开发板介绍](quickstart-standard-appendix-hi3516.md) + - [RK3568开发板介绍](quickstart-standard-appendix-rk3568.md) \ No newline at end of file diff --git a/zh-cn/device-dev/quick-start/figures/1-11.png b/zh-cn/device-dev/quick-start/figures/1-11.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed1535a6bc23dc5bd02fbd5a3f1392f46ad8d83 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/1-11.png differ diff --git "a/zh-cn/device-dev/quick-start/figures/IDE\347\273\210\347\253\257\345\267\245\345\205\267\346\211\223\345\274\200\346\226\271\346\263\225.png" b/zh-cn/device-dev/quick-start/figures/1.png old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/IDE\347\273\210\347\253\257\345\267\245\345\205\267\346\211\223\345\274\200\346\226\271\346\263\225.png" rename to zh-cn/device-dev/quick-start/figures/1.png diff --git a/zh-cn/device-dev/quick-start/figures/download-zlib.png b/zh-cn/device-dev/quick-start/figures/10.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/download-zlib.png rename to zh-cn/device-dev/quick-start/figures/10.png diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-deveco-device-tool-logo.png b/zh-cn/device-dev/quick-start/figures/2021-01-27_170334-10.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-deveco-device-tool-logo.png rename to zh-cn/device-dev/quick-start/figures/2021-01-27_170334-10.png diff --git "a/zh-cn/device-dev/quick-start/figures/\347\274\226\350\257\221\346\226\207\344\273\266\345\255\230\346\224\276\347\233\256\345\275\225\347\244\272\346\204\217\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/3-0.png old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\347\274\226\350\257\221\346\226\207\344\273\266\345\255\230\346\224\276\347\233\256\345\275\225\347\244\272\346\204\217\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/3-0.png diff --git "a/zh-cn/device-dev/quick-start/figures/\345\234\250\347\273\210\347\253\257\347\225\214\351\235\242\351\200\211\346\213\251\347\233\256\346\240\207\346\236\204\345\273\272\347\211\210\346\234\254\347\244\272\346\204\217\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/3.png old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\345\234\250\347\273\210\347\253\257\347\225\214\351\235\242\351\200\211\346\213\251\347\233\256\346\240\207\346\236\204\345\273\272\347\211\210\346\234\254\347\244\272\346\204\217\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/3.png diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3516\345\215\225\346\235\277\346\255\243\351\235\242\345\244\226\350\247\202\345\233\276-0.png" "b/zh-cn/device-dev/quick-start/figures/3516\346\255\243\351\235\242.png" old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/Hi3516\345\215\225\346\235\277\346\255\243\351\235\242\345\244\226\350\247\202\345\233\276-0.png" rename to "zh-cn/device-dev/quick-start/figures/3516\346\255\243\351\235\242.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\345\234\250\347\273\210\347\253\257\347\225\214\351\235\242\346\211\247\350\241\214\347\274\226\350\257\221\345\221\275\344\273\244\347\244\272\346\204\217\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/4.png old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\345\234\250\347\273\210\347\253\257\347\225\214\351\235\242\346\211\247\350\241\214\347\274\226\350\257\221\345\221\275\344\273\244\347\244\272\346\204\217\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/4.png diff --git "a/zh-cn/device-dev/quick-start/figures/\347\274\226\350\257\221\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/5.png old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\347\274\226\350\257\221\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/5.png diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3516\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3516\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" deleted file mode 100755 index fcc5050822e05cfb73bd887aa61cd7d4a60ac5ad..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3516\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" "b/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" new file mode 100644 index 0000000000000000000000000000000000000000..edb1711f3c1fa906940d8cbb8d8fcdeb2badd2b6 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" "b/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" deleted file mode 100755 index 11b1a4e59f83b7ee80b38bf25b0790a830c4ab92..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3516\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3518\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3518\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" deleted file mode 100644 index b5dfc506b818515555959aa29a297185d816ff0b..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3518\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3518EV300\345\215\225\346\235\277\350\203\214\351\235\242\345\244\226\350\247\202\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3518\346\255\243\350\203\214\351\235\242.png" old mode 100755 new mode 100644 similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/Hi3518EV300\345\215\225\346\235\277\350\203\214\351\235\242\345\244\226\350\247\202\345\233\276.png" rename to "zh-cn/device-dev/quick-start/figures/Hi3518\346\255\243\350\203\214\351\235\242.png" diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" "b/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" new file mode 100644 index 0000000000000000000000000000000000000000..ffdeca24f4b017d7a35fc96999d04faaa09972e5 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" "b/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" deleted file mode 100644 index be9e1743f8664bd064e3b0c556f31ca5cc963464..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3518\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861-WLAN\346\250\241\347\273\204\345\244\226\350\247\202\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3861-WLAN\346\250\241\347\273\204\345\244\226\350\247\202\345\233\276.png" deleted file mode 100755 index d31d10941a55cd6053d0742c39b291d33aa27c70..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3861-WLAN\346\250\241\347\273\204\345\244\226\350\247\202\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\346\235\277\345\244\226\350\247\202\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\346\235\277\345\244\226\350\247\202\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..5086d2b4518cfea4040f3cc243abb2e6087af350 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\346\235\277\345\244\226\350\247\202\345\233\276.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" deleted file mode 100755 index 22717eff5b2344229a230d2d4fb1aa7f0dd489bb..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/Hi3861\345\274\200\345\217\221\347\241\254\344\273\266\350\277\236\347\272\277\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" "b/zh-cn/device-dev/quick-start/figures/Hi3861\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" new file mode 100644 index 0000000000000000000000000000000000000000..9e53432ce41e67ee3e93e96d78262a6ace41d383 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/Hi3861\347\274\226\350\257\221\350\256\276\347\275\256\345\233\276\344\276\213-Docker\346\226\271\345\274\217.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\346\255\243\351\235\242.png" "b/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\346\255\243\351\235\242.png" new file mode 100644 index 0000000000000000000000000000000000000000..fbd3cb48f2cb35c02595be0293733644e16020bd Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\346\255\243\351\235\242.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\350\203\214\351\235\242.png" "b/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\350\203\214\351\235\242.png" new file mode 100644 index 0000000000000000000000000000000000000000..8baa9c7c75625c18979d30ab52b2a0f64e0e8349 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/RK3568\345\274\200\345\217\221\346\235\277\350\203\214\351\235\242.png" differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap22.png b/zh-cn/device-dev/quick-start/figures/Snap22.png new file mode 100644 index 0000000000000000000000000000000000000000..d94579cb7ff78a40cef6cf5d1945e742a9551e8b Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/Snap22.png differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap23.png b/zh-cn/device-dev/quick-start/figures/Snap23.png new file mode 100644 index 0000000000000000000000000000000000000000..92e51762a2dcd636135f6e7856073a5b8aecd1d6 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/Snap23.png differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap24.png b/zh-cn/device-dev/quick-start/figures/Snap24.png new file mode 100644 index 0000000000000000000000000000000000000000..d4996e347660921fc3f723e5b48942f1fd6636f5 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/Snap24.png differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap28.png b/zh-cn/device-dev/quick-start/figures/Snap28.png deleted file mode 100644 index 2dcc6878e24dc6aa415fcbea24a8c4878aad5242..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/Snap28.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap33.png b/zh-cn/device-dev/quick-start/figures/Snap33.png deleted file mode 100644 index 70f46e087ef79162f9cbeeb6d524b3499a744c28..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/Snap33.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap34.png b/zh-cn/device-dev/quick-start/figures/Snap34.png deleted file mode 100644 index a0c66f66fa6e77e545cc6ac3db2d6cf10f646387..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/Snap34.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/Snap8.png b/zh-cn/device-dev/quick-start/figures/Snap8.png deleted file mode 100644 index 157f5e2d0f5b33f998560f7e85efb49d6786786c..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/Snap8.png and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/WLAN\345\244\215\344\275\215\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/WLAN\345\244\215\344\275\215\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" deleted file mode 100755 index 9d3bdbfe1eac9dc532496a7785e8caf99c41780b..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/WLAN\345\244\215\344\275\215\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/WLAN\346\250\241\347\273\204\350\201\224\347\275\221\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/WLAN\346\250\241\347\273\204\350\201\224\347\275\221\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" deleted file mode 100755 index ebf4f8eba03720edddfb9ef8eb38bd5f71126f2a..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/WLAN\346\250\241\347\273\204\350\201\224\347\275\221\346\210\220\345\212\237\347\244\272\346\204\217\345\233\276.png" and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/changjian1-4.png b/zh-cn/device-dev/quick-start/figures/changjian1-4.png new file mode 100644 index 0000000000000000000000000000000000000000..208a4fbace342514f59f0000c4d50f5dc9321f0f Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/changjian1-4.png differ diff --git a/zh-cn/device-dev/quick-start/figures/changjian1.png b/zh-cn/device-dev/quick-start/figures/changjian1.png new file mode 100644 index 0000000000000000000000000000000000000000..208a4fbace342514f59f0000c4d50f5dc9321f0f Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/changjian1.png differ diff --git a/zh-cn/device-dev/quick-start/figures/erase-u-Boot.png b/zh-cn/device-dev/quick-start/figures/erase-u-Boot.png deleted file mode 100644 index 7d6dc91c5762822a67a439fe9cf26c8650c4a469..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/erase-u-Boot.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-deveco-device-tool-setting.png b/zh-cn/device-dev/quick-start/figures/hi3516-deveco-device-tool-setting.png deleted file mode 100644 index 937a17d71744d81d509543594b094939e8a89070..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3516-deveco-device-tool-setting.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-import-projects.png b/zh-cn/device-dev/quick-start/figures/hi3516-import-projects.png new file mode 100644 index 0000000000000000000000000000000000000000..6c575b3495a0503e463a71f2b50766bc2f3e1b94 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/hi3516-import-projects.png differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-upload-options.png b/zh-cn/device-dev/quick-start/figures/hi3516-upload-options.png deleted file mode 100644 index 7d9768119778aeee7d0b927879c0da2bcdc4821a..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3516-upload-options.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-burning-succeeded.png b/zh-cn/device-dev/quick-start/figures/hi3518-burning-succeeded.png deleted file mode 100755 index 42b7ef6678b4415c855cd93ddff6936a807b42b8..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3518-burning-succeeded.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-logo.png b/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-logo.png deleted file mode 100644 index 5b573a4ddfe89fe25cb1b567736823244fdb9e97..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-logo.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-setting.png b/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-setting.png deleted file mode 100644 index a7cdfed371fa65d05faec7651d89145ad5a24a96..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3518-deveco-device-tool-setting.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-import-projects.png b/zh-cn/device-dev/quick-start/figures/hi3518-import-projects.png new file mode 100644 index 0000000000000000000000000000000000000000..d54cd737e32311492dc2058251e7cb8acf905fb5 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/hi3518-import-projects.png differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-record-the-serial-port-number.png b/zh-cn/device-dev/quick-start/figures/hi3518-record-the-serial-port-number.png deleted file mode 100755 index 09f33e3992c0c1d78713eea949e4b9a19f5802ec..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3518-record-the-serial-port-number.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-restart-the-development-board.png b/zh-cn/device-dev/quick-start/figures/hi3518-restart-the-development-board.png deleted file mode 100755 index a277db68618d87bb7f95565eb890760405d654e2..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3518-restart-the-development-board.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3861-burning-succeeded.png b/zh-cn/device-dev/quick-start/figures/hi3861-burning-succeeded.png old mode 100755 new mode 100644 diff --git a/zh-cn/device-dev/quick-start/figures/hi3861-deveco-device-tool-setting.png b/zh-cn/device-dev/quick-start/figures/hi3861-deveco-device-tool-setting.png deleted file mode 100644 index 512ee4ff2e053da12259a2f9d3163df75cb41a52..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3861-deveco-device-tool-setting.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3861-import-projects.png b/zh-cn/device-dev/quick-start/figures/hi3861-import-projects.png new file mode 100644 index 0000000000000000000000000000000000000000..6eaa9eb2450ef15e7124df610712fc797c548351 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/hi3861-import-projects.png differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3861-record-the-serial-port-number.png b/zh-cn/device-dev/quick-start/figures/hi3861-record-the-serial-port-number.png old mode 100755 new mode 100644 diff --git a/zh-cn/device-dev/quick-start/figures/hi3861-restart-the-development-board.png b/zh-cn/device-dev/quick-start/figures/hi3861-restart-the-development-board.png deleted file mode 100755 index e6b632288105421a07bd4f8d542293deb0d35fd2..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/hi3861-restart-the-development-board.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/import-project-confirm.png b/zh-cn/device-dev/quick-start/figures/import-project-confirm.png new file mode 100644 index 0000000000000000000000000000000000000000..27fe1d133a31b275a2788cab1f5b37dd3450a7df Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/import-project-confirm.png differ diff --git a/zh-cn/device-dev/quick-start/figures/import-project.png b/zh-cn/device-dev/quick-start/figures/import-project.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba534eaf39165891a31c7837ae7ff4126f6414c Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/import-project.png differ diff --git a/zh-cn/device-dev/quick-start/figures/ip-address-information-2.png b/zh-cn/device-dev/quick-start/figures/ip-address-information-2.png deleted file mode 100644 index 72dd05e3ae1eb91156df98cb1915b6264b3bbe5a..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/ip-address-information-2.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/options.png b/zh-cn/device-dev/quick-start/figures/options.png deleted file mode 100644 index 0bf756d8a9fea4865c8b65b7dadc4463e2346ab7..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/options.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-record-the-serial-port-number.png b/zh-cn/device-dev/quick-start/figures/record-the-serial-port-number.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-record-the-serial-port-number.png rename to zh-cn/device-dev/quick-start/figures/record-the-serial-port-number.png diff --git a/zh-cn/device-dev/quick-start/figures/rk3568-helloworld.png b/zh-cn/device-dev/quick-start/figures/rk3568-helloworld.png new file mode 100644 index 0000000000000000000000000000000000000000..da22f3989b1daa362c7471789cdaa94ffb862f75 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/rk3568-helloworld.png differ diff --git a/zh-cn/device-dev/quick-start/figures/rk3568-run-configuration.png b/zh-cn/device-dev/quick-start/figures/rk3568-run-configuration.png new file mode 100644 index 0000000000000000000000000000000000000000..504da23ba456a9c377525e22c4630361286b5dd7 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/rk3568-run-configuration.png differ diff --git a/zh-cn/device-dev/quick-start/figures/serial-port-entry.png b/zh-cn/device-dev/quick-start/figures/serial-port-entry.png deleted file mode 100755 index 43496f076a463ec6fbf320b358a32505284ff40f..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/serial-port-entry.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001172030062.png b/zh-cn/device-dev/quick-start/figures/setenv-bootargs.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001172030062.png rename to zh-cn/device-dev/quick-start/figures/setenv-bootargs.png diff --git a/zh-cn/device-dev/quick-start/figures/terminal-list.png b/zh-cn/device-dev/quick-start/figures/terminal-list.png deleted file mode 100644 index a680547b305cccb4d8ea6cae3cbf2d046b841ff8..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/terminal-list.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/u-boot-erased-successfully.png b/zh-cn/device-dev/quick-start/figures/u-boot-erased-successfully.png deleted file mode 100755 index 7a35899cc5cebff68372d97bb76906b6e90b3ba7..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/u-boot-erased-successfully.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/upload-options-1.png b/zh-cn/device-dev/quick-start/figures/upload-options-1.png deleted file mode 100644 index bfb378217e99536cf076deecfb0f0677cb51eef8..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/upload-options-1.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/upload-options.png b/zh-cn/device-dev/quick-start/figures/upload-options.png deleted file mode 100644 index 0b0d0cf88b9a78e6beea45e74b7633fa8c3ce523..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/upload-options.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001073838982.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001073838982.png new file mode 100644 index 0000000000000000000000000000000000000000..0bbff7eb0b5ab322e8995acf2b86d93038c8530c Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001073838982.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001074287476.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001074287476.png new file mode 100644 index 0000000000000000000000000000000000000000..29a273e5115ffd7a0724cde58215ffb79827576c Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001074287476.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001075566984.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001075566984.png new file mode 100644 index 0000000000000000000000000000000000000000..dee491aaa290b425a4a6cd9e4aee61b3b05cc3dc Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001075566984.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001113969536.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001113969536.png new file mode 100644 index 0000000000000000000000000000000000000000..baac7b26450b8bc195a0db0bb3bb41119c0d9828 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001113969536.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001114129426.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001114129426.png new file mode 100644 index 0000000000000000000000000000000000000000..c5548cb227bd024b49aa3adba0a20869581448e8 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001114129426.png differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-upload.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001117329380.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-upload.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001117329380.png diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001160649343.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001160649343.png new file mode 100644 index 0000000000000000000000000000000000000000..67d8044b72056d4ed6230ccc4ad99d5e954596b6 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001160649343.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001163045527.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001163045527.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ac531b8265f265e2bd25518b212143fc61e4cf Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001163045527.png differ diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861\345\272\225\346\235\277\345\244\226\350\247\202\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455564.png similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/Hi3861\345\272\225\346\235\277\345\244\226\350\247\202\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455564.png diff --git "a/zh-cn/device-dev/quick-start/figures/Hi3861\345\212\237\350\203\275\346\241\206\345\233\276.png" b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455566.png similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/Hi3861\345\212\237\350\203\275\346\241\206\345\233\276.png" rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455566.png diff --git a/zh-cn/device-dev/quick-start/figures/download-ecdsa.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455574.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/download-ecdsa.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171455574.png diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-reason-no-python-soft-link.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171615534.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-reason-no-python-soft-link.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171615534.png diff --git a/zh-cn/device-dev/quick-start/figures/Download-the-source-code.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171615542.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/Download-the-source-code.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171615542.png diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-error-for-not-finding-python.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171774086.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-error-for-not-finding-python.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171774086.png diff --git a/zh-cn/device-dev/quick-start/figures/reason-for-not-finding-python.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171774098.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/reason-for-not-finding-python.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171774098.png diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-solution-set-python-soft-link.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171934032.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-solution-set-python-soft-link.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001171934032.png diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001174595590.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001174595590.png new file mode 100644 index 0000000000000000000000000000000000000000..84d42fffbd87d0e719c69b6deda9e6c5e2b2db13 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001174595590.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177301516.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177301516.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc2bbf53d65b0c66f07b330aa8881c5194328bd Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177301516.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177474882.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177474882.png new file mode 100644 index 0000000000000000000000000000000000000000..68b1730cb6d1b91b6e364c7301d6dcc4c9976ec7 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177474882.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177478136.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177478136.png new file mode 100644 index 0000000000000000000000000000000000000000..fcaf25e47e2e47ecad8aebe463aeccdf1d8bf85e Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177478136.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177480146.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177480146.png new file mode 100644 index 0000000000000000000000000000000000000000..99ed8317b5cee8e5e9d460ff31d5c8a1a2fe343e Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177480146.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177608370.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177608370.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba77b7feaca23043e71171824cdead7c4f8f108 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177608370.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177798424.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177798424.png new file mode 100644 index 0000000000000000000000000000000000000000..c93b7b610138e91c0b6b171cb515f540163e731b Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001177798424.png differ diff --git a/zh-cn/device-dev/quick-start/figures/WadRecvCB-function.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001185334336.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/WadRecvCB-function.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001185334336.png diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001193533352.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001193533352.png new file mode 100644 index 0000000000000000000000000000000000000000..da22f3989b1daa362c7471789cdaa94ffb862f75 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001193533352.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194078294.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194078294.png new file mode 100644 index 0000000000000000000000000000000000000000..35a95f501f5e3c5c8ebf187e7f29e6af0a4566b0 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194078294.png differ diff --git "a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634 - \345\211\257\346\234\254.png" "b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634 - \345\211\257\346\234\254.png" new file mode 100644 index 0000000000000000000000000000000000000000..9f418473587db76e56981c0f384bf4b8634e3911 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634 - \345\211\257\346\234\254.png" differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634.png new file mode 100644 index 0000000000000000000000000000000000000000..9f418473587db76e56981c0f384bf4b8634e3911 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001194668634.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001215342695.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001215342695.png deleted file mode 100644 index fb2db198cc61ed10136f0e3382deed352300a62b..0000000000000000000000000000000000000000 Binary files a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001215342695.png and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/login-serial-port.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216535397.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/login-serial-port.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216535397.png diff --git a/zh-cn/device-dev/quick-start/figures/solution-add-soft-link.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216535401.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/solution-add-soft-link.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216535401.png diff --git a/zh-cn/device-dev/quick-start/figures/symptom-for-not-finding-python.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216693913.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/symptom-for-not-finding-python.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216693913.png diff --git a/zh-cn/device-dev/quick-start/figures/solution.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216693915.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/solution.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001216693915.png diff --git a/zh-cn/device-dev/quick-start/figures/reason-no-python-soft-link.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001217013865.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/reason-no-python-soft-link.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001217013865.png diff --git a/zh-cn/device-dev/quick-start/figures/download-six.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001217013871.png similarity index 100% rename from zh-cn/device-dev/quick-start/figures/download-six.png rename to zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001217013871.png diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222781271.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222781271.png new file mode 100644 index 0000000000000000000000000000000000000000..8d396bf2fc7b36362a95c6719d202b2f057e4a46 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222781271.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222794413.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222794413.png new file mode 100644 index 0000000000000000000000000000000000000000..764643ce134811551984284ed5ec6b60943f8ea4 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222794413.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222969587.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222969587.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba77b7feaca23043e71171824cdead7c4f8f108 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222969587.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222981447.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222981447.png new file mode 100644 index 0000000000000000000000000000000000000000..6c862cc279d2936ddec4ecda0a23e1d55a63cbee Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222981447.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222994321.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222994321.png new file mode 100644 index 0000000000000000000000000000000000000000..07914f4f34921b06819ceb49cf63366dcc7f8502 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222994321.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222997983.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222997983.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d98bd6deb22fc7814a42630b8565d9b5979659 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222997983.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222999125.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222999125.png new file mode 100644 index 0000000000000000000000000000000000000000..5a709092da504fbb090ad8d44938e435712bc0eb Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001222999125.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223000051.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223000051.png new file mode 100644 index 0000000000000000000000000000000000000000..6117c80b45f64348ad307e64723495cdc8c45cb1 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223000051.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223185957.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223185957.png new file mode 100644 index 0000000000000000000000000000000000000000..764643ce134811551984284ed5ec6b60943f8ea4 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001223185957.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001238878219.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001238878219.png new file mode 100644 index 0000000000000000000000000000000000000000..579d6e190d4824cb866f90f2f3e72c4493aa6f4c Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001238878219.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239226427.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239226427.png new file mode 100644 index 0000000000000000000000000000000000000000..c1682cf47759f73fb37d266140789c0d75d9d8d2 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239226427.png differ diff --git a/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239348791.png b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239348791.png new file mode 100644 index 0000000000000000000000000000000000000000..c6507f28b980b84c65102aa844e93f806cb490a9 Binary files /dev/null and b/zh-cn/device-dev/quick-start/figures/zh-cn_image_0000001239348791.png differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-allowing-the-visual-studio-code-application-to-access-the-network.png "b/zh-cn/device-dev/quick-start/figures/\345\205\201\350\256\270Visual-Studio-Code\345\272\224\347\224\250\350\256\277\351\227\256\347\275\221\347\273\234-9.png" old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-allowing-the-visual-studio-code-application-to-access-the-network.png rename to "zh-cn/device-dev/quick-start/figures/\345\205\201\350\256\270Visual-Studio-Code\345\272\224\347\224\250\350\256\277\351\227\256\347\275\221\347\273\234-9.png" diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-allowing-the-visual-studio-code-application-to-access-the-network.png "b/zh-cn/device-dev/quick-start/figures/\345\205\201\350\256\270Visual-Studio-Code\345\272\224\347\224\250\350\256\277\351\227\256\347\275\221\347\273\234.png" similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-allowing-the-visual-studio-code-application-to-access-the-network.png rename to "zh-cn/device-dev/quick-start/figures/\345\205\201\350\256\270Visual-Studio-Code\345\272\224\347\224\250\350\256\277\351\227\256\347\275\221\347\273\234.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257-3.png" "b/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257-3.png" new file mode 100644 index 0000000000000000000000000000000000000000..0c1f60638087d0fe56127f2f842244355afad85f Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257-3.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257.png" "b/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257.png" new file mode 100644 index 0000000000000000000000000000000000000000..0c1f60638087d0fe56127f2f842244355afad85f Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\345\205\263\351\227\255\344\270\262\345\217\243\347\273\210\347\253\257.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\345\220\257\345\212\250\345\271\266\346\210\220\345\212\237\346\211\247\350\241\214\345\272\224\347\224\250\347\250\213\345\272\217\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\345\220\257\345\212\250\345\271\266\346\210\220\345\212\237\346\211\247\350\241\214\345\272\224\347\224\250\347\250\213\345\272\217\345\233\276.png" deleted file mode 100644 index 6a85551cd30c8c0576c138d86dc66ddf73dccb44..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\345\220\257\345\212\250\345\271\266\346\210\220\345\212\237\346\211\247\350\241\214\345\272\224\347\224\250\347\250\213\345\272\217\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200DevEco\344\270\262\345\217\243\347\273\210\347\253\257\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200DevEco\344\270\262\345\217\243\347\273\210\347\253\257\347\244\272\346\204\217\345\233\276.png" deleted file mode 100755 index 8c6ec0adb87f693519f0e3b00b3aa7053f3e23ae..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200DevEco\344\270\262\345\217\243\347\273\210\347\253\257\347\244\272\346\204\217\345\233\276.png" and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/Failed-to-open-the-serial-port.png "b/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200\344\270\262\345\217\243\345\244\261\350\264\245\345\233\276-1.png" old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/device-dev/quick-start/figures/Failed-to-open-the-serial-port.png rename to "zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200\344\270\262\345\217\243\345\244\261\350\264\245\345\233\276-1.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200\344\270\262\345\217\243\345\244\261\350\264\245\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200\344\270\262\345\217\243\345\244\261\350\264\245\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..0eee1bbff2e54816d6be05f7f3972a83f615884d Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\346\211\223\345\274\200\344\270\262\345\217\243\345\244\261\350\264\245\345\233\276.png" differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-selecting-the-visual-studio-code-application.png "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276Visual-Studio-Code\345\272\224\347\224\250\345\233\276-8.png" old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-selecting-the-visual-studio-code-application.png rename to "zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276Visual-Studio-Code\345\272\224\347\224\250\345\233\276-8.png" diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-selecting-the-visual-studio-code-application.png "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276Visual-Studio-Code\345\272\224\347\224\250\345\233\276.png" similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-selecting-the-visual-studio-code-application.png rename to "zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276Visual-Studio-Code\345\272\224\347\224\250\345\233\276.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257-2.png" "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257-2.png" new file mode 100644 index 0000000000000000000000000000000000000000..cfa0ceb21f5a11d459b93721f512309c9d6da2ac Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257-2.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257.png" "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257.png" new file mode 100644 index 0000000000000000000000000000000000000000..cfa0ceb21f5a11d459b93721f512309c9d6da2ac Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\346\237\245\346\211\276\346\230\257\345\220\246\345\255\230\345\234\250\345\215\240\347\224\250\344\270\262\345\217\243\347\232\204\347\273\210\347\253\257.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\216\257\345\242\203\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" "b/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\216\257\345\242\203\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" deleted file mode 100644 index 587b414d787f36de3494760e14313e0ff18f896b..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\216\257\345\242\203\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" "b/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..cb0aff9ea08110a305f663126f5e26f150f89344 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\346\240\207\345\207\206\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\345\233\276.png" deleted file mode 100755 index 105e9a83292ff333cafb813ecd6647dd256a9443..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\346\225\210\346\236\234\345\233\276.jpg" "b/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\346\225\210\346\236\234\345\233\276.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..31c5a26705cd1da6cf9cb6f3bb356994e4ecc22e Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\347\263\273\347\273\237\345\220\257\345\212\250\346\225\210\346\236\234\345\233\276.jpg" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\347\273\210\347\253\257\347\225\214\351\235\242\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\347\273\210\347\253\257\347\225\214\351\235\242\347\244\272\346\204\217\345\233\276.png" deleted file mode 100755 index 360114c797c42340cdeadcb566a7d90651cd12de..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\347\273\210\347\253\257\347\225\214\351\235\242\347\244\272\346\204\217\345\233\276.png" and /dev/null differ diff --git "a/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-Hi3516\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266.png" "b/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266\345\233\276-5.png" similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-Hi3516\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266.png" rename to "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266\345\233\276-5.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-Hi3518\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266.png" "b/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266\345\233\276.png" similarity index 100% rename from "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-Hi3518\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266.png" rename to "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\344\270\215\351\200\232-\345\215\225\346\235\277\346\227\240\346\263\225\350\216\267\345\217\226\346\226\207\344\273\266\345\233\276.png" diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-network-and-firewall-setting.png "b/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\351\230\262\347\201\253\345\242\231\350\256\276\347\275\256\345\233\276-6.png" old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-network-and-firewall-setting.png rename to "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\351\230\262\347\201\253\345\242\231\350\256\276\347\275\256\345\233\276-6.png" diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-network-and-firewall-setting.png "b/zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\351\230\262\347\201\253\345\242\231\350\256\276\347\275\256\345\233\276.png" similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-network-and-firewall-setting.png rename to "zh-cn/device-dev/quick-start/figures/\347\275\221\347\273\234\351\230\262\347\201\253\345\242\231\350\256\276\347\275\256\345\233\276.png" diff --git "a/zh-cn/device-dev/quick-start/figures/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" "b/zh-cn/device-dev/quick-start/figures/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..c453bf36bea44aad382c65cd18ea0d8abbead981 Binary files /dev/null and "b/zh-cn/device-dev/quick-start/figures/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\277\253\351\200\237\345\205\245\351\227\250\346\265\201\347\250\213.png" differ diff --git "a/zh-cn/device-dev/quick-start/figures/\350\277\236\346\216\245\344\270\262\345\217\243\345\233\276.png" "b/zh-cn/device-dev/quick-start/figures/\350\277\236\346\216\245\344\270\262\345\217\243\345\233\276.png" deleted file mode 100755 index 063a5ff561d4a29f48744c3133724eb6b45e8a47..0000000000000000000000000000000000000000 Binary files "a/zh-cn/device-dev/quick-start/figures/\350\277\236\346\216\245\344\270\262\345\217\243\345\233\276.png" and /dev/null differ diff --git a/zh-cn/device-dev/quick-start/figures/hi3516-firewall-and-network-protection.png "b/zh-cn/device-dev/quick-start/figures/\351\230\262\347\201\253\345\242\231\345\222\214\347\275\221\347\273\234\344\277\235\346\212\244\347\225\214\351\235\242\345\233\276-7.png" old mode 100755 new mode 100644 similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3516-firewall-and-network-protection.png rename to "zh-cn/device-dev/quick-start/figures/\351\230\262\347\201\253\345\242\231\345\222\214\347\275\221\347\273\234\344\277\235\346\212\244\347\225\214\351\235\242\345\233\276-7.png" diff --git a/zh-cn/device-dev/quick-start/figures/hi3518-firewall-and-network-protection.png "b/zh-cn/device-dev/quick-start/figures/\351\230\262\347\201\253\345\242\231\345\222\214\347\275\221\347\273\234\344\277\235\346\212\244\347\225\214\351\235\242\345\233\276.png" similarity index 100% rename from zh-cn/device-dev/quick-start/figures/hi3518-firewall-and-network-protection.png rename to "zh-cn/device-dev/quick-start/figures/\351\230\262\347\201\253\345\242\231\345\222\214\347\275\221\347\273\234\344\277\235\346\212\244\347\225\214\351\235\242\345\233\276.png" diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-docker-environment.md b/zh-cn/device-dev/quick-start/quickstart-lite-docker-environment.md new file mode 100644 index 0000000000000000000000000000000000000000..85474c3659acd7dfd0af2bd7d92b98e108750eee --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-docker-environment.md @@ -0,0 +1,60 @@ +# 使用Docker方式搭建编译环境 + +- [安装Docker](#section7337134183512) +- [获取Docker环境](#section15666113905015) + +使用安装包方式搭建Ubuntu编译环境步骤如下: + +1. 安装Docker +2. 获取Docker环境: + +想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)。 + +## 安装Docker + +- 请参考[官方指导](https://docs.docker.com/engine/install/)。 + +## 获取Docker环境 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>不同的源码版本要匹配使用对应版本的Docker环境,本文以Master主干代码为例进行说明。 + +OpenHarmony的Docker镜像托管在[HuaweiCloud SWR](https://console.huaweicloud.com/swr/?region=cn-south-1#/app/warehouse/warehouseMangeDetail/goldensir/openharmony-docker/openharmony-docker?type=ownImage)上。开发者可以通过该镜像在很大程度上简化编译前的环境配置。下文将介绍具体使用步骤。 + +**方式一:从HuaweiCloud SWR上直接获取Docker镜像进行构建:** + +1. 获取Docker镜像。 + + ``` + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 + ``` + +2. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。 + + ``` + docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 + ``` + + +**方式二:通过Dockerfile 构建本地Docker镜像进行构建:** + +1. 获取Dockerfile脚本文件,用来构建本地Docker镜像。 + + ``` + git clone https://gitee.com/openharmony/docs.git + ``` + +2. 进入Dockerfile代码目录路径执行Docker镜像构建命令。 + + ``` + cd docs/docker + ./build.sh + ``` + +3. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。 + + ``` + docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-prepare.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-prepare.md new file mode 100644 index 0000000000000000000000000000000000000000..e211b8ba3126aa456ab25efd42272f9d5019250d --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-env-prepare.md @@ -0,0 +1,73 @@ +# 开发环境准备 + +- [系统要求](#zh-cn_topic_0000001072959308_section1865184385215) +- [安装DevEco Device Tool](#zh-cn_topic_0000001072959308_section86587531620) + +DevEco Device Tool Ubuntu版本支持OpenHarmony源码开发、编译、烧录的一站式开发环境,因此,本章节为您介绍在Ubuntu环境下,如何搭建一套完整的可视化开发环境。 + +## 系统要求 + +- Ubuntu18及以上版本,内存推荐16 GB及以上。 +- 系统的用户名不能含有中文字符。 +- 只能使用普通用户角色搭建开发环境。 + +## 安装DevEco Device Tool + +DevEco Device Tool基于Visual Studio Code进行扩展,在Visual Studio Code上以插件方式运行,Visual Studio Code版本为1.60及以上。同时,DevEco Device Tool还依赖Python工具,并要求Python为3.8\~3.9版本。 + +在安装过程中,DevEco Device Tool会自动检查Visual Studio Code和Python,如果检测到Visual Studio Code、Python未安装或版本不符合要求,安装程序会自动安装Visual Studio Code和Python。 + +1. 将Ubuntu Shell环境修改为bash。 + 1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。 + + ``` + ls -l /bin/sh + ``` + + ![](figures/zh-cn_image_0000001194078294.png) + + 2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。 + + ``` + sudo dpkg-reconfigure dash + ``` + + ![](figures/zh-cn_image_0000001238878219.png) + +2. 下载[DevEco Device Tool 3.0 Beta2](https://device.harmonyos.com/cn/ide#download_beta)Linux版本,下载时,请先使用华为开发者帐号进行登录后下载。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)。 +3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。 + 1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.200.zip为软件包名称,请根据实际进行修改。 + + ``` + unzip devicetool-linux-tool-3.0.0.300.zip + ``` + + 2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。 + + ``` + chmod u+x devicetool-linux-tool-3.0.0.300.sh + ``` + +4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >安装过程中,会自动检查Visual Studio Code和Python是否安装,且版本符合要求,其中Visual Studio Code为1.60及以上版本,Python为3.8\~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。 + + ``` + sudo ./devicetool-linux-tool-3.0.0.300.sh -- --install-plugins + ``` + + 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 + + ![](figures/zh-cn_image_0000001239348791.png) + +5. 安装完成后,在Ubuntu左下角的![](figures/zh-cn_image_0000001075566984.png)中,启动Visual Studio Code。 +6. 启动Visual Studio Code,DevEco Device Tool运行依赖C/C++、CodeLLDB插件,请点击Visual Studio Code左侧的![](figures/button.png)按钮,分别搜索和安装C/C++、CodeLLDB插件。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果在插件市场安装C/C++和CodeLLDB插件不成功,可手动下载插件后进行安装,具体请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/documentation/guide/offline_plugin_install-0000001074376846)。 + + ![](figures/deveco-device-tool-install-sucessful.png) + +7. 重启Visual Studio Code,点击![](figures/zh-cn_image_0000001239226427.png)进入DevEco Device Tool工具界面。至此,DevEco Device Tool Ubuntu开发环境安装完成。![](figures/zh-cn_image_0000001194668634.png) + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-faqs.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-faqs.md index 5665c14e797bc9d171dee6a58b2f9d91c539d428..b7b3133f5378aa7f4cb4e054da1af675b559fa01 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-faqs.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-faqs.md @@ -1,12 +1,12 @@ -# 常见问题 +# 常见问题 -- [安装hb过程中,出现乱码、段错误](#section411894616119) -- [安装hb过程中,提示"cannot import 'sysconfig' from 'distutils'"](#section629417571626) -- [安装hb过程中,提示"module 'platform' has no attribute 'linux\_distribution'"](#section10871523332) -- [安装hb过程中,提示"Could not find a version that satisfies the requirement ohos-build"](#section47351657163213) +- [hb 安装过程中出现乱码、段错误](#section411894616119) +- [hb 安装过程中提示"cannot import 'sysconfig' from 'distutils'"](#section629417571626) +- [hb 安装过程中提示"module 'platform' has no attribute 'linux\_distribution'"](#section10871523332) +- [hb 安装过程中提示"Could not find a version that satisfies the requirement ohos-build"](#section47351657163213) - [Linux编译服务器终端输入不识别的命令时提示“ImportError: No module named apt\_pkg”](#section159891252236) -## 安装hb过程中,出现乱码、段错误 +## hb 安装过程中出现乱码、段错误 - **现象描述** @@ -26,11 +26,11 @@ ``` -## 安装hb过程中,提示"cannot import 'sysconfig' from 'distutils'" +## hb 安装过程中提示"cannot import 'sysconfig' from 'distutils'" - **现象描述** - 执行“python3 -m pip install --user ohos-build”提示"cannot import 'sysconfig' from 'distutils'"。 + 执行“python3 -m pip install --user ohos-build”提示"cannot import 'sysconfig' from 'distutils'" - **可能原因** @@ -46,11 +46,11 @@ ``` -## 安装hb过程中,提示"module 'platform' has no attribute 'linux\_distribution'" +## hb 安装过程中提示"module 'platform' has no attribute 'linux\_distribution'" - **现象描述** - 执行“python3 -m pip install --user ohos-build”提示"module 'platform' has no attribute 'linux\_distribution'"。 + 执行“python3 -m pip install --user ohos-build”提示"module 'platform' has no attribute 'linux\_distribution'" - **可能原因** @@ -68,7 +68,7 @@ ``` -## 安装hb过程中,提示"Could not find a version that satisfies the requirement ohos-build" +## hb 安装过程中提示"Could not find a version that satisfies the requirement ohos-build" - **现象描述** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-linux.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-linux.md deleted file mode 100644 index 26fd10b734ec0f7ee049778dc9ed3514e737cf01..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-linux.md +++ /dev/null @@ -1,259 +0,0 @@ -# 获取源码及Ubuntu编译环境准备 - -- [获取软件](#section1897711811517) -- [获取源码](#section1545225464016) -- [安装必要的库和工具](#section108201740181219) -- [安装Python3](#section1238412211211) -- [安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)](#section12202192215415) -- [安装hb](#section15794154618411) - - [前提条件](#section1083283711515) - - [安装方法](#section11518484814) - - [卸载方法](#section3512551574) - - -系统要求:Ubuntu16.04及以上64位系统版本。 - -编译环境搭建包含如下几步: - -1. 获取源码 -2. 安装必要的库和工具 -3. 安装python3 -4. 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\) -5. 安装hb - ->![](../public_sys-resources/icon-notice.gif) **须知:** ->- 针对Ubuntu编译环境我们提供了对应的Docker,该Docker封装了相关编译工具,选择使用Docker的开发者可跳过此章节。Docker使用可参考[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)。 ->- 通常系统默认安装samba、vim等常用软件,需要做适当适配以支持Linux服务器与Windows工作台之间的文件共享。 ->- 想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)。 - -## 获取软件 - -Linux服务器通用环境配置需要的工具及其获取途径如下表所示: - -**表 1** Linux服务器开发工具及获取途径 - - -

LTS版本源码

+

版本信息

+

下载站点

+

SHA256校验码

+

全量代码(标准、轻量和小型系统)

+

3.0

+

站点

+

SHA256校验码

+

标准系统解决方案(二进制)

+

3.0

+

站点

+

SHA256校验码

+

Hi3861解决方案(二进制)

+

3.0

+

站点

+

SHA256校验码

+

Hi3518解决方案(二进制)

+

3.0

+

站点

+

SHA256校验码

+

Hi3516解决方案-LiteOS(二进制)

+

3.0

+

站点

+

SHA256校验码

+

Hi3516解决方案-Linux(二进制)

+

3.0

+

站点

+

SHA256校验码

+

RELEASE-NOTES

版本信息

+

3.0

下载站点

+

站点

SHA256校验码

+

-

全量代码(标准、轻量和小型系统)

+

Master版本源码

3.0

+

版本信息

站点

+

下载站点

SHA256校验码

+

SHA256校验码

标准系统解决方案(二进制)

+

全量代码Beta版本(标准、轻量和小型系统)

3.0

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

Hi3861解决方案(二进制)

+

Hi3516标准系统解决方案(二进制)

3.0

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

Hi3518解决方案(二进制)

+

RK3568标准系统解决方案(二进制)

3.0

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

Hi3516解决方案-LiteOS(二进制)

+

Hi3861解决方案(二进制)

3.0

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

Hi3516解决方案-Linux(二进制)

+

Hi3516解决方案-LiteOS(二进制)

3.0

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

RELEASE-NOTES

+

Hi3516解决方案-Linux(二进制)

3.0

+

3.1 Beta

站点

+

站点

-

+

SHA256校验码

Master版本源码

+

标准系统包(Mac)

版本信息

+

3.1 Beta

下载站点

+

站点

SHA256校验码

+

SHA256校验码

Beta版本(标准系统)

+

标准系统包(Windows\Linux)

2.2 Beta2

+

3.1 Beta

站点

+

站点

SHA256校验码

+

SHA256校验码

RELEASE-NOTES

+

RELEASE-NOTES

2.2 Beta2

+

3.1 Beta

站点

+

站点

-

+

-

编译工具链

+

编译工具链

版本信息

+

版本信息

下载站点

+

下载站点

SHA256校验码

+

SHA256校验码

编译工具链获取清单

+

编译工具链获取清单

-

+

-

站点

+

站点

-

+

-

- - - - - - - - - - - - - - - - - - - - - - - - - -

开发工具

-

用途

-

获取途径

-

源码

-

功能开发

-

参考源码获取

-

必要的库和工具

-

编译所需的必要工具和库(如打包、镜像制作等)

-

通过互联网获取

-

Python3.7+

-

编译构建工具

-

通过互联网获取

-

LLVM(仅OpenHarmony_v1.x分支/标签需要)

-

编译工具链

-

通过互联网获取

-

hb

-

OpenHarmony编译构建命令行工具

-

通过互联网获取

-
- ->![](../public_sys-resources/icon-notice.gif) **须知:** ->- 如果后续通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gn、ninja编译工具。 ->- (推荐)如果后续通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gn、ninja、LLVM编译工具。安装gn、ninja、LLVM编译工具时,请确保编译工具的环境变量路径唯一。 - -## 获取源码 - -开发者需要在Linux服务器上下载并解压一套源代码,请参见[源码获取](../get-code/sourcecode-acquire.md)。 - -## 安装必要的库和工具 - -使用如下apt-get命令安装编译所需的必要的库和工具: - -``` -sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler -``` - -## 安装Python3 - -1. 打开Linux编译服务器终端。 -2. 输入如下命令,查看python版本号: - - ``` - python3 --version - ``` - - 如果低于python3.7版本,不建议直接升级,请按照如下步骤重新安装。以python3.8为例,按照以下步骤安装python。 - - 1. 运行如下命令,查看Ubuntu版本: - - ``` - cat /etc/issue - ``` - - 2. 根据Ubuntu不同版本,安装python。 - - 如果Ubuntu 版本为18+,运行如下命令。 - - ``` - sudo apt-get install python3.8 - ``` - - - 如果Ubuntu版本为16。 - - a. 安装依赖包 - - ``` - sudo apt update && sudo apt install software-properties-common - ``` - - b. 添加deadsnakes PPA 源,然后按回车键确认安装。 - - ``` - sudo add-apt-repository ppa:deadsnakes/ppa - ``` - - c. 安装python3.8 - - ``` - sudo apt upgrade && sudo apt install python3.8 - ``` - - -3. 设置python和python3软链接为python3.8。 - - ``` - sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 - sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 - ``` - -4. 安装并升级Python包管理工具(pip3),任选如下一种方式。 - - **命令行方式:** - - ``` - sudo apt-get install python3-setuptools python3-pip -y - sudo pip3 install --upgrade pip - ``` - - - **安装包方式:** - - ``` - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py - python get-pip.py - ``` - - - -## 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\) - ->![](../public_sys-resources/icon-notice.gif) **须知:** ->如果下载的源码为OpenHarmony\_v1.x分支/标签, 请按下面的步骤安装9.0.0版本的llvm。 ->如果下载的源码为Master及OpenHarmony\_v2.x分支/标签,可直接跳过本小节,hb会自动下载最新的llvm。 - -1. 打开Linux编译服务器终端。 -2. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)。 -3. 解压LLVM安装包至\~/llvm路径下。 - - ``` - tar -zxvf llvm.tar -C ~/ - ``` - -4. 设置环境变量。 - - ``` - vim ~/.bashrc - ``` - - 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 - - ``` - export PATH=~/llvm/bin:$PATH - ``` - -5. 生效环境变量。 - - ``` - source ~/.bashrc - ``` - - -## 安装hb - -### 前提条件 - -请先安装Python 3.7.4及以上版本,请见[安装Python3](#section1238412211211)。 - -### 安装方法 - -1. 运行如下命令安装hb - - ``` - python3 -m pip install --user ohos-build - ``` - -2. 设置环境变量 - - ``` - vim ~/.bashrc - ``` - - 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 - - ``` - export PATH=~/.local/bin:$PATH - ``` - - 执行如下命令更新环境变量。 - - ``` - source ~/.bashrc - ``` - -3. 执行"hb -h",有打印以下信息即表示安装成功: - - ``` - usage: hb - - OHOS build system - - positional arguments: - {build,set,env,clean} - build Build source code - set OHOS build settings - env Show OHOS build env - clean Clean output - - optional arguments: - -h, --help show this help message and exit - ``` - - -### 卸载方法 - -``` -python3 -m pip uninstall ohos-build -``` - ->![](../public_sys-resources/icon-notice.gif) **须知:** ->如果安装hb的过程中遇到问题,请参见下文[常见问题](quickstart-lite-env-setup-faqs.md)进行解决。 - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-overview.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-overview.md index 1ef79df37bfea75bd726e0a20b273f7b8c01fd80..6d4f19d180be977622c1c7e497d9dd869b2d0bd5 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-overview.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-overview.md @@ -1,10 +1,6 @@ -# 概述 +# 搭建系统环境概述 OpenHarmony可以使用DevEco Device Tool进行开发、编译、烧录、调测等。 -当前DevEco Device Tool发布了Windows和Ubuntu两个版本,本文以Windows版本进行相应开发介绍。 - -使用Ubuntu版本的开发者可参阅[操作指导](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905)。 - -当前Windows版本(除Hi3861外)尚不支持在Windows平台下编译,需要在Ubuntu平台下编译,下文将介绍如何搭建对应的OpenHarmony轻量和小型系统的开发环境和编译环境。 +当前DevEco Device Tool发布了Windows和Ubuntu两个版本,本文以Ubuntu版本进行相应开发介绍。 diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-windows.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-windows.md deleted file mode 100644 index 564de1e84ad8008b2453c7f484c09eab794d1750..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup-windows.md +++ /dev/null @@ -1,64 +0,0 @@ -# Windows开发环境准备 - -- [安装DevEco Device Tool](#zh-cn_topic_0000001058091994_section10761564496) - -系统要求: - -- Windows 10 64位系统。 -- 系统的用户名不能含有中文字符。 - -## 安装DevEco Device Tool - -DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,同时DevEco Device Tool运行依赖Python,Node.js和hpm工具。 - -DevEco Device Tool支持一体化安装,即DevEco Device Tool安装向导会检测系统是否安装Visual Studio Code、Python、Node.js、hpm的适配版本,当安装向导未检测到这些软件时,会给出相应的提示,根据提示勾选要自动安装的软件,安装向导会自动下载相应的软件进行安装。 - -安装DevEco Device Tool,**主机的用户名不能包含中文字符**,否则在运行DevEco Device Tool时,DevEco Home界面会一直处于Loading状态,导致不能正常使用 - -1. 获取软件,请使用华为开发者帐号登录[https://device.harmonyos.com/cn/ide\#download\_beta](https://device.harmonyos.com/cn/ide#download_beta),下载DevEco Device Tool V3.0 Beta1及以上版本。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)。 -2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。 -3. 设置DevEco Device Tool的安装路径,点击Next。 -4. 根据安装向导提示,勾选要自动安装的软件,点击Next。 - - ![](figures/Snap28.png) - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当安装向导检测到系统中已安装可兼容的Python版本,会提示用户可选择已安装的可兼容的Python版本,也可选择下载推荐的Python版本。 - -5. 在以下界面点击Next,进行软件下载和安装。 - - ![](figures/Snap8.png) - -6. 在弹出的Python安装向导中,勾选“**Add Python 3.8 to PATH**”,然后点击**Install Now**开始安装,等待安装完成后,点击**Close**。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装可兼容的Python版本,且用户选择了已安装的可兼容的Python版本,则Python安装向导不会弹出,用户不需要执行此步骤。 - >如果安装DevEco Device Tool 2.1 Release版本,Python版本只能为3.8.x版本,不能安装最新的Python3.9.x版本。如果安装DevEco Device Tool V3.0 Beta1及以上版本,Python版本只能为3.8.x或3.9.x版本。 - - ![](figures/Snap34.png) - -7. 在弹出的Visual Studio Code安装向导中,根据向导提示安装Visual Studio Code,安装过程中,请勾选“添加到PATH(重启后生效)”。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的Visual Studio Code版本,则Visual Studio Code安装向导不会弹出,用户不需要执行此步骤。 - - ![](figures/Snap33.png) - -8. 在弹出的Node.js安装向导中,全部按照默认设置点击**Next**,直至**Finish**。安装过程中,Node.js会自动在系统的path环境变量中配置node.exe的目录路径。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的Node.js版本,则Node.js安装向导不会弹出,用户不需要执行此步骤。 - -9. 等待DevEco Device Tool安装向导自动安装hpm和DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的hpm版本,则不会进行hpm软件的下载和安装。 - -10. 启动Visual Studio Code,会自动安装DevEco Device Tool依赖的C/C++、CodeLLDB插件。等待安装完成后,点击Visual Studio Code左侧的![](figures/button.png)按钮,检查INSTALLED中,是否已成功安装C/C++、CodeLLDB和DevEco Device Tool。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果C/C++和CodeLLDB插件安装不成功,则DevEco Device Tool不能正常运行,解决方法,详细请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/ide/user-guides/offline_plugin_install-0000001074376846)。 - - ![](figures/deveco-device-tool-install-sucessful.png) - - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup.md b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup.md index 4c8c54dd2c1757e43f82a87decbf9fe9efd46e7f..e0ec56568ea23d405647084fb006cc00327e3bb8 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-env-setup.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-env-setup.md @@ -1,10 +1,14 @@ -# 搭建系统环境 +# 搭建轻量与小型系统环境 -- **[概述](quickstart-lite-env-setup-overview.md)** +- **[搭建系统环境概述](quickstart-lite-env-setup-overview.md)** -- **[Windows开发环境准备](quickstart-lite-env-setup-windows.md)** +- **[开发环境准备](quickstart-lite-env-prepare.md)** -- **[获取源码及Ubuntu编译环境准备](quickstart-lite-env-setup-linux.md)** +- **[获取源码](quickstart-lite-sourcecode-acquire.md)** + +- **[使用安装包方式搭建编译环境](quickstart-lite-package-environment.md)** + +- **[使用Docker方式搭建编译环境](quickstart-lite-docker-environment.md)** - **[常见问题](quickstart-lite-env-setup-faqs.md)** diff --git a/zh-cn/device-dev/quick-start/oem_minitinier_des_3516.md b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md similarity index 86% rename from zh-cn/device-dev/quick-start/oem_minitinier_des_3516.md rename to zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md index 10f842db1d8a266364431bf8dc5adc9b9fa9781d..4627956c67b342391c73c14edb9fd226d4e2bcfe 100644 --- a/zh-cn/device-dev/quick-start/oem_minitinier_des_3516.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md @@ -1,4 +1,4 @@ -# Hi3516开发板介绍 +# Hi3516开发板介绍 - [简介](#section26131214194212) - [开发板规格](#section15192203316533) @@ -7,8 +7,10 @@ Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP\(Image Signal Processor\)、H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。 -**图 1** Hi3516单板正面外观图 -![](figures/Hi3516单板正面外观图.png "Hi3516单板正面外观图") +**图 1** Hi3516单板正面外观图 + + +![](figures/3516正面.png) ## 开发板规格 @@ -28,10 +30,10 @@ Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代I

外部器件

  • 以太网口
  • 音频视频
    • 1路语音输入
    • 1路单声道(AC_L)输出,接3W功放(LM4871)
    • MicroHDMI(1路HDMI 1.4)
    +
  • 以太网口
  • 音频视频
    • 1路语音输入
    • 1路单声道(AC_L)输出,接3W功放(LM4871)
    • MicroHDMI(1路HDMI 1.4)
  • 摄像头
    • 传感器IMX335
    • 镜头M12,焦距4mm,光圈1.8
  • 显示屏
    • LCD连接器(2.35寸)
    • LCD连接器(5.5寸)
    -
  • 外部器件及接口
    • SD卡接口
    • JTAG/I2S 接口
    • ADC接口
    • 舵机接口
    • Grove连接器
    • USB2.0(Type C)
    • 功能按键3个,2个用户自定义按键,1个升级按键
    • LED指示灯,绿灯,红灯
    +
  • 外部器件及接口
    • SD卡接口
    • JTAG/I2S 接口
    • ADC接口
    • 舵机接口
    • Grove连接器
    • USB2.0(Type C)
    • 功能按键3个,2个用户自定义按键,1个升级按键
    • LED指示灯,绿灯,红灯

规格类型

diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-introduction.md b/zh-cn/device-dev/quick-start/quickstart-lite-introduction.md index 52c8b8e3a4644bb604175dae097fac4a3c6b23b9..95c5c0fc921ec6ff41696685ae06ff340a5d7568 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-introduction.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-introduction.md @@ -1,9 +1,9 @@ -# 入门介绍 +# 附录 -- **[Hi3861开发板介绍](oem_minitinier_des_3861.md)** +- **[Hi3861开发板介绍](quickstart-lite-introduction-hi3861.md)** -- **[Hi3516开发板介绍](oem_minitinier_des_3516.md)** +- **[Hi3516开发板介绍](quickstart-lite-introduction-hi3516.md)** -- **[Hi3518开发板介绍](oem_minitinier_des_3518.md)** +- **[Hi3518开发板介绍](quickstart-lite-introduction-hi3518.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-overview.md b/zh-cn/device-dev/quick-start/quickstart-lite-overview.md index 32de2be933c176263c569c82662acf43a574ba93..1feb98128e79e121fe6403300d74196875695ff2 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-overview.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-overview.md @@ -1,6 +1,23 @@ -# 概述 +# 轻量与小型系统入门概述 -OpenHarmony轻量和小型系统适用于内存较小的IOT设备,本文选取了三款典型开发板:Hi3861 WLAN模组、Hi3516DV300、Hi3518EV300,并基于上述三款开发板进行开发介绍。 +OpenHarmony轻量和小型系统适用于内存较小的IOT设备。通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及运行“Hello World”等。 -通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建、编译、烧录、调测以及简单应用及驱动开发等。 +轻量和小型系统的开发有以下两种方法: + +- 用Windows环境进行开发和烧录,使用Linux环境进行编译。 +- 统一使用Linux环境进行开发、编译和烧录。 + +因目前Windows系统不支持编译,暂时无法全部使用Windows环境进行开发,开发者可根据使用习惯选择合适的开发方法。 + +本文将介绍第二种方法,下方所有操作均在Linux环境下进行。 + +本文选取了三款典型开发板:Hi3861 WLAN模组、Hi3516DV300、Hi3518EV300,并基于上述三款开发板进行开发介绍。开发板的具体外观和规格可参见[本文附录](quickstart-lite-introduction-hi3861.md#section19352114194115),开发者可根据需要自行购买的开发板。 + +轻量和小型系统快速入门流程如下图所示,其中搭建编译环境环节可根据实际情况选择Docker方式或安装包方式其中一种即可。 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>Docker环境已经封装了相关编译工具,开发者在使用该Docker环境时可以省去Ubuntu编译环境及开发板环境的的搭建操作。 + +**图 1** 轻量和小型系统快速入门流程 +![](figures/轻量和小型系统快速入门流程.png "轻量和小型系统快速入门流程") diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md b/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md new file mode 100644 index 0000000000000000000000000000000000000000..dfbbfd4a90a433d852b06b796937251f4ba9cb3f --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md @@ -0,0 +1,103 @@ +# 使用安装包方式搭建编译环境 + +- [安装必要的库和工具](#section108201740181219) +- [安装hb](#section15794154618411) +- [安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\)](#section711117144296) + +使用安装包方式搭建Ubuntu编译环境步骤如下: + +1. 安装必要的库和工具:编译所需的必要工具和库(如打包、镜像制作等) +2. 安装hb:OpenHarmony编译构建命令行工具 +3. 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\) + +想要详细了解OpenHarmony编译构建模块功能的开发者可参考[编译构建使用指南](../subsystems/subsys-build-mini-lite.md)。 + +## 安装必要的库和工具 + +使用如下apt-get命令安装编译所需的必要的库和工具: + +``` +sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler +``` + +## 安装hb + +1. 运行如下命令安装hb + + ``` + python3 -m pip install --user ohos-build + ``` + +2. 设置环境变量 + + ``` + vim ~/.bashrc + ``` + + 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 + + ``` + export PATH=~/.local/bin:$PATH + ``` + + 执行如下命令更新环境变量。 + + ``` + source ~/.bashrc + ``` + +3. 执行"hb -h",界面打印以下信息即表示安装成功: + + ``` + usage: hb + + OHOS build system + + positional arguments: + {build,set,env,clean} + build Build source code + set OHOS build settings + env Show OHOS build env + clean Clean output + + optional arguments: + -h, --help show this help message and exit + ``` + + +>![](../public_sys-resources/icon-notice.gif) **须知:** +>若安装hb的过程中遇到问题,请参见下文[常见问题](quickstart-lite-env-setup-faqs.md)进行解决。 + +## 安装LLVM\(仅OpenHarmony\_v1.x分支/标签需要\) + +>![](../public_sys-resources/icon-notice.gif) **须知:** +>如果下载的源码为OpenHarmony\_v1.x分支/标签, 请按下面的步骤安装9.0.0版本的llvm。 +>如果下载的源码为Master及非OpenHarmony\_v1.x分支/标签,可直接跳过本小节,hb会自动下载最新的llvm。 + +1. 打开Linux编译服务器终端。 +2. [下载LLVM工具](https://repo.huaweicloud.com/harmonyos/compiler/clang/9.0.0-36191/linux/llvm-linux-9.0.0-36191.tar)。 +3. 解压LLVM安装包至\~/llvm路径下。 + + ``` + tar -zxvf llvm.tar -C ~/ + ``` + +4. 设置环境变量。 + + ``` + vim ~/.bashrc + ``` + + 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 + + ``` + export PATH=~/llvm/bin:$PATH + ``` + +5. 生效环境变量。 + + ``` + source ~/.bashrc + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md b/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md new file mode 100644 index 0000000000000000000000000000000000000000..36c5fee703c5bf9c93f85a4a6bc228bf25a57f37 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md @@ -0,0 +1,54 @@ +# 获取源码 + +- [前提条件](#section21887149017) +- [操作步骤](#section349724435812) + +## 前提条件 + +1. 注册码云gitee账号。 +2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。 +3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。 + + ``` + git config --global user.name "yourname" + git config --global user.email "your-email-address" + git config --global credential.helper store + ``` + +4. 安装码云repo工具,可以执行如下命令。 + + ``` + curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中 + chmod a+x /usr/local/bin/repo + pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests + ``` + + +## 操作步骤 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>Master主干为开发分支,开发者可通过Master主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。 + +- **OpenHarmony主干代码获取** + + 方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 + + ``` + repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + + 方式二:通过repo + https下载。 + + ``` + repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + +- **OpenHarmony发布版本代码获取** + + OpenHarmony发布版本获取源码方式请参考[Release-Notes](../get-code/../../release-notes/Readme.md)。 + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-application-framework.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-application-framework.md new file mode 100644 index 0000000000000000000000000000000000000000..59780d7a7ce22fa96a79c1e8d258bfbb9681a598 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-application-framework.md @@ -0,0 +1,121 @@ +# 新建应用程序 + +下方将通过修改源码的方式展示如何编写简单程序,输出“Hello OHOS!”。请在[获取源码](quickstart-lite-sourcecode-acquire.md)章节下载的源码目录中进行下述操作。 + +1. 新建目录及源码。 + + 新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。 + + ``` + #include + + int main(int argc, char **argv) + { + printf("\n************************************************\n"); + printf("\n\t\tHello OHOS!\n"); + printf("\n************************************************\n\n"); + + return 0; + } + ``` + +2. 新建编译组织文件。 + + 新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示: + + ``` + import("//build/lite/config/component/lite_component.gni") + lite_component("hello-OHOS") { + features = [ ":helloworld" ] + } + executable("helloworld") { + output_name = "helloworld" + sources = [ "src/helloworld.c" ] + include_dirs = [] + defines = [] + cflags_c = [] + ldflags = [] + } + ``` + +3. 添加新组件。 + + 修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): + + ``` + { + "components": [ + { + "component": "camera_sample_communication", + "description": "Communication related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/communication" + ], + "targets": [ + "//applications/sample/camera/communication:sample" + ], + "rom": "", + "ram": "", + "output": [], + "adapted_kernel": [ "liteos_a" ], + "features": [], + "deps": { + "components": [], + "third_party": [] + } + }, + ##start## + { + "component": "hello_world_app", + "description": "Communication related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/apps" + ], + "targets": [ + "//applications/sample/camera/apps:hello-OHOS" + ], + "rom": "", + "ram": "", + "output": [], + "adapted_kernel": [ "liteos_a" ], + "features": [], + "deps": { + "components": [], + "third_party": [] + } + }, + ##end## + { + "component": "camera_sample_app", + "description": "Camera related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/launcher", + "applications/sample/camera/cameraApp", + "applications/sample/camera/setting", + "applications/sample/camera/gallery", + "applications/sample/camera/media" + ], + ``` + +4. 修改单板配置文件。 + + 修改文件**vendor/hisilicon/hispark\_taurus/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): + + ``` + { + "subsystem": "applications", + "components": [ + { "component": "camera_sample_app", "features":[] }, + { "component": "camera_sample_ai", "features":[] }, + ##start## + { "component": "hello_world_app", "features":[] }, + ##end## + { "component": "camera_screensaver_app", "features":[] } + ] + }, + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-building.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-building.md new file mode 100644 index 0000000000000000000000000000000000000000..c1fa7209c911e04aa113c238ff03d2eb5744fb7e --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-building.md @@ -0,0 +1,27 @@ +# 编译 + +下方将介绍如何使用Hi3516开发板进行编译。使用安装包方式与docker方式搭建Ubuntu编译环境,编译步骤相同。 + +1. 请进入源码根目录,执行如下命令进行编译: + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果使用Docker方式搭建编译环境,请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译。 + + ``` + hb set(设置编译路径) + .(选择当前路径) + 选择ipcamera_hispark_taurus并回车 + hb build -f(执行编译) + ``` + + **图 1** Hi3516编译设置图例-Docker方式 + ![](figures/Hi3516编译设置图例-Docker方式.png "Hi3516编译设置图例-Docker方式") + +2. 编译结束后,出现“ipcamera\_hispark\_taurus build success”字样,则证明构建成功。 + + >![](../public_sys-resources/icon-notice.gif) **须知:** + >烧录相关文件获取路径: + >结果文件:out/hispark\_taurus/ipcamera\_hispark\_taurus。 + >U-boot文件:device/hisilicon/hispark\_taurus/sdk\_liteos/uboot/out/boot/u-boot-hi3516dv300.bin。 + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-burn.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-burn.md new file mode 100644 index 0000000000000000000000000000000000000000..c82dcff59c899203aaf0425ddb93a0f93ead8631 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-burn.md @@ -0,0 +1,93 @@ +# 烧录 + +- [前提条件](#section762111572589) +- [使用网口烧录](#section12323175612487) + +烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 + +DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。 + +Hi3516开发板的代码烧录支持USB烧录、网口烧录和串口烧录三种方式。此处仅以网口烧录为例进行说明,其它方式请参考[Hi3516DV300开发板烧录](../toctopics/ide-hi3516-upload.md)。 + +## 前提条件 + +1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 + + ![](figures/import-project.png) + +2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**。 + + ![](figures/import-project-confirm.png) + +3. MCU选择HiSilicom\_Arm下的Hi3516DV300,Board选择hi3516dv300,Framework选择Hb,然后点击**Import**完成导入。 + + ![](figures/hi3516-import-projects.png) + + +## 使用网口烧录 + +1. 请连接好电脑和待烧录开发板,需要同时连接串口、网口和电源,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3516-0000001152041033)。 +2. 查看并记录对应的串口号。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 + + Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/record-the-serial-port-number.png) + + Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/Snap22.png) + +3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 + + ![](figures/zh-cn_image_0000001222969587.png) + +4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_partitions、upload\_port和upload\_protocol。 + + - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 + - upload\_port:选择已查询的串口号。 + - upload\_protocol:选择烧录协议,固定选择“hiburn-net”。 + + ![](figures/zh-cn_image_0000001177474882.png) + +5. 检查和设置连接开发板后的网络适配器的IP地址信息,设置方法请参考[设置Hi3516DV300网口烧录的IP地址信息](https://device.harmonyos.com/cn/docs/documentation/guide/set_ipaddress-0000001141825075)。 +6. 设置网口烧录的IP地址信息,设置如下选项: + + - upload\_net\_server\_ip:选择步骤6中设置的IP地址信息。例如192.168.1.2 + - upload\_net\_client\_mask:设置开发板的子网掩码,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如255.255.255.0 + - upload\_net\_client\_gw:设置开发板的网关,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.1 + - upload\_net\_client\_ip:设置开发板的IP地址,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.3 + + ![](figures/ip-address-information.png) + +7. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。 + 1. 在“hi3516dv300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。 + + ![](figures/zh-cn_image_0000001222994321.png) + + 2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。 + + ![](figures/zh-cn_image_0000001223185957.png) + + 3. 按照相同的方法修改kernel、rootfs和userfs的烧录文件信息。 + +8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 +9. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3516dv300下的**Upload**按钮,启动烧录。 + + ![](figures/hi3516-upload-start-burning.png) + +10. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。 + + ![](figures/hi3516-restart-the-development-board.png) + +11. 重新上电后,界面提示如下信息时,表示烧录成功。 + + ![](figures/hi3516-burning-succeeded-net.png) + +12. 烧录成功后,请根据镜像运行章节进行操作,启动系统。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-faqs.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-faqs.md index be89d347b7d1f4d1675d7b2a6e7d0c02eafc833f..73982f145d22b78070f1e519b6273ffce983a803 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-faqs.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-faqs.md @@ -1,32 +1,42 @@ -# 常见问题 +# 常见问题 -- [烧写选择串口后,提示“Error: Opening COMxx: Access denied”](#section627268185113) +- [烧写选择串口后提示“Error: Opening COMxx: Access denied”](#section627268185113) - [Windows电脑与单板网络连接失败](#section195391036568) - [烧写失败](#section571164016565) - [编译构建过程中,提示找不到“python”](#section1039835245619) - [串口无回显](#section14871149155911) -## 烧写选择串口后,提示“Error: Opening COMxx: Access denied” +## 烧写选择串口后提示“Error: Opening COMxx: Access denied” - **现象描述** - 点击烧写并选择串口后,出现“Error: Opening COMxx: Access denied”。 + 点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。 - ![](figures/Failed-to-open-the-serial-port.png) + **图 1** 打开串口失败图 + ![](figures/打开串口失败图.png "打开串口失败图") - **可能原因** 串口已经被占用。 -- 解决方法 +- **解决办法** + +1. 按图依次选择下拉框,查找带有serial-xx的终端。 + + **图 2** 查找是否存在占用串口的终端 + ![](figures/查找是否存在占用串口的终端.png "查找是否存在占用串口的终端") + +2. 点击标号中的垃圾桶图标,关闭串口。 - 检查主机中可能占用该端口的工具,关闭即可。若是当前工具占用,可按以下步骤排查并关闭: + **图 3** 关闭串口终端 + ![](figures/关闭串口终端.png "关闭串口终端") - 1. 排查终端窗口列表,检查是否被monitor或其他终端占用。 +3. 重新点击烧写,选择串口并开始烧写程序。 - ![](figures/terminal-list.png) + **图 4** 重新启动烧写任务 + - 2. 找到占用,点击垃圾桶图标,关闭占用。 + ![](figures/changjian1.png) ## Windows电脑与单板网络连接失败 @@ -35,8 +45,8 @@ 点击烧写并选择串口后,无法获取文件。 - **图 1** 网络不通,Hi3516单板无法获取文件 - ![](figures/网络不通-Hi3516单板无法获取文件.png "网络不通-Hi3516单板无法获取文件") + **图 5** 网络不通,单板无法获取文件图 + ![](figures/网络不通-单板无法获取文件图.png "网络不通-单板无法获取文件图") - **可能原因** @@ -49,19 +59,23 @@ 1. 检查网线是否连接。 2. 点击Windows防火墙。 - ![](figures/hi3516-network-and-firewall-setting.png) + **图 6** 网络防火墙设置图 + ![](figures/网络防火墙设置图.png "网络防火墙设置图") 3. 点击“允许应用通过防火墙”。 - ![](figures/hi3516-firewall-and-network-protection.png) + **图 7** 防火墙和网络保护界面图 + ![](figures/防火墙和网络保护界面图.png "防火墙和网络保护界面图") 4. 查找Visual Studio Code应用。 - ![](figures/hi3516-selecting-the-visual-studio-code-application.png) + **图 8** 查找Visual Studio Code应用图 + ![](figures/查找Visual-Studio-Code应用图.png "查找Visual-Studio-Code应用图") 5. 勾选Visual Studio Code的专用和公用网络的访问权限。 - ![](figures/hi3516-allowing-the-visual-studio-code-application-to-access-the-network.png) + **图 9** 允许Visual Studio Code应用访问网络 + ![](figures/允许Visual-Studio-Code应用访问网络.png "允许Visual-Studio-Code应用访问网络") ## 烧写失败 @@ -83,24 +97,30 @@ - **现象描述** - ![](figures/symptom-for-not-finding-python.png) + ![](figures/zh-cn_image_0000001216693913.png) - -- **可能原因1** +- **可能原因**1 没有装python。 -- **解决办法** +- **解决办法**1 - 请按照[安装Python环境](../quick-start/quickstart-lite-env-setup-linux.md)。 + 请使用如下命令安装Python,下方以Python3.8为例。 -- **可能原因2** + ``` + sudo apt-get install python3.8 + ``` - ![](figures/reason-for-not-finding-python.png) -- **解决办法** +- **可能原因**2 + + usr/bin目录下没有python软链接。 + + ![](figures/zh-cn_image_0000001217013865.png) + +- **解决办法**2 - usr/bin目录下没有python软链接,请运行以下命令: + 请运行以下命令: ``` # cd /usr/bin/ @@ -111,7 +131,7 @@ 例: - ![](figures/solution.png) + ![](figures/zh-cn_image_0000001216693915.png) ## 串口无回显 @@ -128,7 +148,7 @@ 修改串口号。 - 请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按镜像运行修改串口号。 + 请查看设备管理器,确认连接单板的串口与终端中连接串口是否一致,若不一致,请按镜像运行内[步骤1](#section627268185113)修改串口号。 - **可能原因2** @@ -151,11 +171,11 @@ 2. 根据USB烧写步骤烧写U-boot文件。 - 按照[Hi3516系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)/[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3518_upload-0000001057313128)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。 + 按照[Hi3516系列USB烧写步骤](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_upload-0000001052148681)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。 3. 烧写完成后,登录串口如下图所示。 - **图 2** U-boot烧写完成串口显示图 + **图 10** U-boot烧写完成串口显示图 ![](figures/U-boot烧写完成串口显示图.png "U-boot烧写完成串口显示图") diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-program.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-program.md deleted file mode 100644 index 7ded49a15bdebd58fb5c11e0c7e1f2c5c3056805..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-program.md +++ /dev/null @@ -1,499 +0,0 @@ -# 驱动开发示例 - -- [驱动程序介绍](#s8efc1952ebfe4d1ea717182e108c29bb) -- [编译和烧录](#section660016185110) -- [镜像运行](#section333215226219) -- [下一步学习](#section9712145420182) - -本节指导开发者在单板上运行第一个驱动程序,其中包括驱动程序介绍、编译、烧写、运行等步骤。 - -## 驱动程序介绍 - -下面基于HDF框架,提供一个简单的UART(Universal Asynchronous Receiver/Transmitter)平台驱动开发样例,包含配置文件的添加,驱动代码的实现以及用户态程序和驱动交互的流程。驱动程序源码位于drivers/framework/sample目录 - -1. 添加配置。 - - 在HDF框架的驱动配置文件(例如device/hisilicon/hi3516dv300/sdk\_liteos/config/uart/uart\_config.hcs)中添加该驱动的配置信息,如下所示: - - ``` - root { - platform { - uart_sample { - num = 5; // UART设备编号 - base = 0x120a0000; // UART 寄存器基地址 - irqNum = 38; - baudrate = 115200; - uartClk = 24000000; - wlen = 0x60; - parity = 0; - stopBit = 0; - match_attr = "sample_uart_5"; - } - } - } - ``` - - 在HDF框架的设备配置文件(例如vendor/hisilicon/ipcamera\_hi3516dv300\_liteos/config/device\_info/device\_info.hcs)中添加该驱动的设备节点信息,如下所示: - - ``` - root { - device_info { - platform :: host { - hostName = "platform_host"; - priority = 50; - device_uart :: device { - device5 :: deviceNode { - policy = 2; - priority = 10; - permission = 0660; - moduleName = "UART_SAMPLE"; - serviceName = "HDF_PLATFORM_UART_5"; - deviceMatchAttr = "sample_uart_5"; - } - } - } - } - } - ``` - - >![](../public_sys-resources/icon-note.gif) **说明:** - >配置文件与UART驱动示例的源码在同一个路径,需要手动添加到Hi3516DV300单板路径下。 - -2. 注册UART驱动入口。 - - 基于HDF框架注册UART驱动的入口HdfDriverEntry,代码如下: - - ``` - // 绑定UART驱动接口到HDF框架 - static int32_t SampleUartDriverBind(struct HdfDeviceObject *device) - { - struct UartHost *uartHost = NULL; - - if (device == NULL) { - return HDF_ERR_INVALID_OBJECT; - } - HDF_LOGI("Enter %s:", __func__); - - uartHost = UartHostCreate(device); - if (uartHost == NULL) { - HDF_LOGE("%s: UartHostCreate failed", __func__); - return HDF_FAILURE; - } - uartHost->service.Dispatch = SampleDispatch; - return HDF_SUCCESS; - } - - // 从UART驱动的HCS中获取配置信息 - static uint32_t GetUartDeviceResource( - struct UartDevice *device, const struct DeviceResourceNode *resourceNode) - { - struct UartResource *resource = &device->resource; - struct DeviceResourceIface *dri = NULL; - dri = DeviceResourceGetIfaceInstance(HDF_CONFIG_SOURCE); - if (dri == NULL || dri->GetUint32 == NULL) { - HDF_LOGE("DeviceResourceIface is invalid"); - return HDF_FAILURE; - } - - if (dri->GetUint32(resourceNode, "num", &resource->num, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read num fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "base", &resource->base, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read base fail"); - return HDF_FAILURE; - } - resource->physBase = (unsigned long)OsalIoRemap(resource->base, 0x48); - if (resource->physBase == 0) { - HDF_LOGE("uart config fail to remap physBase"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "irqNum", &resource->irqNum, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read irqNum fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "baudrate", &resource->baudrate, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read baudrate fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "wlen", &resource->wlen, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read wlen fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "parity", &resource->parity, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read parity fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "stopBit", &resource->stopBit, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read stopBit fail"); - return HDF_FAILURE; - } - if (dri->GetUint32(resourceNode, "uartClk", &resource->uartClk, 0) != HDF_SUCCESS) { - HDF_LOGE("uart config read uartClk fail"); - return HDF_FAILURE; - } - return HDF_SUCCESS; - } - - // 将UART驱动的配置和接口附加到HDF驱动框架 - static int32_t AttachUartDevice(struct UartHost *host, struct HdfDeviceObject *device) - { - int32_t ret; - struct UartDevice *uartDevice = NULL; - if (device->property == NULL) { - HDF_LOGE("%s: property is NULL", __func__); - return HDF_FAILURE; - } - uartDevice = (struct UartDevice *)OsalMemCalloc(sizeof(struct UartDevice)); - if (uartDevice == NULL) { - HDF_LOGE("%s: OsalMemCalloc uartDevice error", __func__); - return HDF_ERR_MALLOC_FAIL; - } - ret = GetUartDeviceResource(uartDevice, device->property); - if (ret != HDF_SUCCESS) { - (void)OsalMemFree(uartDevice); - return HDF_FAILURE; - } - host->num = uartDevice->resource.num; - host->priv = uartDevice; - AddUartDevice(host); - return InitUartDevice(uartDevice); - } - - // 初始化UART驱动 - static int32_t SampleUartDriverInit(struct HdfDeviceObject *device) - { - int32_t ret; - struct UartHost *host = NULL; - - if (device == NULL) { - HDF_LOGE("%s: device is NULL", __func__); - return HDF_ERR_INVALID_OBJECT; - } - HDF_LOGI("Enter %s:", __func__); - host = UartHostFromDevice(device); - if (host == NULL) { - HDF_LOGE("%s: host is NULL", __func__); - return HDF_FAILURE; - } - ret = AttachUartDevice(host, device); - if (ret != HDF_SUCCESS) { - HDF_LOGE("%s: attach error", __func__); - return HDF_FAILURE; - } - host->method = &g_sampleUartHostMethod; - return ret; - } - - static void DeinitUartDevice(struct UartDevice *device) - { - struct UartRegisterMap *regMap = (struct UartRegisterMap *)device->resource.physBase; - /* wait for uart enter idle. */ - while (UartPl011IsBusy(regMap)); - UartPl011ResetRegisters(regMap); - uart_clk_cfg(0, false); - OsalIoUnmap((void *)device->resource.physBase); - device->state = UART_DEVICE_UNINITIALIZED; - } - - // 解绑并释放UART驱动 - static void DetachUartDevice(struct UartHost *host) - { - struct UartDevice *uartDevice = NULL; - - if (host->priv == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); - return; - } - uartDevice = host->priv; - DeinitUartDevice(uartDevice); - (void)OsalMemFree(uartDevice); - host->priv = NULL; - } - - // 释放UART驱动 - static void SampleUartDriverRelease(struct HdfDeviceObject *device) - { - struct UartHost *host = NULL; - HDF_LOGI("Enter %s:", __func__); - - if (device == NULL) { - HDF_LOGE("%s: device is NULL", __func__); - return; - } - host = UartHostFromDevice(device); - if (host == NULL) { - HDF_LOGE("%s: host is NULL", __func__); - return; - } - if (host->priv != NULL) { - DetachUartDevice(host); - } - UartHostDestroy(host); - } - - struct HdfDriverEntry g_sampleUartDriverEntry = { - .moduleVersion = 1, - .moduleName = "UART_SAMPLE", - .Bind = SampleUartDriverBind, - .Init = SampleUartDriverInit, - .Release = SampleUartDriverRelease, - }; - - HDF_INIT(g_sampleUartDriverEntry); - ``` - -3. 注册UART驱动接口。 - - HDF框架提供了UART驱动接口的模板方法UartHostMethod,实现UART驱动接口的代码如下: - - ``` - static int32_t SampleUartHostInit(struct UartHost *host) - { - HDF_LOGI("%s: Enter", __func__); - if (host == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); - return HDF_ERR_INVALID_PARAM; - } - return HDF_SUCCESS; - } - - static int32_t SampleUartHostDeinit(struct UartHost *host) - { - HDF_LOGI("%s: Enter", __func__); - if (host == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); - return HDF_ERR_INVALID_PARAM; - } - return HDF_SUCCESS; - } - - // 向UART中写入数据 - static int32_t SampleUartHostWrite(struct UartHost *host, uint8_t *data, uint32_t size) - { - HDF_LOGI("%s: Enter", __func__); - uint32_t idx; - struct UartRegisterMap *regMap = NULL; - struct UartDevice *device = NULL; - - if (host == NULL || data == NULL || size == 0) { - HDF_LOGE("%s: invalid parameter", __func__); - return HDF_ERR_INVALID_PARAM; - } - device = (struct UartDevice *)host->priv; - if (device == NULL) { - HDF_LOGE("%s: device is NULL", __func__); - return HDF_ERR_INVALID_PARAM; - } - regMap = (struct UartRegisterMap *)device->resource.physBase; - for (idx = 0; idx < size; idx++) { - UartPl011Write(regMap, data[idx]); - } - return HDF_SUCCESS; - } - - // 设置UART的波特率 - static int32_t SampleUartHostSetBaud(struct UartHost *host, uint32_t baudRate) - { - HDF_LOGI("%s: Enter", __func__); - struct UartDevice *device = NULL; - struct UartRegisterMap *regMap = NULL; - UartPl011Error err; - - if (host == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); - return HDF_ERR_INVALID_PARAM; - } - device = (struct UartDevice *)host->priv; - if (device == NULL) { - HDF_LOGE("%s: device is NULL", __func__); - return HDF_ERR_INVALID_PARAM; - } - regMap = (struct UartRegisterMap *)device->resource.physBase; - if (device->state != UART_DEVICE_INITIALIZED) { - return UART_PL011_ERR_NOT_INIT; - } - if (baudRate == 0) { - return UART_PL011_ERR_INVALID_BAUD; - } - err = UartPl011SetBaudrate(regMap, device->uartClk, baudRate); - if (err == UART_PL011_ERR_NONE) { - device->baudrate = baudRate; - } - return err; - } - - // 获取UART的波特率 - static int32_t SampleUartHostGetBaud(struct UartHost *host, uint32_t *baudRate) - { - HDF_LOGI("%s: Enter", __func__); - struct UartDevice *device = NULL; - - if (host == NULL) { - HDF_LOGE("%s: invalid parameter", __func__); - return HDF_ERR_INVALID_PARAM; - } - device = (struct UartDevice *)host->priv; - if (device == NULL) { - HDF_LOGE("%s: device is NULL", __func__); - return HDF_ERR_INVALID_PARAM; - } - *baudRate = device->baudrate; - return HDF_SUCCESS; - } - - // 在HdfUartSampleInit方法中绑定 - struct UartHostMethod g_sampleUartHostMethod = { - .Init = SampleUartHostInit, - .Deinit = SampleUartHostDeinit, - .Read = NULL, - .Write = SampleUartHostWrite, - .SetBaud = SampleUartHostSetBaud, - .GetBaud = SampleUartHostGetBaud, - .SetAttribute = NULL, - .GetAttribute = NULL, - .SetTransMode = NULL, - }; - ``` - - 在device/hisilicon/drivers/lite.mk编译脚本中增加示例UART驱动模块,代码如下: - - ``` - LITEOS_BASELIB += -lhdf_uart_sample - LIB_SUBDIRS += $(LITEOS_SOURCE_ROOT)/drivers/framework/sample/platform/uart - ``` - -4. 用户程序和驱动交互代码。 - - UART驱动成功初始化后,会创建/dev/uartdev-5设备节点,通过设备节点与UART驱动交互的代码如下: - - ``` - #include - #include - #include - #include "hdf_log.h" - - #define HDF_LOG_TAG "hello_uart" - #define INFO_SIZE 16 - - int main(void) - { - int ret; - int fd; - const char info[INFO_SIZE] = {" HELLO UART! "}; - - fd = open("/dev/uartdev-5", O_RDWR); - if (fd < 0) { - HDF_LOGE("hello_uart uartdev-5 open failed %d", fd); - return -1; - } - ret = write(fd, info, INFO_SIZE); - if (ret != 0) { - HDF_LOGE("hello_uart write uartdev-5 ret is %d", ret); - } - ret = close(fd); - if (ret != 0) { - HDF_LOGE("hello_uart uartdev-5 close failed %d", fd); - return -1; - } - return ret; - } - ``` - - 在build/lite/components/hdf.json驱动配置中hdf\_hi3516dv300\_liteos\_a组件下的targets中增加hello\_uart\_sample组件,代码如下: - - ``` - { - "components": [ - { - "component": "hdf_hi3516dv300_liteos_a", - ... - "targets": [ - "//drivers/framework/sample/platform/uart:hello_uart_sample" - ] - } - ] - } - ``` - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如上代码均为示例代码,完整代码可以在drivers/framework/sample查看。 - >示例代码默认不参与编译,需要手动添加到编译脚本中。 - - -## 编译和烧录 - -参考《运行Hello OHOS》进行编译和烧录:[编译](quickstart-lite-steps-hi3516-running.md#section1077671315253)、[烧录](quickstart-lite-steps-hi3516-running.md#section1347011412201) - -## 镜像运行 - -1. 连接串口。 - - >![](../public_sys-resources/icon-notice.gif) **须知:** - >若无法连接串口,请参考[常见问题](quickstart-lite-steps-hi3516-faqs.md#section14871149155911)进行排查。 - - **图 1** 连接串口图 - ![](figures/连接串口图.png "连接串口图") - - 1. 单击**Monitor**打开串口。 - 2. 连续输入回车直到串口显示"hisilicon"。 - 3. 单板初次启动或修改启动参数,请进入[步骤2](#li109940111259),否则进入[步骤3](#li448312542515)。 - -2. (单板初次启动必选)修改U-boot的bootcmd及bootargs内容:该步骤为固化操作,若不修改参数只需执行一次。每次复位单板均会自动进入系统。 - - >![](../public_sys-resources/icon-notice.gif) **须知:** - >U-boot引导程序默认会有2秒的等待时间,用户可使用回车打断等待并显示"hisilicon",通过**reset**命令可再次启动系统。 - - **表 1** U-boot修改命令 - - - - - - - - - - - - - - - - - - - -

执行命令

-

命令解释

-

setenv bootcmd "mmc read 0x0 0x80000000 0x800 0x4800; go 0x80000000";

-

读取FLASH起始地址为0x800(单位为512B,即1MB),大小为0x4800(单位为512B,即9MB)的内容到0x80000000的内存地址,该大小(9MB)与IDE中所填写OHOS_Image.bin文件大小必须相同

-

setenv bootargs "console=ttyAMA0,115200n8 root=emmc fstype=vfat rootaddr=10M rootsize=20M rw";

-

表示设置启动参数,输出模式为串口输出,波特率为115200,数据位8,rootfs挂载于emmc器件,文件系统类型为vfat,

-

“rootaddr=10M rootsize=20M rw”处对应填入rootfs.img的烧写起始位置与长度,此处与IDE中新增rootfs.img文件时所填大小必须相同

-

saveenv

-

表示保存当前配置。

-

reset

-

表示复位单板。

-
- - >![](../public_sys-resources/icon-notice.gif) **须知:** - >**“go 0x80000000”**为可选指令,默认配置已将该指令固化在启动参数中,单板复位后可自动启动。若想切换为手动启动,可在U-boot启动倒数阶段使用"回车"打断自动启动。 - -3. 输入**“reset”**指令并回车,重启单板,启动成功如下图,输入回车串口显示OHOS字样。 - - **图 2** 系统启动图 - ![](figures/系统启动图.png "系统启动图") - -4. 根目录下,在命令行输入指令“**./bin/hello\_uart**”执行写入的demo程序,显示成功结果如下所示。 - - ``` - OHOS # ./bin/hello_uart - OHOS # HELLO UART! - ``` - - -## 下一步学习 - -恭喜,您已完成Hi3516 快速上手!建议您下一步进入[带屏摄像头产品开发](../guide/device-camera.md)的学习 。 - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-running.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-running.md index e9aedafdcbf80714cfc34cf5cab3c1827445fa3f..143115b9dbe1c3d9f300ca57d64cddb99901b709 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-running.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-running.md @@ -1,208 +1,9 @@ -# 运行Hello OHOS(编译、烧录) - -- [新建应用程序](#section204672145202) -- [编译](#section1077671315253) -- [烧录](#section1347011412201) - - [使用网口烧录](#section1935410617363) - - [镜像运行](#section24721014162010) - -- [执行应用程序](#section5276734182615) - -本节指导开发者在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello OHOS!”。 - -## 新建应用程序 - -1. 新建目录及源码 - - 新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。 - - ``` - #include - - int main(int argc, char **argv) - { - printf("\n************************************************\n"); - printf("\n\t\tHello OHOS!\n"); - printf("\n************************************************\n\n"); - - return 0; - } - ``` - -2. 新建编译组织文件 - - 新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示: - - ``` - import("//build/lite/config/component/lite_component.gni") - lite_component("hello-OHOS") { - features = [ ":helloworld" ] - } - executable("helloworld") { - output_name = "helloworld" - sources = [ "src/helloworld.c" ] - include_dirs = [] - defines = [] - cflags_c = [] - ldflags = [] - } - ``` - -3. 添加新组件 - - 修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): - - ``` - { - "components": [ - { - "component": "camera_sample_communication", - "description": "Communication related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/communication" - ], - "targets": [ - "//applications/sample/camera/communication:sample" - ], - "rom": "", - "ram": "", - "output": [], - "adapted_kernel": [ "liteos_a" ], - "features": [], - "deps": { - "components": [], - "third_party": [] - } - }, - ##start## - { - "component": "hello_world_app", - "description": "Communication related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/apps" - ], - "targets": [ - "//applications/sample/camera/apps:hello-OHOS" - ], - "rom": "", - "ram": "", - "output": [], - "adapted_kernel": [ "liteos_a" ], - "features": [], - "deps": { - "components": [], - "third_party": [] - } - }, - ##end## - { - "component": "camera_sample_app", - "description": "Camera related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/launcher", - "applications/sample/camera/cameraApp", - "applications/sample/camera/setting", - "applications/sample/camera/gallery", - "applications/sample/camera/media" - ], - ``` - -4. 修改单板配置文件 - - 修改文件**vendor/hisilicon/hispark\_taurus/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): - - ``` - { - "subsystem": "applications", - "components": [ - { "component": "camera_sample_app", "features":[] }, - { "component": "camera_sample_ai", "features":[] }, - ##start## - { "component": "hello_world_app", "features":[] }, - ##end## - { "component": "camera_screensaver_app", "features":[] } - ] - }, - ``` - - -## 编译 - -如果Linux编译环境通过Docker方式安装,具体编译过程请参见[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)的编译操作。如果Linux编译环境通过软件包方式安装,请进入源码根目录,执行如下命令进行编译: - -``` -hb set(设置编译路径) -.(选择当前路径) -选择ipcamera_hispark_taurus@hisilicon并回车 -hb build -f(执行编译) -``` - -**图 1** Hi3516编译设置图例 -![](figures/Hi3516编译设置图例.png "Hi3516编译设置图例") - -结果文件生成在out/hispark\_taurus/ipcamera\_hispark\_taurus目录下。 - ->![](../public_sys-resources/icon-notice.gif) **须知:** ->Hi3516DV300单板的U-boot文件获取路径:device/hisilicon/hispark\_taurus/sdk\_liteos/uboot/out/boot/u-boot-hi3516dv300.bin - -## 烧录 - -Hi3516开发板的代码烧录支持USB烧录、网口烧录和串口烧录三种方式。此处仅以网口烧录为例进行说明。 - -### 使用网口烧录 - -Hi3516DV300开发板使用网口烧录方式,支持Windows和Linux系统。 - -1. 请连接好电脑和待烧录开发板,需要同时连接串口、网口和电源,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_des_3516-0000001152041033)。 -2. 打开电脑的设备管理器,查看并记录对应的串口号。 +# 运行 - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 - - ![](figures/hi3516-record-the-serial-port-number.png) - -3. 打开DevEco Device Tool,在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 - - ![](figures/hi3516-deveco-device-tool-setting.png) - -4. 在“Partition Configuration”页签,设置待烧录文件信息,默认情况下,DevEco Device Tool已针对Hi3516DV300开发板进行适配,无需单独修改。 -5. 在“hi3516dv300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 - - - upload\_port:选择步骤[2](#zh-cn_topic_0000001056443961_li142386399535)中查询的串口号。 - - upload\_protocol:选择烧录协议,固定选择“hiburn-net”。 - - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 - - ![](figures/hi3516-upload-options.png) - -6. 检查和设置连接开发板后的网络适配器的IP地址信息,设置方法请参考[设置Hi3516DV300网口烧录的IP地址信息](https://device.harmonyos.com/cn/docs/ide/user-guides/set_ipaddress-0000001141825075)。 -7. 设置网口烧录的IP地址信息,设置如下选项: - - - upload\_net\_server\_ip:选择步骤6中设置的IP地址信息。例如192.168.1.2 - - upload\_net\_client\_mask:设置开发板的子网掩码,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如255.255.255.0 - - upload\_net\_client\_gw:设置开发板的网关,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.1 - - upload\_net\_client\_ip:设置开发板的IP地址,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.3 +- [镜像运行](#section11324753143912) +- [下一步学习](#section9712145420182) - ![](figures/ip-address-information.png) - -8. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 -9. 打开工程文件,点击![](figures/hi3516-deveco-device-tool-logo.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hi3516dv300下的**Upload**按钮,启动烧录。 - - ![](figures/hi3516-upload-start-burning.png) - -10. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。 - - ![](figures/hi3516-restart-the-development-board.png) - -11. 重新上电后,界面提示如下信息时,表示烧录成功。 - - ![](figures/hi3516-burning-succeeded-net.png) - -12. 烧录成功后,请根据镜像运行章节进行操作,启动系统。 - -### 镜像运行 +## 镜像运行 在完成Hi3516DV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。 @@ -221,15 +22,12 @@ Hi3516DV300开发板使用网口烧录方式,支持Windows和Linux系统。 ![](figures/monitor.png) -4. 然后根据界面提示进行操作,直到在界面打印**OHOS \#**信息,表示系统启动成功。 +4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功。 ![](figures/reboot_success.png) -## 执行应用程序 - -根目录下,在命令行输入指令“**./bin/helloworld**”执行写入的demo程序,显示成功结果如下图所示。 +## 下一步学习 -**图 2** 启动并成功执行应用程序图 -![](figures/启动并成功执行应用程序图.png "启动并成功执行应用程序图") +恭喜您,已完成Hi3516的快速上手!建议您下一步进入[带屏摄像头产品开发](../guide/device-iotcamera.md)的学习 。 diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md index 48afb7d1cfe2de5ee8b10ab2d6e00a40ac822a38..7bd1c393c6ab4d72261b29bdc0581142afe149c4 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516-setting.md @@ -1,11 +1,10 @@ -# 安装开发板环境 +# 安装开发板环境 - [Hi3516工具要求](#section179175261196) - [硬件要求](#section5840424125014) - [软件要求](#section965634210501) - [安装Linux服务器工具](#section182916865219) - - [将Linux shell改为bash](#section1715027152617) - [安装编译依赖基础软件(仅Ubuntu 20+需要)](#section45512412251) - [安装文件打包工具及Java虚拟机环境](#section16199102083717) @@ -15,57 +14,37 @@ ### 硬件要求 - Hi3516DV300 IoT Camera开发板 -- USB转串口线、网线(Windows工作台通过USB转串口线、网线与Hi3516DV300 开发板连接) - -各硬件连接关系如下图所示。 - -**图 1** Hi3516开发硬件连线图 -![](figures/Hi3516开发硬件连线图.png "Hi3516开发硬件连线图") +- USB转串口线、网线(Linux工作台通过USB转串口线、网线与Hi3516DV300 开发板连接) ### 软件要求 >![](../public_sys-resources/icon-notice.gif) **须知:** ->本节描述安装包方式搭建编译环境的操作步骤。如果是Docker方式安装编译环境,请跳过此章节以及下述[安装Linux服务器工具](#section182916865219)章节。 +>本节描述安装包方式搭建编译环境的操作步骤。如果使用Docker方式安装编译环境,请跳过此章节,直接从[新建应用程序](quickstart-lite-steps-hi3516-application-framework.md)开始操作。 -Hi3516开发板对Linux服务器通用环境配置需要的工具及其获取途径如下表所示。 +Hi3516开发板对Linux服务器通用环境配置需要的工具及其用途如下表所示。 -**表 1** Linux服务器开发工具及获取途径 +**表 1** Linux服务器开发工具及用途 -

开发工具

+ - - - - - - - - - - - - - - - @@ -73,33 +52,6 @@ Hi3516开发板对Linux服务器通用环境配置需要的工具及其获取途 ## 安装Linux服务器工具 ->![](../public_sys-resources/icon-notice.gif) **须知:** ->- 如果通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装hc-gen编译工具。 ->- (推荐)如果通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装hc-gen编译工具。安装hc-gen编译工具时,请确保编译工具的环境变量路径唯一。 - -### 将Linux shell改为bash - -查看shell是否为bash,在终端运行如下命令 - -``` -ls -l /bin/sh -``` - -如果显示为“/bin/sh -\> bash”则为正常,否则请按以下方式修改: - -**方法一**:在终端运行如下命令,然后选择no。 - -``` -sudo dpkg-reconfigure dash -``` - -**方法二**:先删除sh,再创建软链接。 - -``` -sudo rm -rf /bin/sh -sudo ln -s /bin/bash /bin/sh -``` - ### 安装编译依赖基础软件(仅Ubuntu 20+需要) 执行以下命令进行安装: @@ -110,11 +62,9 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev ### 安装文件打包工具及Java虚拟机环境 -1. 打开Linux编译服务器终端 -2. 运行如下命令,安装dosfstools、mtools、mtd-utils、Java运行时环境(JRE)和Java sdk 开发工具包。 - - ``` - sudo apt-get install dosfstools mtools mtd-utils default-jre default-jdk - ``` +运行如下命令,安装dosfstools、mtools、mtd-utils、Java运行时环境(JRE)和Java sdk 开发工具包。 +``` +sudo apt-get install dosfstools mtools mtd-utils default-jre default-jdk +``` diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516.md index fde5a6821164da636cb96020bd6c16a38fb347d3..eb5f4ee338bd2644a0aa4136a1d9028797c58376 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3516.md @@ -1,10 +1,14 @@ -# Hi3516开发板 +# Hi3516开发板 - **[安装开发板环境](quickstart-lite-steps-hi3516-setting.md)** -- **[运行Hello OHOS(编译、烧录)](quickstart-lite-steps-hi3516-running.md)** +- **[新建应用程序](quickstart-lite-steps-hi3516-application-framework.md)** -- **[驱动开发示例](quickstart-lite-steps-hi3516-program.md)** +- **[编译](quickstart-lite-steps-hi3516-building.md)** + +- **[烧录](quickstart-lite-steps-hi3516-burn.md)** + +- **[运行](quickstart-lite-steps-hi3516-running.md)** - **[常见问题](quickstart-lite-steps-hi3516-faqs.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-application-framework.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-application-framework.md new file mode 100644 index 0000000000000000000000000000000000000000..c6011e5a5659f9e345f0f904c436ffa9b35a996b --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-application-framework.md @@ -0,0 +1,120 @@ +# 新建应用程序 + +下方将通过修改源码的方式展示如何编写简单程序,输出“Hello OHOS!”。请在[获取源码](quickstart-lite-sourcecode-acquire.md)章节下载的源码目录中进行下述操作。 + +1. 新建目录及源码。 + + 新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。 + + ``` + #include + + int main(int argc, char **argv) + { + printf("\n************************************************\n"); + printf("\n\t\tHello OHOS!\n"); + printf("\n************************************************\n\n"); + + return 0; + } + ``` + +2. 新建编译组织文件。 + + 新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示: + + ``` + import("//build/lite/config/component/lite_component.gni") + lite_component("hello-OHOS") { + features = [ ":helloworld" ] + } + executable("helloworld") { + output_name = "helloworld" + sources = [ "src/helloworld.c" ] + include_dirs = [] + defines = [] + cflags_c = [] + ldflags = [] + } + ``` + +3. 添加新组件。 + + 修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): + + ``` + { + "components": [ + { + "component": "camera_sample_communication", + "description": "Communication related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/communication" + ], + "targets": [ + "//applications/sample/camera/communication:sample" + ], + "rom": "", + "ram": "", + "output": [], + "adapted_kernel": [ "liteos_a" ], + "features": [], + "deps": { + "components": [], + "third_party": [] + } + }, + ##start## + { + "component": "hello_world_app", + "description": "Communication related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/apps" + ], + "targets": [ + "//applications/sample/camera/apps:hello-OHOS" + ], + "rom": "", + "ram": "", + "output": [], + "adapted_kernel": [ "liteos_a" ], + "features": [], + "deps": { + "components": [], + "third_party": [] + } + }, + ##end## + { + "component": "camera_sample_app", + "description": "Camera related samples.", + "optional": "true", + "dirs": [ + "applications/sample/camera/launcher", + "applications/sample/camera/cameraApp", + "applications/sample/camera/setting", + "applications/sample/camera/gallery", + "applications/sample/camera/media" + ], + ``` + +4. 修改单板配置文件。 + + 修改文件**vendor/hisilicon/hispark\_aries/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): + + ``` + { + "subsystem": "applications", + "components": [ + ##start## + { "component": "hello_world_app", "features":[] }, + ##end## + { "component": "camera_sample_app", "features":[] } + + ] + }, + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-building.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-building.md new file mode 100644 index 0000000000000000000000000000000000000000..c97f546c9c3466b999b2b3ddb45b05647d1cd16f --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-building.md @@ -0,0 +1,26 @@ +# 编译 + +下方将介绍如何使用Hi3518开发板进行编译。使用安装包方式与docker方式搭建Ubuntu编译环境,编译命令相同。 + +1. 请进入源码根目录,执行如下命令进行编译: + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果使用Docker方式搭建编译环境,请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译。 + + ``` + hb set(设置编译路径) + .(选择当前路径) + 选择ipcamera_hispark_aries并回车 + hb build -f(执行编译) + ``` + + **图 1** Hi3518编译设置图例-Docker方式 + ![](figures/Hi3518编译设置图例-Docker方式.png "Hi3518编译设置图例-Docker方式") + +2. 编译结束后,出现“ipcamera\_hispark\_aries build success”字样,则证明构建成功。 + +>![](../public_sys-resources/icon-notice.gif) **须知:** +>烧录相关文件获取路径: +>结果文件:out/hispark\_aries/ipcamera\_hispark\_aries。 +>U-boot文件:device/hisilicon/hispark\_aries/sdk\_liteos/uboot/out/boot/u-boot-hi3518ev300.bin。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-burn.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-burn.md new file mode 100644 index 0000000000000000000000000000000000000000..b66d785c004816ddc8635dada0c6a5d826b6dbf7 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-burn.md @@ -0,0 +1,93 @@ +# 烧录 + +- [前提条件](#section14614124417580) +- [使用串口烧录](#section195291211181215) + +烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 + +DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。 + +Hi3518EV300开发板的代码烧录支持USB烧录和串口烧录两种方式,其中: + +- **Windows系统:支持USB烧录和串口烧录。** +- **Linux系统:支持串口烧录**。 + +Hi3861V100在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。 + +此处仅以Linux系统下串口烧录方式为例进行说明。 + +## 前提条件 + +1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 + + ![](figures/import-project.png) + +2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**。 + + ![](figures/import-project-confirm.png) + +3. MCU选择HiSilicom\_Arm下的Hi3518EV300,Board选择hi3518ev300,Framework选择Hb,然后点击**Import**完成导入。 + + ![](figures/hi3518-import-projects.png) + + +## 使用串口烧录 + +1. 请连接好电脑和待烧录开发板,需要同时连接串口和电源口,具体可参考[Hi3518EV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3518-0000001105201138)。 +2. 查看并记录对应的串口号。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 + + Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/record-the-serial-port-number.png) + + Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/Snap22.png) + +3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 + + ![](figures/zh-cn_image_0000001222981447.png) + +4. 在“hi3518ev300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 + + - upload\_port:选择已查询的串口号。 + - upload\_protocol:选择烧录协议,固定选择“hiburn-serial”。 + - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 + + ![](figures/Snap24.png) + +5. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、kernel、rootfs和userfs。 + 1. 在“hi3518ev300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。 + + ![](figures/zh-cn_image_0000001177301516.png) + + 2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,遵循以下原则: + >- 要求设置的烧录分区大小,要大于待烧录文件的大小。 + >- 同时,各烧录文件的分区地址设置不能出现重叠。 + >- 总的烧录分区大小不能超过16MB。 + + ![](figures/zh-cn_image_0000001222781271.png) + + 3. 按照相同的方法修改kernel、footfs和userfs的烧录文件信息。 + +6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 +7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3518ev300下的**Upload**按钮,启动烧录。 + + ![](figures/zh-cn_image_0000001117329380.png) + +8. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。 + + ![](figures/zh-cn_image_0000001074287476.png) + +9. 重新上电后,界面提示如下信息时,表示烧录成功。 + + ![](figures/zh-cn_image_0000001073838982.png) + +10. 烧录成功后,请根据镜像运行章节进行操作,启动系统。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-faqs.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-faqs.md index 5435f27e2dd4726ade913865090d762c9d65d3d5..32b4edfc04f2249f891885620bb7792c8d5e5260 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-faqs.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-faqs.md @@ -1,32 +1,42 @@ -# 常见问题 +# 常见问题 -- [烧写选择串口后,提示“Error: Opening COMxx: Access denied”](#section1498892119619) +- [烧写选择串口后提示失败](#section1498892119619) - [Windows电脑与单板网络连接失败](#section8512971816) - [烧写失败](#section1767804111198) - [编译构建过程中,提示找不到“python”](#zh-cn_topic_0000001053466255_section1039835245619) - [串口无回显](#zh-cn_topic_0000001053466255_section14871149155911) -## 烧写选择串口后,提示“Error: Opening COMxx: Access denied” +## 烧写选择串口后提示失败 - **现象描述** - 点击烧写并选择串口后,出现“Error: Opening COMxx: Access denied”。 + 点击烧写并选择串口后,出现Error: Opening COMxx: Access denied。 - ![](figures/Failed-to-open-the-serial-port.png) + **图 1** 打开串口失败图 + ![](figures/打开串口失败图-1.png "打开串口失败图-1") - **可能原因** 串口已经被占用。 -- 解决方法 +- **解决办法** + +1. 按图依次选择下拉框,查找带有serial-xx的终端。 + + **图 2** 查找是否存在占用串口的终端 + ![](figures/查找是否存在占用串口的终端-2.png "查找是否存在占用串口的终端-2") - 检查主机中可能占用该端口的工具,关闭即可。若是当前工具占用,可按以下步骤排查并关闭: +2. 点击标号中的垃圾桶图标,关闭串口。 - 1. 排查终端窗口列表,检查是否被monitor或其他终端占用。 + **图 3** 关闭串口终端 + ![](figures/关闭串口终端-3.png "关闭串口终端-3") - ![](figures/terminal-list.png) +3. 重新点击烧写,选择串口并开始烧写程序。 - 2. 找到占用,点击垃圾桶图标,关闭占用。 + **图 4** 重新启动烧写任务 + + + ![](figures/changjian1-4.png) ## Windows电脑与单板网络连接失败 @@ -35,8 +45,8 @@ 点击烧写并选择串口后,无法获取文件。 - **图 1** 网络不通,Hi3518单板无法获取文件 - ![](figures/网络不通-Hi3518单板无法获取文件.png "网络不通-Hi3518单板无法获取文件") + **图 5** 网络不通,单板无法获取文件图 + ![](figures/网络不通-单板无法获取文件图-5.png "网络不通-单板无法获取文件图-5") - **可能原因** @@ -49,19 +59,23 @@ 1. 检查网线是否连接。 2. 点击Windows防火墙。 - ![](figures/hi3518-network-and-firewall-setting.png) + **图 6** 网络防火墙设置图 + ![](figures/网络防火墙设置图-6.png "网络防火墙设置图-6") 3. 点击“允许应用通过防火墙”。 - ![](figures/hi3518-firewall-and-network-protection.png) + **图 7** 防火墙和网络保护界面图 + ![](figures/防火墙和网络保护界面图-7.png "防火墙和网络保护界面图-7") 4. 查找Visual Studio Code应用。 - ![](figures/hi3518-selecting-the-visual-studio-code-application.png) + **图 8** 查找Visual Studio Code应用图 + ![](figures/查找Visual-Studio-Code应用图-8.png "查找Visual-Studio-Code应用图-8") 5. 勾选Visual Studio Code的专用和公用网络的访问权限。 - ![](figures/hi3518-allowing-the-visual-studio-code-application-to-access-the-network.png) + **图 9** 允许Visual Studio Code应用访问网络 + ![](figures/允许Visual-Studio-Code应用访问网络-9.png "允许Visual-Studio-Code应用访问网络-9") ## 烧写失败 @@ -83,24 +97,18 @@ - **现象描述** - ![](figures/hi3518-error-for-not-finding-python.png) - + ![](figures/zh-cn_image_0000001171774086.png) -- **可能原因1** - 没有装python。 - -- **解决办法** - - 请按照[安装Python环境](../quick-start/quickstart-lite-env-setup-linux.md)。 +- **可能原因** -- **可能原因2** + usr/bin目录下没有python软链接。 - ![](figures/hi3518-reason-no-python-soft-link.png) + ![](figures/zh-cn_image_0000001171615534.png) - **解决办法** - usr/bin目录下没有python软链接,请运行以下命令: + 请运行以下命令: ``` # cd /usr/bin/ @@ -111,7 +119,7 @@ 例: - ![](figures/hi3518-solution-set-python-soft-link.png) + ![](figures/zh-cn_image_0000001216535401.png) ## 串口无回显 @@ -151,10 +159,10 @@ 2. 根据USB烧写步骤烧写U-boot文件。 - 按照[Hi3516系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)/[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3518_upload-0000001057313128)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。 + 按照[Hi3518系列USB烧写步骤](https://device.harmonyos.com/cn/docs/documentation/guide/hi3518_upload-0000001057313128)中描述的USB烧写方法,选择对应单板的U-boot文件进行烧写。 3. 烧写完成后,登录串口如下图所示。 - ![](figures/login-serial-port.png) + ![](figures/zh-cn_image_0000001216535397.png) diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-running.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-running.md index f38114e6dd316d5f72f91c8f8202ce70cdf26c5b..fdded7a71dfb67fa6c81e2f64b607192bb183e36 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-running.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-running.md @@ -1,212 +1,9 @@ -# 运行Hello OHOS(编译、烧录) +# 运行 -- [新建应用程序](#section1550972416485) -- [编译](#section234175193114) -- [烧录](#section7609155824819) -- [镜像运行](#section17612105814480) +- [镜像运行](#section1081111115589) - [下一步学习](#section9712145420182) -本节指导开发者在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello OHOS!”。 - -## 新建应用程序 - -1. 新建目录及源码 - - 新建**applications/sample/camera/apps/src/helloworld.c**目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改OHOS为World)。当前应用程序可支持标准C及C++的代码开发。 - - ``` - #include - - int main(int argc, char **argv) - { - printf("\n************************************************\n"); - printf("\n\t\tHello OHOS!\n"); - printf("\n************************************************\n\n"); - - return 0; - } - ``` - -2. 新建编译组织文件 - - 新建**applications/sample/camera/apps/BUILD.gn**文件,内容如下所示: - - ``` - import("//build/lite/config/component/lite_component.gni") - lite_component("hello-OHOS") { - features = [ ":helloworld" ] - } - executable("helloworld") { - output_name = "helloworld" - sources = [ "src/helloworld.c" ] - include_dirs = [] - defines = [] - cflags_c = [] - ldflags = [] - } - ``` - -3. 添加新组件 - - 修改文件**build/lite/components/applications.json**,添加组件hello\_world\_app的配置,如下所示为applications.json文件片段,"\#\#start\#\#"和"\#\#end\#\#"之间为新增配置("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): - - ``` - { - "components": [ - { - "component": "camera_sample_communication", - "description": "Communication related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/communication" - ], - "targets": [ - "//applications/sample/camera/communication:sample" - ], - "rom": "", - "ram": "", - "output": [], - "adapted_kernel": [ "liteos_a" ], - "features": [], - "deps": { - "components": [], - "third_party": [] - } - }, - ##start## - { - "component": "hello_world_app", - "description": "Communication related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/apps" - ], - "targets": [ - "//applications/sample/camera/apps:hello-OHOS" - ], - "rom": "", - "ram": "", - "output": [], - "adapted_kernel": [ "liteos_a" ], - "features": [], - "deps": { - "components": [], - "third_party": [] - } - }, - ##end## - { - "component": "camera_sample_app", - "description": "Camera related samples.", - "optional": "true", - "dirs": [ - "applications/sample/camera/launcher", - "applications/sample/camera/cameraApp", - "applications/sample/camera/setting", - "applications/sample/camera/gallery", - "applications/sample/camera/media" - ], - ``` - -4. 修改单板配置文件 - - 修改文件**vendor/hisilicon/hispark\_aries/config.json**,新增hello\_world\_app组件的条目,如下所示代码片段为applications子系统配置,"\#\#start\#\#"和"\#\#end\#\#"之间为新增条目("\#\#start\#\#"和"\#\#end\#\#"仅用来标识位置,添加完配置后删除这两行): - - ``` - { - "subsystem": "applications", - "components": [ - ##start## - { "component": "hello_world_app", "features":[] }, - ##end## - { "component": "camera_sample_app", "features":[] } - - ] - }, - ``` - - -## 编译 - -如果Linux编译环境通过Docker方式安装,具体编译过程请参见[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)的编译操作。如果Linux编译环境通过软件包方式安装,进入源码根目录,执行如下命令进行编译: - -``` -hb set(设置编译路径) -.(选择当前路径) -选择ipcamera_hispark_aries@hisilicon并回车 -hb build -f(执行编译) -``` - -结果文件生成在out/hispark\_aries/ipcamera\_hispark\_aries目录下。 - -**图 1** Hi3518编译设置图例 -![](figures/Hi3518编译设置图例.png "Hi3518编译设置图例") - ->![](../public_sys-resources/icon-notice.gif) **须知:** ->Hi3518EV300单板的U-boot文件获取路径:device/hisilicon/hispark\_aries/sdk\_liteos/uboot/out/boot/u-boot-hi3518ev300.bin - -## 烧录 - -烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 - -Hi3518EV300开发板的代码烧录支持USB烧录和串口烧录两种方式,其中: - -- **Windows系统:支持USB烧录和串口烧录。** -- **Linux系统:支持串口烧录,如果采用的是Linux+Windows双系统,也支持USB烧录。** - -同一种烧录方式(如串口烧录),在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。 - -此处仅以USB烧录为例进行说明。 - -1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3518EV300开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_des_3518-0000001105201138)。 -2. 打开电脑的设备管理器,查看并记录对应的串口号。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 - - ![](figures/hi3518-record-the-serial-port-number.png) - -3. 打开DevEco Device Tool,在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 - - ![](figures/hi3518-deveco-device-tool-setting.png) - -4. 在“Partition Configuration”页签,设置待烧录文件信息,默认情况下,DevEco Device Tool已针对Hi3518EV300开发板进行适配,无需单独修改。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果待烧录文件是直接通过拷贝的方式获取,需要手动修改待烧录文件的路径。打开待烧录文件的页签,在Partition Settings的New Opiton的下拉列表中,选择Partition\_bin,然后在Partition Opiton的Partition\_bin设置待烧录文件的路径。 - -5. 在“hi3518ev300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 - - - upload\_port:选择步骤[2](#zh-cn_topic_0000001057313128_li46411811196)中查询的串口号。 - - upload\_protocol:选择烧录协议,固定选择“hiburn-usb”。 - - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、kernel、rootfs和userfs。 - - ![](figures/upload-options.png) - -6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 -7. 打开工程文件,点击![](figures/hi3518-deveco-device-tool-logo.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hi3518ev300\_fastboot下的**Erase**按钮,擦除U-Boot。 - - ![](figures/erase-u-Boot.png) - -8. 执行**Erase**擦除操作后,显示如下提示信息时,请重启开发板(下电再上电)。 - - ![](figures/hi3518-restart-the-development-board.png) - -9. 重新上电后,显示如下信息时,表示擦除U-Boot成功。 - - ![](figures/u-boot-erased-successfully.png) - -10. 擦除完成后,点击hi3518ev300下的**Upload**按钮,启动烧录。 - - ![](figures/hi3518-upload.png) - -11. 启动烧录后,界面提示如下信息时,表示烧录成功。 - - ![](figures/hi3518-burning-succeeded.png) - -12. 烧录成功后,请根据镜像运行章节进行操作,启动系统。 - -## 镜像运行 +## 镜像运行 在完成Hi3518EV300的烧录后,还需要设置BootLoader引导程序,才能运行OpenHarmony系统。 @@ -225,7 +22,7 @@ Hi3518EV300开发板的代码烧录支持USB烧录和串口烧录两种方式, ![](figures/hi3518-monitor.png) -4. 然后根据界面提示进行操作,直到在界面打印OHOS \#信息,表示系统启动成功。 +4. 当界面打印回显信息,点击Enter按钮,直到界面显示OHOS \#信息,表示系统启动成功。 ![](figures/hi3518-reboot-success.png) diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-setting.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-setting.md index c2c31fb6b91d4ee68f92e9ca44348a5d8343d4ae..61f1469a59a001430fdda4216b0face7e1544a5f 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-setting.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518-setting.md @@ -1,11 +1,10 @@ -# 安装开发板环境 +# 安装开发板环境 - [Hi3518环境搭建](#section1724111409282) - [硬件要求](#section487353718276) - [软件要求](#section17315193935817) - [安装Linux服务器工具](#section8831868501) - - [将Linux shell改为bash](#section434110241084) - [安装编译依赖基础软件(仅Ubuntu 20+需要)](#section25911132141020) - [安装文件打包工具](#section390214473129) @@ -15,18 +14,12 @@ ### 硬件要求 - Hi3518EV300 IoT Camera开发板 -- USB转串口线、网线(Windows工作台通过USB转串口线、网线与开发板连接) - - 各硬件连接关系如下图所示。 - - **图 1** Hi3518开发硬件连线图 - ![](figures/Hi3518开发硬件连线图.png "Hi3518开发硬件连线图") - +- USB转串口线、网线(Linux工作台通过USB转串口线、网线与开发板连接) ### 软件要求 >![](../public_sys-resources/icon-notice.gif) **须知:** ->本节描述安装包方式搭建编译环境的操作步骤。如果是Docker方式安装编译环境,请跳过此章节以及下述[安装Linux服务器工具](#section8831868501)章节。 +>本节描述安装包方式搭建编译环境的操作步骤。如果是Docker方式安装编译环境,请跳过此章节,从[新建应用程序](quickstart-lite-steps-hi3518-application-framework.md)开始操作。 Hi3518开发板对Linux服务器通用环境配置需要的工具及其获取途径如下表所示。 @@ -41,14 +34,7 @@ Hi3518开发板对Linux服务器通用环境配置需要的工具及其获取途 - - - - - @@ -67,33 +53,6 @@ Hi3518开发板对Linux服务器通用环境配置需要的工具及其获取途 ## 安装Linux服务器工具 ->![](../public_sys-resources/icon-notice.gif) **须知:** ->- 如果通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装hc-gen编译工具。 ->- (推荐)如果通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装hc-gen编译工具。安装hc-gen编译工具时,请确保编译工具的环境变量路径唯一。 - -### 将Linux shell改为bash - -查看shell是否为bash,在终端运行如下命令 - -``` -ls -l /bin/sh -``` - -如果显示为“/bin/sh -\> bash”则为正常,否则请按以下方式修改: - -**方法一**:在终端运行如下命令,然后选择 no。 - -``` -sudo dpkg-reconfigure dash -``` - -**方法二**:先删除sh,再创建软链接。 - -``` -sudo rm -rf /bin/sh -sudo ln -s /bin/bash /bin/sh -``` - ### 安装编译依赖基础软件(仅Ubuntu 20+需要) 执行以下命令进行安装: @@ -104,11 +63,9 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev ### 安装文件打包工具 -1. 打开Linux编译服务器终端。 -2. 运行如下命令,安装dosfstools,mtools,mtd-utils。 - - ``` - sudo apt-get install dosfstools mtools mtd-utils - ``` +运行如下命令,安装dosfstools,mtools,mtd-utils。 +``` +sudo apt-get install dosfstools mtools mtd-utils +``` diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518.md index fae0c09e037ef43de9cb99083e8ae440eef91e83..ea8759f0fefc2fdab01292b753816cadf574d472 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3518.md @@ -1,8 +1,14 @@ -# Hi3518开发板 +# Hi3518开发板 - **[安装开发板环境](quickstart-lite-steps-hi3518-setting.md)** -- **[运行Hello OHOS(编译、烧录)](quickstart-lite-steps-hi3518-running.md)** +- **[新建应用程序](quickstart-lite-steps-hi3518-application-framework.md)** + +- **[编译](quickstart-lite-steps-hi3518-building.md)** + +- **[烧录](quickstart-lite-steps-hi3518-burn.md)** + +- **[运行](quickstart-lite-steps-hi3518-running.md)** - **[常见问题](quickstart-lite-steps-hi3518-faqs.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3816-running.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3816-running.md new file mode 100644 index 0000000000000000000000000000000000000000..a8e7c64c69f5c3e406634f5d3b256c7f4eda647d --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3816-running.md @@ -0,0 +1,20 @@ +# 运行 + +- [运行结果](#section18115713118) +- [下一步学习](#section9712145420182) + +## 运行结果 + +示例代码编译、烧录、运行、调测后,重启开发板后将自动在界面输出如下结果: + +``` +ready to OS start +FileSystem mount ok. +wifi init success! +[DEMO] Hello world. +``` + +## 下一步学习 + +恭喜,您已完成Hi3861开发板快速上手!建议您下一步进入[WLAN产品开发](../guide/device-wlan-led-control.md)的学习 。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-running.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-application-framework.md similarity index 46% rename from zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-running.md rename to zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-application-framework.md index d51d6dbe8649357e8b4a9ed5e481176ddd2fd4ab..8e8f9716f0c4639c8a3aecab9c6d0d5851fe5726 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-running.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-application-framework.md @@ -1,18 +1,6 @@ -# 运行Hello World +# 新建应用程序 -- [修改源码](#section79601457101015) -- [调测验证](#section1621064881419) - - [printf打印](#section5204547123316) - - [根据asm文件进行问题定位](#section15919111423416) - -- [运行结果](#section18115713118) -- [下一步学习](#section9712145420182) - -本示例将演示如何编写简单业务,输出“Hello World”,初步了解OpenHarmony如何运行在开发板上。 - -## 修改源码 - -bugfix和新增业务两种情况,涉及源码修改。下面以新增业务(my\_first\_app)为例,向开发者介绍如何进行源码修改。 +下方将通过修改源码的方式展示如何编写简单程序,输出“Hello world.”。请在[获取源码](quickstart-lite-sourcecode-acquire.md)章节下载的源码目录中进行下述操作。 1. 确定目录结构。 @@ -87,73 +75,3 @@ bugfix和新增业务两种情况,涉及源码修改。下面以新增业务 - myapp是目标,指向./applications/sample/wifi-iot/app/my\_first\_app/BUILD.gn中的static\_library\("myapp"\)。 -## 调测验证 - -目前调试验证的方法有两种,分别为通过printf打印日志、通过asm文件定位panic问题,开发者可以根据具体业务情况选择。 - -由于本示例业务简单,采用printf打印日志的调试方式即可。下面开始介绍这两种调试手段的使用方法。 - -### printf打印 - -代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示。 - -``` -void HelloWorld(void) -{ - printf("[DEMO] Hello world.\n"); -} -``` - -### 根据asm文件进行问题定位 - -系统异常退出时,会在串口上打印异常退出原因调用栈信息,如下文所示。通过解析异常栈信息可以定位异常位置。 - -``` -=======KERNEL PANIC======= -**********************Call Stack********************* -Call Stack 0 -- 4860d8 addr:f784c -Call Stack 1 -- 47b2b2 addr:f788c -Call Stack 2 -- 3e562c addr:f789c -Call Stack 3 -- 4101de addr:f78ac -Call Stack 4 -- 3e5f32 addr:f78cc -Call Stack 5 -- 3f78c0 addr:f78ec -Call Stack 6 -- 3f5e24 addr:f78fc -********************Call Stack end******************* -``` - -为解析上述调用栈信息,需要使用到Hi3861\_wifiiot\_app.asm文件,该文件记录了代码中函数在Flash上的符号地址以及反汇编信息。asm文件会随版本大包一同构建输出,存放在./out/wifiiot/路径下。 - -1. 将调用栈CallStack信息保存到txt文档中,以便于编辑。(可选) -2. 打开asm文件,并搜索CallStack中的地址,列出对应的函数名 信息。通常只需找出前几个栈信息对应的函数,就可明确异常代码方向。 - - ``` - Call Stack 0 -- 4860d8 addr:f784c -- WadRecvCB - Call Stack 1 -- 47b2b2 addr:f788c -- wal_sdp_process_rx_data - Call Stack 2 -- 3e562c addr:f789c - Call Stack 3 -- 4101de addr:f78ac - Call Stack 4 -- 3e5f32 addr:f78cc - Call Stack 5 -- 3f78c0 addr:f78ec - Call Stack 6 -- 3f5e24 addr:f78fc - ``` - -3. 根据以上调用栈信息,可以定位WadRecvCB函数中出现了异常。 - - ![](figures/WadRecvCB-function.png) - -4. 完成代码排查及修改。 - -## 运行结果 - -示例代码编译、烧录、运行、调测后,在串口界面会显示如下结果: - -``` -ready to OS start -FileSystem mount ok. -wifi init success! -[DEMO] Hello world. -``` - -## 下一步学习 - -恭喜,您已完成Hi3861 WLAN模组快速上手!建议您下一步进入[WLAN产品开发](../guide/device-wlan.md)的学习 。 - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-building.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-building.md new file mode 100644 index 0000000000000000000000000000000000000000..d112146c32ec9f335ee9f5c542239799c03aadcb --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-building.md @@ -0,0 +1,72 @@ +# 编译 + +- [编译(Docker方式搭建环境)](#section681942105819) +- [编译(安装包方式搭建环境)](#section17726113335715) + +本节描述如何进行Hi3861 开发板的编译,根据上方搭建Ubuntu环境方式的不同,编译方式也有所区别。 + +- 如果Ubuntu编译环境通过Docker方式安装,请参见下方[编译(Docker方式搭建环境)](#section681942105819)。 +- 如果Ubuntu编译环境通过安装包方式安装,请参见下方[编译(安装包方式搭建环境)](#section17726113335715)。 + +## 编译(Docker方式搭建环境) + +1. 请在[获取Docker环境](quickstart-lite-docker-environment.md#section15666113905015)中进入的Docker构建环境中,执行如下命令进行编译: + + ``` + hb set(设置编译路径) + .(选择当前路径) + 选择wifiiot_hispark_pegasus@hisilicon并回车 + hb build -f(执行编译) + ``` + + **图 1** Hi3861编译设置图例-Docker方式 + ![](figures/Hi3861编译设置图例-Docker方式.png "Hi3861编译设置图例-Docker方式") + +2. 编译结束后,出现“wifiiot\_hispark\_pegasus build success”字样,则证明构建成功。 + + >![](../public_sys-resources/icon-notice.gif) **须知:** + >烧录结果文件文件获取路径:out/hispark\_pegasus/wifiiot\_hispark\_pegasus。 + + +## 编译(安装包方式搭建环境) + +1. 打开DevEco Device Tool工具,点击“View \> Terminal”,进入终端界面。 + + **图 2** IDE终端工具打开方法 + + + ![](figures/1.png) + +2. 进入代码根路径,并在终端窗口,执行脚本命令“hb set”、“.”,选择需要编译的版本“wifiiot\_hispark\_pegasus”。 + + **图 3** 在终端界面选择目标构建版本示意图 + + + ![](figures/3.png) + +3. 执行“hb build”启动版本构建。 + + **图 4** 在终端界面执行编译命令示意图 + + + ![](figures/4.png) + +4. 编译结束后,如果出现“wifiiot\_hispark\_pegasus build success”字样,则证明构建成功,如下图所示。 + + **图 5** 编译成功示意图 + + + ![](figures/5.png) + +5. 构建成功后,会在./out/wifiiot/路径中生成以下文件,使用如下命令可以查看,至此编译构建流程结束。 + + ``` + ls -l out/hispark_pegasus/wifiiot_hispark_pegasus/ + ``` + + **图 6** 编译文件存放目录示意图 + + + ![](figures/3-0.png) + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-burn.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-burn.md new file mode 100644 index 0000000000000000000000000000000000000000..4d1cce51f9334ee770b7e102b7bae1db0e3a070f --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-burn.md @@ -0,0 +1,80 @@ +# 烧录 + +- [前提条件](#section1535374111495) +- [使用串口烧录](#section5551201122719) + +烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 + +DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334.png)图标打开DevEco Device Tool。 + +**Hi3861V100开发板支持串口烧录方式,Linux系统串口烧录协议为hiburn-serial。**具体操作步骤如下: + +## 前提条件 + +1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 + + ![](figures/import-project.png) + +2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**。 + + ![](figures/import-project-confirm.png) + +3. MCU选择Hi3861,Board选择Hi3861,Framework选择Hb,然后点击**Import**完成导入。 + + ![](figures/hi3861-import-projects.png) + + +## 使用串口烧录 + +1. 请连接好电脑和待烧录开发板,需要连接USB口,具体可参考[Hi3861V100开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3861-0000001105041324)[Hi3861V100开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3861.md)。 +2. 查看并记录对应的串口号。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果对应的串口异常,请根据[Hi3861V100开发板串口驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/hi3861-drivers-0000001058153433)安装USB转串口的驱动程序。 + + Window系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/hi3861-record-the-serial-port-number.png) + + Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/Snap23.png) + +3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 + + ![](figures/zh-cn_image_0000001222999125.png) + +4. 在“hi3861”页签,设置烧录选项,包括upload\_port、upload\_protocol和upload\_partitions。 + + - upload\_port:选择已查询的串口号。 + - upload\_protocol:选择烧录协议,选择“hiburn-serial”。 + - upload\_partitions:选择待烧录的文件,默认选择hi3861\_app。 + + ![](figures/zh-cn_image_0000001177798424.png) + +5. 检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。 + 1. 在“hi3861\_app”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。 + + ![](figures/zh-cn_image_0000001177480146.png) + + 2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小。 + + ![](figures/zh-cn_image_0000001223000051.png) + +6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 +7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。 + + ![](figures/hi3861-upload.png) + +8. 启动烧录后,显示如下提示信息时,请按开发板上的RST按钮重启开发板。 + + ![](figures/zh-cn_image_0000001174595590.png) + +9. 重新上电后,界面提示如下信息时,表示烧录成功。 + + ![](figures/hi3861-burning-succeeded.png) + + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-connection.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-connection.md deleted file mode 100644 index bbe9c366930da14fbb08000582126ba55003f86a..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-connection.md +++ /dev/null @@ -1,135 +0,0 @@ -# WLAN联网(编译、烧录) - -- [编译](#section191121332125319) -- [镜像烧录](#section3288165814218) -- [WLAN模组联网](#section194671619167) - -本示例将演示如何通过AT命令完成WLAN模组与网关联网。 - -## 编译 - -本节描述如何在Linux服务器上进行WLAN模组版本的编译。 - -如果Linux编译环境通过Docker方式安装,具体编译过程请参见[Docker方式获取编译环境](../get-code/gettools-acquire.md#section107932281315)的编译操作。如果Linux编译环境通过软件包方式安装,请参考如下步骤。 - -1. 打开DevEco Device Tool工具,点击“View \> Terminal”,进入终端界面。 - - **图 1** IDE终端工具打开方法 - ![](figures/IDE终端工具打开方法.png "IDE终端工具打开方法") - - 在终端界面使用ssh命令连接linux服务器,如“ssh user@ipaddr”。 - - **图 2** 终端界面示意图 - ![](figures/终端界面示意图.png "终端界面示意图") - -2. 进入代码根路径,并在终端窗口,执行脚本命令“hb set”、“.”,选择需要编译的版本“wifiiot\_hispark\_pegasus”。 - - **图 3** 在终端界面选择目标构建版本示意图 - ![](figures/在终端界面选择目标构建版本示意图.png "在终端界面选择目标构建版本示意图") - -3. 执行“hb build”启动版本构建。 - - **图 4** 在终端界面执行编译命令示意图 - ![](figures/在终端界面执行编译命令示意图.png "在终端界面执行编译命令示意图") - -4. 编译结束后,如果出现“wifiiot\_hispark\_pegasus build success”字样,则证明构建成功,如下图所示。 - - **图 5** 编译成功示意图 - ![](figures/编译成功示意图.png "编译成功示意图") - -5. 构建成功后,会在./out/wifiiot/路径中生成以下文件,使用如下命令可以查看,至此编译构建流程结束。 - - ``` - ls -l out/hispark_pegasus/wifiiot_hispark_pegasus/ - ``` - - **图 6** 编译文件存放目录示意图 - ![](figures/编译文件存放目录示意图.png "编译文件存放目录示意图") - - -## 镜像烧录 - -烧录是指将编译后的程序文件下载到芯片开发板上的动作,为后续的程序调试提供基础。DevEco Device Tool提供一键烧录功能,操作简单,能快捷、高效的完成程序烧录,提升烧录的效率。 - -**Hi3861V100开发板支持串口烧录方式,其中Windows系统串口烧录协议包括burn-serial和hiburn-serial,Linux系统串口烧录协议为hiburn-serial。** - ->![](../public_sys-resources/icon-note.gif) **说明:** ->Windows下的两种烧录协议**burn-serial**和**hiburn-serial**,在操作上没有区别,**burn-serial**协议主要是为了兼容历史版本工程。 - -Hi3861V100在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。 - -1. 请连接好电脑和待烧录开发板,需要连接USB口,具体可参考[Hi3861V100开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_des_3861-0000001105041324)。 -2. 打开电脑的设备管理器,查看并记录对应的串口号。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果对应的串口异常,请根据[Hi3861V100开发板串口驱动安装](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3861-drivers-0000001058153433)安装USB转串口的驱动程序。 - - ![](figures/hi3861-record-the-serial-port-number.png) - -3. 打开DevEco Device Tool,在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 - - ![](figures/hi3861-deveco-device-tool-setting.png) - -4. 在“Partition Configuration”页签,设置待烧录文件信息,默认情况下,DevEco Device Tool已针对Hi3861V100开发板进行适配,无需单独修改。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果待烧录文件是直接通过拷贝的方式获取,需要手动修改待烧录文件的路径。打开待烧录文件的页签,在Partition Settings的New Opiton的下拉列表中,选择Partition\_bin,然后在Partition Opiton的Partition\_bin设置待烧录文件的路径。 - -5. 在“hi3861”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 - - - upload\_port:选择步骤2中查询的串口号。 - - upload\_protocol:选择烧录协议,Windows系统可以选择“burn-serial”或“hiburn-serial”,Linux系统只能选择“hiburn-serial”。 - - upload\_partitions:选择待烧录的文件,默认选择hi3861\_app。 - - ![](figures/options.png) - -6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 -7. 打开工程文件,在DevEco Device Tool界面的“PROJECT TASKS”中,点击hi3861下的**Upload**按钮,启动烧录。 - - ![](figures/hi3861-upload.png) - -8. 启动烧录后,显示如下提示信息时,请按开发板上的RST按钮重启开发板。 - - ![](figures/hi3861-restart-the-development-board.png) - -9. 重新上电后,界面提示如下信息时,表示烧录成功。 - - ![](figures/hi3861-burning-succeeded.png) - - -## WLAN模组联网 - -完成版本构建及烧录后,下面开始介绍如何在串口终端上执行AT命令,使WLAN模组联网。 - -1. 保持Windows工作台和WLAN模组的连接状态,在DevEco工具最下方,点击“DevEco:Serial Monitor”按钮。 - - **图 7** 打开DevEco串口终端示意图 - ![](figures/打开DevEco串口终端示意图.png "打开DevEco串口终端示意图") - -2. 复位WLAN模组,终端界面显示“ready to OS start”,则启动成功。 - - **图 8** WLAN复位成功示意图 - ![](figures/WLAN复位成功示意图.png "WLAN复位成功示意图") - -3. 在DevEco的串口终端中,依次执行如下AT命令,启动STA模式,连接指定AP热点,并开启DHCP功能。 - - ``` - AT+STARTSTA # 启动STA模式 - AT+SCAN # 扫描周边AP - AT+SCANRESULT # 显示扫描结果 - AT+CONN="SSID",,2,"PASSWORD" # 连接指定AP,其中SSID/PASSWORD为待连接的热点名称和密码 - AT+STASTAT # 查看连接结果 - AT+DHCP=wlan0,1 # 通过DHCP向AP请求wlan0的IP地址 - ``` - -4. 查看WLAN模组与网关联通是否正常,如下图所示。 - - ``` - AT+IFCFG # 查看模组接口IP - AT+PING=X.X.X.X # 检查模组与网关的联通性,其中X.X.X.X需替换为实际的网关地址 - ``` - - **图 9** WLAN模组联网成功示意图 - ![](figures/WLAN模组联网成功示意图.png "WLAN模组联网成功示意图") - - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-debug.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-debug.md new file mode 100644 index 0000000000000000000000000000000000000000..650fe58a81a2a6c6abd971c07ab222c299638ec5 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-debug.md @@ -0,0 +1,61 @@ +# 调试验证 + +- [printf打印](#section42891145143811) +- [根据asm文件进行问题定位](#section754719373917) + +完成烧录之后,用户可根据需要进行调试验证。目前调试验证的方法有以下两种,开发者可以根据具体业务情况选择。 + +1. 通过printf打印日志 +2. 通过asm文件定位panic问题 + +由于本示例业务简单,采用printf打印日志的调试方式即可。下方将介绍这两种调试手段的使用方法。 + +## printf打印 + +代码中增加printf维测,信息会直接打印到串口上。开发者可在业务关键路径或业务异常位置增加日志打印,如下所示: + +``` +void HelloWorld(void) +{ + printf("[DEMO] Hello world.\n"); +} +``` + +## 根据asm文件进行问题定位 + +系统异常退出时,会在串口上打印异常退出原因调用栈信息,如下文所示。通过解析异常栈信息可以定位异常位置。 + +``` +=======KERNEL PANIC======= +**********************Call Stack********************* +Call Stack 0 -- 4860d8 addr:f784c +Call Stack 1 -- 47b2b2 addr:f788c +Call Stack 2 -- 3e562c addr:f789c +Call Stack 3 -- 4101de addr:f78ac +Call Stack 4 -- 3e5f32 addr:f78cc +Call Stack 5 -- 3f78c0 addr:f78ec +Call Stack 6 -- 3f5e24 addr:f78fc +********************Call Stack end******************* +``` + +为解析上述调用栈信息,需要使用到Hi3861\_wifiiot\_app.asm文件,该文件记录了代码中函数在Flash上的符号地址以及反汇编信息。asm文件会随版本打包一同构建输出,存放在./out/wifiiot/路径下。 + +1. 将调用栈CallStack信息保存到txt文档中,以便于编辑。(可选) +2. 打开asm文件,并搜索CallStack中的地址,列出对应的函数名 信息。通常只需找出前几个栈信息对应的函数,就可明确异常代码方向。 + + ``` + Call Stack 0 -- 4860d8 addr:f784c -- WadRecvCB + Call Stack 1 -- 47b2b2 addr:f788c -- wal_sdp_process_rx_data + Call Stack 2 -- 3e562c addr:f789c + Call Stack 3 -- 4101de addr:f78ac + Call Stack 4 -- 3e5f32 addr:f78cc + Call Stack 5 -- 3f78c0 addr:f78ec + Call Stack 6 -- 3f5e24 addr:f78fc + ``` + +3. 根据以上调用栈信息,可以定位WadRecvCB函数中出现了异常。 + + ![](figures/zh-cn_image_0000001185334336.png) + +4. 完成代码排查及修改。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-faqs.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-faqs.md index 1cb090d8a65686c9a940bc15efc87e5d76991389..3bb3f5cef0edb16f7b512623eaa8277d2174de58 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-faqs.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-faqs.md @@ -1,116 +1,17 @@ -# 常见问题 +# 常见问题 -- [安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”](#section1221016541119) -- [安装python3过程中,提示“-bash: make: command not found”](#section1913477181213) -- [安装python3过程中,提示“zlib not available”](#section108211415131210) -- [安装python3过程中,提示“No module named '\_ctypes'”](#section2062268124) - [编译构建过程中,提示“No module named 'Crypto'”](#section982315398121) - [编译构建过程中,提示“No module named 'ecdsa'”](#section102035451216) - [编译构建过程中,提示“Could not find a version that satisfies the requirement six\>=1.9.0”](#section4498158162320) - [编译构建过程中,提示找不到“-lgcc”](#section11181036112615) - [编译构建过程中,提示找不到“python”](#section1571810194619) - [编译构建过程中,提示找不到“python3”](#section108385316482) +- [安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH”](#section1221016541119) +- [安装python3过程中,提示“-bash: make: command not found”](#section1913477181213) +- [安装python3过程中,提示“zlib not available”](#section108211415131210) +- [安装python3过程中,提示“No module named '\_ctypes'”](#section2062268124) - [安装 kconfiglib时,遇到lsb\_release错误](#section691681635814) -## 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH” - -- **现象描述** - - 安装python3过程中出现以下错误: - - ``` - configure: error: no acceptable C compiler found in $PATH. See 'config.log' for more details - ``` - -- **可能原因** - - 环境中未安装“gcc”。 - -- **解决办法** - - 1、通过命令“apt-get install gcc”在线安装。 - - 2、完成后,重新安装python3。 - - -## 安装python3过程中,提示“-bash: make: command not found” - -- **现象描述** - - 安装python3过程中出现以下错误: - - ``` - -bash: make: command not found - ``` - -- **可能原因** - - 环境中未安装“make”。 - -- **解决办法** - - 1、通过命令“apt-get install make”在线安装。 - - 2、完成后,重新安装python3。 - - -## 安装python3过程中,提示“zlib not available” - -- **现象描述** - - 安装python3过程中出现以下错误: - - ``` - zipimport.ZipImportError: can't decompress data; zlib not available - ``` - -- **可能原因** - - 环境中未安装“zlib”。 - -- **解决办法** - - 方法1:通过命令“apt-get install zlib”在线安装。 - - 方法2:如果软件源中没有该软件,请从“www.zlib.net”下载版本代码,并离线安装。 - - ![](figures/download-zlib.png) - - 完成下载后,通过以下命令安装: - - ``` - # tar xvf zlib-1.2.11.tar.gz - # cd zlib-1.2.11 - # ./configure - # make && make install - ``` - - 完成后,重新安装python3。 - - -## 安装python3过程中,提示“No module named '\_ctypes'” - -- **现象描述** - - 安装python3过程中出现以下错误: - - ``` - ModuleNotFoundError:No module named ‘_ctypes’ - ``` - - -- **可能原因** - - 环境中未安装“libffi”和“libffi-devel”。 - - -- **解决办法** - - 1、通过命令“apt-get install libffi\* -y”,在线安装。 - - 2、完成后,重新安装python3。 - - ## 编译构建过程中,提示“No module named 'Crypto'” - **现象描述** @@ -131,11 +32,11 @@ 方法1:通过命令“pip3 install Crypto”,在线安装。 - 方法2:离线安装 + 方法2:离线安装。 通过网页[https://pypi.org/project/pycrypto/\#files](https://pypi.org/project/pycrypto/#files),下载源码。 - ![](figures/Download-the-source-code.png) + ![](figures/zh-cn_image_0000001171615542.png) 将源码放置在Linux服务器中,解压,并安装“python3 setup.py install”。 @@ -166,7 +67,7 @@ 通过网页[https://pypi.org/project/ecdsa/\#files](https://pypi.org/project/ecdsa/#files),下载安装包。 - ![](figures/download-ecdsa.png) + ![](figures/zh-cn_image_0000001171455574.png) 将安装包放置Linux服务器中,并安装“pip3 install ecdsa-0.15-py2.py3-none-any.whl”。 @@ -193,11 +94,11 @@ 方法1:通过命令“pip3 install six”,在线安装。 - 方法2:离线安装 + 方法2:离线安装。 通过网页[https://pypi.org/project/six/\#files](https://pypi.org/project/six/#files),下载安装包。 - ![](figures/download-six.png) + ![](figures/zh-cn_image_0000001217013871.png) 将源码放置在Linux服务器中,并安装“pip3 install six-1.14.0-py2.py3-none-any.whl”。 @@ -250,15 +151,21 @@ - **解决办法** - 请按照[安装Python环境](../quick-start/quickstart-lite-env-setup-linux.md) + 请使用如下命令安装Python,下方以Python3.8为例。 + + ``` + sudo apt-get install python3.8 + ``` - **可能原因2** - ![](figures/reason-no-python-soft-link.png) + usr/bin目录下没有python软链接 + + ![](figures/zh-cn_image_0000001171774098.png) - **解决办法** - usr/bin目录下没有python软链接,请运行以下命令添加软链接: + 请运行以下命令添加软链接: ``` # cd /usr/bin/ @@ -269,7 +176,7 @@ 例: - ![](figures/solution-add-soft-link.png) + ![](figures/zh-cn_image_0000001171934032.png) ## 编译构建过程中,提示找不到“python3” @@ -285,7 +192,106 @@ - **解决办法** - 请按照[安装python](../quick-start/quickstart-lite-env-setup-linux.md)。 + 请使用如下命令安装Python3。 + + ``` + sudo apt-get install python3.8 + ``` + + +## 安装python3过程中,提示“configure: error: no acceptable C compiler found in $PATH” + +- **现象描述** + + 安装python3过程中出现以下错误: + + ``` + configure: error: no acceptable C compiler found in $PATH. See 'config.log' for more details + ``` + +- **可能原因** + + 环境中未安装“gcc”。 + +- **解决办法** + 1. 通过命令“apt-get install gcc”在线安装。 + 2. 完成后,重新安装python3。 + + +## 安装python3过程中,提示“-bash: make: command not found” + +- **现象描述** + + 安装python3过程中出现以下错误: + + ``` + -bash: make: command not found + ``` + +- **可能原因** + + 环境中未安装“make”。 + +- **解决办法** + 1. 通过命令“apt-get install make”在线安装。 + 2. 完成后,重新安装python3。 + + +## 安装python3过程中,提示“zlib not available” + +- **现象描述** + + 安装python3过程中出现以下错误: + + ``` + zipimport.ZipImportError: can't decompress data; zlib not avaliable + ``` + +- **可能原因** + + 环境中未安装“zlib”。 + +- **解决办法** + + 方法1:通过命令“apt-get install zlib”在线安装。 + + 方法2:如果软件源中没有该软件,请从“www.zlib.net”下载版本代码,并离线安装。 + + ![](figures/10.png) + + 完成下载后,通过以下命令安装: + + ``` + # tar xvf zlib-1.2.11.tar.gz + # cd zlib-1.2.11 + # ./configure + # make && make install + ``` + + 完成后,重新安装python3。 + + +## 安装python3过程中,提示“No module named '\_ctypes'” + +- **现象描述** + + 安装python3过程中出现以下错误: + + ``` + ModuleNotFoundError:No module named ‘_ctypes’ + ``` + + +- **可能原因** + + 环境中未安装“libffi”和“libffi-devel”。 + + +- **解决办法** + + 1、通过命令“apt-get install libffi\* -y”,在线安装。 + + 2、完成后,重新安装python3。 ## 安装 kconfiglib时,遇到lsb\_release错误 @@ -300,10 +306,10 @@ - **可能原因** - lsb\_release模块基于的python版本与现有python版本不一致 + lsb\_release模块基于的python版本与现有python版本不一致。 - **解决办法** - 执行"find / -name lsb\_release",找到lsb\_release位置并删除,如:"sudo rm -rf /usr/bin/lsb\_release" + 执行"find / -name lsb\_release",找到lsb\_release位置并删除,如:"sudo rm -rf /usr/bin/lsb\_release"。 diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-setting.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-setting.md index 605278dc01cfef48b688d4fb048042ac794b85a7..8296fe1831a1bfa2f4b80a99e3139e33248087cb 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-setting.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-setting.md @@ -1,4 +1,4 @@ -# 安装开发板环境 +# 安装开发板环境 - [Hi3861工具要求](#section466851916410) - [硬件要求](#section19202111020215) @@ -10,85 +10,49 @@ - [安装python模块](#section88701892341) - [安装gcc\_riscv32(WLAN模组类编译工具链)](#section34435451256) -- [安装USB转串口驱动](#section1027732411513) ## Hi3861工具要求 ### 硬件要求 -- Linux服务器 -- Windows工作台(主机电脑) -- Hi3861 WLAN模组 -- USB Type-C线(Windows工作台通过USB与Hi3861 WLAN模组连接) - -各硬件连接关系如下图所示。 - -**图 1** Hi3861开发硬件连线图 -![](figures/Hi3861开发硬件连线图.png "Hi3861开发硬件连线图") +- Linux工作台 +- Hi3861开发板 +- USB Type-C线(Linux工作台通过USB与Hi3861开发板连接) ### 软件要求 >![](../public_sys-resources/icon-notice.gif) **须知:** ->本节描述采用安装包方式安装相关工具的操作步骤。如果是Docker方式安装,无需安装[表1](#table6299192712513)中的Linux服务器相关工具,只需安装Windows工作台工具即可。 +>本节描述采用安装包方式安装相关工具的操作步骤。如果使用Docker方式安装,无需安装[表1](#table6299192712513)中的相关工具,请直接从[新建应用程序](quickstart-lite-steps-hi3861-application-framework.md)开始操作。 Hi3861开发板需要的工具如下表所示。 -**表 1** Hi3861开发板需要的工具 +**表 1** Hi3861开发板需要安装的工具 -

开发工具

用途

-

获取途径

+

用途

bash

-

命令行处理工具

+

编译基础软件包(仅ubuntu 20+需要)

系统配置

+

编译依赖的基础软件包

编译基础软件包(仅ubuntu 20+需要)

+

dosfstools、mtools、mtd-utils

编译依赖的基础软件包

-

通过互联网获取

+

文件打包工具

dosfstools、mtools、mtd-utils

-

文件打包工具

+

Java 虚拟机环境

通过apt-get install安装

-

Java虚拟机环境

-

编译、调试和运行Java程序

-

通过apt-get install安装

+

编译、调试和运行Java程序

bash

-

命令行处理工具

-

系统配置

-

编译基础软件包(仅ubuntu 20+需要)

+

编译基础软件包(仅ubuntu 20+需要)

编译依赖的基础软件包

- -

平台类型

-

开发工具

-

用途

+ - - - - - - - - - - - - - - - - - - - - - - @@ -96,10 +60,6 @@ Hi3861开发板需要的工具如下表所示。 ## 安装Linux编译工具 ->![](../public_sys-resources/icon-notice.gif) **须知:** ->- 如果通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gcc\_riscv32编译工具。 ->- (推荐)如果通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gcc\_riscv32编译工具。安装gcc\_riscv32编译工具时,请确保编译工具的环境变量路径唯一。 - ### 安装编译依赖基础软件(仅Ubuntu 20+需要) 执行以下命令进行安装: @@ -110,20 +70,19 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev ### 安装Scons -1. 打开Linux编译服务器终端。 -2. 运行如下命令,安装SCons安装包。 +1. 运行如下命令,安装SCons安装包。 ``` python3 -m pip install scons ``` -3. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。 +2. 运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。 ``` scons -v ``` - **图 2** SCons安装成功界面,版本要求3.0.4以上 + **图 1** SCons安装成功界面,版本要求3.0.4以上 ![](figures/SCons安装成功界面-版本要求3-0-4以上.png "SCons安装成功界面-版本要求3-0-4以上") @@ -219,14 +178,14 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev ### 安装gcc\_riscv32(WLAN模组类编译工具链) >![](../public_sys-resources/icon-notice.gif) **须知:** ->- Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,以免产品需遵从GPLV3许可证。 ->- 通过下述步骤2-15,我们编译好了gcc\_riscv32镜像,提供给开发者[直接下载](https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz)使用。直接下载gcc\_riscv32镜像的开发者可省略下述2-15步。 +>- Hi3861开发板平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,以免产品需遵从GPLV3许可证。 +>- 通过下述步骤2-15,我们编译好了gcc\_riscv32 镜像,提供给开发者[直接下载](https://repo.huaweicloud.com/harmonyos/compiler/gcc_riscv32/7.3.0/linux/gcc_riscv32-linux-7.3.0.tar.gz)使用。直接下载 gcc\_riscv32 镜像的开发者可省略下述2-15步。 1. 打开Linux编译服务器终端。 2. 环境准备,请安装"gcc, g++, bison, flex, makeinfo"软件,确保工具链能正确编译。 ``` - sudo apt-get install gcc g++ flex bison texinfo + sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install flex bison && sudo apt-get install texinfo ``` 3. 下载riscv-gnu-toolchain交叉编译工具链。 @@ -308,19 +267,10 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev 16. 设置环境变量。 >![](../public_sys-resources/icon-note.gif) **说明:** - >如果直接采用编译好的riscv32 gcc包,请参照如下步骤设置环境变量: - >1. 将压缩包解压到根目录 - > ``` - > tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ - > ``` - >2. 设置环境变量。 - > ``` - > vim ~/.bashrc - > ``` - >3. 将以下命令拷贝到.bashrc文件的最后一行,保存并退出。 - > ``` - > export PATH=~/gcc_riscv32/bin:$PATH - > ``` + >如果直接采用编译好的riscv32 gcc包,请先执行以下命令将压缩包解压到根目录: + >``` + >tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~ + >``` ``` vim ~/.bashrc @@ -345,14 +295,3 @@ sudo apt-get install build-essential gcc g++ make zlib* libffi-dev ``` -## 安装USB转串口驱动 - -相关步骤在Windows工作台操作。 - -1. 点击链接[下载CH341SER USB转串口](http://www.hihope.org/download/download.aspx?mtt=8)驱动程序。 -2. 点击安装包,安装驱动程序。 -3. 驱动安装完成后,重新插拔USB接口,串口信息显示如下图所示。 - - ![](figures/serial-port-entry.png) - - diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861.md index e746563d9f13f1a76050f7417a7ce308eef4ff47..21059f2437a3bd439d40db4779330011e90c9988 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861.md @@ -1,10 +1,16 @@ -# Hi3861开发板 +# Hi3861开发板 - **[安装开发板环境](quickstart-lite-steps-hi3861-setting.md)** -- **[WLAN联网(编译、烧录)](quickstart-lite-steps-hi3861-connection.md)** +- **[新建应用程序](quickstart-lite-steps-hi3861-application-framework.md)** -- **[运行Hello World](quickstart-lite-steps-hi3861-running.md)** +- **[编译](quickstart-lite-steps-hi3861-building.md)** + +- **[烧录](quickstart-lite-steps-hi3861-burn.md)** + +- **[调试验证](quickstart-lite-steps-hi3861-debug.md)** + +- **[运行](quickstart-lite-steps-hi3816-running.md)** - **[常见问题](quickstart-lite-steps-hi3861-faqs.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite-steps.md b/zh-cn/device-dev/quick-start/quickstart-lite-steps.md index 73a0910af66ad866ae70c5cc2865fc07c855c364..43f31a4215b9d7d8fe75b01bd7c15bcec91b0c48 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite-steps.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite-steps.md @@ -1,4 +1,4 @@ -# 开发步骤 +# 运行“Hello World” - **[Hi3861开发板](quickstart-lite-steps-hi3861.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-lite.md b/zh-cn/device-dev/quick-start/quickstart-lite.md index 97277619cee5967b91636f6db4ba6b89c0083994..8fb31f485fa0783889855941e8f0ac1beb2df47c 100644 --- a/zh-cn/device-dev/quick-start/quickstart-lite.md +++ b/zh-cn/device-dev/quick-start/quickstart-lite.md @@ -1,11 +1,11 @@ # 轻量和小型系统入门 -- **[概述](quickstart-lite-overview.md)** +- **[轻量与小型系统入门概述](quickstart-lite-overview.md)** -- **[入门介绍](quickstart-lite-introduction.md)** +- **[搭建轻量与小型系统环境](quickstart-lite-env-setup.md)** -- **[搭建系统环境](quickstart-lite-env-setup.md)** +- **[运行“Hello World”](quickstart-lite-steps.md)** -- **[开发步骤](quickstart-lite-steps.md)** +- **[附录](quickstart-lite-introduction.md)** diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-appendix-hi3516.md b/zh-cn/device-dev/quick-start/quickstart-standard-appendix-hi3516.md new file mode 100644 index 0000000000000000000000000000000000000000..632fb20062a69a44f98fdf81542a5d15475ff3a3 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-appendix-hi3516.md @@ -0,0 +1,40 @@ +# Hi3516开发板介绍 + +- [开发板简介](#zh-cn_topic_0000001053666242_section047719215429) +- [开发板规格](#zh-cn_topic_0000001053666242_section15192203316533) + +## 开发板简介 + +Hi3516DV300是新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP\(Image Signal Processor\)、H.265视频压缩编码器、高性能NNIE引擎,在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。 + +**图 1** Hi3516单板正面外观图 +![](figures/Hi3516单板正面外观图.png "Hi3516单板正面外观图") + +## 开发板规格 + +**表 1** Hi3516开发板规格清单 + + +

开发工具

获取途径

+

用途

Linux服务器

+

编译基础软件包(仅ubuntu 20+需要)

编译基础软件包(仅ubuntu 20+需要)

-

编译依赖的基础软件包

-

通过互联网获取

+

编译依赖的基础软件包

Linux服务器

-

SCons3.0.4+

+

SCons3.0.4+

编译构建工具

-

通过互联网获取

+

编译构建工具

Linux服务器

-

python模块:setuptools、kconfiglib、pycryptodome、six、ecdsa

-

编译构建工具

+

python模块:setuptools、kconfiglib、pycryptodome、six、ecdsa

通过互联网获取

+

编译构建工具

Linux服务器

+

gcc riscv32

gcc riscv32

-

编译构建工具

-

通过互联网获取

-

Windows工作台

-

CH341SER.EXE

-

USB转串口驱动

-

http://www.wch.cn/search?q=ch340g&t=downloads

+

编译构建工具

+ + + + + + + + + + +

规格类型

+

规格清单

+

处理器及内部存储

+
  • Hi3516DV300芯片
  • DDR3 1GB
  • eMMC4.5,8GB容量
+

外部器件

+
  • 以太网口
  • 音频视频
    • 1路语音输入
    • 1路单声道(AC_L)输出,接3W功放(LM4871)
    • MicroHDMI(1路HDMI 1.4)
    +
  • 摄像头
    • 传感器IMX335
    • 镜头M12,焦距4mm,光圈1.8
    +
  • 显示屏
    • LCD连接器(2.35寸)
    • LCD连接器(5.5寸)
    +
  • 外部器件及接口
    • SD卡接口
    • JTAG/I2S接口
    • ADC接口
    • 舵机接口
    • Grove连接器
    • USB2.0(Type C)
    • 功能按键3个,2个用户自定义按键,1个升级按键
    • LED指示灯,绿灯,红灯
    +
+
+ diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-appendix-rk3568.md b/zh-cn/device-dev/quick-start/quickstart-standard-appendix-rk3568.md new file mode 100644 index 0000000000000000000000000000000000000000..08b9ab4a903be35c5c647b55701dc0caa1c1309f --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-appendix-rk3568.md @@ -0,0 +1,124 @@ +# RK3568开发板介绍 + +- [开发板简介](#zh-cn_topic_0000001053666242_section047719215429) +- [开发板规格](#zh-cn_topic_0000001053666242_section15192203316533) + +## 开发板简介 + +RK3568开发板基于Rockchip RK3568芯片,集成双核心架构GPU以及高效能NPU;搭载四核64位Cortex-A55处理器,采用22nm先进工艺,主频高达2.0GHz;支持蓝牙、Wi-Fi、音频、视频和摄像头等功能,拥有丰富的扩展接口,支持多种视频输入输出接口;配置双千兆自适应RJ45以太网口,可满足NVR、工业网关等多网口产品需求。 + +**图 1** RK3568开发板正面 +![](figures/RK3568开发板正面.png "RK3568开发板正面") + +**图 2** RK3568开发板背面 +![](figures/RK3568开发板背面.png "RK3568开发板背面") + +## 开发板规格 + +**表 1** RK3568开发板规格说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

规格类型

+

规格清单

+

显示接口

+
  • 1×HDMI2.0(Type-A)接口,支持4K/60fps输出
  • 2×MIPI接口,支1920*1080@60fps输出
  • 1×eDP接口,支持2K@60fps输出
+

音频接口

+
  • 1×8ch I2S/TDM/PDM
  • 1×HDMI音频输出
  • 1×喇叭输出
  • 1×耳机输出
  • 1×麦克风,板载音频输入
+

以太网

+
  • 2×GMAC(10/100/1000M)
+

无线网络

+
  • SDIO接口,支持WIFI6 5G/2.5G,BT4.2
+

摄像头接口

+
  • MIPI-CSI2,1x4-lane/2x2-lane@2.5Gbps/lane
+

USB

+
  • 2×USB2.0 Host,Type-A
  • 1×USB3.0 Host,Type-A
  • 1×USB3.0 OTG
+

PCIe

+
  • 1×2Lanes PCIe3.0 Connector (RC Mode)
+

SATA

+
  • 1×SATA3.0 Connector
+

SDMMC

+
  • 1×Micro SD Card3.0
+

按键

+
  • 1×Vol+/Recovery
  • 1×Reset
  • 1×Power
  • 1×Vol-
  • 1×Mute
+

调试

+
  • 1×调试串口
+

RTC

+
  • 1×RTC
+

IR

+
  • 1×IR
+

三色灯

+
  • 3×LED
+

G-sensor

+
  • 1×G-sensor
+

FAN

+
  • 1×Fan
+

扩展接口

+
  • 20Pin扩展接口包括:
  • 2×ADC接口
  • 2×I2C接口
  • 7×GPIO口(或者3×gpio + 4×uart信号)
  • 3×VCC电源(12V、3.3V、5V)
+

底板尺寸

+
  • 180mm×130mm
+

PCB规格

+
  • 4 层板
+
+ diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-appendix.md b/zh-cn/device-dev/quick-start/quickstart-standard-appendix.md new file mode 100644 index 0000000000000000000000000000000000000000..7eaf5733743a9f3688c10c0d99952235df1f89b9 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-appendix.md @@ -0,0 +1,7 @@ +# 附录 + +- **[Hi3516开发板介绍](quickstart-standard-appendix-hi3516.md)** + +- **[RK3568开发板介绍](quickstart-standard-appendix-rk3568.md)** + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-burn.md b/zh-cn/device-dev/quick-start/quickstart-standard-burn.md deleted file mode 100644 index c6f0914067095c93d9f13c8a2bae47764cedddcf..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-standard-burn.md +++ /dev/null @@ -1,72 +0,0 @@ -# 镜像烧录 - -- [前提条件](#section18547185418328) -- [使用网口烧录](#section1965361953312) - -标准系统烧录,在V2.2 Beta1及以上版本支持。 - -Hi3516DV300支持烧录标准系统,其烧录方式包括USB烧录、网口烧录和串口烧录三种方式,其中: - -- **Windows系统:支持USB烧录、网口烧录和串口烧录**。 -- **Linux系统:支持串口烧录和网口烧录。** - -同一种烧录方式(如网口烧录),在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。 - ->![](../public_sys-resources/icon-note.gif) **说明:** ->当前Hi3516DV300开发板支持通过网口、USB、串口三种方式烧录OpenHarmony标准系统。本文以网口方式为例讲解烧录操作,其他两种烧录方式请参照[Hi3516DV300烧录指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)。 - -## 前提条件 - -在DevEco Device Tool中,选择**Import Project**打开待烧录文件所在文件夹,其中MCU选择**HiSilicon\_Arm\_Linux**下的Hi3516DV300,Framework选择“Ohos-sources”或“Hpm”。 - -![](figures/hisilicon-arm-linux.png) - -## 使用网口烧录 - -Hi3516DV300开发板使用网口烧录方式,支持Windows和Linux系统。 - -1. 请连接好电脑和待烧录开发板,需要同时连接串口、网口和电源,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_des_3516-0000001152041033)。 -2. 打开电脑的设备管理器,查看并记录对应的串口号。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 - - ![](figures/hi3516-record-the-serial-port-number.png) - -3. 打开DevEco Device Tool,在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 - - ![](figures/hi3516-deveco-device-tool-setting.png) - -4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_port、upload\_partitions和upload\_protocol。 - - - upload\_port:选择步骤[2](#zh-cn_topic_0000001056443961_li1050616379507)中查询的串口号。 - - upload\_protocol:选择烧录协议,固定选择“hiburn-net”。 - - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、boot、updater、misc、system、vendor和userdata。 - - ![](figures/upload-options-1.png) - -5. 检查和设置连接开发板后的网络适配器的IP地址信息,设置方法请参考[设置Hi3516DV300网口烧录的IP地址信息](https://device.harmonyos.com/cn/docs/ide/user-guides/set_ipaddress-0000001141825075)。 -6. 设置网口烧录的IP地址信息,设置如下选项: - - - upload\_net\_server\_ip:选择步骤5中设置的IP地址信息。例如192.168.1.2 - - upload\_net\_client\_mask:设置开发板的子网掩码,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如255.255.255.0 - - upload\_net\_client\_gw:设置开发板的网关,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.1 - - upload\_net\_client\_ip:设置开发板的IP地址,工具会自动根据选择的upload\_net\_server\_ip进行设置。例如192.168.1.3 - - ![](figures/ip-address-information-2.png) - -7. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 -8. 打开工程文件,点击![](figures/2021-01-27_170334.png)图标,打开DevEco Device Tool界面,在“PROJECT TASKS”中,点击hi3516dv300下的**Upload**按钮,启动烧录。 - - ![](figures/zh-cn_image_0000001215342695.png) - -9. 启动烧录后,显示如下提示信息时,请重启开发板(下电再上电)。 - - ![](figures/hi3516-restart-the-development-board.png) - -10. 重新上电后,界面提示如下信息时,表示烧录成功。 - - ![](figures/hi3516-burning-succeeded-net.png) - -11. 烧录完成后,请根据[标准系统镜像运行](https://device.harmonyos.com/cn/docs/start/introduce/quickstart-standard-running-0000001142160948)进行下一步操作,完成系统启动。 - diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-env-setup.md b/zh-cn/device-dev/quick-start/quickstart-standard-env-setup.md new file mode 100644 index 0000000000000000000000000000000000000000..e211b8ba3126aa456ab25efd42272f9d5019250d --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-env-setup.md @@ -0,0 +1,73 @@ +# 开发环境准备 + +- [系统要求](#zh-cn_topic_0000001072959308_section1865184385215) +- [安装DevEco Device Tool](#zh-cn_topic_0000001072959308_section86587531620) + +DevEco Device Tool Ubuntu版本支持OpenHarmony源码开发、编译、烧录的一站式开发环境,因此,本章节为您介绍在Ubuntu环境下,如何搭建一套完整的可视化开发环境。 + +## 系统要求 + +- Ubuntu18及以上版本,内存推荐16 GB及以上。 +- 系统的用户名不能含有中文字符。 +- 只能使用普通用户角色搭建开发环境。 + +## 安装DevEco Device Tool + +DevEco Device Tool基于Visual Studio Code进行扩展,在Visual Studio Code上以插件方式运行,Visual Studio Code版本为1.60及以上。同时,DevEco Device Tool还依赖Python工具,并要求Python为3.8\~3.9版本。 + +在安装过程中,DevEco Device Tool会自动检查Visual Studio Code和Python,如果检测到Visual Studio Code、Python未安装或版本不符合要求,安装程序会自动安装Visual Studio Code和Python。 + +1. 将Ubuntu Shell环境修改为bash。 + 1. 执行如下命令,确认输出结果为bash。如果输出结果不是bash,请根据步骤2,将Ubuntu shell修改为bash。 + + ``` + ls -l /bin/sh + ``` + + ![](figures/zh-cn_image_0000001194078294.png) + + 2. 打开终端工具,执行如下命令,输入密码,然后选择**No**,将Ubuntu shell由dash修改为bash。 + + ``` + sudo dpkg-reconfigure dash + ``` + + ![](figures/zh-cn_image_0000001238878219.png) + +2. 下载[DevEco Device Tool 3.0 Beta2](https://device.harmonyos.com/cn/ide#download_beta)Linux版本,下载时,请先使用华为开发者帐号进行登录后下载。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)。 +3. 解压DevEco Device Tool软件包并对解压后的文件夹进行赋权。 + 1. 进入DevEco Device Tool软件包目录,执行如下命令解压软件包,其中devicetool-linux-tool-3.0.0.200.zip为软件包名称,请根据实际进行修改。 + + ``` + unzip devicetool-linux-tool-3.0.0.300.zip + ``` + + 2. 进入解压后的文件夹,执行如下命令,赋予安装文件可执行权限,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。 + + ``` + chmod u+x devicetool-linux-tool-3.0.0.300.sh + ``` + +4. 执行如下命令,安装DevEco Device Tool,其中devicetool-linux-tool-3.0.0.300.sh请根据实际进行修改。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >安装过程中,会自动检查Visual Studio Code和Python是否安装,且版本符合要求,其中Visual Studio Code为1.60及以上版本,Python为3.8\~3.9版本。如果不满足,则安装过程中会自动安装,提示“Do you want to continue?”,请输入“Y”后继续安装。 + + ``` + sudo ./devicetool-linux-tool-3.0.0.300.sh -- --install-plugins + ``` + + 安装完成后,当界面输出“Deveco Device Tool successfully installed.”时,表示DevEco Device Tool安装成功。 + + ![](figures/zh-cn_image_0000001239348791.png) + +5. 安装完成后,在Ubuntu左下角的![](figures/zh-cn_image_0000001075566984.png)中,启动Visual Studio Code。 +6. 启动Visual Studio Code,DevEco Device Tool运行依赖C/C++、CodeLLDB插件,请点击Visual Studio Code左侧的![](figures/button.png)按钮,分别搜索和安装C/C++、CodeLLDB插件。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果在插件市场安装C/C++和CodeLLDB插件不成功,可手动下载插件后进行安装,具体请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/documentation/guide/offline_plugin_install-0000001074376846)。 + + ![](figures/deveco-device-tool-install-sucessful.png) + +7. 重启Visual Studio Code,点击![](figures/zh-cn_image_0000001239226427.png)进入DevEco Device Tool工具界面。至此,DevEco Device Tool Ubuntu开发环境安装完成。![](figures/zh-cn_image_0000001194668634.png) + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-faqs.md b/zh-cn/device-dev/quick-start/quickstart-standard-faqs.md index 4ba7d75f276c617cb9f7929067aef30c85a17df4..ceb23edfe59b48dfc36d540e01025f6ed289e313 100644 --- a/zh-cn/device-dev/quick-start/quickstart-standard-faqs.md +++ b/zh-cn/device-dev/quick-start/quickstart-standard-faqs.md @@ -1,8 +1,12 @@ -# 常见问题 +# 常见问题 + +- [编译构建过程中,提示"ImportError: No module named apt\_pkg"](#section1864714601214) + +## 编译构建过程中,提示"ImportError: No module named apt\_pkg" - **现象描述** - Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt\_pkg" + Linux编译服务器终端输入不识别的命令时,提示"ImportError: No module named apt\_pkg"。 - **可能原因** diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-overview.md b/zh-cn/device-dev/quick-start/quickstart-standard-overview.md index 2c5ddf87e7c85929d6828d2c54f73d3c2b6bae6f..6fd5b2c9ba337e34e6e877fa03b8ad09fa443abd 100644 --- a/zh-cn/device-dev/quick-start/quickstart-standard-overview.md +++ b/zh-cn/device-dev/quick-start/quickstart-standard-overview.md @@ -1,52 +1,23 @@ -# 入门介绍 +# 标准系统入门简介 - [快速入门流程](#section7825218111517) -- [开发板简介](#zh-cn_topic_0000001053666242_section047719215429) -- [开发板规格](#zh-cn_topic_0000001053666242_section15192203316533) -开发者可通过本文快速掌握OpenHarmony标准系统的环境搭建、编译、烧录、启动等操作。标准系统可以使用Windows环境进行开发、烧录,使用Linux环境进行编译。 +开发者可通过本文快速掌握OpenHarmony标准系统的环境搭建、编译、烧录、运行等操作。标准系统的开发有以下两种方法: -本文将以当前推荐的Hi3516DV300开发板为例对上述操作进行说明。 +- 使用Windows环境进行开发和烧录,使用Linux环境进行编译。 +- 统一使用Linux环境进行开发、编译和烧录。 + +因目前Windows系统不支持编译,暂时无法全部使用Windows环境进行开发,开发者可根据使用习惯选择合适的开发方法。 + +本文将介绍第二种方法,**所有操作均在Linux环境下进行**。 ## 快速入门流程 -标准系统快速入门流程如下图所示,其中“搭建Ubuntu环境及编译”环节可根据实际情况选择docker方式或工具包方式其中一种即可。 - -**图 1** 标准环境快速入门流程 -![](figures/标准环境快速入门流程.png "标准环境快速入门流程") - -## 开发板简介 - -Hi3516DV300作为新一代行业专用Smart HD IP摄像机SOC,集成新一代ISP\(Image Signal Processor\)、H.265视频压缩编码器,同时集成高性能NNIE引擎,使得Hi3516DV300在低码率、高画质、智能处理和分析、低功耗等方面引领行业水平。 - -**图 2** Hi3516单板正面外观图 -![](figures/Hi3516单板正面外观图-0.png "Hi3516单板正面外观图-0") - -## 开发板规格 - -**表 1** Hi3516开发板规格清单 - - - - - - - - - - - - - -

规格类型

-

规格清单

-

处理器及内部存储

-
  • Hi3516DV300芯片
  • DDR3 1GB
  • eMMC4.5,8GB容量
-

外部器件

-
  • 以太网口
  • 音频视频
    • 1路语音输入
    • 1路单声道(AC_L)输出,接3W功率放大器(LM4871)
    • MicroHDMI(1路HDMI 1.4)
    -
  • 摄像头
    • 传感器IMX335
    • 镜头M12,焦距4mm,光圈1.8
    -
  • 显示屏
    • LCD连接器(2.35寸)
    • LCD连接器(5.5寸)
    -
  • 外部器件及接口
    • SD卡接口
    • JTAG/I2S接口
    • ADC接口
    • 舵机接口
    • Grove连接器
    • USB2.0(Type C)
    • 功能按键3个,2个用户自定义按键,1个升级按键
    • LED指示灯,绿灯,红灯
    -
-
+标准系统快速入门流程如下图所示,其中编译源码环节可根据实际情况选择docker方式或安装包方式其中一种即可。 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>Docker环境已经封装了相关编译工具,开发者在使用该Docker环境时可以省去Ubuntu编译环境及开发板环境的的搭建操作。 + +**图 1** 标准系统快速入门流程 +![](figures/标准系统快速入门流程.png "标准系统快速入门流程") diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-package-environment.md b/zh-cn/device-dev/quick-start/quickstart-standard-package-environment.md deleted file mode 100644 index 3100bf73961fc2403f9621f03a07661358f3349c..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-standard-package-environment.md +++ /dev/null @@ -1,100 +0,0 @@ -# 搭建Ubuntu环境\(获取源码及编译,安装包方式\) - -- [安装依赖工具](#section18431165519244) -- [获取标准系统源码](#section113751052102517) - - [前提条件](#section102871547153314) - - [操作步骤](#section429012478331) - -- [执行prebuilts](#section0495320152619) -- [编译](#section1664835963517) - -## 安装依赖工具 - -安装命令如下: - -``` -sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby -``` - ->![](../public_sys-resources/icon-note.gif) **说明:** ->以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中Python要求安装Python 3.7及以上版本,此处以Python 3.8为例。 - -## 获取标准系统源码 - -### 前提条件 - -1. 注册码云gitee账号。 -2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。 -3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。 - - ``` - git config --global user.name "yourname" - git config --global user.email "your-email-address" - git config --global credential.helper store - ``` - -4. 安装码云repo工具,可以执行如下命令。 - - ``` - curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中 - chmod a+x /usr/local/bin/repo - pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests - ``` - - -### 操作步骤 - -可通过下方两种方式获取OpenHarmony主干代码,两种方式二选一即可。建议新建个文件夹,在此文件夹下执行以下命令,下载源码,此文件夹即为源码根目录。 - -方式一(推荐):通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 - -``` -repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify -repo sync -c -repo forall -c 'git lfs pull' -``` - -方式二:通过repo + https 下载。 - -``` -repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify -repo sync -c -repo forall -c 'git lfs pull' -``` - -## 执行prebuilts - -在源码根目录下执行脚本,安装编译器及二进制工具。 - -``` -bash build/prebuilts_download.sh -``` - -下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony\_2.0\_canary\_prebuilts下。 - -## 编译 - -在Linux环境进行如下操作: - -1. 进入源码根目录,执行如下命令进行版本编译。 - - ``` - ./build.sh --product-name {product_name} - ``` - - \{product\_name\}为当前版本支持的平台,比如:Hi3516DV300 - -2. 检查编译结果。编译完成后,log中显示如下: - - ``` - build system image successful. - =====build Hi3516DV300 successful. - ``` - - 编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。 - -3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-burn.md)。 - diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-docker-environment.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-build.md similarity index 30% rename from zh-cn/device-dev/quick-start/quickstart-standard-docker-environment.md rename to zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-build.md index 0065746573984364de78731874b2dc5233104441..1c1d1ceeb8138fff986d676151c5d0176f510815 100644 --- a/zh-cn/device-dev/quick-start/quickstart-standard-docker-environment.md +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-build.md @@ -1,63 +1,30 @@ -# 搭建Ubuntu环境\(获取源码及编译,Docker方式\) +# 源码编译 -- [获取标准系统源码](#section8761819202511) - - [前提条件](#section102871547153314) - - [操作步骤](#section429012478331) +- [使用Docker方式获取编译工具链](#section181431248132513) + - [执行prebuilts](#section111934551605) + - [安装Docker](#section1466184743915) + - [获取Docker环境](#section615912103552) -- [执行prebuilts](#section0495320152619) -- [获取Docker环境](#section181431248132513) -- [编译](#section92391739152318) - -OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。 - ->![](../public_sys-resources/icon-note.gif) **说明:** ->- 在使用Docker前需要先安装Docker,Docker安装请参考[官方指导](https://docs.docker.com/engine/install/ubuntu/)。 ->- Docker方式和安装包方式二选一即可。选择Docker方式的开发者可跳过[安装包方式](quickstart-standard-package-environment.md)的内容。 - -## 获取标准系统源码 - -### 前提条件 - -1. 注册码云gitee账号。 -2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。 -3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。 - - ``` - git config --global user.name "yourname" - git config --global user.email "your-email-address" - git config --global credential.helper store - ``` +- [使用安装包方式获取编译工具链](#section65647482593) + - [安装依赖工具](#section83441888010) + - [执行prebuilts](#section6389714142011) -4. 安装码云repo工具,可以执行如下命令。 - - ``` - curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中 - chmod a+x /usr/local/bin/repo - pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests - ``` +- [编译](#section92391739152318) +安装编译工具链后,即可对源码进行编译。在Linux环境下获取编译工具链有以下两种方式,二者选其一即可: -### 操作步骤 +1. Docker方式 -可通过下方两种方式获取OpenHarmony主干代码,两种方式二选一即可。建议新建个文件夹,在此文件夹下执行以下命令,下载源码,此文件夹即为源码根目录。 + OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。 -方式一(推荐):通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 +2. 安装包方式 -``` -repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify -repo sync -c -repo forall -c 'git lfs pull' -``` + 使用安装包方式获取编译工具链时,开发者需自行安装相应的依赖工具。 -方式二:通过repo + https 下载。 -``` -repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify -repo sync -c -repo forall -c 'git lfs pull' -``` +## 使用Docker方式获取编译工具链 -## 执行prebuilts +### 执行prebuilts 在源码根目录下执行脚本,安装编译器及二进制工具。 @@ -65,9 +32,11 @@ repo forall -c 'git lfs pull' bash build/prebuilts_download.sh ``` -下载的prebuilts二进制默认存放在与OpenHarmony同目录下的OpenHarmony\_2.0\_canary\_prebuilts下。 +### 安装Docker -## 获取Docker环境 +请参考[官方指导](https://docs.docker.com/engine/install/)。 + +### 获取Docker环境 **方式一:从HuaweiCloud SWR上直接获取Docker镜像进行构建:** @@ -106,20 +75,52 @@ bash build/prebuilts_download.sh ``` +## 使用安装包方式获取编译工具链 + +### 安装依赖工具 + +请在终端中输入如下命令安装编译相关的依赖工具: + +``` +sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby +``` + +>![](../public_sys-resources/icon-note.gif) **说明:** +>以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中Python要求安装Python 3.7及以上版本,此处以Python 3.8为例。 + +### 执行prebuilts + +在源码根目录下执行脚本,安装编译器及二进制工具。 + +``` +bash build/prebuilts_download.sh +``` + ## 编译 -1. 通过如下编译脚本启动标准系统类设备(参考内存≥128MB)的编译。 +1. 进入源码根目录,执行如下命令进行版本编译。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >使用Docker方式获取编译工具链的,请直接通过[获取Docker环境](#section615912103552)最后一步进入的Docker构建环境执行如下命令。 + + ``` + ./build.sh --product-name Hi3516DV300 --ccache + ``` + +2. 检查编译结果。编译完成后,log中显示如下: ``` - ./build.sh --product-name {product_name} + build system image successful. + =====build Hi3516DV300 successful. ``` - \{product\_name\}为当前版本支持的平台。比如:Hi3516DV300等。 + 编译所生成的文件都归档在out/\{device\_name\}/目录下,结果镜像输出在out/\{device\_name\}/packages/phone/images/ 目录下。 - 编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在 out/{device_name}/packages/phone/images/ 目录下。 + >![](../public_sys-resources/icon-note.gif) **说明:** + >其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。 -2. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-burn.md)。 +3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-running-hi3516-burn.md)。 >![](../public_sys-resources/icon-note.gif) **说明:** ->退出Docker执行exit命令即可。 +>若使用Docker环境进行编译,执行exit命令即可退出Docker。 diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-burn.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-burn.md new file mode 100644 index 0000000000000000000000000000000000000000..caf000c442ebfb916d14835a6d62d67e3cdd520d --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-burn.md @@ -0,0 +1,101 @@ +# 镜像烧录 + +- [前提条件](#section1956213516576) +- [使用网口烧录](#section14587120161217) + +标准系统烧录,在DevEco Device Tool V2.2 Beta1及以上版本支持,下方烧录操作均在DevEco Device Tool中进行。 + +DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,用户可点击Visual Studio Code左侧栏的![](figures/2021-01-27_170334-10.png)图标打开DevEco Device Tool。 + +Hi3516DV300支持烧录标准系统,其烧录方式包括USB烧录、网口烧录和串口烧录三种方式,其中: + +- **Windows系统:支持USB烧录、网口烧录和串口烧录**。 +- **Linux系统:支持串口烧录和网口烧录。** + +同一种烧录方式(如网口烧录),在Windows和Linux环境下的烧录操作完全一致,区别仅在于DevEco Device Tool环境搭建不同。 + +下方以Linux系统下,网口烧录方式为例进行OpenHarmony标准系统烧录,其他两种烧录方式请参照[Hi3516DV300烧录指导](https://device.harmonyos.com/cn/docs/ide/user-guides/hi3516_upload-0000001052148681)。 + +## 前提条件 + +1. 在DevEco Device Tool工具中点击**Import Project**导入新建应用程序章节修改后的源码文件。 + + ![](figures/import-project.png) + +2. 选择源码导入时,系统会提示该工程不是DevEco Device Tool工程,点击**Import**。 + + ![](figures/import-project-confirm.png) + +3. MCU选择**HiSilicon\_Arm\_Linux**下的Hi3516DV300,Board选择hi3516dv300,Framework选择“Ohos-sources”,然后点击**Import**完成导入。 + + ![](figures/hisilicon-arm-linux.png) + + +## 使用网口烧录 + +1. 请连接好电脑和待烧录开发板,需要同时连接串口和USB口,具体可参考[Hi3516DV300开发板介绍](https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-introduction-hi3516-0000001152041033)[Hi3516DV300开发板介绍](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-introduction-hi3516.md)。 +2. 查看并记录对应的串口号。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果对应的串口异常,请根据[Hi3516DV300/Hi3518EV300开发板串口驱动安装指导](https://device.harmonyos.com/cn/docs/documentation/guide/hi3516_hi3518-drivers-0000001050743695)安装USB转串口的驱动程序。 + + Windows系统,打开设备管理器查看并记录对应的串口号,或在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/record-the-serial-port-number.png) + + Linux系统,在DevEco Device Tool中,点击QUICK ACCESS \> DevEco Home \> Device,查看并记录对应的串口号。 + + ![](figures/Snap22.png) + +3. 在QUICK ACCESS \> DevEco Home \> Projects中,点击**Settings**打开工程配置界面。 + + ![](figures/zh-cn_image_0000001177608370.png) + +4. 在“hi3516dv300”页签,设置烧录选项,包括upload\_partitions、upload\_port和upload\_protocol。 + + - upload\_partitions:选择待烧录的文件,默认情况下会同时烧录fastboot、boot、updater、misc、system、vendor和userdata。 + - upload\_port:选择已查询的串口号。 + - upload\_protocol:选择烧录协议,固定选择“hiburn-usb”。 + + ![](figures/zh-cn_image_0000001177478136.png) + +5. 分别检查待烧录文件的烧录信息,DevEco Device Tool已预置默认的烧录文件信息,可根据实际情况进行调整。待烧录文件包括:fastboot、boot、updater、misc、system、vendor和userdata。 + 1. 在“hi3516dv300\_fastboot”页签,在New Option选项中选择需要修改的项,例如partition\_bin(烧录文件路径)、partition\_addr(烧录文件起始地址)、partition\_length(烧录文件分区长度)等。 + + ![](figures/zh-cn_image_0000001222997983.png) + + 2. 然后在Partition Options中,分别修改上述步骤中选择的修改项。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >在设置烧录分区起始地址和分区长度时,应根据实际待烧录文件的大小进行设置,要求设置的烧录分区大小,要大于待烧录文件的大小;同时,各烧录文件的分区地址设置不能出现重叠。 + + ![](figures/zh-cn_image_0000001222794413.png) + + 3. 按照相同的方法修改boot、updater和misc的烧录文件信息。 + +6. 所有的配置都修改完成后,在工程配置页签的顶部,点击**Save**进行保存。 +7. 点击**Open**打开工程文件,然后在“PROJECT TASKS”中,点击fastboot下的**Erase**按钮,擦除U-Boot。 + + ![](figures/zh-cn_image_0000001163045527.png) + +8. 执行**Erase**擦除操作后,显示如下提示信息时,请重启开发板(插拔USB连线)。 + + ![](figures/zh-cn_image_0000001114129426.png) + +9. 重新上电后,显示如下信息时,表示擦除U-Boot成功。 + + ![](figures/zh-cn_image_0000001113969536.png) + +10. 擦除完成后,点击hi3516dv300下的**Upload**按钮,启动烧录。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >如果您是第一次在工作台烧录Hi3516DV300/Hi3518EV300开发板,可能烧录失败,提示“not find the Devices”,请根据[Hi3516DV300/Hi3518EV300开发板USB驱动安装](https://device.harmonyos.com/cn/docs/documentation/guide/usb_driver-0000001058690393)进行处理后再重新烧录。 + + ![](figures/1-11.png) + +11. 启动烧录后,界面提示如下信息时,表示烧录成功。 + + ![](figures/zh-cn_image_0000001160649343.png) + +12. 烧录完成后,请根据标准系统镜像运行进行下一步操作,完成系统启动。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-create.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-create.md new file mode 100644 index 0000000000000000000000000000000000000000..9d6899e9f967b40ce1d339424fcdb8645b999685 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-create.md @@ -0,0 +1,131 @@ +# 创建应用程序 + +下方将通过修改源码的方式展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。 + +这里演示在原有applications子系统下,添加hello部件以及该部件下的helloworld模块。 + +示例完整目录如下。 + +``` +applications/standard/hello +├── helloworld +│ ├── include +│ │ └── helloworld.h +│ └── src +│ └── helloworld.c +├── BUILD.gn +├── ohos.build +│ +│ +productdefine/common +└── products + └── Hi3516DV300.json +``` + +下方为新建应用程序步骤,请在[获取源码](quickstart-standard-sourcecode-acquire.md)章节下载的源码目录中进行下述操作: + +1. 新建目录及源码。 + + 新建applications/standard/hello/helloworld/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。 + + ``` + #include + #include "helloworld.h" + + int main(int argc, char **argv) + { + HelloPrint(); + return 0; + } + + void HelloPrint() + { + printf("\n************************************************\n"); + printf("\n\t\tHello World!\n"); + printf("\n************************************************\n"); + } + ``` + + 再添加头文件applications/standard/hello/helloworld/include/helloworld.h,代码如下所示。 + + ``` + #ifndef HELLOWORLD_H + #define HELLOWORLD_H + #ifdef __cplusplus + #if __cplusplus + extern "C" { + #endif + #endif + + void HelloPrint(); + + #ifdef __cplusplus + #if __cplusplus + } + #endif + #endif + #endif // HELLOWORLD_H + ``` + +2. 新建编译组织文件。 + 1. 新建applications/standard/hello/BUILD.gn文件,内容如下所示。 + + ``` + import("//build/ohos.gni") # 导入编译模板 + ohos_executable("helloworld") { # 可执行模块 + sources = [ # 模块源码 + "src/helloworld.c" + ] + include_dirs = [ # 模块依赖头文件目录 + "include" + ] + cflags = [] + cflags_c = [] + cflags_cc = [] + ldflags = [] + configs = [] + deps =[] # 部件内部依赖 + + part_name = "hello" # 所属部件名称,必选 + install_enable = true # 是否默认安装(缺省默认不安装),可选 + } + ``` + + 2. 新建applications/standard/hello/ohos.build文件,添加hello部件描述,内容如下所示。 + + ``` + { + "subsystem": "applications", # 子系统名 + "parts": { # 包含部件 + "hello": { # 新建部件名 + "version": "1.0.0", # 版本 + "variants": [ # 变种版本 + "wearable", + "phone" + ], + "module_list": [ # 部件包含模块的gn目标 + "//applications/standard/hello:helloworld" + ], + "inner_kits": [ # 提供给其他部件的接口 + ], + "test_list": [ # 测试用例 + ] + } + } + } + ``` + + ohos.build文件包含两个部分,第一部分subsystem说明该子系统的名称,parts定义该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进parts中去。添加的时候需要指明该部件包含的模块module\_list,假如有提供给其它部件的接口,需要在inner\_kits中说明,假如有测试用例,需要在test\_list中说明,inner\_kits与test\_list没有也可以不添加。 + +3. 修改产品配置文件。 + + 在productdefine\\common\\products\\Hi3516DV300.json中添加对应的部件,直接添加到原有部件后即可(如下代码加粗部分)。 + + ``` + "usb:usb_manager_native":{}, + "applications:prebuilt_hap":{}, + "applications:hello":{}, # "部件所属子系统名:部件名":{} + "wpa_supplicant-2.9:wpa_supplicant-2.9":{}, + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-run.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-run.md new file mode 100644 index 0000000000000000000000000000000000000000..b801df89a5f7eeeda319ea722e6ffeba040b38ff --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516-run.md @@ -0,0 +1,60 @@ +# 镜像运行 + +- [启动系统](#section85351839162211) +- [运行“Hello World”](#section137849131182) +- [下一步](#section5600113114323) + +## 启动系统 + +烧录完成后通过以下步骤运行系统: + +>![](../public_sys-resources/icon-note.gif) **说明:** +>初次烧写标准系统,需要完成以下配置,后续烧写或者启动,可以跳过以下操作。 + +1. 在DevEco Device Tool中,点击Monitor,打开串口工具。 + + ![](figures/open-the-serial-port-tool.png) + +2. 重启开发板,在倒计时结束前,按任意键进入系统。 + + ![](figures/press-any-key-to-enter-the-system.gif) + +3. 通过以下两条命令设置启动参数。 + + ``` + setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)'; + ``` + + ``` + setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000' + ``` + + ![](figures/setenv-bootargs.png) + +4. 保存参数设置。 + + ``` + save + ``` + + ![](figures/Save-the-parameter-settings.png) + +5. 重启开发板,完成系统启动。 + + ``` + reset + ``` + + ![](figures/start-the-system.png) + + +## 运行“Hello World” + +设备启动后打开串口工具,在任意目录下输入命令helloworld后回车,即出现“Hello World!”字样。 + +![](figures/zh-cn_image_0000001193533352.png) + +## 下一步 + +恭喜!您已经完成了OpenHarmony标准系统的快速入门,接下来可[开发一个小示例](../guide/device-clock-guide.md),进一步熟悉OpenHarmony的开发。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516.md new file mode 100644 index 0000000000000000000000000000000000000000..d8e2bdb1ee493e70111bec7fe5fd95dcbc952c42 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-hi3516.md @@ -0,0 +1,11 @@ +# Hi3516开发板 + +- **[创建应用程序](quickstart-standard-running-hi3516-create.md)** + +- **[源码编译](quickstart-standard-running-hi3516-build.md)** + +- **[镜像烧录](quickstart-standard-running-hi3516-burn.md)** + +- **[镜像运行](quickstart-standard-running-hi3516-run.md)** + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-build.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-build.md new file mode 100644 index 0000000000000000000000000000000000000000..62bf05129f175ecb824ed070310983e6358e902c --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-build.md @@ -0,0 +1,126 @@ +# 源码编译 + +- [使用Docker方式获取编译工具链](#section181431248132513) + - [执行prebuilts](#section111934551605) + - [安装Docker](#section1466184743915) + - [获取Docker环境](#section615912103552) + +- [使用安装包方式获取编译工具链](#section65647482593) + - [安装依赖工具](#section83441888010) + - [执行prebuilts](#section6389714142011) + +- [编译](#section92391739152318) + +安装编译工具链后,即可对源码进行编译。在Linux环境下获取编译工具链有以下两种方式,二者选其一即可: + +1. Docker方式 + + OpenHarmony标准系统为开发者提供的Docker环境已经将对应的编译工具链进行了封装,开发者可省略对应工具的安装。 + +2. 安装包方式 + + 使用安装包方式获取编译工具链时,开发者需自行安装相应的依赖工具。 + + +## 使用Docker方式获取编译工具链 + +### 执行prebuilts + +在源码根目录下执行脚本,安装编译器及二进制工具。 + +``` +bash build/prebuilts_download.sh +``` + +### 安装Docker + +请参考[官方指导](https://docs.docker.com/engine/install/)。 + +### 获取Docker环境 + +**方式一:从HuaweiCloud SWR上直接获取Docker镜像进行构建:** + +1. 获取Docker镜像。 + + ``` + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5 + ``` + +2. 进入源码根目录执行如下命令,从而进入Docker构建环境。 + + ``` + docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker-standard:0.0.5 + ``` + + +**方式二:通过Dockerfile 构建本地Docker镜像进行构建**: + +1. 获取Dockerfile脚本文件,用来构建本地Docker镜像。 + + ``` + git clone https://gitee.com/openharmony/docs.git + ``` + +2. 进入Dockerfile代码目录路径执行Docker镜像构建命令。 + + ``` + cd docs/docker/standard + ./build.sh + ``` + +3. 进入源码根目录执行如下命令,从而进入Docker构建环境。 + + ``` + docker run -it -v $(pwd):/home/openharmony openharmony-docker-standard:0.0.5 + ``` + + +## 使用安装包方式获取编译工具链 + +### 安装依赖工具 + +请在终端中输入如下命令安装编译相关的依赖工具: + +``` +sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby +``` + +>![](../public_sys-resources/icon-note.gif) **说明:** +>以上安装命令适用于Ubuntu18.04,其他版本请根据安装包名称采用对应的安装命令。其中Python要求安装Python 3.7及以上版本,此处以Python 3.8为例。 + +### 执行prebuilts + +在源码根目录下执行脚本,安装编译器及二进制工具。 + +``` +bash build/prebuilts_download.sh +``` + +## 编译 + +1. 进入源码根目录,执行如下命令进行版本编译。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >使用Docker方式获取编译工具链的,请直接通过[获取Docker环境](#section615912103552)最后一步进入的Docker构建环境执行如下命令。 + + ``` + ./build.sh --product-name rk3568 --ccache + ``` + +2. 检查编译结果。编译完成后,log中显示如下: + + ``` + post_process + =====build rk3568 successful. + ``` + + 编译所生成的文件都归档在out/\{device\_name\}/目录下,结果镜像输出在out/\{device\_name\}/packages/phone/images/ 目录下。 + + >![](../public_sys-resources/icon-note.gif) **说明:** + >其他模块化编译操作,可参见[编译构建指导](../subsystems/subsys-build-standard-large.md)。 + +3. 编译源码完成,请进行镜像烧录,具体请参见[镜像烧录](quickstart-standard-running-hi3516-burn.md)。 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>若使用Docker环境进行编译,执行exit命令即可退出Docker。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-burn.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-burn.md new file mode 100644 index 0000000000000000000000000000000000000000..50dc908d39bcae333b23cfef1181a00925aa32c2 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-burn.md @@ -0,0 +1,4 @@ +# 镜像烧录 + +请参考:[HiHope\_DAYU200烧写工具及指南](https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/%E7%83%A7%E5%86%99%E5%B7%A5%E5%85%B7%E5%8F%8A%E6%8C%87%E5%8D%97/HiHope-DAYU200%E9%95%9C%E5%83%8F%E7%83%A7%E5%BD%95%E6%8C%87%E5%8D%97.pdf)。 + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-create.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-create.md new file mode 100644 index 0000000000000000000000000000000000000000..215f7c770b77e89282ff90d02305e620e7b83e29 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-create.md @@ -0,0 +1,131 @@ +# 创建应用程序 + +下方将通过修改源码的方式展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。 + +这里演示在原有applications子系统下,添加hello部件以及该部件下的helloworld模块。 + +示例完整目录如下。 + +``` +applications/standard/hello +├── helloworld +│ ├── include +│ │ └── helloworld.h +│ └── src +│ └── helloworld.c +├── BUILD.gn +├── ohos.build +│ +│ +productdefine/common +└── products + └── rk3568.json +``` + +下方为新建应用程序步骤,请在[获取源码](quickstart-standard-sourcecode-acquire.md)章节下载的源码目录中进行下述操作: + +1. 新建目录及源码。 + + 新建applications/standard/hello/helloworld/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OHOS)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。 + + ``` + #include + #include "helloworld.h" + + int main(int argc, char **argv) + { + HelloPrint(); + return 0; + } + + void HelloPrint() + { + printf("\n************************************************\n"); + printf("\n\t\tHello World!\n"); + printf("\n************************************************\n"); + } + ``` + + 再添加头文件applications/standard/hello/helloworld/include/helloworld.h,代码如下所示。 + + ``` + #ifndef HELLOWORLD_H + #define HELLOWORLD_H + #ifdef __cplusplus + #if __cplusplus + extern "C" { + #endif + #endif + + void HelloPrint(); + + #ifdef __cplusplus + #if __cplusplus + } + #endif + #endif + #endif // HELLOWORLD_H + ``` + +2. 新建编译组织文件。 + 1. 新建applications/standard/hello/BUILD.gn文件,内容如下所示。 + + ``` + import("//build/ohos.gni") # 导入编译模板 + ohos_executable("helloworld") { # 可执行模块 + sources = [ # 模块源码 + "src/helloworld.c" + ] + include_dirs = [ # 模块依赖头文件目录 + "include" + ] + cflags = [] + cflags_c = [] + cflags_cc = [] + ldflags = [] + configs = [] + deps =[] # 部件内部依赖 + + part_name = "hello" # 所属部件名称,必选 + install_enable = true # 是否默认安装(缺省默认不安装),可选 + } + ``` + + 2. 新建applications/standard/hello/ohos.build文件,添加hello部件描述,内容如下所示。 + + ``` + { + "subsystem": "applications", # 子系统名 + "parts": { # 包含部件 + "hello": { # 新建部件名 + "version": "1.0.0", # 版本 + "variants": [ # 变种版本 + "wearable", + "phone" + ], + "module_list": [ # 部件包含模块的gn目标 + "//applications/standard/hello:helloworld" + ], + "inner_kits": [ # 提供给其他部件的接口 + ], + "test_list": [ # 测试用例 + ] + } + } + } + ``` + + ohos.build文件包含两个部分,第一部分subsystem说明该子系统的名称,parts定义该子系统包含的部件,要添加一个部件,需要把该部件对应的内容添加进parts中去。添加的时候需要指明该部件包含的模块module\_list,假如有提供给其它部件的接口,需要在inner\_kits中说明,假如有测试用例,需要在test\_list中说明,inner\_kits与test\_list没有也可以不添加。 + +3. 修改产品配置文件。 + + 在productdefine\\common\\products\\rk3568.json中添加对应的部件,直接添加到原有部件后即可(如下代码加粗部分)。 + + ``` + "usb:usb_manager_native":{}, + "applications:prebuilt_hap":{}, + "applications:hello":{}, + "wpa_supplicant-2.9:wpa_supplicant-2.9":{}, + ``` + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-run.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-run.md new file mode 100644 index 0000000000000000000000000000000000000000..fabebb6161db161a54afd127ec832dd47230019c --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568-run.md @@ -0,0 +1,23 @@ +# 镜像运行 + +- [启动系统](#section646361191511) +- [运行“Hello World”](#section11845976150) + +## 启动系统 + +镜像烧录完成并连接电源线之后,系统将会自动启动。开发板附带的屏幕呈现以下界面,表明系统已运行成功。 + +**图 1** 系统启动效果图 +![](figures/系统启动效果图.jpg "系统启动效果图") + +## 运行“Hello World” + +- 设备启动后打开串口工具(以putty为例),波特率设置为1500000,连接设备。 + + ![](figures/rk3568-run-configuration.png) + +- 打开串口后,在任意目录(以设备根目录为例)下输入命令helloworld后回车,即出现“Hello World!”字样。 + + ![](figures/rk3568-helloworld.png) + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568.md b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568.md new file mode 100644 index 0000000000000000000000000000000000000000..d8f0538282014cf2f84ee26a190f5e10433d2a75 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running-rk3568.md @@ -0,0 +1,11 @@ +# RK3568开发板 + +- **[创建应用程序](quickstart-standard-running-rk3568-create.md)** + +- **[源码编译](quickstart-standard-running-rk3568-build.md)** + +- **[镜像烧录](quickstart-standard-running-rk3568-burn.md)** + +- **[镜像运行](quickstart-standard-running-rk3568-run.md)** + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-running.md b/zh-cn/device-dev/quick-start/quickstart-standard-running.md index 536b04359d0e42ee4183f00d3cae0ffd350fbc49..5f631ce529b527058bf980de50de8d5f4eebd433 100644 --- a/zh-cn/device-dev/quick-start/quickstart-standard-running.md +++ b/zh-cn/device-dev/quick-start/quickstart-standard-running.md @@ -1,53 +1,7 @@ -# 镜像运行 +# 运行“Hello World” -- [镜像运行](#section153991115191314) -- [下一步](#section5600113114323) +- **[Hi3516开发板](quickstart-standard-running-hi3516.md)** -## 镜像运行 +- **[RK3568开发板](quickstart-standard-running-rk3568.md)** -烧录完成后通过以下步骤运行系统: - ->![](../public_sys-resources/icon-note.gif) **说明:** ->初次烧写标准系统,需要完成以下配置,后续烧写或者启动,可以跳过以下操作。 - -1. 在DevEco Device Tool中,点击Monitor,打开串口工具。 - - ![](figures/open-the-serial-port-tool.png) - -2. 重启开发板,在倒计时结束前,按任意键进入系统。 - - ![](figures/press-any-key-to-enter-the-system.gif) - -3. 通过以下两条命令设置启动参数。 - - ``` - setenv bootargs 'mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),2M(misc),3307M(system),256M(vendor),-(userdata)'; - ``` - - ``` - setenv bootcmd 'mmc read 0x0 0x82000000 0x800 0x4800; bootm 0x82000000' - ``` - - ![](figures/zh-cn_image_0000001172030062.png) - -4. 保存参数设置。 - - ``` - save - ``` - - ![](figures/Save-the-parameter-settings.png) - -5. 重启开发板,完成系统启动。 - - ``` - reset - ``` - - ![](figures/start-the-system.png) - - -## 下一步 - -恭喜!您已经完成了OpenHarmony标准系统的快速入门,接下来可[开发一个小示例](../guide/device-clock-guide.md),进一步熟悉OpenHarmony的开发。 diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-sourcecode-acquire.md b/zh-cn/device-dev/quick-start/quickstart-standard-sourcecode-acquire.md new file mode 100644 index 0000000000000000000000000000000000000000..d50e92dca75b2b228a03149c0d0f3fb6c30f8865 --- /dev/null +++ b/zh-cn/device-dev/quick-start/quickstart-standard-sourcecode-acquire.md @@ -0,0 +1,51 @@ +# 获取源码 + +### 前提条件 + +1. 注册码云gitee账号。 +2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。 +3. 安装[git客户端](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。 + + ``` + git config --global user.name "yourname" + git config --global user.email "your-email-address" + git config --global credential.helper store + ``` + +4. 安装码云repo工具,可以执行如下命令。 + + ``` + curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中 + chmod a+x /usr/local/bin/repo + pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests + ``` + + +### 获取方式 + +>![](../public_sys-resources/icon-note.gif) **说明:** +>Master主干为开发分支,开发者可通过Master主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。 + +- **OpenHarmony主干代码获取** + + 方式一(推荐):通过repo + ssh下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 + + ``` + repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + + 方式二:通过repo + https下载。 + + ``` + repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + +- **OpenHarmony发布版本代码获取** + + OpenHarmony发布版本获取源码方式请参考[Release-Notes](../get-code/../../release-notes/Readme.md)。 + + diff --git a/zh-cn/device-dev/quick-start/quickstart-standard-windows-environment.md b/zh-cn/device-dev/quick-start/quickstart-standard-windows-environment.md deleted file mode 100644 index 85b5ee20bb535e15dbdaeed1f385869638cbc69d..0000000000000000000000000000000000000000 --- a/zh-cn/device-dev/quick-start/quickstart-standard-windows-environment.md +++ /dev/null @@ -1,64 +0,0 @@ -# Windows开发环境准备 - -- [安装DevEco Device Tool](#zh-cn_topic_0000001058091994_section10761564496) - -系统要求: - -- Windows 10 64位系统。 -- 系统的用户名不能含有中文字符。 - -## 安装DevEco Device Tool - -DevEco Device Tool以插件方式运行,基于Visual Studio Code进行扩展,同时DevEco Device Tool运行依赖Python,Node.js和hpm工具。 - -DevEco Device Tool支持一体化安装,即DevEco Device Tool安装向导会检测系统是否安装Visual Studio Code、Python、Node.js、hpm的适配版本,当安装向导未检测到这些软件时,会给出相应的提示,根据提示勾选要自动安装的软件,安装向导会自动下载相应的软件进行安装。 - -安装DevEco Device Tool,**主机的用户名不能包含中文字符**,否则在运行DevEco Device Tool时,DevEco Home界面会一直处于Loading状态,导致不能正常使用 - -1. 获取软件,请使用华为开发者帐号登录[https://device.harmonyos.com/cn/ide\#download\_beta](https://device.harmonyos.com/cn/ide#download_beta),下载DevEco Device Tool V3.0 Beta1及以上版本。如未注册华为开发者账号,请先[注册](https://developer.huawei.com/consumer/cn/doc/start/registration-and-verification-0000001053628148)。 -2. 解压DevEco Device Tool压缩包,双击安装包程序,点击Next进行安装。 -3. 设置DevEco Device Tool的安装路径,点击Next。 -4. 根据安装向导提示,勾选要自动安装的软件,点击Next。 - - ![](figures/Snap28.png) - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当安装向导检测到系统中已安装可兼容的Python版本,会提示用户可选择已安装的可兼容的Python版本,也可选择下载推荐的Python版本。 - -5. 在以下界面点击Next,进行软件下载和安装。 - - ![](figures/Snap8.png) - -6. 在弹出的Python安装向导中,勾选“**Add Python 3.8 to PATH**”,然后点击**Install Now**开始安装,等待安装完成后,点击**Close**。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装可兼容的Python版本,且用户选择了已安装的可兼容的Python版本,则Python安装向导不会弹出,用户不需要执行此步骤。 - >如果安装DevEco Device Tool 2.1 Release版本,Python版本只能为3.8.x版本,不能安装最新的Python3.9.x版本。如果安装DevEco Device Tool V3.0 Beta1及以上版本,Python版本只能为3.8.x或3.9.x版本。 - - ![](figures/Snap34.png) - -7. 在弹出的Visual Studio Code安装向导中,根据向导提示安装Visual Studio Code,安装过程中,请勾选“添加到PATH(重启后生效)”。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的Visual Studio Code版本,则Visual Studio Code安装向导不会弹出,用户不需要执行此步骤。 - - ![](figures/Snap33.png) - -8. 在弹出的Node.js安装向导中,全部按照默认设置点击**Next**,直至**Finish**。安装过程中,Node.js会自动在系统的path环境变量中配置node.exe的目录路径。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的Node.js版本,则Node.js安装向导不会弹出,用户不需要执行此步骤。 - -9. 等待DevEco Device Tool安装向导自动安装hpm和DevEco Device Tool插件,直至安装完成,点击**Finish**,关闭DevEco Device Tool安装向导。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >当DevEco Device Tool安装向导检测系统已安装正确的hpm版本,则不会进行hpm软件的下载和安装。 - -10. 启动Visual Studio Code,会自动安装DevEco Device Tool依赖的C/C++、CodeLLDB插件。等待安装完成后,点击Visual Studio Code左侧的![](figures/button.png)按钮,检查INSTALLED中,是否已成功安装C/C++、CodeLLDB和DevEco Device Tool。 - - >![](../public_sys-resources/icon-note.gif) **说明:** - >如果C/C++和CodeLLDB插件安装不成功,则DevEco Device Tool不能正常运行,解决方法,详细请参考:[离线安装C/C++和CodeLLDB插件](https://device.harmonyos.com/cn/docs/ide/user-guides/offline_plugin_install-0000001074376846)。 - - ![](figures/deveco-device-tool-install-sucessful.png) - - diff --git a/zh-cn/device-dev/quick-start/quickstart-standard.md b/zh-cn/device-dev/quick-start/quickstart-standard.md index c77a0c7e2a804da91194b17ca3520faa88e2bf71..b98e7a307dcc2ea67b0bd01434e5860496ce26a1 100644 --- a/zh-cn/device-dev/quick-start/quickstart-standard.md +++ b/zh-cn/device-dev/quick-start/quickstart-standard.md @@ -1,17 +1,15 @@ # 标准系统入门 -- **[入门介绍](quickstart-standard-overview.md)** +- **[标准系统入门简介](quickstart-standard-overview.md)** -- **[Windows开发环境准备](quickstart-standard-windows-environment.md)** +- **[标准系统开发环境准备(仅Hi3516需要)](quickstart-standard-env-setup.md)** -- **[搭建Ubuntu环境\(获取源码及编译,Docker方式\)](quickstart-standard-docker-environment.md)** +- **[获取源码](quickstart-standard-sourcecode-acquire.md)** -- **[搭建Ubuntu环境\(获取源码及编译,安装包方式\)](quickstart-standard-package-environment.md)** - -- **[镜像烧录](quickstart-standard-burn.md)** - -- **[镜像运行](quickstart-standard-running.md)** +- **[运行“Hello World”](quickstart-standard-running.md)** - **[常见问题](quickstart-standard-faqs.md)** +- **[附录](quickstart-standard-appendix.md)** + diff --git a/zh-cn/device-dev/subsystems/Readme-CN.md b/zh-cn/device-dev/subsystems/Readme-CN.md index 1978419bb79233ff32b602348e4ef6daec72a099..1799f0cd2261b4993ce69599a336b0e2356e28dc 100755 --- a/zh-cn/device-dev/subsystems/Readme-CN.md +++ b/zh-cn/device-dev/subsystems/Readme-CN.md @@ -40,21 +40,10 @@ - [唤醒词识别SDK的开发示例](subsys-aiframework-demo-sdk.md) - [唤醒词识别插件的开发示例](subsys-aiframework-demo-plugin.md) - [唤醒词识别配置文件的开发示例](subsys-aiframework-demo-conf.md) -- [数据管理](subsys-data.md) - - [关系型数据库](subsys-data-relational-database.md) - - [关系型数据库概述](subsys-data-relational-database-overview.md) - - [关系型数据库开发指导](subsys-data-relational-database-guide.md) - - [轻量级数据存储](subsys-data-storage.md) - - [轻量级数据存储概述](subsys-data-storage-overview.md) - - [轻量级数据存储开发指导](subsys-data-storage-guide.md) - [Sensor服务](subsys-sensor.md) - [Sensor服务子系概述](subsys-sensor-overview.md) - [Sensor服务子系使用指导](subsys-sensor-guide.md) - [Sensor服务子系使用实例](subsys-sensor-demo.md) -- [Usb服务子系统](subsys-usbservice.md) - - [USB服务子系统概述](subsys-usbservice-overview.md) - - [USB服务子系统使用指导](subsys-usbservice-guide.md) - - [USB服务子系统使用实例](subsys-usbservice-demo.md) - [用户程序框架](subsys-application-framework.md) - [概述](subsys-application-framework-overview.md) - [搭建环境](subsys-application-framework-envbuild.md) @@ -82,8 +71,15 @@ - [DFX概述](subsys-dfx-overview.md) - [HiLog开发指导](subsys-dfx-hilog-rich.md) - [HiLog\_Lite开发指导](subsys-dfx-hilog-lite.md) + - [HiTrace开发指导](subsys-dfx-hitrace.md) + - [HiCollie开发指导](subsys-dfx-hicollie.md) - [HiSysEvent开发指导](subsys-dfx-hisysevent.md) + - [HiSysEvent打点指导](subsys-dfx-hisysevent-write.md) + - [HiSysEvent订阅指导](subsys-dfx-hisysevent-read.md) + - [HiSysEvent查询指导](subsys-dfx-hisysevent-select.md) + - [HiSysEvent工具使用指导](subsys-dfx-hisysevent-tool.md) - [研发工具链](subsys-toolchain.md) - [bytrace使用指导](subsys-toolchain-bytrace-guide.md) - [hdc\_std 使用指导](subsys-toolchain-hdc-guide.md) + - [hiperf 使用指南](subsys-toolchain-hiperf.md) - [XTS认证用例开发指导](subsys-xts-guide.md) diff --git "a/zh-cn/device-dev/subsystems/figure/HiTrace\345\272\224\347\224\250\345\234\272\346\231\257.png" "b/zh-cn/device-dev/subsystems/figure/HiTrace\345\272\224\347\224\250\345\234\272\346\231\257.png" new file mode 100644 index 0000000000000000000000000000000000000000..dddc8365b2905b3522d9692531d773817bb1bcab Binary files /dev/null and "b/zh-cn/device-dev/subsystems/figure/HiTrace\345\272\224\347\224\250\345\234\272\346\231\257.png" differ diff --git "a/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\233\276\357\274\210\350\267\250\350\256\276\345\244\207-\350\267\250\350\277\233\347\250\213\345\220\214\346\255\245\350\260\203\347\224\250\357\274\211.png" "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\233\276\357\274\210\350\267\250\350\256\276\345\244\207-\350\267\250\350\277\233\347\250\213\345\220\214\346\255\245\350\260\203\347\224\250\357\274\211.png" new file mode 100644 index 0000000000000000000000000000000000000000..bec87564b4026335bff09e48f6f128076b76c5a0 Binary files /dev/null and "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\233\276\357\274\210\350\267\250\350\256\276\345\244\207-\350\267\250\350\277\233\347\250\213\345\220\214\346\255\245\350\260\203\347\224\250\357\274\211.png" differ diff --git "a/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\272\217\345\210\227\345\233\276.png" "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\272\217\345\210\227\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..fba8cd412fec208991aa70e2f026edfcb9b045b6 Binary files /dev/null and "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\345\272\217\345\210\227\345\233\276.png" differ diff --git "a/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\346\200\247\350\203\275\350\200\227\346\227\266\345\210\206\345\270\203.png" "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\346\200\247\350\203\275\350\200\227\346\227\266\345\210\206\345\270\203.png" new file mode 100644 index 0000000000000000000000000000000000000000..ae69bbc6e37310dc0e1808a270292a7872de2b26 Binary files /dev/null and "b/zh-cn/device-dev/subsystems/figure/\344\270\232\345\212\241\350\260\203\347\224\250\346\265\201\347\250\213\346\200\247\350\203\275\350\200\227\346\227\266\345\210\206\345\270\203.png" differ diff --git "a/zh-cn/device-dev/subsystems/figure/\345\220\214\346\255\245\351\200\232\344\277\241\345\244\204\347\220\206.png" "b/zh-cn/device-dev/subsystems/figure/\345\220\214\346\255\245\351\200\232\344\277\241\345\244\204\347\220\206.png" new file mode 100644 index 0000000000000000000000000000000000000000..585d8aac7b4857645b78ab11effbe900e5350f9d Binary files /dev/null and "b/zh-cn/device-dev/subsystems/figure/\345\220\214\346\255\245\351\200\232\344\277\241\345\244\204\347\220\206.png" differ diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hicollie.md b/zh-cn/device-dev/subsystems/subsys-dfx-hicollie.md new file mode 100644 index 0000000000000000000000000000000000000000..c81289a859e496debb4d69e4a2a7fe8a01ae2186 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hicollie.md @@ -0,0 +1,193 @@ +# HiCollie开发指导 + +- [概述](#section3432134085116) +- [接口说明](#section139261151145116) +- [效果](#section1589120102458) +- [开发实例](#section13905646534) + - [C++接口开发实例](#section9797199145316) + - [线程卡死监控](#section1734221332) + - [超时监控](#section2186947140) + + +## 概述 + +HiCollie提供了软件看门狗功能。针对系统服务死锁、应用主线程阻塞,用户业务流程超时等故障,HiCollie提供了一套统一的用于故障检测和故障日志生成的框架,提供软件超时故障日志,辅助定位软件超时问题。 + +## 接口说明 + +**表 1** C++接口功能描述表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

所属类

+

接口定义

+

描述

+

XCollieChecker类接口

+

virtual void CheckBlock()

+

接口功能:卡死检测回调函数。

+

输入参数:无。

+

输出参数:无。

+

返回值:无。

+

XCollieChecker类接口

+

virtual void CheckThreadBlock()

+

接口功能:线程卡死检测回调函数。

+

输入参数:无。

+

输出参数:无。

+

返回值:无。

+

XCollie类接口

+

void RegisterXCollieChecker(const sptr<XCollieChecker> &checker, unsigned int type)

+

接口功能:线程卡死检测回调函数注册。

+

输入参数:

+
  • checker:XCollieChecker实例指针。
  • type:卡死检测类型,取值设置为XCOLLIE_THREAD。
+

输出参数:无。

+

返回值:无。

+

XCollie类接口

+

int SetTimer(const std::string &name, unsigned int timeout, std::function<void (void *)> func, void *arg, unsigned int flag)

+

接口功能:添加定时器。

+

输入参数:

+
  • name:定时器名称。
  • timeout:超时时间,单位为秒。
  • func:超时回调函数。
  • arg:超时回调函数参数指针。
  • flag:定时器操作类型。

    XCOLLIE_FLAG_DEFAULT // 其他三个选项功能之和

    +

    XCOLLIE_FLAG_NOOP // 仅调用超时回调函数

    +

    XCOLLIE_FLAG_LOG // 生成超时故障日志

    +

    XCOLLIE_FLAG_RECOVERY // 进程退出

    +
+

输出参数:无。

+

返回值:成功返回定时器标识,失败返回-1。

+

XCollie类接口

+

bool UpdateTimer(int id, unsigned int timeout)

+

接口功能:更新定时器。

+

输入参数:

+
  • id:定时器标识。
  • timeout:超时时间,单位为秒。
+

输出参数:无。

+

返回值:成功返回true,失败返回false。

+

XCollie类接口

+

void CancelTimer(int id)

+

接口功能:取消定时器。

+

输入参数:定时器标识。

+

输出参数:无。

+

返回值:无。

+
+ +## 效果 + +日志打印: + +``` +timeout: TimeoutTimer start at 1611040305 to check 1s ago + +----------StacktraceCatcher CurrentTime:2021-01-19 15:11:45 Unexecuted(-1)(LogType:Stacktrace Pid:27689 Process:XCollieTimeoutModuleTest)---------- + + +----- pid 27689 at 2021-01-19 15:11:45 ----- +Cmd line: ./XCollieTimeoutModuleTest +ABI: 'arm64' + +"XCollieTimeoutM" sysTid=27689 + #01 pc 00000000000174cc /data/test/XCollieTimeoutModuleTest +``` + +## 开发实例 + +### C++接口开发实例 + +### 线程卡死监控 + +线程卡死监控功能需要开发者实现两个卡死检测回调函数,XCollieChecker类的CheckBlock和CheckThreadBlock接口函数。实现了该回调函数之后,开发者还需要通过XCollie类的RegisterXCollieChecker函数,将该回调函数的类实例成功注册。卡死监控线程会定时执行全部已成功注册的回调函数,检查线程逻辑完成标志位,判定已经成功注册的线程逻辑是否被卡死。 + +1. 源代码开发 + + 包含头文件: + + ``` + #include "xcollie.h" + ``` + + 在业务代码中使用: + + ``` + void MyXCollieChecker::CheckLock() + { + /* time consuming job */ + } + + void MyXCollieChecker::CheckThreadBlock() + { + /* time consuming job */ + } + + sptr checker = new MyXCollieChecker("MyXCollieChecker"); + XCollie::GetInstance().RegisterXCollieChecker(checker, + (XCOLLIE_LOCK | XCOLLIE_THREAD)); + ...... + ``` + +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + + ``` + external_deps = [ "hiviewdfx:libxcollie" ] + ``` + + +### 超时监控 + +单个进程通过SetTimer接口函数添加定时器最多可以设置128个,超过上限则添加定时器操作会失败。 + +1. 源代码开发 + + 包含头文件: + + ``` + #include "xcollie.h" + ``` + + 在业务代码中使用(添加/更新/取消): + + ``` + std::function callback = [](void *args) + { + /* dump helpful information */ + }; + + int id = XCollie::GetInstance().SetTimer("MyXCollieTimer", 10, callback ,nullptr, XCOLLIE_FLAG_LOG); + /* time consuming job */ + XCollie::GetInstance().UpdateTimer(id, 5); + /* time consuming job */ + XCollie::GetInstance().CancelTimer(id); + ...... + ``` + +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + + ``` + external_deps = [ "hiviewdfx:libxcollie" ] + ``` + + diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hilog-lite.md b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-lite.md index f6028dd56b4067ad1ca069e52c314b1854e510e9..ad09ffb51a01da5d07f78af250c187d671e06f0a 100755 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hilog-lite.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-lite.md @@ -1,4 +1,4 @@ -# HiLog\_Lite开发指导 +# HiLog\_Lite开发指导 - [概述](#section775017517390) - [接口说明](#section114412157402) diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hilog-rich.md b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-rich.md index 8a846996d0db03be4df8448dce353140d4277ea4..af76dbec8c66b8baaa8e45f649af69a8e7c78a04 100755 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hilog-rich.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-rich.md @@ -1,217 +1,108 @@ -# HiLog开发指导 +# HiLog开发指导 -- [概述](#section8154107175019) -- [接口说明](#section6748124155012) -- [开发实例](#section102728581536) - - [C使用示例](#section12916224185417) - - [C++使用示例](#section19399185610547) +- [概述](#概述) +- [接口说明](#接口说明) +- [开发实例](#开发实例) + - [C使用示例](#c使用示例) + - [C++使用示例](#c-使用示例) - -## 概述 +## 概述 HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。 本章节内容对标准系统类设备(参考内存≥128MB)适用。 -## 接口说明 - -**表 1** C++、C的函数接口 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

C++

-

C

-

-

方法

-

方法/宏

-

HiLog

-

int Debug(const HiLogLabel &label, const char *fmt, ...)

-

HILOG_DEBUG(type, ...)

-

int Info(const HiLogLabel &label, const char *fmt, ...)

-

HILOG_INFO(type, ...)

-

int Warn(const HiLogLabel &label, const char *fmt, ...)

-

HILOG_WARN(type, ...)

-

int Error(const HiLogLabel &label, const char *fmt, ...)

-

HILOG_ERROR(type, ...)

-

int Fatal(const HiLogLabel &label, const char *fmt, ...)

-

HILOG_FATAL(type, ...)

-

NA

-

int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...)

-

boolean IsLoggable(unsigned int domain, const char *tag, LogLevel level)

-

bool HiLogIsLoggable(unsigned int domain, const char *tag, LogLevel level)

-

HiLogLabel

-

struct HiLogLabel

-

LOG_DOMAIN

-

LOG_TAG

-
- -**表 2** C++接口说明函数参数和功能 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-

方法

-

描述

-

HiLog

-

int Debug(const HiLogLabel &label, const char *fmt, ...)

-

功能:输出 debug 级别日志。

-

输入参数:

-
  • label:用于标识输出日志的类型、业务领域、TAG。
  • format:常量格式字符串,包含参数类型、隐私标识。未加隐私标识的缺省为隐私参数。
  • fmt:格式化变参描述字符串。
-

输出参数:无

-

返回值:大于等于0,成功;小于0,失败。

-

int Info(const HiLogLabel &label, const char *fmt, ...)

-

功能:输出 info 级别日志。

-

参数说明同 Debug 接口。

-

int Warn(const HiLogLabel &label, const char *fmt, ...)

-

功能:输出 warn 级别日志。

-

参数说明同 Debug 接口。

-

int Error(const HiLogLabel &label, const char *fmt, ...)

-

功能:输出 error 级别日志。

-

参数说明同 Debug 接口。

-

int Fatal(const HiLogLabel &label, const char *fmt, ...)

-

功能:输出 fatal 级别日志。

-

参数说明同 Debug 接口。

-

boolean IsLoggable(unsigned int domain, const char *tag, LogLevel level)

-

功能:检查指定业务领域、TAG、级别的日志是否可以打印。

-

输入参数:

-
  • domain:指定日志业务领域。
  • tag: 指定日志TAG。
  • level: 指定日志level。
-

输出参数:无

-

返回值:如果指定domain、tag、level日志可以打印则返回true;否则返回false。

-

HiLogLabel

-

struct HiLogLabel

-

功能:初始化日志标签参数。

-

成员参数:

-
  • domain:指定日志业务领域。
  • tag: 指定日志TAG。
  • level: 指定日志level。
-
- -## 开发实例 - -### C使用示例 - -1. 在.c源文件中,包含hilog头文件: - - ``` - #include "hilog/log.h" - ``` - - 定义domain、tag: - - ``` - #undef LOG_DOMAIN - #undef LOG_TAG - #define LOG_DOMAIN 0 // 标识业务领域,范围0x0~0xFFFFF - #define LOG_TAG "MY_TAG" - ``` - - 打印日志: - - ``` - HILOG_INFO(LOG_CORE, "Failed to visit %{private}s, reason:%{public}d.", url, errno); - ``` - -2. 编译设置,在BUILD.gn里增加子系统SDK依赖: - - ``` - external_deps = [ "hiviewdfx_hilog_native:libhilog" ] - ``` - - -### C++使用示例 - -1. 在.h类定义头文件中,包含hilog头文件: - - ``` - #include "hilog/log.h" - ``` - - 如果类头文件中需要日志打印,在头文件中类定义起始处 定义 LABEL: - - ``` - class MyClass { - static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; - ...... - } - ``` - - 如果类头文件中没有日志打印,在类实现文件中 定义 LABEL: - - ``` - using namespace OHOS::HiviewDFX; - static constexpr HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; - ``` - - 打印日志: - - ``` - HiLog::Info(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno); - ``` - -2. 编译设置,在BUILD.gn里增加子系统SDK依赖: - - ``` - external_deps = [ "hiviewdfx:libhilog" ] - ``` +## 接口说明 + +**表1** C++、C的函数接口 + +| **C++** | | **C** | +| -------- | -------- | -------- | +| **类** | **方法** | **方法/宏** | +| HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | HILOG_DEBUG(type, ...) | +| | int Info(const HiLogLabel &label, const char \*fmt, ...) | HILOG_INFO(type, ...) | +| | int Warn(const HiLogLabel &label, const char \*fmt, ...) | HILOG_WARN(type, ...) | +| | int Error(const HiLogLabel &label, const char \*fmt, ...) | HILOG_ERROR(type, ...) | +| | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | HILOG_FATAL(type, ...) | +| | NA | int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char \*tag, const char \*fmt, ...) | +| | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | bool HiLogIsLoggable(unsigned int domain, const char \*tag, LogLevel level) | +| HiLogLabel | struct HiLogLabel | LOG_DOMAIN
LOG_TAG | + +**表3** C++接口说明函数参数和功能 + +| **类** | **方法** | **描述** | +| -------- | -------- | -------- | +| HiLog | int Debug(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 debug 级别日志。
输入参数:
- label:用于标识输出日志的类型、业务领域、TAG。
- format:常量格式字符串,包含参数类型、隐私标识。未加隐私标识的缺省为隐私参数。
- fmt:格式化变参描述字符串。
输出参数:无
返回值:大于等于0,成功;小于0,失败。 | +| | int Info(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 info 级别日志。
参数说明同 Debug 接口。 | +| | int Warn(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 warn 级别日志。
参数说明同 Debug 接口。 | +| | int Error(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 error 级别日志。
参数说明同 Debug 接口。 | +| | int Fatal(const HiLogLabel &label, const char \*fmt, ...) | 功能:输出 fatal 级别日志。
参数说明同 Debug 接口。 | +| | boolean IsLoggable(unsigned int domain, const char \*tag, LogLevel level) | 功能:检查指定业务领域、TAG、级别的日志是否可以打印。
输入参数:
- domain:指定日志业务领域。
- tag: 指定日志TAG。
- level: 指定日志level。
输出参数:无
返回值:如果指定domain、tag、level日志可以打印则返回true;否则返回false。 | +| HiLogLabel | struct HiLogLabel | 功能:初始化日志标签参数。
成员参数:
- domain:指定日志业务领域。
- tag: 指定日志TAG。
- level: 指定日志level。 | + + +## 开发实例 + + +### C使用示例 + +1. 在.c源文件中,包含hilog头文件: + ``` + #include "hilog/log.h" + ``` + + 定义domain、tag: + + ``` + #undef LOG_DOMAIN + #undef LOG_TAG + #define LOG_DOMAIN 0 // 标识业务领域,范围0x0~0xFFFFF + #define LOG_TAG "MY_TAG" + ``` + + 打印日志: + + ``` + HILOG_INFO(LOG_CORE, "Failed to visit %{private}s, reason:%{public}d.", url, errno); + ``` + +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + ``` + external_deps = [ "hiviewdfx_hilog_native:libhilog" ] + ``` + + +### C++使用示例 + +1. 在.h类定义头文件中,包含hilog头文件: + ``` + #include "hilog/log.h" + ``` + + 如果类头文件中需要日志打印,在头文件中类定义起始处 定义 LABEL: + + ``` + class MyClass { + static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; + ...... + } + ``` + + 如果类头文件中没有日志打印,在类实现文件中 定义 LABEL: + + ``` + using namespace OHOS::HiviewDFX; + static constexpr HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; + ``` + + 打印日志: + + ``` + HiLog::Info(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno); + ``` +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + ``` + external_deps = [ "hiviewdfx:libhilog" ] + ``` diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hilog-standard.md b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-standard.md new file mode 100644 index 0000000000000000000000000000000000000000..85ab173619c45beccf89bf41b24fac8e4b0a8cfc --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hilog-standard.md @@ -0,0 +1,229 @@ +# HiLog开发指导 + +- [概述](#section8154107175019) +- [接口说明](#section6748124155012) +- [开发实例](#section102728581536) + - [C使用示例](#section12916224185417) + - [C++使用示例](#section19399185610547) + + +## 概述 + +HiLog是OpenHarmony日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。 + +本章节内容对标准系统类设备(参考内存≥128MB)适用。 + +## 接口说明 + +**表 1** C++、C的函数接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

C++

+
  

C

+

+

方法

+

方法/宏

+

HiLog

+

int Debug(const HiLogLabel &label, const char *fmt, ...)

+

HILOG_DEBUG(type, ...)

+
  

int Info(const HiLogLabel &label, const char *fmt, ...)

+

HILOG_INFO(type, ...)

+
  

int Warn(const HiLogLabel &label, const char *fmt, ...)

+

HILOG_WARN(type, ...)

+
  

int Error(const HiLogLabel &label, const char *fmt, ...)

+

HILOG_ERROR(type, ...)

+
  

int Fatal(const HiLogLabel &label, const char *fmt, ...)

+

HILOG_FATAL(type, ...)

+
  

NA

+

int HiLogPrint(LogType type, LogLevel level, unsigned int domain, const char *tag, const char *fmt, ...)

+
  

boolean IsLoggable(unsigned int domain, const char *tag, LogLevel level)

+

bool HiLogIsLoggable(unsigned int domain, const char *tag, LogLevel level)

+

HiLogLabel

+

struct HiLogLabel

+

LOG_DOMAIN

+

LOG_TAG

+
+ +**表 2** C++接口说明函数参数和功能 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

方法

+

描述

+

HiLog

+

int Debug(const HiLogLabel &label, const char *fmt, ...)

+

功能:输出 debug 级别日志。

+

输入参数:

+
  • label:用于标识输出日志的类型、业务领域、TAG。
  • format:常量格式字符串,包含参数类型、隐私标识。未加隐私标识的缺省为隐私参数。
  • fmt:格式化变参描述字符串。
+

输出参数:无

+

返回值:大于等于0,成功;小于0,失败。

+
  

int Info(const HiLogLabel &label, const char *fmt, ...)

+

功能:输出 info 级别日志。

+

参数说明同 Debug 接口。

+
  

int Warn(const HiLogLabel &label, const char *fmt, ...)

+

功能:输出 warn 级别日志。

+

参数说明同 Debug 接口。

+
  

int Error(const HiLogLabel &label, const char *fmt, ...)

+

功能:输出 error 级别日志。

+

参数说明同 Debug 接口。

+
  

int Fatal(const HiLogLabel &label, const char *fmt, ...)

+

功能:输出 fatal 级别日志。

+

参数说明同 Debug 接口。

+
  

boolean IsLoggable(unsigned int domain, const char *tag, LogLevel level)

+

功能:检查指定业务领域、TAG、级别的日志是否可以打印。

+

输入参数:

+
  • domain:指定日志业务领域。
  • tag: 指定日志TAG。
  • level: 指定日志level。
+

输出参数:无

+

返回值:如果指定domain、tag、level日志可以打印则返回true;否则返回false。

+

HiLogLabel

+

struct HiLogLabel

+

功能:初始化日志标签参数。

+

成员参数:

+
  • domain:指定日志业务领域。
  • tag: 指定日志TAG。
  • level: 指定日志level。
+
+ +## 开发实例 + +### C使用示例 + +1. 在.c源文件中,包含hilog头文件: + + ``` + #include "hilog/log.h" + ``` + + 定义domain、tag: + + ``` + #undef LOG_DOMAIN + #undef LOG_TAG + #define LOG_DOMAIN 0 // 标识业务领域,范围0x0~0xFFFFF + #define LOG_TAG "MY_TAG" + ``` + + 打印日志: + + ``` + HILOG_INFO(LOG_CORE, "Failed to visit %{private}s, reason:%{public}d.", url, errno); + ``` + +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + + ``` + external_deps = [ "hiviewdfx_hilog_native:libhilog" ] + ``` + + +### C++使用示例 + +1. 在.h类定义头文件中,包含hilog头文件: + + ``` + #include "hilog/log.h" + ``` + + 如果类头文件中需要日志打印,在头文件中类定义起始处 定义 LABEL: + + ``` + class MyClass { + static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; + ...... + } + ``` + + 如果类头文件中没有日志打印,在类实现文件中 定义 LABEL: + + ``` + using namespace OHOS::HiviewDFX; + static constexpr HiLogLabel LABEL = {LOG_CORE, 0, "MY_TAG"}; + ``` + + 打印日志: + + ``` + HiLog::Info(LABEL, "Failed to visit %{private}s, reason:%{public}d.", url, errno); + ``` + +2. 编译设置,在BUILD.gn里增加子系统SDK依赖: + + ``` + external_deps = [ "hiviewdfx:libhilog" ] + ``` + + diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md new file mode 100644 index 0000000000000000000000000000000000000000..9291457f4c9e3d055dfe7df3528e031ffd97c9ef --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md @@ -0,0 +1,152 @@ +# HiSysEvent订阅指导 + +- [概述](#section315316685112) +- [接口说明](#section0342191810519) +- [开发实例](#section123181432175110) + - [C++接口实例](#section2016116181902) + + +## 概述 + +HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接口实时获取关注的事件,例如电池模块侦听功耗相关的事件,用于分析耗电情况。 + +## 接口说明 + +**表 1** HiSysEvent订阅接口 + + + + + + + + + + + + + +

接口名

+

描述

+

int HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener, std::vector<struct ListenerRule>& rules)

+

接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。

+

输入参数:

+
  • listener:订阅回调对象。
  • rules:事件订阅规则。
+

返回值:

+
  • 0:订阅成功,重复订阅。
  • 1:订阅成功,初次订阅。
  • 其他返回值:订阅失败。
+

void HiSysEventManager::RemoveListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener)

+

接口功能:移除订阅hisysevent系统事件侦听对象。

+

输入参数:

+
  • listener:订阅回调对象。
+

返回值:无。

+
+ +**表 2** ListenerRule订阅规则对象 + + + + + + + + + + + + + + + + +

属性名称

+

描述

+

uint32_t ruleType

+

规则类型(匹配范围包括domain以及eventName):

+
  • 1:全字符匹配。
  • 2:前缀匹配。
  • 3:正则表达式匹配。
  • 其他值:无效的匹配方式。
+

std::string domain

+
  • domain:事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。
+

std::string eventName

+
  • eventName:事件的名称,如果传入的是空字符串,则默认事件名称字段匹配成功。
+
+ +**表 3** HiSysEventSubscribeCallBackBase订阅对象 + + + + + + + + + + +

接口名称

+

描述

+

void HiSysEventSubscribeCallBackBase::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail)

+

接口功能:订阅事件的回调接口。

+

输入参数:

+
  • domain:事件所属领域。
  • eventName:事件的名称。
  • eventType:事件类型。
  • eventDetail:包含事件相关信息的字符串,以json的形式体现。
+

返回值:无。

+
+ +## 开发实例 + +### C++接口实例 + +本实例介绍如何订阅domain=HIVIEWDFX的所有系统事件。 + +1. 源代码开发: + + - 引入对应的头文件: + + hisysevent\_manager.h。 + + - 实现回调接口: + + HiSysEventSubscribeCallBackBase::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\)。 + + - 注册回调对象: + + HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\)。 + + + ``` + // 以下是订阅domain=HIVIEWDFX的所有系统事件的应用例子 + #include "hisysevent_manager.h" + #include + namespace OHOS { + namespace HiviewDFX { + // 实现订阅回调对象的接口 + void HiSysEventToolListener::OnHandle(const std::string& domain, const std::string& eventName, + const int eventType, const std::string& eventDetail) + { + std::cout << eventDetail << std::endl; + } + + void HiSysEventToolListener::OnServiceDied() + { + std::cout << std::string("service disconnect, exit") << std::endl; + exit(0); + } + } // namespace HiviewDFX + } // namespace OHOS + + // 调用订阅接口注册开发实现的订阅对象 + auto toolListener = std::make_shared(); + struct ListenerRule rule; + rule.ruleType = 1; // 1: default type + rule.domain = "HIVIEWDFX"; + std::vector sysRules; + sysRules.push_back(rule); + HiSysEventManager::AddEventListener(toolListener, sysRules); + ``` + +2. 编译设置: + + 在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。 + + ``` + external_deps = [ "hisysevent_native:libhisyseventmanager", ] + ``` + + diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md new file mode 100644 index 0000000000000000000000000000000000000000..2641463433d4d786d1b655247b5a9496167d6d30 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-select.md @@ -0,0 +1,179 @@ +# HiSysEvent查询指导 + +- [概述](#section279684125212) +- [接口说明](#section03869128521) +- [开发实例](#section14286111855212) + - [C++接口实例](#section162045551743) + + +## 概述 + +HiSysEvent提供了查询接口,支持开发者设置条件查询HiSysEvent事件,例如功耗部件可以通过该接口获取所需的系统事件进行业务分析。 + +## 接口说明 + +**表 1** HiSysEvent查询接口 + + + + + + + + + + +

接口名

+

描述

+

bool HiSysEventManager::QueryHiSysEvent(struct QueryArg& queryArg, std::vector<struct QueryRule>& queryRules, std::shared_ptr<HiSysEventQueryCallBackBase> queryCallBack)

+

接口功能:支持设置查询时间段,事件领域,事件名称等,查询满足条件的HiSysEvent事件。

+

输入参数:

+
  • queryArg:查询参数。
  • queryRules:事件过滤规则。
  • queryCallBack:查询接口回调对象。
+

返回值:

+
  • true:查询成功。
  • false:查询失败。
+
+ +**表 2** QueryArg查询参数对象 + + + + + + + + + + + + + + + + +

属性名称

+

描述

+

long long beginTime

+

事件开始时间。

+

long long endTime

+

事件结束事件。

+

int maxEvents

+

返回最大的查询条数。

+
+ +**表 3** QueryRule查询规则对象 + + + + + + + + + + + + + + + + +

属性名称

+

描述

+

uint32_t ruleType

+

规则类型,目前默认是0。

+

std::string domain;

+
  • domain:事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。
+

std::vector<std::string> eventList

+
  • eventList:事件名称的列表,如果传入的是空字符串,则默认事件名称字段匹配成功。
+
+ +**表 4** HiSysEventQueryCallBackBase查询回调对象 + + + + + + + + + + + + + +

接口名称

+

描述

+

void HiSysEventQueryCallBackBase::OnQuery(const ::std::vector<std::string>& sysEvent, const ::std::vector<int64_t>& seq)

+

接口功能:订阅事件查询中的回调。

+

输入参数:

+
  • sysEvent:返回事件集合。
  • seq:事件序列集合。
+

返回值:无。

+

void HiSysEventQueryCallBackBase::OnComplete(int32_t reason, int32_t total)

+

接口功能:订阅事件查询完成的回调。

+

输入参数:

+
  • reason:查询结束返回原因,目前默认是0。
  • total:本次查询总共返回的事件总数量。
+

返回值:无。

+
+ +## 开发实例 + +### C++接口实例 + +本实例介绍如何查询所有系统事件。 + +1. 源代码开发: + + - 引入对应的头文件: + + hisysevent\_manager.h + + - 实现对应的查询回调接口: + + void HiSysEventQueryCallBackBase::OnQuery\(const ::std::vector& sysEvent, const ::std::vector& seq\) + + void HiSysEventQueryCallBackBase::OnComplete\(int32\_t reason, int32\_t total\) + + - 在相应的业务逻辑里面调用查询接口: + + HiSysEventManager::QueryHiSysEvent\(struct QueryArg& queryArg, std::vector& queryRules, std::shared\_ptr queryCallBack\) + + + ``` + // 以下是查询所有系统事件的应用例子 + #include "hisysevent_manager.h" + #include + + namespace OHOS { + namespace HiviewDFX { + // 实现查询回调的接口 + void HiSysEventToolQuery::OnQuery(const ::std::vector& sysEvent, + const ::std::vector& seq) + { + for_each(sysEvent.cbegin(), sysEvent.cend(), [](const std::string &tmp) { + std::cout << tmp << std::endl; + }); + } + + void HiSysEventToolQuery::OnComplete(int32_t reason, int32_t total) + { + return; + } + } // namespace HiviewDFX + } // namespace OHOS + + // 调用查询接口获取HiSysEvent事件 + auto queryCallBack = std::make_shared(); + struct QueryArg args(clientCmdArg.beginTime, clientCmdArg.endTime, clientCmdArg.maxEvents); + std::vector mRules; + HiSysEventManager::QueryHiSysEvent(args, mRules, queryCallBack); + ``` + +2. 编译设置: + + 在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。 + + ``` + external_deps = [ "hisysevent_native:libhisyseventmanager", ] + ``` + + diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md new file mode 100644 index 0000000000000000000000000000000000000000..37a5aaea1127b102290eb2afb2c6ce5fa887a0a9 --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md @@ -0,0 +1,41 @@ +# HiSysEvent工具使用指导 + +- [概述](#section1886702718521) +- [使用指导](#section1210623418527) + +## 概述 + +目前系统预制了HiSysEvent小工具,可以通过命令行参数,设置查询条件,查询满足要求的HiSysEvent系统事件,支撑开发者在开发过程中是否打点成功,以及故障定位时系统所发生的事件等研发场景。 + +## 使用指导 + +1. HiSysEvent工具的参数: + + 工具预置在/system/bin目录下,命令可以在任意目录执行。 + + ``` + hisysevent [-r | -l [-s