From 54f1822995fef6a7ec91eff5bfc2af5a2f50e162 Mon Sep 17 00:00:00 2001 From: duangavin123 Date: Tue, 20 Jul 2021 22:06:32 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=AF=BC=E5=85=A5OpenHarmony=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: duangavin123 --- en/device-dev/bundles/Readme-EN.md | 31 +- en/device-dev/bundles/bundle-composition.md | 99 -- en/device-dev/bundles/bundle-development.md | 241 ---- en/device-dev/bundles/bundle-management.md | 232 ---- en/device-dev/bundles/bundle-version.md | 23 - .../bundles/bundles-demo-devsample.md | 54 + .../bundles/bundles-demo-environment.md | 139 +++ ...tion.md => bundles-demo-hpmdescription.md} | 0 en/device-dev/bundles/bundles-demo.md | 9 + .../bundles/bundles-guide-develop.md | 240 ++++ .../bundles/bundles-guide-overview.md | 146 +++ .../bundles/bundles-guide-prepare.md | 84 ++ en/device-dev/bundles/bundles-guide.md | 9 + .../bundles/bundles-standard-rules.md | 549 +++++++++ en/device-dev/bundles/bundles.md | 9 + en/device-dev/bundles/development-example.md | 54 - .../bundles/development-guidelines.md | 9 - .../bundles/development-specifications.md | 15 - en/device-dev/bundles/distribution.md | 56 - .../bundles/environment-variables.md | 53 - .../en-us_image_0000001051452177.png | Bin .../en-us_image_0000001051770876.png | Bin .../figure/en-us_image_0000001173313501.png | Bin 0 -> 329058 bytes .../hardware-connections-23.png} | Bin .../figure/hardware-connections-24.png | Bin 0 -> 10111 bytes ...ersion-requirement-3-0-4-or-later)-25.png} | Bin .../figure/\347\273\204\344\273\2660924.png" | Bin .../bundles/figures/bundle-dependencies.png | Bin 359473 -> 0 bytes en/device-dev/bundles/hpm-user-guide.md | 9 - en/device-dev/bundles/overview-0.md | 54 - en/device-dev/bundles/overview.md | 38 - en/device-dev/bundles/preparations-1.md | 139 --- en/device-dev/bundles/preparations.md | 84 -- en/device-dev/driver/Readme-EN.md | 92 +- en/device-dev/driver/drive-hdf-development.md | 175 +++ en/device-dev/driver/drive-hdf-manage.md | 437 +++++++ en/device-dev/driver/drive-hdf-news.md | 193 +++ .../{hdfoverview.md => drive-hdf-overview.md} | 0 en/device-dev/driver/drive-hdf-sample.md | 238 ++++ ...nagement.md => drive-hdf-servicemanage.md} | 0 en/device-dev/driver/drive-hdf.md | 15 + .../driver/drive-peripherals-external-des.md | 622 ++++++++++ .../driver/drive-peripherals-lcd-des.md | 363 ++++++ .../driver/drive-peripherals-sensor-des.md | 929 ++++++++++++++ .../driver/drive-peripherals-touch-des.md | 410 +++++++ en/device-dev/driver/drive-peripherals.md | 11 + .../driver/drive-platform-gpio-des.md | 560 +++++++++ .../driver/drive-platform-i2c-des.md | 426 +++++++ .../driver/drive-platform-mipidsi-des.md | 554 +++++++++ .../driver/drive-platform-rtc-des.md | 944 +++++++++++++++ .../driver/drive-platform-sdio-des.md | 1068 +++++++++++++++++ .../driver/drive-platform-spi-des.md | 566 +++++++++ .../driver/drive-platform-uart-des.md | 682 +++++++++++ .../driver/drive-platform-watchdog-des.md | 557 +++++++++ en/device-dev/driver/drive-platform.md | 19 + en/device-dev/driver/drive.md | 9 + .../driver/driver-configuration-management.md | 437 ------- en/device-dev/driver/driver-development.md | 175 --- .../driver-message-mechanism-management.md | 193 --- en/device-dev/driver/driver-platform.md | 19 - ...chitecture-of-the-display-driver-model.png | Bin ...architecture-of-the-input-driver-model.png | Bin ...rchitecture-of-the-sensor-driver-model.png | Bin .../common-pins-of-the-touchscreen.png | Bin ...i-transmitting-and-receiving-interface.png | Bin .../en-us_image_0000001053405727.png | Bin .../en-us_image_0000001054280608.png | Bin .../en-us_image_0000001054564784.png | Bin .../en-us_image_0000001123509750.png} | Bin .../en-us_image_0000001123514210.png} | Bin .../en-us_image_0000001123540984.png} | Bin .../en-us_image_0000001123582482.png} | Bin .../en-us_image_0000001123675706.png} | Bin .../en-us_image_0000001123703482.png} | Bin .../en-us_image_0000001123742254.png} | Bin .../en-us_image_0000001170187071.png} | Bin .../en-us_image_0000001170227689.png} | Bin .../en-us_image_0000001170229891.png} | Bin .../en-us_image_0000001170262141.png} | Bin .../en-us_image_0000001170383063.png} | Bin .../driver/{figures => figure}/mipi-dsi.png | Bin .../physical-connection-diagram-for-i2c.png | Bin .../{figures => figure}/ttl-interface.png | Bin ...\345\210\206\345\270\203\345\233\2764.png" | Bin en/device-dev/driver/gpio.md | 9 - en/device-dev/driver/gpiooverview.md | 85 -- en/device-dev/driver/gpiousage-example.md | 79 -- en/device-dev/driver/gpiousage-guidelines.md | 395 ------ en/device-dev/driver/hdf.md | 15 - .../driver/hdfdevelopment-example.md | 238 ---- en/device-dev/driver/i2c-overview.md | 60 - en/device-dev/driver/i2c-usage-example.md | 192 --- en/device-dev/driver/i2c-usage-guidelines.md | 171 --- en/device-dev/driver/i2c.md | 9 - en/device-dev/driver/lcd.md | 9 - .../driver/lcddevelopment-example.md | 291 ----- .../driver/lcddevelopment-guidelines.md | 23 - en/device-dev/driver/lcdoverview.md | 46 - en/device-dev/driver/mipi-dsi-overview.md | 84 -- en/device-dev/driver/mipi-dsi.md | 9 - en/device-dev/driver/peripherals.md | 11 - .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../driver/public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../driver/public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes en/device-dev/driver/rtc-overview.md | 103 -- en/device-dev/driver/rtc-usage-example.md | 97 -- en/device-dev/driver/rtc-usage-guidelines.md | 741 ------------ en/device-dev/driver/rtc.md | 9 - en/device-dev/driver/sdio.md | 9 - en/device-dev/driver/sdiooverview.md | 149 --- en/device-dev/driver/sdiousage-example.md | 129 -- en/device-dev/driver/sdiousage-guidelines.md | 787 ------------ .../sensor-driver-development-example.md | 583 --------- .../sensor-driver-development-guidelines.md | 16 - .../driver/sensor-driver-overview.md | 244 ---- .../driver/sensor-driver-test-guidelines.md | 82 -- en/device-dev/driver/sensor.md | 11 - en/device-dev/driver/spi.md | 9 - en/device-dev/driver/spioverview.md | 107 -- en/device-dev/driver/spiusage-example.md | 70 -- en/device-dev/driver/spiusage-guidelines.md | 386 ------ en/device-dev/driver/touchscreen.md | 9 - .../driver/touchscreendevelopment-example.md | 300 ----- .../touchscreendevelopment-guidelines.md | 35 - en/device-dev/driver/touchscreenoverview.md | 71 -- en/device-dev/driver/uart.md | 9 - en/device-dev/driver/uartoverview.md | 106 -- en/device-dev/driver/uartusage-example.md | 67 -- en/device-dev/driver/uartusage-guidelines.md | 506 -------- en/device-dev/driver/usage-example.md | 98 -- en/device-dev/driver/usage-guidelines.md | 365 ------ en/device-dev/driver/watchdog.md | 9 - en/device-dev/driver/watchdogoverview.md | 78 -- en/device-dev/driver/watchdogusage-example.md | 86 -- .../driver/watchdogusage-guidelines.md | 395 ------ en/device-dev/driver/wlan.md | 9 - .../driver/wlandevelopment-example.md | 372 ------ .../driver/wlandevelopment-guidelines.md | 18 - en/device-dev/driver/wlanoverview.md | 229 ---- en/device-dev/get-code/Readme-EN.md | 8 +- en/device-dev/get-code/docker-environment.md | 313 ----- .../{figures/3.png => figure/3-22.png} | Bin .../en-us_image_0000001101413884.png | Bin .../en-us_image_0000001119755646.png | Bin .../en-us_image_0000001119915556.png | Bin .../en-us_image_0000001166715379.png | Bin en/device-dev/get-code/gettools-acquire.md | 313 +++++ en/device-dev/get-code/gettools-ide.md | 17 + en/device-dev/get-code/gettools.md | 7 + en/device-dev/get-code/ide.md | 17 - .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes .../get-code/source-code-acquisition.md | 429 ------- en/device-dev/get-code/sourcecode-acquire.md | 429 +++++++ en/device-dev/get-code/sourcecode.md | 5 + en/device-dev/get-code/tool-acquisition.md | 7 - en/device-dev/glossary/Readme-EN.md | 4 + en/device-dev/guide/Readme-EN.md | 100 +- ...-the-private-drivers-of-the-touchscreen.md | 99 -- en/device-dev/guide/adding-pages.md | 34 - .../guide/building-and-burning-14.md | 17 - en/device-dev/guide/building-and-burning.md | 20 - .../guide/building-the-details-page.md | 396 ------ en/device-dev/guide/building-the-home-page.md | 581 --------- en/device-dev/guide/camera-control.md | 9 - en/device-dev/guide/cameras-with-a-screen.md | 7 - .../guide/cameras-without-a-screen.md | 5 - .../configuring-device-driver-descriptions.md | 64 - .../guide/configuring-the-touchscreen.md | 98 -- .../guide/debugging-and-packaging.md | 4 - .../guide/debugging-and-verification.md | 5 - .../guide/developing-a-touchscreen-driver.md | 17 - en/device-dev/guide/development-12.md | 395 ------ .../development-example-for-clock-apps.md | 15 - ...elopment-example-for-peripheral-drivers.md | 15 - ...evelopment-example-for-platform-drivers.md | 11 - .../guide/development-guidelines-2.md | 9 - en/device-dev/guide/development-guidelines.md | 7 - en/device-dev/guide/development.md | 91 -- .../device-camera-control-demo-photoguide.md | 396 ++++++ ...evice-camera-control-demo-previewguide.md} | 0 ... device-camera-control-demo-videoguide.md} | 0 .../guide/device-camera-control-demo.md | 9 + .../guide/device-camera-control-example.md | 64 + .../guide/device-camera-control-overview.md | 10 + en/device-dev/guide/device-camera-control.md | 9 + .../guide/device-camera-visual-addpage.md | 34 + .../guide/device-camera-visual-debug.md | 4 + .../guide/device-camera-visual-details.md | 396 ++++++ .../{faqs.md => device-camera-visual-faqs.md} | 0 .../guide/device-camera-visual-first-page.md | 581 +++++++++ .../guide/device-camera-visual-overview.md | 15 + .../guide/device-camera-visual-prepare.md | 27 + .../guide/device-camera-visual-run.md | 29 + en/device-dev/guide/device-camera-visual.md | 19 + en/device-dev/guide/device-camera.md | 7 + en/device-dev/guide/device-drive-demo.md | 453 +++++++ ...ce-iotcamera-control-demo-photodevguide.md | 396 ++++++ ...e-iotcamera-control-demo-videodevguide.md} | 0 .../guide/device-iotcamera-control-demo.md | 7 + .../guide/device-iotcamera-control-example.md | 45 + .../device-iotcamera-control-overview.md | 10 + .../guide/device-iotcamera-control.md | 9 + en/device-dev/guide/device-iotcamera.md | 5 + en/device-dev/guide/device-outerdrive-demo.md | 483 ++++++++ .../guide/device-wifi-led-outcontrol.md | 110 ++ en/device-dev/guide/device-wifi-sdk.md | 325 +++++ en/device-dev/guide/device-wifi.md | 7 + en/device-dev/guide/device.md | 15 + en/device-dev/guide/faqs-10.md | 39 - .../{figures => figure}/adding-a-page.png | Bin .../guide/{figures => figure}/clock.png | Bin .../complete-project-directory.png | Bin .../en-us_image_0000001078563230.png | Bin .../en-us_image_0000001082434703.png | Bin .../en-us_image_0000001169991055.png} | Bin .../entering-the-page-name.png | Bin .../guide/{figures => figure}/home-screen.png | Bin .../{figures => figure}/indicator-bar.png | Bin .../{figures => figure}/led-blinking.gif | Bin .../{figures => figure}/preview-effect.jpg | Bin .../{figures => figure}/project-directory.png | Bin .../guide/{figures => figure}/saved-files.png | Bin ...yed-after-the-exit-command-is-executed.png | Bin ...-the-photographing-command-is-executed.png | Bin ...-after-the-preview-command-is-executed.png | Bin ...fter-the-recording-command-is-executed.png | Bin .../starting-camera_sample.png | Bin .../title-bar-and-information-bar.png | Bin .../guide/{figures => figure}/title-bar.png | Bin .../video_2020-07-25_173141.gif | Bin .../figure/\347\273\230\345\233\2761.png" | Bin .../guide/function-invocation-logic.md | 40 - en/device-dev/guide/hardware-resources.md | 6 - en/device-dev/guide/how-to-develop.md | 230 ---- ...and-registering-the-driver-with-the-hdf.md | 4 - ...and-registering-the-driver-with-the-hdf.md | 35 - ...and-registering-the-driver-with-the-hdf.md | 22 - .../input-driver-model-workflow-analysis.md | 18 - en/device-dev/guide/input-driver-model.md | 12 - en/device-dev/guide/led-peripheral-control.md | 9 - .../guide/oem_device_clockapp_des.md | 332 +++++ en/device-dev/guide/overview-0.md | 10 - en/device-dev/guide/overview-1.md | 10 - en/device-dev/guide/overview-10.md | 26 - en/device-dev/guide/overview-13.md | 9 - en/device-dev/guide/overview-6.md | 15 - en/device-dev/guide/overview-7.md | 15 - en/device-dev/guide/overview.md | 4 - .../parsing-private-configuration-data.md | 17 - en/device-dev/guide/photographing-3.md | 395 ------ en/device-dev/guide/photographing.md | 395 ------ en/device-dev/guide/preparations-11.md | 7 - en/device-dev/guide/preparations-8.md | 8 - en/device-dev/guide/preparations.md | 27 - .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../guide/public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../guide/public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes .../guide/running-on-the-device-9.md | 35 - en/device-dev/guide/running-on-the-device.md | 29 - .../guide/screen-and-camera-control.md | 9 - .../guide/setting-up-the-environment.md | 7 - en/device-dev/guide/signing-and-packaging.md | 4 - en/device-dev/guide/startup-log-analysis.md | 19 - .../guide/third-party-sdk-integration.md | 325 ----- en/device-dev/guide/use-case-5.md | 64 - en/device-dev/guide/use-case.md | 45 - en/device-dev/guide/verification.md | 9 - .../guide/visual-application-development.md | 19 - .../guide/wlan-connected-products.md | 5 - en/device-dev/kernel/Readme-EN.md | 178 ++- en/device-dev/kernel/arp.md | 114 -- en/device-dev/kernel/cat.md | 53 - en/device-dev/kernel/cd.md | 57 - en/device-dev/kernel/chgrp.md | 60 - en/device-dev/kernel/chmod.md | 60 - en/device-dev/kernel/chown.md | 69 -- en/device-dev/kernel/commissioning.md | 15 - en/device-dev/kernel/cp.md | 68 -- en/device-dev/kernel/cpup.md | 63 - en/device-dev/kernel/date.md | 92 -- en/device-dev/kernel/dhclient.md | 138 --- en/device-dev/kernel/dmesg.md | 111 -- en/device-dev/kernel/exec.md | 58 - ...p-of-the-hello-harmony-txt-file-to-100.png | Bin ...y-txt-file-to-100-and-200-respectively.png | Bin ...n-on-the-hello-harmony-txt-file-to-666.png | Bin .../command-output-19.png} | Bin .../{figures => figure}/command-output.png | Bin .../kernel/{figures => figure}/cpu-usage.png | Bin .../{figures => figure}/creating-file-c.png | Bin .../creating-the-share-directory.png | Bin .../deleting-directory-dir.png | Bin .../deleting-the-log1-txt-file.png | Bin .../deleting-the-sd-directory.png | Bin .../directory-switching-result.png | Bin ...laying-the-memory-usage-in-three-units.png | Bin .../en-us_image_0000001051690323.png | Bin .../en-us_image_0000001052370303.png | Bin .../en-us_image_0000001052370305.png | Bin .../en-us_image_0000001052370307.png | Bin .../en-us_image_0000001052530298.png | Bin .../en-us_image_0000001052810300.png | Bin .../en-us_image_0000001052810304.png | Bin .../en-us_image_0000001053224218.png | Bin .../en-us_image_0000001053710680.png | Bin .../en-us_image_0000001053826366.png | Bin .../en-us_image_0000001054624363.png | Bin .../file-copying-result.png | Bin .../no-out-of-bounds-memory-access.png | Bin .../out-of-bounds-memory-access.png | Bin .../output-of-telnet-on.png | Bin .../output-of-the-statfs-command.png | Bin .../{figures => figure}/posix-framework.png | Bin ...ation-about-a-specified-software-timer.png | Bin ...nformation-about-all-semaphores-in-use.png | Bin ...-information-about-all-software-timers.png | Bin .../querying-partial-task-information.png | Bin .../{figures => figure}/querying-pids.png | Bin .../querying-the-current-path.png | Bin ...nship-between-the-vfs-and-file-systems.png | Bin ...ending-a-signal-to-a-specified-process.png | Bin .../signal-sending-failure.png | Bin .../snipaste_2021-01-26_10-38-58-20.png} | Bin .../snipaste_2021-01-26_10-38-58-21.png} | Bin .../snipaste_2021-01-26_10-38-58.png | Bin .../state-transition-of-a-process.png | Bin .../state-transition-of-a-thread.png | Bin ...e-user-whose-uid-and-gid-are-both-1000.png | Bin ...-printed-based-on-the-specified-format.png | Bin .../task-command-monitoring-result.png | Bin .../tree-structure-of-the-file-system.png | Bin .../{figures => figure}/unmounting-result.png | Bin .../usage-of-system-resources.png | Bin ...ewing-content-of-the-current-directory.png | Bin ...-content-of-the-hello-harmony-txt-file.png | Bin .../viewing-the-usage-of-physical-pages.png | Bin ...memory-usage-of-the-process-with-pid-3.png | Bin .../writing-dmesg-content-to-a-file.png | Bin en/device-dev/kernel/file-commands.md | 45 - en/device-dev/kernel/format.md | 69 -- en/device-dev/kernel/free.md | 119 -- ...compiling-and-building-the-linux-kernel.md | 45 - ...tches-on-openharmony-development-boards.md | 17 - en/device-dev/kernel/hwi.md | 94 -- .../kernel/introduction-to-the-shell.md | 36 - en/device-dev/kernel/kernel-lite-mini.md | 2 + .../kernel/kernel-lite-small-basic.md | 11 + .../{fat.md => kernel-lite-small-file-fat.md} | 0 ...ffs2.md => kernel-lite-small-file-jffs.md} | 0 .../kernel/kernel-lite-small-file-nfs.md | 163 +++ ...mfs.md => kernel-lite-small-file-ramfs.md} | 0 .../kernel/kernel-lite-small-file-vfs.md | 171 +++ .../kernel/kernel-lite-small-file.md | 54 + ...ary.md => kernel-lite-small-lib-differ.md} | 0 .../kernel/kernel-lite-small-lib-standard.md | 197 +++ en/device-dev/kernel/kernel-lite-small-lib.md | 7 + .../kernel/kernel-lite-small-memory.md | 353 ++++++ en/device-dev/kernel/kernel-lite-small-net.md | 303 +++++ .../kernel/kernel-lite-small-process.md | 301 +++++ ....md => kernel-lite-small-shell-cmd-abn.md} | 0 .../kernel-lite-small-shell-cmd-file-cat.md | 53 + .../kernel-lite-small-shell-cmd-file-cd.md | 57 + .../kernel-lite-small-shell-cmd-file-chgrp.md | 60 + .../kernel-lite-small-shell-cmd-file-chmod.md | 60 + .../kernel-lite-small-shell-cmd-file-chown.md | 69 ++ .../kernel-lite-small-shell-cmd-file-cp.md | 68 ++ ...kernel-lite-small-shell-cmd-file-format.md | 69 ++ .../kernel-lite-small-shell-cmd-file-is.md | 58 + .../kernel-lite-small-shell-cmd-file-isfd.md | 29 + .../kernel-lite-small-shell-cmd-file-mkdir.md | 54 + .../kernel-lite-small-shell-cmd-file-mount.md | 78 ++ .../kernel-lite-small-shell-cmd-file-part.md | 52 + ...ernel-lite-small-shell-cmd-file-partion.md | 62 + .../kernel-lite-small-shell-cmd-file-pwd.md | 34 + .../kernel-lite-small-shell-cmd-file-rm.md | 67 ++ .../kernel-lite-small-shell-cmd-file-rmdir.md | 55 + .../kernel-lite-small-shell-cmd-file-sta.md | 52 + ... kernel-lite-small-shell-cmd-file-sync.md} | 0 .../kernel-lite-small-shell-cmd-file-touch.md | 59 + ...kernel-lite-small-shell-cmd-file-umount.md | 55 + .../kernel-lite-small-shell-cmd-file-write.md | 69 ++ .../kernel-lite-small-shell-cmd-file.md | 45 + .../kernel/kernel-lite-small-shell-cmd-mag.md | 40 + .../kernel-lite-small-shell-cmd-net-arp.md | 114 ++ .../kernel-lite-small-shell-cmd-net-dh.md | 138 +++ ...=> kernel-lite-small-shell-cmd-net-dns.md} | 0 ...=> kernel-lite-small-shell-cmd-net-ipc.md} | 0 ...=> kernel-lite-small-shell-cmd-net-ipd.md} | 0 .../kernel-lite-small-shell-cmd-net-net.md | 83 ++ ...=> kernel-lite-small-shell-cmd-net-ntp.md} | 0 .../kernel-lite-small-shell-cmd-net-ping.md | 98 ++ ... kernel-lite-small-shell-cmd-net-ping6.md} | 0 .../kernel-lite-small-shell-cmd-net-tel.md | 65 + .../kernel-lite-small-shell-cmd-net-tftp.md | 87 ++ .../kernel/kernel-lite-small-shell-cmd-net.md | 25 + .../kernel-lite-small-shell-cmd-sys-cpup.md | 63 + .../kernel-lite-small-shell-cmd-sys-date.md | 92 ++ .../kernel-lite-small-shell-cmd-sys-demsg.md | 111 ++ .../kernel-lite-small-shell-cmd-sys-exec.md | 58 + .../kernel-lite-small-shell-cmd-sys-free.md | 119 ++ ...> kernel-lite-small-shell-cmd-sys-help.md} | 0 .../kernel-lite-small-shell-cmd-sys-hwi.md | 94 ++ .../kernel-lite-small-shell-cmd-sys-kill.md | 82 ++ .../kernel-lite-small-shell-cmd-sys-log.md | 72 ++ .../kernel-lite-small-shell-cmd-sys-mem.md | 38 + .../kernel-lite-small-shell-cmd-sys-oom.md | 120 ++ .../kernel-lite-small-shell-cmd-sys-pmm.md | 91 ++ ... kernel-lite-small-shell-cmd-sys-reset.md} | 0 .../kernel-lite-small-shell-cmd-sys-sem.md | 91 ++ .../kernel-lite-small-shell-cmd-sys-stack.md | 73 ++ .../kernel-lite-small-shell-cmd-sys-su.md | 62 + .../kernel-lite-small-shell-cmd-sys-swymr.md | 110 ++ .../kernel-lite-small-shell-cmd-sys-sys.md | 91 ++ .../kernel-lite-small-shell-cmd-sys-task.md | 125 ++ .../kernel-lite-small-shell-cmd-sys-uname.md | 72 ++ .../kernel-lite-small-shell-cmd-sys-vmm.md | 158 +++ .../kernel-lite-small-shell-cmd-sys-watch.md | 98 ++ .../kernel/kernel-lite-small-shell-cmd-sys.md | 47 + .../kernel/kernel-lite-small-shell-cmd.md | 13 + .../kernel/kernel-lite-small-shell-des.md | 36 + .../kernel/kernel-lite-small-shell-guide.md | 167 +++ ...e.md => kernel-lite-small-shell-sample.md} | 0 .../kernel/kernel-lite-small-shell.md | 15 + .../kernel/kernel-lite-small-thread.md | 702 +++++++++++ en/device-dev/kernel/kernel-lite-small.md | 11 + en/device-dev/kernel/kernel-lite.md | 7 + en/device-dev/kernel/kernel-standard-build.md | 47 + ...nel-overview.md => kernel-standard-des.md} | 0 en/device-dev/kernel/kernel-standard-patch.md | 17 + en/device-dev/kernel/kernel-standard.md | 9 + en/device-dev/kernel/kernel.md | 7 + en/device-dev/kernel/kill.md | 82 -- en/device-dev/kernel/linux-kernel.md | 9 - en/device-dev/kernel/lite-kernel.md | 11 - en/device-dev/kernel/log.md | 72 -- en/device-dev/kernel/ls.md | 58 - en/device-dev/kernel/lsfd.md | 29 - en/device-dev/kernel/magic-key-usage.md | 40 - en/device-dev/kernel/memcheck.md | 38 - en/device-dev/kernel/memory.md | 353 ------ en/device-dev/kernel/mkdir.md | 54 - en/device-dev/kernel/mount.md | 78 -- en/device-dev/kernel/netstat.md | 83 -- en/device-dev/kernel/network-commands.md | 25 - en/device-dev/kernel/network.md | 303 ----- en/device-dev/kernel/nfs.md | 163 --- en/device-dev/kernel/oom.md | 120 -- ...openharmony-lite-kernel-basic-functions.md | 11 - .../openharmony-lite-kernel-file-system.md | 54 - en/device-dev/kernel/partinfo.md | 52 - en/device-dev/kernel/partition.md | 62 - en/device-dev/kernel/ping.md | 98 -- en/device-dev/kernel/pmm.md | 91 -- en/device-dev/kernel/process.md | 301 ----- .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../kernel/public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../kernel/public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes en/device-dev/kernel/pwd.md | 34 - en/device-dev/kernel/rm.md | 67 -- en/device-dev/kernel/rmdir.md | 55 - en/device-dev/kernel/sem.md | 91 -- .../shell-command-development-guidelines.md | 167 --- .../kernel/shell-command-reference.md | 13 - en/device-dev/kernel/stack.md | 73 -- en/device-dev/kernel/standard-library-0.md | 197 --- en/device-dev/kernel/standard-library.md | 7 - en/device-dev/kernel/statfs.md | 52 - en/device-dev/kernel/su.md | 62 - en/device-dev/kernel/swtmr.md | 110 -- en/device-dev/kernel/system-commands.md | 47 - en/device-dev/kernel/systeminfo.md | 91 -- en/device-dev/kernel/task.md | 125 -- en/device-dev/kernel/telnet.md | 65 - en/device-dev/kernel/tftp.md | 87 -- en/device-dev/kernel/thread.md | 702 ----------- en/device-dev/kernel/touch.md | 59 - en/device-dev/kernel/umount.md | 55 - en/device-dev/kernel/uname.md | 72 -- en/device-dev/kernel/vfs.md | 171 --- en/device-dev/kernel/vmm.md | 158 --- en/device-dev/kernel/watch.md | 98 -- en/device-dev/kernel/writeproc.md | 69 -- en/device-dev/overview.md | 32 +- en/device-dev/porting/Readme-EN.md | 55 +- .../porting/basic-kernel-adaptation.md | 83 -- en/device-dev/porting/before-you-start.md | 84 -- .../porting/board-level-os-porting.md | 13 - .../en-us_image_0000001072304191.png | Bin .../en-us_image_0000001073943511.png | Bin .../figure/en-us_image_0000001126198996.png | Bin 0 -> 11543 bytes .../figure/en-us_image_0000001126354076.png | Bin 0 -> 70789 bytes .../figure/en-us_image_0000001126358814.png | Bin 0 -> 55221 bytes .../figure/en-us_image_0000001172273945.jpg | Bin 0 -> 23299 bytes .../figure/en-us_image_0000001172393865.jpg | Bin 0 -> 13564 bytes en/device-dev/porting/figure/hdf_wifi.png | Bin 0 -> 79641 bytes .../figure/kernel-startup-framework.jpg | Bin 0 -> 912006 bytes .../key-steps-for-soc-porting.png | Bin ...cess-for-board-level-driver-adaptation.png | Bin .../successful-startup-of-openharmony.png | Bin .../figure/\345\210\206\347\261\273.png" | Bin 0 -> 20230 bytes .../porting/kernel-porting-verification.md | 59 - en/device-dev/porting/kernel-porting.md | 9 - en/device-dev/porting/overview-0.md | 64 - en/device-dev/porting/overview-1.md | 57 - .../porting-a-library-built-using-cmake.md | 435 ------- .../porting-a-library-built-using-makefile.md | 309 ----- en/device-dev/porting/porting-preparations.md | 7 - .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../porting/public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes en/device-dev/porting/system-modules.md | 26 - .../third-party-library-porting-guide.md | 9 - .../porting/third-party-soc-porting-guide.md | 11 - .../porting/transplant-chip-board-bundle.md | 57 + .../transplant-chip-board-component.md | 26 + ...tion.md => transplant-chip-board-drive.md} | 0 ...he-hal.md => transplant-chip-board-hal.md} | 0 .../porting/transplant-chip-board-overview.md | 57 + .../porting/transplant-chip-board-xts.md | 63 + .../porting/transplant-chip-board.md | 15 + .../{faq.md => transplant-chip-faqs.md} | 0 .../transplant-chip-kernel-adjustment.md | 83 ++ .../transplant-chip-kernel-overview.md | 64 + .../porting/transplant-chip-kernel-verify.md | 59 + .../porting/transplant-chip-kernel.md | 9 + .../porting/transplant-chip-prepare-knows.md | 84 ++ ....md => transplant-chip-prepare-process.md} | 0 .../porting/transplant-chip-prepare.md | 7 + en/device-dev/porting/transplant-minichip.md | 11 + .../porting/transplant-smallchip-drive-des.md | 11 + .../porting/transplant-smallchip-drive-oom.md | 390 ++++++ .../transplant-smallchip-drive-plat.md | 165 +++ .../porting/transplant-smallchip-drive.md | 9 + .../porting/transplant-smallchip-kernel-a.md | 263 ++++ .../transplant-smallchip-kernel-linux.md | 125 ++ .../porting/transplant-smallchip-kernel.md | 7 + .../transplant-smallchip-prepare-building.md | 142 +++ .../transplant-smallchip-prepare-needs.md | 98 ++ .../porting/transplant-smallchip-prepare.md | 7 + en/device-dev/porting/transplant-smallchip.md | 9 + .../porting/transplant-thirdparty-cmake.md | 435 +++++++ .../porting/transplant-thirdparty-makefile.md | 309 +++++ ...w.md => transplant-thirdparty-overview.md} | 0 .../porting/transplant-thirdparty.md | 9 + en/device-dev/porting/transplant.md | 9 + en/device-dev/porting/xts.md | 63 - .../public_sys-resources/icon-caution.gif | Bin .../public_sys-resources/icon-danger.gif | Bin .../public_sys-resources/icon-note.gif | Bin .../public_sys-resources/icon-notice.gif | Bin .../public_sys-resources/icon-tip.gif | Bin .../public_sys-resources/icon-warning.gif | Bin en/device-dev/quick-start/Readme-EN.md | 70 +- en/device-dev/quick-start/burning-images.md | 205 ---- .../quick-start/developing-a-driver.md | 503 -------- .../quick-start/environment-setup.md | 11 - en/device-dev/quick-start/faqs-3.md | 172 --- en/device-dev/quick-start/faqs-6.md | 174 --- en/device-dev/quick-start/faqs.md | 286 ----- .../quick-start/{figures => figure}/1.png | Bin .../quick-start/{figures => figure}/10.png | Bin .../quick-start/{figures => figure}/2.png | Bin .../2021-01-27_170334-17.png} | Bin .../2021-01-27_170334-18.png} | Bin .../2021-01-27_170334-2.png | Bin .../2021-01-27_170334-5.png | Bin .../{figures => figure}/2021-01-27_170334.png | Bin .../quick-start/{figures => figure}/3-0.png | Bin .../quick-start/{figures => figure}/3.png | Bin .../figure/3516\346\255\243\351\235\242.png" | Bin .../figure/3861\346\255\243\351\235\242.png" | Bin .../quick-start/{figures => figure}/4.png | Bin .../quick-start/{figures => figure}/5-1.png | Bin .../quick-start/{figures => figure}/5.png | Bin .../quick-start/{figures => figure}/6.png | Bin ...e-application-to-access-the-network-16.png | Bin ...code-application-to-access-the-network.png | Bin .../{figures => figure}/changjian1-11.png | Bin .../{figures => figure}/changjian1.png | Bin ...king-whether-the-serial-port-is-used-9.png | Bin ...ecking-whether-the-serial-port-is-used.png | Bin .../{figures => figure}/chuankou1-6.png | Bin .../{figures => figure}/chuankou1.png | Bin ...-the-terminal-using-the-serial-port-10.png | Bin ...ing-the-terminal-using-the-serial-port.png | Bin .../en-us_image_0000001056814287.png | Bin .../en-us_image_0000001057335403.png | Bin .../en-us_image_0000001072468991.png | Bin .../en-us_image_0000001072757874.png | Bin .../en-us_image_0000001073840162.png | Bin .../en-us_image_0000001096154076.png | Bin .../en-us_image_0000001100641602.png | Bin .../en-us_image_0000001113969542.png | Bin .../en-us_image_0000001114129428.png | Bin .../en-us_image_0000001114129432.png | Bin .../en-us_image_0000001117463460.png | Bin .../en-us_image_0000001117621400.png | Bin .../en-us_image_0000001128311066.png | Bin .../en-us_image_0000001128311070.png | Bin .../en-us_image_0000001128311072.png | Bin .../en-us_image_0000001128311090.png | Bin .../en-us_image_0000001128311092.png | Bin .../en-us_image_0000001128311094.png | Bin .../en-us_image_0000001128311096.png | Bin .../en-us_image_0000001128311098.png | Bin .../en-us_image_0000001128311100.png | Bin .../en-us_image_0000001128311104.png | Bin .../en-us_image_0000001128311116.png | Bin .../en-us_image_0000001128311118.png | Bin .../en-us_image_0000001128470864.png | Bin .../en-us_image_0000001128470880.png | Bin .../en-us_image_0000001128470900.png | Bin .../en-us_image_0000001128470902.png | Bin .../en-us_image_0000001128470904.png | Bin .../en-us_image_0000001128470906.png | Bin .../figure/en-us_image_0000001128470908.png | Bin 0 -> 96467 bytes .../en-us_image_0000001128470922.png | Bin .../en-us_image_0000001142794291.png | Bin .../en-us_image_0000001142802505.png | Bin .../en-us_image_0000001143154485.png | Bin .../en-us_image_0000001160527611.png | Bin .../en-us_image_0000001163045527.png | Bin .../en-us_image_0000001174270699.png | Bin .../en-us_image_0000001174270713.png | Bin .../en-us_image_0000001174270715.png | Bin .../en-us_image_0000001174270727.png | Bin .../en-us_image_0000001174270729.png | Bin .../en-us_image_0000001174270731.png | Bin .../en-us_image_0000001174270733.png | Bin .../en-us_image_0000001174270735.png | Bin .../en-us_image_0000001174270737.png | Bin .../en-us_image_0000001174270739.png | Bin .../en-us_image_0000001174270743.png | Bin .../en-us_image_0000001174270749.png | Bin .../en-us_image_0000001174270751.png | Bin .../en-us_image_0000001174350615.png | Bin .../en-us_image_0000001174350623.png | Bin .../en-us_image_0000001174350633.png | Bin .../en-us_image_0000001174350641.png | Bin .../en-us_image_0000001174350643.png | Bin .../en-us_image_0000001174350647.png | Bin .../en-us_image_0000001174350649.png | Bin .../en-us_image_0000001174350651.png | Bin .../en-us_image_0000001174350653.png | Bin .../figure/en-us_image_0000001174350655.png | Bin 0 -> 2267 bytes .../en-us_image_0000001174350659.png | Bin .../en-us_image_0000001174350661.png | Bin .../en-us_image_0000001174350669.png | Bin ...-file-due-to-unavailable-connection-12.png | Bin ...age-file-due-to-unavailable-connection.png | Bin .../failed-to-open-the-serial-port-8.png | Bin .../failed-to-open-the-serial-port.png | Bin .../firewall-and-network-protection-14.png | Bin .../firewall-and-network-protection.png | Bin .../front-view-of-the-hi3518e-v300-board.png | Bin .../hardware-connections-3.png | Bin .../hardware-connections.png | Bin ...8\346\255\243\350\203\214\351\235\242.png" | Bin .../network-and-firewall-setting-13.png | Bin .../network-and-firewall-setting.png | Bin .../quick-start/{figures => figure}/qi1.png | Bin ...-the-visual-studio-code-application-15.png | Bin ...ing-the-visual-studio-code-application.png | Bin ...rt-displayed-after-the-u-boot-is-burnt.png | Bin .../{figures => figure}/settings-4.png | Bin .../{figures => figure}/settings.png | Bin ...ns-version-requirement-3-0-4-or-later).png | Bin ...system-startup-and-program-execution-7.png | Bin ...l-system-startup-and-program-execution.png | Bin .../figure/\346\210\252\345\233\276.png" | Bin ...5\275\242\345\244\207\344\273\275-292.png" | Bin .../3516\346\255\243\351\235\242-17.png" | Bin 206035 -> 0 bytes .../figures/en-us_image_0000001128471042.png | Bin 97053 -> 0 bytes .../figures/en-us_image_0000001174350781.png | Bin 2418 -> 0 bytes ...etting-started-for-the-standard-system.png | Bin 32197 -> 0 bytes .../quick-start/hi3516-development-board.md | 42 - en/device-dev/quick-start/hi3516.md | 11 - .../quick-start/hi3518-development-board.md | 57 - en/device-dev/quick-start/hi3518.md | 9 - .../quick-start/hi3861-development-board.md | 157 --- en/device-dev/quick-start/hi3861.md | 11 - en/device-dev/quick-start/how-to-develop.md | 9 - .../introduction-to-the-development-boards.md | 9 - en/device-dev/quick-start/introduction.md | 54 - .../quick-start/mini-and-small-systems.md | 11 - en/device-dev/quick-start/overview.md | 175 --- .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes ...-1.md => quickstart-lite-env-setup-des.md} | 0 ...q.md => quickstart-lite-env-setup-faqs.md} | 0 .../quickstart-lite-env-setup-lin.md | 361 ++++++ .../quickstart-lite-env-setup-win.md | 182 +++ .../quick-start/quickstart-lite-env-setup.md | 11 + .../quickstart-lite-introduction-hi3516.md | 42 + .../quickstart-lite-introduction-hi3518.md | 57 + .../quickstart-lite-introduction-hi3861.md | 157 +++ .../quickstart-lite-introduction.md | 9 + ...rview-0.md => quickstart-lite-overview.md} | 0 .../quickstart-lite-steps-board3516-faqs.md | 172 +++ ...quickstart-lite-steps-board3516-program.md | 503 ++++++++ ...quickstart-lite-steps-board3516-running.md | 269 +++++ ...quickstart-lite-steps-board3516-setting.md | 122 ++ .../quickstart-lite-steps-board3516.md | 11 + .../quickstart-lite-steps-board3518-faqs.md | 174 +++ ...quickstart-lite-steps-board3518-running.md | 262 ++++ ...quickstart-lite-steps-board3518-setting.md | 114 ++ .../quickstart-lite-steps-board3518.md | 9 + ...ckstart-lite-steps-board3861-connection.md | 142 +++ .../quickstart-lite-steps-board3861-faqs.md | 286 +++++ ...quickstart-lite-steps-board3861-running.md | 156 +++ ...quickstart-lite-steps-board3861-setting.md | 367 ++++++ .../quickstart-lite-steps-board3861.md | 11 + .../quick-start/quickstart-lite-steps.md | 9 + en/device-dev/quick-start/quickstart-lite.md | 11 + .../quick-start/quickstart-standard-burn.md | 205 ++++ .../quickstart-standard-docker-environment.md | 118 ++ .../{faqs-7.md => quickstart-standard-faq.md} | 0 ...quickstart-standard-package-environment.md | 98 ++ ...quickstart-standard-windows-environment.md | 183 +++ .../quick-start/quickstart-standard.md | 15 + en/device-dev/quick-start/quickstart.md | 7 + .../running-a-hello-ohos-program-5.md | 262 ---- .../running-a-hello-ohos-program.md | 269 ----- .../running-a-hello-world-program.md | 156 --- .../setting-up-the-environment-2.md | 122 -- .../setting-up-the-environment-4.md | 114 -- .../quick-start/setting-up-the-environment.md | 367 ------ ...in-docker-mode-and-building-source-code.md | 118 -- ...lation-package-and-building-source-code.md | 98 -- ...ting-up-windows-development-environment.md | 183 --- en/device-dev/quick-start/standard-system.md | 15 - .../quick-start/ubuntu-build-environment.md | 361 ------ .../windows-development-environment.md | 183 --- en/device-dev/quick-start/wlan-connection.md | 142 --- en/device-dev/security/Readme-EN.md | 4 +- ...3\351\231\220\345\274\271\347\252\227.png" | Bin ...0\351\242\204\346\216\210\346\235\203.png" | Bin ...0\347\247\201\345\243\260\346\230\216.png" | Bin ...0\346\233\264\351\200\232\347\237\245.png" | Bin ...0\346\230\216\345\205\245\345\217\243.png" | Bin ...0\346\230\216\346\222\244\351\224\200.png" | Bin ...0\346\230\216\346\222\244\351\224\200.png" | Bin ...-device-establish-a-trust-relationship.png | Bin .../{figures => figure}/how-dac-works.png | Bin .../{figures => figure}/huks-functions.png | Bin .../security-assurance-framework.png | Bin .../security/oem_security_privacy.md | 264 ++++ en/device-dev/security/privacy-protection.md | 264 ---- .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes .../security/safety-safeguide-security.md | 275 +++++ en/device-dev/security/security-guidelines.md | 271 ----- en/device-dev/subsystems/Readme-EN.md | 169 ++- .../subsystems/ai-engine-framework.md | 9 - en/device-dev/subsystems/ai-framework.md | 13 - .../subsystems/application-framework.md | 11 - en/device-dev/subsystems/audio-video.md | 9 - ...g-guidelines-for-mini-and-small-systems.md | 9 - ...ding-guidelines-for-the-standard-system.md | 7 - .../subsystems/bytrace-usage-guidelines.md | 119 -- en/device-dev/subsystems/camera.md | 11 - en/device-dev/subsystems/code-management.md | 40 - .../compilation-and-building-faq.md | 121 -- .../compilation-and-building-guidelines-1.md | 174 --- .../compilation-and-building-guidelines.md | 430 ------- .../compilation-and-building-overview-0.md | 60 - .../compilation-and-building-overview.md | 132 -- .../subsystems/compilation-and-building.md | 7 - .../subsystems/development-environment.md | 5 - .../subsystems/development-examples.md | 13 - .../subsystems/development-guidelines-5.md | 711 ----------- .../development-guidelines-on-animators.md | 190 --- ...es-on-application-permission-management.md | 228 ---- ...s-on-application-signature-verification.md | 272 ----- ...lopment-guidelines-on-common-components.md | 555 --------- ...ment-guidelines-on-container-components.md | 244 ---- ...idelines-on-layout-container-components.md | 216 ---- ...velopment-guidelines-on-media-recording.md | 287 ----- ...development-guidelines-on-photographing.md | 395 ------ ...ines-on-trusted-device-group-management.md | 264 ---- .../subsystems/development-guidelines.md | 11 - en/device-dev/subsystems/dfx-11.md | 34 - en/device-dev/subsystems/dfx.md | 11 - en/device-dev/subsystems/faqs.md | 56 - .../20200721-223604(espace).gif | Bin .../{figures => figure}/animator-effect.gif | Bin .../application-startup-process.png | Bin ...re-of-the-ability-management-framework.png | Bin ...ure-of-the-bundle-management-framework.png | Bin .../subsystems/figure/build-process.jpg | Bin 0 -> 59879 bytes .../component-tree-structure.png | Bin ...f-adding-view-instances-to-a-viewgroup.png | Bin .../effect-of-clicking-a-uibutton.gif | Bin .../en-us_image_0000001051782526.png | Bin .../en-us_image_0000001052582522.png | Bin .../en-us_image_0000001052662559.png | Bin .../en-us_image_0000001052782555.png | Bin .../en-us_image_0000001052942531.png | Bin .../en-us_image_0000001053207924.gif | Bin .../en-us_image_0000001053247975.gif | Bin .../en-us_image_0000001054101094.png | Bin .../en-us_image_0000001054421113.png | Bin .../en-us_image_0000001059334449.png | Bin .../en-us_image_0000001060200050.png | Bin .../en-us_image_0000001061889268.png | Bin .../en-us_image_0000001062334618.png | Bin .../en-us_image_0000001062476933.png | Bin .../en-us_image_0000001062942690.png | Bin .../en-us_image_0000001063839940.png | Bin .../en-us_image_0000001077724150.png | Bin .../en-us_image_0000001077727032.png | Bin .../figure/en-us_image_0000001119924146.gif | Bin 0 -> 6570 bytes .../figure/en-us_image_0000001166643927.jpg | Bin 0 -> 9280 bytes .../image-auto-adaption-effect.png | Bin .../{figures => figure}/image-tile-effect.png | Bin ...command-for-the-liteos-cortex-a-kernel.png | Bin ...command-for-the-liteos-cortex-m-kernel.png | Bin .../platform-architecture.png | Bin ...-a-page-ability-and-its-ability-slices.png | Bin .../running-sequence-of-the-test-platform.png | Bin ...oth-horizontal-and-vertical-directions.gif | Bin ...id-and-adding-four-buttons-in-a-layout.png | Bin ...ger-service-and-bundle-manager-service.png | Bin ...ructure-of-common-container-components.png | Bin .../tree-structure-of-common-components.png | Bin .../{figures => figure}/unnaming.png | Bin .../figure/\345\233\276\347\211\2071.png" | Bin ...0\345\255\220\347\263\273\347\273\237.png" | Bin ...4\273\266\344\276\235\350\265\226-(2).jpg" | Bin .../subsystems/figures/build-process.jpg | Bin 63193 -> 0 bytes .../subsystems/figures/building-process.jpg | Bin 63193 -> 0 bytes .../subsystems/figures/ril-adapter.png | Bin 33317 -> 0 bytes .../figures/\345\216\273\347\224\265.png" | Bin 27820 -> 0 bytes .../figures/\346\235\245\347\224\265.png" | Bin 38191 -> 0 bytes en/device-dev/subsystems/graphics.md | 13 - en/device-dev/subsystems/hdc_std-faqs.md | 39 - .../subsystems/hdc_std-usage-guidelines.md | 656 ---------- en/device-dev/subsystems/kws-sdk.md | 81 -- en/device-dev/subsystems/multimedia.md | 7 - .../oem_subsys_toolchain_hdc_guide.md | 706 +++++++++++ ...ls-overview.md => oem_subsys_utils_des.md} | 0 .../{utils-faq.md => oem_subsys_utils_faq.md} | 0 .../subsystems/oem_subsys_utils_guide.md | 293 +++++ en/device-dev/subsystems/ota-upgrade.md | 358 ------ en/device-dev/subsystems/overview-4.md | 148 --- en/device-dev/subsystems/overview.md | 116 -- .../public_sys-resources/icon-caution.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-danger.gif | Bin 580 -> 0 bytes .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../public_sys-resources/icon-notice.gif | Bin 406 -> 0 bytes .../public_sys-resources/icon-tip.gif | Bin 253 -> 0 bytes .../public_sys-resources/icon-warning.gif | Bin 580 -> 0 bytes en/device-dev/subsystems/r-d-tools.md | 9 - en/device-dev/subsystems/sdk.md | 162 --- en/device-dev/subsystems/security.md | 13 - en/device-dev/subsystems/sensors-overview.md | 99 -- .../subsystems/sensors-usage-guidelines.md | 72 -- en/device-dev/subsystems/sensors.md | 9 - .../setting-up-a-development-environment.md | 7 - en/device-dev/subsystems/startup-10.md | 86 -- en/device-dev/subsystems/startup.md | 17 - ...ile.md => subsys-aiframework-demo-conf.md} | 0 ...n.md => subsys-aiframework-demo-plugin.md} | 0 .../subsystems/subsys-aiframework-demo-sdk.md | 81 ++ .../subsystems/subsys-aiframework-demo.md | 13 + ...md => subsys-aiframework-devguide-conf.md} | 0 ... => subsys-aiframework-devguide-plugin.md} | 0 .../subsys-aiframework-devguide-sdk.md | 162 +++ .../subsystems/subsys-aiframework-devguide.md | 11 + .../subsystems/subsys-aiframework-envbuild.md | 5 + .../subsystems/subsys-aiframework-guide.md | 9 + .../subsys-aiframework-tech-codemanage.md | 40 + ...d => subsys-aiframework-tech-interface.md} | 0 ...ing.md => subsys-aiframework-tech-name.md} | 0 .../subsystems/subsys-aiframework-tech.md | 15 + .../subsystems/subsys-aiframework.md | 13 + .../subsys-application-framework-builden.md | 7 + ...d => subsys-application-framework-demo.md} | 0 .../subsys-application-framework-guide.md | 711 +++++++++++ .../subsys-application-framework-overview.md | 148 +++ .../subsys-application-framework.md | 11 + ...pawn-module.md => subsys-boot-appspawn.md} | 0 ...rap-module.md => subsys-boot-bootstrap.md} | 0 en/device-dev/subsystems/subsys-boot-faqs.md | 56 + .../{init-module.md => subsys-boot-init.md} | 0 .../subsystems/subsys-boot-overview.md | 66 + .../{reference.md => subsys-boot-ref.md} | 0 ...spara-module.md => subsys-boot-syspara.md} | 0 en/device-dev/subsystems/subsys-boot.md | 17 + .../subsystems/subsys-build-mini-lite.md | 998 +++++++++++++++ .../subsystems/subsys-build-standard-large.md | 237 ++++ en/device-dev/subsystems/subsys-build.md | 7 + ...usage-example.md => subsys-densor-demo.md} | 0 .../subsystems/subsys-densor-guide.md | 72 ++ .../subsystems/subsys-densor-overview.md | 99 ++ en/device-dev/subsystems/subsys-densor.md | 9 + ...hilog_lite.md => subsys-dfx-hilog-lite.md} | 0 ...s-on-hilog.md => subsys-dfx-hilog-rich.md} | 0 ...hisysevent.md => subsys-dfx-hisysevent.md} | 0 .../subsystems/subsys-dfx-hisyseventread.md | 103 ++ .../subsystems/subsys-dfx-overview.md | 34 + en/device-dev/subsystems/subsys-dfx.md | 11 + .../subsys-graphics-animation-guide.md | 190 +++ .../subsys-graphics-bundle-guide1.md | 244 ++++ .../subsys-graphics-bundle-guide2.md | 216 ++++ .../subsys-graphics-bundle-guide3.md | 555 +++++++++ ...phics-2.md => subsys-graphics-overview.md} | 0 en/device-dev/subsystems/subsys-graphics.md | 13 + .../subsys-multimedia-camera-overview.md | 116 ++ .../subsys-multimedia-camera-photo-guide.md | 396 ++++++ ...subsys-multimedia-camera-preview-guide.md} | 0 ... subsys-multimedia-camera-record-guide.md} | 0 .../subsystems/subsys-multimedia-camera.md | 11 + ...md => subsys-multimedia-video-overview.md} | 0 ... => subsys-multimedia-video-play-guide.md} | 0 .../subsys-multimedia-video-record-guide.md | 287 +++++ .../subsystems/subsys-multimedia-video.md | 9 + en/device-dev/subsystems/subsys-multimedia.md | 7 + en/device-dev/subsystems/subsys-ota-guide.md | 358 ++++++ ...mote-startup.md => subsys-remote-start.md} | 0 ...=> subsys-security-communicationverify.md} | 0 ...rview-9.md => subsys-security-overview.md} | 0 .../subsys-security-rightmanagement.md | 228 ++++ .../subsystems/subsys-security-sigverify.md | 272 +++++ en/device-dev/subsystems/subsys-security.md | 11 + .../subsystems/subsys-testguide-test.md | 987 +++++++++++++++ .../subsys-toolchain-bytrace-guide.md | 115 ++ en/device-dev/subsystems/subsys-toolchain.md | 6 + en/device-dev/subsystems/subsys-utils.md | 9 + en/device-dev/subsystems/subsys-xts-guide.md | 716 +++++++++++ en/device-dev/subsystems/subsys.md | 33 + .../subsystems/technical-specifications.md | 15 - en/device-dev/subsystems/testing.md | 987 --------------- .../utils-development-guidelines.md | 293 ----- en/device-dev/subsystems/utils.md | 9 - en/device-dev/subsystems/xts.md | 648 ---------- en/readme.md | 153 +-- 962 files changed, 37130 insertions(+), 35877 deletions(-) delete mode 100644 en/device-dev/bundles/bundle-composition.md delete mode 100644 en/device-dev/bundles/bundle-development.md delete mode 100644 en/device-dev/bundles/bundle-management.md delete mode 100644 en/device-dev/bundles/bundle-version.md create mode 100644 en/device-dev/bundles/bundles-demo-devsample.md create mode 100644 en/device-dev/bundles/bundles-demo-environment.md rename en/device-dev/bundles/{introduction.md => bundles-demo-hpmdescription.md} (100%) create mode 100644 en/device-dev/bundles/bundles-demo.md create mode 100644 en/device-dev/bundles/bundles-guide-develop.md create mode 100644 en/device-dev/bundles/bundles-guide-overview.md create mode 100644 en/device-dev/bundles/bundles-guide-prepare.md create mode 100644 en/device-dev/bundles/bundles-guide.md create mode 100644 en/device-dev/bundles/bundles-standard-rules.md create mode 100644 en/device-dev/bundles/bundles.md delete mode 100644 en/device-dev/bundles/development-example.md delete mode 100644 en/device-dev/bundles/development-guidelines.md delete mode 100644 en/device-dev/bundles/development-specifications.md delete mode 100644 en/device-dev/bundles/distribution.md delete mode 100644 en/device-dev/bundles/environment-variables.md rename en/device-dev/bundles/{figures => figure}/en-us_image_0000001051452177.png (100%) rename en/device-dev/bundles/{figures => figure}/en-us_image_0000001051770876.png (100%) create mode 100644 en/device-dev/bundles/figure/en-us_image_0000001173313501.png rename en/device-dev/bundles/{figures/hardware-connections.png => figure/hardware-connections-23.png} (100%) create mode 100644 en/device-dev/bundles/figure/hardware-connections-24.png rename en/device-dev/bundles/{figures/successful-installation-(scons-version-requirement-3-0-4-or-later).png => figure/successful-installation-(scons-version-requirement-3-0-4-or-later)-25.png} (100%) rename "en/device-dev/bundles/figures/\347\273\204\344\273\2660924.png" => "en/device-dev/bundles/figure/\347\273\204\344\273\2660924.png" (100%) delete mode 100644 en/device-dev/bundles/figures/bundle-dependencies.png delete mode 100644 en/device-dev/bundles/hpm-user-guide.md delete mode 100644 en/device-dev/bundles/overview-0.md delete mode 100644 en/device-dev/bundles/overview.md delete mode 100644 en/device-dev/bundles/preparations-1.md delete mode 100644 en/device-dev/bundles/preparations.md create mode 100644 en/device-dev/driver/drive-hdf-development.md create mode 100644 en/device-dev/driver/drive-hdf-manage.md create mode 100644 en/device-dev/driver/drive-hdf-news.md rename en/device-dev/driver/{hdfoverview.md => drive-hdf-overview.md} (100%) create mode 100644 en/device-dev/driver/drive-hdf-sample.md rename en/device-dev/driver/{driver-service-management.md => drive-hdf-servicemanage.md} (100%) create mode 100644 en/device-dev/driver/drive-hdf.md create mode 100644 en/device-dev/driver/drive-peripherals-external-des.md create mode 100644 en/device-dev/driver/drive-peripherals-lcd-des.md create mode 100644 en/device-dev/driver/drive-peripherals-sensor-des.md create mode 100644 en/device-dev/driver/drive-peripherals-touch-des.md create mode 100644 en/device-dev/driver/drive-peripherals.md create mode 100644 en/device-dev/driver/drive-platform-gpio-des.md create mode 100644 en/device-dev/driver/drive-platform-i2c-des.md create mode 100644 en/device-dev/driver/drive-platform-mipidsi-des.md create mode 100644 en/device-dev/driver/drive-platform-rtc-des.md create mode 100644 en/device-dev/driver/drive-platform-sdio-des.md create mode 100644 en/device-dev/driver/drive-platform-spi-des.md create mode 100644 en/device-dev/driver/drive-platform-uart-des.md create mode 100644 en/device-dev/driver/drive-platform-watchdog-des.md create mode 100644 en/device-dev/driver/drive-platform.md create mode 100644 en/device-dev/driver/drive.md delete mode 100644 en/device-dev/driver/driver-configuration-management.md delete mode 100644 en/device-dev/driver/driver-development.md delete mode 100644 en/device-dev/driver/driver-message-mechanism-management.md delete mode 100644 en/device-dev/driver/driver-platform.md rename en/device-dev/driver/{figures => figure}/architecture-of-the-display-driver-model.png (100%) rename en/device-dev/driver/{figures => figure}/architecture-of-the-input-driver-model.png (100%) rename en/device-dev/driver/{figures => figure}/architecture-of-the-sensor-driver-model.png (100%) rename en/device-dev/driver/{figures => figure}/common-pins-of-the-touchscreen.png (100%) rename en/device-dev/driver/{figures => figure}/dsi-transmitting-and-receiving-interface.png (100%) rename en/device-dev/driver/{figures => figure}/en-us_image_0000001053405727.png (100%) rename en/device-dev/driver/{figures => figure}/en-us_image_0000001054280608.png (100%) rename en/device-dev/driver/{figures => figure}/en-us_image_0000001054564784.png (100%) rename en/device-dev/driver/{figures/en-us_image_0000001057902344.png => figure/en-us_image_0000001123509750.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001072553354.png => figure/en-us_image_0000001123514210.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054440624.png => figure/en-us_image_0000001123540984.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054007499.png => figure/en-us_image_0000001123582482.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054728498.png => figure/en-us_image_0000001123675706.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054726248.png => figure/en-us_image_0000001123703482.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054142582.png => figure/en-us_image_0000001123742254.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001057342245.png => figure/en-us_image_0000001170187071.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001054006983.png => figure/en-us_image_0000001170227689.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001057622716.png => figure/en-us_image_0000001170229891.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001053926237.png => figure/en-us_image_0000001170262141.png} (100%) rename en/device-dev/driver/{figures/en-us_image_0000001055299108.png => figure/en-us_image_0000001170383063.png} (100%) rename en/device-dev/driver/{figures => figure}/mipi-dsi.png (100%) rename en/device-dev/driver/{figures => figure}/physical-connection-diagram-for-i2c.png (100%) rename en/device-dev/driver/{figures => figure}/ttl-interface.png (100%) rename "en/device-dev/driver/figures/\346\216\245\345\217\243\345\210\206\345\270\203\345\233\2764.png" => "en/device-dev/driver/figure/\346\216\245\345\217\243\345\210\206\345\270\203\345\233\2764.png" (100%) delete mode 100644 en/device-dev/driver/gpio.md delete mode 100644 en/device-dev/driver/gpiooverview.md delete mode 100644 en/device-dev/driver/gpiousage-example.md delete mode 100644 en/device-dev/driver/gpiousage-guidelines.md delete mode 100644 en/device-dev/driver/hdf.md delete mode 100644 en/device-dev/driver/hdfdevelopment-example.md delete mode 100644 en/device-dev/driver/i2c-overview.md delete mode 100644 en/device-dev/driver/i2c-usage-example.md delete mode 100644 en/device-dev/driver/i2c-usage-guidelines.md delete mode 100644 en/device-dev/driver/i2c.md delete mode 100644 en/device-dev/driver/lcd.md delete mode 100644 en/device-dev/driver/lcddevelopment-example.md delete mode 100644 en/device-dev/driver/lcddevelopment-guidelines.md delete mode 100644 en/device-dev/driver/lcdoverview.md delete mode 100644 en/device-dev/driver/mipi-dsi-overview.md delete mode 100644 en/device-dev/driver/mipi-dsi.md delete mode 100644 en/device-dev/driver/peripherals.md delete mode 100644 en/device-dev/driver/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/driver/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/driver/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/driver/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/driver/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/driver/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/driver/rtc-overview.md delete mode 100644 en/device-dev/driver/rtc-usage-example.md delete mode 100644 en/device-dev/driver/rtc-usage-guidelines.md delete mode 100644 en/device-dev/driver/rtc.md delete mode 100644 en/device-dev/driver/sdio.md delete mode 100644 en/device-dev/driver/sdiooverview.md delete mode 100644 en/device-dev/driver/sdiousage-example.md delete mode 100644 en/device-dev/driver/sdiousage-guidelines.md delete mode 100644 en/device-dev/driver/sensor-driver-development-example.md delete mode 100644 en/device-dev/driver/sensor-driver-development-guidelines.md delete mode 100644 en/device-dev/driver/sensor-driver-overview.md delete mode 100644 en/device-dev/driver/sensor-driver-test-guidelines.md delete mode 100644 en/device-dev/driver/sensor.md delete mode 100644 en/device-dev/driver/spi.md delete mode 100644 en/device-dev/driver/spioverview.md delete mode 100644 en/device-dev/driver/spiusage-example.md delete mode 100644 en/device-dev/driver/spiusage-guidelines.md delete mode 100644 en/device-dev/driver/touchscreen.md delete mode 100644 en/device-dev/driver/touchscreendevelopment-example.md delete mode 100644 en/device-dev/driver/touchscreendevelopment-guidelines.md delete mode 100644 en/device-dev/driver/touchscreenoverview.md delete mode 100644 en/device-dev/driver/uart.md delete mode 100644 en/device-dev/driver/uartoverview.md delete mode 100644 en/device-dev/driver/uartusage-example.md delete mode 100644 en/device-dev/driver/uartusage-guidelines.md delete mode 100644 en/device-dev/driver/usage-example.md delete mode 100644 en/device-dev/driver/usage-guidelines.md delete mode 100644 en/device-dev/driver/watchdog.md delete mode 100644 en/device-dev/driver/watchdogoverview.md delete mode 100644 en/device-dev/driver/watchdogusage-example.md delete mode 100644 en/device-dev/driver/watchdogusage-guidelines.md delete mode 100644 en/device-dev/driver/wlan.md delete mode 100644 en/device-dev/driver/wlandevelopment-example.md delete mode 100644 en/device-dev/driver/wlandevelopment-guidelines.md delete mode 100644 en/device-dev/driver/wlanoverview.md delete mode 100644 en/device-dev/get-code/docker-environment.md rename en/device-dev/get-code/{figures/3.png => figure/3-22.png} (100%) rename en/device-dev/get-code/{figures => figure}/en-us_image_0000001101413884.png (100%) rename en/device-dev/get-code/{figures => figure}/en-us_image_0000001119755646.png (100%) rename en/device-dev/get-code/{figures => figure}/en-us_image_0000001119915556.png (100%) rename en/device-dev/get-code/{figures => figure}/en-us_image_0000001166715379.png (100%) create mode 100644 en/device-dev/get-code/gettools-acquire.md create mode 100644 en/device-dev/get-code/gettools-ide.md create mode 100644 en/device-dev/get-code/gettools.md delete mode 100644 en/device-dev/get-code/ide.md delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/get-code/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/get-code/source-code-acquisition.md create mode 100644 en/device-dev/get-code/sourcecode-acquire.md create mode 100644 en/device-dev/get-code/sourcecode.md delete mode 100644 en/device-dev/get-code/tool-acquisition.md create mode 100644 en/device-dev/glossary/Readme-EN.md delete mode 100644 en/device-dev/guide/adapting-to-the-private-drivers-of-the-touchscreen.md delete mode 100644 en/device-dev/guide/adding-pages.md delete mode 100644 en/device-dev/guide/building-and-burning-14.md delete mode 100644 en/device-dev/guide/building-and-burning.md delete mode 100644 en/device-dev/guide/building-the-details-page.md delete mode 100644 en/device-dev/guide/building-the-home-page.md delete mode 100644 en/device-dev/guide/camera-control.md delete mode 100644 en/device-dev/guide/cameras-with-a-screen.md delete mode 100644 en/device-dev/guide/cameras-without-a-screen.md delete mode 100644 en/device-dev/guide/configuring-device-driver-descriptions.md delete mode 100644 en/device-dev/guide/configuring-the-touchscreen.md delete mode 100644 en/device-dev/guide/debugging-and-packaging.md delete mode 100644 en/device-dev/guide/debugging-and-verification.md delete mode 100644 en/device-dev/guide/developing-a-touchscreen-driver.md delete mode 100644 en/device-dev/guide/development-12.md delete mode 100644 en/device-dev/guide/development-example-for-clock-apps.md delete mode 100644 en/device-dev/guide/development-example-for-peripheral-drivers.md delete mode 100644 en/device-dev/guide/development-example-for-platform-drivers.md delete mode 100644 en/device-dev/guide/development-guidelines-2.md delete mode 100644 en/device-dev/guide/development-guidelines.md delete mode 100644 en/device-dev/guide/development.md create mode 100644 en/device-dev/guide/device-camera-control-demo-photoguide.md rename en/device-dev/guide/{previewing.md => device-camera-control-demo-previewguide.md} (100%) rename en/device-dev/guide/{video-recording-4.md => device-camera-control-demo-videoguide.md} (100%) create mode 100644 en/device-dev/guide/device-camera-control-demo.md create mode 100644 en/device-dev/guide/device-camera-control-example.md create mode 100644 en/device-dev/guide/device-camera-control-overview.md create mode 100644 en/device-dev/guide/device-camera-control.md create mode 100644 en/device-dev/guide/device-camera-visual-addpage.md create mode 100644 en/device-dev/guide/device-camera-visual-debug.md create mode 100644 en/device-dev/guide/device-camera-visual-details.md rename en/device-dev/guide/{faqs.md => device-camera-visual-faqs.md} (100%) create mode 100644 en/device-dev/guide/device-camera-visual-first-page.md create mode 100644 en/device-dev/guide/device-camera-visual-overview.md create mode 100644 en/device-dev/guide/device-camera-visual-prepare.md create mode 100644 en/device-dev/guide/device-camera-visual-run.md create mode 100644 en/device-dev/guide/device-camera-visual.md create mode 100644 en/device-dev/guide/device-camera.md create mode 100644 en/device-dev/guide/device-drive-demo.md create mode 100644 en/device-dev/guide/device-iotcamera-control-demo-photodevguide.md rename en/device-dev/guide/{video-recording.md => device-iotcamera-control-demo-videodevguide.md} (100%) create mode 100644 en/device-dev/guide/device-iotcamera-control-demo.md create mode 100644 en/device-dev/guide/device-iotcamera-control-example.md create mode 100644 en/device-dev/guide/device-iotcamera-control-overview.md create mode 100644 en/device-dev/guide/device-iotcamera-control.md create mode 100644 en/device-dev/guide/device-iotcamera.md create mode 100644 en/device-dev/guide/device-outerdrive-demo.md create mode 100644 en/device-dev/guide/device-wifi-led-outcontrol.md create mode 100644 en/device-dev/guide/device-wifi-sdk.md create mode 100644 en/device-dev/guide/device-wifi.md create mode 100644 en/device-dev/guide/device.md delete mode 100644 en/device-dev/guide/faqs-10.md rename en/device-dev/guide/{figures => figure}/adding-a-page.png (100%) rename en/device-dev/guide/{figures => figure}/clock.png (100%) rename en/device-dev/guide/{figures => figure}/complete-project-directory.png (100%) rename en/device-dev/guide/{figures => figure}/en-us_image_0000001078563230.png (100%) rename en/device-dev/guide/{figures => figure}/en-us_image_0000001082434703.png (100%) rename en/device-dev/guide/{figures/en-us_image_0000001161922745.png => figure/en-us_image_0000001169991055.png} (100%) rename en/device-dev/guide/{figures => figure}/entering-the-page-name.png (100%) rename en/device-dev/guide/{figures => figure}/home-screen.png (100%) rename en/device-dev/guide/{figures => figure}/indicator-bar.png (100%) rename en/device-dev/guide/{figures => figure}/led-blinking.gif (100%) rename en/device-dev/guide/{figures => figure}/preview-effect.jpg (100%) rename en/device-dev/guide/{figures => figure}/project-directory.png (100%) rename en/device-dev/guide/{figures => figure}/saved-files.png (100%) rename en/device-dev/guide/{figures => figure}/serial-port-logs-displayed-after-the-exit-command-is-executed.png (100%) rename en/device-dev/guide/{figures => figure}/serial-port-logs-displayed-after-the-photographing-command-is-executed.png (100%) rename en/device-dev/guide/{figures => figure}/serial-port-logs-displayed-after-the-preview-command-is-executed.png (100%) rename en/device-dev/guide/{figures => figure}/serial-port-logs-displayed-after-the-recording-command-is-executed.png (100%) rename en/device-dev/guide/{figures => figure}/starting-camera_sample.png (100%) rename en/device-dev/guide/{figures => figure}/title-bar-and-information-bar.png (100%) rename en/device-dev/guide/{figures => figure}/title-bar.png (100%) rename en/device-dev/guide/{figures => figure}/video_2020-07-25_173141.gif (100%) rename "en/device-dev/guide/figures/\347\273\230\345\233\2761.png" => "en/device-dev/guide/figure/\347\273\230\345\233\2761.png" (100%) delete mode 100644 en/device-dev/guide/function-invocation-logic.md delete mode 100644 en/device-dev/guide/hardware-resources.md delete mode 100644 en/device-dev/guide/how-to-develop.md delete mode 100644 en/device-dev/guide/initializing-the-input-chip-driver-and-registering-the-driver-with-the-hdf.md delete mode 100644 en/device-dev/guide/initializing-the-input-common-driver-and-registering-the-driver-with-the-hdf.md delete mode 100644 en/device-dev/guide/initializing-the-input-device-manager-and-registering-the-driver-with-the-hdf.md delete mode 100644 en/device-dev/guide/input-driver-model-workflow-analysis.md delete mode 100644 en/device-dev/guide/input-driver-model.md delete mode 100644 en/device-dev/guide/led-peripheral-control.md create mode 100644 en/device-dev/guide/oem_device_clockapp_des.md delete mode 100644 en/device-dev/guide/overview-0.md delete mode 100644 en/device-dev/guide/overview-1.md delete mode 100644 en/device-dev/guide/overview-10.md delete mode 100644 en/device-dev/guide/overview-13.md delete mode 100644 en/device-dev/guide/overview-6.md delete mode 100644 en/device-dev/guide/overview-7.md delete mode 100644 en/device-dev/guide/overview.md delete mode 100644 en/device-dev/guide/parsing-private-configuration-data.md delete mode 100644 en/device-dev/guide/photographing-3.md delete mode 100644 en/device-dev/guide/photographing.md delete mode 100644 en/device-dev/guide/preparations-11.md delete mode 100644 en/device-dev/guide/preparations-8.md delete mode 100644 en/device-dev/guide/preparations.md delete mode 100644 en/device-dev/guide/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/guide/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/guide/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/guide/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/guide/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/guide/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/guide/running-on-the-device-9.md delete mode 100644 en/device-dev/guide/running-on-the-device.md delete mode 100644 en/device-dev/guide/screen-and-camera-control.md delete mode 100644 en/device-dev/guide/setting-up-the-environment.md delete mode 100644 en/device-dev/guide/signing-and-packaging.md delete mode 100644 en/device-dev/guide/startup-log-analysis.md delete mode 100644 en/device-dev/guide/third-party-sdk-integration.md delete mode 100644 en/device-dev/guide/use-case-5.md delete mode 100644 en/device-dev/guide/use-case.md delete mode 100644 en/device-dev/guide/verification.md delete mode 100644 en/device-dev/guide/visual-application-development.md delete mode 100644 en/device-dev/guide/wlan-connected-products.md delete mode 100644 en/device-dev/kernel/arp.md delete mode 100644 en/device-dev/kernel/cat.md delete mode 100644 en/device-dev/kernel/cd.md delete mode 100644 en/device-dev/kernel/chgrp.md delete mode 100644 en/device-dev/kernel/chmod.md delete mode 100644 en/device-dev/kernel/chown.md delete mode 100644 en/device-dev/kernel/commissioning.md delete mode 100644 en/device-dev/kernel/cp.md delete mode 100644 en/device-dev/kernel/cpup.md delete mode 100644 en/device-dev/kernel/date.md delete mode 100644 en/device-dev/kernel/dhclient.md delete mode 100644 en/device-dev/kernel/dmesg.md delete mode 100644 en/device-dev/kernel/exec.md rename en/device-dev/kernel/{figures => figure}/changing-the-group-of-the-hello-harmony-txt-file-to-100.png (100%) rename en/device-dev/kernel/{figures => figure}/changing-the-owner-and-group-of-the-hello-harmony-txt-file-to-100-and-200-respectively.png (100%) rename en/device-dev/kernel/{figures => figure}/changing-the-permission-on-the-hello-harmony-txt-file-to-666.png (100%) rename en/device-dev/kernel/{figures/command-output-0.png => figure/command-output-19.png} (100%) rename en/device-dev/kernel/{figures => figure}/command-output.png (100%) rename en/device-dev/kernel/{figures => figure}/cpu-usage.png (100%) rename en/device-dev/kernel/{figures => figure}/creating-file-c.png (100%) rename en/device-dev/kernel/{figures => figure}/creating-the-share-directory.png (100%) rename en/device-dev/kernel/{figures => figure}/deleting-directory-dir.png (100%) rename en/device-dev/kernel/{figures => figure}/deleting-the-log1-txt-file.png (100%) rename en/device-dev/kernel/{figures => figure}/deleting-the-sd-directory.png (100%) rename en/device-dev/kernel/{figures => figure}/directory-switching-result.png (100%) rename en/device-dev/kernel/{figures => figure}/displaying-the-memory-usage-in-three-units.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001051690323.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052370303.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052370305.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052370307.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052530298.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052810300.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001052810304.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001053224218.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001053710680.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001053826366.png (100%) rename en/device-dev/kernel/{figures => figure}/en-us_image_0000001054624363.png (100%) rename en/device-dev/kernel/{figures => figure}/file-copying-result.png (100%) rename en/device-dev/kernel/{figures => figure}/no-out-of-bounds-memory-access.png (100%) rename en/device-dev/kernel/{figures => figure}/out-of-bounds-memory-access.png (100%) rename en/device-dev/kernel/{figures => figure}/output-of-telnet-on.png (100%) rename en/device-dev/kernel/{figures => figure}/output-of-the-statfs-command.png (100%) rename en/device-dev/kernel/{figures => figure}/posix-framework.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-information-about-a-specified-software-timer.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-information-about-all-semaphores-in-use.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-information-about-all-software-timers.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-partial-task-information.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-pids.png (100%) rename en/device-dev/kernel/{figures => figure}/querying-the-current-path.png (100%) rename en/device-dev/kernel/{figures => figure}/relationship-between-the-vfs-and-file-systems.png (100%) rename en/device-dev/kernel/{figures => figure}/sending-a-signal-to-a-specified-process.png (100%) rename en/device-dev/kernel/{figures => figure}/signal-sending-failure.png (100%) rename en/device-dev/kernel/{figures/snipaste_2021-01-26_10-38-58-1.png => figure/snipaste_2021-01-26_10-38-58-20.png} (100%) rename en/device-dev/kernel/{figures/snipaste_2021-01-26_10-38-58-2.png => figure/snipaste_2021-01-26_10-38-58-21.png} (100%) rename en/device-dev/kernel/{figures => figure}/snipaste_2021-01-26_10-38-58.png (100%) rename en/device-dev/kernel/{figures => figure}/state-transition-of-a-process.png (100%) rename en/device-dev/kernel/{figures => figure}/state-transition-of-a-thread.png (100%) rename en/device-dev/kernel/{figures => figure}/switching-to-the-user-whose-uid-and-gid-are-both-1000.png (100%) rename en/device-dev/kernel/{figures => figure}/system-date-printed-based-on-the-specified-format.png (100%) rename en/device-dev/kernel/{figures => figure}/task-command-monitoring-result.png (100%) rename en/device-dev/kernel/{figures => figure}/tree-structure-of-the-file-system.png (100%) rename en/device-dev/kernel/{figures => figure}/unmounting-result.png (100%) rename en/device-dev/kernel/{figures => figure}/usage-of-system-resources.png (100%) rename en/device-dev/kernel/{figures => figure}/viewing-content-of-the-current-directory.png (100%) rename en/device-dev/kernel/{figures => figure}/viewing-content-of-the-hello-harmony-txt-file.png (100%) rename en/device-dev/kernel/{figures => figure}/viewing-the-usage-of-physical-pages.png (100%) rename en/device-dev/kernel/{figures => figure}/virtual-memory-usage-of-the-process-with-pid-3.png (100%) rename en/device-dev/kernel/{figures => figure}/writing-dmesg-content-to-a-file.png (100%) delete mode 100644 en/device-dev/kernel/file-commands.md delete mode 100644 en/device-dev/kernel/format.md delete mode 100644 en/device-dev/kernel/free.md delete mode 100644 en/device-dev/kernel/guidelines-for-compiling-and-building-the-linux-kernel.md delete mode 100644 en/device-dev/kernel/guidelines-for-using-patches-on-openharmony-development-boards.md delete mode 100644 en/device-dev/kernel/hwi.md delete mode 100644 en/device-dev/kernel/introduction-to-the-shell.md create mode 100644 en/device-dev/kernel/kernel-lite-mini.md create mode 100644 en/device-dev/kernel/kernel-lite-small-basic.md rename en/device-dev/kernel/{fat.md => kernel-lite-small-file-fat.md} (100%) rename en/device-dev/kernel/{jffs2.md => kernel-lite-small-file-jffs.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-file-nfs.md rename en/device-dev/kernel/{ramfs.md => kernel-lite-small-file-ramfs.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-file-vfs.md create mode 100644 en/device-dev/kernel/kernel-lite-small-file.md rename en/device-dev/kernel/{differences-from-the-linux-standard-library.md => kernel-lite-small-lib-differ.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-lib-standard.md create mode 100644 en/device-dev/kernel/kernel-lite-small-lib.md create mode 100644 en/device-dev/kernel/kernel-lite-small-memory.md create mode 100644 en/device-dev/kernel/kernel-lite-small-net.md create mode 100644 en/device-dev/kernel/kernel-lite-small-process.md rename en/device-dev/kernel/{user-space-exception-information.md => kernel-lite-small-shell-cmd-abn.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-cat.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-cd.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-chgrp.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-chmod.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-chown.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-cp.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-format.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-is.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-isfd.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-mkdir.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-mount.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-part.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-partion.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-pwd.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-rm.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-rmdir.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-sta.md rename en/device-dev/kernel/{sync.md => kernel-lite-small-shell-cmd-file-sync.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-touch.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-umount.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file-write.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-file.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-mag.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-arp.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-dh.md rename en/device-dev/kernel/{dns.md => kernel-lite-small-shell-cmd-net-dns.md} (100%) rename en/device-dev/kernel/{ifconfig.md => kernel-lite-small-shell-cmd-net-ipc.md} (100%) rename en/device-dev/kernel/{ipdebug.md => kernel-lite-small-shell-cmd-net-ipd.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-net.md rename en/device-dev/kernel/{ntpdate.md => kernel-lite-small-shell-cmd-net-ntp.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-ping.md rename en/device-dev/kernel/{ping6.md => kernel-lite-small-shell-cmd-net-ping6.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-tel.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net-tftp.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-net.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-cpup.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-date.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-demsg.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-exec.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-free.md rename en/device-dev/kernel/{help.md => kernel-lite-small-shell-cmd-sys-help.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-hwi.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-kill.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-log.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-mem.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-oom.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-pmm.md rename en/device-dev/kernel/{reset.md => kernel-lite-small-shell-cmd-sys-reset.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-sem.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-stack.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-su.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-swymr.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-sys.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-task.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-uname.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-vmm.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys-watch.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd-sys.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-cmd.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-des.md create mode 100644 en/device-dev/kernel/kernel-lite-small-shell-guide.md rename en/device-dev/kernel/{shell-command-programming-example.md => kernel-lite-small-shell-sample.md} (100%) create mode 100644 en/device-dev/kernel/kernel-lite-small-shell.md create mode 100644 en/device-dev/kernel/kernel-lite-small-thread.md create mode 100644 en/device-dev/kernel/kernel-lite-small.md create mode 100644 en/device-dev/kernel/kernel-lite.md create mode 100644 en/device-dev/kernel/kernel-standard-build.md rename en/device-dev/kernel/{linux-kernel-overview.md => kernel-standard-des.md} (100%) create mode 100644 en/device-dev/kernel/kernel-standard-patch.md create mode 100644 en/device-dev/kernel/kernel-standard.md create mode 100644 en/device-dev/kernel/kernel.md delete mode 100644 en/device-dev/kernel/kill.md delete mode 100644 en/device-dev/kernel/linux-kernel.md delete mode 100644 en/device-dev/kernel/lite-kernel.md delete mode 100644 en/device-dev/kernel/log.md delete mode 100644 en/device-dev/kernel/ls.md delete mode 100644 en/device-dev/kernel/lsfd.md delete mode 100644 en/device-dev/kernel/magic-key-usage.md delete mode 100644 en/device-dev/kernel/memcheck.md delete mode 100644 en/device-dev/kernel/memory.md delete mode 100644 en/device-dev/kernel/mkdir.md delete mode 100644 en/device-dev/kernel/mount.md delete mode 100644 en/device-dev/kernel/netstat.md delete mode 100644 en/device-dev/kernel/network-commands.md delete mode 100644 en/device-dev/kernel/network.md delete mode 100644 en/device-dev/kernel/nfs.md delete mode 100644 en/device-dev/kernel/oom.md delete mode 100644 en/device-dev/kernel/openharmony-lite-kernel-basic-functions.md delete mode 100644 en/device-dev/kernel/openharmony-lite-kernel-file-system.md delete mode 100644 en/device-dev/kernel/partinfo.md delete mode 100644 en/device-dev/kernel/partition.md delete mode 100644 en/device-dev/kernel/ping.md delete mode 100644 en/device-dev/kernel/pmm.md delete mode 100644 en/device-dev/kernel/process.md delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/kernel/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/kernel/pwd.md delete mode 100644 en/device-dev/kernel/rm.md delete mode 100644 en/device-dev/kernel/rmdir.md delete mode 100644 en/device-dev/kernel/sem.md delete mode 100644 en/device-dev/kernel/shell-command-development-guidelines.md delete mode 100644 en/device-dev/kernel/shell-command-reference.md delete mode 100644 en/device-dev/kernel/stack.md delete mode 100644 en/device-dev/kernel/standard-library-0.md delete mode 100644 en/device-dev/kernel/standard-library.md delete mode 100644 en/device-dev/kernel/statfs.md delete mode 100644 en/device-dev/kernel/su.md delete mode 100644 en/device-dev/kernel/swtmr.md delete mode 100644 en/device-dev/kernel/system-commands.md delete mode 100644 en/device-dev/kernel/systeminfo.md delete mode 100644 en/device-dev/kernel/task.md delete mode 100644 en/device-dev/kernel/telnet.md delete mode 100644 en/device-dev/kernel/tftp.md delete mode 100644 en/device-dev/kernel/thread.md delete mode 100644 en/device-dev/kernel/touch.md delete mode 100644 en/device-dev/kernel/umount.md delete mode 100644 en/device-dev/kernel/uname.md delete mode 100644 en/device-dev/kernel/vfs.md delete mode 100644 en/device-dev/kernel/vmm.md delete mode 100644 en/device-dev/kernel/watch.md delete mode 100644 en/device-dev/kernel/writeproc.md delete mode 100644 en/device-dev/porting/basic-kernel-adaptation.md delete mode 100644 en/device-dev/porting/before-you-start.md delete mode 100644 en/device-dev/porting/board-level-os-porting.md rename en/device-dev/porting/{figures => figure}/en-us_image_0000001072304191.png (100%) rename en/device-dev/porting/{figures => figure}/en-us_image_0000001073943511.png (100%) create mode 100644 en/device-dev/porting/figure/en-us_image_0000001126198996.png create mode 100644 en/device-dev/porting/figure/en-us_image_0000001126354076.png create mode 100644 en/device-dev/porting/figure/en-us_image_0000001126358814.png create mode 100644 en/device-dev/porting/figure/en-us_image_0000001172273945.jpg create mode 100644 en/device-dev/porting/figure/en-us_image_0000001172393865.jpg create mode 100644 en/device-dev/porting/figure/hdf_wifi.png create mode 100644 en/device-dev/porting/figure/kernel-startup-framework.jpg rename en/device-dev/porting/{figures => figure}/key-steps-for-soc-porting.png (100%) rename en/device-dev/porting/{figures => figure}/process-for-board-level-driver-adaptation.png (100%) rename en/device-dev/porting/{figures => figure}/successful-startup-of-openharmony.png (100%) create mode 100644 "en/device-dev/porting/figure/\345\210\206\347\261\273.png" delete mode 100644 en/device-dev/porting/kernel-porting-verification.md delete mode 100644 en/device-dev/porting/kernel-porting.md delete mode 100644 en/device-dev/porting/overview-0.md delete mode 100644 en/device-dev/porting/overview-1.md delete mode 100644 en/device-dev/porting/porting-a-library-built-using-cmake.md delete mode 100644 en/device-dev/porting/porting-a-library-built-using-makefile.md delete mode 100644 en/device-dev/porting/porting-preparations.md delete mode 100644 en/device-dev/porting/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/porting/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/porting/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/porting/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/porting/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/porting/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/porting/system-modules.md delete mode 100644 en/device-dev/porting/third-party-library-porting-guide.md delete mode 100644 en/device-dev/porting/third-party-soc-porting-guide.md create mode 100644 en/device-dev/porting/transplant-chip-board-bundle.md create mode 100644 en/device-dev/porting/transplant-chip-board-component.md rename en/device-dev/porting/{board-level-driver-adaptation.md => transplant-chip-board-drive.md} (100%) rename en/device-dev/porting/{implementation-of-apis-at-the-hal.md => transplant-chip-board-hal.md} (100%) create mode 100644 en/device-dev/porting/transplant-chip-board-overview.md create mode 100644 en/device-dev/porting/transplant-chip-board-xts.md create mode 100644 en/device-dev/porting/transplant-chip-board.md rename en/device-dev/porting/{faq.md => transplant-chip-faqs.md} (100%) create mode 100644 en/device-dev/porting/transplant-chip-kernel-adjustment.md create mode 100644 en/device-dev/porting/transplant-chip-kernel-overview.md create mode 100644 en/device-dev/porting/transplant-chip-kernel-verify.md create mode 100644 en/device-dev/porting/transplant-chip-kernel.md create mode 100644 en/device-dev/porting/transplant-chip-prepare-knows.md rename en/device-dev/porting/{building-adaptation-process.md => transplant-chip-prepare-process.md} (100%) create mode 100644 en/device-dev/porting/transplant-chip-prepare.md create mode 100644 en/device-dev/porting/transplant-minichip.md create mode 100644 en/device-dev/porting/transplant-smallchip-drive-des.md create mode 100644 en/device-dev/porting/transplant-smallchip-drive-oom.md create mode 100644 en/device-dev/porting/transplant-smallchip-drive-plat.md create mode 100644 en/device-dev/porting/transplant-smallchip-drive.md create mode 100644 en/device-dev/porting/transplant-smallchip-kernel-a.md create mode 100644 en/device-dev/porting/transplant-smallchip-kernel-linux.md create mode 100644 en/device-dev/porting/transplant-smallchip-kernel.md create mode 100644 en/device-dev/porting/transplant-smallchip-prepare-building.md create mode 100644 en/device-dev/porting/transplant-smallchip-prepare-needs.md create mode 100644 en/device-dev/porting/transplant-smallchip-prepare.md create mode 100644 en/device-dev/porting/transplant-smallchip.md create mode 100644 en/device-dev/porting/transplant-thirdparty-cmake.md create mode 100644 en/device-dev/porting/transplant-thirdparty-makefile.md rename en/device-dev/porting/{overview.md => transplant-thirdparty-overview.md} (100%) create mode 100644 en/device-dev/porting/transplant-thirdparty.md create mode 100644 en/device-dev/porting/transplant.md delete mode 100644 en/device-dev/porting/xts.md rename en/device-dev/{bundles => }/public_sys-resources/icon-caution.gif (100%) rename en/device-dev/{bundles => }/public_sys-resources/icon-danger.gif (100%) rename en/device-dev/{bundles => }/public_sys-resources/icon-note.gif (100%) rename en/device-dev/{bundles => }/public_sys-resources/icon-notice.gif (100%) rename en/device-dev/{bundles => }/public_sys-resources/icon-tip.gif (100%) rename en/device-dev/{bundles => }/public_sys-resources/icon-warning.gif (100%) delete mode 100644 en/device-dev/quick-start/burning-images.md delete mode 100644 en/device-dev/quick-start/developing-a-driver.md delete mode 100644 en/device-dev/quick-start/environment-setup.md delete mode 100644 en/device-dev/quick-start/faqs-3.md delete mode 100644 en/device-dev/quick-start/faqs-6.md delete mode 100644 en/device-dev/quick-start/faqs.md rename en/device-dev/quick-start/{figures => figure}/1.png (100%) rename en/device-dev/quick-start/{figures => figure}/10.png (100%) rename en/device-dev/quick-start/{figures => figure}/2.png (100%) rename en/device-dev/quick-start/{figures/2021-01-27_170334-18.png => figure/2021-01-27_170334-17.png} (100%) rename en/device-dev/quick-start/{figures/2021-01-27_170334-19.png => figure/2021-01-27_170334-18.png} (100%) rename en/device-dev/quick-start/{figures => figure}/2021-01-27_170334-2.png (100%) rename en/device-dev/quick-start/{figures => figure}/2021-01-27_170334-5.png (100%) rename en/device-dev/quick-start/{figures => figure}/2021-01-27_170334.png (100%) rename en/device-dev/quick-start/{figures => figure}/3-0.png (100%) rename en/device-dev/quick-start/{figures => figure}/3.png (100%) rename "en/device-dev/quick-start/figures/3516\346\255\243\351\235\242.png" => "en/device-dev/quick-start/figure/3516\346\255\243\351\235\242.png" (100%) rename "en/device-dev/quick-start/figures/3861\346\255\243\351\235\242.png" => "en/device-dev/quick-start/figure/3861\346\255\243\351\235\242.png" (100%) rename en/device-dev/quick-start/{figures => figure}/4.png (100%) rename en/device-dev/quick-start/{figures => figure}/5-1.png (100%) rename en/device-dev/quick-start/{figures => figure}/5.png (100%) rename en/device-dev/quick-start/{figures => figure}/6.png (100%) rename en/device-dev/quick-start/{figures => figure}/allowing-the-visual-studio-code-application-to-access-the-network-16.png (100%) rename en/device-dev/quick-start/{figures => figure}/allowing-the-visual-studio-code-application-to-access-the-network.png (100%) rename en/device-dev/quick-start/{figures => figure}/changjian1-11.png (100%) rename en/device-dev/quick-start/{figures => figure}/changjian1.png (100%) rename en/device-dev/quick-start/{figures => figure}/checking-whether-the-serial-port-is-used-9.png (100%) rename en/device-dev/quick-start/{figures => figure}/checking-whether-the-serial-port-is-used.png (100%) rename en/device-dev/quick-start/{figures => figure}/chuankou1-6.png (100%) rename en/device-dev/quick-start/{figures => figure}/chuankou1.png (100%) rename en/device-dev/quick-start/{figures => figure}/disabling-the-terminal-using-the-serial-port-10.png (100%) rename en/device-dev/quick-start/{figures => figure}/disabling-the-terminal-using-the-serial-port.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001056814287.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001057335403.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001072468991.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001072757874.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001073840162.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001096154076.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001100641602.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001113969542.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001114129428.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001114129432.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001117463460.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001117621400.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311066.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311070.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311072.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311090.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311092.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311094.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311096.png (100%) mode change 100755 => 100644 rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311098.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311100.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311104.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311116.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128311118.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470864.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470880.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470900.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470902.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470904.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470906.png (100%) create mode 100644 en/device-dev/quick-start/figure/en-us_image_0000001128470908.png rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001128470922.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001142794291.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001142802505.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001143154485.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001160527611.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001163045527.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270699.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270713.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270715.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270727.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270729.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270731.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270733.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270735.png (100%) mode change 100755 => 100644 rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270737.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270739.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270743.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270749.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174270751.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350615.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350623.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350633.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350641.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350643.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350647.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350649.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350651.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350653.png (100%) create mode 100644 en/device-dev/quick-start/figure/en-us_image_0000001174350655.png rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350659.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350661.png (100%) rename en/device-dev/quick-start/{figures => figure}/en-us_image_0000001174350669.png (100%) rename en/device-dev/quick-start/{figures => figure}/failed-to-obtain-the-image-file-due-to-unavailable-connection-12.png (100%) rename en/device-dev/quick-start/{figures => figure}/failed-to-obtain-the-image-file-due-to-unavailable-connection.png (100%) rename en/device-dev/quick-start/{figures => figure}/failed-to-open-the-serial-port-8.png (100%) rename en/device-dev/quick-start/{figures => figure}/failed-to-open-the-serial-port.png (100%) rename en/device-dev/quick-start/{figures => figure}/firewall-and-network-protection-14.png (100%) rename en/device-dev/quick-start/{figures => figure}/firewall-and-network-protection.png (100%) rename en/device-dev/quick-start/{figures => figure}/front-view-of-the-hi3518e-v300-board.png (100%) rename en/device-dev/quick-start/{figures => figure}/hardware-connections-3.png (100%) rename en/device-dev/quick-start/{figures => figure}/hardware-connections.png (100%) rename "en/device-dev/quick-start/figures/hi3518\346\255\243\350\203\214\351\235\242.png" => "en/device-dev/quick-start/figure/hi3518\346\255\243\350\203\214\351\235\242.png" (100%) rename en/device-dev/quick-start/{figures => figure}/network-and-firewall-setting-13.png (100%) rename en/device-dev/quick-start/{figures => figure}/network-and-firewall-setting.png (100%) rename en/device-dev/quick-start/{figures => figure}/qi1.png (100%) rename en/device-dev/quick-start/{figures => figure}/selecting-the-visual-studio-code-application-15.png (100%) rename en/device-dev/quick-start/{figures => figure}/selecting-the-visual-studio-code-application.png (100%) rename en/device-dev/quick-start/{figures => figure}/serial-port-displayed-after-the-u-boot-is-burnt.png (100%) rename en/device-dev/quick-start/{figures => figure}/settings-4.png (100%) rename en/device-dev/quick-start/{figures => figure}/settings.png (100%) rename en/device-dev/quick-start/{figures => figure}/successful-installation-(scons-version-requirement-3-0-4-or-later).png (100%) rename en/device-dev/quick-start/{figures => figure}/successful-system-startup-and-program-execution-7.png (100%) rename en/device-dev/quick-start/{figures => figure}/successful-system-startup-and-program-execution.png (100%) rename "en/device-dev/quick-start/figures/\346\210\252\345\233\276.png" => "en/device-dev/quick-start/figure/\346\210\252\345\233\276.png" (100%) rename "en/device-dev/quick-start/figures/\347\237\251\345\275\242\345\244\207\344\273\275-292.png" => "en/device-dev/quick-start/figure/\347\237\251\345\275\242\345\244\207\344\273\275-292.png" (100%) delete mode 100644 "en/device-dev/quick-start/figures/3516\346\255\243\351\235\242-17.png" delete mode 100755 en/device-dev/quick-start/figures/en-us_image_0000001128471042.png delete mode 100755 en/device-dev/quick-start/figures/en-us_image_0000001174350781.png delete mode 100644 en/device-dev/quick-start/figures/getting-started-for-the-standard-system.png delete mode 100644 en/device-dev/quick-start/hi3516-development-board.md delete mode 100644 en/device-dev/quick-start/hi3516.md delete mode 100644 en/device-dev/quick-start/hi3518-development-board.md delete mode 100644 en/device-dev/quick-start/hi3518.md delete mode 100644 en/device-dev/quick-start/hi3861-development-board.md delete mode 100644 en/device-dev/quick-start/hi3861.md delete mode 100644 en/device-dev/quick-start/how-to-develop.md delete mode 100644 en/device-dev/quick-start/introduction-to-the-development-boards.md delete mode 100644 en/device-dev/quick-start/introduction.md delete mode 100644 en/device-dev/quick-start/mini-and-small-systems.md delete mode 100644 en/device-dev/quick-start/overview.md delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/quick-start/public_sys-resources/icon-warning.gif rename en/device-dev/quick-start/{overview-1.md => quickstart-lite-env-setup-des.md} (100%) rename en/device-dev/quick-start/{faq.md => quickstart-lite-env-setup-faqs.md} (100%) create mode 100644 en/device-dev/quick-start/quickstart-lite-env-setup-lin.md create mode 100644 en/device-dev/quick-start/quickstart-lite-env-setup-win.md create mode 100644 en/device-dev/quick-start/quickstart-lite-env-setup.md create mode 100644 en/device-dev/quick-start/quickstart-lite-introduction-hi3516.md create mode 100644 en/device-dev/quick-start/quickstart-lite-introduction-hi3518.md create mode 100644 en/device-dev/quick-start/quickstart-lite-introduction-hi3861.md create mode 100644 en/device-dev/quick-start/quickstart-lite-introduction.md rename en/device-dev/quick-start/{overview-0.md => quickstart-lite-overview.md} (100%) create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3516-faqs.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3516-program.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3516-running.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3516-setting.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3516.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3518-faqs.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3518-running.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3518-setting.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3518.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3861-connection.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3861-faqs.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3861-running.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3861-setting.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps-board3861.md create mode 100644 en/device-dev/quick-start/quickstart-lite-steps.md create mode 100644 en/device-dev/quick-start/quickstart-lite.md create mode 100644 en/device-dev/quick-start/quickstart-standard-burn.md create mode 100644 en/device-dev/quick-start/quickstart-standard-docker-environment.md rename en/device-dev/quick-start/{faqs-7.md => quickstart-standard-faq.md} (100%) create mode 100644 en/device-dev/quick-start/quickstart-standard-package-environment.md create mode 100644 en/device-dev/quick-start/quickstart-standard-windows-environment.md create mode 100644 en/device-dev/quick-start/quickstart-standard.md create mode 100644 en/device-dev/quick-start/quickstart.md delete mode 100644 en/device-dev/quick-start/running-a-hello-ohos-program-5.md delete mode 100644 en/device-dev/quick-start/running-a-hello-ohos-program.md delete mode 100644 en/device-dev/quick-start/running-a-hello-world-program.md delete mode 100644 en/device-dev/quick-start/setting-up-the-environment-2.md delete mode 100644 en/device-dev/quick-start/setting-up-the-environment-4.md delete mode 100644 en/device-dev/quick-start/setting-up-the-environment.md delete mode 100644 en/device-dev/quick-start/setting-up-ubuntu-development-environment-in-docker-mode-and-building-source-code.md delete mode 100644 en/device-dev/quick-start/setting-up-ubuntu-development-environment-with-installation-package-and-building-source-code.md delete mode 100644 en/device-dev/quick-start/setting-up-windows-development-environment.md delete mode 100644 en/device-dev/quick-start/standard-system.md delete mode 100644 en/device-dev/quick-start/ubuntu-build-environment.md delete mode 100644 en/device-dev/quick-start/windows-development-environment.md delete mode 100644 en/device-dev/quick-start/wlan-connection.md rename "en/device-dev/security/figures/1-\346\225\217\346\204\237\346\235\203\351\231\220\345\274\271\347\252\227.png" => "en/device-dev/security/figure/1-\346\225\217\346\204\237\346\235\203\351\231\220\345\274\271\347\252\227.png" (100%) rename "en/device-dev/security/figures/2-\345\272\224\347\224\250\345\220\257\345\212\250\351\242\204\346\216\210\346\235\203.png" => "en/device-dev/security/figure/2-\345\272\224\347\224\250\345\220\257\345\212\250\351\242\204\346\216\210\346\235\203.png" (100%) rename "en/device-dev/security/figures/3-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216.png" => "en/device-dev/security/figure/3-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216.png" (100%) rename "en/device-dev/security/figures/4-\351\232\220\347\247\201\345\243\260\346\230\216\345\217\230\346\233\264\351\200\232\347\237\245.png" => "en/device-dev/security/figure/4-\351\232\220\347\247\201\345\243\260\346\230\216\345\217\230\346\233\264\351\200\232\347\237\245.png" (100%) rename "en/device-dev/security/figures/5-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216\345\205\245\345\217\243.png" => "en/device-dev/security/figure/5-\345\272\224\347\224\250\351\232\220\347\247\201\345\243\260\346\230\216\345\205\245\345\217\243.png" (100%) rename "en/device-dev/security/figures/6-1-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" => "en/device-dev/security/figure/6-1-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" (100%) rename "en/device-dev/security/figures/6-2-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" => "en/device-dev/security/figure/6-2-\351\232\220\347\247\201\345\243\260\346\230\216\346\222\244\351\224\200.png" (100%) rename en/device-dev/security/{figures => figure}/how-an-iot-controller-and-an-iot-device-establish-a-trust-relationship.png (100%) rename en/device-dev/security/{figures => figure}/how-dac-works.png (100%) rename en/device-dev/security/{figures => figure}/huks-functions.png (100%) rename en/device-dev/security/{figures => figure}/security-assurance-framework.png (100%) create mode 100644 en/device-dev/security/oem_security_privacy.md delete mode 100644 en/device-dev/security/privacy-protection.md delete mode 100644 en/device-dev/security/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/security/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/security/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/security/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/security/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/security/public_sys-resources/icon-warning.gif create mode 100644 en/device-dev/security/safety-safeguide-security.md delete mode 100644 en/device-dev/security/security-guidelines.md delete mode 100644 en/device-dev/subsystems/ai-engine-framework.md delete mode 100644 en/device-dev/subsystems/ai-framework.md delete mode 100644 en/device-dev/subsystems/application-framework.md delete mode 100644 en/device-dev/subsystems/audio-video.md delete mode 100644 en/device-dev/subsystems/building-guidelines-for-mini-and-small-systems.md delete mode 100644 en/device-dev/subsystems/building-guidelines-for-the-standard-system.md delete mode 100644 en/device-dev/subsystems/bytrace-usage-guidelines.md delete mode 100644 en/device-dev/subsystems/camera.md delete mode 100644 en/device-dev/subsystems/code-management.md delete mode 100644 en/device-dev/subsystems/compilation-and-building-faq.md delete mode 100644 en/device-dev/subsystems/compilation-and-building-guidelines-1.md delete mode 100644 en/device-dev/subsystems/compilation-and-building-guidelines.md delete mode 100644 en/device-dev/subsystems/compilation-and-building-overview-0.md delete mode 100644 en/device-dev/subsystems/compilation-and-building-overview.md delete mode 100644 en/device-dev/subsystems/compilation-and-building.md delete mode 100644 en/device-dev/subsystems/development-environment.md delete mode 100644 en/device-dev/subsystems/development-examples.md delete mode 100644 en/device-dev/subsystems/development-guidelines-5.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-animators.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-application-permission-management.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-application-signature-verification.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-common-components.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-container-components.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-layout-container-components.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-media-recording.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-photographing.md delete mode 100644 en/device-dev/subsystems/development-guidelines-on-trusted-device-group-management.md delete mode 100644 en/device-dev/subsystems/development-guidelines.md delete mode 100644 en/device-dev/subsystems/dfx-11.md delete mode 100644 en/device-dev/subsystems/dfx.md delete mode 100644 en/device-dev/subsystems/faqs.md rename en/device-dev/subsystems/{figures => figure}/20200721-223604(espace).gif (100%) rename en/device-dev/subsystems/{figures => figure}/animator-effect.gif (100%) rename en/device-dev/subsystems/{figures => figure}/application-startup-process.png (100%) rename en/device-dev/subsystems/{figures => figure}/architecture-of-the-ability-management-framework.png (100%) rename en/device-dev/subsystems/{figures => figure}/architecture-of-the-bundle-management-framework.png (100%) create mode 100644 en/device-dev/subsystems/figure/build-process.jpg rename en/device-dev/subsystems/{figures => figure}/component-tree-structure.png (100%) rename en/device-dev/subsystems/{figures => figure}/effect-of-adding-view-instances-to-a-viewgroup.png (100%) rename en/device-dev/subsystems/{figures => figure}/effect-of-clicking-a-uibutton.gif (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001051782526.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001052582522.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001052662559.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001052782555.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001052942531.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001053207924.gif (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001053247975.gif (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001054101094.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001054421113.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001059334449.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001060200050.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001061889268.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001062334618.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001062476933.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001062942690.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001063839940.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001077724150.png (100%) rename en/device-dev/subsystems/{figures => figure}/en-us_image_0000001077727032.png (100%) create mode 100644 en/device-dev/subsystems/figure/en-us_image_0000001119924146.gif create mode 100644 en/device-dev/subsystems/figure/en-us_image_0000001166643927.jpg rename en/device-dev/subsystems/{figures => figure}/image-auto-adaption-effect.png (100%) rename en/device-dev/subsystems/{figures => figure}/image-tile-effect.png (100%) rename en/device-dev/subsystems/{figures => figure}/output-of-the-system-attribute-dumping-command-for-the-liteos-cortex-a-kernel.png (100%) rename en/device-dev/subsystems/{figures => figure}/output-of-the-system-attribute-dumping-command-for-the-liteos-cortex-m-kernel.png (100%) rename en/device-dev/subsystems/{figures => figure}/platform-architecture.png (100%) rename en/device-dev/subsystems/{figures => figure}/relationship-between-a-page-ability-and-its-ability-slices.png (100%) rename en/device-dev/subsystems/{figures => figure}/running-sequence-of-the-test-platform.png (100%) rename en/device-dev/subsystems/{figures => figure}/scrolling-effect-in-both-horizontal-and-vertical-directions.gif (100%) rename en/device-dev/subsystems/{figures => figure}/setting-a-2x2-grid-and-adding-four-buttons-in-a-layout.png (100%) rename en/device-dev/subsystems/{figures => figure}/startup-of-the-ability-manager-service-and-bundle-manager-service.png (100%) rename en/device-dev/subsystems/{figures => figure}/structure-of-common-container-components.png (100%) rename en/device-dev/subsystems/{figures => figure}/tree-structure-of-common-components.png (100%) rename en/device-dev/subsystems/{figures => figure}/unnaming.png (100%) rename "en/device-dev/subsystems/figures/\345\233\276\347\211\2071.png" => "en/device-dev/subsystems/figure/\345\233\276\347\211\2071.png" (100%) rename "en/device-dev/subsystems/figures/\345\256\211\345\205\250\345\255\220\347\263\273\347\273\237.png" => "en/device-dev/subsystems/figure/\345\256\211\345\205\250\345\255\220\347\263\273\347\273\237.png" (100%) rename "en/device-dev/subsystems/figures/\346\217\222\344\273\266\344\276\235\350\265\226-(2).jpg" => "en/device-dev/subsystems/figure/\346\217\222\344\273\266\344\276\235\350\265\226-(2).jpg" (100%) delete mode 100644 en/device-dev/subsystems/figures/build-process.jpg delete mode 100644 en/device-dev/subsystems/figures/building-process.jpg delete mode 100644 en/device-dev/subsystems/figures/ril-adapter.png delete mode 100644 "en/device-dev/subsystems/figures/\345\216\273\347\224\265.png" delete mode 100644 "en/device-dev/subsystems/figures/\346\235\245\347\224\265.png" delete mode 100644 en/device-dev/subsystems/graphics.md delete mode 100644 en/device-dev/subsystems/hdc_std-faqs.md delete mode 100644 en/device-dev/subsystems/hdc_std-usage-guidelines.md delete mode 100644 en/device-dev/subsystems/kws-sdk.md delete mode 100644 en/device-dev/subsystems/multimedia.md create mode 100644 en/device-dev/subsystems/oem_subsys_toolchain_hdc_guide.md rename en/device-dev/subsystems/{utils-overview.md => oem_subsys_utils_des.md} (100%) rename en/device-dev/subsystems/{utils-faq.md => oem_subsys_utils_faq.md} (100%) create mode 100644 en/device-dev/subsystems/oem_subsys_utils_guide.md delete mode 100644 en/device-dev/subsystems/ota-upgrade.md delete mode 100644 en/device-dev/subsystems/overview-4.md delete mode 100644 en/device-dev/subsystems/overview.md delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-caution.gif delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-danger.gif delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-note.gif delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-notice.gif delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-tip.gif delete mode 100644 en/device-dev/subsystems/public_sys-resources/icon-warning.gif delete mode 100644 en/device-dev/subsystems/r-d-tools.md delete mode 100644 en/device-dev/subsystems/sdk.md delete mode 100644 en/device-dev/subsystems/security.md delete mode 100644 en/device-dev/subsystems/sensors-overview.md delete mode 100644 en/device-dev/subsystems/sensors-usage-guidelines.md delete mode 100644 en/device-dev/subsystems/sensors.md delete mode 100644 en/device-dev/subsystems/setting-up-a-development-environment.md delete mode 100644 en/device-dev/subsystems/startup-10.md delete mode 100644 en/device-dev/subsystems/startup.md rename en/device-dev/subsystems/{kws-configuration-file.md => subsys-aiframework-demo-conf.md} (100%) rename en/device-dev/subsystems/{kws-plug-in.md => subsys-aiframework-demo-plugin.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-aiframework-demo-sdk.md create mode 100644 en/device-dev/subsystems/subsys-aiframework-demo.md rename en/device-dev/subsystems/{configuration-file.md => subsys-aiframework-devguide-conf.md} (100%) rename en/device-dev/subsystems/{plug-in.md => subsys-aiframework-devguide-plugin.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-aiframework-devguide-sdk.md create mode 100644 en/device-dev/subsystems/subsys-aiframework-devguide.md create mode 100644 en/device-dev/subsystems/subsys-aiframework-envbuild.md create mode 100644 en/device-dev/subsystems/subsys-aiframework-guide.md create mode 100644 en/device-dev/subsystems/subsys-aiframework-tech-codemanage.md rename en/device-dev/subsystems/{api-development.md => subsys-aiframework-tech-interface.md} (100%) rename en/device-dev/subsystems/{naming.md => subsys-aiframework-tech-name.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-aiframework-tech.md create mode 100644 en/device-dev/subsystems/subsys-aiframework.md create mode 100644 en/device-dev/subsystems/subsys-application-framework-builden.md rename en/device-dev/subsystems/{development-example.md => subsys-application-framework-demo.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-application-framework-guide.md create mode 100644 en/device-dev/subsystems/subsys-application-framework-overview.md create mode 100644 en/device-dev/subsystems/subsys-application-framework.md rename en/device-dev/subsystems/{appspawn-module.md => subsys-boot-appspawn.md} (100%) rename en/device-dev/subsystems/{bootstrap-module.md => subsys-boot-bootstrap.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-boot-faqs.md rename en/device-dev/subsystems/{init-module.md => subsys-boot-init.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-boot-overview.md rename en/device-dev/subsystems/{reference.md => subsys-boot-ref.md} (100%) rename en/device-dev/subsystems/{syspara-module.md => subsys-boot-syspara.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-boot.md create mode 100644 en/device-dev/subsystems/subsys-build-mini-lite.md create mode 100644 en/device-dev/subsystems/subsys-build-standard-large.md create mode 100644 en/device-dev/subsystems/subsys-build.md rename en/device-dev/subsystems/{sensors-usage-example.md => subsys-densor-demo.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-densor-guide.md create mode 100644 en/device-dev/subsystems/subsys-densor-overview.md create mode 100644 en/device-dev/subsystems/subsys-densor.md rename en/device-dev/subsystems/{development-guidelines-on-hilog_lite.md => subsys-dfx-hilog-lite.md} (100%) rename en/device-dev/subsystems/{development-guidelines-on-hilog.md => subsys-dfx-hilog-rich.md} (100%) rename en/device-dev/subsystems/{development-guidelines-on-hisysevent.md => subsys-dfx-hisysevent.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-dfx-hisyseventread.md create mode 100644 en/device-dev/subsystems/subsys-dfx-overview.md create mode 100644 en/device-dev/subsystems/subsys-dfx.md create mode 100644 en/device-dev/subsystems/subsys-graphics-animation-guide.md create mode 100644 en/device-dev/subsystems/subsys-graphics-bundle-guide1.md create mode 100644 en/device-dev/subsystems/subsys-graphics-bundle-guide2.md create mode 100644 en/device-dev/subsystems/subsys-graphics-bundle-guide3.md rename en/device-dev/subsystems/{graphics-2.md => subsys-graphics-overview.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-graphics.md create mode 100644 en/device-dev/subsystems/subsys-multimedia-camera-overview.md create mode 100644 en/device-dev/subsystems/subsys-multimedia-camera-photo-guide.md rename en/device-dev/subsystems/{development-guidelines-on-previewing.md => subsys-multimedia-camera-preview-guide.md} (100%) rename en/device-dev/subsystems/{development-guidelines-on-video-recording.md => subsys-multimedia-camera-record-guide.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-multimedia-camera.md rename en/device-dev/subsystems/{overview-3.md => subsys-multimedia-video-overview.md} (100%) rename en/device-dev/subsystems/{development-guidelines-on-media-playback.md => subsys-multimedia-video-play-guide.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-multimedia-video-record-guide.md create mode 100644 en/device-dev/subsystems/subsys-multimedia-video.md create mode 100644 en/device-dev/subsystems/subsys-multimedia.md create mode 100644 en/device-dev/subsystems/subsys-ota-guide.md rename en/device-dev/subsystems/{distributed-remote-startup.md => subsys-remote-start.md} (100%) rename en/device-dev/subsystems/{development-guidelines-on-ipc-authentication.md => subsys-security-communicationverify.md} (100%) rename en/device-dev/subsystems/{overview-9.md => subsys-security-overview.md} (100%) create mode 100644 en/device-dev/subsystems/subsys-security-rightmanagement.md create mode 100644 en/device-dev/subsystems/subsys-security-sigverify.md create mode 100644 en/device-dev/subsystems/subsys-security.md create mode 100644 en/device-dev/subsystems/subsys-testguide-test.md create mode 100644 en/device-dev/subsystems/subsys-toolchain-bytrace-guide.md create mode 100644 en/device-dev/subsystems/subsys-toolchain.md create mode 100644 en/device-dev/subsystems/subsys-utils.md create mode 100644 en/device-dev/subsystems/subsys-xts-guide.md create mode 100644 en/device-dev/subsystems/subsys.md delete mode 100644 en/device-dev/subsystems/technical-specifications.md delete mode 100644 en/device-dev/subsystems/testing.md delete mode 100644 en/device-dev/subsystems/utils-development-guidelines.md delete mode 100644 en/device-dev/subsystems/utils.md delete mode 100644 en/device-dev/subsystems/xts.md diff --git a/en/device-dev/bundles/Readme-EN.md b/en/device-dev/bundles/Readme-EN.md index 2ae8dc847c..b95e0adea8 100644 --- a/en/device-dev/bundles/Readme-EN.md +++ b/en/device-dev/bundles/Readme-EN.md @@ -1,20 +1,11 @@ -# Bundle Development - -- [Development Specifications](development-specifications.md) - - [Overview](overview.md) - - [Bundle Composition](bundle-composition.md) - - [Bundle Management](bundle-management.md) - - [Bundle Version](bundle-version.md) - - [Distribution](distribution.md) - - [Environment Variables](environment-variables.md) - -- [Development Guidelines](development-guidelines.md) - - [Overview](overview-0.md) - - [Preparations](preparations.md) - - [Bundle Development](bundle-development.md) - -- [HPM User Guide](hpm-user-guide.md) - - [Introduction](introduction.md) - - [Preparations](preparations-1.md) - - [Development Example](development-example.md) - +# Bundle Development + +- [Development Specifications](bundles-standard-rules.md) +- [Development Guidelines](bundles-guide.md) + - [Bundle Development](bundles-guide-overview.md) + - [Preparations](bundles-guide-prepare.md) + - [Bundle Development](bundles-guide-develop.md) +- [HPM User Guide](bundles-demo.md) + - [Introduction](bundles-demo-hpmdescription.md) + - [Preparations](bundles-demo-environment.md) + - [Development Example](bundles-demo-devsample.md) \ No newline at end of file diff --git a/en/device-dev/bundles/bundle-composition.md b/en/device-dev/bundles/bundle-composition.md deleted file mode 100644 index 754f38a7c4..0000000000 --- a/en/device-dev/bundles/bundle-composition.md +++ /dev/null @@ -1,99 +0,0 @@ -# Bundle Composition - -- [Code files](#section101483489110) -- [README File](#section10519101221211) -- [Metadata Description File](#section45511827111211) - -A bundle contains the following contents: - -- **src** directory for storing code files or code library -- **ohos\_bundles** folder for storing dependent bundles \(It is automatically generated during bundle installation, without the need to submit to the code library.\) -- **README.md** file for describing the bundle -- **bundle.json** file for declaring metadata of the bundle -- **LICENSE** file for open-source code - - ``` - my-bundle - |_ohos_bundles - |_src - |_bundle.json - |_README.md - |_LICENSE - ``` - - -## Code files - -Bundle code files are the same as those in a common code directory. The only difference lies in the open APIs \(declared in header files\) of a bundle, which are likely to be referenced by other bundles and need to be declared in the **dirs** of **bundle.json**. - -## README File - -**README.md** is a bundle self-description file using the markdown syntax. For details, see [Syntax Reference](https://www.markdownguide.org/getting-started/). - -To help you easily find and use the desired bundle on the HarmonyOS Package Manager \(HPM\) platform, a **README** file is provided in the root directory of each bundle. - -The **README** file may include instructions on how to install, configure, and use the instance code in the bundle, as well as any other information helpful to you. - -The **README** file is available in the bundle details page of the HPM platform. - -## Metadata Description File - -A **bundle.json** file describes the metadata of a bundle. Each bundle has its own **bundle.json** file. - -``` -{ - "name": "@myorg/demo-bundle", - "version": "1.0.0", - "license": "MIT", - "description": "bundle description", - "keywords": ["hos"], - "tags": ["applications", "drivers"], - "author": {"name":"","email":"","url":""}, - "contributors":[{"name":"","email":"","url":""},{"name":"","email":"","url":""}], - "homepage": "http://www.foo.bar.com", - "repository": "https://git@gitee.com:foo/bar.git", - "publishAs": "source", - "dirs": { - "src": ["src/**/*.c"], - "headers": ["headers/**/*.h"], - "bin": ["bin/**/*.o"] - }, - "scripts": { - "build": "make" - }, - "envs": {}, - "ohos": { - "os": "2.0.0", - "board": "hi3516", - "kernel": "liteos-a" - }, - "rom": "10240", - "ram": "1024", - "dependencies": { - "@myorg/net":"1.0.0" - } -} -``` - -Each **bundle.json** file has the following fields: - -- **name**: a bundle name, which starts with @ and is separated by /, for example, **@myorg/mybundle** - -- **version**: a bundle version number, for example, 1.0.0. The version number must comply with the Semantic Versioning Specification \(SemVer\) standards. - -- **description**: a brief description of a bundle -- **dependencies**: bundles that a bundle depends on - -- **envs**: parameters required for bundle compilation, including global parameters and dependency parameters. - -- **scripts**: commands executable to a bundle, such as those for compiling, building, testing, and burning - -- **publishAs**: bundle publishing type, which can be **source**, **binary**, **distribution**, or **code-segment** - -- **dirs**: directory structure \(such as the header file\) generated for publishing - -- **ram&rom**: statistical information about the estimated read-only memory \(ROM\) and random access memory \(RAM\) usage -- **ohos**: mappings among OpenHarmony versions, development boards, and kernels, separated by commas \(,\). -- Extended information: author, home page, code repository, license, tags, and keywords -- **base** \(only for a distribution\): a base distribution which others inherit from. - diff --git a/en/device-dev/bundles/bundle-development.md b/en/device-dev/bundles/bundle-development.md deleted file mode 100644 index 09330f6991..0000000000 --- a/en/device-dev/bundles/bundle-development.md +++ /dev/null @@ -1,241 +0,0 @@ -# Bundle Development - -- [Developing a OpenHarmony Bundle](#section1976410130540) -- [Creating a Bundle](#section717481119145) -- [Modifying a Bundle](#section102861955201410) -- [Using HPM-provided Template to Create a Bundle](#section15882846181510) -- [Building a Bundle](#section136732148541) -- [Defining the Building Script](#section10274147111610) -- [Executing the Building Script](#section879301916172) -- [Defining a Distribution](#section413216495619) -- [Defining Scripts](#section11503171219190) -- [Distributing](#section4694125521912) -- [Burning](#section1746331545413) -- [Debugging](#section6742131615549) - -## Developing a OpenHarmony Bundle - -You have an option to use any of the following methods to develop an OpenHarmony bundle: - -- Develop a brand new bundle from scratch. -- Rewrite code of an existing non-bundle to develop a bundle. - -- Use HPM-provided bundle templates to quickly develop a bundle. - -## Creating a Bundle - -Generally, you can find commonly used bundles on the [HPM](https://hpm.harmonyos.com/#/en/home) website. If they cannot meet your requirements, you can develop your own bundles. - -You can publish bundles in the HPM repository if you like, so that your peers have an option to use them. Assume that you want to create a bundle named **my-bundle** in the **D:/source** directory: - -Run the **hpm init** command to create the scaffold code for this bundle. For example, you can go to the **D:/source** directory and run the following command: - -``` -hpm init -t default -d demo my-bundle -``` - -The following files are generated in the **source** directory: - -``` -mybundle -├── bundle.json # Metadata description file of the bundle -├── example # Example of testing bundle functions -│ └── main.c -├── include # Internal header files of the bundle -│ └── mybundle.h -├── README.md # Brief description of the bundle -└── src # Source code of the bundle - └─ mybundle.c -``` - -Then, complete your coding based on service requirements. Finally, use **git** to commit your code \(including the **bundle.json** file\) to the code hosting repository, such as gitee. - -## Modifying a Bundle - -If you have code unqualified for the OpenHarmony bundle structure, modify your code to match an HPM bundle. In the code directory \(for example, **mybundle2**\) storing your code, run the following command with the bundle name and version specified: - -``` -hpm init -``` - -1. Enter a bundle name \(**mybundle2** as an example\) and press **Enter**. -2. Enter the bundle version \(**1.0.0** as an example\) and press **Enter**. A **bundle.json** file is generated in the current bundle directory. -3. Add other descriptions in **bundle.json**, which is publishable. - - ``` - $ hpm init - Your bundle will be created in dirname E:\demo\mybundle2 - ? bundle name mybundel2 - ? version 1.0.0 - Init finished! - ``` - - -1. Modify other information \(such as the author, code repository, code directory, command script, and dependent bundles\) in **bundle.json**. - - ``` - { - "name": "mybundle2", - "version": "1.0.0", - "publishAs": "source", - "dirs":{ - ".":[ - "README.md" - ], - "src":[ - "test.c" - ], - "header":[ - "header/test.h" - ], - "src/common":[ - "src/common/foobar.txt" - ] - }, - "scripts": { - "build": "make -${args}" - }, - "dependencies": { - "@ohos/cjson": "^1.0.0", - "@ohos/": "^1.2.0" - } - } - ``` - - -## Using HPM-provided Template to Create a Bundle - -The HPM provides **default** and **simple** templates as well as other templates that are stored on the server. - -You can run the **hpm search -t template** command to search for a template stored on the server. - -![](figures/en-us_image_0000001051452177.png) - -Then, select your desired template based on the information below **description**, use the selected template to quickly create the bundle scaffold, and run the following command with the **-t** and **-d** parameters specified: - -``` -hpm init -t {templatename} -d dir name -``` - -- **\{templatename\}** indicates the template name. -- **dir** indicates the path for storing the bundle to be created. -- **name** indicates the name of the bundle to be created. - -## Building a Bundle - -After completing code development, you need to build the bundle. The HPM supports command integration so that you can select any build tool \(such as **make**, **gcc**, and **gn**\) suitable for your project. You only need to define the **build** command in the **scripts** in the **bundle.json** file of your project, and then you run the hpm command **build** to perform building. - -## Defining the Building Script - -This section uses how to build an executable file **helloworld** in the **app** directory as an example. - -``` -app -├── BUILD.gn -├── include -│ └── helloworld.h -└── src - └── helloworld.c -``` - -Create a **BUILD.gn** file in the same directory as **helloworld.c**. - -``` -touch BUILD.gn -vim BUILD.gn -``` - -The following is an example of **BUILD.gn** for your reference: - -``` -executable("hello_world") { - sources = [ - "src/helloworld.c" - ] - - include_dirs = [ - "include" - ] -} -``` - ->![](public_sys-resources/icon-note.gif) **NOTE:** ->- **executable** is a built-in template of **gn**. You can run the **gn help executable** command to view how to use this template. ->- **sources** represents the source code path, and **include\_dirs** represents the header file path. - -## Executing the Building Script - -Run the following command: - -``` -hpm build -``` - -After all building operations are complete, the message "build succeed" is displayed. You need to check the building result. - -![](figures/en-us_image_0000001051770876.png) - -## Defining a Distribution - -A distribution refers to an image file of an executable OpenHarmony solution composed of a group of bundles. It contains many dependent bundles and provides scripts to illustrate how to compile and link these bundles. - -## Defining Scripts - -Define scripts in **bundle.json** as follows: - -``` -{ -"name": "my_dist", -"version": "1.0.0", -"publishAs": "distribution", -"scripts": { -"dist": "make -${args}" - }, -"base": { -"name": "dist-bundle", -"version": "1.0.0" - }, -"envs": { -"args": "x86" - }, -"dependencies": { -} -} -``` - -## Distributing - -Run the following command in the current distribution directory: - -``` -hpm dist -``` - -The **hpm-cli** tool automatically performs compiling and packing, and generates an image file of the **dist** script defined based on **scripts**. The following is an example: - -``` -out -|-xxdist.img -|-xx.file -``` - -## Burning - -The building result of the distribution can be burnt into devices, for example, by using the **hiburn** tool. You need to configure burning parameters in the **bundle.json** file of the distribution. - -``` -"scripts": { -"flash": "{$DEP_HIBURN}/hiburn" -}, -``` - -You should set burning parameters by referring to the specific guide on the burning tool you use. - -``` -hpm run flash -``` - -## Debugging - -Start debugging after you have burnt the image file of the distribution into devices. The debugging process varies according to specific development boards and IDE debugging tools. - diff --git a/en/device-dev/bundles/bundle-management.md b/en/device-dev/bundles/bundle-management.md deleted file mode 100644 index 4511f3427c..0000000000 --- a/en/device-dev/bundles/bundle-management.md +++ /dev/null @@ -1,232 +0,0 @@ -# Bundle Management - -- [Dependency](#section12657593129) -- [HPM Command Reference](#section1258849181312) - -## Dependency - -A basic **bundle.json** file needs to be enriched by bundle dependencies to implement more complex features. Bundle names and version numbers should be defined in the **dependencies** field of **bundle.json**. - -``` -{ - "name": "my-bundle", - "version": "1.0.0", - "dependencies": { - "net": "1.0.0" - } -} -``` - -In this example, **my-bundle** depends on **net 1.0.0**. After you globally install the hpm-cli tool, run the following command to obtain bundle dependencies from the remote repository: - -``` -hpm install -``` - -Bundle dependencies are then stored in the **ohos\_bundles** folder in the root directory of the current bundle. A tree structure illustrating the bundle and its dependencies will be generated. You need to run the following command in the root directory of the bundle: - -``` -username@server MINGW64 /f/showcase/demo/demo -$ hpm list -+--demo@1.0.0 -| +--@huawei/media@1.0.2 -| +--@demo/sport_hi3518ev300_liteos_a@1.0.0 -| | +--@demo/app@4.0.1 -| | | +--@demo/build@4.0.1 -| | | +--@demo/arm_harmonyeabi_gcc@4.0.0 -| | +--@demo/liteos_a@4.0.0 -| | | +--@demo/third_party_fatfs@4.0.0 -| | | +--@demo/arm_harmonyeabi_gcc@4.0.0 -| | +--@demo/init@4.0.0 -| | +--@demo/dist_tools@4.0.0 -``` - -Alternatively, you can view the dependencies of the current bundle in a graph by running the following command: - -``` -hpm dependencies -``` - -A **deps\_visual** folder is generated in the current directory. The folder contains the **deps.html** and **deps-data.js** files. After you open the **deps.html** file via a browser, you can view bundle dependencies illustrated by a graph, as shown in the following figure. - -Each dependency type is indicated by a different color at the corresponding node. You can move the mouse pointer to a node to view the implied information. - -**Figure 1** Bundle dependencies -![](figures/bundle-dependencies.png "bundle-dependencies") - -## HPM Command Reference - -You can use the hpm-cli tool to manage the lifecycle of a bundle. The following table describes available HPM commands. \(You can run the **hpm -h** command to get the command details\). - -**Table 1** HPM commands - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Function

-

Command

-

Description

-

Querying version information

-

hpm -V or hpm --version

-

Queries the hpm-cli version number.

-

Querying help information

-

hpm -h or hpm --version

-

Queries the command list and help information.

-

hpm -h

-

Queries command reference.

-

Creating a project

-

-

hpm init bundle

-

Creates a bundle project.

-

hpm init -t template

-

Creates a scaffolding project based on the template.

-

Installing bundles

-

-

hpm install or hpm i

-

Installs dependent bundles in the bundle.json file.

-

hpm install bundle@version

-

Installs bundles of a specified version.

-

Uninstalling bundles

-

-

hpm uninstall bundle

-

Removes dependent bundles.

-

hpm remove or hpm rm bundlename

-

Removes dependent bundles.

-

Viewing information

-

-

hpm list or hpm ls

-

Displays the bundle tree of available bundles and distributions.

-

hpm dependencies

-

Generates the dependency diagram (in HTML format) of available bundles and distributions.

-

Searching for bundles

-

hpm search name

-

Searches for bundles. --json is used to specify the search result in JSON format, and -type is used to set the target type, which can be bundle, distribution, or code-segment.

-

Setting HPM configuration items

-

hpm config set key value

-

Sets configuration items, such as the server address and network proxy.

-

hpm config delete key

-

Deletes configurations.

-

Updating bundle versions

-

-

hpm update

-

Updates the versions of dependent bundles.

-

hpm check-update

-

Checks whether version updates are available to dependent bundles.

-

Building

-

-

hpm build

-

Builds a bundle or distribution.

-

hpm dist

-

Packs a distribution, depending on the dist script in scripts of bundle.json.

-

Packing

-

hpm pack

-

Packs dependencies of local bundles.

-

Burning

-

hpm run flash

-

Burns the firmware, depending on the flash script in scripts of bundle.json.

-

Publishing

-

hpm publish

-

Publishes a bundle, which must be unique in the repository and has a unique version. (An account is required for login.)

-

Running extended commands

-

hpm run

-

Runs the commands in scripts defined in bundle.json. Multiple commands can be executed in batches by using &&.

-

Generating a key

-

hpm gen-keys

-

Generates a public-private key pair and configures the public key on the HPM server, achieving password-free hpm-cli login for bundle publishing.

-

Generating third-party open source notice

-

hpm gen-notice

-

Generates a joint file describing the notice on third-party open source based on the description of each bundle.

-
- diff --git a/en/device-dev/bundles/bundle-version.md b/en/device-dev/bundles/bundle-version.md deleted file mode 100644 index d07118d86a..0000000000 --- a/en/device-dev/bundles/bundle-version.md +++ /dev/null @@ -1,23 +0,0 @@ -# Bundle Version - -- [Version Number Naming Specifications](#section16893854141310) -- [Version Publishing](#section43401320171420) - -## Version Number Naming Specifications - -Each version name allows only lowercase letters, which can be separated by hyphens \(-\) or underscores \(\_\). For example, **bundle** and **my\_bundle** are allowed. - -A bundle version number is in the format of _major version number_._minor version number_._revision version number_ or _major version number_._minor version number_._revision version number_-_pre-release version number_, for example, **1.0.0** and **1.0.0-beta**. For details, see [https://semver.org](https://semver.org/). - -## Version Publishing - -You should upload bundles to the remote repository so that your peers have an option to use them. You can run the following command to upload the bundles: - -``` -hpm publish -``` - -After this command is executed, the system checks the bundle dependencies and downloads the missing dependencies. If the bundles you uploaded are in binary, the system compiles the entire bundle, generates a binary file, packs the file, and uploads it. If the bundles you uploaded are in another format, the system packs the bundle file in compliance with the defined packing rules and then uploads the file. - -Note: To publish a bundle, you need an HPM account for login. After logging in to the HPM platform, register with an organization and apply for authentication. After successful authentication, you will have the permission to publish the bundle. - diff --git a/en/device-dev/bundles/bundles-demo-devsample.md b/en/device-dev/bundles/bundles-demo-devsample.md new file mode 100644 index 0000000000..4b896d4811 --- /dev/null +++ b/en/device-dev/bundles/bundles-demo-devsample.md @@ -0,0 +1,54 @@ +# Development Example + +This following uses the Hi3861 platform as an example to describe how to install, compile, and package components by using HPM. + +1. Run the following commands to initialize the installation directory \(whose name can be customized\): + + ``` + mkdir test3861 + cd test3861 + hpm init -t dist + ``` + + If the following information is displayed, the initialization is successful: + + ``` + Initialization finished. + ``` + +2. Run the following command to install the **wifi\_iot** distribution: + + ``` + hpm install @ohos/wifi_iot + ``` + + If the following information is displayed, the installation is successful: + + ``` + Installed. + ``` + + >![](../public_sys-resources/icon-note.gif) **NOTE:** + >Run the following command for the Hi3516 platform: + >``` + >hpm install @ohos/ip_camera_hi3516dv300 + >``` + >Run the following command for the Hi3518 platform: + >``` + >hpm install @ohos/ip_camera_hi3518ev300 + >``` + +3. Run the following command to build and package components: + + ``` + hpm dist + ``` + + If the building is successful, the following information is displayed: + + ``` + {{name}}: distribution building completed. + ``` + +4. Check the result in the **./out** directory. You can burn the distribution into the corresponding development board for testing. + diff --git a/en/device-dev/bundles/bundles-demo-environment.md b/en/device-dev/bundles/bundles-demo-environment.md new file mode 100644 index 0000000000..6780aa705e --- /dev/null +++ b/en/device-dev/bundles/bundles-demo-environment.md @@ -0,0 +1,139 @@ +# Preparations + +- [Linux Server](#section20979554791) +- [Node.js](#section9954105413153) +- [HPM](#section15937194904819) +- [Python Environment](#section1621819180417) +- [File Packaging Tool](#section77617165913) +- [SCons](#section20558439191516) + +## Linux Server + +Prepare a 64-bit Linux server running Ubuntu 16.04 or later. HPM supports Windows Server, but the open-source Hi3861, Hi3516, and Hi3518 solutions support only Ubuntu. + +Configure Ubuntu to use bash as the Linux system shell, by performing the following: + +``` +ls -l $(which sh) +# If the file does not point to bash, modify the file using either of the provided methods. +# Method 1: Run the following command and select no: +dpkg-reconfigure dash +# Method 2: Run the following commands to delete /bin/sh and then create a new symbolic link to bash: +rm -f /bin/sh +ln -s bash /bin/sh +``` + +## Node.js + +>![](../public_sys-resources/icon-note.gif) **NOTE:** +>If the Node.js version of the source is outdated, run the following command before running **apt-get install**: +>``` +>curl -L https://deb.nodesource.com/setup_12.x | bash +>``` + +You are advised to install Node.js 12.x \(including npm 6.14.4\) or a later version \(12.13.0 or later is recommended\). + +``` +sudo apt-get install nodejs +sudo apt-get install npm +``` + +Run the following commands to view Node.js and NPM versions: + +``` +node --version # Check the Node.js version. +npm --version # Check the NPM version. +``` + +## HPM + +Install the **hpm-cli** command line tool by using the NPM \(default source: https://registry.npmjs.org/\) provided by the Node.js. + +``` +npm install -g @ohos/hpm-cli +``` + +After **hpm-cli** is installed, run the following command to view default HPM configurations: + +``` +hpm config +``` + +You can modify the default configurations as required. The following lists common HPM configurations: + +``` +registry = https://hpm.harmonyos.com # Register with the HPM registration center. This is mandatory for downloading components. +strictSsl = true # Enable strict SSL verification as HTTPS is used for connection. +http_proxy = http://your-proxy-server:port # Configure the HTTP proxy. +https_proxy = http://your-proxy-server:port # Configure the HTTPS proxy. +``` + +For details about **hpm-cli** commands, see [HPM Commands](bundles-standard-rules.md). + +## Python Environment + +Run the following commands to install Python later than 3.7: + +``` +sudo apt-get install python3.8 +sudo apt-get install python3-pip +sudo pip3 install setuptools +sudo pip3 install kconfiglib # Install kconfiglib 13.2.0 or later. +``` + +>![](../public_sys-resources/icon-note.gif) **NOTE:** +>The preceding method is applicable to Hi3518 and Hi3516 platforms. For Hi3861, run the following commands to install the Python environment: +>``` +>sudo apt-get install python3.8 +>sudo apt-get install python3-pip +>sudo pip3 install setuptools +>sudo pip3 install kconfiglib # Install kconfiglib 13.2.0 or later. +>sudo pip3 install pycryptodome +>sudo pip3 install six --upgrade --ignore-installed six +>sudo pip3 install ecdsa +>``` + +If both Python2 and Python3 have been installed in the current system, run the following commands to set the default Python to Python3: + +``` +ll `which python` +rm /usr/bin/python +ln -s python3.8 /usr/bin/python +``` + +## File Packaging Tool + +Run the following commands to install the tool: + +``` +which mkfs.vfat # If mkfs.vfat is not found, run the following command: +sudo apt-get install dosfstools +which mcopy # If mcopy is not found, run the following command: +sudo apt-get install mtools +``` + +>![](../public_sys-resources/icon-note.gif) **NOTE:** +>Both Hi3518 and Hi3516 platforms require the file packaging tool. For Hi3861, the tool is not required. + +## SCons + +1. Start a Linux server. +2. Run the following command to install the SCons installation package: + + ``` + python3 -m pip install scons + ``` + +3. Run the following command to check whether SCons is successfully installed. If the installation is successful, the query result as shown in [Figure 1](#fig235815252492) is displayed. + + ``` + scons -v + ``` + + **Figure 1** Successful installation \(SCons version requirement: 3.0.4 or later\) + ![](figure/successful-installation-(scons-version-requirement-3-0-4-or-later)-25.png "successful-installation-(scons-version-requirement-3-0-4-or-later)-25") + + +>![](../public_sys-resources/icon-note.gif) **NOTE:** +>SCons is required for the Hi3861 platform, but not for the Hi3518 or Hi3516 platform. + diff --git a/en/device-dev/bundles/introduction.md b/en/device-dev/bundles/bundles-demo-hpmdescription.md similarity index 100% rename from en/device-dev/bundles/introduction.md rename to en/device-dev/bundles/bundles-demo-hpmdescription.md diff --git a/en/device-dev/bundles/bundles-demo.md b/en/device-dev/bundles/bundles-demo.md new file mode 100644 index 0000000000..846d6b1bde --- /dev/null +++ b/en/device-dev/bundles/bundles-demo.md @@ -0,0 +1,9 @@ +# HPM User Guide + +- **[Introduction](bundles-demo-hpmdescription.md)** + +- **[Preparations](bundles-demo-environment.md)** + +- **[Development Example](bundles-demo-devsample.md)** + + diff --git a/en/device-dev/bundles/bundles-guide-develop.md b/en/device-dev/bundles/bundles-guide-develop.md new file mode 100644 index 0000000000..d7f0fdad1f --- /dev/null +++ b/en/device-dev/bundles/bundles-guide-develop.md @@ -0,0 +1,240 @@ +# Bundle Development + +- [Developing OpenHarmony Bundles](#section1976410130540) +- [Creating a Bundle](#section717481119145) +- [Modifying a Bundle](#section102861955201410) +- [Using HPM-provided Template to Create a Bundle](#section15882846181510) +- [Building a Bundle](#section136732148541) +- [Defining the Building Script](#section10274147111610) +- [Executing the Building Script](#section879301916172) +- [Defining a Distribution](#section413216495619) +- [Defining Scripts](#section11503171219190) +- [Distributing](#section4694125521912) +- [Burning](#section1746331545413) +- [Debugging](#section6742131615549) + +## Developing OpenHarmony Bundles + +You have an option to use any of the following methods to develop OpenHarmony bundles: + +- Develop a brand new bundle from scratch. +- Rewrite code of an existing non-bundle to develop a bundle. +- Use HPM-provided bundle templates to quickly develop a bundle. + +## Creating a Bundle + +Generally, you can find commonly used bundles on the [HPM](https://hpm.harmonyos.com/#/en/home) website. If they cannot meet your requirements, you can develop your own bundles. + +You can publish bundles in the HPM repository if you like, so that your peers have an option to use them. Assume that you want to create a bundle named **my-bundle** in the **D:/source** directory: + +Run the **hpm init** command to create the scaffold code for this bundle. For example, you can go to the **D:/source** directory and run the following command: + +``` +hpm init -t default -d demo my-bundle +``` + +The following files are generated in the **source** directory: + +``` +mybundle +├── bundle.json # Metadata description file of the bundle +├── example # Example of testing bundle functions +│ └── main.c +├── include # Internal header files of the bundle +│ └── mybundle.h +├── README.md # Brief description of the bundle +└── src # Source code of the bundle + └─ mybundle.c +``` + +Then, complete your coding based on service requirements. Finally, use **git** to commit your code \(including the **bundle.json** file\) to the code hosting repository, such as gitee. + +## Modifying a Bundle + +If you have code unqualified for the OpenHarmony bundle structure, modify your code to match an HPM bundle. In the code directory \(for example, **mybundle2**\) storing your code, run the following command with the bundle name and version specified: + +``` +hpm init +``` + +1. Enter a bundle name \(**mybundle2** as an example\) and press **Enter**. +2. Enter the bundle version \(**1.0.0** as an example\) and press **Enter**. A **bundle.json** file is generated in the current bundle directory. +3. Add other descriptions in **bundle.json**, which is publishable. + + ``` + $ hpm init + Your bundle will be created in dirname E:\demo\mybundle2 + ? bundle name mybundel2 + ? version 1.0.0 + Init finished! + ``` + + +1. Modify other information \(such as the author, code repository, code directory, command script, and dependent bundles\) in **bundle.json**. + + ``` + { + "name": "mybundle2", + "version": "1.0.0", + "publishAs": "source", + "dirs":{ + ".":[ + "README.md" + ], + "src":[ + "test.c" + ], + "header":[ + "header/test.h" + ], + "src/common":[ + "src/common/foobar.txt" + ] + }, + "scripts": { + "build": "make -${args}" + }, + "dependencies": { + "@ohos/cjson": "^1.0.0", + "@ohos/": "^1.2.0" + } + } + ``` + + +## Using HPM-provided Template to Create a Bundle + +The HPM provides **default** and **simple** templates as well as other templates that are stored on the server. + +You can run the **hpm search -t template** command to search for a template stored on the server. + +![](figure/en-us_image_0000001051452177.png) + +Then, select your desired template based on the information below **description**, use the selected template to quickly create the bundle scaffold, and run the following command with the **-t** and **-d** parameters specified: + +``` +hpm init -t {templatename} -d dir name +``` + +- **\{templatename\}** indicates the template name. +- **dir** indicates the path for storing the bundle to be created. +- **name** indicates the name of the bundle to be created. + +## Building a Bundle + +After completing code development, you need to build the bundle. The HPM supports command integration so that you can select any build tool \(such as **make**, **gcc**, and **gn**\) suitable for your project. You only need to define the **build** command in the **scripts** in the **bundle.json** file of your project, and then you run the hpm command **build** to perform building. + +## Defining the Building Script + +This section uses how to build an executable file **helloworld** in the **app** directory as an example. + +``` +app +├── BUILD.gn +├── include +│ └── helloworld.h +└── src + └── helloworld.c +``` + +Create a **BUILD.gn** file in the same directory as **helloworld.c**. + +``` +touch BUILD.gn +vim BUILD.gn +``` + +The following is an example of **BUILD.gn** for your reference: + +``` +executable("hello_world") { + sources = [ + "src/helloworld.c" + ] + + include_dirs = [ + "include" + ] +} +``` + +>![](../public_sys-resources/icon-note.gif) **NOTE:** +>- **executable** is a built-in template of **gn**. You can run the **gn help executable** command to view how to use this template. +>- **sources** represents the source code path, and **include\_dirs** represents the header file path. + +## Executing the Building Script + +Run the following command: + +``` +hpm build +``` + +After all building operations are complete, the message "build succeed" is displayed. You need to check the building result. + +![](figure/en-us_image_0000001051770876.png) + +## Defining a Distribution + +A distribution refers to an image file of an executable OpenHarmony solution composed of a group of bundles. It contains many dependent bundles and provides scripts to illustrate how to compile and link these bundles. + +## Defining Scripts + +Define scripts in **bundle.json** as follows: + +``` +{ +"name": "my_dist", +"version": "1.0.0", +"publishAs": "distribution", +"scripts": { +"dist": "make -${args}" + }, +"base": { +"name": "dist-bundle", +"version": "1.0.0" + }, +"envs": { +"args": "x86" + }, +"dependencies": { +} +} +``` + +## Distributing + +Run the following command in the current distribution directory: + +``` +hpm dist +``` + +The **hpm-cli** tool automatically performs compiling and packing, and generates an image file of the **dist** script defined based on **scripts**. The following is an example: + +``` +out +|-xxdist.img +|-xx.file +``` + +## Burning + +The building result of the distribution can be burnt into devices, for example, by using the **hiburn** tool. You need to configure burning parameters in the **bundle.json** file of the distribution. + +``` +"scripts": { +"flash": "{$DEP_HIBURN}/hiburn" +}, +``` + +You should set burning parameters by referring to the specific guide on the burning tool you use. + +``` +hpm run flash +``` + +## Debugging + +Start debugging after you have burnt the image file of the distribution into devices. The debugging process varies according to specific development boards and IDE debugging tools. + diff --git a/en/device-dev/bundles/bundles-guide-overview.md b/en/device-dev/bundles/bundles-guide-overview.md new file mode 100644 index 0000000000..a6d16e00da --- /dev/null +++ b/en/device-dev/bundles/bundles-guide-overview.md @@ -0,0 +1,146 @@ +# Bundle Development + +- [Overview](#section112136415486) +- [Preparations](#section12731192104816) + - [Hardware Requirements](#section71851750144814) + - [Installing Node.js and the hpm-cli Tool](#section675199493) + - [\(Optional\) Modifying HPM Configurations](#section1940205015499) + - [Downloading OpenHarmony Code](#section42591118155217) + - [Installing Dependent Bundles](#section644212530524) + +- [Bundle Development](#section15640113715318) + +## Overview + +This document describes how to develop OpenHarmony bundles and distributions, and how to create, develop, and build code, as well as burn and debug devices by using a command line tool. + +- A bundle usually maps onto a code repository, which is a code archive with the **bundle.json**, **README**, and **LICENSE** files. +- A distribution consists of multiple bundles. Each distribution integrates various bundles of a comprehensive system, such as the driver, kernel, framework, and applications. These bundles can be used for device burning. + +**Table 1** Differences between a bundle and a distribution + + + + + + + + + + + + + + + + + + + + + + + + +

Aspect

+

Bundle

+

Distribution

+

Application scenario

+

Feature-oriented

+

System-oriented

+

Content

+

Codes or a binary library for implementing features

+

List of dependent bundles as well as their compiling and building scripts

+

Integrity

+

A part of the operating system

+

An entire operating system

+

Compilation result

+

Bundles

+

System image

+
+ +**Figure 1** Composition of bundles and distributions + + +![](figure/组件0924.png) + +## Preparations + +### Hardware Requirements + +- Development boards \(examples: Hi3861, Hi3516D V300, and Hi3518E V300\) +- Host computer \(Windows workstation\) +- Linux server + +**Figure 2** Hardware connections +![](figure/hardware-connections-23.png "hardware-connections-23") + +### Installing **Node.js** and the **hpm-cli** Tool + +1. Install **Node.js**. + + Download **Node.js** from its official website and install it on your local PC. + + You are advised to install [Node.js](https://nodejs.org/) 12.x \(including npm 6.14.4\) or a later version \(12.13.0 or later is recommended\). + +2. Install the **hpm-cli** tool using **npm** delivered with **Node.js**. Run the following command: + + ``` + npm install -g @ohos/hpm-cli + ``` + +3. Run the following command to check whether the installation is successful. If an HPM version is displayed, the installation is successful. + + ``` + hpm -V or hpm --version + ``` + +4. \(Optional\) Run the following command to upgrade the HPM version if needed: + + ``` + npm update -g @ohos/hpm-cli + ``` + + +### \(Optional\) Modifying HPM Configurations + +After the **hpm-cli** tool is installed, run the following command to view HPM configurations: + +``` +hpm config +``` + +Default HPM configurations are displayed upon the command execution. You can modify the default configurations as required. The following lists common HPM configurations: + +``` +registry = https://hpm.harmonyos.com/hpm/registry/api # Configure the address of the HPM registry (mandatory for downloading bundles). +login = https://hpm.harmonyos.com/hpm/auth/pk # Configure the address for HPM login (mandatory for publishing bundles). +loginUser = {your-account} # Configure the account for HPM login (mandatory for publishing bundles). +shellPath = C:\WINDOWS\System32\cmd.exe # Configure the shell for running HPM commands. +globalRepo = C:\Users\yourname\.global # Configure the path for storing bundles that are installed globally. +http_proxy = http://your-proxy-server:port # Configure the HTTP proxy. +https_proxy = http://your-proxy-server:port # Configure the HTTPS proxy. +``` + +For details about **hpm-cli** commands, see [HPM Commands](bundles-guide-overview.md). + +### Downloading OpenHarmony Code + +For details, see [Source Code Acquisition](../get-code/sourcecode-acquire.md). + +### Installing Dependent Bundles + +The HPM publishes commonly used development tools \(such as those for burning, compiling, and compression\) as bundles. You can run the following command to install these tools. After the command is executed, the system automatically downloads and installs the tools, which need to be installed globally only once. + +``` +hpm i -g @ohos/llvm +hpm i -g @ohos/ninja +hpm i -g @ohos/gn +hpm i -g @ohos/hc_gen +hpm i -g @ohos/sysroot +``` + +These are a set of development tools \(such as **gn** and **ninja**\). With these tools, you can start your general bundle development based on source code. + +## Bundle Development + diff --git a/en/device-dev/bundles/bundles-guide-prepare.md b/en/device-dev/bundles/bundles-guide-prepare.md new file mode 100644 index 0000000000..f706e2c2f8 --- /dev/null +++ b/en/device-dev/bundles/bundles-guide-prepare.md @@ -0,0 +1,84 @@ +# Preparations + +- [Hardware Requirements](#section98535485518) +- [Installing Node.js and the hpm-cli Tool](#section106591616205311) +- [\(Optional\) Modifying HPM Configurations](#section71821165412) +- [Downloading OpenHarmony Code](#section102338221707) +- [Installing Dependent Bundles](#section19233183315020) + +## Hardware Requirements + +- Development boards \(examples: Hi3861, Hi3516D V300, and Hi3518E V300\) +- Host computer \(Windows workstation\) +- Linux server + +**Figure 1** Hardware connections +![](figure/hardware-connections-24.png "hardware-connections-24") + +## Installing **Node.js** and the **hpm-cli** Tool + +1. Install **Node.js**. + + Download **Node.js** from its official website and install it on your local PC. + + You are advised to install [Node.js](https://nodejs.org/) 12.x \(including npm 6.14.4\) or a later version \(12.13.0 or later is recommended\). + +2. Install the **hpm-cli** tool using **npm** delivered with **Node.js**. Run the following command: + + ``` + npm install -g @ohos/hpm-cli + ``` + +3. Run the following command to check whether the installation is successful. If an HPM version is displayed, the installation is successful. + + ``` + hpm -V or hpm --version + ``` + +4. \(Optional\) Run the following command to upgrade the HPM version if needed: + + ``` + npm update -g @ohos/hpm-cli + ``` + + +## \(Optional\) Modifying HPM Configurations + +After the **hpm-cli** tool is installed, run the following command to view HPM configurations: + +``` +hpm config +``` + +Default HPM configurations are displayed upon the command execution. You can modify the default configurations as required. The following lists common HPM configurations: + +``` +registry = https://hpm.harmonyos.com/hpm/registry/api # Configure the address of the HPM registry, mandatory for downloading bundles. +login = https://hpm.harmonyos.com/hpm/auth/pk # Configure the address for HPM login, mandatory for publishing bundles. +loginUser = {your-account} # Configure the account for HPM login, mandatory for publishing bundles. +shellPath = C:\WINDOWS\System32\cmd.exe # Configure the shell for running HPM commands. +globalRepo = C:\Users\yourname\.global # Configure the path for storing bundles that are installed globally. +http_proxy = http://your-proxy-server:port # Configure the HTTP proxy. +https_proxy = http://your-proxy-server:port # Configure the HTTPS proxy. +``` + +For details about **hpm-cli** commands, see [HPM Commands](bundles-guide-overview.md). + +## Downloading OpenHarmony Code + +For details, see [Source Code Acquisition](../get-code/sourcecode-acquire.md). + +## Installing Dependent Bundles + +The HPM publishes commonly used development tools \(such as those for burning, compiling, and compression\) as bundles. You can run the following command to install these tools. After the command is executed, the system automatically downloads and installs the tools, which need to be installed globally only once. + +``` +hpm i -g @ohos/llvm +hpm i -g @ohos/ninja +hpm i -g @ohos/gn +hpm i -g @ohos/hc_gen +hpm i -g @ohos/sysroot +``` + +These are a set of development tools \(such as **gn** and **ninja**\). With these tools, you can start your general bundle development based on source code. + diff --git a/en/device-dev/bundles/bundles-guide.md b/en/device-dev/bundles/bundles-guide.md new file mode 100644 index 0000000000..162b7be93a --- /dev/null +++ b/en/device-dev/bundles/bundles-guide.md @@ -0,0 +1,9 @@ +# Development Guidelines + +- **[Bundle Development](bundles-guide-overview.md)** + +- **[Preparations](bundles-guide-prepare.md)** + +- **[Bundle Development](bundles-guide-develop.md)** + + diff --git a/en/device-dev/bundles/bundles-standard-rules.md b/en/device-dev/bundles/bundles-standard-rules.md new file mode 100644 index 0000000000..8adaac0e61 --- /dev/null +++ b/en/device-dev/bundles/bundles-standard-rules.md @@ -0,0 +1,549 @@ +# Development Specifications + +- [Overview](#section1725818533344) + - [Definition](#section4821219183514) + - [Bundle Division Principles](#section1089794263513) + - [Bundle Dependency](#section25701647163710) + +- [Bundle Composition](#section185538333914) + - [Code Files](#section8431268393) + - [README File](#section168121548173914) + - [Metadata Description File](#section7107181819406) + +- [Bundle Management](#section32061634104110) + - [Dependency](#section791115242423) + - [HPM Command Reference](#section1183205411429) + +- [Bundle Version](#section12612142864316) + - [Version Number Naming Specifications](#section1487612416432) + - [Version Publishing](#section1548171014440) + +- [Distribution](#section1264139114413) +- [Environment Variables](#section15352105174512) + +## Overview + +This document describes the basic concepts of a bundle and how to define it in compliance with specifications. + +### Definition + +OpenHarmony software is developed on a per-bundle basis. In terms of the operating system, all software running on OpenHarmony are bundles. Generally, bundles are classified into the following types based on their application scopes: + +- Board-level bundles: device hardware-specific bundles, such as **board**, **arch**, and **mcu** +- System-level bundles: a set of bundles with independent features, such as the kernel, file system, and framework +- Application-level bundles: applications that provide services to users, such as **wifi\_iot** and **ip\_camera** + +Bundles are designed for reuse purposes. Any reusable modules can be defined as bundles. They are classified into the following types based on their forms: + +- Source code +- Binary system +- Code snippet +- Distribution + +### Bundle Division Principles + +In principle, bundles should be grouped at a fine-grained granularity as much as possible to achieve maximum reuse. The following factors are taken into account regarding bundle division: + +- Independence: Bundles provide relatively independent features and can be independently built. Each bundle is capable of providing its own APIs and services for external systems. +- Coupling: If a bundle must depend on another bundle to provide services, they can be coupled to one bundle. +- Correlation: If a group of bundles jointly implement a feature, and if other bundles never depend on them, the group of bundles can be combined into one bundle. + +### Bundle Dependency + +A bundle dependency can be mandatory or optional. + +- Mandatory dependency: If bundle A must depend on bundle B to implement a feature \(the APIs or services specific to bundle B must be invoked\), bundle B is a mandatory dependency of bundle A. +- Optional dependency: If bundle C or bundle D is required for bundle A to implement a feature and bundle C and bundle D are interchangeable, bundle C and bundle D are optional dependencies of bundle A. + +## Bundle Composition + +A bundle contains the following: + +- **src** directory for storing code files or code library +- **ohos\_bundles** folder for storing dependent bundles \(It is automatically generated during bundle installation, without the need to submit to the code library.\) +- **README.md** file for describing the bundle +- **bundle.json** file for declaring metadata of the bundle +- **LICENSE** file for open-source code + + ``` + my-bundle + |_ohos_bundles + |_src + |_bundle.json + |_README.md + |_LICENSE + ``` + + +### Code Files + +Bundle code files are the same as those in a common code directory. The only difference lies in the open APIs \(declared in header files\) of a bundle, which are likely to be referenced by other bundles and need to be declared in **dirs** of **bundle.json**. + +### README File + +**README.md** is a bundle self-description file using the markdown syntax. For details, see [Syntax Reference](https://www.markdownguide.org/getting-started/). + +To help you easily find and use the desired bundle on the HarmonyOS Package Manager \(HPM\) platform, a **README** file is provided in the root directory of each bundle. + +The **README** file may include instructions on how to install, configure, and use the instance code in the bundle, as well as any other information helpful to you. + +The **README** file is available in the bundle details page of the HPM platform. + +### Metadata Description File + +The **bundle.json** file describes the metadata of a bundle. Each bundle has its own **bundle.json** file. + +``` +{ + "name": "@myorg/demo-bundle", + "version": "1.0.0", + "license": "MIT", + "description": "bundle description", + "keywords": ["hos"], + "tags": ["applications", "drivers"], + "author": {"name":"","email":"","url":""}, + "contributors":[{"name":"","email":"","url":""},{"name":"","email":"","url":""}], + "homepage": "http://www.foo.bar.com", + "repository": "https://git@gitee.com:foo/bar.git", + "publishAs": "code-segment", + "segment":{ + "destPath":"/the/dest/path" + }, + "dirs": { + "src": ["src/**/*.c"], + "headers": ["headers/**/*.h"], + "bin": ["bin/**/*.o"] + }, + "scripts": { + "build": "make" + }, + "envs": {}, + "ohos": { + "os": "2.0.0", + "board": "hi3516", + "kernel": "liteos-a" + }, + "rom": "10240", + "ram": "1024", + "dependencies": { + "@myorg/net":"1.0.0" + } +} +``` + +Each **bundle.json** file has the following fields: + +- **name**: a bundle name, which starts with @ and is separated by /, for example, **@myorg/mybundle** + +- **version**: a bundle version number, for example, 1.0.0. The version number must comply with the Semantic Versioning Specification \(SemVer\) standards. + +- **description**: a brief description of a bundle +- **dependencies**: bundles that a bundle depends on + +- **envs**: parameters required for bundle compilation, including global parameters and dependency parameters. + +- **scripts**: commands executable to a bundle, such as commands for compiling, building, testing, and burning + +- **publishAs**: bundle publishing type, which can be **source**, **binary**, **distribution**, or **code-segment** + +- **segment**: destination path of the code-segment bundle. That is, the destination path of the files contained in the bundle package after the bundle is installed. +- **dirs**: directory structure \(such as the header file\) generated for publishing + +- **ram&rom**: statistical information about the estimated read-only memory \(ROM\) and random access memory \(RAM\) usage +- **ohos**: mappings among OpenHarmony versions, development boards, and kernels, separated by commas \(,\). +- Extended information: author, home page, code repository, license, tags, and keywords +- **base** \(only for a distribution\): a base distribution which others inherit from. + +## Bundle Management + +### Dependency + +A basic **bundle.json** file needs to be enriched by bundle dependencies to implement more complex features. Bundle names and version numbers should be defined in the **dependencies** field of **bundle.json**. + +``` +{ + "name": "my-bundle", + "version": "1.0.0", + "dependencies": { + "net": "1.0.0" + } +} +``` + +In this example, **my-bundle** depends on **net 1.0.0**. After you globally install the hpm-cli tool, run the following command to obtain bundle dependencies from the remote repository: + +``` +hpm install +``` + +Bundle dependencies are then stored in the **ohos\_bundles** folder in the root directory of the current bundle. A tree structure illustrating the bundle and its dependencies will be generated. You need to run the following command in the root directory of the bundle: + +``` +username@server MINGW64 /f/showcase/demo/demo +$ hpm list ++--demo@1.0.0 +| +--@huawei/media@1.0.2 +| +--@demo/sport_hi3518ev300_liteos_a@1.0.0 +| | +--@demo/app@4.0.1 +| | | +--@demo/build@4.0.1 +| | | +--@demo/arm_harmonyeabi_gcc@4.0.0 +| | +--@demo/liteos_a@4.0.0 +| | | +--@demo/third_party_fatfs@4.0.0 +| | | +--@demo/arm_harmonyeabi_gcc@4.0.0 +| | +--@demo/init@4.0.0 +| | +--@demo/dist_tools@4.0.0 +``` + +Alternatively, you can run the following command to view the dependencies of the current bundle in a visualized way: + +``` +hpm ui +``` + +A web service is started on the local host \(by default, the browser is open and the project page is displayed\). Click the project dependency icon on the sidebar. The list of dependent bundles is displayed. Click the button on the right to switch to the tree view. The bundle dependencies are displayed as shown in the following figure. + +**Figure 1** Bundle dependencies + + +![](figure/en-us_image_0000001173313501.png) + +### HPM Command Reference + +You can use the hpm-cli tool to manage the lifecycle of a bundle. The following table describes available HPM commands. \(You can run the **hpm -h** command to get the command details\). + +**Table 1** HPM commands + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Function

+

Command Line

+

Description

+

Querying version information

+

hpm -V or hpm --version

+

Displays the hpm-cli version number.

+

Querying help information

+

hpm -h or hpm --version

+

Displays the command list and help information.

+

hpm -h

+

Displays command help information.

+

Creating a project

+

+

hpm init bundle

+

Creates a bundle project.

+

hpm init -t template

+

Creates a scaffolding project from a template.

+

Installing bundles

+

+

hpm install or hpm i

+

Installs dependent bundles in the bundle.json file.

+

hpm install bundle@version

+

Installs bundles of a specified version.

+

Uninstalling bundles

+

+

hpm uninstall bundle

+

Uninstalls dependent bundles.

+

hpm remove or hpm rm bundlename

+

Removes dependent bundles.

+

Viewing information

+

+

hpm list or hpm ls

+

Displays the bundle tree of available bundles and distributions.

+

hpm dependencies

+

Generates the dependency relationship data of a bundle or distribution. (This command is also integrated in the HPM UI to display the bundle dependencies intuitively.)

+

Searching for bundles

+

hpm search name

+

Searches for bundles. --json is used to specify the search result in JSON format, and -type is used to set the target type, which can be bundle, distribution, or code-segment.

+

Setting HPM configuration items

+

hpm config set key value

+

Sets configuration items, such as the server address and network proxy.

+

hpm config delete key

+

Deletes configurations.

+

Updating bundle versions

+

+

hpm update

+

Updates the versions of dependent bundles.

+

hpm check-update

+

Checks whether version updates are available to dependent bundles.

+

Building

+

+

hpm build

+

Builds a bundle or distribution.

+

hpm dist

+

Builds a distribution. The build depends on the dist script in scripts of bundle.json.

+

Packing

+

hpm pack

+

Packs dependencies of local bundles.

+

Burning

+

hpm run flash

+

Burns the firmware. The firmware burning depends on the flash script in scripts of bundle.json.

+

Publishing

+

hpm publish

+

Publishes a bundle, which must be unique in the repository and has a unique version. (An account is required for login.)

+

Running extended commands

+

hpm run

+

Runs the commands in scripts defined in bundle.json. Multiple commands can be executed at a time by using &&.

+

Decompressing

+

hpm extract

+

Decompresses files in zip, tar, tgz, or .tar.gz format.

+

Restarting GUI

+

hpm ui

+

Starts the HPM UI locally. You can use the -p parameter to specify a port. On the Windows platform, the default browser is used to open the HPM UI.

+

Changing language

+

hpm lang

+

Alternates between Chinese and English on the CLI and UI.

+

Converting to HPM format

+

hpm x2h

+

Converts a Maven or NPM package to an HPM package and publishes it to the HPM.

+

Code segment restoration or cleanup

+

hpm code clean|restore

+

Clears or restores the dependent code segment (code-segment). That is, copy or delete the code segment based on segment.destPath.

+

Generating a key

+

hpm gen-keys

+

Generates a public-private key pair and configures the public key on the HPM server, which enables password-free hpm-cli login for bundle publishing.

+

Generating third-party open source notice

+

hpm gen-notice

+

Generates a file providing the notice on third-party open source by combining the description of each bundle.

+
+ +## Bundle Version + +### Version Number Naming Specifications + +Each version name allows only lowercase letters, which can be separated by hyphens \(-\) or underscores \(\_\). For example, **bundle** and **my\_bundle** are allowed. + +A bundle version number is in the format of _major version number_._minor version number_._revision version number_ or _major version number_._minor version number_._revision version number_-_pre-release version number_, for example, **1.0.0** and **1.0.0-beta**. For details, see [https://semver.org](https://semver.org/). + +### Version Publishing + +You should upload bundles to the remote repository so that your peers have an option to use them. You can run the following command to upload the bundles: + +``` +hpm publish +``` + +After this command is executed, the system checks the bundle dependencies and downloads the missing dependencies. If the bundles you uploaded are in binary, the system compiles the entire bundle, generates a binary file, packs the file, and uploads it. If the bundles you uploaded are in another format, the system packs the bundle file in compliance with the defined packing rules and then uploads the file. + +Note: To publish a bundle, you need an HPM account for login. After logging in to the HPM platform, register with an organization and apply for authentication. After successful authentication, you will have the permission to publish the bundle. + +## Distribution + +A distribution refers to an image file of an executable OpenHarmony solution composed of a group of bundles. It contains many dependent bundles and provides scripts to illustrate how to compile and link these bundles. + +Generally, a distribution does not require code but contains only the **bundle.json** description \(**publishAs** set to **distribution**\) and some compilation scripts. + +As system-provided environment variables are required during distribution compiling, run the **dist** command in **scripts**. + +``` +{ + "publishAs":"distribution", + "scripts": { + "dist": "script compile command" + } +} +``` + +Run the following command: + +``` +hpm dist +``` + +As it is rather complex to redefine the functionality of a distribution, OpenHarmony allows inheritance from a distribution so that you can make a tailored distribution based on the existing functionality. To inherit from a distribution, you need to define the **base** field in **bundle.json**. + +``` +{ + "base": { + "name": "dist_wifi_iot", + "version": "1.0.0" + } +} +``` + +In this example, the current bundle inherits from the **dist-wifi-iot 1.0.0** bundle of the distribution. + +Each distribution consists of many dependent bundles, which are represented by the **dependencies** field in **bundle.json**. Some dependencies are mandatory, and others can be added or removed required. In the **bundle.json** file, bundle names prefixed with a question mark \(?\) represent optional dependent bundles. If you want to inherit from a distribution involving such bundles, you can remove them and then add other bundles. + +``` +{ + "dependencies": { + "?my_bundle": "1.0.0" + } +} +``` + +In this example, **my\_bundle** is an optional dependent bundle that can be removed by using the keyword **excludes**. + +``` +{ + "excludes": [ "my_bundle" ] +} +``` + +The removed **my-bundle** will not be involved in the build process. If you forcibly remove mandatory dependent bundles, an error message will be displayed. + +## Environment Variables + +During bundle compilation, system-provided environment variables are required to define the output and link the required binary files. These variables are injected into the context for executing scripts based on service requirements. Therefore, their values can be directly obtained from the scripts. The following environment variables are available: + +Global variables are defined by the **envs** attribute in **bundle.json**. All dependent bundles can obtain the values of global variables. + +``` +{ + "envs": { + "compileEnv": "arm" + } +} +``` + +Different parameters can be passed to bundles when introducing dependencies so that the compilation of dependent bundles can meet the requirements of the current bundle. The parameters defined in the dependencies can be obtained from the context for executing the corresponding scripts. + +``` +{ + "dependencies": { + "my-bundle": { + "version": "1.0.0", + "mode": "debug" + } + } +} +``` + +When linking to a binary file, the bundle needs to know the file path regarding the dependencies. Therefore, the path \(as an environment variable\) is passed to the bundle for compiling. + +The passed environment variable is in **DEP\__BundleName_** format, where **BundleName** indicates the name of the dependent bundle, for example, **DEP\_first\_bundle**. + +Tags can be defined to group dependent bundles. You can obtain the path of a group of dependent bundles based on their tag. A tag starts with a number sign \(\#\) and is defined as follows: + +``` +{ + "dependencies": { + "#tool": { + "first-bundle": "1.0.0", + "second-bundle": "1.0.0" + }, + "#drivers": { + "xx-bundle": "1.0.0", + "yy-bundle": "1.0.0" + } + } +} +``` + +There are two fixed environment variables: + +- **DEP\_OHOS\_BUNDLES**: path of the **ohos\_bundles** folder +- **DEP\_BUNDLE\_BASE**: path of the outermost bundle + diff --git a/en/device-dev/bundles/bundles.md b/en/device-dev/bundles/bundles.md new file mode 100644 index 0000000000..21586387bb --- /dev/null +++ b/en/device-dev/bundles/bundles.md @@ -0,0 +1,9 @@ +# Bundle Development + +- **[Development Specifications](bundles-standard-rules.md)** + +- **[Development Guidelines](bundles-guide.md)** + +- **[HPM User Guide](bundles-demo.md)** + + diff --git a/en/device-dev/bundles/development-example.md b/en/device-dev/bundles/development-example.md deleted file mode 100644 index 159de56031..0000000000 --- a/en/device-dev/bundles/development-example.md +++ /dev/null @@ -1,54 +0,0 @@ -# Development Example - -This following uses the Hi3861 platform as an example to describe how to install, compile, and package components by using HPM. - -1. Run the following commands to initialize the installation directory \(whose name can be customized\): - - ``` - mkdir test3861 - cd test3861 - hpm init -t dist - ``` - - If the following information is displayed, the initialization is successful: - - ``` - Initialization finished. - ``` - -2. Run the following command to install the **wifi\_iot** distribution: - - ``` - hpm install @ohos/wifi_iot - ``` - - If the following information is displayed, the installation is successful: - - ``` - Installed. - ``` - - >![](public_sys-resources/icon-note.gif) **NOTE:** - >Run the following command for the Hi3516 platform: - >``` - >hpm install @ohos/ip_camera_hi3516dv300 - >``` - >Run the following command for the Hi3518 platform: - >``` - >hpm install @ohos/ip_camera_hi3518ev300 - >``` - -3. Run the following command to build and package components: - - ``` - hpm dist - ``` - - If the building is successful, the following information is displayed: - - ``` - {{name}}: distribution building completed. - ``` - -4. Check the result in the **./out** directory. You can burn the distribution into the corresponding development board for testing. - diff --git a/en/device-dev/bundles/development-guidelines.md b/en/device-dev/bundles/development-guidelines.md deleted file mode 100644 index 6ae82a8f66..0000000000 --- a/en/device-dev/bundles/development-guidelines.md +++ /dev/null @@ -1,9 +0,0 @@ -# Development Guidelines - -- **[Overview](overview-0.md)** - -- **[Preparations](preparations.md)** - -- **[Bundle Development](bundle-development.md)** - - diff --git a/en/device-dev/bundles/development-specifications.md b/en/device-dev/bundles/development-specifications.md deleted file mode 100644 index 6f583016ab..0000000000 --- a/en/device-dev/bundles/development-specifications.md +++ /dev/null @@ -1,15 +0,0 @@ -# Development Specifications - -- **[Overview](overview.md)** - -- **[Bundle Composition](bundle-composition.md)** - -- **[Bundle Management](bundle-management.md)** - -- **[Bundle Version](bundle-version.md)** - -- **[Distribution](distribution.md)** - -- **[Environment Variables](environment-variables.md)** - - diff --git a/en/device-dev/bundles/distribution.md b/en/device-dev/bundles/distribution.md deleted file mode 100644 index 4269058625..0000000000 --- a/en/device-dev/bundles/distribution.md +++ /dev/null @@ -1,56 +0,0 @@ -# Distribution - -A distribution refers to an image file of an executable OpenHarmony solution composed of a group of bundles. It contains many dependent bundles and provides scripts to illustrate how to compile and link these bundles. - -Generally, a distribution does not require code but contains only the **bundle.json** description \(**publishAs** set to **distribution**\) and some compilation scripts. - -As system-provided environment variables are required during distribution compiling, run the **dist** command in **scripts**. - -``` -{ - "publishAs":"distribution", - "scripts": { - "dist": "script compile command" - } -} -``` - -Run the following command: - -``` -hpm dist -``` - -As it is rather complex to redefine the functionality of a distribution, OpenHarmony allows inheritance from a distribution so that you can make a tailored distribution based on the existing functionality. To inherit from a distribution, you need to define the **base** field in **bundle.json**. - -``` -{ - "base": { - "name": "dist_wifi_iot", - "version": "1.0.0" - } -} -``` - -In this example, the current bundle inherits from the **dist-wifi-iot 1.0.0** bundle of the distribution. - -Each distribution consists of many dependent bundles, which are represented by the **dependencies** field in **bundle.json**. Some dependencies are mandatory, and others can be added or removed required. In the **bundle.json** file, bundle names prefixed with a question mark \(?\) represent optional dependent bundles. If you want to inherit from a distribution involving such bundles, you can remove them and then add other bundles. - -``` -{ - "dependencies": { - "?my_bundle": "1.0.0" - } -} -``` - -In this example, **my\_bundle** is an optional dependent bundle that can be removed by using the keyword "excludes". - -``` -{ - "excludes": [ "my_bundle" ] -} -``` - -After **my-bundle** is removed, it will not be involved in the building process. If you forcibly remove mandatory dependent bundles, an error message will be displayed. - diff --git a/en/device-dev/bundles/environment-variables.md b/en/device-dev/bundles/environment-variables.md deleted file mode 100644 index 933994a681..0000000000 --- a/en/device-dev/bundles/environment-variables.md +++ /dev/null @@ -1,53 +0,0 @@ -# Environment Variables - -During bundle compilation, system-provided environment variables are required to define the output and link the required binary files. These variables are injected into the context for executing scripts based on service requirements. Therefore, their values can be directly obtained from the scripts. Currently, there are global and fixed environment variables in the system. - -Global variables are defined by the **envs** attribute in **bundle.json**. All dependent bundles can obtain the values of global variables. - -``` -{ - "envs": { - "compileEnv": "arm" - } -} -``` - -Different parameters can be passed to bundles when introducing dependencies so that the compilation of dependent bundles can meet the requirements of the current bundle. The parameters defined in the dependencies can be obtained from the context for executing the corresponding scripts. - -``` -{ - "dependencies": { - "my-bundle": { - "version": "1.0.0", - "mode": "debug" - } - } -} -``` - -When linking to a binary file, the bundle needs to know the file path regarding the dependencies. Therefore, the path \(as an environment variable\) is passed to the bundle for compiling. - -The passed environment variable is in **DEP\__BundleName_** format, where **BundleName** indicates the name of the dependent bundle, for example, **DEP\_first-bundle**. - -Tags can be defined to group dependent bundles. You can obtain the path of a group of dependent bundles based on their tag. A tag starts with a number sign \(\#\) and is defined as follows: - -``` -{ - "dependencies": { - "#tool": { - "first-bundle": "1.0.0", - "second-bundle": "1.0.0" - }, - "#drivers": { - "xx-bundle": "1.0.0", - "yy-bundle": "1.0.0" - } - } -} -``` - -There are two fixed environment variables: - -- **DEP\_OHOS\_BUNDLES**: path of the **ohos\_bundles** folder -- **DEP\_BUNDLE\_BASE**: path of the outermost bundle - diff --git a/en/device-dev/bundles/figures/en-us_image_0000001051452177.png b/en/device-dev/bundles/figure/en-us_image_0000001051452177.png similarity index 100% rename from en/device-dev/bundles/figures/en-us_image_0000001051452177.png rename to en/device-dev/bundles/figure/en-us_image_0000001051452177.png diff --git a/en/device-dev/bundles/figures/en-us_image_0000001051770876.png b/en/device-dev/bundles/figure/en-us_image_0000001051770876.png similarity index 100% rename from en/device-dev/bundles/figures/en-us_image_0000001051770876.png rename to en/device-dev/bundles/figure/en-us_image_0000001051770876.png diff --git a/en/device-dev/bundles/figure/en-us_image_0000001173313501.png b/en/device-dev/bundles/figure/en-us_image_0000001173313501.png new file mode 100644 index 0000000000000000000000000000000000000000..52f943be7f91caa887bff689f6c37040858fa8ce GIT binary patch literal 329058 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

( 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