From 67b7b12efc8b1f52e7d0e79c985945555a094618 Mon Sep 17 00:00:00 2001 From: duangavin123 Date: Tue, 29 Jun 2021 16:37:52 +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/get-code/figures/3.png | Bin 0 -> 30610 bytes ...6.png => en-us_image_0000001119755646.png} | Bin ...5.png => en-us_image_0000001119915556.png} | Bin ...4.png => en-us_image_0000001166715379.png} | Bin .../get-code/source-code-acquisition.md | 414 ++--- en/device-dev/get-code/tool-acquisition.md | 23 +- en/release-notes/OpenHarmony-1-1-1-LTS.md | 140 ++ .../figures/zh-cn_image_0000001113910924.png | Bin 113964 -> 0 bytes .../figures/zh-cn_image_0000001114070816.png | Bin 139934 -> 0 bytes .../figures/zh-cn_image_0000001160590725.png | Bin 84033 -> 0 bytes ...20\347\240\201\350\216\267\345\217\226.md" | 87 +- ...67\345\217\226\345\267\245\345\205\267.md" | 10 +- ...\346\234\272\350\277\220\350\241\214-9.md" | 2 +- .../kernel/C++\346\224\257\346\214\201.md" | 86 + .../kernel/CMSIS\346\224\257\346\214\201.md" | 487 +++++ zh-cn/device-dev/kernel/FAT-20.md | 176 ++ zh-cn/device-dev/kernel/IPC.md | 11 + ...04\345\273\272\346\214\207\345\257\274.md" | 6 +- zh-cn/device-dev/kernel/LittleFS.md | 7 + .../kernel/POSIX\346\224\257\346\214\201.md" | 1644 +++++++++++++++++ zh-cn/device-dev/kernel/Readme-CN.md | 251 ++- .../kernel/Trace\350\260\203\346\265\213.md" | 196 ++ .../figures/zh-cn_image_0000001121429646.png | Bin 0 -> 53166 bytes .../figures/zh-cn_image_0000001124146302.png | Bin 0 -> 29367 bytes .../figures/zh-cn_image_0000001124147160.png | Bin 0 -> 25068 bytes .../figures/zh-cn_image_0000001124306828.png | Bin 0 -> 16914 bytes .../figures/zh-cn_image_0000001124307264.png | Bin 0 -> 19498 bytes .../figures/zh-cn_image_0000001124310992.png | Bin 0 -> 12726 bytes .../figures/zh-cn_image_0000001170790681.png | Bin 0 -> 17040 bytes ...4\345\216\237\347\220\206\345\233\276.png" | Bin 0 -> 44317 bytes ...4\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 33454 bytes ...1\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 51242 bytes ...4\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 45092 bytes ...7\345\212\250\346\265\201\347\250\213.png" | Bin 0 -> 41391 bytes ...0\346\236\266\346\236\204\345\233\276.png" | Bin 0 -> 17197 bytes ...0\345\277\203\347\256\227\346\263\225.png" | Bin 0 -> 61957 bytes ...6\347\273\223\346\236\204\345\233\276.png" | Bin 0 -> 32118 bytes ...6\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 28092 bytes ...0\347\244\272\346\204\217\345\233\276.png" | Bin 0 -> 16217 bytes ...55\346\226\255\347\256\241\347\220\206.md" | 7 + .../kernel/\344\272\213\344\273\266.md" | 7 + .../\344\272\222\346\226\245\351\224\201.md" | 7 + ...73\345\212\241\347\256\241\347\220\206.md" | 7 + .../\344\277\241\345\217\267\351\207\217.md" | 7 + .../kernel/\345\206\205\345\255\230.md" | 4 +- ...41\346\201\257\347\273\237\350\256\241.md" | 107 ++ ...04\346\274\217\346\243\200\346\265\213.md" | 128 ++ ...05\345\255\230\347\256\241\347\220\206.md" | 9 + ...05\345\255\230\350\260\203\346\265\213.md" | 11 + ...26\347\240\201\350\247\204\350\214\203.md" | 332 ++++ ...05\346\240\270\350\260\203\346\265\213.md" | 9 + ...50\346\200\201\345\206\205\345\255\230.md" | 227 +++ ...14\345\220\221\351\223\276\350\241\250.md" | 191 ++ ...60\346\215\256\347\273\223\346\236\204.md" | 5 + ...346\234\254\346\246\202\345\277\265-11.md" | 53 + ...346\234\254\346\246\202\345\277\265-13.md" | 21 + ...346\234\254\346\246\202\345\277\265-15.md" | 54 + ...346\234\254\346\246\202\345\277\265-17.md" | 31 + ...\346\234\254\346\246\202\345\277\265-2.md" | 96 + ...346\234\254\346\246\202\345\277\265-21.md" | 82 + ...\346\234\254\346\246\202\345\277\265-4.md" | 17 + ...\346\234\254\346\246\202\345\277\265-5.md" | 52 + ...\346\234\254\346\246\202\345\277\265-7.md" | 19 + ...\346\234\254\346\246\202\345\277\265-9.md" | 67 + ...72\346\234\254\346\246\202\345\277\265.md" | 37 + ...\347\241\200\345\206\205\346\240\270-1.md" | 15 + ...72\347\241\200\345\206\205\346\240\270.md" | 2 +- ...73\347\273\237\345\206\205\346\240\270.md" | 15 + ...345\217\221\346\214\207\345\257\274-10.md" | 199 ++ ...345\217\221\346\214\207\345\257\274-12.md" | 206 +++ ...345\217\221\346\214\207\345\257\274-14.md" | 159 ++ ...345\217\221\346\214\207\345\257\274-16.md" | 218 +++ ...345\217\221\346\214\207\345\257\274-18.md" | 163 ++ ...345\217\221\346\214\207\345\257\274-22.md" | 70 + ...\345\217\221\346\214\207\345\257\274-3.md" | 306 +++ ...\345\217\221\346\214\207\345\257\274-6.md" | 194 ++ ...\345\217\221\346\214\207\345\257\274-8.md" | 205 ++ ...00\345\217\221\346\214\207\345\257\274.md" | 130 ++ ...02\345\270\270\350\260\203\346\265\213.md" | 329 ++++ ...53\351\200\237\345\205\245\351\227\250.md" | 47 + ...51\345\261\225\347\273\204\344\273\266.md" | 9 + ...344\273\266\347\263\273\347\273\237-19.md" | 204 ++ ...07\344\273\266\347\263\273\347\273\237.md" | 2 +- ...66\351\227\264\347\256\241\347\220\206.md" | 7 + ...06\345\272\223\346\224\257\346\214\201.md" | 7 + ...73\347\273\237\345\206\205\346\240\270.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 7 + .../kernel/\347\272\277\347\250\213.md" | 4 +- .../kernel/\347\275\221\347\273\234.md" | 4 +- ...57\206LiteOS-M\345\206\205\346\240\270.md" | 62 + ...05\345\255\230\346\243\200\346\265\213.md" | 85 + ...66\345\256\232\346\227\266\345\231\250.md" | 7 + .../\350\275\273\345\206\205\346\240\270.md" | 11 - ...73\347\273\237\345\206\205\346\240\270.md" | 7 + ...73\347\273\237\345\206\205\346\240\270.md" | 11 + .../kernel/\350\277\233\347\250\213.md" | 4 +- .../kernel/\351\231\204\345\275\225.md" | 9 + ...31\346\200\201\345\206\205\345\255\230.md" | 182 ++ zh-cn/readme.md | 12 +- zh-cn/release-notes/OpenHarmony-1-1-1-LTS.md | 140 ++ 100 files changed, 7747 insertions(+), 414 deletions(-) create mode 100644 en/device-dev/get-code/figures/3.png rename en/device-dev/get-code/figures/{en-us_image_0000001114070816.png => en-us_image_0000001119755646.png} (100%) rename en/device-dev/get-code/figures/{en-us_image_0000001160590725.png => en-us_image_0000001119915556.png} (100%) rename en/device-dev/get-code/figures/{en-us_image_0000001113910924.png => en-us_image_0000001166715379.png} (100%) create mode 100644 en/release-notes/OpenHarmony-1-1-1-LTS.md delete mode 100644 zh-cn/device-dev/get-code/figures/zh-cn_image_0000001113910924.png delete mode 100644 zh-cn/device-dev/get-code/figures/zh-cn_image_0000001114070816.png delete mode 100644 zh-cn/device-dev/get-code/figures/zh-cn_image_0000001160590725.png create mode 100644 "zh-cn/device-dev/kernel/C++\346\224\257\346\214\201.md" create mode 100644 "zh-cn/device-dev/kernel/CMSIS\346\224\257\346\214\201.md" create mode 100644 zh-cn/device-dev/kernel/FAT-20.md create mode 100644 zh-cn/device-dev/kernel/IPC.md create mode 100644 zh-cn/device-dev/kernel/LittleFS.md create mode 100644 "zh-cn/device-dev/kernel/POSIX\346\224\257\346\214\201.md" create mode 100644 "zh-cn/device-dev/kernel/Trace\350\260\203\346\265\213.md" create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001121429646.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001124146302.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001124147160.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001124306828.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001124307264.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001124310992.png create mode 100644 zh-cn/device-dev/kernel/figures/zh-cn_image_0000001170790681.png create mode 100644 "zh-cn/device-dev/kernel/figures/\344\272\213\344\273\266\350\277\220\344\275\234\345\216\237\347\220\206\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\344\272\222\346\226\245\351\224\201\350\277\220\344\275\234\347\244\272\346\204\217\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\344\273\273\345\212\241\347\212\266\346\200\201\347\244\272\346\204\217\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\344\277\241\345\217\267\351\207\217\350\277\220\344\275\234\347\244\272\346\204\217\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\345\206\205\346\240\270\345\220\257\345\212\250\346\265\201\347\250\213.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\345\206\205\346\240\270\346\236\266\346\236\204\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\346\240\270\345\277\203\347\256\227\346\263\225.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\347\256\241\347\220\206\347\273\223\346\236\204\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\345\240\206\346\240\210\345\210\206\346\236\220\345\216\237\347\220\206\347\244\272\346\204\217\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/figures/\351\235\231\346\200\201\345\206\205\345\255\230\347\244\272\346\204\217\345\233\276.png" create mode 100644 "zh-cn/device-dev/kernel/\344\270\255\346\226\255\347\256\241\347\220\206.md" create mode 100644 "zh-cn/device-dev/kernel/\344\272\213\344\273\266.md" create mode 100644 "zh-cn/device-dev/kernel/\344\272\222\346\226\245\351\224\201.md" create mode 100644 "zh-cn/device-dev/kernel/\344\273\273\345\212\241\347\256\241\347\220\206.md" create mode 100644 "zh-cn/device-dev/kernel/\344\277\241\345\217\267\351\207\217.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\345\255\230\344\277\241\346\201\257\347\273\237\350\256\241.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\345\255\230\346\263\204\346\274\217\346\243\200\346\265\213.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\345\255\230\347\256\241\347\220\206.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\345\255\230\350\260\203\346\265\213.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\346\240\270\347\274\226\347\240\201\350\247\204\350\214\203.md" create mode 100644 "zh-cn/device-dev/kernel/\345\206\205\346\240\270\350\260\203\346\265\213.md" create mode 100644 "zh-cn/device-dev/kernel/\345\212\250\346\200\201\345\206\205\345\255\230.md" create mode 100644 "zh-cn/device-dev/kernel/\345\217\214\345\220\221\351\223\276\350\241\250.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\225\260\346\215\256\347\273\223\346\236\204.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-11.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-13.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-15.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-17.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-2.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-21.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-4.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-5.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-7.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-9.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265.md" create mode 100644 "zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270-1.md" rename "zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\345\237\272\347\241\200\345\212\237\350\203\275.md" => "zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270.md" (61%) mode change 100755 => 100644 create mode 100644 "zh-cn/device-dev/kernel/\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-10.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-12.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-14.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-16.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-18.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-22.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-3.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-6.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-8.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274.md" create mode 100644 "zh-cn/device-dev/kernel/\345\274\202\345\270\270\350\260\203\346\265\213.md" create mode 100644 "zh-cn/device-dev/kernel/\345\277\253\351\200\237\345\205\245\351\227\250.md" create mode 100644 "zh-cn/device-dev/kernel/\346\211\251\345\261\225\347\273\204\344\273\266.md" create mode 100644 "zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237-19.md" rename "zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\346\226\207\344\273\266\347\263\273\347\273\237.md" => "zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237.md" (98%) mode change 100755 => 100644 create mode 100644 "zh-cn/device-dev/kernel/\346\227\266\351\227\264\347\256\241\347\220\206.md" create mode 100644 "zh-cn/device-dev/kernel/\346\240\207\345\207\206\345\272\223\346\224\257\346\214\201.md" rename "zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270.md" => "zh-cn/device-dev/kernel/\346\240\207\345\207\206\347\263\273\347\273\237\345\206\205\346\240\270.md" (78%) mode change 100755 => 100644 create mode 100644 "zh-cn/device-dev/kernel/\346\266\210\346\201\257\351\230\237\345\210\227.md" create mode 100644 "zh-cn/device-dev/kernel/\350\256\244\350\257\206LiteOS-M\345\206\205\346\240\270.md" create mode 100644 "zh-cn/device-dev/kernel/\350\270\251\345\206\205\345\255\230\346\243\200\346\265\213.md" create mode 100644 "zh-cn/device-dev/kernel/\350\275\257\344\273\266\345\256\232\346\227\266\345\231\250.md" delete mode 100755 "zh-cn/device-dev/kernel/\350\275\273\345\206\205\346\240\270.md" create mode 100644 "zh-cn/device-dev/kernel/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" create mode 100644 "zh-cn/device-dev/kernel/\350\275\273\351\207\217\347\263\273\347\273\237\345\206\205\346\240\270.md" create mode 100644 "zh-cn/device-dev/kernel/\351\231\204\345\275\225.md" create mode 100644 "zh-cn/device-dev/kernel/\351\235\231\346\200\201\345\206\205\345\255\230.md" create mode 100644 zh-cn/release-notes/OpenHarmony-1-1-1-LTS.md diff --git a/en/device-dev/get-code/figures/3.png b/en/device-dev/get-code/figures/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c99cddf919e6f912aa19c43189f1fdbe895764ac GIT binary patch literal 30610 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 literal 0 HcmV?d00001 diff --git a/en/device-dev/get-code/figures/en-us_image_0000001114070816.png b/en/device-dev/get-code/figures/en-us_image_0000001119755646.png similarity index 100% rename from en/device-dev/get-code/figures/en-us_image_0000001114070816.png rename to en/device-dev/get-code/figures/en-us_image_0000001119755646.png diff --git a/en/device-dev/get-code/figures/en-us_image_0000001160590725.png b/en/device-dev/get-code/figures/en-us_image_0000001119915556.png similarity index 100% rename from en/device-dev/get-code/figures/en-us_image_0000001160590725.png rename to en/device-dev/get-code/figures/en-us_image_0000001119915556.png diff --git a/en/device-dev/get-code/figures/en-us_image_0000001113910924.png b/en/device-dev/get-code/figures/en-us_image_0000001166715379.png similarity index 100% rename from en/device-dev/get-code/figures/en-us_image_0000001113910924.png rename to en/device-dev/get-code/figures/en-us_image_0000001166715379.png diff --git a/en/device-dev/get-code/source-code-acquisition.md b/en/device-dev/get-code/source-code-acquisition.md index 53b228ec16..60c62adeca 100644 --- a/en/device-dev/get-code/source-code-acquisition.md +++ b/en/device-dev/get-code/source-code-acquisition.md @@ -2,22 +2,22 @@ - [About OpenHarmony](#section6370143622110) - [Overview of Source Code Acquisition](#section12763342204) -- [Method 1: Acquiring Source Code from Image Sites](#section1186691118430) -- [Method 2: Acquiring Source Code from the Bundle-specific HPM](#section463013147412) - - [When to Use](#section26661067443) - - [Prerequisites](#section1254674354310) - - [How to Use](#section44161731194418) - -- [Method 3: Acquiring Source Code from a Code Repository](#section537312010229) +- [Method 1: Acquiring Source Code from a Code Repository](#section537312010229) - [When to Use](#section10881513459) - - [Preparations](#section10938122310459) - - [Operations](#section151644112456) + - [Prerequisites](#section102871547153314) + - [How to Use](#section429012478331) +- [Method 2: Acquiring Source Code from HPM](#section463013147412) + - [When to Use](#section26661067443) + - [Prerequisites](#section17544943123315) + - [How to Use](#section954619433333) + +- [Method 3: Acquiring Source Code from Image Sites](#section1186691118430) - [Source Code Directories](#section1072115612811) ## About OpenHarmony -OpenHarmony is an open-source project launched by the OpenAtom Foundation. The purpose of this project is to build an open-source, distributed operating system \(OS\) framework for smart IoT devices in the full-scenario, full-connectivity, and full-intelligence era. +OpenHarmony is an open-source project launched by the OpenAtom Foundation. The purpose of this project is to build an open, distributed operating system \(OS\) framework for smart IoT devices in the full-scenario, full-connectivity, and full-intelligence era. The open-source code repositories are available at [https://openharmony.gitee.com](https://openharmony.gitee.com). @@ -28,11 +28,171 @@ The open-source code repositories are available at [https://openharmony.gitee.c This document describes how to acquire OpenHarmony source code and provides its directory structure. The OpenHarmony code is open to you as [bundles](../bundles/overview.md), which can be obtained in any of the following ways: -- **Method 1**: Download the compressed file of a distribution from an image site. To obtain the source code of an earlier version, you are also advised to use this method. +- **Method 1**: Acquire the source code from a code repository. You can use the **repo** or **git** tool to download the latest code from the code repository. - **Method 2**: Obtain the source code from the HarmonyOS Package Manager \(HPM\). Visit the [HPM](https://hpm.harmonyos.com/#/en/home) website, search for your desired open-source distribution, and download the bundle list \(or customize bundles and download the bundle list\). Then use **hpm-cli** to download and install the bundles and compilation toolchain on your local PC. -- **Method 3**: Use the **repo** or **git** tool to download your desired code from the code repository. +- **Method 3**: Download the compressed file of a distribution from an image site. This method provides a fast download speed, so you can also use this method for obtaining the source code of an earlier version. + +## Method 1: Acquiring Source Code from a Code Repository + +### When to Use + +- You want to establish a baseline based on stable OpenHarmony releases and distribute the baseline to your customers. + +- You have interconnected your software with OpenHarmony and need official certification from OpenHarmony. + +- You want to contribute code to the OpenHarmony community after chips, modules, and applications are certified by OpenHarmony. + +- You need to address OpenHarmony issues. + +- You want to learn OpenHarmony source code. + + +### Prerequisites + +1. Register your account with Gitee. +2. Register an SSH public key for access to Gitee. +3. Install the [git client](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)), and configure basic user information. + + ``` + git config --global user.name "yourname" + git config --global user.email "your-email-address" + git config --global credential.helper store + ``` + +4. Run the following commands to install the **repo** tool: + + ``` + curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo # If you do not have the access permission to this directory, download the tool to any other accessible directory and configure the directory to the environment variable. + chmod a+x /usr/local/bin/repo + pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests + ``` + -## Method 1: Acquiring Source Code from Image Sites +### How to Use + +**Obtaining the Source Code for Mini, Small, and Standard Systems \(2.0 Canary\)** + +>![](public_sys-resources/icon-note.gif) **NOTE:** +>You can obtain the latest features from the master code, and develop commercial functionalities based on the release code, which is more stable. + +- **Obtaining OpenHarmony master code** + + Method 1 \(recommended\): Use the **repo** tool to download the source code over SSH. \(You must have registered an SSH public key for access to Gitee.\) + + ``` + repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + + Method 2 \(recommended\): Use the **repo** tool to download the source code over HTTPS. + + ``` + repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + + +- **Obtaining Latest OpenHarmony\_1.0.1\_release code** + + >![](public_sys-resources/icon-note.gif) **NOTE:** + >Currently, only the source code for mini and small systems can be obtained through this release. + + Use the **repo** tool to download the release code. + + ``` + repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify + repo sync -c + repo forall -c 'git lfs pull' + ``` + +- Obtaining the source code of other OpenHarmony releases + + For details about how to obtain the source code of other releases, see the [Release Notes](https://gitee.com/openharmony/docs/blob/master/en/release-notes/OpenHarmony-Release-Notes.md). + + +## Method 2: Acquiring Source Code from HPM + +### When to Use + +If OpenHarmony is new to you, sample solutions are helpful to your development. You can obtain an open-source distribution from the [HPM](https://hpm.harmonyos.com/#/en/home) website, or customize a distribution by adding or deleting bundles of an open-source distribution. Then use **hpm-cli** to download and install the bundles and compilation toolchain on your local PC. + +### Prerequisites + +You must install **Node.js** and HPM on your local PC. The installation procedure is as follows: + +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**. + + Open the CMD window and run the following command: + + ``` + npm install -g @ohos/hpm-cli + ``` + +3. Run the following command to check whether the installation is successful. If the HPM version is displayed, the installation is successful. + + ``` + hpm -V or hpm --version + ``` + +4. Run the following command to upgrade the HPM version: + + ``` + npm update -g @ohos/hpm-cli + ``` + + +### How to Use + +1. Search for distributions. + 1. Access the [HPM](https://hpm.harmonyos.com/#/en/home) page, and click the **Distribution** tab, as shown in the following figure. + 2. Enter a keyword \(for example: **camera**\) in the search box. All matched distributions are found. + 3. Specify filter criteria, such as the bundle type \(for example: **Board support** and **Kernel support**\), to further filter the distributions. + 4. Locate your desired distribution and click it to view details. + + **Figure 1** HPM page + + + ![](figures/en-us_image_0000001119915556.png) + + +2. Learn more about the distribution. + + 1. Read carefully the information about the distribution to learn its application scenarios, features, bundles, usage, and customization methods, as shown in the following figure. + 2. Click **Download** to download the distribution to your local PC. + 3. Click **Custom** to add or delete bundles of the distribution. + + **Figure 2** Example distribution + + + ![](figures/en-us_image_0000001119755646.png) + +3. Customize bundles. + 1. Access the **Custom solution** page, as shown in the following figure. + 2. Set the toggle switch next to a specific optional bundle to delete it from the distribution, or click **Add bundle** to add new bundles. + 3. Enter the basic information about your project, including the bundle name, version, and description, on the right pane. + 4. Click **Download**. The system then generates the OpenHarmony code structure file \(for example, **my\_cust\_dist.zip**\) and saves it to your local PC. + + **Figure 3** Customizing bundles + + + ![](figures/en-us_image_0000001166715379.png) + + +4. Download and install bundles. + 1. Decompress the downloaded file using the CLI tool CMD \(shell in Linux\). + 2. In the generated directory, run the **hpm install** command. + 3. The downloaded bundles are stored in the **ohos\_bundles** folder under the project directory. \(The source code of some bundles will be copied to a specified directory after the bundles are installed.\) + + +## Method 3: Acquiring Source Code from Image Sites To ensure the download performance, you are advised to download the source code or the corresponding solution from the image library of the respective site listed in the table below. @@ -52,47 +212,47 @@ To ensure the download performance, you are advised to download the source code

SHA-256 Verification Code

-

Full code base

+

Full code (for mini and small systems)

-

1.1.0

+

1.1.1

-

Download

+

Download

-

Download

+

Download

Hi3861 solution (binary)

-

1.1.0

+

1.1.1

-

Download

+

Site

-

Download

+

Download

Hi3518 solution (binary)

-

1.1.0

+

1.1.1

Download

-

Download

+

Download

Hi3516 solution (binary)

-

1.1.0

+

1.1.1

-

Download

+

Download

-

Download

+

Download

RELEASE-NOTES

-

1.1.0

+

1.1.1

-

Download

+

Download

-

@@ -101,12 +261,12 @@ To ensure the download performance, you are advised to download the source code

Version Information

-

Site

+

Site

-

SHA-256 Verification Code

+

SHA-256 Verification Code

-

Full code base

+

Full code (for standard systems)

2.0 Canary

@@ -115,7 +275,7 @@ To ensure the download performance, you are advised to download the source code

Download

-

Full code base

+

Full code (for mini and small systems)

1.0 (no longer maintained)

@@ -164,7 +324,7 @@ To ensure the download performance, you are advised to download the source code

Version Information

-

Site

+

Site

SHA-256 Verification Code

@@ -181,196 +341,6 @@ To ensure the download performance, you are advised to download the source code -## Method 2: Acquiring Source Code from the Bundle-specific HPM - -### When to Use - -If OpenHarmony is new to you, sample solutions are helpful to your development. You can obtain an open-source distribution from the [HPM](https://hpm.harmonyos.com/#/en/home) website, or customize a distribution by adding or deleting bundles of an open-source distribution. Then use **hpm-cli** to download and install the bundles and compilation toolchain on your local PC. - -### Prerequisites - -You must install **Node.js** and HPM on your local PC. The installation procedure is as follows: - -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**. - - Open the CMD window and run the following command: - - ``` - npm install -g @ohos/hpm-cli - ``` - -3. Run the following command to check whether the installation is successful. If the HPM version is displayed, the installation is successful. - - ``` - hpm -V or hpm --version - ``` - -4. Run the following command to upgrade the HPM version: - - ``` - npm update -g @ohos/hpm-cli - ``` - - -### How to Use - -1. Search for distributions. - 1. Access the [HPM](https://hpm.harmonyos.com/#/en/home) page, and click the **Distribution** tab, as shown in the following figure. - 2. Enter a keyword \(for example: **camera**\) in the search box. All matched distributions are found. - 3. Specify filter criteria, such as the bundle type \(for example: **Board support** and **Kernel support**\), to further filter the distributions. - 4. Locate your desired distribution and click it to view details. - - **Figure 1** HPM page - - - ![](figures/en-us_image_0000001160590725.png) - - -2. Learn more about the distribution. - - 1. Read carefully the information about the distribution to learn its application scenarios, features, bundles, usage, and customization methods, as shown in the following figure. - 2. Click **Download** to download the distribution to your local PC. - 3. Click **Custom** to add or delete bundles of the distribution. - - **Figure 2** Example distribution - - - ![](figures/en-us_image_0000001114070816.png) - -3. Customize bundles. - 1. Access the **Custom solution** page, as shown in the following figure. - 2. Set the toggle switch next to a specific optional bundle to delete it from the distribution, or click **Add bundle** to add new bundles. - 3. Enter the basic information about your project, including the bundle name, version, and description, on the right pane. - 4. Click **Download**. The system then generates the OpenHarmony code structure file \(for example, **my\_cust\_dist.zip**\) and saves it to your local PC. - - **Figure 3** Customizing bundles - - - ![](figures/en-us_image_0000001113910924.png) - - -4. Download and install bundles. - 1. Decompress the downloaded file using the CLI tool CMD \(shell in Linux\). - 2. In the generated directory, run the **hpm install** command. - 3. The downloaded bundles are stored in the **ohos\_bundles** folder under the project directory. \(The source code of some bundles will be copied to a specified directory after the bundles are installed.\) - - -## Method 3: Acquiring Source Code from a Code Repository - -### When to Use - -- You want to establish a baseline based on stable OpenHarmony releases and distribute the baseline to your customers. - -- You have interconnected your software with OpenHarmony and need official certification from OpenHarmony. - -- You want to contribute code to the OpenHarmony community after chips, modules, and applications are certified by OpenHarmony. - -- You need to address OpenHarmony issues. - -- You want to learn OpenHarmony source code. - - -### Preparations - -1. Register your account with Gitee. -2. Register an SSH public key for access to Gitee. -3. Install the [git client](http://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)), and configure basic user information. - - ``` - git config --global user.name "yourname" - git config --global user.email "your-email-address" - git config --global credential.helper store - ``` - -4. Run the following commands to install the **repo** tool: - - ``` - curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo # If you do not have the access permission to this directory, download the tool to any other accessible directory and configure the directory to the environment variable. - chmod a+x /usr/local/bin/repo - pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests - ``` - - -### Operations - -**Obtaining the Source Code for Mini and Small Systems** - ->![](public_sys-resources/icon-note.gif) **NOTE:** ->You can obtain the latest features from the master code, and develop commercial functionalities based on the release code, which is more stable. - -- **Obtaining OpenHarmony master code** - - Method 1 \(recommended\): Use the **repo** tool to download the master code. - - ``` - repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify - repo sync -c - repo forall -c 'git lfs pull' - ``` - - Method 2: Run the **git clone** command to clone a single code repository. - - Go to the [code repository homepage](https://gitee.com/openharmony), select the code repository to be cloned, and run the following command: - - ``` - git clone https://gitee.com/openharmony/manifest.git -b master - ``` - - -- **Obtaining OpenHarmony\_1.0.1\_release code** - - Use the **repo** tool to download the release code. - - ``` - repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify - repo sync -c - repo forall -c 'git lfs pull' - ``` - -- Obtaining the source code of other OpenHarmony releases - - For details about how to obtain the source code of other releases, see the [Release Notes](https://gitee.com/openharmony/docs/blob/master/en/release-notes/OpenHarmony-Release-Notes.md). - - -**Obtaining the Source Code for Standard Systems \(2.0 Canary\)** - -1. Create an OpenHarmony working directory. - - ``` - mkdir OpenHarmony - ``` - -2. Go to the OpenHarmony working directory. - - ``` - cd OpenHarmony - ``` - -3. Initialize the repository. - - ``` - repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify - ``` - -4. Update the code. - - ``` - repo sync -c - ``` - -5. Update the binary files. - - ``` - repo forall -c 'git lfs pull' - ``` - - ## Source Code Directories The following table describes the OpenHarmony source code directories. diff --git a/en/device-dev/get-code/tool-acquisition.md b/en/device-dev/get-code/tool-acquisition.md index bd8a78e396..ddfc607243 100644 --- a/en/device-dev/get-code/tool-acquisition.md +++ b/en/device-dev/get-code/tool-acquisition.md @@ -36,7 +36,7 @@ OpenHarmony provides the following two types of Docker environments for you to q

swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker

-

0.0.3

+

0.0.5

The OpenHarmony build environment has been pre-installed. This repository applies to Mini-System Devices (reference memory ≥ 128 KB) and Small-System Devices (reference memory ≥ 1 MB).

@@ -78,7 +78,7 @@ Start building. Docker can be automatically installed only on Ubuntu. If you are - **Automatically Installing Docker \(Ubuntu\)** - Running the following command will automatically install the Docker, pull the image, and start the pulling and building of the corresponding solution in the container. + Running the following command will automatically install Docker, pull the Docker image, and start the pulling and building of the corresponding solution in the container. Method 1: @@ -123,8 +123,7 @@ Start building. Docker can be automatically installed only on Ubuntu. If you are ``` # Pull the image. - docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3 - # Build the distribution on Linux. + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3# Compile the Docker image in the Linux environment. hpm run distWithDocker solution={product} # When using Windows, make sure to configure the Git Bash. hpm config set shellPath "Git Bash path" @@ -134,22 +133,22 @@ Start building. Docker can be automatically installed only on Ubuntu. If you are ## Standalone Docker Environment -The Docker image of OpenHarmony is hosted on [HUAWEI Cloud SWR](https://auth.huaweicloud.com/authui/login.html?service=https%3A%2F%2Fconsole.huaweicloud.com%2Fswr%2F%3Fregion%3Dcn-south-1%26cloud_route_state%3D%2Fapp%2Fwarehouse%2FwarehouseMangeDetail%2Fgoldensir%2Fopenharmony-docker%2Fopenharmony-docker%3Ftype%3DownImage&locale=en-us#/login). Using the Docker image will help simplify environment configurations needed for the building. After configuring the development environments, perform the procedures below to access the Docker environment. Both Ubuntu and Windows are supported. The following procedures use Ubuntu as an example. +The Docker image of OpenHarmony is hosted on [HUAWEI CLOUD SWR](https://console.huaweicloud.com/swr/?region=cn-south-1&locale=en-us#/app/warehouse/warehouseMangeDetail/goldensir/openharmony-docker/openharmony-docker?type=ownImage). Using the Docker image will help simplify environment configurations needed for the building. After configuring the development environments, perform the procedures below to access the Docker environment. Both Ubuntu and Windows are supported. The following procedures use Ubuntu as an example. ### Setting Up the Docker Environment for Mini-System Devices \(reference memory ≥ 128 KB\) and Small-System Devices \(reference memory ≥ 1 MB\) -**Method 1: Obtaining the Docker image from HuaweiCloud SWR** +**Method 1: Obtaining the Docker image from HUAWEI CLOUD SWR** 1. Obtain the Docker image. ``` - docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3 + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 ``` 2. Go to the root directory of OpenHarmony code and run the following command to access the Docker build environment: ``` - docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3 + docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 ``` @@ -171,7 +170,7 @@ The Docker image of OpenHarmony is hosted on [HUAWEI Cloud SWR](https://auth.hu 3. Go to the root directory of OpenHarmony code and run the following command to access the Docker build environment: ``` - docker run -it -v $(pwd):/home/openharmony openharmony-docker:0.0.3 + docker run -it -v $(pwd):/home/openharmony openharmony-docker:0.0.5 ``` @@ -211,7 +210,7 @@ hb set ### Setting Up the Docker Environment for Standard-System Devices \(reference memory ≥ 128 MB\) -**Method 1: Obtaining the Docker image from HuaweiCloud SWR** +**Method 1: Obtaining the Docker image from HUAWEI CLOUD SWR** 1. Obtain the Docker image. @@ -274,6 +273,10 @@ hb set HUAWEI DevEco Device Tool is a one-stop integrated development environment \(IDE\) provided to develop applications for OpenHarmony-based smart devices. It allows on-demand customization of OpenHarmony components, code editing, compilation, burning, and debugging, and supports C and C++ languages. This tool is installed in Visual Studio Code as a plug-in. For details, see [Tool Acquisition](https://device.harmonyos.com/en/ide) and [HUAWEI DevEco Device Tool User Guide](https://device.harmonyos.com/en/docs/ide/user-guides/service_introduction-0000001050166905). +The roadmap of Huawei DevEco Device Tool for supporting OpenHarmony device development is shown in the figure below. + +![](figures/3.png) + ## Acquiring the Application Development Tool \(HUAWEI DevEco Studio\) HUAWEI DevEco Studio \(DevEco Studio for short\) is a one-stop IDE oriented to Huawei devices in all scenarios. It provides E2E OpenHarmony application development services, ranging from project template creation to development, compilation, debugging, and release. With DevEco Studio, you will be able to efficiently develop OpenHarmony applications with distributed capabilities while speeding up innovation. For details, see [Tool Acquisition](https://developer.harmonyos.com/en/develop/deveco-studio) and [HUAWEI DevEco Studio User Guide](https://developer.harmonyos.com/en/docs/documentation/doc-guides/tools_overview-0000001053582387). diff --git a/en/release-notes/OpenHarmony-1-1-1-LTS.md b/en/release-notes/OpenHarmony-1-1-1-LTS.md new file mode 100644 index 0000000000..1cdf525c59 --- /dev/null +++ b/en/release-notes/OpenHarmony-1-1-1-LTS.md @@ -0,0 +1,140 @@ +# OpenHarmony 1.1.1 LTS \(2021-06-22\) + +- [Version Description](#section1846294912228) +- [Source Code Acquisition](#section84808293211) + - [Acquiring Source Code from Image Sites](#section8394142222113) + - [Acquiring Source Code Using the repo Tool](#section7180193542317) + +- [What's New](#section175225345334) + +## Version Description + +This is an updated long-term support \(LTS\) version of OpenHarmony. It supports more functions and fixes some bugs in OpenHarmony 1.1.0. + +## Source Code Acquisition + +### Acquiring Source Code from Image Sites + +**Table 1** Sites for acquiring source code + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Source Code

+

Version

+

Site

+

SHA-256 Verification Code

+

Full code base

+

1.1.1

+

Site

+

Download

+

Hi3861 solution (binary)

+

1.1.1

+

Site

+

Download

+

Hi3518 solution (binary)

+

1.1.1

+

Site

+

Download

+

Hi3516 solution (binary)

+

1.1.1

+

Site

+

Download

+

Release Notes

+

1.1.1

+

Site

+

-

+
+ +### Acquiring Source Code Using the repo Tool + +Run the following commands to download the source code: + +repo init -u [https://gitee.com/openharmony/manifest.git](https://gitee.com/openharmony/manifest.git) -b refs/tags/OpenHarmony-v1.1.1-LTS --no-repo-verify + +## What's New + +This version inherits all features of OpenHarmony 1.1.0, and fixes bugs and optimizes performance for different modules based on OpenHarmony 1.1.0. The following table lists the updates. + +**Table 2** Version updates + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Type

+

Description

+

Communications

+
  • Updated data classes of some STA related functions, and added innerkits APIs of some AP related functions
  • Added innerkits APIs for Bluetooth-related functions, including GATT related operations of BLE devices, BLE broadcast, and scanning.
+

Security

+
  • Removed device authentication so callers can use bound capabilities alone.
  • Allowed device authentication removed from Huawei Universal Keystore Service (HUKS).
+

Kernel

+
  • Fixed the bug of unavailable kernel stack backtracking of the system image built using Clang.
  • Fixed the bug of improper comparison between signed numbers and unsigned numbers during scheduling.
  • Fixed the bug of memory overwriting because setitimer does not hold the scheduler lock when periodically sending signals to the process.
  • Added adaptation to the kernel's POSIX APIs for lwIP.
  • Fixed the bug of unexpected signal execution sequence after sigsuspend in sigaction is called; fixed the bug so that the signal mask field passed by the developer is now masked during signal registration.
+

Driver

+
  • Corrected the compilation error on liteos_m.
  • Fixed MMC crashes.
+

AI

+
  • Added support for shared memory.
  • Added adaptation to the Linux kernel.
  • Disabled asynchronous call for the synchronous algorithm.
  • Added gitignore and CMakeLists.
+

Graphics

+
  • Fixed the bug that occurs when the endpoint style is enabled for circle progress.
  • Resolved issues related to the sensitivity and direction of crown rotation.
  • Added the feature of automatic alignment with the animation time for UIList.
  • Provided correct width for GetTextWidth in UILabel when LineBreakMode is set to LINE_BREAK_ELLIPSIS.
  • Added new style attributes to the Slider component.
  • Added the API for setting loops to the UITimePicker component.
  • Fixed the bug of abnormal Neon rotation and scaling display that results from optimization of fixed-point numbers.
  • Rectified the improper newline issue that occurs when a string contains multiple newlines.
  • Fixed the bug of the blurred screen of watch pointers.
+

Globalization

+
  • Added the Ed and MEd templates for data and time formatting.
+

ACE framework

+
  • Fixed the bug of abnormal click events on the checkbox and radio buttons.
  • Fixed JavaScript application crashes when list and if are used.
  • Normalized the styles of the <slider> component.
  • Added swiping loops for the <picker-view> component.
  • Fixed the bug of in-the-middle display of child components when align-item is set to stretch.
+
+ diff --git a/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001113910924.png b/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001113910924.png deleted file mode 100644 index 6dea0571ab21041f89fbb47f9fa49a7a6da5aee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113964 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

6}HxH49Q zQmK7sBHI1ds=wDJo_OJjchUY&XbYjJ&`Y50Sgf;_GN7vXwh)`8mFSybSNwTb9%FQM z4ZvltbitTsU%A>@;KJfFqYNjelkV7le)(Ty86!~UD_ zA@1gp7BH}0$nN$PH&LbiOVN0);zJqeFCD5C{?5CFn~C{pLr7LS2@cz^T^AZb+Y$Pd zM#Jt=DNL_58pW3)DNjM;m770w3SNXtZ`1!!p5x%>7g7NSglsxA6-e{PY&E35Jg*I% z`ijFlCWIw?{|kQIuv>xzG!P$!-+*i2&%A{clTk<+;pAZjuC2aPX9~4cGGC?7yGd_d z(bFzC;Hgfg1o(9IG_<0egt=&Vt~vulM4^lZuz9lFia29dzt$^g^Ne((Byon~52A5- zj%F)y5Dp+-Yk)$`l|EIGu)FEf0*Llp>jS$d#FlT??1~3*CBrEMnkqx;R8^8oll)35nKLm5Un^JC-x$x}P%(ILi zQ4G9j|0wOI|Fy6)eqEvj@;+5gvSmDX*oCwUK%TJke@5a;oI+iICcg?pReVHIL~Atp zJqRy?JlXcERm833caWa!qV$@)lOUmld$iOGY12%Hs}nNoG$zEDCe@|%TUu@ueku4a zcnDGaG_)V13CUr*yvB0^IcWP6>vV#T7lz3uqU!hBfYxo&*8nMlH$-1fpTG?=wK;6$ zVP7`({sm+m?F6)LTO|pYVoq4>eo0&{Qg+CNNUS7sAet^UfAG^=K`E@N+G?|pJQ5dW zsR50Y$smb7OeIZ0hF4!jbJX?FLXAm!-P67i6gid+f!MEO&J0e)9+g5-Ec%w6T0+hS zB{yE5Ac>50ib18fC$3@rJXA*ta%j z7PY$o7KU@O8CvChqmYmG$}BakKse)~!Zl=9M@$sb#MD6AuG4C;;wROnIigL>=t#Ug z@y{!%65kq0PPbQYe+DKqq)S^w9!w!YFNd z2rooQGmwo$1dGYCnF5=7LPoiDP7qZ<`5GfKDpxGt{u6o`;+DROd5;ofZ=WwON zQ664VMSZ*`%)mRBzq>i%j4QwScp0;!-w<3tbs0R!W`^v9+OJOjW2yM~2Us+xBukj1 znD)q_v{imREvjglY=koR5Nt{Z%vs%Uwo$4H=_TG|=H|7ooidC1{@tPSXk|)S$Jhw+c+E z=mNI9I*ccv#=%|<)YNEl=0X_3kGSVdZ1=85d8^=4ErY;Iv_!r3WT+#&4HiQkEEu zis7mFSl$1eu&o}({(h|8uls#p?zL>*+ROvSpL-ddj~G`F)Z}xH|MZf=%0C zL;Sx4UIO+f>)a|qwwm*{S;BBN`r?9JYitj)C zZy9WoU@mu>a?S1^s83k*0re8tKLOK~VU;?tZz1cY|9?(M{6k@5o=~(X{;-zaU6=GJ P;J>Y#Y&NEEAfEj{F|m9~ diff --git a/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001114070816.png b/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001114070816.png deleted file mode 100644 index 49e517a76ad01d207f50374b9599e702e7f7d51c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139934 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

t&vtK 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 diff --git a/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001160590725.png b/zh-cn/device-dev/get-code/figures/zh-cn_image_0000001160590725.png deleted file mode 100644 index c0f1a0a961887f540f67e2550c03bc39f5bbcb6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84033 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 1. 注册码云gitee账号。 -2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4181)。 -3. 安装[git客户端](http://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。 +2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。 +3. 安装[git客户端](http://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading))并配置用户信息。 ``` git config --global user.name "yourname" @@ -70,73 +70,46 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及 ### 操作步骤 -**获取轻量系统/小型系统源码** +**获取轻量/小型/标准系统(2.0 Canary)源码** >![](public_sys-resources/icon-note.gif) **说明:** >主干代码为开发分支,开发者可通过主干代码获取最新特性。release分支代码相对比较稳定,开发者可基于release分支代码进行商用功能开发。 - **OpenHarmony主干代码获取** - 方式一(推荐):通过repo下载 + 方式一(推荐):通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。 ``` - repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify + repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify repo sync -c repo forall -c 'git lfs pull' ``` - 方式二:通过git clone单个代码仓库 - - 进入[代码仓库主页](https://gitee.com/openharmony),选择需要克隆的代码仓库,执行命令,如: - - ``` - git clone https://gitee.com/openharmony/manifest.git -b master - ``` - - -- **OpenHarmony release 分支代码获取** - - 通过repo下载 + 方式二:通过repo + https 下载。 ``` - repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify - repo sync -c + repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify + repo sync -c repo forall -c 'git lfs pull' ``` -- **OpenHarmony** 其他版本源码获取方式请参考版本[Release-Notes](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-Release-Notes.md)。 -**获取标准系统源码(2.0 Canary)** +- **OpenHarmony release 分支最新代码获取** -1. 创建并切换到OpenHarmony工作目录。 + >![](public_sys-resources/icon-note.gif) **说明:** + >当前通过release分支只能获取轻量和小型系统源码。 - ``` - mkdir OpenHarmony - cd OpenHarmony - ``` - -2. repo初始化。 - - ``` - repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify - # 使用此命令初始化时,可能会因为网络慢的问题导致代码更新失败,可以尝试以下命令来初始化: - repo init -u https://gitee.com/openharmony/manifest.git -b ssh/master --no-repo-verify - ``` - -3. 更新代码。 - - ``` - repo sync -c - ``` - -4. 更新二进制。 + 通过repo下载。 ``` + repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony_1.0.1_release --no-repo-verify + repo sync -c repo forall -c 'git lfs pull' ``` +- **OpenHarmony** 其他版本源码获取方式请参考版本[Release-Notes](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-Release-Notes.md)。 -## 获取方式2:从HPM(包管理器)组件式获取 +## 获取方式2:从HPM获取 ### 适用场景 @@ -238,45 +211,45 @@ OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及

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

-

1.1.0

+

1.1.1

-

站点

+

站点

-

SHA256 校验码

+

SHA256 校验码

Hi3861解决方案(二进制)

-

1.1.0

+

1.1.1

-

站点

+

站点

-

SHA256 校验码

+

SHA256 校验码

Hi3518解决方案(二进制)

-

1.1.0

+

1.1.1

站点

-

SHA256 校验码

+

SHA256 校验码

Hi3516解决方案(二进制)

-

1.1.0

+

1.1.1

-

站点

+

站点

-

SHA256 校验码

+

SHA256 校验码

RELEASE-NOTES

-

1.1.0

+

1.1.1

-

站点

+

站点

-

diff --git "a/zh-cn/device-dev/get-code/\350\216\267\345\217\226\345\267\245\345\205\267.md" "b/zh-cn/device-dev/get-code/\350\216\267\345\217\226\345\267\245\345\205\267.md" index a67fe6edb6..13556b4803 100755 --- "a/zh-cn/device-dev/get-code/\350\216\267\345\217\226\345\267\245\345\205\267.md" +++ "b/zh-cn/device-dev/get-code/\350\216\267\345\217\226\345\267\245\345\205\267.md" @@ -36,7 +36,7 @@ OpenHarmony为开发者提供了两种Docker环境,以帮助开发者快速完

swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker

-

0.0.4

+

0.0.5

已经预安装OpenHarmony版本的编译环境,支持轻量系统类设备(参考内存≥128KB)小型系统类设备(参考内存≥1MB)的版本构建。

@@ -123,7 +123,7 @@ docker\_dist是一个[HPM](https://hpm.harmonyos.com/)系统中的模板组件 ``` # 拉取镜像 - docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4# linux环境下的编译 + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.3# linux环境下的编译 hpm run distWithDocker solution={product} # windows下的编译,需要配置gitbash hpm config set shellPath "gitbash路径" @@ -142,13 +142,13 @@ OpenHarmony的Docker镜像托管在[HuaweiCloud SWR](https://console.huaweicloud 1. 获取Docker镜像。 ``` - docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4 + docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 ``` 2. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。 ``` - docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.4 + docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:0.0.5 ``` @@ -170,7 +170,7 @@ OpenHarmony的Docker镜像托管在[HuaweiCloud SWR](https://console.huaweicloud 3. 进入OpenHarmony代码根目录执行如下命令,从而进入Docker构建环境。 ``` - docker run -it -v $(pwd):/home/openharmony openharmony-docker:0.0.4 + docker run -it -v $(pwd):/home/openharmony openharmony-docker:0.0.5 ``` diff --git "a/zh-cn/device-dev/guide/\347\234\237\346\234\272\350\277\220\350\241\214-9.md" "b/zh-cn/device-dev/guide/\347\234\237\346\234\272\350\277\220\350\241\214-9.md" index 73d86f901a..30bb3b0801 100644 --- "a/zh-cn/device-dev/guide/\347\234\237\346\234\272\350\277\220\350\241\214-9.md" +++ "b/zh-cn/device-dev/guide/\347\234\237\346\234\272\350\277\220\350\241\214-9.md" @@ -1,6 +1,6 @@ # 真机运行 -应用签名打包后即可安装到开发板。安装应用前需要先完成[DevEco Device Tool的安装配置](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905),然后将OpenHarmony系统烧录到开发板并运行。编译烧录、运行镜像的基本操作请参考快速入门手册:[标准系统Hi3516快速入门](../quick-start/开发步骤-12.md)。完成镜像运行,系统正常启动后,执行如下步骤安装或卸载应用。 +应用签名打包后即可安装到开发板。安装应用前需要先完成[DevEco Device Tool的安装配置](https://device.harmonyos.com/cn/docs/ide/user-guides/service_introduction-0000001050166905),然后将OpenHarmony系统烧录到开发板并运行。编译烧录、运行镜像的基本操作请参考快速入门手册:[标准系统Hi3516快速入门](../quick-start/标准系统入门.md)。完成镜像运行,系统正常启动后,执行如下步骤安装或卸载应用。 1. 从开发者工具代码仓路径中获取hdc客户端。 diff --git "a/zh-cn/device-dev/kernel/C++\346\224\257\346\214\201.md" "b/zh-cn/device-dev/kernel/C++\346\224\257\346\214\201.md" new file mode 100644 index 0000000000..8608037257 --- /dev/null +++ "b/zh-cn/device-dev/kernel/C++\346\224\257\346\214\201.md" @@ -0,0 +1,86 @@ +# C++支持 + +- [基本概念](#section11374125415814) + - [运行机制](#section125251720195) + +- [开发指导](#section166302407911) + - [接口说明](#section1881825119919) + - [开发流程](#section76371145108) + - [编程实例](#section994427141111) + + +## 基本概念 + +C++作为目前使用最广泛的编程语言之一,支持类、封装、重载等特性,是在C语言基础上开发的一种面向对象的编程语言。 + +### 运行机制 + +C++代码的识别主要由编译器支持,系统主要对全局对象进行构造函数调用,进行初始化操作。 + +## 开发指导 + +### 接口说明 + +**表 1** C++支持接口 + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

使用C++特性的前置条件

+

LOS_CppSystemInit

+

C++构造函数初始化

+
+ +### 开发流程 + +使用C++特性之前,需要调用函数LOS\_CppSystemInit,实现C++构造函数初始化,其中被初始化的构造函数存在init\_array这个段中,段区间通过变量\_\_init\_array\_start\_\_、\_\_init\_array\_end\_\_传递。 + +**表 2** 参数说明 + + + + + + + + + + + + + +

参数

+

参数说明

+

__init_array_start__

+

init_array段起始位置

+

__init_array_end__

+

init_array段结束位置

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>调用该函数时,一定要在c++业务前。另外部分与系统资源强相关的类或接口,如std::thread,std::mutex等,在三方编译器使用的c库非musl c时,存在兼容性问题,不建议使用。 + +### 编程实例 + +``` +void app_init(void) +{ +...... +/* 启动阶段C++初始化 */ +LOS_CppSystemInit((UINTPTR)&__init_array_start__, (UINTPTR)&__init_array_end__); +/* C++业务 */ +...... +} +``` + diff --git "a/zh-cn/device-dev/kernel/CMSIS\346\224\257\346\214\201.md" "b/zh-cn/device-dev/kernel/CMSIS\346\224\257\346\214\201.md" new file mode 100644 index 0000000000..4f64bc6b8c --- /dev/null +++ "b/zh-cn/device-dev/kernel/CMSIS\346\224\257\346\214\201.md" @@ -0,0 +1,487 @@ +# CMSIS支持 + +- [基本概念](#section131091144111615) +- [开发指导](#section57653573161) + - [接口说明](#section1795910417173) + - [开发流程](#section48301225131720) + - [编程实例](#section524434761713) + + +## 基本概念 + +[CMSIS](https://developer.arm.com/tools-and-software/embedded/cmsis)是Cortex Microcontroller Software Interface Standard(Cortex微控制器软件接口标准)的缩写,是对于那些基于ARM Cortex处理器的微控制器独立于供应商的硬件抽象层。它包含多个组件层,其中之一是RTOS层,该层定义了一套通用及标准化的RTOS API接口,减少了应用开发者对特定RTOS的依赖,方便用户软件的移植重用。该套API有2个版本,分别为版本1(CMSIS-RTOS v1)和版本2(CMSIS-RTOS v2),OpenHarmony LiteOS-M仅提供其版本2的实现。 + +## 开发指导 + +### 接口说明 + +CMSIS-RTOS v2提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** CMSIS-RTOS v2接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

内核信息与控制

+

osKernelGetInfo

+

获取RTOS内核信息。

+

osKernelGetState

+

获取当前的RTOS内核状态。

+

osKernelGetSysTimerCount

+

获取RTOS内核系统计时器计数。

+

osKernelGetSysTimerFreq

+

获取RTOS内核系统计时器频率。

+

osKernelInitialize

+

初始化RTOS内核。

+

osKernelLock

+

锁定RTOS内核调度程序。

+

osKernelUnlock

+

解锁RTOS内核调度程序。

+

osKernelRestoreLock

+

恢复RTOS内核调度程序锁定状态。

+

osKernelResume

+

恢复RTOS内核调度程序。(暂未实现)

+

osKernelStart

+

启动RTOS内核调度程序。

+

osKernelSuspend

+

挂起RTOS内核调度程序。(暂未实现)

+

osKernelGetTickCount

+

获取RTOS内核滴答计数。

+

osKernelGetTickFreq

+

获取RTOS内核滴答频率。

+

线程管理

+

osThreadDetach

+

分离线程(线程终止时可以回收线程存储)。(暂未实现)

+

osThreadEnumerate

+

枚举活动线程。(暂未实现)

+

osThreadExit

+

终止当前正在运行的线程的执行。

+

osThreadGetCount

+

获取活动线程的数量。

+

osThreadGetId

+

返回当前正在运行的线程的线程ID。

+

osThreadGetName

+

获取线程的名称。

+

osThreadGetPriority

+

获取线程的当前优先级。

+

osThreadGetStackSize

+

获取线程的堆栈大小。

+

osThreadGetStackSpace

+

根据执行期间的堆栈水印记录获取线程的可用堆栈空间。

+

osThreadGetState

+

获取线程的当前线程状态。

+

osThreadJoin

+

等待指定线程终止。(暂未实现)

+

osThreadNew

+

创建一个线程并将其添加到活动线程中。

+

osThreadResume

+

恢复线程的执行。

+

osThreadSetPriority

+

更改线程的优先级。

+

osThreadSuspend

+

暂停执行线程。

+

osThreadTerminate

+

终止线程的执行。

+

osThreadYield

+

将控制权传递给处于就绪状态的下一个线程。

+

线程标志

+

osThreadFlagsSet

+

设置线程的指定线程标志。(暂未实现)

+

osThreadFlagsClear

+

清除当前正在运行的线程的指定线程标志。(暂未实现)

+

osThreadFlagsGet

+

获取当前正在运行的线程的当前线程标志。(暂未实现)

+

osThreadFlagsWait

+

等待当前正在运行的线程的一个或多个线程标志发出信号。(暂未实现)

+

事件标志

+

osEventFlagsGetName

+

获取事件标志对象的名称。(暂未实现)

+

osEventFlagsNew

+

创建并初始化事件标志对象。

+

osEventFlagsDelete

+

删除事件标志对象。

+

osEventFlagsSet

+

设置指定的事件标志。

+

osEventFlagsClear

+

清除指定的事件标志。

+

osEventFlagsGet

+

获取当前事件标志。

+

osEventFlagsWait

+

等待一个或多个事件标志被发出信号。

+

通用等待函数

+

osDelay

+

等待超时(时间延迟)。

+

osDelayUntil

+

等到指定时间。

+

计时器管理

+

osTimerDelete

+

删除计时器。

+

osTimerGetName

+

获取计时器的名称。(暂未实现)

+

osTimerIsRunning

+

检查计时器是否正在运行。

+

osTimerNew

+

创建和初始化计时器。

+

osTimerStart

+

启动或重新启动计时器。

+

osTimerStop

+

停止计时器。

+

互斥管理

+

osMutexAcquire

+

获取互斥或超时(如果已锁定)。

+

osMutexDelete

+

删除互斥对象。

+

osMutexGetName

+

获取互斥对象的名称。(暂未实现)

+

osMutexGetOwner

+

获取拥有互斥对象的线程。

+

osMutexNew

+

创建并初始化Mutex对象。

+

osMutexRelease

+

释放由osMutexAcquire获取的Mutex。

+

信号量

+

osSemaphoreAcquire

+

获取信号量令牌或超时(如果没有可用的令牌)。

+

osSemaphoreDelete

+

删除一个信号量对象。

+

osSemaphoreGetCount

+

获取当前信号量令牌计数。

+

osSemaphoreGetName

+

获取信号量对象的名称。(暂未实现)

+

osSemaphoreNew

+

创建并初始化一个信号量对象。

+

osSemaphoreRelease

+

释放信号量令牌,直到初始最大计数。

+

内存池

+

osMemoryPoolAlloc

+

从内存池分配一个内存块。

+

osMemoryPoolDelete

+

删除内存池对象。

+

osMemoryPoolFree

+

将分配的内存块返回到内存池。

+

osMemoryPoolGetBlockSize

+

获取内存池中的内存块大小。

+

osMemoryPoolGetCapacity

+

获取内存池中最大的内存块数。

+

osMemoryPoolGetCount

+

获取内存池中使用的内存块数。

+

osMemoryPoolGetName

+

获取内存池对象的名称。

+

osMemoryPoolGetSpace

+

获取内存池中可用的内存块数。

+

osMemoryPoolNew

+

创建并初始化一个内存池对象。

+

消息队列

+

osMessageQueueDelete

+

删除消息队列对象。

+

osMessageQueueGet

+

从队列获取消息,或者如果队列为空,则从超时获取消息。

+

osMessageQueueGetCapacity

+

获取消息队列中的最大消息数。

+

osMessageQueueGetCount

+

获取消息队列中排队的消息数。

+

osMessageQueueGetMsgSize

+

获取内存池中的最大消息大小。

+

osMessageQueueGetName

+

获取消息队列对象的名称。(暂未实现)

+

osMessageQueueGetSpace

+

获取消息队列中消息的可用插槽数。

+

osMessageQueueNew

+

创建和初始化消息队列对象。

+

osMessageQueuePut

+

如果队列已满,则将消息放入队列或超时。

+

osMessageQueueReset

+

将消息队列重置为初始空状态。(暂未实现)

+
+ +### 开发流程 + +CMSIS-RTOS2组件可以作为库或源代码提供(下图显示了库)。通过添加CMSIS-RTOS2组件(通常是一些配置文件),可以将基于CMSIS的应用程序扩展为具有RTOS功能。只需包含cmsis\_os2.h头文件就可以访问RTOS API函数,这使用户应用程序能够处理RTOS内核相关事件,而在更换内核时无需重新编译源代码。 + +静态对象分配需要访问RTOS对象控制块定义。特定于实现的头文件(下图中的os\_xx .h)提供对此类控制块定义的访问。对于OpenHarmony LiteOS-M内核,由文件名以los\_开头的头文件提供,这些文件包含OpenHarmony LiteOS-M内核的这些定义。 + +![](figures/zh-cn_image_0000001121429646.png) + +### 编程实例 + +``` +#include ... +#include "cmsis_os2.h" + +/*---------------------------------------------------------------------------- + * 应用程序主线程 + *---------------------------------------------------------------------------*/ +void app_main (void *argument) { + // ... + for (;;) {} +} + +int main (void) { + // 系统初始化 + MySystemInit(); + // ... + + osKernelInitialize(); // 初始化CMSIS-RTOS + osThreadNew(app_main, NULL, NULL); // 创建应用程序主线程 + osKernelStart(); // 开始执行线程 + for (;;) {} +} +``` + diff --git a/zh-cn/device-dev/kernel/FAT-20.md b/zh-cn/device-dev/kernel/FAT-20.md new file mode 100644 index 0000000000..7b8620cb01 --- /dev/null +++ b/zh-cn/device-dev/kernel/FAT-20.md @@ -0,0 +1,176 @@ +# FAT + +- [基本概念](#section1772629121418) +- [开发指导](#section1149072811148) + - [驱动适配](#section19174939191414) + - [开发流程](#section131211626151513) + - [编程实例](#section206071303163) + - [实例描述](#section45337345313) + - [示例代码](#section119813171539) + - [结果验证](#section7987101232311) + + +## 基本概念 + +FAT文件系统是File Allocation Table(文件配置表)的简称,主要包括DBR区、FAT区、DATA区三个区域。其中,FAT区各个表项记录存储设备中对应簇的信息,包括簇是否被使用、文件下一个簇的编号、是否文件结尾等。FAT文件系统有FAT12、FAT16、FAT32等多种格式,其中,12、16、32表示对应格式中FAT表项的字节数。FAT文件系统支持多种介质,特别在可移动存储介质(U盘、SD卡、移动硬盘等)上广泛使用,使嵌入式设备和Windows、Linux等桌面系统保持很好的兼容性,方便用户管理操作文件。 + +OpenHarmony内核支持FAT12、FAT16与FAT32三种格式的FAT文件系统,具有代码量小、资源占用小、可裁切、支持多种物理介质等特性,并且与Windows、Linux等系统保持兼容,支持多设备、多分区识别等功能。OpenHarmony内核支持硬盘多分区,可以在主分区以及逻辑分区上创建FAT文件系统。 + +## 开发指导 + +### 驱动适配 + +FAT文件系统的使用需要底层MMC相关驱动的支持。在一个带MMC存储设备的板子上运行FATFS,需要: + +1、适配板端EMMC驱动,实现disk\_status、disk\_initialize、disk\_read、disk\_write、disk\_ioctl接口; + +2、新增fs\_config.h文件,配置FS\_MAX\_SS(存储设备最大sector大小)、FF\_VOLUME\_STRS(分区名)等信息,例如: + +``` +#define FF_VOLUME_STRS "system", "inner", "update", "user" +#define FS_MAX_SS 512 +#define FAT_MAX_OPEN_FILES 50 +``` + +### 开发流程 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- FATFS文件与目录操作: +> - 单个文件大小不超过4G。 +> - 支持同时打开的文件数最大为FAT\_MAX\_OPEN\_FILES,文件夹数最大为FAT\_MAX\_OPEN\_DIRS。 +> - 暂不支持根目录管理,文件/目录名均以分区名开头,例如“user/testfile”就是在“user”分区下名为“testfile”的文件或目录。 +> - 若需要同时多次打开同一文件,必须全部使用只读方式(O\_RDONLY)。以可写方式(O\_RDWR、O\_WRONLY等)只能打开一次。 +> - 读写指针未分离,例如以O\_APPEND(追加写)方式打开文件后,读指针也在文件尾,从头读文件前需要用户手动置位。 +> - 暂不支持文件与目录的权限管理。 +> - stat及fstat接口暂不支持查询修改时间、创建时间和最后访问时间。微软FAT协议不支持1980年以前的时间。 +>- FATFS分区挂载与卸载: +> - 支持以只读属性挂载分区。当mount函数的入参为MS\_RDONLY时,所有的带有写入的接口,如write、mkdir、unlink,以及非O\_RDONLY属性的open,将均被拒绝。 +> - mount支持通过MS\_REMOUNT标记修改已挂载分区的权限。 +> - 在umount操作前,需确保所有目录及文件全部关闭。 +> - umount2支持通过MNT\_FORCE参数强制关闭所有文件与文件夹并umount,但可能造成数据丢失,请谨慎使用。 +>- FATFS支持重新划分存储设备分区、格式化分区,对应接口为fatfs\_fdisk与fatfs\_format: +> - 在fatfs\_format操作之前,若需要格式化的分区已挂载,需确保分区中的所有目录及文件全部关闭,并且分区umount。 +> - 在fatfs\_fdisk操作前,需要该设备中的所有分区均已umount。 +> - fatfs\_fdisk与fatfs\_format会造成设备数据丢失,请谨慎使用。 + +### 编程实例 + +### 实例描述 + +本实例实现以下功能: + +1. 创建目录“user/test” +2. 在“user/test”目录下创建文件“file.txt” +3. 在文件起始位置写入“Hello OpenHarmony!” +4. 将文件内容刷入设备中 +5. 设置偏移到文件起始位置 +6. 读取文件内容 +7. 关闭文件 +8. 删除文件 +9. 删除目录 + +### 示例代码 + +前提条件: + +- 系统已将MMC设备分区挂载到user目录 + +代码实现如下: + +``` +#include +#include +#include "sys/stat.h" +#include "fcntl.h" +#include "unistd.h" + +#define LOS_OK 0 +#define LOS_NOK -1 + +int FatfsTest(void) +{ + int ret; + int fd = -1; + ssize_t len; + off_t off; + char dirName[20] = "user/test"; + char fileName[20] = "user/test/file.txt"; + char writeBuf[20] = "Hello OpenHarmony!"; + char readBuf[20] = {0}; + + /* 创建目录“user/test” */ + ret = mkdir(dirName, 0777); + if (ret != LOS_OK) { + printf("mkdir failed.\n"); + return LOS_NOK; + } + + /* 创建可读写文件"user/test/file.txt" */ + fd = open(fileName, O_RDWR | O_CREAT, 0777); + if (fd < 0) { + printf("open file failed.\n"); + return LOS_NOK; + } + + /* 将writeBuf中的内容写入文件 */ + len = write(fd, writeBuf, strlen(writeBuf)); + if (len != strlen(writeBuf)) { + printf("write file failed.\n"); + return LOS_NOK; + } + + /* 将文件内容刷入存储设备中 */ + ret = fsync(fd); + if (ret != LOS_OK) { + printf("fsync failed.\n"); + return LOS_NOK; + } + + /* 将读写指针偏移至文件头 */ + off = lseek(fd, 0, SEEK_SET); + if (off != 0) { + printf("lseek failed.\n"); + return LOS_NOK; + } + + /* 将文件内容读出至readBuf中,读取长度为readBuf大小 */ + len = read(fd, readBuf, sizeof(readBuf)); + if (len != strlen(writeBuf)) { + printf("read file failed.\n"); + return LOS_NOK; + } + printf("%s\n", readBuf); + + /* 关闭文件 */ + ret = close(fd); + if (ret != LOS_OK) { + printf("close failed.\n"); + return LOS_NOK; + } + + /* 删除文件"user/test/file.txt" */ + ret = unlink(fileName); + if (ret != LOS_OK) { + printf("unlink failed.\n"); + return LOS_NOK; + } + + /* 删除目录“user/test” */ + ret = rmdir(dirName); + if (ret != LOS_OK) { + printf("rmdir failed.\n"); + return LOS_NOK; + } + + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +Hello OpenHarmony! +``` + diff --git a/zh-cn/device-dev/kernel/IPC.md b/zh-cn/device-dev/kernel/IPC.md new file mode 100644 index 0000000000..14c3d35d89 --- /dev/null +++ b/zh-cn/device-dev/kernel/IPC.md @@ -0,0 +1,11 @@ +# IPC + +- **[事件](事件.md)** + +- **[互斥锁](互斥锁.md)** + +- **[消息队列](消息队列.md)** + +- **[信号量](信号量.md)** + + diff --git "a/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272\346\214\207\345\257\274.md" "b/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272\346\214\207\345\257\274.md" index 935692f919..1dec4cb144 100755 --- "a/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272\346\214\207\345\257\274.md" +++ "b/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270\347\274\226\350\257\221\344\270\216\346\236\204\345\273\272\346\214\207\345\257\274.md" @@ -1,11 +1,13 @@ # Linux内核编译与构建指导 -- [以hi3516dv300开源开发板+ubuntu x86主机开发环境为例](#section19369206113115) +- [开发示例1](#section19369206113115) - [场景1:版本级编译原生方式](#section1025111193220) - [场景2:单独编译修改后的内核](#section17446652173211) -## 以hi3516dv300开源开发板+ubuntu x86主机开发环境为例 +## 开发示例1 + +以hi3516dv300开源开发板+ubuntu x86主机开发环境为例。 ### 场景1:版本级编译原生方式 diff --git a/zh-cn/device-dev/kernel/LittleFS.md b/zh-cn/device-dev/kernel/LittleFS.md new file mode 100644 index 0000000000..1f8ad2cec8 --- /dev/null +++ b/zh-cn/device-dev/kernel/LittleFS.md @@ -0,0 +1,7 @@ +# LittleFS + +- **[基本概念](基本概念-21.md)** + +- **[开发指导](开发指导-22.md)** + + diff --git "a/zh-cn/device-dev/kernel/POSIX\346\224\257\346\214\201.md" "b/zh-cn/device-dev/kernel/POSIX\346\224\257\346\214\201.md" new file mode 100644 index 0000000000..6f672f2e2d --- /dev/null +++ "b/zh-cn/device-dev/kernel/POSIX\346\224\257\346\214\201.md" @@ -0,0 +1,1644 @@ +# POSIX支持 + +- [基本概念](#section1757915134139) +- [开发指导](#section1573664211318) + - [接口说明](#section10429150121317) + - [注意事项](#section109174418147) + - [编程实例](#section206149278155) + + +## 基本概念 + +OpenHarmony内核使用**musl libc**库以及自研接口,支持部分标准POSIX接口,开发者可基于POSIX标准接口开发内核之上的组件及应用。 + +## 开发指导 + +### 接口说明 + +**表 1** POSIX接口说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

类别

+

需要包含的头文件

+

接口名

+

描述

+

process

+

#include <stdlib.h>

+

void abort(void);

+

中止进程执行

+

#include <assert.h>

+

void assert(scalar expression);

+

断言为假终止进程

+

#include <stdlib.h>

+

void exit(int status);

+

正常退出进程

+

#include <pthread.h>

+

int pthread_cond_destroy(pthread_cond_t *cond);

+

销毁条件变量

+

#include <pthread.h>

+

int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);

+

初始化条件变量

+

#include <pthread.h>

+

int pthread_cond_timedwait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex, const struct timespec *restrict abstime);

+

等待条件

+

#include <pthread.h>

+

int pthread_condattr_init(pthread_condattr_t *attr);

+

初始化条件变量属性对象

+

#include <pthread.h>

+

int pthread_mutex_unlock(pthread_mutex_t *mutex);

+

解锁互斥锁

+

#include <pthread.h>

+

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);

+

创建一个新的线程

+

#include <pthread.h>

+

int pthread_join(pthread_t thread, void **retval);

+

等待指定的线程结束

+

#include <pthread.h>

+

pthread_t pthread_self(void);

+

获取当前线程的ID

+

#include <pthread.h>

+

int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param);

+

获取线程的调度策略和参数

+

#include <pthread.h>

+

int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);

+

设置线程的调度策略和参数

+

#include <pthread.h>

+

int pthread_mutex_init(pthread_mutex_t *__restrict m, const pthread_mutexattr_t *__restrict a);

+

初始化互斥锁

+

#include <pthread.h>

+

int pthread_mutex_lock(pthread_mutex_t *m);

+

互斥锁加锁操作

+

#include <pthread.h>

+

int pthread_mutex_trylock(pthread_mutex_t *m);

+

互斥锁尝试加锁操作

+

#include <pthread.h>

+

int pthread_mutex_destroy(pthread_mutex_t *m);

+

销毁互斥锁

+

#include <pthread.h>

+

int pthread_attr_init(pthread_attr_t *attr);

+

初始化线程属性对象

+

#include <pthread.h>

+

int pthread_attr_destroy(pthread_attr_t *attr);

+

销毁线程属性对象

+

#include <pthread.h>

+

int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize);

+

获取线程属性对象的堆栈大小

+

#include <pthread.h>

+

int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);

+

设置线程属性对象的堆栈大小

+

#include <pthread.h>

+

int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);

+

获取线程属性对象的调度参数属性

+

#include <pthread.h>

+

int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);

+

设置线程属性对象的调度参数属性

+

#include <pthread.h>

+

int pthread_getname_np(pthread_t pthread, char *name, size_t len);

+

获取线程名称

+

#include <pthread.h>

+

int pthread_setname_np(pthread_t pthread, const char *name);

+

设置线程名称

+

#include <pthread.h>

+

int pthread_cond_broadcast(pthread_cond_t *c);

+

解除若干已被等待条件阻塞的线程

+

#include <pthread.h>

+

int pthread_cond_signal(pthread_cond_t *c);

+

解除被阻塞的线程

+

#include <pthread.h>

+

int pthread_cond_wait(pthread_cond_t *__restrict c, pthread_mutex_t *__restrict m);

+

等待条件

+

fs

+

#include <libgen.h>

+

char *dirname(char *path);

+

获取目录名

+

#include <dirent.h>

+

struct dirent *readdir(DIR *dirp);

+

读目录

+

#include <sys/stat.h>

+

int stat(const char *restrict path, struct stat *restrict buf);

+

获取文件信息

+

#include <unistd.h>

+

int unlink(const char *pathname);

+

删除文件

+

#include <fcntl.h

+

int open(const char *path, int oflags, ...);

+

用于打开文件,如文件不存在,创建文件并打开

+

#include <nistd.h>

+

int close(int fd);

+

关闭文件

+

#include <stdio.h>

+

int rename(const char *oldpath, const char *newpath);

+

重命名指定的文件

+

#include <dirent.h>

+

DIR *opendir(const char *dirname);

+

打开指定目录

+

#include <dirent.h>

+

int closedir(DIR *dir);

+

关闭指定目录

+

#include <sys/mount.h>

+

int mount(const char *source, const char *target, const char *filesystemtype, unsigned long mountflags, const void *data);

+

挂载文件系统

+

#include <sys/mount.h>

+

int umount(const char *target);

+

卸载文件系统

+

#include <sys/mount.h>

+

int umount2(const char *target, int flag);

+

卸载文件系统

+

#include <sys/stat.h>

+

int fsync(int fd);

+

将与指定文件描述符关联的文件同步到存储设备

+

#include <sys/stat.h>

+

int mkdir(const char *pathname, mode_t mode);

+

创建目录

+

#include <unistd.h>

+

int rmdir(const char *path);

+

删除目录

+

#include <sys/stat.h>

+

int fstat(int fd, struct stat *buf);

+

获取文件状态信息

+
  

#include <sys/statfs.h>

+

int statfs(const char *path, struct statfs *buf);

+

获取指定路径下文件的文件系统信息

+

time

+

#include <sys/time.h>

+

int gettimeofday(struct timeval *tv, struct timezone *tz);

+

获取时间。当前暂无时区概念,tz返回为空

+

#include <time.h>

+

struct tm *gmtime(const time_t *timep);

+

将日期和时间转换为细分时间或ASCII

+

#include <time.h>

+

struct tm *localtime(const time_t *timep);

+

获取时间

+

#include <time.h>

+

struct tm *localtime_r(const time_t *timep, struct tm *result);

+

获取时间

+

#include <time.h>

+

time_t mktime(struct tm *tm);

+

将日期和时间转换为细分时间或ASCII

+

#include <time.h>

+

size_t strftime(char *s, size_t max, const char *format,const struct tm *tm);

+

格式化日期和时间字符串

+

#include <time.h>

+

time_t time(time_t *tloc);

+

获得日历时间

+

#include <sys/times.h>

+

clock_t times(struct tms *buf);

+

获取进程时间

+

#include <unistd.h>

+

int usleep(useconds_t usec);

+

休眠(微秒单位)

+

#include <time.h>

+

int nanosleep(const struct timespec *tspec1, struct timespec *tspec2);

+

暂停当前线程直到指定的时间到达

+

#include <time.h>

+

int clock_gettime(clockid_t id, struct timespec *tspec);

+

获取时钟的时间

+

#include <time.h>

+

int timer_create(clockid_t id, struct sigevent *__restrict evp, timer_t *__restrict t);

+

为进程创建计时器

+

#include <time.h>

+

int timer_delete(timer_t t);

+

为进程删除计时器

+

#include <time.h>

+

int timer_settime(timer_t t, int flags, const struct itimerspec *__restrict val, struct itimerspec *__restrict old);

+

为进程设置计时器

+

#include <time.h>

+

time_t time (time_t *t);

+

获取时间

+

#include <time.h>

+

char *strptime(const char *s, const char *format, struct tm *tm);

+

将时间的字符串表示形式转换为时间tm结构

+

util

+

#include <stdlib.h>

+

int atoi(const char *nptr);

+

字符串转换整型(int)

+

#include <stdlib.h>

+

long atol(const char *nptr);

+

字符串转换整型(long)

+

#include <stdlib.h>

+

long long atoll(const char *nptr);

+

字符串转换整型(long long)

+

#include <ctype.h>

+

int isalnum(int c);

+

检查字母数字字符

+

#include <ctype.h>

+

int isascii(int c);

+

检查ASCII

+

#include <ctype.h>

+

int isdigit(int c);

+

检查数字字符

+

#include <ctype.h>

+

int islower(int c);

+

检查小写字符

+

#include <ctype.h>

+

int isprint(int c);

+

检查任何可打印字符,包括空格

+

#include <ctype.h>

+

int isspace(int c);

+

检查空格字符

+

#include <ctype.h>

+

int isupper(int c);

+

检查所传的字符是否是大写字母

+

#include <ctype.h>

+

int isxdigit(int c);

+

判断字符是否为十六进制数

+

#include <stdlib.h>

+

long int random (void);

+

生成伪随机数

+

#include <stdlib.h>

+

void srandom(unsigned int seed);

+

初始化随机数生成器

+

#include <ctype.h>

+

int tolower(int c);

+

字母转换成小写

+

#include <ctype.h>

+

int toupper(int c);

+

字母转换成大写

+

#include <stdarg.h>

+

type va_arg(va_list ap, type);

+

获取可变参数的当前参数,返回指定类型并将指针指向下一参数

+

#include <stdarg.h>

+

void va_copy(va_list dest, va_list src);

+

复制参数

+

#include <stdarg.h>

+

void va_end(va_list ap);

+

清空va_list可变参数列表

+

#include <stdarg.h>

+

void va_start(va_list ap, last);

+

定义变长参数列表的起始位置

+

#include <string.h>

+

char *strchr(const char *s, int c);

+

在字符串中定位字符

+

#include <string.h>

+

int strcmp(const char *s1, const char *s2);

+

比较字符串

+

#include <string.h>

+

size_t strcspn(const char *s, const char *reject);

+

获取前缀子串的长度

+

#include <string.h>

+

char *strdup(const char *s);

+

字符串拷贝到新建的位置处

+

#include <string.h>

+

size_t strlen(const char *s);

+

计算字符串长度

+

#include <strings.h>

+

int strncasecmp(const char *s1, const char *s2, size_t n);

+

比较固定长度字符串(忽略大小写)

+

#include <strings.h>

+

int strcasecmp(const char *s1, const char *s2);

+

比较字符串(忽略大小写)

+

#include <string.h>

+

int strncmp(const char *s1, const char *s2, size_t n);

+

比较字符串(指定长度)

+

#include <string.h>

+

char *strrchr(const char *s, int c);

+

在字符串中定位字符

+

#include <string.h>

+

char *strstr(const char *haystack, const char *needle);

+

寻找指定的子串

+

#include <stdlib.h>

+

long int strtol(const char *nptr, char **endptr, int base);

+

将字符串转换为long型整数

+

#include <stdlib.h>

+

unsigned long int strtoul(const char *nptr, char **endptr, int base);

+

将字符串转换为unsigned long型整数

+

#include <stdlib.h>

+

unsigned long long int strtoull(const char *nptr, char **endptr,int base);

+

将字符串转换为unsigned long long型整数

+

#include <regex.h>

+

int regcomp(regex_t *preg, const char *regex, int cflags);

+

编译正则表达式

+

#include <regex.h>

+

int regexec(const regex_t *preg, const char *string, size_t nmatch,regmatch_t pmatch[], int eflags);

+

匹配正则表达式

+

#include <regex.h>

+

void regfree(regex_t *preg);

+

释放正则表达式

+

#include <string.h>

+

char *strerror(int errnum);

+

返回描述错误号的字符串

+

math

+

#include <stdlib.h>

+

int abs(int i);

+

取绝对值

+

#include <math.h>

+

double log(double x);

+

自然对数函数

+

#include <math.h>

+

double pow(double x, double y);

+

求x的指数y次幂

+

#include <math.h>

+

double round(double x);

+

从零开始,舍入到最接近的整数

+

#include <math.h>

+

double sqrt(double x);

+

平方根

+

IO

+

#include <stdio.h>

+

void clearerr(FILE *stream);

+

清除流的文件结尾和错误指示

+

#include <stdio.h>

+

int fclose(FILE *stream);

+

关闭文件流

+

#include <stdio.h>

+

FILE *fdopen(int fd, const char *mode);

+

通过文件描述符打开文件流

+

#include <stdio.h>

+

int feof(FILE *stream);

+

检测返回文件末尾指示位

+

#include <stdio.h>

+

int fflush(FILE *stream);

+

刷新流

+

#include <stdio.h>

+

char *fgets(char *s, int size, FILE *stream);

+

读取流的下一行

+

#include <stdio.h>

+

int fileno(FILE *stream);

+

返回流的文件描述符

+

#include <stdio.h>

+

FILE *fopen(const char *path, const char *mode);

+

打开流

+

#include <stdio.h>

+

int fputs(const char *s, FILE *stream);

+

向指定流写入一行

+

#include <stdio.h>

+

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

+

读一个流

+

#include <stdio.h>

+

int fseek(FILE *stream, long offset, int whence);

+

设置流指针的位置

+

#include <stdio.h>

+

long ftell(FILE *stream);

+

获取流指针的位置

+

#include <stdio.h>

+

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

+

向流写入

+

#include <stdio.h>

+

void perror(const char *s);

+

打印系统错误信息

+

#include <stdio.h>

+

void rewind(FILE *stream);

+

重新定位流

+

#include <unistd.h>

+

ssize_t write(int fd, const void *buf, size_t size);

+

写文件内容

+

#include <unistd.h>

+

ssize_t read(int fd, void *buf, size_t size);

+

读文件内容

+

net

+

#include <sys/socket.h>

+

void freeaddrinfo(struct addrinfo *res);

+

释放调用getaddrinfo所分配的动态内存

+

#include <sys/socket.h>

+

int getaddrinfo(const char *restrict nodename,const char *restrict servname,const struct addrinfo *restrict hints,struct addrinfo **restrict res);

+

网络地址和服务转换

+

#include <sys/socket.h>

+

int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,char *restrict node, socklen_t nodelen, char *restrict service,socklen_t servicelen, int flags);

+

以协议无关的方式进行地址到名称的转换

+

#include <net/if.h>

+

unsigned int if_nametoindex(const char *ifname);

+

通过网络接口名得到索引

+

#include <arpa/inet.h>

+

in_addr_t inet_addr(const char *cp);

+

网络主机地址点分十进制形式转换位二进制形式

+

#include <arpa/inet.h>

+

char *inet_ntoa(struct in_addr in);

+

网络主机地址二进制形式转换位点分十进制形式

+

#include <arpa/inet.h>

+

const char *inet_ntop(int af, const void *src,char *dst, socklen_t size);

+

网络地址转换

+

#include <arpa/inet.h>

+

int inet_pton(int af, const char *src, void *dst);

+

网络地址转换

+

#include <sys/socket.h>

+

int listen(int sockfd, int backlog);

+

监听套接字

+

#include <sys/socket.h>

+

ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);

+

从套接字接收消息.只支持iov大小为1的场景,且不支持ancillary消息

+

#include <sys/socket.h>

+

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

+

从socket发送消息

+

#include <sys/socket.h>

+

ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);

+

从socket发送消息。不支持ancillary消息

+

#include <sys/socket.h>

+

ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);

+

从socket发送消息

+

#include <sys/socket.h>

+

int setsockopt(int sockfd, int level, int optname,const void *optval, socklen_t optlen);

+

设置与套接字关联的选项

+

mem

+

#include <string.h>

+

int memcmp(const void *s1, const void *s2, size_t n);

+

内存比较

+

#include <string.h>

+

void *memcpy(void *dest, const void *src, size_t n);

+

内存拷贝

+

#include <string.h>

+

void *memset(void *s, int c, size_t n);

+

内存初始化

+

#include <stdlib.h>

+

void *realloc(void *ptr, size_t size);

+

重分配内存

+

#include <stdlib.h>

+

void *malloc(size_t size);

+

动态分配内存块大小

+

#include <stdlib.h>

+

void free(void *ptr);

+

释放ptr所指向的内存空间

+

IPC

+

#include <semaphore.h>

+

int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);

+

计时锁定信号量

+

#include <semaphore.h>

+

int sem_destroy(sem_t *sem);

+

销毁指定的无名信号量

+

#include <semaphore.h>

+

int sem_init(sem_t *sem, int pshared, unsigned int value);

+

创建并初始化一个无名信号量

+

#include <semaphore.h>

+

int sem_post(sem_t *sem);

+

增加信号量计数

+

#include <semaphore.h>

+

int sem_wait(sem_t *sem);

+

获取信号量

+

#include <mqueue.h>

+

mqd_t mq_open(const char *mqName, int openFlag, ...);

+

此API用于打开一个具有指定名称的已有消息队列或创建一个新的消息队列

+

#include <mqueue.h>

+

int mq_close(mqd_t personal);

+

此API用于关闭具有指定描述符的消息队列

+

#include <mqueue.h>

+

int mq_unlink(const char *mqName);

+

此API用于删除具有指定名称的消息队列

+

#include <mqueue.h>

+

int mq_send(mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio);

+

此API用于将具有指定内容和长度的消息放入具有指定描述符的消息队列中

+

#include <mqueue.h>

+

ssize_t mq_receive(mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio);

+

此API用于从具有指定描述符的消息队列中删除最老的消息,并将其放入msg_ptr所指向的缓冲区中

+

#include <mqueue.h>

+

int mq_timedsend(mqd_t personal, const char *msg, size_t msgLen, unsigned int msgPrio, const struct timespec *absTimeout)

+

此API用于在预定时间将具有指定内容和长度的消息放入具有描述符的消息队列中

+

#include <mqueue.h>

+

ssize_t mq_timedreceive(mqd_t personal, char *msg, size_t msgLen, unsigned int *msgPrio, const struct timespec *absTimeout);

+

此API用于从具有指定描述符的消息队列消息中获取具有指定消息内容和长度的消息

+

#include <mqueue.h>

+

int mq_setattr(mqd_t mqdes, const struct mq_attr *__restrict newattr, struct mq_attr *__restrict oldattr);

+

设置描述符指定的消息队列属性

+

version

+

#include <libc.h>

+

const char *libc_get_version_string(void);

+

获取libc版本字符串

+

#include <libc.h>

+

int libc_get_version(void);

+

获取libc版本号

+
+ +### 注意事项 + +常用错误码对照表: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

C Name

+

Value

+

Description

+

含义

+

Success

+

0

+

Success

+

成功

+

EPERM

+

1

+

Operation not permitted

+

操作不允许

+

ENOENT

+

2

+

No such file or directory

+

没有这样的文件或目录

+

ESRCH

+

3

+

No such process

+

没有这样的进程

+

EINTR

+

4

+

Interrupted system call

+

系统调用被中断

+

EIO

+

5

+

I/O error

+

I/O错误

+

ENXIO

+

6

+

No such device or address

+

没有这样的设备或地址

+

E2BIG

+

7

+

Arg list too long

+

参数列表太长

+

ENOEXEC

+

8

+

Exec format error

+

执行格式错误

+

EBADF

+

9

+

Bad file number

+

坏的文件描述符

+

ECHILD

+

10

+

No child processes

+

没有子进程

+

EAGAIN

+

11

+

Try again

+

资源暂时不可用

+

ENOMEM

+

12

+

Out of memory

+

内存溢出

+

EACCES

+

13

+

Permission denied

+

拒绝许可

+

EFAULT

+

14

+

Bad address

+

错误的地址

+

ENOTBLK

+

15

+

Block device required

+

块设备请求

+

EBUSY

+

16

+

Device or resource busy

+

设备或资源忙

+

EEXIST

+

17

+

File exists

+

文件存在

+

EXDEV

+

18

+

Cross-device link

+

无效的交叉链接

+

ENODEV

+

19

+

No such device

+

设备不存在

+

ENOTDIR

+

20

+

Not a directory

+

不是一个目录

+

EISDIR

+

21

+

Is a directory

+

是一个目录

+

EINVAL

+

22

+

Invalid argument

+

无效的参数

+

ENFILE*

+

23

+

File table overflow

+

打开太多的文件系统

+

EMFILE

+

24

+

Too many open files

+

打开的文件过多

+

EFBIG

+

27

+

File too large

+

文件太大

+

ENOSPC

+

28

+

No space left on device

+

设备上没有空间

+

ESPIPE

+

29

+

Illegal seek

+

非法移位

+

EROFS

+

30

+

Read-only file system

+

只读文件系统

+

EMLINK

+

31

+

Too many links

+

太多的链接

+

EDOM

+

33

+

Math argument out of domain

+

数值结果超出范围

+

ERANGE

+

34

+

Math result not representable

+

数值结果不具代表性

+

EDEADLK

+

35

+

Resource deadlock would occur

+

资源死锁错误

+

ENAMETOOLONG

+

36

+

Filename too long

+

文件名太长

+

ENOLCK

+

37

+

No record locks available

+

没有可用锁

+

ENOSYS

+

38

+

Function not implemented

+

功能没有实现

+

ENOTEMPTY

+

39

+

Directory not empty

+

目录不空

+

ELOOP

+

40

+

Too many symbolic links encountered

+

符号链接层次太多

+

ENOMSG

+

42

+

No message of desired type

+

没有期望类型的消息

+

EIDRM

+

43

+

Identifier removed

+

标识符删除

+

ELNRNG

+

48

+

Link number out of range

+

链接数超出范围

+

EBADR

+

53

+

Invalid request descriptor

+

请求描述符无效

+

EBADRQC

+

56

+

Invalid request code

+

无效的请求代码

+

ENOSTR

+

60

+

Device not a stream

+

设备不是字符流

+

ENODATA

+

61

+

No data available

+

无可用数据

+

ETIME

+

62

+

Timer expired

+

计时器过期

+

EPROTO

+

71

+

Protocol error

+

协议错误

+

EBADMSG

+

74

+

Not a data message

+

非数据消息

+

EOVERFLOW

+

75

+

Value too large for defined data type

+

值太大,对于定义数据类型

+

EMSGSIZE

+

90

+

Message too long

+

消息太长

+
+ +### 编程实例 + +demo功能: + +创建一个线程并将父线程中的信息传递给子线程,在子线程中打印传递过来的信息和自身线程id值。 + +``` +#include +#include + +pthread_t ntid; + +void *ThreadFn(void *arg) +{ + pthread_t tid; + while(1) { + tid = pthread_self(); + printf("\n++++++++++++++ %s %s tid = %d ++++++++++++++\n", (char*)arg, __FUNCTION__, tid); + } + return ((void *)0); +} + +void DemoForTest() +{ + int err; + char* str = "Hello world"; + err = pthread_create(&ntid, NULL, ThreadFn, (void*)str); + if(err != 0) { + printf("can't create thread\n"); + } +} + +``` + +执行DemoForTest运行结果如下: + +``` +++++++++++++++ Hello world ThreadFn tid = 48 ++++++++++++++ + +++++++++++++++ Hello world ThreadFn tid = 48 ++++++++++++++ + +++++++++++++++ Hello world ThreadFn tid = 48 ++++++++++++++ +``` + diff --git a/zh-cn/device-dev/kernel/Readme-CN.md b/zh-cn/device-dev/kernel/Readme-CN.md index 7e3ed2f7ec..8b5a59ad1b 100755 --- a/zh-cn/device-dev/kernel/Readme-CN.md +++ b/zh-cn/device-dev/kernel/Readme-CN.md @@ -1,92 +1,165 @@ -# 内核 - -- [轻内核](轻内核.md) - - [OpenHarmony轻内核基础功能](OpenHarmony轻内核基础功能.md) - - [进程](进程.md) - - [线程](线程.md) - - [内存](内存.md) - - [网络](网络.md) - - - [OpenHarmony轻内核文件系统](OpenHarmony轻内核文件系统.md) - - [VFS](VFS.md) - - [NFS](NFS.md) - - [RAMFS](RAMFS.md) - - [FAT](FAT.md) - - [JFFS2](JFFS2.md) - - - [标准库](标准库.md) - - [标准库](标准库-0.md) - - [与Linux标准库的差异](与Linux标准库的差异.md) - - - [调测](调测.md) - - [Shell介绍](Shell介绍.md) - - [Shell命令开发指导](Shell命令开发指导.md) - - [Shell命令编程实例](Shell命令编程实例.md) - - [Shell命令使用详解](Shell命令使用详解.md) - - [系统命令](系统命令.md) - - [cpup](cpup.md) - - [date](date.md) - - [dmesg](dmesg.md) - - [exec](exec.md) - - [free](free.md) - - [help](help.md) - - [hwi](hwi.md) - - [kill](kill.md) - - [log](log.md) - - [memcheck](memcheck.md) - - [oom](oom.md) - - [pmm](pmm.md) - - [reset](reset.md) - - [sem](sem.md) - - [stack](stack.md) - - [su](su.md) - - [swtmr](swtmr.md) - - [systeminfo](systeminfo.md) - - [task](task.md) - - [uname](uname.md) - - [vmm](vmm.md) - - [watch](watch.md) - - - [文件命令](文件命令.md) - - [cat](cat.md) - - [cd](cd.md) - - [chgrp](chgrp.md) - - [chmod](chmod.md) - - [chown](chown.md) - - [cp](cp.md) - - [format](format.md) - - [ls](ls.md) - - [lsfd](lsfd.md) - - [mkdir](mkdir.md) - - [mount](mount.md) - - [partinfo](partinfo.md) - - [partition](partition.md) - - [pwd](pwd.md) - - [rm](rm.md) - - [rmdir](rmdir.md) - - [statfs](statfs.md) - - [sync](sync.md) - - [touch](touch.md) - - [writeproc](writeproc.md) - - [umount](umount.md) - - - [网络命令](网络命令.md) - - [arp](arp.md) - - [dhclient](dhclient.md) - - [dns](dns.md) - - [ifconfig](ifconfig.md) - - [ipdebug](ipdebug.md) - - [netstat](netstat.md) - - [ntpdate](ntpdate.md) - - [ping](ping.md) - - [ping6](ping6.md) - - [telnet](telnet.md) - - [tftp](tftp.md) - - - [魔法键使用方法](魔法键使用方法.md) - - [用户态异常信息说明](用户态异常信息说明.md) - -- [Linux内核](Linux内核.md) +# 内核使用指南 + +- [轻量和小型系统内核](轻量和小型系统内核.md) + - [轻量系统内核](轻量系统内核.md) + - [基础内核](基础内核.md) + - [进程](进程.md) + - [线程](线程.md) + - [内存](内存.md) + - [网络](网络.md) + + - [文件系统](文件系统.md) + - [VFS](VFS.md) + - [NFS](NFS.md) + - [RAMFS](RAMFS.md) + - [FAT](FAT.md) + - [JFFS2](JFFS2.md) + + - [标准库](标准库.md) + - [标准库](标准库-0.md) + - [与Linux标准库的差异](与Linux标准库的差异.md) + + - [调测](调测.md) + - [Shell介绍](Shell介绍.md) + - [Shell命令开发指导](Shell命令开发指导.md) + - [Shell命令编程实例](Shell命令编程实例.md) + - [Shell命令使用详解](Shell命令使用详解.md) + - [系统命令](系统命令.md) + - [cpup](cpup.md) + - [date](date.md) + - [dmesg](dmesg.md) + - [exec](exec.md) + - [free](free.md) + - [help](help.md) + - [hwi](hwi.md) + - [kill](kill.md) + - [log](log.md) + - [memcheck](memcheck.md) + - [oom](oom.md) + - [pmm](pmm.md) + - [reset](reset.md) + - [sem](sem.md) + - [stack](stack.md) + - [su](su.md) + - [swtmr](swtmr.md) + - [systeminfo](systeminfo.md) + - [task](task.md) + - [uname](uname.md) + - [vmm](vmm.md) + - [watch](watch.md) + + - [文件命令](文件命令.md) + - [cat](cat.md) + - [cd](cd.md) + - [chgrp](chgrp.md) + - [chmod](chmod.md) + - [chown](chown.md) + - [cp](cp.md) + - [format](format.md) + - [ls](ls.md) + - [lsfd](lsfd.md) + - [mkdir](mkdir.md) + - [mount](mount.md) + - [partinfo](partinfo.md) + - [partition](partition.md) + - [pwd](pwd.md) + - [rm](rm.md) + - [rmdir](rmdir.md) + - [statfs](statfs.md) + - [sync](sync.md) + - [touch](touch.md) + - [writeproc](writeproc.md) + - [umount](umount.md) + + - [网络命令](网络命令.md) + - [arp](arp.md) + - [dhclient](dhclient.md) + - [dns](dns.md) + - [ifconfig](ifconfig.md) + - [ipdebug](ipdebug.md) + - [netstat](netstat.md) + - [ntpdate](ntpdate.md) + - [ping](ping.md) + - [ping6](ping6.md) + - [telnet](telnet.md) + - [tftp](tftp.md) + + - [魔法键使用方法](魔法键使用方法.md) + - [用户态异常信息说明](用户态异常信息说明.md) + + - [小型系统内核](小型系统内核.md) + - [认识LiteOS-M内核](认识LiteOS-M内核.md) + - [快速入门](快速入门.md) + - [基础内核](基础内核-1.md) + - [中断管理](中断管理.md) + - [基本概念](基本概念.md) + - [开发指导](开发指导.md) + + - [任务管理](任务管理.md) + - [基本概念](基本概念-2.md) + - [开发指导](开发指导-3.md) + + - [内存管理](内存管理.md) + - [基本概念](基本概念-4.md) + - [静态内存](静态内存.md) + - [动态内存](动态内存.md) + + - [IPC](IPC.md) + - [事件](事件.md) + - [基本概念](基本概念-5.md) + - [开发指导](开发指导-6.md) + + - [互斥锁](互斥锁.md) + - [基本概念](基本概念-7.md) + - [开发指导](开发指导-8.md) + + - [消息队列](消息队列.md) + - [基本概念](基本概念-9.md) + - [开发指导](开发指导-10.md) + + - [信号量](信号量.md) + - [基本概念](基本概念-11.md) + - [开发指导](开发指导-12.md) + + - [时间管理](时间管理.md) + - [基本概念](基本概念-13.md) + - [开发指导](开发指导-14.md) + + - [软件定时器](软件定时器.md) + - [基本概念](基本概念-15.md) + - [开发指导](开发指导-16.md) + + - [扩展组件](扩展组件.md) + - [C++支持](C++支持.md) + - [CPUP](CPUP.md) + - [基本概念](基本概念-17.md) + - [开发指导](开发指导-18.md) + + - [文件系统](文件系统-19.md) + - [FAT](FAT-20.md) + - [LittleFS](LittleFS.md) + - [基本概念](基本概念-21.md) + - [开发指导](开发指导-22.md) + + - [内核调测](内核调测.md) + - [内存调测](内存调测.md) + - [内存信息统计](内存信息统计.md) + - [内存泄漏检测](内存泄漏检测.md) + - [踩内存检测](踩内存检测.md) + + - [异常调测](异常调测.md) + - [Trace调测](Trace调测.md) + + - [附录](附录.md) + - [内核编码规范](内核编码规范.md) + - [基本数据结构](基本数据结构.md) + - [双向链表](双向链表.md) + + - [标准库支持](标准库支持.md) + - [CMSIS支持](CMSIS支持.md) + - [POSIX支持](POSIX支持.md) + +- [标准系统内核](标准系统内核.md) - [Linux内核概述](Linux内核概述.md) - [OpenHarmony开发板Patch使用指导](OpenHarmony开发板Patch使用指导.md) - [Linux内核编译与构建指导](Linux内核编译与构建指导.md) diff --git "a/zh-cn/device-dev/kernel/Trace\350\260\203\346\265\213.md" "b/zh-cn/device-dev/kernel/Trace\350\260\203\346\265\213.md" new file mode 100644 index 0000000000..b725f81ef5 --- /dev/null +++ "b/zh-cn/device-dev/kernel/Trace\350\260\203\346\265\213.md" @@ -0,0 +1,196 @@ +# Trace调测 + +- [基本概念](#section44851752123712) +- [运行机制](#section5282148123813) +- [接口说明](#section16304193215387) +- [开发指导](#section498695853819) + - [开发流程](#section1875652316393) + - [编程实例](#section0403134913395) + - [示例代码](#section1492711418400) + - [结果验证](#section869613984012) + + +## 基本概念 + +Trace调测旨在帮助开发者获取内核的运行流程,各个模块、任务的执行顺序,从而可以辅助开发者定位一些时序问题或者了解内核的代码运行过程。 + +## 运行机制 + +内核提供一套Hook框架,将Hook点预埋在各个模块的主要流程中,开发者通过注册的形式在自己所需的Hook点上注册回调函数,当内核运行至对应流程中会由内核主动调用Hook函数,将当前流程的关键数据传递给开发者。 + +## 接口说明 + +OpenHarmony LiteOS-M内核的Trace模块提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** Trace模块接口说明 + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

Hook注册接口

+

LOS_HookReg

+

向指定Hook点注册回调函数

+

Hook解注册接口

+

LOS_HookUnReg

+

解注册当前Hook点的回调函数

+
+ +## 开发指导 + +### 开发流程 + +开启Trace调测的典型流程如下: + +1. 配置Trace模块相关宏。 + + 需要在target\_config.h头文件中修改配置: + + + + + + + + + + + + +

配置项

+

含义

+

设置值

+

LOSCFG_DEBUG_HOOK

+

Trace功能的开关

+

0:关闭;1:打开

+
+ +2. 选择想要注册的Hook点,实现对应的回调函数,Hook类型清单见liteos\_m/utils/internal/los\_hook\_types.h。 +3. 调用LOS\_HookReg进行函数注册。 + +### 编程实例 + +本实例实现功能:模拟运行时malloc、free不同大小的内存,记录每次malloc,free的行为及时序。 + +### 示例代码 + +示例代码如下: + +``` +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "los_hook.h" + +#define SIZE_512 512 +#define SIZE_1K 1024 +#define SIZE_2K 2048 + +/* 回调时打印malloc出来的大小 */ +void MallocRecord(void *pool, unsigned int size) +{ + printf("malloc size = %u\n", size); + return; +} + +/* 回调时打印free的指针地址 */ +void FreeRecord(void *pool, void *ptr) +{ + printf("free pool = 0x%x ptr = 0x%x\n", pool, ptr); + return; +} + +void TestTrace(void) +{ + char *pool1 = NULL; + char *pool2 = NULL; + char *pool3 = NULL; + char *retptr = NULL; + /* 分别为pool1,pool2,pool3分配不同大小的内存,用于区分验证 */ + pool1 = (char *)malloc(SIZE_512); + if (pool1 == NULL) { + printf("pool1 malloc failed!\n"); + return; + } + retptr = memset(pool1, 'a', SIZE_512); + if (retptr == NULL) { + printf("pool1 memset failed!\n"); + return; + } + printf("pool1 addr = 0x%x *pool1[0] = %c\n", pool1, *pool1); + + pool2 = (char *)malloc(SIZE_1K); + if (pool2 == NULL) { + printf("pool2 malloc failed!\n"); + return; + } + retptr = memset(pool2, 'b', SIZE_1K); + if (retptr == NULL) { + printf("pool2 memset failed!\n"); + return; + } + printf("pool2 addr = 0x%x *pool2[0] = %c\n", pool2, *pool2); + + pool3 = (char *)malloc(SIZE_2K); + if (pool3 == NULL) { + printf("pool3 malloc failed!\n"); + return; + } + retptr = memset(pool3, 'c', SIZE_2K); + if (retptr == NULL) { + printf("pool3 memset failed!\n"); + return; + } + printf("pool3 addr = 0x%x *pool3[0] = %c\n", pool3, *pool3); + + /* 按pool3, pool1, pool2的顺序释放,来检验回调函数的时序 */ + free(pool3); + free(pool1); + free(pool2); + + return; +} +/* 在使用Trace模块功能之前,首先进行回调函数的注册,注意回调函数的返回值都为void */ +void InitTest(void) +{ + printf("init hook\n"); + /* 根据想要获取的Trace信息选择对应的Hook类型进行注册,具体可选Hook类型清单见liteos_m/utils/internal/los_hook_types.h */ + LOS_HookReg(LOS_HOOK_TYPE_MEM_ALLOC, MallocRecord); + LOS_HookReg(LOS_HOOK_TYPE_MEM_FREE, FreeRecord); + return; +} +``` + +### 结果验证 + +输出结果如下: + +``` +init hook +malloc size = 512 +pool1 addr = 0x20002f44 *pool1[0] = a +malloc size = 1024 +pool2 addr = 0x2000314c *pool2[0] = b +malloc size = 2048 +pool3 addr = 0x20003554 *pool3[0] = c +free pool = 0x200002a4 ptr = 0x20003554 +free pool = 0x200002a4 ptr = 0x20002f44 +free pool = 0x200002a4 ptr = 0x2000314c +``` + +根据地址信息,可以看到free的顺序为pool3,pool1,pool2。 + diff --git a/zh-cn/device-dev/kernel/figures/zh-cn_image_0000001121429646.png b/zh-cn/device-dev/kernel/figures/zh-cn_image_0000001121429646.png new file mode 100644 index 0000000000000000000000000000000000000000..2d4c97342491ef710992d0432756a6cd07fac841 GIT binary patch literal 53166 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

AZNt=tx>^w^N~BIa)Vz63CK85(BC6JY#ATvgz-; zos>3n(m?1d06hA@m6lGtpuAB zCviur9HnPrxNug84;(SSs7T$#rl3nK@$fS@+N)=I_=vviv2@L-pR6xt_V!TXc>*jk zq$%Loq+E7V@IFd5uqnzLkEbGmQxC(Sp~6%KrVhvcz0TU_(q2pN2*(HmJsXn< zMHeJ&??L|e_$LY%6hRv#eyix#J3mv5I@A=7XP9xS)825YzElcq#gmxghiV_bNw@9A z6@xX?M0JnTuET)6X_Px~uXEO~a=h*#aA4D5|6s5hSKNeJr8ry|IHR}&LJ<>}XOi81 z=Jkjd*!boAD+V= zYViILp9su23Z`~8_1Cn9H$;|>+BV#Rem8OG>LojoT_C1sjAR(i z5mst*E|1H_qk8I6$&2aVAu%7ch4M(4gzBT#FR2_G^$jE^uVN%dB=%k`NwUeF@T|Sl zNnIh}NP3bJ57uu1tG5)!^?|CuK@c`$9wrVNKR9%}>B;E42-2*AW61YA@r>Ra_D}Cp_nlOD{M@D(p~Me zFq`&}0MEcc@-0iM?xh_Amt}xuN7JG%F?${Z@q}VEPJqV3B~~YuX(77MCUU^x#nAYg zqD?*e$blnCJy-xCc`DZp-q`nBoGbX}#E~d*$AR~QBGO)PJXt-=n_}6L0JbW)Dl9j< zpLSEg-1|b-X`!Z`X_Sw%EN93fk8Ttk&}wMLfojo2r?^G#I2v<>d!p`IK`! zY0?(1y`7B)YyMJ6cYQn)lUm-$j%{ZgSi6v^swYiLCR#R*93m9pjUC?~JWQ^f@%x$@ z$QP|P;|2rO}-OzzATe#MzdLnE_ojirldi2A!i6 z_pM6zS31rvYev^f@~fPD=WJ1Ou(AHdDW&;9edG<6i^cLs%0-(bl^t?-9t7PjaX0Xw zSpy(*J<<-#B&*N{uZ#yz0RB+>Omk%MYWO~ADf;ShmRJGpOwYj*M=!i-ckzoYss zuWUAuwwM#V#O+l;nz?EjKE6~}zWKgvjkr9G9J-B9ZPwT6XV&_%9}I`Ik*gEL&<7GI zdKgiA8>_MY0r_QeA}aU!TWb&G_Mp>T2!2)8w?C_h-9992$H9bClWmbq1TuozBTfut zc35ssPrS!Rj4gdWw6y>Zv>_nVe;co5w>IKTqyAmJQg<0Cf&dGotjZ?v@KD6={n*uJ_4+@8 zSFyzHrB!_B?9x4Y@X$m7J)B;)CiAt_a_(>AtP-qm#j?++{g>gg+!zV{;ZSBVmD#dB z8Uhw0nbfFP<=fHQfy~d;t(R#&UnzK`_x4*NbK)|+(vc5}4X|Kky~JgoG|j4gm|Mhx z2RLc7k>7~pFHfF!$5M^u$qkg(FelD;H%JyO%F!8(v@=++tEMR>Y;K6SY#30pwh42u zh3`20Y!Fy?mMzBW#clMc@G?@v@+`9%b8dKcn-2MC=>63FE(lfcRDF)UY}#~VI}$87 z!%n_*3T|fAB-eVje;xZJ_ct-utHEI1?yj!9VZoQZzE9gzK!Vye1>o__^z8K<;ME&8Ti%u#>D zQGD&iH^2V4n^KleJZUzN&-pOJa4>oAZunWyqdR+=!50SLS?>rS$o`i&vt7F2KM5Na z+BZ*BfJ{1_Jj;`Og{IRz{wKtLtd=_AOvRTKQ5r76-$Ujb>{`Y5?85y0A7RL5KyD$W XN|=R}r6sKQIzUX$TNsrYI{*1kK-_yLnfx3I3}hY*8BGYPt?K}>zJ4Xn6$56Hul>wlYysr6TOFqw>}=%S2^Y= zVB{>c{PJeF9+b2D)lJ#beG#n2%zIdNB8B3^osWOF|LuK&Vf&@zs$90qzj=S<*nMnw z+U}jj);I$}tAY@V8-lM_qP=keU0RmI-ZWJj0=}&1J5#65E>0#6!HPF5@O^9aA+z2} z)*u0<9s4ga?L2ayX}17V*y%8Yx7t3LW1qi97fH4)@PWjDpEd zvj5l0^t3J*sfWKX_e*^F`Dytp&jsl`jD!vU=EP}`8< z9Z8-YEz(fMoCztg#>cb548L*2FhM!X(hZjwHEzY9V7QK1i>WNi;)ZYlqlTpRL58m) z&fI4-uF9y9e0C4Rb)SyD2OEFN$Ecwj|9~+Q-?qDZE%yKK?i!|ytzqdIpNgz1pV|eE zvm~I_7B&tKRgp9Cs&>cbI{4SWYa->m-*r8vg=!cFk?ps^k zgtZYH%Qh#@KMsRzuhjP^4`j>Ypgy&?;+};3n7^%7jjbP8O`Z?ZuI)W%+axt^ZD(*? zI0EtMLd6S;oy+-a|#k zI`O#zM4Gxe)Vb*GatsFccisI3?6;t+-r`{!mV~Ln!$vd{+ zm#@{kQ>Ag6>>r#jI6iZ{*i!D-b(1VzmLo5Ph<2jYUZ%~9h6LsEtV?{w;L{f=Uq)85 z@V8F(7qI5FloB;R4+M<5a$P)Wr?lX1uhR8Em9|&4u}tmhEv@3kUY}ViRYZI5&)2l# zfb6Zr)}^au-}D|bKT+U>UJBw*v6C^B=3&!_AT}BG3wOavHvH6}pR*_FIZYK#D77_+ z;tNuSG_HD1?nrCVW>qU8)!s-$CTT~^gv8bbzxmYJBJT) zEs0N}XEp8(p=C&)Iq@UMN-Hpv5}nM~@J}qj%=cNG#wMTDC?xdR{piQ+4GQ_V#72t(s@( z9ru|_AaoBky$i7|bCvN{VGk|voV36QKKf;xjiPIIw3ZWoM&DSTGKcHNF+cY#mfxJn zq!6{J)R}vHizRCv?S(V(S&nDB)_d}7dx}oQK$7$I-`36c8=z3~J~Jo>IXT{yWgnz^ zwf$Nza%o_sLA^j{;~t*!8;!v8=*XexKaUZ&>n{(KSxc)A88y|lsY z|9rMVUJaqDOe=ip)tNj`vVTi&OzjW-q|$ktMY-qoQd5iqMm|CT=i{#QE|5!oO4D+& zBsh&jKlGA?dPBOBChrYY-S@uhske|nm#f%*a9`jUA*LOdInZI;ERdh6pdx)zT0BQS zZ{)?ud0QT%MhiTVr}DfHM2h$>(%YbJh9h(=dYsTGr!liuZ>=-m1HFJC>GEc==88X3Fwj{Qs5naXMx)RTI@OfQ|U zP=u47Qk?ISCG*6#t26CvVjMIMCTFW;Qu7C0F$Z+C5B}_S?g7Thw5RrkKaZHlmyw@m z$fcL3wvQon4AiwU)$<>I@NnYOicBl5`gxKZaelmg7$LJ#NJZoS^n+DOQ^!cIsQC8r z$F!U4G~-B0pg8CH6w?3c2h;JpZ|m4C5busQ%9|w)ZjT$Ctdz z2HFR-PyQMyJqH%Tb3ecR+hxGmL{fT3%R+O{?b+@1!1&=mrT%zv{<}R9HU*{U^J4?Q z)*wDKzb;2-y`pkSM+CJSw)!4W1%pJ6I3}oKKAPVkDx^(LVI|JNKQ{{zYrRE+^P6b2 z08ubU8sn{7V0lybIhISp>8|e$*KU%h)LaIn=?*xjhDR6?-hL^ek_Jt6`<7 zrYBvi`!GBLSOJW8Fz8SPX`1mmE1#3IY^_Y6Ys+!C2!=eu+ppa39M5~bKJg3td{-Kw zUZ)NPAkR!aQq%yt$S{xDW97M;Rj+R`knx-=hY;8TCwEHm0B#IB!Pt9FT#3@2E}4&& z)CBAA_a1`9{9FA%_szQ4=cQH3=XwI8Y3alN(0&)wl8Px%-y2UI4D|T-`f2xVn;>BO zQ>Y4JGV$;At0In0++~cPj}lO%82yHSoEcp2VCYL{v&Jzm$pahUY`U?hT-|t(k2voq za0aelW)wJ8pIk4;a#`O&3wg$tW{ij7ovv<3-UdAc2H#&QzmjraCe0hM`I55(@|`05 zr>&JD!U6X_d%&2WE03j~FgLz@#B-W>v^emML!x5TU)y(-+E+x5V~jt5MP>{OpX6W# zUfoLv8TJpJYCJ2=`FkS#iM3X(2RfwBi{C)Kg%fkLm=q&Z5VEX1h&w)ie86ok6 zHgPz_>kKiK9wpw2rY_Dn*wp4?e&iGnw72A`FVe$ z>$kFLxt}=OuUxzaX)Ri98jbf$%yapzu!t~2yT9Dd-Uj>tsnUZb#BYBGUB2p9~|ifb>O`>3=>GTD$E@0 z^6PxCdL5=#@$WIbV4{Jy$Q@_@ad)@9G2ZK|ZrWS>zr zW9@w7sq7u1V`dbbi-<;^33SO_v0i9#wd;%#j0i*%razZ z3HY{|i%$2&A{yVp`N{E%M%C5Xo^IhW9{d<;Rwa}u;8iYnl}f`qUd`F(8M1+%b0Axu z=~h=GqU^8h8&Q&0SF(n7;f9Cp;B9SSLUZ#fW8Dw9Yn19~9;#C~xoM4`afUX?A9PnT zN{eoIS1d2o?;P~j&ts-sd-XP3mSbm78l-JFXs+$stJ}jD2iBS+*Gp9vLl0RAy)u6E zW{>By4Rmo_j|FrRjPmXMcwcz^*55gAy>6J9ADBgHW}^zLC8;PoB^DJEqlk&>u@27B zk71T>c^sY3WjXp^AgQe8Avt8oTy&MTG-LN{O&(hji2`~y;JLE`-6DmP#uDZRgdFgr z67r;%ZqFBiw=PN6$p^FAU05wwfA@e4)qqz=(*$pP#?xmVZQs|CmSbdT6v+Q+)gn-} z=DVNxrl3?1_Y)^$-oAC!SV1yovjnSJmf9bjVx_zaAJ$rxakq6%6iZxniC&NzMK_w- z&eKz2lTXfoyJ6gZS%*aT=RdG-8QF>aPIqx>T}&NmB`Xx!su>)toY53CjX_mjbS)d_ zxaPbyGkHBzZrUD5Lwg9M-r(X4qw#B@_ZpVfkZr*#HMavKHFC)07~4l=Afi`sg~|eb zlK3Xu1N|auRcB)7f{S4*Hii@(&BgYrjUUN`WOjPEc@n3x(skSk1CaqET)^J-e*f-N zNu1!~sKROYBNZvmXWr?xq)|FGNBdX&*gnZ~*W~%lze$&c*2c_`ZDR#6`HF30WBr9} zIqE*O^C&ezIE;2e;$Qj8c=M|8c(>Hloq`!bd@e`q!t}8lM(#IKoO%dL(2X3H9?R-> z6slx3;0%Q*F!mCl2dWAi0l@{aF$CW!G)YV~<~8RyxU}9M2Vc|=v38y}++J0Zr3-w- z!m~qiSTxeC@>}!$axRjbN0Qa}Q5FG9*SO|`gcT_4l-B|M9o#2jFlw}%yvE4ia~`*= zGxdsgA6*KfH}5Q`wxeAx2Sdi?k%~ETryI@E^8H-1N@kpC31*WM{o<;zZfG!kk=zL! zVg8dlha9j+>lNgh_+SCiih5FfV|{W}G^O$Lskabd7^DJ(xh-2c59{PF+hrfc(?$l? zE}n5c*M_EX%_(A=6Jd(zXdZy+1;wq8H`}SNVQls z>F>eZU3a5)+)5nfF|n>&`jd+0UxPVmj&MG&>x^LNRgA^>yT7+znjB78d<+H?brC5G z{~k;@9D=pTPu!QI1(X>o{MYY{UqqBE4~` zi+>NrnqAo}aU$U8QK?RCzJK+eK-n#4;mU-DLB;&UsTZomzYjicP_{hY4vYjvP_C!& zN2#CE!EKq5$qqkYi_$oxm@7Klrj7b7&(v!GeUEt`uwVuDFuM2fh{Lg>0f;)YbAjQ08rg+JZpg9Etw){gpZj?oU&ROw$rc1a&& zD>y(I&pEv|8ciY2aXE61sjo*8 z5AzSu-?2ePfcB1!&3!H*O03c7)dA1L1%mHZFL1+NP zq3=Y1w-Z^#$qa6HqQG;DDrYb>f2jtP56-;`!kphCnV@Jk?d=vo;Bka!kkJAVz}N0_ zi~#y3AbE|cOy%06+h9kL5T>#qo6RUzz|PnE7Mi=khYQEvi;|02Qh)$79C+6c8#?C# zdzq{@Q`vxH-*sTOop=JYlIJST4m7T?^HZu*fBMQtCYG0B%v^pW4}DpI$C0ngnLvbegFadgllVBY{|xM=`gWifjV z#$`Vr-2-|*aQSG;PDTMn+4u6m?DpRgyzu9vOZ$LFyeHy>|6>eriQF?Qi{jP)Y=0Q&qrnJBPYkX0;gGkZl~A7dkWbWDTI?ULK2%f})m zIt+QmZYAQ5UA6OGGRei+?ElV4%gMjlH$Px`%yRy^{k))ML6%^Pm&JpL!Whh#d+0-9 zJdDhmM~B(s-HwtSd$dI{S0Uczzgvhyjs*8~n5BsOo_ZF}NDnohoH`^gApcU}Nkfuz zeoUey&gsBkM(&UZKQHC@VQ>B36K6|Sj*0bj9D|}oFE5#B**R4YJiNrpNJ3c!BSd@e z_uhYSmd)<Uh4Fjw6+XLJ{9U= zX|%qNKXlwfS$S$Gb+pqDym9jQ&P{BSQ|u|y=fc^`BC6yDv3lA9zZ`vMIaF z%bd04Hp-?Uyl`{A>MUZ+h09p9;qlx91YULd?eiRX8m_&Pn0kVewH6{~URJRp<*lY* zD}1iYO6*f@g8GKQyM5ptS>3>V&RZ8oJgb*z ziHJFqvcyJkz7QfCe^(|xx(Pvyzwj9)AC}uvx+S8VdQePBnkT3AGPI&w zsIjbM8X;yL64rrkh{Y#pM7Nguyt0Zs*9M6x_#|95jWQrfGSYaS6Wf<*e@o*DQsjR*qxmVJj%5w(Za=$enJe@)< zY0#D^x9NZ2NK`|RR`v9Q@0It4s0>zK%z3Dfmrz|6JGdN__J4TF{}0ds|}TKQ5qDx6^z|-an`L5@Q#=@q`N$<(~1* z+qPn!7+>;_I_xG2EBBqAGp#dIE<~r+lO{0)-WoD6GR(4N4o@v&W~g)S*~qQV)+1n^ zaTEXo5N7}gjGVTgDerYYx-b*WBc>VPF*7sZc?VP1)?-UlA_Yh12SQ>D+xPjZsi@3< zRDM((x|Q@t(l}GZmQ!3@M2u;P9+_~4YH&aBEGGLT#4K4WUeChJbkl`x^r$HTLM2fJ zXVSJ#WI_-YGZ3ZHKvU0#$Kw@1mL`!K+iQDwnj=$W-|%=mJen*Qs*N>rkIGB={>P;l z-)!K*No}{@QDM`h0ix1f9XpJNrIqL`ig>~5xY%uFTWLIm#4I8pG_*S`0ouoQWXsFt z@;vwR;m7Ofx!W`D&kaJcKUREvknCH=Zw=StkCtxAwUoBB-sa!v1LM2HmBQDC;7F4> zL*DXc5ybF)#+}{NTfGl|zgyHK#ua@`Dpl%fBOK`&u8ceSg0GfNC1YYUV9~#AtymME zo>J8-vYQ%>4LB?s8X7uD_eF%Roq6sCiw|}W4){7rEC|`!2o0T?4Y;jYJ5D>iIXwn) z3`6Q1c2hz^V!V(GRb`qIlYJ|#$?s&|TvyTMZf48Ve`YeC8-*L&_-{>2jIuHXj zb<1kcl|l8HGq1TiDA5+Il-=V)bR!KcSAx>uWH3S=++)Mt`M9Y#n8wcEv&vJv66Ct; zspSvwQZd=|b_yfGkNoB>Yj%h{0!xR)OiV0)vr-R$mBiGqBv@3CZDnk&Hm&d8>*hL2 zlvO1fNM)aM`3;{J6R=Mdo9_chsM5`_)oaDptGk8>Im2sRnZq0UQq$^9=8M6ro?Dwg z)^T%Y^vzb-)*V0U;IJ_rvlWX~g|UuHM!B2hbt=7D?eAFiFQUWw;dqqJXsS4D{jv|6 zEQ`RMYdc$$oi_FqvUhLa*mgsB*m;LF$!ZZ)<;u^!i&dALzjck|_CjJdGnL$pxMnhy zlO&D!dtR0Am`ri~uD~0LH1}D8ex}q{cA#T#ZM>~R*m$Y1Z^d(9S|^lBQ9X<1Ub7Vb zwSJjG^dOBArA`aZR__|mf%e(wXHw_qb;w*+{x3+Pb+=VEu%=NJ;xCq`azu+Vr${4~ zIsR#F)2i*%PKPIAG=XOi!MonA1~-W;g_A=sC$2?DKHI)_g_Q}5-JCiO+`1BmM&7ih zX6-&*w)pef71rB8S~D*wLY1u9D(AICZcaR%3AWBy^Yg(kN!~s)uVmaJr?t&mh(F3O zM$kU)Jpk1p{7E%9|3x)qwBR`x^Jca6ePp}Vlhgz8!(0pNCki36mF1=x0f%*zu#U4O zt=sQBa2KA$c4F&+Yxuj?s}e8W?V(=xY)H;Q-2C{}-j6qF-RgWVo;OAjOEv~5Zv^_2 zHCJ2ytI*>$RI@9tb!!`Y?Ear)4|Q6xErCcelY;SPA*yWiiW3PJCJh1+E?>%_sfDj3 z%6Esg>^20H8FcW@H&AK@9qNLbcw^`CseRnk6@I~1IEF3aVlH0GJ&{i)5*j;@=v5X{ zB3@9*TW3&GVLEK?AafR@-;#5}&OLV|zx59$v;4+nSxOvWM4F)&1N9~b%3ornj}P%Q z$>o)6)~~qAoYZ%ht>B$OEL`9X?$06j!GfdL6HCiOa!^-MxGK|zppCaQ_l zuf1G$1iDuW_Q%=N3St!(x$=js@ZPL61CmE;P{K;q#6$lIAY}rsP4Wi}a6v3UpY1M{$V*mX6J4T3_Ff#0Az$fej5`k{U-H~z<^2xUfsG82Y&{Mtm zPe4`%ijYDRSnMhOjLhA=)h~O6QA)F5D-rJgy7#Q2=(YrErP4Y<>nQ_{$QjmEA}DP+ zF#D>al-Og~Uz_B23hxa-Fc^-N44?2Oqg31!cFa2Myu3CmkR5^=sZBBVu{irY5Eeum z&lQoY;ghKx96u6uLN@cHlDiZ(Ff7~_y>|REbXLN6#2e$iKr5l9CwU?Na^-Jr7bInFGvDiPXZr!Ed3>Pg}sSYkZ`!~hx&|D*Cs;00ap z!}pTVzAo9a76wvc1F($f3xUI6W1ya-Nw*3_IycRL=Qej`I6$Oh0X#3e)4>4(kYM2X zs_qj|YVeW`z&K*@+bui;S~zvFn$bcS@b|uE<{hA&r@-G&S@9qzu})%w(yP}wdBH*M zD2v(;KKu@BPi;^Qi3u2;Gf1brxmNfqw>u@_Z-EWyYb(0yXS!shLc{*x$$6&_s~vfJV+3zA#qKJ11S{dM@}Hvn># zZnKI=9$OMTeff{!#UBTti9~zqk|Yi`(E+Z>ZTIl7CXdCK+_#vms?ufo`83Q1aD?xN zpp46sIO4aqH-D5}0-)G{zE~{ufrZ+Yk1T(f7LWvZpFbP2f(y{m7O?mI!OWh;0)hxT zJyWNp4;hE&HXluxn#1?++(P{^OJSjcji_Fcp`x)k7_Bsu0d{bSx_TqIA+xe5bU5)_SqtoEmv_D-oVQ`aO_ zyhG{Y+|9)2n-?Up3BlCn%>`7von3*se443i&lLpjLc4D<+Z5qSOmLxN-?Zf$t3!(7 zS)pa@fIc9|=%_Z*(r<@Vvy`@CajNDaZ&$&lLN@8iuSMPBfe39}U{84|@$HLs*Aqv9 zV-fi(Yf8$}|3DepqE3=!Z;NeK;sWg5dRpFq;f6H1+W!?7j{v;R@=KBCBq&GbQYzrf z%3+s+BYO^Y-F)9dbrGxFi^KYVDe94gVba(OKI|wZ6rgHd6F`;mw(&sDvT-YhaS)-q zGK|~v%8b`Cj5}mlw&ed}yn$WXp^afY%G*UQZ`(LQ+G=Rqc+Z=jpkIv#3zv=AFpQf% zPh50i823_@8N)D)8wFdo<@{oNj9tcPmSJ3%>a3cyZJa0z+1xhXol8~u)p)34*>^jJ zal=Ty1!snF4I7!3TZ>oZE?$bLUV5ex-3e;9NpI8Qevmg{1TvKZ2K7G9Isjx}5jalL>&_rv|b624pMjJ}`g4vtmyuzj<4 zUvK!@euwTqhZ^-`=bTj2)I%4^uYBoRoLL_hJP`}$QNsZU#+-o>pG^EWZ~xNUGlKz-tdtB zpq;Bnk2+sceVK}0_|qJYd7Jh{bd#mrq;Q*c1g4IVZO%VPgMCOvHN@sGqUUuKon&NH zC%=rpwiHuE6qEqJrK%+M_)VH)hDm<8fmT*hxO1CbkA&Yd@LW+deAGg!u2(c-f%e)W zV5lFW?yCktTd0donZ|OQ54q83t?HY_W-d++{l+tP)m-^piG^1b*MijR*+it6TCRE~cdV*sk>NOvMz!<` zDQL75DL4IGQ;%}^oJ_c_r&4#kf}N!NPIlk0ry6~fPj9`{?YX?nx2-QRxgU2`+y*$_ zo^o=DUX<^w1a~C=p?sdRm+ao6$xS(2ls0QyOx?B~CxPv_r?notT1AEk=HB=IdOypA z5q?v(T&e-HazMtK52UThP|v^Ozs&Kfb^WGmlI|$?XmVZX>6(I4O^2&0dN=Bb7sg&^ zEfrDZno3NJ5gS|xLS;5*O);ur={B(-3ps;Oc}B>M*F^C($mjTV7TEE-r>~%rEz1B7 zC4m<2%J8iO^gUl0-0vY#$U%~&YA)+zpp-fD$xnb5KmWC*n>ym4^Ie_Sor{pz#V@^f z6owd|bRQJ*hzpsj*W^_(gglr=U~fQ>67RiUnV<0H$P`1*>T@pMF8@7kF6&|ca2dR& znEDB6;#tJq8G|f}?jh3VN%K;=c2WowYLnp6Mg$RG9zMSUv6(hEs2DU?96IC4;ve#~ zN05dB5#Q=RAim=IMc^DitY7=1?HgryE60N+(E5wv#%t($FjgXEQ&+z;t*6@#5{uEd zHaqc&AeJElv{u}x?rp3d=rIF>!J?l5DY%H?BxOfG{3P=1{*%P7R_en;O$Jg_>xKpH zbkAZqiinEwv2&OjiqCqgH1)CM_mtH)%chZ?L?QvEHLiL0-jYPoKcYbS>KM08qabnr z+~}-q!NN-Wt8lA=90GfnmRs>fpD6r`a8LMWbmL+wHhVZUl*6Ulyv8vJc**VHi2ga!!>sk^BP^5yz;T= zH-rOSS+bnLQN(m$zkzLRz;WLUGt7}(#JQTgQD~wZTONQ8Zw7K)Kny1{7eqZ)rvcdL zz?F@SkE8v4=!W*4FRMzTv1)R;gJvbcYiM$o1P|PwzFgp&&stDIO4H01VSHPlI^k3~ znxG~c(fFG+KV<;GpBWV2DLO!%t}UEMgUt1FyQ0Ue?Ryk<4U&4gG8M(F6RkPR~1Zk2`TV8D7GK#jeF4R@; zeAnuLL)~EAh)xiNFzjl$-5hE?>tj|mA~Q!UA1eK zU|AC(g)?Omi8*Q3@FVwQCI!vQQu~4M6EfObTEp`6I%8d=bPi>D!e`STjxK-O{yIXf zNkokZu_@5#eqg7&j*gvVj{wC(09!Qva@ify1fPcl-x$=;sysZr+F=#xeHK{}(YuC( zg)XJelNQLBIsl&j)H8ME^VqA`5R`AyUmzsVwC{EsQ?u%^lq7W-DJ(5d9lMrk-y0fJ zGQPGnyt(m>o-|y%u#raG{Ptt22AjVSyu}|H=#y#l(JH$E(8T%=X)>w&h`hDG_wxmW8W_!)L;|96a3BmOY3SrYYxkG zeD)q}@(NrXW5-c@BZxa=je~$EQThY{k4QZE)*ppDW3}rqYAS5o%3s7(t&4w(sYWNa zP&+lsZrByTB4ID?IVzRWE)gNI3nG?f+cK`{yTTCa;#%D7)y;Ji7YzFao49tm0^f{alUWiKP6}SGzt&tS@nIP+A?(r8WUnKT zvjU&XugVfGN34bgGqdyS4F4IqR(<=!Ku~Ev=E>bV4i_M4g<7ZQRbk7BZeD0X5 zNh;5DHPX=1OCB?vUq4j9a^<0dv(T|{vHKUwhqs|-x(E{d4#jd*T(xl|rs9t17<9w< zP~a_x^p%~B4fXc`8y=)ROPe{mr-^0*V;Zwgl62N$JuD3W^9PTr^OL;`iJg z%!9=cjf=2nv-x^axAA&d+svsfhwkE8qLQZS-MSlgVnrsMS<5P22`(M7W*T|?aZlW6U8V0C8>TJ`MOpdu*tVRr(qD%GBeSvK^oC~{m_|rQw z=FWwL)fe(7PQL3NH?B4089UmvM1RxTIl6AR+~e@8^2^FncUq7dY%iX(O)_(13?3P| zOZXF#E+n>&gGjdguHXL}dNOhy0CU^9h#AaCBTc02tVD<{!?YPIK^&A!7gem>xE}CS zi(j9TV22+GIHsCRjotpbW@R2iP98hCr5q*rvTn#~*_GN=NUWY!Ee<(R5+oETGv{AB zW-?KE8&4gAdu&{Aq_-@8A6_)aiTt>WH^z$6tly&HYgJbr5Upd^))uxn-zQI@6=CHD zgvMjy3ZK24b|>D+#+L{gbV=>F=k@lvpl;0PHf*@Xja3MZ;f&9RE@zHD%#kn=O=GFP zNN6w=`Z<O;?~}*7cDwg61CZC3kb^>^sb#nTdo?m&yA17XQ!L#?a~|QuIJ)2 z6LakRK>U$C*F@5_94gFxsHR3};$o9~`uLAj0%ps+8dCe7k$ZG}Y6>vNy=KI~mbpt? zw}Tlm^CfO?0+K5S{QML)@g{(o?TJd{RqDtr&k;ZX5P$bOT$c$D5)h>(1V+;!n+oZ6sfLpmlX z=DpaqV=@CFt3QfNbOQ#RWy7`+&lMk}T@mZp!C=3;ZV6>@34kI$5B|qdXL}wb z@_`a(Krj~4jG!=2f0AvrEi+x<)|8YHO0Dw&V!Ogm*fmcqkNqH5r|8z_!^2#!t7L{g z-_t9TI9BvM3Hi?K`kRNA8);js*u!=~)8w}hv-W)&0P(@?uU(z>WX)V#hTxPG2!+)a zZE9Nz!!_`gLG{ha4>61n$gR`1$tw5>=5Xlx95UnJD2P6*k^zcnZ#*Lx1i-yn4_%+{ zAR+on+6{uh8dxWGU4M&0%9m6FnO`KpZzME(Of`NAZNSv|ka{IrQSD3P3^+0Q~8gD+{&6?(Pamw3@HH zC!7s2X)|P504$3G@Dua9;U{-V91DAF_o?<%KzANpbJ967kq!XK#hng`$`X=Y;g=i$ zSQULT>fR})uw76z{3rmZ{_QzXagOV~D9!fP_`a|T0MGRcF7n$lG41#O{=Wd*&}|=3 z=Ja36Y(GyPo0S6qAEsXS$WA@rBXR{3@pu4^0^o1<+CMy(#BIRd%L{E}?zpo~-ZI*K z@%;`KYyDlxW1BQy=zajX{=i0bSY7)RG#$F0DZvZ?%jVZRWN=$k>e%|~dQuc1u#@3h z30DuK|3G_UPw<##CRMJcvz38gK(@2)2};U`%*n>jwUu-y@h z{1@0`+8GS+N}7!w6qJMhM1}8w&vX3us8s*K7XjY8qz4d5-{2J9KLvR2fv<4JPX3rU z_-Dm-1;Bm7R41Qb?27&YC-O{=q<1?ca{It7`8jP(|r3@phu!nGqXg*Qs$P= zULhn@Ea8a{Fm-(^SMlkw0PbdkM50WOV89F3M}co8|A_Xbl)S3XAK`rYSPyB%(H~7$ zT~(+*Mew5g^02Yk^tPCZ*m}Z`f__mx3*-KB$Il(3Zf#D7aoc;XPsciv4-eW45@2`) z4Bj|@{;>TzlKl2R|AhX=jMs`w`?n$9)n{>Zb)O+X~~g*34$MdS8+pU%-#xb>8j6h|%!f8x}jkxkRQ1Us|`j3@Bgi-)=KXWyL2WBxRrwRD4j>nJn6)-a=0yNkG!#uFFH!uAGCM?|c zMh=|)ssxZVpAcx?b6Nt3Edk>E>Bbq76AZYh&bQe~q<94OVEByT)ueNH1d0AQsA@#w z-5gm!_%Ty8Ld&Wli5sk_{}|!CWjvU=}9& zUs;c3QE_8S6-<7u(RhysR-j65dkHVEVry{mM}bK}2NJRDJ}qK18%LK{zSb=5HtVpk z`a0bG*H7m;5wX#ut>UrK_2li4mtoNv1MfwsQ*8wR1Lo`kF90?cm4pRM10Srl=3yS! z^oU5%--gqs26lYzyzLPI!-^qZVUwqoC}2$VNjkOUINV1d!Uj7I zACIKfhbsv_^9#noYh?Osy;XG^8MjM2L&rN5)?=$oDHR^83RQ)JB$=&J%m=&5uhvqw zvUdyK^*$QyfQhg8_^$`&*XOhAF8&hOzylgQ%X}V4!AJNnqP-ld_8s^~bK72XTMIOv zJ6mp}o63*)2w!_o2YONZZcvABd_9gzZ#3XSy&6>X@+Ap>HfAsxtdTcQ=4|1IvC#~M zbj?E0%er5<3e3W`pNNAcKY8e;MlEv)%b3dq{a$bh&jpuOp10w`tJDs)-oLzFB@R;U zPyPy^?GF{Ku$Bhq;P>$nFo)at=8=bk&RB2ct@)`sN=u6iq+?^dcaORjJ3KIK)+zfE zx>}r(rN2ZDqu4zABXux>FqeG;HeR91eBtJ3VA9bAYGfz=^{2Re6o`EoNF=U5t-UOh zV9?|=Oh};isd}fyWr$ zUA(oc>~>XZY{CYvDq$DHV4Lna5gwIhgJqbp+;2u$wmhB(j)VJ`GPTBUJ`WNhrR0N| z-CEr~w@PjF`V0Dnc*Nel@t*ksgMr2s6NOpSMkI}|>GiO?V-J=bJb=ya-7gHl!J{~} zv6Mc9`=LH-s$<1`J5HUktt+~_?5xeTlro3Co`|7!0lV#!AXuX8jV$SCd;kKg zUi9ykZqs7NEk;)z!XvgfkStqWHgy^463yMK~3#u=PY9JZbI zK8Gc&I}YVNv>6oRP4z*WjawXdSC!JXA%4kuQTqH$`oo@$afIVulLw{Gvv(3+98?nqbrid;qTG8gSPS ze7bg{tx{(>-^MVX2tCj0{JRQj)T=SV*fP|s;|=!k@S`nH#eXVk!x6~X(7W2>#4rvX z$!*3WDX%LWP6rS03wYp^I*(!^LkVC_$+-%yvI$t;s--HBpefSKP9g)MV?b*lI*v4tPRo?0Nruwv7N7lx@+N)p2(h`OW)Z@#519E2>{*bv#p`v(|2ULq+R zpB4~IZgBg!;I!6=GF`&3p2&VXKD$_)8#_LT$tt*u<8u>ilvHSiyS%WNWKT9-$yC7~ zd7(B*GTVdnC=~`{#u%m*XuIf=kV`yrnZW3{EuMu#JBlv*buQuctmXFgb-*56{#~ZY8wbUMGr@#+<{#Yo*m{)n`)rp_i*Zx>;zU$tDLau& z)FAK!Ey^ne)-ktqO-jMUPdM?{Vy^y!XVn;^Vz&K?l*66Hui}SYLpDeKF)8+89J?LM z@L!=BDOWN~_WH%Cd=HLaBsZ^j?Cxi!oF}e2q>m3ZR9|!Kp56#>wc~7F&v&g72P}GI zjud`J*b8MSnHv2A-7ULu_C-DvGH(+=6*+EOQDHzP1lPw5l19BaYmCcK_fq zN1@18z|n;B=;+FgJF($BH)_ia7O!i@0O&V5ZfF|7%Mu^46<+;^^sWb0e#(lfbG2^K z3zQ2m^dv@+G`Y*Kq3LSzC4^wJ){=Xo?sWrx4*quHc_6fCq?kEz-Gq%OW|2LOJ2gh( zz@8tYj#6DXOFLkE_g7FT5(7C2 z+Vj%3dDfn-`&J;S8?s&e@DQ8&an}AO&8Y#qDfVloP@q2f>4F{Tu+`UZib^TSuc4;F|4ZQ{TAVC_*aoyY} z>pGW_Fd#+RA?v5c@Ul30w$GRTAw?Q(oOm%7pQz!xc;ccy_YNja#A~aF0$zx<)_yu# zLDiu#8zm<2?$sHIii-s#4)oM3DT*N8B}^=)*cN6g=kl($& zMYdlhT^C)YkM~t)d-FzoDbCmMvL7pphtkw+4I)ZahdT_Z5pGn>#S0rz$|2JX{6~m* zgP#|dOHemPoc=;0*{+d6i9cfB{y?*8Q*$gNc*mKRb+>kJb@6zmU1|?um5$*#_dp`- zV#{O+#sR>aUt9PrfK6>Nb5Olb`geHQ?5>K8-jc;Yz}9HT3NizDzd=@pIN?dQQ^7i) z(-DlES>HoFdV}A+d?c}5Ds;_bx21Tf*uAAJ#cRj^I*j?i6iiNQ`;OaKi$K__UYJ!m z+39!sx4;^u0efQ6w9CB`51e>WSs&MFDobO2I{0{TU!Gl><;QmSa0AgkEJ#cP2 zLomz+om953OaNL8wse437p!^l>zlBzZ!xQK096kp-Ol=`^x2zG|(xlDz75?3bKU6*Ff$KPb@@@ zv8lYaBaF5x0EHA=!zU;ax&mD2`nQEb4s0qW&OwKu7i_R|&VjOEQ*XZq^go#`K*xvb zq%2t?xy26Xr;-_HKr9CV+E<=!4PHid&bJD4hL(E=>;t( z0z?#`-xPJISLiw9$=Mj-6< zFF>bP4Z!=StF1Z-`f%5zC(|z_X+ahg7GnzOIs}mBYkxY)%LfbfnTPxM0{U=aUcZ+> zX4!yujZ4OPioCFj_U!fBsUWhdG%D~zN|XgGP?_Yc#>V+JR6F=rO9A?@B+A;`KxTha z-{-i)?UdayA>|9M{a|ttc>pw^{XSr7eL;X)1f_CLn3OG#zT#P@kT1RSR7~@Y^A7+& zICyBFyF}~e!Hcm-b^|&>JNZOW-kAqy-mZG>&+6Xz$}R&boFEZEvMuAVkkG@XhPW^* z8FjrQxkZmlEislz#S3t%C;-c0ajbF1rdoEhC>bTnB*ox_rZ_EyAb?=lfsmpi%4`uR z6~SFn^i8FA?F!xv9U@M$VPNejAPRXo?OS0;_5}ApH7d3T(=3vc(@7#scL5LbfZ>ev z8;C|klwxIFR!HRgb<)(;_4cIKkoq%#SXEUi!VKWethy8G4RXCMgq=Gs)9v3+kM*rm z99cw-yfC9kZo6xf%yZ@VrU&IHlV5;!Ne-Z$sNR>8vA&<1Vs5>$BX!Wh43`2eDz#9{G`SRA%`4Vw_H2)$>v1>;%fW|8wB|N5~A3p|m)lZiOlH06mr1C#{|At7PeOK8luVzD?MNAr95q4S<$@l=`4uH zL?4n0n-B{H)qJod?R!6F@5OJGf_>}$3*ymkWRlRUxEq4t^3W2eu$VQ@*Ml4cqT=hb zIqSbyvoZTrFCvUyCl~H%+ykQ7jB~_Xg}CiN*gJ7lxZIA&^vLDFjw=!hx=2skkII+| zKY{K$g}aZa4NrMJ%FVdNB-bO3xr`z?Z@DfHM#-AFK1l$h1iRov2B)Lo+?ms8=2M9b z>Zk#ESY1IE7lIAT;`KsF5<1rR3$j;SldXQw&EQPrEv~8n3xVW`*<6nanMo@FrRhb1 zH%=dPyl*`7cjM0;#`@B66&IGy_0AOuR${41MLdY*;+L9tmTFky zwN?E+(VLphe(lThKWgy6eubO<(VqvVtedSsu_-ob$=;H;G06O0&{J7^qgN=jxW~Dh zIBB`SsdM*v(#PF%;C7nS7)08A&Xt_Vn>5V}89Y=f3HW^t#r?PQ4!d^JUzl9v>{^Hr zt}xG=a_QR5PCVNRbZm@+bO%=mtv>VP;y%#wl}7qqDBXz6ec?(c`#|HE-q|N!IqjkC z%N#%QNdYRtjNnEnH>&6M`O%Z7_=owVCd-wIZ6>q$H*1E~q-{5{dcL01Or%dzZXWQt z4JI(YzwQqR)V$f$eZEvEr()$E{9@v~$Gv#@UQxONnF575Eh&G^6sDwb3k@@HDo#!8 zGh&JZx6z*`xJ6e_IG#70xVESefBvi(Y0=4qJHeXCY)Rn+8V|033Fk2azR-mDW^Rf3 zlL;*{6Y^FH@y!BaAzJT#usGzVH|DgzY4@MoER6=cg2KWdCl{DfKOQGNw<1*sH&di` zg^nzW4?lZeEDsej#CSm(Nd!QfgGA4ze1!`BuMxnR9D2M#M~_+^X!DDju9l-(hq_d zQJa5Q%EwsW81VzLVv~;KQ1P+N(HQI6dXf6DHy0-x#J$=?Dwp1-WNbDLx|_!l8*Qn^ zUU(15KSj9Me8I^;*vbvCu694Eqy-UQFZsJ+nrerKRf$M zt!eX0DQ{%zizj%GzoNj!sJ_}0CcB{Y*<>oJ8(UoBLn_AHFPpqil-#zPaub#np5A8o z0yD#Xzoz1-e+HdNOq~+7vfu+b6xvuEt&eV%3evS0NxBK!-bwXiS#uRfS+=gd!6Qa#!d!M_`bROpk?dbTZ0`YE6;Ft7_}qgP~+%quoB8 zk3)kygQevZ5;56qhkk@~tirEX(6OS{1G>rHQ_KE#ITAh2BBAKg5rt{#5x7Hi|ExW2 z`r1zli7e6F*XgSPG)26Hj(5juccN2f-Amj1+G>eUD@?&S73@sx`EvEs>_GaXY?)!Y7S4MdQKw2eKSY-Ni%WuoTV5B z;M{N7L>j{*8q{cNU3aHB6wzy?WiBF`<>>V%NTOJ9GHb00R6Xd68`U=Q~;&rKo9RhKPf~bh8rPJ40^egDTOwi)v+x zgUZ6k+Fl2Z^l>k;cF5P0*<=k4r^Y_`VWlw~t8$Hvb5lmUg|C|@_r4o!IV(>t@+V`R zxRWkAi1a?~Ht2qSjXt+#cJJOEZ9kQ#(x%$*0AHa*h|O+Xd(6C6n-K82C>{ldC4|h) zsy++(^sT}B-QOzwkg-EJesXF-%1w{tz6oHq)WU59@&-Lx2>j)C4!sW5zOr0Y7Jy|P ziRFZ{7}w%2=p1r|cTH$M9S*ujvoGE^DLdSmhv=t`>VZX*=<|mt4GV&{zC2TGK_Hq`63d%iJXMwb@xGPOU>+m~Skt!$u7Td=}HOVt2}L z-yV;$o;11R@+}JMc&)O&d`!Xfc5u_>^!(m<-)Dyh?i18p>c6>O$l2pP43y%<`B^UucPeV%!WvxtTx7_%NHp6vUZ*g zlcy}l`Tjf?v6sgSGuT{5-D_a9Vt08mzbzQG2_jC_`s78Y^WDYocioq=*4>(vnOAuG zpG7!uGs-*oZKfq{P-DE)%}U$1vXL1-I6~3Lln;^f`oY`MBUq0MnB7jJ50Mi~5SZ=U zmtTZr++30#E$2+R>2P>#v>`Tl!~MmA2ix8XdbZU&mYDsrLf3olL+}13aPvc-mDNG~(^z@W+rBQUWJYg?+z1~~8wiV+E3M@(Tm4~Hp48A& zzMQfC)>_*48Gg3_4=2%xvNruC`aCtvZL>pDliI9DjOVG#SaT=&x8KI>&a1dRqkLD+U#g6`J!)O9JY_LoR3!F4A{e}*b}%1F z69WQVh6)I9&SgpcR>U+=z~<++uMD%c;HMjo>G%>)Fl^n5d&N>d)e-eRG*6qqUfJdm zDS9gAc8;~hmc~ocVD-)$vt9^?F165_zlqvJma~Lwiqr z=~v-C$N}~KaB8$2cKkJi`%F9zs&jK=$?N$E#KXd(X@b8&ocrGpqJ$OuV`oUotJq`4 zUH0jr(l2la*Sm4+gLdxg{t|nsLxZk&gCwFzgy~veW6O;>->y2j?|X?Z>h$JkCl3C3 zktOzHU(n>2dJpKF)hFg+v29rD(iR%t#`XnfS8KV;^2^jDLHwwZ=F= zV3-jccx&Yx~FU?3a9we1!}ATcCYFLXhIKc_OwgUQ0`vVtS+NC`qn2txT_OtzO9dB8y| z7AK9;2RuVa5p(6=Wh4pgdC*{hAjnpP*2z|UYh0?u)zy*cvA@be;zHA&CabA#1!o_Y&!1_FhOzK#-**P;>W-z-x?UhsH$; zFh)x+LPWIwUZSw50QyDs8K2HuC`l56C_t+DNuZ2g1bD*(m=SRX(DpK2EO4g4p`pBwgy~;9xTSw zDZ4oV9OE-*8EjSY-U4G!Co>)R3a&;RYjS%=fdDJoW(3;VNYNIFIR)icAvCu2Kb+bX zfC3bnviv1wy^-JboZYAasU+j-b3u|U&=?g$rJW2g1gaRQ0=Is8ToHq2atx&CXpcD} zpXd|D73TJYMSwn^pQ~E2&@FS(=jpB9J`BcK=Mxf#FK+H)s&=O29f+!^eL5HV+J|;^ z{2?Yv+7m^3&_Ej3s2XlhZl>9=)@mRk@02C{^r;rZvs)Yuw!7fNM+S-CB>9ek4G0?V zndykybdPINDqQqmS&VbLcigq{+FbT>chWw1Q+2!wn`}U+>kLy|2;W@z1HBZ*eH)Uf zmf^P~>@^@s`H=ih^+#l3l6-i_M|{T#NK@JUVcI7h?P6ZC63Wof)&f!=Ng%U7WPVz3 z^1uA~jl>jG>Y0Wee4%~Xp(NsPPUjvp>@psiU-hD+0sNW~36Y|az)u2xpfP@FkG-&L z6LiXLHXiAd)x4im`T&c1Rm1K=L!>B|O^Lq+>|#OcFwx^_M?2EyF`dI=)e$-Mah&ds z#8HOS@!-V!a|bP++_~(as^~X$AV-x~1a?t=ZW6!rd5>!xqn;$8;#3Hsg(ZocGgUSFYOP029My{mCr- z{xGoN>FTNku_0XPYSbCx9y<5brdzuz3vYVJz9a4zP>Jb3qpp9qB8kuG42!=YO~vxc zdJ3PJjfwG`k%9?aZZ5q4Jn(!8=xKlf`_*?j(6{N5W&E8G$^6!v6Kzh zhy}<+NpOiqeOPN%WPzsuAmk*UU=)(1sxs9&$k0G!tTCT!-8cTAJ3oC0G*;mJRDL(X zvkhhayHDQUVkI~cudd>4HJjaUt>I7TVj|B3$S=xN|KXI{#1r)ZXaE2?i@#8F_SK8a zkO&R_|0%-tneP;yiweaXAul<^CC;zm`p^=(?-qOROQlKd796ijp~tqlb=-Ci=5-I& z!qU10@VJ3l=@`CC50PA`fu0FtS*w8!JOc(OD!e9kd{8J9D#fWpzqi^U8nlY*BSv`8 z5aT(&6;pX^z&*pyB?XmUOhlz-(=_t zUN-gSg1@93c2ubjsTZ%dO4avbgCoD5yE6VlkcmfYV_3k{Pv`Dg{BGs3ZkHt7dqd-5tTnB3|qAFKvmhiujH z@@GmdY(4(Q5+w` z3kNwM%6ub{C9E4cGu9tE@xa+%a_@P&wy%gc;ur}@lJ_jHDiha>&lUF8DPP*z;of8V#VhzV{`bREv`?MI z!c9tUh3uJv9C0!mYFf;shMB%Y|1`bxv6t}TfLrIx6NjGKlE&Prf|yMnZWA$ot}nF+ zt=3fLRkx^1_p(84dFp+xeVHy(H;*lSJu`pDeyzfpEN(IAT_Ap5`mxoMg}tW>Wu(*V zk#8SRYk#m9e4CUpNcHiqvd3&7sJCdyMHv+j)hg2sBTcKuGZY)rLcEDfE5t{T1O6`D z7It~_35BL9^ZM7J6{Vh#Kd)gA*47Qy4kyk0@0MFaENpF)n?DD_qxfz4S$IC zbn`G0)Q93f_8~6KBQDMO1ufG{Bet2r1`3=tP#!ZMxK7|ao^bcP$uFO#;Gih-r9fT8 zVDnEQ3^?SrCY^DDE7@Kdc(p(HN>e_}(bPn-qU&EE|GP^>Ee1QTz3ef&weX{$Y5KH? zIw&*t^8VV#Jc;tmj@d)%j%UYR9qL0i`$2i-^(C45{p`vVpYBrma8Z1%;NKHi-YILE z*H_Zzf0~&P{Xo;)Ug_dv@zGjgd6D^r%|eXS#X%~~Nyw5Mtl;K12JiKo&xO>>ig0`E zu+hbZ7?P{%3qE2a6~yXUHvP!6Y^lFte>2lR>obdkpA}0^=q%45-JIZD&y1&VIc7bY zI<&MyR~lB!EithU^I9+{PJg?B{KB76T0T;`-F4J!5nRYeZ*Y-N$71otjZEyyeAVj6 z#eIX^nD=B)o2OGZJhH9S4!hecu4Eo)D2Oc*+AtFF5>vd>(yKL4rfN|i$$6n(`67|+c}u-@;AnI&)f~f^vwveZRUU`r9iG?ab+7dZ~&E8_JND>l`U=o$Uib z1FFhyInrjMJ>qfwX>Xqq*G4?AK+mKVEj@BA`-1!~l$d{(S%##kOXWhX-2GKKhT65A z#JOp!bQw-Dbcl4X=DNdm#!xPD6Yins`7}L41EP63U2ehVGp}Sj(uTPNgfko6_NaoD zjTGiC3^nKZ{>&FUg`@QJaknUTzGZlrD~r#vz&?kze`pQ`X^K&E&a5f^b9%eVnOUOY z^q(AOKFQM8icgE%fN-G)>i@weR2Rjm%F(4v^q`l+BQ(7=$v2BQ%0Ye( z(Wds+tIgomMj>r~c15Q{)0{u$*jWOda#=|0dgEMr;Y~BHWT341s2k{s;u~Y;(v?CO z3wn#3q_;q4?3fmfq#DDvWhPJkDRckLU9C}_s5j+Bmq#Amrq<+a*D0FPr*Ng2wC4PsA>A; zP+|vIL4JWgo$NxjM$MS*)TI1}pEHu5hu&`+QxS1V>b&13%x`J)VXXfY8IO>h8A^`m zZcq!wD`)zIjui*?_cJDzKZ6Xmb>e*UGmMWRm39t@X{Q@lSn%sIH14(Uw}ki19JwNB zYNDyzrX@z%4liJ8cM$Uvwq$JrLJlStA4K<(x{VMvhh=?!qJoW@ZwmXBX0C2TRAC9d zfD=aQ7!b=ZukR*b3y;;XSU;NZIJ$Gc&gO8?*Rg^B2XKaL=~8l3DD$FU@`S_tE>X|L zZB4MnmKeaz+3c)+6&f2Wr-JHp>TegmdDTE3To7YbI#BN?fX@FikUnrZ2GcawQTUp^ zLuj;Iv?Ar{K{qe8SY~{2?~Drl?7G;Y%z?^Xmn64@y@5eWD=bDTYH@e4R(SBKh_v?o zHr?Eqa;5Tce9Il-La!Uz*U=5zy=!z|_=>2Ddew4YXYCSHq+>2eVxD}4zgh696-PG| z8Sg#<`>-r&UKU}prr~W-#s)1MJI=z_G3aeOOLIG#28pTl|EO39oe?`J%F#T}*=JfQ zDNDa9Y^2j;cM8yS=Bif(IwgR{oG&l3Dtspbb0EwfI3}Fw@9?G2(XT8vK23|sCF$T$ zeI$R)eFPygT9yr449W51+KjR=G(YllZJPhJjGhaB({U(lI54e2V-aHoIcyywy-8t0 zjz;yqA@f~>CXc#wj7GqkjKrLh2OoLky0A-vMdg_MJ%ix-A1y^%3%A)&s06knFkU0PQ(_7Zhr2Ef=hPhy-3g&Hc_ z;+clYeOPVmv#)CLG!2D&!$7rEb)Jbm|~aA5{=_-i#^foNc))PcWncU>clx7`0J#pGAAO3P$0|#@=+w#0l-J^JVn@vwB zf6S{KwO2D^iOupXBJCc~x7+$09X!(OuAQGK+meT%9x*vwl1c+P;MDatcjn(YUToDI zH}$jpd5iq{2MzySg16xK^(4)8y(|#gJ)^4K17GCqYu6BSol{T-rOiB!N!JbFj{BwB zgNCBb1Se@=i?K%%JII9{qBdl&Z}i3_gG^elZS(ENB2GsSE=TRa_1&gU_Rt%B0*jsP zs*53gY3NE2r+Huon9`e0@L}YwnujOZtu+S{EF-Wf`#YiT*P<^oZ_&qK^f7O4rKDW= z?*O5utCM`mw9X3tsucVc9g#*m_(aX-Um*WV1TtE1LS)V?5UZNAIRe!RW2R3xuKFbYh#T#h2}b>}kn5gmq1gXpl3+TaB;`;_#DfLpHvbwNo_egYdNz#Qi^s~x zAL%O&yHXBnGWzf?0#25o^#JNG&svVerM3#w@;|BLCa?#ER__z#10S>S{A?raG)4Uq zmN_Lu1CddeFTdtPXrtsUo4|x&gwWyOjetAXYiQMphlKZ?f!qcWrEpL-4d~2(CRY{Y z8`3;^y>AI*sa@Fb4xsZB;z$T^)SMON{1A_9G!Z9M@NTX&BnVvmGEnEEu9Q*tku-J% z3s^xur@abQjx%%;L#$l;U&e}nNw5?S4$%+jy8!)3XB@b+B?{eTN1#+nONsma| zp^FtZ6>hl8d# zaD%65C$U)v{xY6LtxA6y$_haHPpof&SqmXh;g86DBZdI8T6M` zbu*b$3YOsg6I7Nz90=4j0aM9ZFrB9X3wra^gOd|ZpML|$!D00|s7$K<`b| z6t5qYBQ>hLdjQ2y5a2*>Of}+*+ECNUtzV>EzwId~XYeTuZ>00*09PvrooipwI@FZ| z8k0cpJGc}#n_QcMy3%%oad1v{la>>Kv;MlV2-i%&AG@@pHMestH*1IFZQ6t|tLG#lPUp2)}v_ke!l&U2>Z#5aoUS*hP2#+YLJfa!% zP$;{Q)MZ-wNapwcMdYK9;2V{F_YZMnxa#L9{Rw3B#@(w|n)(KcKVOQR8?#_)t*MAL zwV1t*Qt_Ont3hPvbY+RadWOH6WDppz4>v zg&+}FV@Xt)H9XpMBN=&*x~=Vdtg+b!H+cLq~}Zw56e%|xAx`3KdRK}5QY@lGq*k-g=D$sG<>S{l|# zwW&)n#S}&vc^qam^95f#%|LUOXB_xkg;~3Q2baL!Wt3#v)ZnGxvET`zy%iiwiWQ9u zPfrIHbE%2W1#JP=O4AT#=CFOl>!c>}{{3nEH4*MtXF8ZAFM#s^dLdMuqb z75^uOA0XFa!s=a}&)i@Z&@R6(;bdI1Kq16p{(-&ERXyjr*9f11dFr(6+2w zsTqH!%ssm$5%yo=vrdwd>e`Epm~9AM0CHe@FtzJ>XwYwewmR|WqRcY0aNy5nmkP*! z`|~TvpD)W#xjuvZS*%aQ;KZLlp2WA0x@RJ%J3ttVoUlC!NjN@AK)kI|=x)zFGw5NZ z=VAKU-!2Nui$Jqv#(-a%5eSWb&wH+%MnwOU80t?laS2ufmb%-U!F!s$equR^KB~HC z>jWtJaOwF%t$ZNx;X=RAU`Vh~e+HJaU>|vM>SR!769|#_&?8_5`juO zcwiK-c0a2@f!e6~0n};`fk@d zyWfHOBQ3m~r@FDDIRIo|6v-HN1Jd(E$Gc z#+g%r293tu@pa(-l~Baw|tdCFP(BH0BNHp-gWK+7x=}De5ca6(_etz9$fI*h)4@R zXn??*J+n8=E+r{)yvf{WegCOxln1*%N2nOl*Dh$hT#p z4Ti34h(_Gmdu~r*h_q!a@tKaj--l8;JO-JIgjvh5B8vHc zz#$iJuwju-g52ys7PwA~`tdv4|3Bb)GVGWd=FpTJCa`(SMkP~!uJWX-F`GgyfbJF- z-X6`6_(FH|FQ#`8>Lzc7@)v4s&d@)$`Gz)}BLWFeytE$)5yw4v=ZL`ZY(%;U-`CEO zXUF4;mk(!b1`8lhaW5Y>;eH?l*UnJ`&#RzEa*BDyaknB5drED_WqZtth3?r3A?ba8zGcs^>RRAgOg#}saX}L^VQb61fGkj!0J~~v55N| z5mc22VSyP1vHAQ%x;dA?24iDKp2_d}u|b;SoIq$V*r3;qxTK=DzQGD@IaHl+MO9UG zD9a6<$yg*flu?;S1I5HbG7S}u#Wd^yf{PfHN}!_Iup)|kDozn!#%l!2RrEnf9yt5$ z^~DR$w&^E5d5Bv!I912{tF&_Sh~w}$K20ZEPYuNW;?D=zt0lA%SCxA^xQn>5? z{zdpyNmEl4BJg9+^&~>>?BZa+@X&0$=FBJcalNb}G17i9YSYZsp|z>2NrZ_e9HJWW zl1aNJN`?~R>p3MV$w?(!Dy3>Xhk7riMf57%&gj0pijuH9x2fi z$xmLqVdmmy2XGUOhK&9bJ9&s=K)HG~)sL;fdh;h9Dn>$a@PDmSM5NHmncSrv5?J|o zSGw~+XDP0&$(a1;#3F&CcI6Gitl)vNIBCt<`#h-t2I4 zKdHS=*j=4KD%q>pvyVpve!dyJ9Va{ddO}(o(Z`#tlyFo!gS<169EGg1v8_{8KZgh( z5bZK?EfLf6xd5rvIX?^lb(G=HasYr)ly-iA;p)`995$_O3-I4vHub*(j z<#2Fh{8;^=zWDpwy22GCo(2G0E=sUzBf%2$w_S?n$m8zI2FIsTr(dT0n?V^7tO~i9 z$#``Y5sqIlC0Y0R*7`k?zxsJ6JLeSD$5|wT^6lY$$r{78|<-qLGcg z0)!}s$K&(RdgJ!)6!p0+8#szsx$3bLFy380uLycKf1!f^X9zo|6?XSV&TifJ-i`sa z^d&>g(s}XC2jW8qyuz8{Uw3C?=M=xr`th1`Lwz&uZscLE?>Y1QG_cS+sfMK|QeQ^V zA(()Xj>^ElARCjLwS8LP;SlWxb(WX|oJ${+VEDuH;b}>ZvKQRjL{@IHvA<*Od={M2 z5-I2>$l@anI!A>apK|{6?t|pM$n;-?*Y*Jt9!t>KaTzVRu}5a7h|V|D4RAtiZyY)I z^cR8FP1nO?WsVT@`;t2~I+|Zic}IU<;WCDm&90%s=SDiq2*the%%%H^Zwi>QDEkBfpZw-B`uqUJcPkVEVA6b z)zZOZa;9`jnBLz9b)thLHz+b89CWcZ_V>tf=Or->Y`2*s!YvNKFRUE$E3{ifFOJx- zP8mjozHCBw-gLm#JBpanH`yn5@~_s$MP^!Qu!DL%MWxZZ(7`dv`(998zwSLTci9r3 z$>c~xrLc*pP?@~5bn|XxvQOKg%d4iavS752C;{26NOE+p|IJ^a8I39r^9C2la?&^r z$Enm(Zv#Z0L#rXw&NTq*i1Rl zk9He(zRaBv8xK)iC>0~mIMc&dc%9`i{w2hepz*TILyOH#|4dc=q4plqoy4T;W*2Ez zRS8xGr=iu>xFYn8x2dH|qU5sRR$F1iGvm>YI5ARiK#)?@bn|%X2$V#frdYKyxkaL{ z!JETN%(vOow&tsaX;{QzU9!ooY7>jkm41n$#owvzS#&4!FcV zISK|*tr2|j>(2i%ff?6|lWnVRl)klAqYQrDsz12;A)lKNgZg^@;{e%b#fKKa?IaY` z!Av4CpLxlYA2gpzb#58y+e4x$O8R${iV19N#^Z!7`-crjwJ-r4NMsc}1RU%2BL}k8 zg5p}0CjN?Xm44_rW|vq3+N^YE50q|cVC^7>bESvJ>7|zzC*g^k!;hkU+PulZ&?Ntw zN%Q{rTn23gPKg&08n^YQ5(!$#)Fdan1z2kmqvbgR>BwxuVQL+JJ3I{*jVjWT5AXA3 z)aBeN5|*=#GUl|e8qe?{>`qC-z!Q#jqvD`A#8Bd-MC0PQNKY+^=yEHVGxndUpol)F`;$!&g2U2~{K; z*le?@l1#m^mtw|gco%w7R;HNmInBn|RR+_)x7&H%P`~Xm7qYGHWPpFMQga!iMRwqG ze6`(iQ74Nyxd{hzgrSl=C7=)upFQW*J~Ky=Y(C>9?Eb{jGjjU(tc0*e7z)TelvyaT@kFdYmLBR1rFuEY1^T|-*6 z#2zR5(4EKQWjYnr7Rg6j8NbJ2?=BK-byR3bZ|yzVR>1#*A;!m%Q9s<@y|}hqW%+KO z*~9C^wYAx(mo>uQO2hX|Y>23z8Cff$kE_=A1g*4Td@vgGazk=!U-VSx86)+KOHTBD z|HfEOF^cu?v0~#y|CbQ*+2VrZ^82o#KIV&n=O(b3Px*Brb6t+IIK1y0{=%;nd%gah z)jKbbjqRzrL&7i_i&vnLwsh3(nWb$~TC=oAztzd}r?E0xvr#*Af=qfeU3S(F(mAX!aqpU&rv?UZ`Ge}fb0GhVRQ7f?7~d^jGbnM&$7bS+N18qob} zZx0tCz{*J}5~ZZhRn+0e&noPv0lhqJf_Z_w`*V}V)jR@cxiQ#8>t$0Vi};HQTmu~V zd1hwjO>}d%UupFT2iQN9bP{e_gFbkYYWH@F4h#UsU&oybc7-HC9 zcA1wUc!vT#WScT%YV+nChcEm(aq7Zj?kjRY6U~3kqmaDH^|3Rn6DpC+)2u> z$sbIij#lxJl;&qwSeXCP?}=6eX!OJDDb3!nkR`cKhZjctINbwxj&*qT8@GB0izR%7 z&X*xsgqVrQ3+J4S2MP_}6S_gzo;m~Nn-e`h`v73usTTfa zLkaHw$y7y43v;VBXDr&MH0$8r<~FfiZNtv$4})>YYKNNc^y72eLW4kP(6dACWA1>h zOwO((r0Lj{-7Kk^!GY(SJ9&z4_5&n|ATzl z>zTchm@;?HdHyLE{+)yZaSfm5Z%d&~;En#Mi2o1qcR#ASr;lRDM70)wL};sX&hIrz zk=Y_NMsBRiB(D{LX)&3h?dGPm~XOqSJ8| z%JYMoi|?)mbZij~yx8koumE5FkXH0ZV%=eg&+s~ln8-{#G9rPo|HE&^CV3IaAnydP zs!`k@uCqm-NOn>m^|=|mTxed``i01AQa93b!*3|(ATQEycW#~4{*%vtGx!E4TXg%} z$%>@RTt;aiXrq~1rZl`QQFJrgl<1&oV((sFrD@PFX$Ntj#wQX)C7ybMET|PJAoW-x z2U^9T&1iPsZqF|tZT0k@v|p^Jql6w#?jo%?-5^e>n+OHff+SVzecw$Tq}z$aw7SCl zdkd9tCsOKL=ENql$2MzNWq)vetcGVbs%Y}?NdXo1bKtO@Gl}n{f;?<*X%Xf!vkTji z+>fYK#8n*b$ z5s+k5oifwyd$pzIIuDTz9L7-nw~axdpv*^hDxDEYKs%G^PPTPXkoneynkZApgGsYx zn0A+PP6R6(H))KK<3KiEamnZFN$SW&GQU__*VX?^+G`8buowHrt%3dq?Ubkfx zjuGOcruOMZ(z!7#IU|mq5-cdm+`vKa~ zl_())stG_0zOnc3)`v6Sc9K^WP-M3S<)ZR0!yR!74h$Jk$fmhUe|CqHUkD#5t7XrCZl`BkUa|2I z#etn)=y#EEzvxz;6&bT56bTGMx~E!;O8cqX>6e#Yy@n7E0#N^>t{ID8K^Zq=wuj0C zgV<(k26-m@0!rNaDhEP53P3YkyBQ0=7^FNkD26kX3P2<@T!HoD4L+xr(;L8dTcWh148$uAj0Z{+IU*9r8Yc*OhE zI?uOD2NRq_=R2gX1Fcq9Wb3+X*TyK-da%{NMYI;PG3e!A*TDAgTY;aGH+YC{;8-wx zf7M~hX0fgyd-@&y#c(wP&nzQ^xYldO2m{fd9opa&;M$O(#}*p2%a6HM6IgAQX_iS^ z3|d;A8mV844bo9^|6@hH_l=761DY#yjwRjs-J=V#=xZh0XXe3N5TbqF0eICR+Xl`S zn#H^HvCnZrG-y2Wsw3=FI@J>%2wUrck<{d0>H$4RL4Bf-A06R<5S2nPwKUyD^Q*>& zNQ0^SCYr;HnKsOHT3W6YXl!Odl9{D-3$k-gCN(_4)c0#L<<_d{sbbfrKDi^KkO(pQ zPV}Ts1Z$EBG`a^&bT4-gkcGnGu-1vbx;AR*_*ry0dN|lLYT^+?PixL@5wkY3-97>f zCV^msR1l@9Gv-1YIDC!YlRWEsG-n)PB*v3Sxr&Eh>ZV^3eAX6VA?Ugq zlr15aRK8sKwx*ExUp}q*MGj6K&F2!?z@Y%fsfr^7D(hN?EDyoPKf-MHH(rTjEW#Kq z>w%DEb_Bul1>ma-hl1Tf5bW3*IA`ui{b=daAyEoPu6B2!CxaQhjsp_ba9v=HUlxsN zkabv1w04B??;;&tU>0cgGdj0Bk_7Bup8WmAhz2+2=j8iq=cXj|H5ZrY=-@hf_g>}| zy<6P7S@!*@5HHYvIBpr^MMx&X=XFqytF$NTxrj7i)CN}&fv&6Fx@@5$kY@~x7l=+{ zs)@swn=S?8VS`~-bTG8#6#oY}OS7}tnx&O=Xex85X9}y1K1L63$wQTY0CoGubm zeJ2|@FQM*0H}`xUJ)qkYpoE2+aXpWA&JnOfg}@O}4u};nrM+;~c1a-EP4I&Fo-M2l zG6R0~voK&i?PFbD=v$J2!rOs$_I4refL}L&UpFQ`hz7c=0^Ju^KZ^i`0k;?;*a<;_ z!r%s}c9&HLYXx4QaAX4?>-4SwmWhs-W;y5>*y7lrJqQj#P&a>*#}1O96P{X;r&Nh5fuX@(EHnrleNV$klK9k z3PA2+@Io=+>5Rnn2G-qVaeGp*&uA^n%)vJooDhtoT9HKsqhvELl?;_8-a9RYt+xY!aABjf6lWy*NGN~c%FxT ze<1#k05GZmtOA7AH{1bmjO5ZehkiWxB}1^*U@epk%#dt!3$?!J`VTumI31cykl*)a z3pD^1HrS`5`b`+H{LkdYg7k)4gtD>mTxNX>02bAj;n=gAv^L*pSsh$eR8WUBj}iE(Y3UWbj%oj_k~D_7`r{wx>7 zR#LZ#5(~%;F`qNDbmZf0VnW6lvym{ttMH2UNMfhl5osP1CpipmwcW}CflmQQrN0hr zj*#b(8kubZycFlr;@H+FgL`lxsk=Oom!I@3d^hAr^8M}ad|G^>5 zZ=LSHJfnlq@7Vw7GCa0A*Jkttf|4wl5Fv|AwzLhtP;^Aa$q*4)%+J3YED&*b#@`tT zPOA8XAy4eGHB&Zlx2fA2gB*N$`@5Lx3X8Aa96cQg)cFq%2mLpH@|mB+x}eW;n}$r~ zy(PaJruB(DOu1K32&jX%;EIU?3*cWZvFsU1wW0OVd?Mu^3CJ9gALeLMnfjpfT}+YG zfKM0i<>Ogq_yf0<#P_$kuU!pfUC=?(5maG{8V||;VVLwseFV8D1ufta8w;!gh?#C9 zSis38@Et$6f%lbP_E>(7Pw9?H$Vl;IcNSXwN8-DfzxwYF+%06(Q>eOvL&UnEsKU#t zXWQ;YP;1QKyJnXg-rKzk=ccU}F{ZK|Qz z*nnq{?_xHSMb!igpe!@|iThXOBr!>3uj0C(f~wumgdV#Z1HSc0BGPY{t$zjCt;xn& z3I`k?6?%rX0KWiQ6@(4e-jHcir+}3?a{oa-IkSP-q-nG`hrBr zU=ZmQk<@2{%6f6kSJQRfLGL@2D+$%CZwpvAm;p<7n?38-+UwVPstGTS?xEzh=T0z3 zLRJ(}gtfPNTE4dXaBmjU2)QaEXvIBXTTQ>&=Wj-<-`JejN2KzS(92`!x}axG8+}`4 zU3_8=G84t<*lKDV6w~fAnoU$lbzU2Hq)*rf>gX6^xgW`&R3R|3>KEg8XbF`WIVLp^ zK9Seh?k=_wIR2*U^!iYz4EE(c{3?OcA*?zLKFO#K(72&dM>(ApvVCex2rixMWQ%i5 z5j$YpJK+c$&wk81@61K^nT!v43L#Cr>bP^bQvwHD$zB|^PwwdHA7sW(uQ96^Jw$~D zn1cl7wVK>l$KkbT@`!gld?DQfqNDj zRpRtA873N((jmjXR)!#!_Nwsy~E60(#qw7b&F{Ie#}Mn=@%Lo z0&1(kZN&o8D^1nb;G+aKHuErwb}-}=qD|i;I6ZNP`vZ_3HAdR=a4`z za15e5B&-iMs@z&Ite&6^^45_J?-(G&gQ%`7kdv!OsYB-{{@NaJ-7= zk`bG=R;7PgGj5fHa)6Dy^$(`36`3zgTV)k_s4FOOU6#akHInW6GvSDMd-VrLrfZ$a z_o}Dv@seg|-2n^@;%&1~<>2eq(b)JAutXdA6Rj_Nat2069*ko7wkXy(H^qa8w|!FVB64qOt^ zXxn98x4fgi@YJoc^gDg=6Q8hN0Y%0R-WLOk#9ZkM!|DG-P`ygeMIl#nENhPaGnt5W z0Hd@73tXaW6M{}XC?6P5C5jDl%dXO$I^7aOBrLi(!yYKhRMsfcR3$%o@2htkrY-L! zB+@Dm#_*76;jc?IN&X|OB!B#}5mrMQ_wZHIX@_80-0Zst71EmE3khP%&Ovi}kc14b zt)pM;wg3i)X31laT5OCQ=3U@f5^g*=^TTr)s0O4hKMc}jRMoOp831<-vA(IT{QnpQJP`I?w;Jmu|7NPkhVoJ!9j!aF|X9S4BPVS-i*0MO)+8U;5 zmJ$D%g2`d*v3@bqOiL~yis+z+3VWdRNqIWf5U+wiG7zbvbIlueYY`JTyf_rBNLG

UY$A*l;NX3*bFztN zx;wPckIfyLnM?TN2nuh8x!2KfV%USxT1bLT6w(fcnYkMBNpGqy4$?duA`@-7+jzcf zxeW}gzoykBqMtEdZY$ZqqX>V2ep$oPV}#k#2cZQbX4Cf)Dro|H33WA;FdW0ptv{c! z>=ep6JgQgxogYfafe22%`79myTqWGXhprj~Ej%NO8CJ9mo_2II$|`h>>tZgs=pYmm z)1bT3-U`eJ>Ilk}G;8@gCSfF3mtO81)^c&)q*5}pmvnSbANZC^1egTb8$G=&_%f+Z zPF>45g1WToeW@gl()e0gGFVv$XJ67Zs=1po;+GPMgyNR3=_DCqsoN*P7Xq0Jl;}+$ z%7=Ylj&>w(Js(5V&8oR9C4djcnWM@&jQFwgB-lAzk!4B;BX^kyURe>`4=yYS^rln+h%cSlYnaPC;7s zHlEmXgLk?#EJ_BNg6|O~C}sOBJj(1e7HMky)KBgx#E9Bn>cVYRQdySj4p5M51InIP zjn-D#jOZgUa%vB`2ogAOlJhd2luDE@zt$>`J@zIZVpA{hVP*C-IObK*6oEyF``EV` za+rs&b<>wbpOm}SLc00-5V9xK7DpUK=#*JIR3!Bfc>M=mad5n1h5{bxh?DO5l`(ldiEmQYd;v=MR%1uewqcn1sAeDJ!;+P&Jt}U+ z+qd(ole*^4tjuaUtXZkM^YzZCWU`J695vDf6CED$i$JVh?GZiZfcrb7&WaV^NY%nj zkGjk!M^f;oTjH{rW;2r^0{5zjYO%_e)*8)-?JRmQ6SG3n@^doTLZZ7TMtJqeG5NCqJZOqpOy3dw%(vt93d0rO~DgS zE401>ZMFxFq%*Z8aMb8M=?=bek<>X2>8sAZtVZ)c$b@q9gwfSG{%@^ZRsOJDv69pe zXmQQJfOlTl4CrkP5seLnAokk~cD5kUs$iuf5$8REz^C4Z|$o0>G~=gXWbuA(D3|U9?*+62uFWL^-$X|4P2A8 z^K86(ux@_9V@S1*=>u*88n~3cba)1r1xy4C&)%cm+p|&m>+GP)n&wn;`^Qk^dP4;m zUU=N?QTR4D0h6CRFa^qcX3zC=x?%&KRJ?NE`{T*^GhmW*W>6vQ$3p*rspW!=O9g9c z`E^$E6ns@vy&tugHDmlb8F{t`Okm_o2Ut_vuTQMN6_Y(*WwgZiaSNv%`24(fk2RGw z#QM6>L2z-R5JhVIIbA6MpU5~w7y162^{x4n&2r*B&WY@g(pH8#hM1L(5zcNM_@ Q$6(VxX?&tY=lqTT1(|J~UjP6A literal 0 HcmV?d00001 diff --git a/zh-cn/device-dev/kernel/figures/zh-cn_image_0000001170790681.png b/zh-cn/device-dev/kernel/figures/zh-cn_image_0000001170790681.png new file mode 100644 index 0000000000000000000000000000000000000000..ad18e1d4a5785546f027c9a6e265d2533a076589 GIT binary patch literal 17040 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 $ zPa}j^0lDr$ZayH!B`pcz|0i7M{LCk@wGyOk+naf z6ij9r271|G69Emkj6Wjf?bf>X)6K_WE8I*6pg}oV<(BZLfXGE=xmtL6Y@tx}%qRVP zQCEGGzL>ibWS?C&ntDK*hu_&)?~Yc0jlN zV0kt$Xx(rwHT`UvTh310Y3f;V^XbucPWJt1QCby#3%lG^evGq3_h~C9a+E`|zhUbW zWjx06Y@5FP7lN&5MCn60Q3OVxixq}fdLX%NW|}BvVqhbp&=Wo*#TX&j_$RJ*qpYWw zRCb#X9i`jQ*6@qpMVRAsI~=~2m*w0ixx!lB)a1NXw=PibzS7rmeSbEv`RMo8c(hHr zTiD@uC0Pr^>3($@$Jq{tMDt-NRw)NWUoBY`zv~*uXyWi=t+;8hIyWDx@Oz z`vX@-*$5XKrN&0iv1^p<{807?a*;&qtqigbzT%o|lWfP_XUkd1n1&S@reW=N&!uMufhUyyaRus8<3W;W8xicV6f(e&loaB>}wB5G_I*5UovPs^dy~rF-I*i z^VaCg(XiafFfxQvz_$ELUk_08dC;ilw`m%A$NOw{3kdCJ=vD*Tb@tJ@f(NTxT-iR( zL$@9?`Eda){MzbkU{vi&=5kZ(QjApJ%<~@p3}0tJib%*wZ5Fn6`T3XzpG(1QcxW7Q z4&gI=b{sY}M>TXhEyeG_8HEoLV9e)Qwh#Yj{rr*VPa!Fy?w2k_aGV`bc^;xtyO};?5ZIxm`mgoM85X*T_N1nlqpQ*wxL{tN7;CMge zO8^1f!4zxYe)ua%^&ffBCP`wc(;e2DVK5o4ks@?o2 zpAD~bpiR(XaH}WO1!x?YMvKu$tYmm)9=+xB}OqLMt9&i2O_8gyi)@bi+m!A{NHcR^mfoYO(L@gKA?@u|v z1y6w#Ky%>5vh-D8d?9A~DD(Z4DjppYEZ_0!l2=MWv z^G{|w0H23j<*jhc>4|*(>R|m5GJ0g&Sy;Gy_7pxfl|O$Fb-Cz@rK68Y=4d5#d1;kF zG9r^NplJH;gDxh?vr6X&d|$1rc>HE2W&IFUPR=L9iS}Ep#PCP%4@JD-@!wJjTF((k zFA4xIWpt|9O>W}%dLmv|P^#pL*a~edH1%pj(?O?T>fGt(oPdkUgBtZ$;^x|LY=jCW37l+!t@RI zypG4<-=`N|3mtrhguOM-Io!E~19(=T1Hg$vL$YOw6y?hGwgGO3wcC3m#?5ovnzHAu`4K`s#=mG@}j=#d9kSSme(cgs zz4HKng2&Jj@-GKmBciFbx=ax+0qchFQC(BEFSIPv9z)99DgA-_<&)2!gWP239%_IO zliYl>dWbBlmX{3&X>z7B&|Z|Y*~=W|#0in#*8*UcS0xaHYD2LPhI_0;#2GgsNaBUZ zEgI!h{+VWfJg+#hz%wkT9t32Gx_j*u$KGW+?>T7U6AWOG?s)61M53IN#&!VwG|FRn zC!IN(EIHald`1}~_<*^KAH@sb3$a$Uvk!C!muFsZ51ji&ZQ&YL)bwbUq0ppl?;T^c z1{v~YhT!hZN<)USzCg3?c6uzJfplx)AQcg>OQ=?bE+`(HBErt&1L_`Zhcr=!G_9$- z+^(K^9&OF>r0fKjjW~`5!av(_x4|Q?@pXLJfE>w*zC#+PVagffeK*=Qblmi-q*eul z`K9E_{q8XN31p>^b=ZjvYZkvbTskyXbg3R7SH_y~a81hh4sZOf-8>Gj2>GDEr7Lr`?Ec%W6>k_8-bdxtVjy?liB5|3 zQWjh@mwX^uzzqarzI&+l0!fWaq{typ8u%7o?2wZOIahKhiLho^e~MU>tY z8fX6ioc*^JjX6ASo%7!h^tg;>!eAT24WDsp=x2;@@tdCRJ*sQI{(16Aw3Df!p$Nyx zs?zXFh6QoHFGJkkOvf7v&uMe|`QV0Cp~*945==g8Tc*6f{e@RaIM0&5%1zet(dB-1 za2Up3;Kq>jRdG5wPP)bFTiC!>(_MFmV&njDC@&gxSHzjY*VghTJ_S-`0A{%PT1@_x z$7kxCII-ONHUS13&h@#)uWM16AK%?nKUQU)Sr>CChE`yfCb7E~zMB)J?Z+dUCy%F= zK@0Cqa#FAb;gJWoJt+rzNj?jHq41ohxEm@+g7ZzjedWYH-S?k2ybW}CAD(!6GxbI+ zu1VrNk>Y>piFGCnYU0AjhVOuwcGme>=+U@mRRH}nKA+o~6!cWd?%p7Sv3rteU@^1- z$ASD1X!ajRj}!L7BpO<00 z4}1?+3wExk))y!GF;aZX{*P9JGMBv^oP*e8B-etzzhBR?L%Rd2s&p-e9=DLnn)S(G zW_&sM`aHTW+azlS?#8!P1k2xK*3B1I#AbgY5e+-3Zo?v@^;}bcSm`Q!zvTjLGBC6# z)++kHUmbbO|KyOZHiN@5)LO9L?Bpk4N!MYfX(Vdcb z`T)^#V|MxGXAQ^{hS*AN_i=ohUE0dc;le>BxSuQD+JCsHxmBx(4XQ-S7KG3zEMwz>ojQ<4ot*UN>7nWe<4opfw zMYT;kZ(Nd1v6ZHjZN~$oxjy$w*ZUrwH9wtHWsA$gFq_5*N%7>G3pd{M-3h9zYbyKT zuocI~`NuoSk3QU=2{W{rMN(J|h9 zx`za2(0_h*{=-krRIQcS{I*|aUtHHEZk#beihFObYT8-kY-{dBs$h{N@uQU%FMX8x ziGyxT`Qd#oP6b5rdqyw_nDW8 zmZ&T+NRNC{;`;>d`O|t>oagY~&L_b@U8V=QLrkdEqQd2u#=BSUZbj;&(fw4nl@W*I zKl_&pMq-X4D`-{r3^g?H#t06UCUkNT&VrUWfP&ssY&XdRH$-3AW{&#uhE7*ZY9$;^ z3ZNC5UmVeibP*|j&DO+=z>Pw=NW40q6RQ8XxBr$`d=bN!2F;qr-!^AO6^6VCNzHOX za`VeeU4hjgK{jX{tP^Xa!1XkK%J_&8CE+_{8Lzijn0`W=;#HO#3tV@+|E6^d?~%}K zCg6U6-|>;nP!kj1aSCOS*O&Z*Jg^MPCn(Yj=<`j6V|j z%|)al_HIsPwR}4>`=)t!GmzAc#Q|;6nd!b0N72U8+$e&kjs7Fsl{hL^z9myP`5v_f zKQc@DUJ#&VkW+Buukz-6bak=yNp=ALQy%c#c9=x+v`e$`nEv|5A34(Hd<^q6*Dw$P zl&>lCRFB#w-|N12bMn2iZ$Iz5pu9nYUFByl3uQg217csb&Q|9i*}&sn_nyYl z2dvGZHO#Bh=Bv-c2PKgx$mgoQ&u&gUjD8vrrqiWs+!|6%U7}Q5G4sz+soV>{3{>p# zjx=!ZFEY+48?`ag+xQrg={aSG)X6$}{K#*e;|isspYoh-MchnM;_Oao8!$dP+#M3`b`p&58>*X#^~zu)d{Pw>1yF_y z?f`F?!o?)CmyKgL3wrf(##Qe|i!R_n_n0x@Q^< z_2u;|ATG|kv_S_7Xm>e`JDif97bdSv_Dr$UmLuWXb4K;^7$FAo`At`CGcJ46Xhzx2 zk=ubNzd47d{mPObi&auVl7mT)g%EUVUJSFGzRpT+bv?=O-vVn_vidU%ovIr#1Bg)O zpV9I+FKVuqDgZnoT=e}pPoToR3^#8zDGscgNYPQ^|BDYP5x6Ar%gvdv9Vqy zxuZvu_pZF}${qomy_~G1RiUeU&4sTmpe?|Oi8s=r>cdS;X?$RybES=5Z$4dzsqMx1@Cv(z~$`y-{Ps%_`)BCEBx~OB!)hX@1fWl0TfKkgtMaNLZZD-wDDMT>({?W|?K zk&zHE1KLN(yr84J+$aXYaCv3cwRuXQQ9+H67X{<(^B8#U^G{=W=C6Q?l_3U0c^RIm zha-8ij6^S#uW#t6O1L0y>3_1-r&7te^N~jlkoHx)?G1b)$iLcRp!Vi#i11@z&oXF5 zhv~_0-LyAv-k8lxh%M8eZPUW@aqC>J(AGHvQXi|FYqhfvGqmi9Vw01FiISu+QweiG&?G>-a}j zGSHxt%kUrHUN~AWk-)v_Mxx{M@C}9FE2|rSz3zbP;H+|G>qG20&&oL@HNUR?-Yn(> zJADlTU@AH5FeOWwz{s_g7}xyMy0G*ioc*@kVZ2;HmkH3Bv;L671*M=G?KO69xKtCO za1JvBK<|21iVij*qt@kAkcrjl~P@8zb9AHj=K>Vffz@%0fJyze*x*Gcx# zjy|9g| zd-Hv?fF9=2AD`hmG52v+l={hoK>Q)e;(;qbOrSi(vwvn(PZctys=BFw@AkT{7ge+H zF)IYjdW;(*O;3A*?22m^qqNkGY?F}k%H>-6tI5F(w#Z^h#0461wew*^65xuQrR8f1 zBTSDW9a?1odX$YAi~dGC=rdlAu)_D0xwHJs_Kv0sfiW1M`ChR$T-7s%vqbf#?$7fZ z-$39l!lNH(aSIT>@|lxuebnw#~WUjoOadF)O$+4#PRo}I?*&mkVo zn*TM0NTLKq8>oF10Y{wpI17OWPm4b^c5f$J#t2_B@iq@qG|W$tFCflmjCyAFg`nWo zjSfFbt()iEf(57JmnBcF$IL6gMLyH!17lEgS!Ate$606PhdV$sd|3(A{3lm15=veK zOnL-Lx3!GWdM!3`Z2dK+^$QUH=VXOPn1`O>vr9==Dxfp9?s>K7J}Ed7o(7+^$#T+= z+7w0CH)HFO0Bn3cTmcs6PKq;m{(}=a-x?Zi_~j09sJ2|6rP=TQ#m&mp-S)eM{AJNS z)K4L&9h%24@plS=3zq_~`V90&a%bAg?iFaJ;5zog5(w|5#rM=a_~o7f%VFOx1+26t z^?Gpx^!XoRvG6>X87GZK=cL1;l1(90)3dZg+7%Zum(#^|Wb?_1C6YR8Zl0E;&-C8d ze`WzX2!z3psU}K)#5{75Iio{os#c|(J)fjOcb{RE%lBvVdVk4Dn{D~*61&e2ybI)t zp|NM%1t!{?44!c$o2XX0XraUd>^2nrB)GqIz!T@PHBt%cDtQ!7FPu zR00Vwj%b5^5){YGS~Ot@4Ae)UZ) zyXwbd=9{}2y1uTU!7cWw3Ds!Eb1*bVMS$c~lsfp&t>fMS1d$9Jclx%c8erHCnjqzjmDa^X~-C zUhn6kO*$;U;+Ycqlj-h>_j~+&!6%{(#!KB9XxFm({8y3hYn3Vcc|FT$zTPXy5CzsM zn{6vw+JumoJOHz2lJikX>MymJ@%mn4J~eC^txPA3&p^SF#eX z`buH~3fq5c#s6S<4Nb4sxr0il3j3yN4%|1&QK_A{(uyIfH|5eJ?%^i$m(MvZoP0u6 zeN#s(=!9=Nv`I~Fq_&`zw2dF;p%>Id{s1B{#cA}SN$%z5cyIQI>{1R3b8=LEMbNDd z@8%6sYR$LTz_WS0uK?ZT$Vb!in;619i{_qNczzLXo<~(s_cH z;u6H9`NW~%2!3dh-ZL;rSdgS>^GWOz$GqRqs8qhphVQ7-lifs|&GE5|Bq6GUelWdd z#dCyIaLrQW3jEAt>uLGftE9Ax*Ha}v)hbt*6J82~ZuCnwQg)POv|fYhy|0qa@qyVKFt}zaI(m%>@?JIDefzRO-Tyol zoRXynwhOqAVfOcJf`vc#*A|S2Ve}+HrE&*k9j6nz#Q>P!=B1|zhMMj;cP?<4*1HoB z+2O_vU<-5yI3VG~$j%zJAEl=GI=B)rUI$~{LBP}di4N9UUtX&~7EI8ubR<$NHCWFw zDz9pB-M^)f9ScNZVjvKOJ;}-j_$;}a+>!-=i2qXfiIMYE_sobeV*U&8Qu7Kukwwr3 zAK){OFF#p&IiBh9?y&6{gI#<2i$yMU4E)4oY^dhZPm0yMh|LRj8#3X*Ph0@$9O4f; z`&Gt`{D^amtTYx4Z(Yp#9D-Qz3TAJ2cljQ!)?_eL~e!E+amzYxi#{WqCS#9e^*- zIU#%e6bqpns9O5Si2Ll1gP$`!sYo!0F5*NIV1*pmpJF0BPacd4ErdzlEI0h#ZzM`& zz~`5?6WAXwm^^pd^|5l}8Uvnmzf_+0D)FD0Iht@UVi`xyjC@&$q67q4k^YCfpkI2K zSPqenII18t>&kuJC46Iri7(AYDe%#s15Jx7*@UWE(7J<^fs4*( zxNPC$J9$K22sla$YlvhKy)7SN(<*m=SKH*A%u0i@X3B<-+Z9L+9rO&{bsR`&v**>< zy=b!;@226#HzY{@8ccEO#MTQ=T6=B;J?hmspHP9hl5I#I#QAi;imkBL!auDeM8pCN z?urMGKLLhpiXZA|k`YZsU|eQ`T8<~F>+jjJi=PkSsuE2d2TY42Kff0OT2U;(gpc@x zi9kXsl}!kDHSlL zK?dwe0d=e=Bgw5Izm(JuAM7-mlI3MXC7o>tOQOeQoYK?}@e+dxV9kwAC5J~Rq#gY4 zGSfP!KS9aJfJtDAHpj0#z~kTh1TVqvWN8}O!&OF}bl$21O600fmL|7x-ERJ+6fAq!noW7ExEplXaLGi-^6JxBHpXqe<2w zV5hkr_ZovE7eN(PD;2J?_-JUECqLe))J$~{&!lt8Tb{XLKaou_?a<`+W^H1?|6(KuFTGK)H>z=xhlH)CMOsm*FkH+CghD){{IpY^HB`H$ z40dSAp4;{<5e@JwGsjtNnj(qmX(2C}@*mN~VR%9ZV%=|yZ;i8+(rU!%c32Y%H-a94GtC%b~E zFig36rhb+cOPZ9d8?-Equ8S8?L&To6tMOUuC$u_C8f@xHn6$SvtL6?}IG_OBz)ht0+1AJYl(~A9)9|?Zk5F}dEDR(B zF9$@>yXy?^Q^^MHUWwRX4V$+ivLG|jGrJHv1cLIXpLV>GNEr{@09nrYc&I|JA)1d* zPLP7marKx_hM4fF2oo`*y^jSVmMQJ+4 zrP$E@^{Y5E;sa`EM!tqR?(CF$#fB{3SpoNzrQxhwYlsUYWcd0wfZ+ha(4RJ3JjZDf z1{}wN>=iWo0x(TW1Cb~KUS`70aqSsq9g4XpMPTNRrfASDI^jnz2tCf*O#MWG->`3e z&a7^0UQJ3)^X-z~1Lvy&_q&&$1d#*dMX9e;g4kV5%B{EPcTTr}ss<=99BJa{@z@0A zhvBje>SWiG4$Fz;qEooW`wW=3qpK7z{Co}EzN_>>?7VOvxU52Bj})Looh=*}S@*jO z^6fBLpSR|&5P8aB<9wzMZ#Tc<5tgVN?7Es{7i9lhR}PrCJ8?Dr@)X}kC`*V3sTSh2 z(0mw8o3>&iO`ohQM2hElbvMjb2&Fh4HrzmRkxN( zYh63!A_{sIwNu{4P;bvsR~Rc76X>0WvVz~Yf>WN?iPP+H3;?KgKSF(yajjwIN*MBB z<=??cLT?90)k{qWDV@Lvhc|+nRhMtamgvwbm32KfNhajhLuRF0hk1QFG{rH);Vgtn z!7Ua{kPKz2bcm@*saOr5Hi3@us!&B5ncKZG`F*3&Pr9yULB#q`#ulG& zOn48uO>^%}zWS{W4rCH?pZ?WB!hAdZjSfCbz)krh5|Z+!rRrkt@CICn{H-?u(hR`U zVo9*IU-ZpVEoqnvLetGyZ^3JEFc=4^Sg*8Xg7hnUs7oja>&3tGUl-kUZStIGdKD9E zCEMypyRFUfTk=GW~8WNr)ZI|R^%3d{PWy7SgEvC2M^78xgYQ^~49ABY% zXQfBqLVdg`ZXf*e1!WcnjN#FX|IrwL!XdUyw`WyaFcChj+zYHVK`9sSrpj*Y007@N zf5zyqyDver|4SY|49A6uDk9#hUlUCCdK$YVZ{{npf}*1Vm~2DX|Hm+$0WH%OSY0eu)IoDv8eEEdqL5%WH(N-YoW24 z{CHw#-4D%?7Vas^Yr}ZbDJ26eJrd&=B3fEKPO$U~>HqCZ7RWdZD_gtzN|y%+iyhM& zilc?$z1_+<%nVQqZibIT1+_GUduK zYK#&k>fKJ1?>$+cCuese9X>^Y=bplKElr2R@DIqL=LgOuV9i3gI9A{!XDa)7GKKp} z^94<7@>N;ApCRLxQpX8hc6@-$TOP(a!HN?`=MzrqOskiR%f4DsMh4cWd8{fkuNK#R z^UB|V6XQE&_PDXsH=aj+zVSF3$`M0G!?t-A>AHuRe${oaX|BmsuOZUo(^0hG3%sUj{5I+vHC^$H(?S_CRjM8R&SF-KbV&-0MU z0%BYntR{z%>QEBp^GlZnEiLwm{>e{qCZ6Pq^Xm4h89l_H z$l;s@j3z#L?>+z%z)d!k2raP63>CpL7}qKpe@CW5P6PMIUsy;iGsASQvb-(X zM5PQsL*RfDm^Em4fTU1K0SzAP3u?~h4KQKi_DaZgX2djDNtNo7Zng#Umi2$lTM~1` zHBbaykHMrtA4kDD#oj(mqsBiE}OFq)5`ytq;^9kiSgB?pgN;=1FD=z zWXR*clN7l6K1)EAh)NUFCfb*THC7&23RW8DOc2~Wx=3ycSc;r)Pz1v$HWum$kI!w9 zKuIz`_9DnRk4cxxO;W`Qn*R3nrkce&Q%s%l$NyByC>VNMPG1!{bmkL-V$}-RNzEYt ziOSLL+uGRw{U%>R#Qm#FjWc`C(3Hd%UMUeHti3%tS5vT;Chr|*+KWm^qTC9|4dF2h zNcdebr34spZ2h`{g8j%9ebqCv6Xa?p2yT-+Z2ea@8s&Zuv&`QCp?4pDF>vGze4-Zq zPv_q#Ak$qMF;oMbKf^fmY6t1qL2?+@eu=s-7B&B>$?MbCc$Ei{RTqArKfR@6cmz4@ zIX*Wa_(6?f*c0O@-Ybo1-=_F7g+o}%b=sT(QYu~d!T{vW7Z~&}isTfeXlFMc+*V!@ zwvJP+{y#1ldHxQl_;}<^QrN2WLH$}>LXx^l!y5`YqlfZ^`mdPCJ>lxYw4Mhys+PE8 zxi#whUnP5r8-KyX96Tv`7FV_elfxDb4&Q#tmEf}yGr$sXC3%u)aekbLWxXylW!n2t z&DyD&SRL|P$7UyMJW31>~yButX$%g7zzY-<51Q;lk&n_{+vQ5IaHC)$h9w|Su@@hv)9}dNATfA12obwS-fJ6 zvWP<_gLXk}c~{lF%F!MyUz%B~N%MNWdhv}Ca-A7-kE6SVVA)N8STD-Gz=B-rc=8yFFeQ**<4y#7TYr-jKL<8fsFnFqY99$aiBx?2-aervkH zy7YX_BeUN%coH=&*L`C`FJ_B0_viK{N0j$|GP6`J%TRbtE7^2^=DR+ z(Wpl|XD_i-&Q)e9!&Hed>pLFoFFmOo%CBD%=uH$(DEv=tWxbX5ft4>48`{gR-{}Rv zP#AZ(lzuCk`Oi#Aip+o6^D%cFiVee2k&h=4*y4WE|6-NJ ziDV0ht>h7Y8e%>o4JS>458(u4+sh2l&=0PX?xp6G|5@N_dUy9t2`%}+9}zt){-~y` zf@jF1!CW3l%%MgM4asu62KhKj0J*3UjIi`#KXr1ZYG5X%VyRC9bpv6^@j*AL>;k7& z%URmR)3Nh{Wx1nQBYxY-(Jf{FVQ{EX`?aU(c6W-J;WqB!wtvJ?l5C{rHI~tyIzcQJ zPer}>#@9<-t2m~~Zz`hUOkncTaRormQ~Il1-J0ONDF;1ClTQj~@V-seSuZa28`8^Cs#gN4O8u{r_KA`Z%EaI=aR z2SbG6NKGBv3uX){CF9pm95?$9HR08gYi)5j=I4)$JZy&WY?lf+$gqfdcAF%)yq8iE){wPVtg!7V_ae^SZ_52IBv40F=rv0@s zOZE5sGtDNV#f43F4O{7MXB53l(b2d8*^vo>F+#@ThNaKCR2KwXC4Mc_(cI}h-TBuh_ z6TSK$>iF3hK0bYOWNLAmZ)oxA+p`=dGhHEh6OmJJE~L71U}dJN)KH0i{m=2)hq$W- ze)`226G^Y_@$6X0qki9?e}Ys9i+coC-87%arrEgJPlx9~x=50we{?fEMpAEb+N}!z z>6?Bcn`SFTi|gngej~LG^Q(az@k+4PwwEnXVq^mI}I9H+SjMsle#Auy-gz39A8b=bp z3ie8SGM4vo&5VXr_c#1CH-ecTv2XGGN9KACBY(G}4emjP;&#!x+wM2djo2$0Fc6X| z$(@p$>h*;@$B9QJqakNXR21t+PADzu3hK#)PAjXW;G}-6)Ro`B+d*pzH0nmoEHp~w zqZup+9f^(}HWXmQjf(3rmuF7PpJ*h~!z6poK>ucfQ|hJpSyKW>!BC{Z62pbXS1Y@n zG>W3D-iG+jcP0xdbb5adFhAhRAZqW2r+;wQ-(+&?`&8*xL|MpdK4Wse+0?ia^OIC| zox&T{@B6ocnI8mJ(E$8xV%`W&)v+zcjdI}TP(c`QKFI`3 z^W;>`loe{LYp4wnrv)g_)YLA^^jJF)hlhOb*{V}@(U_TYk#KSQxmB@{l2Ad79VopZ z#Floz+UCHuQ*mX<_j@q)TzM%IYSW28I1Y(M= zj8(F#H_!%(vK!UdjW*8qHMEZYt2VBf>Jxf*h<}PiV2NG21Xh9y$>u^*N`sA|A}R&$ zp#7zO2JyozyRpT-1LHQimC_yRZTn1{D2KXq#`!7yG})~Kdop$IXp&K@6icr1%x4vx zV;biD9~GIM3*@X@jTkoyTJ{iia^cCS8J{d^?%S-F^LlV*^}V4^wziWc1ZUG^zDS4F zqAL}g@@DKf4!QKNcvH4#_AlGC4mQ?9_E!Ost3mB^>)oDXonhH?Ck5QJnqMz%wn){@ zx03fa!c&dhcY`P1*cTM4{fDJc4|7CRk4QB(AID%2n->0xNFv{AU|z4KzNRrQ<9BNE zg734!o>M$qMfzv_@zITn7Oz&!FO-mHB!^`ZV)zQV7@{tEyzd}ZR)K*IK1gNqn*=`^37~M zFtnh>4VdatF4uiBCq66Y@PM6sIH-ooLb3?|sNF0z9P9n1i#Q25^;fv&{<8Cn(EQ<# z%$lV?6}u8;zXdMW*bb%_nxA0!+sio3iQ`H0&+Ptr82{z`@+>iXF76Kppb|3k-egN^ z^RAV2xu^r>cat=$>mxs2h!vql4|4)Fpl6bmLEzSj@nEUDqAi@6|H0nKH5B{9cWkst zB8{y+Oa&v+WI-4jh8Hq_vPG4Z%g3d^lR~^ou+Z}qCycWY>ub?P5s8g?7m95Cr0bC= zO9CT(5+f&9;X+Cfmn_V%P4(rdv;#DFIAnZ9U03yIazhKF1bgj5sdoTTVbYQOF`E(% zzUXHADLW6Vf`{fW0~u;9FfS9qzQs7@O;37*)m)evG;>;?s}&!G$2d;f9?el>{iv;3 znyp!=YV!lm$=`;7Tyf3cce7GPYXe8MQ~r$l;V}LK+h-rbbOO~xZp+1sQ-g;gM$8Eo z&_Z*TXBwKc^H{R8c|Atjwd(R$eY2TdraM|?WfZBmC&d8P_1=@&d&a2De0G_fwFqN4 zTl*XhZHlHytgJm)rV1HR=8;aa^nIxD72LIYn%wJ7G*RYtQFG;GKa@&j>`BUXyEA%c z__$$ zt*a~UM~#I&QfVeUnR9yONaZY9-6bcNO5k-U({NYt%Z2cT1|xqb8d=t($X^7IC9ngr zB({teqx_^tjpGmIWMa8nEF$0N1bE8Wr^Sx#zjSu+1X()P5F#h+C#IFGt8U}sr+=jfy+jV@6!CGg2X{V}eNo@3LsDn9ReV}l zuj;<->zT*#6ImasCaR^E4qmxUhU@SfU3n?`h+5?IZ9Y8kopRFnbiT!@6rA znjDGMNO;!bxT=4~O`C$UyqXRH@Wj4~toq=#&>QrxBM z-2_^XR4J!Xg{M#)h@Y-%^7QkT*8g@Pe}vZE7yQz}Y29{pxZI-bTk=G9=HWUk>%w$O z%bpB?Kpwj1489T5OzrAl3{kcr?W{*u-EYl8E(JI-f3GIk(p|WriQX0LmKvKPlxGad1FdRG9tTf zAsqQk#dV0oT{+l;=i)g7RKbh8@zBN^{pT|qYwmoSX-w7+`DWH8W}4XHyZOn;UsZgf zD7r>ov9IpiPw(mxrFS^Aw-J+ zApr;p`#ZHJI1ePGQO0|;L}y3yO=@a4p2P$=0D`c{PexxD7E%|Fc~r-7y?&ib+T#f< zzZ*<$rOGBJBV*+X#D75sUGoI{IrqLv=WENEN|b0`@+@U*N`LKpeeD7i&}GEezk`1) zPd}g46z!QNPtQT0lx&$(aF5@_%cv?1l+C){83LW$Z)jf3CA&rsJnHs@l35)HeP7BItB;nE{+?Mll7ja%}&!HAb-cD5fETMof~y_%N{u93VdQ#eY>>vVS^0< zP8VIg7@~2&?*!HE+p=qu?#sKMRQQk4@?;ORK z^1D4=Qdd+N_G<12TLl0Ae=Btb;+w5wv70Vjdd5Jqb*HAyi**?trDvwb;pL^`zEf;} zdl4~ry_m1rtP--m0DaDdv$+(q2y9K*z+SdFuvLTr@H|owY>n_`E+r& z`x8SvM-S3qa-sj&px{8q$teR{6w1Nka-SYBfzhHqZ%_Z!BA%cucE{^kJKNj6ueCdP zsR{$XP#|N-gR=FzIblvWPZ@~)uTL%E@-&=Oe>_6FsedyL0ThVsiJH z#Q!=*T-=yBW?HN*gxYfpv?%|noG+-tOn2%_q6Kr&y36gJ zH=L5&^akR6VA)FM>x?u7A}Gi(KAur~KCZ)iD=a+a8AZ5MbMZ>XlHxcLCd;@kCN`ZA z+BHv*EGzBN;-`l;!+~J$`r!}-H0O>AZ8sx!)-##gp~G-oV#@z0%UutG@ogX;*jf&X z$?&@-Z^{7}8i&8+P0o={NW1}|-@yxhD`PV^)0#(5jk3FX!#N-p9TWxwq@;OHpP$7V zFzo4q&EH723J_oDe_{K)>XeywN^c3@_;ctPs*EUOdp?h;aB#{XCAwj>`% zxk%V=-mpyj-`@}~GkuL=qP7`M>A(k3>=&5r7q~7X?V8Apf6Wb<%u=s1CLVF;ICnaEG(LN3<~og=Jz7W*_?kBnNHW_Z)kR7IgJ0B%UeU= zXcb@2%Ic()Wv-NE>AR@aXlIrpkRt)5F1vq~_Q-tdU%Rj9Y%n~}zgDD0bz3k%I*4=+ z0ycrqEeZe$$sI`2*6|%9K*4wSeA@n_lh=y5#~3evW)sOcUIVOz@$LkYr!Z?I{4+`Ho+P-h5j-avSyG zHzI~>n;D=0G=(TwXkbl(R{EJg0Is;rAMzI75{NTjj~DcCHcowSkg~a_N3}QdJKz0l zU)D6dAsM^&WyZG5GZ;j^^888DT|fqZ(mKfc_B$tnE|%lZ(70=>+5`;afU(RE*s-6o zBB?Me&z`h{3zmM$uiJO>h^x_PGDzybo8g(&aQ0FCd9EY8k{pWkv)4)i+#`2D$3)2Q zm2l1kvHHCyjkXMiyZj+2J^+p_s+!vZlF_R#7*u(GYY>duJZl9#O=G3^!Y_~!Ucy$~ z8E$r}z5EbY;OQ|SSzt>)qq(l+ME+a$X{DM;Ghk(Tdj3(S4{H3cC;J-2ERk(RVai^U zB;LQwbODH56vSV7s`Z|g*TNqKzpc{U8vxKX9YG!A9xx5>)GDmpYOqiZGeKUv`7Q+ zzFF8x8qL~$KNWwhHT%1h2IY52gy+CJoh2*CEe59YgY7jk>;<(a+CS+i`O`Oy#uSTfa93AnFOL1Nc|`E*`!c9|9*Xu`wY8 z7f-y0_nOh?GDs)~=b|_~zyVbjw&$ch#sdiptp2#GTgaTMmEP5sgXR$!ua8uqJ_AvzD@%M!(T6F)6sy1ktbV%27%H7aT$%i5+KKb z_ryh_tkoELIbQbF_nExm@7C&kz<9H?g*L#Xb16zpG$c=V$6RVBP)Mwq6C+BAd9Ur01!1cYy*iwIyT1czS9uYc#K|Nr!NUVfA- z0Hw+Yrh?PI*okSp;V1@5bS-fB?Jg+lETgF|?W_mj++><#25xZ{zBk+veSI@1+!J_G zUkW)Z7e}=>CT#E_kW07MM`ix#cHc8~eX!ZTmBj1Wq1Z<^a8cfU2y1cfr%RpBfW?dK zWhpBou*;G^^2VVz8_BPb?OTw97Q^7g?;?htBE!KICJ4GVZ%j0UIo|S7wcU`{|G3?| zhHwQZ;sYzm{H#Xz;0EFsN7?ddDXK;6(Ota<5P3m-VC1)x`utONVMK@%O(s)z4B#!U z5Cto>$7=uM++%u8;;M9mgT~XqvCMtw4IZUj8^8Z`yv9xlL>2}nL>34)4`y5j&_oMh zi&cWLZ2o{Z`g6-ykOX88!muilIBT*yUYx+&X3`}-2m$9%{H_DEN`q)f z4gs)uB{5)xz8I}pNge&d4oiF*MWLGT)!C=hvPbWM9MWaBNl z?8$nxsvpdIOoegI5lT(5o~R+{KG6vv3%YjdXK4Ta+}T9+4r{&`FE>a2~}@@ZafsgM~Dm-DjY4F-M}^9eDYU7 zzY*nWXTzYm4_&?gMZnhtdvuH0j@h@sQbW{ZxNWcP_wh@ZlGSkC^<`RTnV*Qv4DIat zelC9n)L{x$@p+COs1=1#3wz?otw+$_!hrvmS zn&29Oqj|kQr<~qSHF8^r5Dua+_}J%`b>udBnLP5EGTi|@zsprA3ngUS?L#IisHCr% zeC>zsO%Fj3ayCWLx$DWlBcSchp|uye5=($n6f3EN4Y+3W&JqEDAXVP06ToG*QE(WL zdwk=0Q)f=gdEaBna|(DE#NTq^CIoS~6Ws`wQ%CbNPIR>-M%6SThVi#2k;|NSU*K?Efl%LY%&}kVrL%UBu%w! z6Ie^>yqLI;6)`(!woL`0V0uF;cxB$wipE6tRil% z$hO(1)exB%Fc=6Bp2_ltK>#EJ&{V?R3zd=s=jfkQNT)O!rk)mkBKJ!8sdZ#eScq>M z&SM9$Qupjj!-$HORB>b7@L;ZPpBnwy$h&h;_-86SnM*+Mi^{clxSq>$PY}#q_b1SO zw7u^L@%#mLrf?(%!3HCMd}J-mWgz-ZL+O=5rmo&AUE0*UV|f|3PkH~zH(S|?Y;+wB zsyk#G4hiT*X)`B|2^7$R8QO?>nEAMn5Mcz^efCSCSxG@g87Og?41W^hbRtJ?$r0}b zAKl_J-vt@<2239eFMyaS#QVB%otfs&Q#p3F(m+uMEMy!VjMxEs=WM7EByIF_(l`Cs*IS`X4J&AV5 zrFS?OZ8i!5Z0UlTSt}tUS9Bpy3z_E&%3@l}cq~)_{Mh4WNhQzZ=S92`%U%AIl<>%FlEO9XH3f7^(44^*6xibi-8(u05P1pw(IXeJ)9bR;3eZ;KzGBo3 zegpwaTaw>(rLS&~O6wg8i=&vR4))Nmfhcs6y5M1*Z{Xpjh`F!k6*ob2O8GkxK%T&1 zN*SXzgb2C=kK~m3Adw_(Rjr(0Y$Vy&8h~aA3zDSyC(wYR9tSOPLYJ(AlG9Hb+-Feb zfw>8&QNeC4q9rZ|EB4M7EU1nnpcQzh84)_MR|`3CIT2sT zvvBx>7L;x&IIPTvmY~eRe9nU3sjF`#C9QV2VYj%LwYk*3@^sT|C$c~{!k`o=2(C_v ze0}FER+4s5VdJG|8SUdg6$kugn!$Z$c&jiuK*z2uOjV+HTN-FHTg)ZP)s*{8*5#`e zfA2NhVWn}uR6U4IB7J(oSI3pR>w><^7Vo+$3Qkl1DRZ(N_%d!WsC@S($2isd%iyP4 zcheCHukHxCLzeQrt%H7sy=Hlt3GdY7oF*D@)v{AQ`FUR77z9Q7 zx4MIuX)A-~Bum^A4L?m-gJY>6av*nyX_(a3UgxDg+q zP*`VnCM}bpRSO3!R}GRUSJe(Hg4XIMZVQUcG_ewwC73gj>SaA;3S|Z(MNujH-!P!u zfiG0bx?bt4#4$>iaYWGtE7_`LQcyi_lRR$0-X*$o7qbCH`wnLMorpUD!BA#z7_Rab z^Kr7qmM#k;ZvCXz#suHn6+77hse!HH`i0F)`?2(5hd=YHjc&!wzZ>02mgjf*e4iAI zBO~a>iqwm83ItcG8MgH>gLABC8}lnNUDz4Af*iq##;6X+!b7H^9HqN_wf^p|1uTlG z&*z>7?@~6cZiWxxET~GpS!nW-L6=oj7NPN0_rkCKbvC+bBdoW&rf{O@XB+`PoLLU) zpgT*&W#Qp0vQS5XzK_igxJSM!z)A_9{KH5s@BS&03EaNKZ;NHB6U}FpW3k5+qoTpBc+$GX5Lw~#WKR*FNp)Fn4z0Xcc=%Ck zn}SY-@dtiic(3iz$6pqhphCq`Pac9ne|$;_YmmYS*dB~A-hG9RusxY}{Or%Kz&@() zCouOD2~K;_F3x z3E2F{nZ=ISm5=j$`U7OuvZ=a34-v5M=I+6D&0lfqphL2;JmF6p-*+>hsAwCe2Xdmt zwm?*@hrsa^pOVpgUQ}Zw`5$`XS;9F4qSBO-lFDoj*jP^_vuGF5r4jH;Sd6Z$iuOU2i59#vqm2O$%Y!^kE_zg(^~ z-DH>B2=@4X9ko!Y(WfaftlHFxYYNoOifChCRFj8Nx_NJt5-lYNidnQlHvzV|k?{%(ee` zd>r%3M|=dTdlR=`x>qCL76TS!73t&_J2B?C^tew$>!_!DH8L9|`JkhS$%{nLfXdi` zZKl*ThLu0KYpnw~Ho~zE7_k=piUX#-8y8SWX~SR$7OyrcL;Tzxwo$ohP@W>EH+8a09d(t+C6I|>i*o}Q(fVpM#g7+NZ5{#Ue+!tV$Vec*?! z;R7!C@yL}FX-bX$^QvD};*iBckudcX;%Yt?*aJhVNWV1SiBZ~N#t6nC@*vgN3yQU8 zH(RmXq`py+xdDFG95g_)Zg%{aUZ}cUl49Zo_wK>c=rG}aN-*p4%`fdJVDGJ z#LF7qs^2JL6%M&b-oGW^x`#mn#(2C>o)G9D@9I=OT>8v?D}t#d(+f{e0&pU{@3a4V zrE~?;0Gcw;AdbwiNGK6@iFbw>8`D}ErrxP${}ZJXk=XI37walVvPLTmHKi%a0he|n zGADD_x@LrY`D@$qb8EzXBaL1Mxu(XDuODczC2q{hH^^5X4zmU^Es{dh`Tkl=Tz^Rl zHdqg4R2@FMF)i)&EJ0Kgsyn+nY^_i1=7n$rG8C0)aIC?_$X6}TLhszox!NvGK%;rl zvsiJ+gT~!WXOK4qR(V(*tjM2&Jxd`NBMEsArI);F6A8mwK}dKYDZ!a6?BWlPDa87u zBzY(Gt3HD6#${FP_q-oj`Be?~A&~*k$%_bcyX5iFGr6=hus1rT*(46D6q6$HlQ0pz zdIi(L{a^u1EfVy!JX!kRgkaQPZ*7QD=uT~-%$@nK`fWNJ4gStTMj4a(c_!__Ih_oo z&%NtONpYob`6Py8Mt0);tWM3QN8QU6x#@ymK8rb7 zY|!r2iYhuc`UzXsNjRQa_#&}F*_gfI;1n5fv`|d+UR>;vXINy==v>UeV{nbM#+-rM znLvYo7xGs{7xa_~WZt~p)5^0|HI>gDEWZzZVA-An8|6+n`e$6G zj_GnxM=HERE&MRn-nl9L2M9A;Bpg?*?f=-?s%;LGfrZcc#Z&O zED!X+2yO!xi~wS|nrPtlZ5y>&A3x#Z%}|jYS&rLEa6f%k(X^Wd-laj9;`3Qd8y&JvamUM8 zFh%0|6E!)h1Z2pgyMf1H{@rVY3b=^mV2%U6GJ-ia$xL;)%wq@`KOsK5+PP>gbJe<9 z(G`m9S_JnYybdfC&+_9#PLKh!dr0VwG~`X_9T^JD3T*Cd!eC@Yz&yXkDnM~IC-eZBE&jS zAvbZM1yvh^Kt=Wt5v9#pmyLWxS2}J66Sze{WoD#`DavgKH6{C~oqMB=*i40>(x^w4 z*$$WOr~|uSi3Zw@@05Y50@Z*@aVTtY6))h(SD$e5i%UYt6W^034?Xx+Vgzr3RBr}E z5}wWqa%_idNKLQ|U5BZ**Y68ATb>Ta$k=$#n^^cuHLkJz$r6j0aJCydx^-E*cz04BqiB8S|l^3?2WU94`KsyA93kO%Ea!9)c-iK7z~Xso!ULis`9? z@Tu_Icc2gaRu|(zt zBDyoD;kq*g#-!Nu>Hf75*^^e61W%-+ADhnRZ+S`)X%ym6PbH3^^8B{up-A~{Y2H&RLjB9zX8gBPcQcMy8XU^j7UMb3)~HkjaP z02#ViGizGI?LJj5SQRQGX-gG7iU0V*=Y#h{fu}Pn>B-$~odc(i7LDjV8>DH4lNnok z+nb+ud-}OWa4?5_I}5`P@Oq7rRy9 zgSLCoa99NRXk?EZP9WpHw;is3E~>ETC)9Y z5+%;dGv3n=QmX2i7oaz%oUYzp{)Pd{&>Gt4`uO$w!~86n)3E0_B!b=N>3w+BFJWgp zNK_b0ggjZ$h)h)P*U}%!)wncnr*z`mgL%2k2*gaxV1hPJav+lO%Uh8cg^+C6rCP|n zzUlTH&C`{xqPCGQ$DR}eHtryf$8GA&Inn}0E_d@+>9+xz&7w1_RrR{+>5w6N-a&?P2TO~4f)b8$3r+}w zBHaZyp%eJ8WCeHod|T(y9o&0b_AP%^@bI<#RF#Bl+Pgwzsc@u`_?InoJXv>WF*K}| zSeH*8^#}xf4S;irDP=b1yoNpIWtF(v-8~sRv2E_ox=seWDR`tZyO)0D%sV03{n-+r z+&`xgI6*&Tala&8*ScCFIox$$WDP9^ILF_m_MpVAF03U`FOZ_ zWruSy?%@*RzS>#1{&a3n=D*|X|APW9>)_& z>*ZQbf&5pMOtyX19#RvU)uByijU>uLxUs0bVRf&N=q`axDVdpxr3K$?zoa^<_@`Wre|zk$qGag1L& zVbRA&R0cPRUgo=HbI$s>J#VcsvUWwf9n6F6-HR8U zz{pJXv+0)3>*$$m$jtzLiA**u1ix|n1mV}x3>;nA&&+jLmRtmC-mk2(bVicw-?mExPkl^;N6f_K}$-lhW5b)#VbB%EvFI@#!%(b~at0 z7bXX_3pOegS6i&YaX%b1YDF;>X#$3-g!t0mShm z-z^;V-&-^X>oj5N1#Fz%!8DFL~50leT1 z5)MYT)9P>4F`~5-*tpDrZEN}TkEc)3(`jTyVf*zVh#Qm>lIwT@rw#RN^jZ$>xm5`d zJ019=7sX>?(8lLd&+9MGHrL&DT}Us6E5mtQ_&ae)?*O{h3<=mn&|E9+qI58asq7?0~IPn>l;U?*`%No6`D=IoXMIBVw`fLqwJI_fyVK zGr@f_V+@~NXf}ygQ4irxdxWCIagAX`R`U(K&rcdwCU}K%6vIPi?QlIvf43kR>wl`l zzwZJa>zFv@7tSQdoYTCqKH)dr;|fYklI=fjsCqA-HAgb{_UEhFooMi39oCb&H(-X3 ze3zCDe)D)4(Jav-d7+cPIU@>pCevKe-cLICAkQeN?8iW{+fY|9-qe@-5HJ%ue+v-h zB#cK0QPkQwaH&Mq-qVi?K?IK6yc)25D%`*=@itthzlyXFSCiBTWWkXPtkde}+j5+6 zB#XcNVq#Zs*u0U;wZ3qkQgK3o zLn8~_PIBvH@DrFe~cSVd1zjHV>0`@qlW|a}j zw0}zD88dFgI39K$rR7&BPnIGpj_{Cr^y6f@f63{b2%ox->&5u=!o;t#k525ARFmvz z;m>gR+IF*3^Fip#i^pL=4RBb%t&<>5`J2JC$-(!R_LqAqW5qWc&fka%=Q%w5y5&Pp zCG{NV{+<~MEvL?LWhtFvV}8ZQfa2i?6wp`_onv|pH&W_U)Q_DCog117jX@uGzk=q| zq2q=!=taG;I&@2Lqz`#4OOo#bejC<=jwS0i^dnc#j-^+#edt7IDfh{ZWX;eYo2DBy zENlDz9+wU5?a_W8JkD|jimudUgMS<-4u!j(If?#6lqMMavDw+JG=C8DI;_V;<6`P4 z!(wFQ`wv;SE}W!a1W;{<_Vtfz{3(9Tc0}?LMy;n(XA^r< z?NUb?F18C)j$!FGI6h!e{n{GlL3;IK8^U>6b7>RnFHqe9$Szz>=%-DTH``8fL{;V~CmV zjhJ_kBB2pCUyZ~r=@V9Q+>^Bk^_^TIA9BkN=MlisTsZ%6HgHrzUs(T`TM7*=_^hzI z^s$ye5yIf3XAfn9x6!5v+plJ?+`BO1e?7h*`IQ4ualvjsj;&8xw`wWF) zZDH4%WifP(y}ruBA~Vt~t&3?>Baim#@!>d%MvT>vpE$Rkoo>#iGte67VVY0#Y4qZy zi--D^)5jXYlf&Of7I3biF)*YUL)awzUR(n4Vv57jtKdGyNX!PX)1&oT>lneXHi`L>SZMvt-=2 z2M6)%6LE!~(wtXGMn|~T)xQedq^G#Q>8X-n5e_o}O%(A7c)*__IzLZJ;-5tM4#V}$ zbwQ5dOqzcsn~&n^@4Ly+_P!}~^BbumWI11EUX3g@yk*>?x|AWi`d#zd_gXb>;tb%uxo)f6U0K9L#uo<**>9$MgnlxC#%D_qlC9KCY0*xTxl4KH zUt>D-<^<`n^^&$1XXQ$llgBt}_tzFvz8)TKemvYy!m_nC9#=ahcpiQ0K#N90hbg36 zY+aweS$s%r5*9coI^kZh(w8N_iEqZSw^CM`^0xZGUtP~2`NE4PmF*a6BRu1U4|LA9 zZvrnbv+hpsjU#Leu#3>#XOX-5O}yteQyn;k$ivGi`u0#Oy-_3j@OKkNoq+Qyb;y>I5TP-mJdP4wJDRObdRVRPKzYT+L#|4zj$hj(zhOgo!ny zy1}KqHNq}et!QrcLdYel&7z-iefFA*<5v#qN%@H3_u_BNmH4l@8nM3cg704oTkMmK ztDmdDGs!N^W%*3P@y6c7KVxXk$LKvAStx-mU`pdxM%S$BLk>0FBX>np+k4SgN zfz1zlup-xeN2Nr*ZWK_<+`ao4$?8wY+y>B4tdF`Sdnp)FhNt-`Di(j? zYiO#ImtenK&8-rkJsxT~J#@jMnm$K*V?VSOa-k5RFc~9Hd2I^;p>PxD)FO4Kmy`ma zwb2Hpgg{t9FF54x{;P5^mz<~U4pS=n*-yEf6%}*C1e#04!nf#$J`CA5C(#bg7i-Q) zHxfWcaxH(+5?`;W7$e~)zlq%r_fn~{mtMx>Cka0gB!@x4-A--zFcyyBrw$TXU6O}i z@y_FeXchKO=cF`0(-bBFZT?hfwAH1Yd%;t96mAU&cRf9^y|^Us*1<|Wh?0htGZ5cf z7!Cv1W(KgrHBE6%wqvrHnFsl1{NsXXqW4Y}NKG^vUS>9Wc+5N@*&67k5#q^>=#kGD zImwahRS*?T4QlEc8%cK*>0U+sDI3It7PGmQ9@Z@@Sq)ai(ksF#e#y9+;WL6HPIGzW z%S6*EmH499o;ir>b?*Xi?QDDJL{lvg4_iss9905u0^TAFMnXLvG?4w&Ug8J)f$ahV z)W0dua@}^h2=gd4$&4=Sp%>72Uvb=8m)@!c?M{@%18m(>2#z(se8-Xuo*^Ub$fh&u zK13cx6gSwpfd{OqpWtRDrrTPsEn!1SyHT&dABFH(z&X`&Mg>#+m99A^D?%XX(*j%4 z^K2Mp9G;}xLs~i|@|>KeX$e046;y081LFBlA+I6V*!T#MB+PfhioFgsntaU(3Vv44 zy$yy|K4HM9N#5#AvFBzDcq>l$yFUIYsHh^J4)uc<{Q7biq%eI1OQ%ZVP2bCMIbHLh zf^;!_1Ygh(LA@7BURz-&!9q; zfrIR}bn2BFo!^Kg7@eEH0vb&3nSw59sI;x=OnDSIWvSSovzT{IZ`7K1F& zLXF*11{r(yh!n}b4#vKOCmEzrD%;rC$Tq@QrjaGyGkQL}zu)`io$vRVbIyM`*ZE)9 z{lBLTVKr9e#zw0-%sQVmV3w&r7(luegWMkLHSzE6juyWBf9<@S6i@!v>qXxqd75$7 z75Y@CV+rnyfi@ug`7_drN{7&{NoJU($B;ls*=AM_sc}=`3Q za(}<5q!jz)#wHvZ{(Nq7oSxXPp{xcI9h|!UX8GhPlP}k}tOnb}1j`Z!C3;6xa8>5B&WV_@ZsX%l;@;%-lh1$xA?b6EuN<;Eh7$> z^L`9Ekn$Erw-hp-!X&19yYWbUyZ5hq_EZz&A4!;8vWWS~XTX5aI_3{xffK{}yQqEU zyn%~y@_M6TXgEwC_^xUHX?+#R%zpRuJ!eY)eE~6D?MtmwAJSt3cQ3dmV8`~Rn$I;p z2ppT%bTj*wR)rL>tIXPjMuG~jDXy^iQCgQ|@tGXP*BBd#SZ&ma67~`?zQWff%dLFC zqJoeYB>tKhGY2H1U8@EL(+7GbPLym6HW!J(qtfL0_+pQ4Xx88l zr|62DeALb(J;TI?gqo8WT&pUVuA*|&O6aR=3ET6UEmZ?O$s%Y(R+>haMs1q?v+{0z z+-~4wR#&bW2uK%Pp|M-BkL(L*|4@F?slmA|9 zeCyl_Wb&=MbmPf;`qnl0+YR2)^4`WBj($%@t3pbx|LL%98`#>3Er|e?pqt7u_`s}) z2WTMZn(1+x6TN*(#?~b!?XQQUUHwNFaNF=$z z*0EFbb2V=AkpLeMMu03W)o<{rlVXhXbc^R3Q)+@jqPbtS3cb@G@L#((@?AUfr5nlC z*r=}|f}cGue1Qw=Ki_4!8)4u6+s1Ur`V&%JiT%$;z+$|jInr3%dFZM3{LFxN!I`E2 zD^~+|AWWwP=3a+3zXR)GI$X?|8{upgW?+PX@1%j-gTKMsu_;kJ=FyY-Ox;e1n54xm zNN7WgoO-2Iv(+<4|7=^Uf{8yhggEx%p`jWH|CNDRx%d3lEbRBEw%JrS&_FVSw5qR} zwMMV>7A0e1XTp($yFB8$o`?);zJ_x^Oq=XsO7e0t{0-``hrq{TZmN6Hxsj+8o#}S* zq<#59ouf9x!q+DEseWfzFm zxClW35r&VTNH60vSB`S>Dnd8P8YHZqbH?{Z_sNG2Rwfs_ezZ?;=Uffk(JXRyVa~R4 zerGBmNVT37JmhBi0ugKKW*TQ?IuawR4hN0$@}TX}gsQj5u|Ss>6yNbfVnlSQmF!NS z9pTO58~oRNCsGezb`Fovom}C*$jFaiO7K=`NJEoNo_A-r&OHlG2c&SMpeZXWXaX%l zBeN_FxJ!9nzWgv%f~k7jWbb#ckv4J88>cW9L#%Mo@KDk5tj z=w#6mqPXi4H|B0{D)U&N9Yd7gl~(M;rDVNwMnrYeOZ6h@wT1LmcOCOxNaNjxgkc31 z#BG{6aQsnACn~fDYXZTC(j}55)uLkliBb#_K;}AYw$#o!ykJc1v%9d&b|96F@(ZXl z49dq-@bU*zw)b~}>?>NzPW%LKtl1_bi|wl;pKs6xr#4CKd>1X(iW0 z04MJ2&Qs8b+u?dXxJ4#fyK2NwBw)lV?^eO**3ZX(_d;X}$tq>@o>oqVn=j4>pw)@D zN)~Xj$UjyMH)bC@Zn96}19b&)i2mpre66BmV)PLzgu_&!71q-x`+l(^4I-U|BCFbC zuwL*vkdHpa?Yx~}!BLkf1ViCcokoIUvVzp(9u4DCiO&2YwTVf^<{$UV*!*p53ZQvG z-%K;_tEc8`y#IBvkq>dxO-!8|3wNCQIyoe{Oz9>V`ZbCkp<)`^J;oI!70ugYtbbmg z{WankY?K3a7Nk1AJ7CAPw)-f8^L4m4cIKF4fyl;W;VB5`ur3Z`-~ z_tbQhzJ;j)t`WU10LY~BIcTl$xYYgjm@c-((`=dBgr z#WYTihQFZ$WeD)zqS@di6gL!i78bAS>;l*W7HsKsfpciVSd^P3kKKQaY?5GAYJZc& z)A&UC_L)T9+h<=+5euhWh9XebD@1#}OI1F0jMo!X)l3Q%=r*oCW=$6g+nyNP4uaPARR0-Fl54t^uU+ z@qLLQDTn{9L@Ki|Odk0WIQWI@_rbjiILln%-A8_1i%-Ju04BTZ-Nbj7!n`gyMA<#= ztog-kQhpfS!+^*OO-3MhQhl-aHGFu4H*h5;t0Od=GzJ7magfjV!O@a;EZNPgC~3}@ z)te>H_M2K_;UK<=zV9$z*mRJuUP#x;<+$Vw>$JMtsVRCsH6xC*mmAJ7=KkGvcA@ob zl8P2n%2|hR)6~6C7pOHqQekj|z4)6M`o*>7)0T<9c5%L}lP<4Vqt)Atw_uiI$Z|OP zZ1=-e!f+`L!KSR(tE$y5^g{#Jo^3d>ikDS2xmlsi5v-mlL``QQ@GsBhwWF;<%{49->KW*pE@Ua^* zudMv(7h?BX1ZHZ!2eoc)v7OnmEQVW7>rA&c9^N7{3Fw#J7B{_l(jbT_)%K;K+3Fwa zQ9D^4CP(=WZ~%3^n@|scnd%t3d=jLJ(p)ANjGZ4QE=8U~N#=yix$fDsgF5 z@ZEY}{mQJ29QR8vNE63O+I|byXTQ$5X*~9AES%EKG`zlC_!}CzVZ?X*37APz>&Ob^ z&w-F#2l>OrI3v+=7tSwmaH<}+d^!zgjcu-0!Zm%}>nRs%851r^omZ_x<_}Q79?}r zD`Q^PGNFg%_s&|&l;fv2U1B^iSVzwfA@kHwxWh)9Wt+7z?;hp5m^NRcNK>aEm9^Qcrj7;99ZS5AIW zg1zHV6gB%`cEnNe(nu0$_YG8h4mQfzarte+3iitx)`p&s228PNufC?khwf1YxK+G= zKzwtvUx?cFina1J*>U4OaQGdaw>oz)Ygg=A0$;095G)&lcMClV_F%%$py=Z?qG_vB^8wr_^|Y@if5A?YBFf#FbZwHnTsMjS5Pvr< z&46(~>5pBGB3SMN_B-mI+SZ%HTii!ZoVV>LwCoD6g55{}GU{NV#9{~4;%42;IFp`aKJk4bg~cMXOMWTdr!I;HZ}dLtKgyA*(Qsbaq}d3 zF~z=_AKL$*OY;u@ZsFP(6Cu!o`lQiE z`9`V!>~m0c-5&VH#-@jO1GsYU8-3jK`5ySOo*SXm-vuCuD(W!jC+c}UrMbZ~k{bRj z<;p+yS(JmN!crav?=Sf&_XdYfiP#C-3)F!GdDUuuc$)VgX5i7Rv}^hQR?eE3@t)7Z z+TjW0C6kV&Ll2(99yR}=9bQ(FpBQm81}!<8Twnb;=fN@LNoqd0gZ*u!?^-15{V;TG zlsR#!k|e!ovciweO*++FGU4n_y49SE^BeQ>i5xnwV$!fGp+uSq*d^NUF8xqN&v#uV zQ>#2@?U(YmrwB3pTsfz5PH_z$|JQR?ZMn+=m0@BQu#j3y_Pxx~cYW;~_N=iXt3UH4 zsj*-7x!k^OD}-zE5u(@I9Al|x(67t|W1OsCj7M;F_Tvbo+YCe5gk4_4@yp>%Zg-1i z8+@5c=`K$Lh5;b`uu6zi9|lcW0`9I|nXH+aT&h1VEIv;*CT`$`-W>FDN#2T7 z>6><<_!#v`rtdl_VhQ@cHXmT|Kkrj53!V=dg-Xk(+Fh?Qeg&p2(W7hj#jJ?@a>}{U z*@3?r)}|c~n`;lSzb2n`j@R0Sl!`Ow1k5UxRt%~Bym=ygM-rqfH^!S+LTg7vt6?^E z?-1$n@kK%U*cOX#_Kk-0jYU*6ig6?9x}445NU_aCRpU!*9FDRL?9N5nIHLzcOl40& zJN$dHx3rMoT#96s-oe2QlY{eS+KuAdQ$JDQG@^$ zwA7$}70vVn&{B+Eo0xku3RiW%l`Ubo^16Zifz|Jd5oLJ73U?ujIm-*Wj_Y?DUlo>Q z>zg8&y%eE8GFlW(M*9-nRv;bP3ecQWu;|20myU`Vwn=S8SK zBlWNoW6ykXEE&qt&X9wT%|&QXLzxDm0W826inwBV1T@lmMXhh>Nt?#ejJ@O17ls~z z9T)=Gm{nKU0d)FCFqJU=KZcpIT@tPk*>8n0xrdCa{D*2;rDJHa+SgCMia<$QXnT+j Z`4v;U50!j%k%^N?mXqOPmo&4;dp9Tx|u)?cj?Bcfn`AJBXIKs|%jqM+wr?(pLh8*{# zAN}Xm@HCYJx(%HF_++rLDeLo`t9t#{%=kH(?g!#vMt6Fd~qAQ&dh$1qCHw< zj7bub_LY`dzh|+w9)ryCZ`WGPxAvY=&7W&dn$HLOb@Jy?(>JPU{bbLU%hT_D5)|h| zZLEnkqZ2le)+$d5$kglI;%8Mhl2gE|#A_;SF{H8gHO;epziN|lQC(f|l(5u-DIe~i zWCWu|BCTL=x}Ac>R!xl2YEd|gRL`|KVx%cS3*S0TipN&$g zT`hJp0A(3IjBfg~7WyjmF;AGpDB`-xik?Mjs{Ds(CGpQ`4fALTwd-Ha{X4H7F~V5m z>SqLZzgPL1NYrmc65sa+IvKA=kZ{(>`IVRgtny-T!8oH$lu{_X)3;%g{_WXcgDS!F zZV8jE_=iF?!ZfOAcUfC{Stoi>a}lmo)Tdq1HasCwpH$E1RDw}+tVgJ=RB3CH&M={ zH2#%j{&IrK{7oXlt&SmjEoG(2(#}J8HTb#51#I1lK-{*v?(PTmbMKj=%@ttAeG!$- z@NuJ{w5Kd$$QVLZ>juDBDk)j$Z<~KJcJ>jzI?Czz>1M?Ek$y1I{B*nSmBd=I75*Z# zGqQ-*a=4se%`hw_SYP#3Zk~V_?W($M+!!o7(HU8HDt)~6x6pMKN)AZ}57ShZf`iCQ zNj8d`vT}Pd1f$?=`Mz_T%OKv}GZU6-{*=*RsW!NU`>y1GQ(a<>@wW+hU7f01zpRA? zcW30bsT(5oVSXDgzl790D@V}m{BwgF1)bN+LgNwrJ zy?r`0DCRc^c*b{(oeb_Vg@#hv{94>;s|>yC`&1d4J>}(s7u)^(UinOTVo}{^z`eSl()^N*%T_X25T3*KHBxj{{+pW6C6beJB(DR8UTS3xjUmxp zX`VGg^|^iPwFCGY8XdpgUI|M2tbcY=@ULKYG18}Xlb|HeemKpbLhQ%TOV64YYYyD@P%!dW?M#aWq=;H$D`Ea^ z8+%W|`gn*ncxy-E9`5|uIA0=;J?xOUI9u53^aamr;360u6E>TTHw0sGOWH!ER)cyy zw%YU%n1|qre;*TM#0SiuUIJ4 zGq`jOfOUp<+UJaok&aF+vTv9<$8ehmr@vQFYIYE_8m#FT0%~Qm2c0IrHAgXhp(qqr!sonv0lEO!)+#K>%Glv zK9x+^9rUw~w>e0BxxaQ%IHR(4>)u@A#)$OYOb6YNTQYb8ka_}Om5a2j1F#H_6m80K z6J@BaRl8obM}N0Er8jp+X#~^}@XL~7xiocT#*Gi&4c3qzhYUIi2*?yKNJm=^dV=R7 zec&pG**YUNY^HnV*06x5l*Vn0V6{F@Md@YmQ)dTO7A=GpwlutvVXIXC?)yE+1xv}< ztQ&zT&pC`4is@~~Fh!bLr(nj}Sk)d}IC?zWMd09G|q==O{ zBJw<##;*d0FQS)Abge(3Qf<*&n$oARRWXJKJVfw~UEco_2i_ostGR{;~1m2HgF zwKR)UMGMA}6_jG9*+#wrWdWrwyVpfoTkx<(ztqM|eHWsbxW|>wu}ffQ-X*K+1(t$7 z4cc>>XCRc$St^HNah&T>dSNMU96R5e6y%*Sx0Yqoju>8VuaKEd<43+zJy(&BDAs|; zYSu1ByqL&3I@63eJFbqEm)pmiC@#IBV8q!od9T?=X#KtvgkdhsYgj-s!a&7VO7K+PSaVpIaCKt@Sg*Pivo!VZ7}h!0 z6$#|1_39lBEG)y&QQ|5pNcPjRM0()zZLK^!Ti*6G_n=op4}3eYPs*^Ul0IiCS0V+E zc>Bt#spgAeFJ;5HOlktYFc;ZE`^@s^sS%<-4!EH27f!%wGl-kz&cZ?S4W!Xcd+g5b zO10v9XGsyfLUrKJBO9NM&9%2QSb6=a%GlIoX63Y-22gTmD#Xg%PE z!4y*>_6@13NJcon@%XRW9OfCOeBX?hD&?fICYkIj%0rQ1`7)m^zIIwC-#uM=bJLV- z;*Oxs* z6JYBO1bbJ28^RXW72K_9lY?7J-D6G@4Bo`faTVR4iWwhQNDY|St-2t983YS_BpDX# zE7P4^TliGmY6SKPSBw-3TELfs#DUQ?p}?I#w1H2oRnouz1gLtTBY+~p?MnB? zA7Di5iG2%36Fw?6*Rpb>ugol~M(d}@kQiE@^T zTSZA(3mv|bZ9!Ujq}+a3PR13e0-cnvLIT1${e9D(eGjqW?Y*BAR1D&>bvp3KjwsSQ zNANrjBHh0@)T}|uO@+71&^>G3N2$7jCghVW()dy4&NB!*R=I?7nzhgoyY_m8v$pb_ zDzmoJIC!mDE2*tCE(p1t=58!gIf^BM;2KKkazo{nC&FmEw!|ue^fl@o5rsn^-Qw!chTdotwW)o4e3Tp zgpfBHCb(=IqbC|DFRJGakC+@$UspY8{`ifzPczh}$m8rRh@V+8i{BPOJq~6S^-i&& zj&}fCtGa0k2E{>#Rvrnjd}H-t;>z8HX6~GKebZ*nsO#0NtMlh#1IJ5u7?}|pQcuG292`Gj~vX;oDMgOj>dws}N!#57< zenUiD@=Wwd@kpDzw-hJ8XVdGr5a0@Df+8qJ6W2bdQ?BIdH@WY0CFSW;whPVojJn|w zANw}E&yRX4^Xr&*o(FoK!}kML%3U!XgH_qwKKE_C@Nr5lo$H%hX?tq%=xB<<2A*ii z*lZ>36{%y#<02LjGs^ktlS|nus|gEDwU;=wA}Y48oF4$|d>&s|`#J&Na9t2C0{X?` zwC)qy17O3?&tU@&>~XNP$0u-Krb+J)sqGO%gRjXeiPk1WyXSe_Q(NECx*R0>Gq_yv zLKiRZaMU)g%2`Bp_0-oKQHnyUFTvDwcNCQ)2K0mBCXk?X6}KdJ`wgJ`?TlRi`8~%@ zIqLQZH074D9vPt>)f9PZlcR=8_G6xR&xyoG;KmSB+Z#pX8Q&@TkwQT!v=nZA+R;bB zJaD^FEbNt;)1+Z^`dA9{T7Lv+ z<&Y1`epa#C?6CcRS~+|=&8tMDh6Nm77}m=8pgI{a0Xyc2=-T;O0L^ z8Ofr+#Lc@j1t$N`?@yzjrDDFmtGWFjWd7HapLy4SvY$=*&;zJOaj#($@VVtGa1w?Kp)8TD|| zAH8lbtCK3h)>*bR51+$r=Tqwz43r;Cyl=Rw9}kEee)fqe@zKZH1#imC6ysOw5#yv0 zFB{kbEWK!NCW4e_YO}LM8;~u^i4L6IBI-~)^Z zt{(KmLfPEg^Az;egO|66MfD4H@Qm`uv$XaLwp1tcbu`kQF?>k}JV>liH%o;P9rGy2 z?K0v+jI~+n_E&uq{hi&o631EIRV{#|dU>KN`@3gUi%-|*Rq=%4U_VXR_W*S}E@!h< zH|RJp2-O?DRg+CVE#TmjM`q3znMkCryrU&qBOb2p2`m<*?d)y%c5p7ZbFd3zeh*lE zZZ&upa=aFZc)QXh?8N1)@furxj~$+N%BgP)?mQo55Z#*v3eNTaDgrUy4R*v))J>BY zJ!pE~F$8j##b<88zZ<;iM+HOG?oeBKdoyN62AWuQsSJVZ)#bXzdu3V&w001?F%YW} z&rXh-Cx2~Jyn5E+#3ShV{#F>LO22$qD|2ir3ZZbjAIVst(JXOYG^On}{eqx!%x)KN z?{v9Ghr_YYE2UQg@Hmhm>C)g8^7;p56Pbk3m&bX<_p!wo#&GbReg){n8-GM?*$lSD z<7*_bH*1_<0pHtcr5ZCAo%o9cGx*5MA85Xmy|KQ27wNstG=7CGiNFr%cx?Mczz*-> zsnDYA%7^2(>bAe{5@pi-?bb|vhm|eMO=^_^U5yl%UgXOW9j!9aqTV7)s52926?-!r z`A4?Efuyi}b=>lL1poPF_cztJ3XU?ev~;l*pu|KMlKHx8o`9G@CqiVzbXQ$QxxRWM zMC(awpSCZ{o&t$Kvk3Sae6UNQ06H>$yvjr#a7JMZWcw=M$hl;%HAksEL9KqUL8^-K z0|%0V;~-$;t0Y{>+(Y(Y_*HhMu8M z%6Oenjs|oRGsOoOIZ&W8FU))3(w0+`O!{6L4J(60nz$Ca`f{p(L5`Btse*JQ*jNZY zK&#%h*)fAPaXXq8)r@{b9ddiHQYW(Qy0*&KnTy}4qMA7Fd<)KtR++V`zhA;uaXr!x ztE!pK|F_CUS&|86ufJY!jg&p3FuS+vODSb&RM(Dme&tLAH{c09S5->(I_y3^E*Vvy z#Lehq(Ptp}q?2qhgpPYyK@32jyi-!|-{l$00o#pHg-#8iVOuRAK3sO+{{G==f1Pnl z=7>zuP|&i-?nhebM{6UY-5%d9=5?$c=t((sh>gJtX=1T^ZLR-q`pAuNchuy~V=FCF z>AQLA`O>&`_wRz2-AJ4VL;=6N*6WtT%_iT5!=`VKc;`FT(_#U~+YBX&)GiuYGAGCS zZGz34nW-KFs=t9v8i5X4DPA;csb#1VuXi$cX=B05`Wp%lOqrYdMbk_%k*YevZCIZJ zsBjXuA(8HR52e2|A(9u(EHlif){e6?ug`EiPg3J7tWXzDYFN9RWSG5jrs$p;aTdpL(NzvubuFh>0YIsVUEsR{Ink;b^!EuChWOz=zcnhbZ*Z zY}PCOKNssO{96b6O-y$?I0O_QcB)K0kI*Lw>1N2V>j+|MGk0c^QcZ=JXu~hOC)5ik znBvftyDEG3yX~Dg|Fs(t0=&%df{7O^O`RLody(~Z{vn()UpxjN?1pF;g;nO>hID~+ z-Ik63{o$NohTaNYfxe*P*_q#lkJI`J<{OP`sj%|&UK64Gq6+MCS?xUv;7@yrE8{eef(<%T8!fm1A}d!<7g%|H z<@}xe2r|`9o#OA@&d#own=SBf0x-wqxs`>7%4d1nL8>LLy{v*$ z`b8kSwJOwxPXP}ZfnRONkh-1c0{Ii|L3GM=@&BNeQ3z)%a;$JizZ<+mSn#8o} zBu~tY-b&q+l7a5rRpCYLP_pc!ks7eYV5a)wJBgO?B;#Mf*l4w>za+quV zn;Ml0w_pJeQd-hhd%TN^f~JT`MoB^QB`1U1T?x!~tr2_XuZU1O$@8rLiR!vsR@G$O zZdUY_+iGLB##Ei61NsQ->{Qx4F4AzIqHjUIvdObe$I9=1lP0r8X5Q0p(`jU>o)O?e zd0oK>Ho~B7cBkEO^4sF-ieLrf&fU)7&t6|V$^~^Z?%2*(t)u&`3{siJGQvLAeRR#8 z`kaq8KxR%kq*h(rc)}b=q0xpHC$=FHK;-vpJ=+d`yU%@k-11Yq`clGo)JfD}Fr#s! zNNq&<(hrb$muN^C|0F6{YjyQ4i3%@oj~)!zY^<20xbGM{QC}3jD(oq+j+O% zUy<=2W$G=BhY#m>PAM#nzZMOqLi73W|N5Joi|^^*wgpwM_*P?mt@;NLN)vVIInj%o zM=B;%c4;m$kX<$_rVvK_W3vPNCEy#7;?nKG*A13Ml~w+0%_8o#c4K#zP^;4FbeB&# zhv+v$#9{~_n|0It`u6w$9bxsV3Dn0pikES71v`UjQ0wuWDI%sN8Rfp0#M}mAiZ}&; zg+HxyVaLpy4&%4BN!{AB6aZ|nD`9HzQO-$X~5bXya*_xIAh{9nrSmvw^R`7#8#bc0W znOAZ{CgnAru%^CVnjrgKq+PQ-l)Lo&wLUB5G5w-EJZ{=M3b<9|v#RU}A!b`fwT-LP zt%Rn#8uh)@wM{xWfEW^UsVQ>de)9!U3i+>HfU<{JmC^WYsTFpgrqW9?P ztvIqzi6Ilqt(z^`D(F^Ny;RmO~=C?=M#3nTzH8bCx;WlRyF3=Iu#~K7QKej*zOkmcDX)ttW4b|`-$eS3MRVs=brspqw9 z(B2l2V6%fKwqF!~B%OcVp54AfPFY`8_@)VRi6thvX~9;2-5web_3<(1W0C3H2%3vp z%#YqHRLA<6-`RO3NmgHq3C>ZX=kOO=TjJ;1fy8m>4;_eE=MCKq5umVRj5+7Zie2lw zt7vFt5^#~d<_37HFI@d;`&=tR58;#86JX8zHH4r}6mWVVT{>7iosx=q$$QDyej$1FAe~Oy$`nX4ofDT$Fpi{TDG$jt7IG?WzGp_Yl)>2*Ew3$(YQbwo zdrRqL!|47Lk(C{aP2DuQKUF!oA)E7iiVHkVzASm}{VgV-xwX!Lt3O|}{NT+|b0YUq zvvGyGz4G0B(>E)5ordE$Kz*a9jUBVL!x5=oOBS-bKxH+H{r^-58r848?Xem`tP^D`tNa)18$L;*oV*G>Kq|G{aQnl!Wt?0)g{F$nPL{x}Sn-C-7d55x*@BpZIZAnW)jJWBS2M%2L+i-4_G5mn2Nw2PX6a zYOh^ro7hVU-gP&n*e(SZ0J)X>4{`B6&og|d!vLl|D{F}1EciiR;?0+P$nGtK$#)OK z*9NYoEDawLo}B-cvP_8f@1~VaRV>uhC!E|Qfjf~?FNsU_aOd^KJ9R*5TpE>{(bPLCwjbhXL?Q=2)l(2;{~QztEa{8 zI}#Obz$*TYeTP>X?w+avT0fID{hfrQCpG~=>rBKd4f9N|zI*5%x2Xl^9~m?ci}*hJ zz(R@M&kKFO!v{p@D}yIA2)0ND$Axo@@q{s(($Wd7fac*c3e&4JbD*91i|Z-sGpiD3 zfdybr*Ub0S2~sBRTR;n&s#44>b<+ydhQ5gdTwNK zr*4l%`bI%e=0;!eM!Pu|%`fP}=9iT`01R{T6y!rf|HMCUN&`sznj!$Z;*Q6qZi=o(^{)uDavQK)pQ1#!|VTW%qYvxLN&+( zR)lJF!uYjV(c^h;*Mf!-H5o7|(QVEs*oAcJ0Wr!3$OS>C4?fkucxCW3@RU+?*_sxxJr~0&D>aV_c3^J>&La zRd-LQxqK_;uen$M2Jm0T?5YozrBP~IyMK%Zz=7a`8*Jkbz|hHN-Z4}SAeI7M9rU=) zv0~{~|8UdugMMh~AIS@CpZ>(0p1+w{l@O~SZsB@X6Z~5ujj~^H+`W9i6bh*mR(vxN zzfEaqda6{AZ-yoM!h4JHH@`F4>G#GWAtUQ`6u4{vfwnYVmpMFwx* zZBXe!fL`RakIL6M{#C7<7Bum61Zt=ub3)C8B1_YX5cCsvG2l9}8(>g~+aJxqT(op# zL!^NVX|dT39ciqzIRCYZBlI|M?uiNklHDJA$|^I%Ypno#HxYd1U(d7j!aJx{Ar}nL zTdDXEaP7#S>sC&S^m&0;=jzqe^zUb#yB~&jWj6<|Grt198G`@Uxo+BrfIol`ryb7P z-|@1caC@PMH3mJ2GFV_M=l6N$+S@?-@=>jFXmzEp-ihTvrg_~zZ6p6UN30N zTd@lYi-DpGg90h$7?J+ z#NcW&g@D2(9;b;1n+{TGEV|7Qi>R<;y#xA4LJGc2R1un-E%E%X|BLBwA9SrYAM!lgq~bQo1q`-SPw3j7X1B)!7d8$I6ec%_ zvw-984%jK3jNcTCHSBtXRuoc85e37~|Af!gr$?)#B3V)EDGm!O7whsVDV-?2>eNpG zrmM5^t5*H2lHVTicV{<|q?;ihSkeH_h}s_lLuCnJ%#%HrwEfZ2KtViu=ip&gphD4W z`eo9{c>_4xAw!{+^W1|WKs|^+-Ee?le1RP#QP=hdON*_dtw@wIphfSBjJ3stTP#^< zCo5k53uCZP*spRQmh1OO8?s{MRtJ5nVNP9JLjcF*#i;(u8n;kWb24>VO0-_zBHX*7 z_xPHRCBSVfB>_Y8?)QAZtWZ^Kg*a~4`#|I+?t>sf2S1zdjW0r;0-F7)O0xDxTJ<^LwnF8*6N zr=Ac{3sqm1%XAMM638oAjHV9Wpq_!lPA5I1CQ|zN7kBye znLc!oknz$r?zZQVzGS-6Y1$)=^4rHc3S?dT%~73gEakGl5gYdRw0M4UWBn_9r2X;y z3DRTNL#qTFedtKPya6;+zI58K51txRSm5+;^36{F{~-@{@MH`E)9Dl|9b2_KBH54n z&oh*g54eg78-pk3Z=;cz*L_^nlcD0v>+< za3&;opzM8l%|mBrdBoyrtpJ$&DfE3XL3*WlQ{8cJ_kV>w{8b^ZAe;)&<pQnvs(cPGP=@KlW3cS7&{kY3TWn8Tl=3f}y`eH5{-RCxiB z;lI31S+w@JJKpR1h$?CSi6=JuNk32Zwe8FHLk$6@!Htf(HS7ISI%G}2drv)C%e?|7 zx!qFt9uLb?!&apPT!yDA)l0cCtk%deNcd4MK;6YFy&W^?6iCf1vG&s&r%>ny7V%El zgmj&*Il#3hit*^vxS zRXCduk_EK%t-=<3guVyZ`~=4XCa}cK@YEIL+0kkRrsE=rV^Hq z_+-=*nw>~IIi;Lh6qv$&HGo5VgSkz-Rm|$ZBII&WV0#Ng?l3n6JQ@j4Zv~&YRSsT4gopqoFID961k$AaTNeS{HhNFsd$VT%PMjjW=EIr^iwisfQS=ZapP|)WO_6deH+XQco){Zkp zViWPQY1FeS{e70wsg97&f61vO1Jb`o`hOJk`Up#j69;KoVbwX`VtM_FZK_4SA;vp7 zYsX?cg?$o}L%ZKctQh)tTuo~`tK{HTh3K2wIZHS|T7badkt?F)#WtDC-%DLmA!tW- zC=g4|Iaci;w_+D8WtZL24(FP~Doo!DhsN^_Jq+L4RUt zWID4}%>Bmfwf4caDQZw<^=OJ^eo4_z6YWUj@pQy&6c@qcBAoubWvzm)za+F=`+|df zUWoBkgMv4lr50=V*BYS-p1e*~Rq|YQVZFtZDjziXS6qI_Fmdp<_eW{#Wt{x~#Npk% zAExbnkK=WB`lpe9YB6V#O6k`BeUq;2Ncg%$Pz!@dcqa&gr0r_O+jQ z!)Wd8QXlLr$uhVxU=-!%_q0Q@djuYoC4Z@mpv3?pIu$$=Mth{J593UAWG4WnlhaxF zjBez0Q0hQ96qHfjp^4bByKQZ0UG3%07O8}vRdX~|)+d>J;JIq8I_WA?Ii>nK)Rg+M zk!>DU{ASBPb#Lx)0dR>}R#2BOUA|(Z)rAnh#sh#vwp|#$^t3l2Jaquhkw>yBZ~Z?B zT6zd@U3QG4%MDpQPX#ugnp1Kis+|{7;TtG?QSSk|#Rzs4U>7o{w~iHKWAUnYID46!@Pb~X&ZEvCGX5?Db>@{K4=XKrGAyp@(K$QK+-mV zCq-w*dr_Nu&$P260OZyR;J;hv2&0EJR!P$|22R}xuR@7K^FpZuL9X916S9m|u`dU9?Pr+d!PRD{-6Ti)@W!6wsR zFP(}(??CPYenK_hNVEaf8wmIm-8Rom#oRzay@A|SUR{IZz5@`t5Ve0ez|-Q{FaL@gZ^ zIHPqYY@HJTivTF3k+Tf|^@PEnH(DYIS31f~W?4G2jD&t<*AtZBq`H227>d0q$ujhmV4O_w!z2#@EMRf#I zZn0R{yYe8#J(q_;XowBFXj{X3p9Eb4x*)@JAFa3aW+%=Wj+^g)YxcQ}(4=B@Et{)u0+CT6`Az4pJauJU?0KYvJ6r)FF{T9^F z|392tNKg4$(R*OT+1APa*k?$~g++J`a8n}JB~!G0W&GwBHh*Uz)J16JVI!00Or6CX z;|$C(ongP_U2yI9!2#|G=FmAC_l&M2j;t6F19A+c2mP!-Q5x)s_Ph%lu-p3Jx75sE zw7h`ZUbr&CkNfrVq^YzZ@SsO?trf!O((F4a^~V-?tXePBF(jL-%0NmH72gIH8v*i} zm_dzyTA^d#r#q;v#G#Dvo#J*sx5A1BL3%aLRJu5lb6KJfa0 zuG!W>#pJHhCn!BGA&*!C3|Feb2+ioB$frZR?-$+?Rx_E%7c3K!&_1Y8tK0;%p0-1U z-i8%PnJX*>h!avYInP;{qEf+ojq(!dy4~%-Ee<@%2Q>Gxi)GE{K|+Fu(Gi=4Z+Q_4 z!g`_Tcq@dWeQ}hP;^Wafl7gO1$D#z&%(P%9lU6e+ur;Ilb_K`&r1b4EqKKy|uoq?I zUN=4+vH4TST_qV#wh7D|DvMNi4%mfmyL4Bm{z!N+1-L~Gw3<3p&WY;Rr#n+~6>F?o z^;i~04`X{&DylD3S>xZrAw^L-$qmzhXG8IBv2tM+=+$sD{QaIMy(b>D-v1C}NR=!X zLv)YD;)(^MMXD2@PrfbMu6EB@r5oQT%g-v-kgFH>B3vlQBZZF^7AvVCL{_r&JXM67 zI;7c)5}efj#`3Zeafp4=_2dJcW${1OJ98m);5Z)wU=3Su9-5248-4e#?+mhl{5M`M z#ECV-(W`MSAU;6xQflLINb?Q4A)nSK{QdJX6%7+lX9X}b3T(2fkJ}{MTaN|Kw#shI zF)Sr?Zh)e~zRYDa^sul~` ziXFy|1D$O`ntgk#qCQdqyjtRpdb;B@-&ee5mH&|-UF2R4gSl!s9J z$mziD_KI5eyZM2CLl&k}PfLK8t1SCAWyY1ZQ{bJZjekokKK}`tFEYoQHQC-BvEf9S z@<9;pw;pDqg=y6aKN9@Ms^HJwP%WHZTmh-3I?|j>S311gy>;x{in(>)0i#n%3x`9g zj3J-ZR(ZVk*&pp$`DmKgkGB1avQ;WVKMlBEe^Cs(`(<)<^6_Oo|A!L%nLB>ziDfJC z$ImP(0!JtTM@&?~M;A*F*o3=3ya*F2hB7s1_cY5i%d@7@dbSaOTk3URww&qh&kpsD z_kKI6@QX)(1SI42+>19}FwLsMSca<7yv%65O;GS1HMF@1Qqt`y1_wcyV%~&GnHsme zPNTWm2mMpGvAz8`*Ky#m(U~ffvxo_dOWOT7EEPpH*>Z$=TKkC*4*IyVH?mys$|Biv z&V?W;iFJ2RQR0n{jAY7hJd~Im9lgojEg3PDg<>49f2cF}*(q055t7I60EelULTY*f zo+=8`usfR&R+EKX+rSDl7dHG2?Vh6iu*O_Wn@p;Odt>#x(HRvOUE#wsYM;OCr+`>z zKM_9e7V$0-z(sb8g*2DnqM}bZDIWXiv&j`Tjh0Z9o2@X((hKvMy!4A_A6K8%YrNqQ zs4U~Zb^)a8=St7hhsqW-+9n=seAjWC8S%{2*BEN@E*#_%g}f;P{`nGT|KsgSZ`j0S z6>P?ALrwnsL0^>k1O3t5xJO7uDzIJiRzRKi&VnO{f>2dDm3aOWc!BVE5`)(VgYk%- z5ZOW-ue5QHUg_2agCFoDRqUMdLO6MPSKja=C?T9tTwa1U{> z#;u61aGcdw-V^Y1OD!G>sEdh`O&X^CYhO3Q;z-%-jKrN>`{$3Yd{dBBbi9O7K=Drz z8b9pS^C7a_pIrn@n~Q6^1VmVA5q#AtopDY}w=-Tdy3Lc~c)AUXT(>(o2nt?kCmxOF zL!N09Pjg9g(fFAv4_)2mDWdin_We>@2iC#fHy8m0Q%Z!GQjh&>J+0^$xR3B@VKs`r;~LnA`{KH^L`)=EmkIyPK>F><&m?Oj>1QbDj^nUhTMMrNkoTd)gw3;L@vFugfzvK7DDTCHZ8b8LzKkPiL;& zQF6FHC$$Rg$E{j_8OA{~ujhK2we)xwMuTf=0Z0HI3`tzr79iuGqg60lD})GYdgqG? zfpv$3A@7`JmyY5EM+&|bzaIS>eH!-sCJ{R4`n2(5(1N2^_gC#yp)wid+heKM6wTt} z1bq^4c|{6^`bxXETh#tehtoAEkhg;vJ(d2nv$xY+^os`)lsgMKL{zeYj}%}#a) zc5nN-_RkIy<=?02Rd@XW+M;pz4cAcmre0Y&U5T})_3w7u8ZGXY!9y&8fH?c@>>ew%osh1JO%rm2?CHs}5qL7S&T@{-TqBfij;aBTlgTI^zXNdz|R^*p_@?jy?VX|5gs*6#t*|9NRQbVgH#A zh|6w;dbYO!m_6`QnE90NAS0>=*J_uOW(UK7B2HvsLGfSZ||&&G&vez3hw3Zg&FV%;2P<+JWyn zc>H+sP{Q(?=3);2ZV`n~w-Kv$IS+aqa@IjkEqH=>FR*l`YkQSVz8}KyQ5d;2x6ku* zs6I+xe9&)jeyBH>U`J9}9TcD0XDIRU{u!G0vs~r)1{6;*sKI)MN5H8<%qrA#%A?3nFy+eZ|?NDl@KSSeQQVBuyu`VA-(lsRne;Ha$^N z)v!pqOP!Xu=`3C7{kivU?h&!wzO1BG8`GkA83C=d9>{fGi8Vtl?gLe;!=j!K5LwsHtUZF9s4x(0Pg<}`CS(}}{WS{==WO@S*|HxJZ4fVUyR8dKt_o6m zGi$c#je6Qzptt!62778(62p4}C3J;kHGBRXRHxH**-EhMQJ0;!0M}pER5~Y8ELznxa_-MHW161G@CkyZWf#Syj6KhiMt*5CoX9sLFNU>jeaRn&qvfh$x z2WAGWas-a#{pbo&g=9$T2Mk?o6bv|7RTL*MRxYBZU+51WxW?`3Gw@88#|kzOg@##>dKsY3h2cBVM}GAd5gB=^m* ztb_LrmV$r{g3F1Yg~dM~Ww&@Rk)1wgQT;XNuz>2JT;BcKj$>)#n8t_d(9@nD4T8=Z zzG~#F9pXeT=Xbo);JcAxtp~bX7FY6-*IDpWpU`6+BwxOP+N@q%6NBNSdc#pgY>gZzZ_m~v8lL=$5d>ac zfDL>!FGISF?;!M4Ukr$|;it9bLT2Ase@b|qJ@Nia@A=79BgCZC)8Xmqyj7>;1mW70 z_$*!Nd-Vpv-msMH`$fQ9HQpW?it3y7;ng|do$57IVnCXCzZY}N_M@l9_Suiu_53Ae z%HFA6(@11|_@b!zg-iEGQO%`8^=5akWcBxs?;K1|N$g``fjp<#KJ&x2-bnJ+oKa)m}?)v!dem3gW`8X0sY2&7O)n3Fx>NcgYHvM@KHtJ@UC# zRDDiuwZ1o6o*3mkPLBy1b;VG2ozMq8;QyM)YZVx9b$4f$bUhdrd z1a(IKNXU{#W~rwXRZBp^I)E1(#2}qwl;R=2rxWIltOLIvh}V!-8P9?lIu)lals%b5 zn8&y(KiLq)So9%i=oV-W&xd-|GVKk8|9 zlA3;Gju?y{J$mFmY-&LF9Y3ho3NcG@K)Yx;xz-AvBF6ZL_OZp8onKe>%`s7IR#KRG z`@!c?N2rzc70~xO-d@Ar!X}Nd1%--C=p;8H6nlV3!+cc~qTa!D2H zj?B-$74TWZbTcan{jiKAzM$Qb?bXH8_t)ynn~bEPTZlK;=L_V7d1>C4CE85V{AQ}8 z!E5_3rtMMv2Hm`D)0fPo<SyWYT76fCnQsTb1;bI^v)zSUCi;znG5s;gZtsQ&%Rh7*GK@a%{GqrLZxYHI5m zw#A0$Am9$9Fy0@EJ5cVGLUtU+eMIb#}_pcg9is(ticx(s&Bn8MZOvi^)Te0QNQ zM`YG^$Ao#Y#NeqHYpPUl?=jr1eazI99_ttHxhFk9a`yTvCrirMN+GPaYfshHZrCxW z6Nd=*e12;{24aXiE0XXG$i?pg6yTqejsRExobI1bLyJJ*dQ7xPa#rmEQC`4!>Be&< z=A1U}(c!a2M_H6&Gw%H=i)b!1_34T1An#FNLBjeS%LRZ1X2N45;~8mUT+jnr7Hg~< zl*+HlyyuK5?kw68dc0=X-FiPTo##DvJpo(lMGP<(pNnc}>zOT&;~7?n)QukrQc5+Q zZx5X$0#GFWvh6~B#T!=#n)6@MBeTpN4hV%6b0J;VUok@yp0*i^A)o1&XAabS;T>0- z;NP3Xt5h7dt9!drzzQ=afI|+h4XLP{abX>zz(`5=fCKoJoasT4aitX2f>N5w9P-j# z(bu*ZDL;}eV7dJHPmI@zvMN988%i2Yhxjm{*1PIN_QO$q=3c$ka!`pqo@kcI!=r$A z#NApPN~#H3F_)o-jrD_1YI-}1xDx#4KeW1=Jw(u(hh>U@#k#vTVeniAWGjszv8tKgVUPT6qnNLzK1FdG=n<1tb#4sC^h(pbqgkLOcOy~K1GBP( z`OA<;p1ku4r{X!Lod6y4H|p;B|STV$uQdS&PqL5zso|AVI#k0f4}N}t;ctdu&k zrcle77KhEGzp9iPECgtRsVhj+ngSbZ^GwIPKHs8i0Wfx3E_QRs(WoatU*H+h2Nto? zdE~d2b1rw@lv%ZN)PMIWk}){VG^21_`qF<`POB*4t_!*%;g-1@gQB}0O-XWwmMLyJ zSl0sY@tjD5s*0Ys?FtmJ*VVLDSE$wJMJAiCk25Pl$r8n*VnQ{DXrslP6M*HVpK|; zV|n7C-5~fh$yZ&*K0_<@b-!X$^uT><|4KLUv+Wt)znM>l*KwH#6QLHO1sAwuWjHVJ z+lfYmOuwzto{r@_Y6a0>#Z?0x(*9bQ>;iT!7T2lA1hN#MBJm_@zqhl3qEla*WLIhT z{K#-I^iS}FlpBb z`{})xkg&~C_Kin(5x_T;8Gi`)z_#=RgCF&>0?jc-!BHR};*swt0#AIjl>`-HSY}KY zk#h@=g3eyg%UQe%ccwnvnt ztaTu`UR{RK;NZ*ReoB5uLMU;XizM^U3aiwK}*Yg4Mb^3{?eHrin_Kt-jVj`q~Huhme4?xuI`0z7ZlXn>r$m z+vP=_`y>Y4)T*g6-fa^3xOo_JW=hu0TGUten+pTCa_@C@?4(YVtwEBpj@pC_UD&v? zYSj_=KDKH@V8`NH3gj2#S}kB*SYR`TkL~1HHp~Q+ih0@|y%Jz+By!^dC8`yQsYVud zVvy&%?17sGp$LJ)K|x8q^gM>Zy4BwMF^ZisvdijD)Jg3SA0(7lqtw?ZJ@T?_jES~# z0r=d<7X_}8zDsWkz_&kAPIbt;qCy~ys>h(Y-RK`+(2C9JJmk=@a=Lw&ZFlm;t2%xe z$auh9DwysL+g$lf&1h3^(=Vgtq`ky=C{Fo`n5x+LZ|T!I#>9rq)>l^cvt>kI;!e{S zqad(3$cXv<4T6?&v$E(stzsZRaquN3vc9G;AVI0gq}v?tNAFPuqCzSmi1?Xy78%kG z)qSY{D36U$~7zq_MTlmV*UDR^Qj>6n+XDxn@ zmRTO%I~A|Lu%ts{>g!ZCwZdd%Rs;#$>B+ik6FWBpDy728yvZh^7^J!~4k^E{V5u}0 zS0HH7-lq=hXxY)!iggs{%TnV&@ywgemCntEe9_mlTQ^Md|6&2X8i)-eWc53uGJuZC zvk+h;AZ+-)twD>sSvimj1}Q|2sjaMJkSbjXA5cJrrZ;cgDH2PEFJO5dRcUUwRj~Yu zjLhRof=IyVnMz}@QFV~vGN?$Y@OyHhP8KI96Y8oAD_uXCCh(FpDvM0Wv)416)WXEDpkUqnLXEK zY1CkOpaw^kViPv|nGa-D_YJvWc34>RZ@A|u@Gni> zQTls+m-vKnEHxO4dk~Zolw{5eVx8o7@`>$tE>LffTYbj=oqRW`ijPA4q(!LvIlyZ7 z>Xqy+m8IGJ>-LI2i*Q=XWW`r6-o=N-V7`|=Vl2J|=uGXIpzl@HS)$}JYHTA`Vjad3 z5cY#64H(BvU92zOYpzmdj9#d}E5uHTXisMb-C@AGQ~U;;$I8o?7Bk?|h(WDWp|iHj zF3p*ul>IdW&(9b0qO-=Ze6DGc550AV+*4AoJ25o>NLeaZ%0=OUF{LD7lK z_0|cufu?JK#8Syf;EGFf2I+F5I_T(f%eeMcgFCk#4s#60N9tox3L@q7A~%eagQjY0 zA}uXi`BjZyaX_)xFsVPy=x4c~rmN*1E!W$sZ26D83S39=68a$J<=K^idWi5r+kT%> zJ4^;`A0eO?CS?%Onn5ZY~!CT|yUXy!aHygM1bL(e7 zzuL?Cx27d8I=Y@+bK8K06@a;tk!b>7OE$8^zS0F6J}QLw|G<2setMA1z=sW~(g;?< zv2I`$IlMlNX;!sdye+`1CG23sxzY#yRAS|!DRkfF{e`Xm_>e!1IQ9IBnxvZKJvI4X zaX5f)q(ci3*uAUe=`4tl$9>Wba2g}fEIu?q*Iah54pseAZLk8D0NINN37-JCLq&I` z5`2S|IySLE4=fu>A6I%2I$5W}PkB@*vr-c-l7??B`aUAOMv$fW)DX(P=czYbjB}{Y z4yW~~Zu|T-OXT!N>3+*Z^harx0>2THNuP1pw9Y>wU?4{wkYs|4IvH3J@j|p+qtzEWbTtkdo8Q2A$ zMRZ|AE^;0tO>l0lKiiGBHi3uI-1$Tw1&(C~CDjr%P>_?bRNC;VIp`Qb zeIni%c@|yK2Vuc(AVZgoEP_!Znv6+W*RB)(VJ51)VS;1fp6i?R*!mN)b7@&#G??i) zeX+#K$6((6aUfD|%5pghj5`@WY>SP*I(%c5ENCy(pHj1GTOC@VR)t1e6#G|u3NQEl zGp&KP6@q;!AxMuzJek^PY}ZnugAs4*nrQTGgMPxgsN3ti7pv@`!|`-*R_Q1rdr_~!Ld2fhH0&-UN^OxT$hcGhZJiS5xx6iLVeff* z$ju1R#|+Xfd9V4KxV4eiIF?UbTIozC(2jjyp05-b!(qAEBk*68=#C zuKZhoZcUZ(LRuXcL(%ioabB`uZ_do;GrV(8BVhT4)y?-3+exX9$Q_;c5})`Fnaq?w zjksy5oS9zFDJ(NO-lZa!EctMlAjaRB+!2}YH-Fy0T;6y5UhHZg~6$Md?H_|e^SxR5L zL$&*R{~8Ba&>wCU8%(~Rg#)cUcL21jpUg#h-2HYL21v<mSYL(wcbOhuHB?JFC3e4D!`@Z_XoNS0B6aXxij74~_xVn^)LQ ziFoj8n1lB}xd6Q?;MxBD3RT?je&4Pvcif()>a=%wfv*&*k*VmE`3g^%V|{OP>QjsKrvGF`@w_^xIy+S( zCG1evOq-~>55ZI^MnfDwBq@u`q&tX#OOYI1=Emj6)rGv&AfXNQ`7b|7xq2^pb|Z1v zrA)6|Zpyc7*=x~Df83Ljy8Gs?THJ5lqSlmh(>}?)1TPn&7WXk-+GO1J@>_Rvnkmq4+xOPZC{)T-c*c}797x> zGDp^2Y^%p>HN4EV+j7aL8!W54LcVNWICL;*EU&1?sI!*>mpS+c)|5=7nHIt<`>wphvig%^P)a)WeMDI!Y+k&km6~(eH zr)thSh~{I8449wG!ur;%;2wBR*}425nyMtnhvP-pqP6GUJI}qCdot+^ej%WSL0e6U z1(V;H>`gdD3kJ#L34#>(7Vz-7tP|kH%c-lHNqD9j6h&hq+JN6?t%5hyw`>Q2NAwOQ zU{vyi~mI{!+6+Tq=eqTm(Dm<(!A!1l9bfT>`uA>gh4u zan1n@j$345(LnT83!N+apT$p3BHElcMen&AhpDXfe2JyAh9j(qZg z;Y*__kbmv{z+zYD5yWdVe2%jlrf~4I2YwHljs7UcX>@LB58sTOt67gYdHuE4zq;P7 zyVo5RB` z=RXLPZck`MZCH03zEX#iCuA-jP><J- zvd%2p*&lmSr1c>DcR5~?WY2)ZpME#}Tp-7Bk|KjLIAaBIC#8K%dl?2jj-(e*JSjx@ z;jUZ3io&<;x>@~f$T*+bK$xlEqkg(8PqfaWi%9@#b3d+fN6VVna24?hF=7reg z?^h`L$AyzE1jabkCnULrjqACWN_v|=I9BMj8W2RkV{r~%1_STbo@b%<(76;V%*Nfti9ku z)gI2blA&gEXFd-Uw$B?<`m>nZ6!rAF*vX4W&2xf-)b85*DCWnroFQq~NZ74{pBfQs zf#5BRBU$)zS*_Km^Pr}(B%z0j%`Js*ucNv}1&Z5|!8K>%=uvXnWE=y6`t zml(r$>2KgDSh-3X$wc-UuC*NdiZls8aq?ib8 z&72~AG4AEVXB z7%~_)a1!I4_@iF`$e|my&>t}vo}TE9`L-JmhCI{Ok{20y;a)3BGY^)pZ4CFTS`XhI zt>LOyj_(SJBb;Rg(s=Gw;`WohLaK3xW$4mCGl=NbAcS8mhMFB=Ten#jslJ)cht2-U@?=DS5**3~ z%BL~p^%!zp7Y93E?`DcE^dTJPuS@F;=INpu>Jv*FL4mV{`Pv$;Y%aR~J(Dz9J|KgV zh_;Nr&Ll(UDf@)zAA%F`2E?c&N46T|8{zDV4gZ1KgD1E01gpf^g2^_sb>vk>F^Iv7>_9D|TzmCo@3SAoMBP+&9;RG+FOSW* zT~ts4r$7A?wj<74TxBRNH9cW@$ZE$PoRqmdm?Mn3a3~~dOqz%wa%0k)RWe-YC95ce z$E3gf9fNoD*-WA?ZH7U&xsw z+hkNwcGZnrwU)Eef#cx8!`CX8b5hF}PUisAr%} z&4p2-eJN7C%(6Y{gG>c{MRCG3f58Pzq&(cR#CS(`4#_=K4gE)|A}+`Z$u3lox!#Oo z*aYY4qgHAtaPbCBx|<91^CPRh;drS%`Aj^K4GcuW?vBC|BMSK%5EHp6exQg^gDncP z`tj`(C4e~??WJ@eyc*12A%6X@wX3xumq+H($HLwlW3qRZ#^`0uvx0JX6FApZ+8<#F zoE}qff%RAQ!^aIy9nI|Bhri}Ixt;2n_25pN^|=kq3p;%^&MWcU{qu#$g@$Cma@~AF zO9ER@z!zZ_wFo-E;3zY{EldBe7sF6v75G`LpJ;UY4TH(dpQY?r0bO@czkCn#B*t18 zgHE_UUy#C%KEMq$-mleVNg70;6I@>n_%Dtm&|8)0(ivrf*;f>3t7HO2rXo=ohGJAI zHD@$NTCaOd%I>ZpT$rO52YDNkBNvAZQ3H+#0YCeGkh>T)l&cPI8%QxGwXQu2twvQd z<~ew9Pu(F&WW5yCA51xPDFDisfM@w|W{>^yPSCHfSB#tAia4` zQ^odfThNq!cZpxt8#8Z(R1(eUQD7*>d#K!h0|`IKlGPs)RIjM>R{BX$VIX0LFzd`* z^>`aHo3Y6LhH=poP@4(CL%2J!V+wW`Cf{ zkSlJj3Rvti?+^x8(zDNO0ErUEk_!TL?F4B zVOR}ms$IeWjmv?v7|(QQ9?%F|Dqhy}DYAa3EW+ER6oaP6xeL;chs`vJu2&?g)eLtD zX3T#|I@z*V_EQ2m^aOqnXPIEMQotzI&(KC1lS(pdz*T~!uX_ghwOQn1- z(kN9cA1^8HU(Eh&;p%co6>FH8v+|Wx7fii<^|DlaAa=eqPFsRk^uk1@Zq0`k%2yYI z;jraV+=}&q; zR~kpHC{9NW2BvZg<`F-(xQp^~uzjn927KXTDt;47C!GGI>h#*O51{P<_QU@-OFJ3fYm*YJ4%6>-HE-P6xg z#Ma)qCq#@KdBVMWxQ96&gN@nytjFod)9kWHQBlXmNzZjq z@wtFqrSx&po=JObT-drRtI`T?)uC45XT?W3|F|hL^FjMtJ%zqt2Fe+y0} zaQ%+LHH^9(c!PTsUT9V#p}^x|n}t};?+3zreQ7t~q=r90YyM9azg-Y$jCok5O? z-iw)8w1GNDV!ROUZ{VJs8-pus{aF8z;M3s1xV5SQ{B)E{cYX91m1e8Mq5uedOCEZ& z1C)*NZZJx?h?Ho~9E)_xa}h?`bGi>Fz23#Zle#QvYi?=A1ypN-wF*2J9ZGIV5C|Q5 zA%0szQP#l|c38P-8(v>GYr502qW$J67~>l?f4N-Ob7p&FPoDIN?On18-8?5`T!JQL zzr^Lw^ixgWgO?_iX|aC0Q@K(GUBqVFU>>%I38?lEh1|J&lK2YG<-w{xl?qXKM``5$ z^`emYiQ>PwMksl%1K+h&N9fSI7=9f+meva0_m3$1K??hcrni?>MU_Ck7u{uJ==}@!vcSr6c(%^(rd#>v|sY6JGgO+o-(r z7OEg4x_eaclmPuoy5M_&ZXl;Uxi5FyM11A?WEK-=}Uw!^fq;BX14n$%RC zGU5-j{FJEa{(pseh*#=hE?jqU&xNw*&)6OiaU=!hMQI_z==W+cyPszLYQ(Uy*q;cxiug-G=n?9Hi%b*Wi8&uX1zm} zoN_BLHzs31C=_#$EWcTVpDzvHpV=gW~V_UlI60o-jES!x>{tcBt9Q-$dCxH7HqgcPCw@N|*Z>B!!mfNVb9N0wd z22m#NUOIpvrsh1JCblP(JxRa=Vnke$~*wqw$2_~zMHD(%HuY@n6+HXdrr%@^`-QpEli`=78(8-arjB_P1C)i*x9?cC^O(idXU|_& z7SN2EpFN57Pvqjq^;=LZW&yA66n3=hUm{K>C9D(2Yn~`lifle++<_Ap6?|~ zA(D!W3p?cP7+n&&3@O#zxaG={pwBK4&lJ<_+=vvNvhRdsUFn+YShfq{_s4^*yYAGY=iFNU#FhHlh8~|u z{|5K^3Py^qp6?rofQLjScluwBD48(-^Hn_R3sDv8j;xj`P=UZ$VuNZ|OV zj2~-P?jfHW>G}nXw`R@bf2|RWPwlUg-?(5UWbz6llK3OD`t?)AMUOd}Cosss4T|Lk zB`BX#Ukf5c+`O@ew89agx8)^pk37y^ypyp{Fke8_>JPh8O~g2XbGD29GN}8`t1kn% zTc`vdGB2r6mNnvv`7xP?X29Sgh{(>xbdt?s->&%wm5TV3-omh1Ta@~K=&gK@6~xp_ z&IcqKgA|pMNqq;;;q~ElN~_|s2`1!D>kYVpKUiWAV9XsH1F!yHAgEUUHwc=Jmws2U zHsqUoLo|tR(841=4zghX4vObNn^u z&lEq}T7Fio+mz{lmQB7gW9`{3eQW*TIV+`}tZ4&O-MhvOh44vE^5;(m>G=4IBIhg; zV57a(K8j6q&76)aMFtL(UQ(i!=@v)lo! z56cg`A-;v_-$!(pSVqB1%@<^?h`0yx>WjIYaRc z6HZ{s6L76sL|cezm*y>`Ygpa3Np8nI4brFVfC8{uilzQ~sIb}Uwa177F)Ss7ESx+| zY22kYB8I0l>O-1572LlWGWqc>zSOU2}!996`gO9g9QdC_*zgqg6^*pt`E@J5ekvNCa&c=mr5r=Qu}Xt zI+UimIf zH*%0#{N{rvC7lDPm#P>${tiO7+N}=Ejz;s+o}R9w&IAk@t3PNc6qHfhCm&9OsZQ4+ z`4(<=4Qahg9Jk5Dd?QCkR3=i5R*B;5U>D4dmVPTnD%vI6&YG1wJxtTMWwwe?Su2FN zg~-6M)-<{kV7J;4y=P?=KIHpWVcM8q7cI${XIJ}b9m`(Nh0h!7`@UfHf`_%oPO)Uf z(q=lx((Q9La?$17O)r(R9BkZ3scxT(wd~iQ<`ODWzu37*l~}QAf0nY$e-ZlG8R2*T zT1Ot&kmapRSISEI5% z?7E`KOgN*Co2wSf*_yFY^Dg~$fcS`fV!)HlrT~kFdNcGoHEN%XFc)Oy%Y2`|i`v?& zbG(2RML4RQZL79mhl+Xvmi{WL5DK1cPhZ&$3LM_a3{t7oV|^%9CGafhmZ)x)gT0p~ zI%V#5n!@+23J`^7UC1{FWt2OHXH)$#^#k}I{0FqQttfhYmh*t__%6Ndtf!@9dT(HY z$lj-d3|aV5kL#r5O%_;BI+NvHs8_3U&HCXAf_Gk~;PuW~(@fPz|sIlFsAs| zuNi?u9-b(P6;s>B)Jo?k>)Oq7KEw58Wbx+3x{biZT4wdOcVw2s^AGf;{%ISfEy9Xf zH7oaH_`oWoWenpdA7JsA?!3ro>~{A0%e0yb8HFwy1P)>m>oXfPaa>HT3&Vefag6rjIio(8R>hWJIg%0y;nc;>+fa3#?}1g_f>pK zTic74yXot#QP+NH$d`Tqc)43vyWaZdI?(l%FLR&O2H4U0ZXr3-7#ZFXKV0>o>yt7~Lk!RhLc9<=&>gsvD2SwaZjDG=5h7Jhv?OYvmDp zlLW=RArRKu`RhiNJM)v+*!|?JMd;L}nY_(m9sRzw{U#Nx`(mq`Paey<6gxJfzmxqn z%pbsJM1>Q;LAv59VPtxJdOZahk*WPC%;^_GU(a_3X81Jm!q5p2UuM3Z8CgWNYg*_Z$PoM1C~cwD#`V;lyrW7K>upBL9}-7Z&;PK< zRi6gz963qW3IAf;uI*MB{!4tm4(qnJt?<5Ed%REao5OvB*SoRd0ec%o5%~~@Be$jS zrm?C5e7x^3U;oAX*theW+Fv3{TrF5`$f*z0j7MD=!HEM3DC*&>M2CoREt!JE&tKa6 zUN_?7e`GX5bLVIJKI_bnHvzn)9)F%v-kU`l!9UNK{JE+gocndvC$4I|Q*kG*EH6$c zJil!v4?u?QQ$Zq%0|b?=3ga=N=`bQ%FW`JfGqgi!S&7M)y6mc*xqjFN1^+yZJt(an zHQ_iFk$a3+S1eyw>1#%(TxjbDW!;@lZsjk4AQ%BP8WopTyu*=NXK zd`1plk6&i|`uo?UILk!5_1D;+ZR$?FB?*wa#`bS4t%9J@ko|y9+TW(^YqM7Jmv8HW z?)En6OYy~qdrZl+Ew;(FMt#`yVUB`6&qSy-n+EK3nE5~4pDktYfT{%cS+!m)@qJa? zeZc(%%nWIOjLzDwSw^hyrmFS-7}db6=j+l>bc=4iyfE+#MjAr(7%BC2tX!xunb=B)tg z?pd=ludQfq3qx;9Uz@ETJk(G9Hu<*_S619eC7iJ;_EPV#GsM?gs35F%I&?2E9=5o98t)yE;D}j+pJfhtSo;RR>7H+DwO*q{e?83>au*8Q{!iIH--B)9hpc(2|6KR?Sp?5L*w%dFWA;B~ z{~F|}ds-pKjvY5Kziwprf5d?Q?;!s@hyUNF{{L@H{yg!b@&K0fgjeAh`(timeZBVD HooD|GN*QnQ literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\344\273\273\345\212\241\347\212\266\346\200\201\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/kernel/figures/\344\273\273\345\212\241\347\212\266\346\200\201\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..cf0684595b4e7b07dfebf6c55c867a97e1e71663 GIT binary patch literal 51242 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 N0#8>zmvv4FO#q=`=f?m5 literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\344\277\241\345\217\267\351\207\217\350\277\220\344\275\234\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/kernel/figures/\344\277\241\345\217\267\351\207\217\350\277\220\344\275\234\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..fc4591567b7f1643e1c065df5860af3e7aff2a3b GIT binary patch literal 45092 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 z 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

mm*8U!Ft&0kuyrO_;T0h8A@@w95})!l9TG2w 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 literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\345\206\205\346\240\270\345\220\257\345\212\250\346\265\201\347\250\213.png" "b/zh-cn/device-dev/kernel/figures/\345\206\205\346\240\270\345\220\257\345\212\250\346\265\201\347\250\213.png" new file mode 100644 index 0000000000000000000000000000000000000000..cb86acd9c05059302f21ac10a3d8604b6e742652 GIT binary patch literal 41391 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 O=boC*oswI2PyatkKj;bo literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\346\240\270\345\277\203\347\256\227\346\263\225.png" "b/zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\346\240\270\345\277\203\347\256\227\346\263\225.png" new file mode 100644 index 0000000000000000000000000000000000000000..c32b7cf60be9ed557f5c3139aed303b105a4e2d9 GIT binary patch literal 61957 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 literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\347\256\241\347\220\206\347\273\223\346\236\204\345\233\276.png" "b/zh-cn/device-dev/kernel/figures/\345\212\250\346\200\201\345\206\205\345\255\230\347\256\241\347\220\206\347\273\223\346\236\204\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..96a1c33d124ad5cd67afa331154840ad7b59c9ab GIT binary patch literal 32118 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 B6VCtu literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\345\240\206\346\240\210\345\210\206\346\236\220\345\216\237\347\220\206\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/kernel/figures/\345\240\206\346\240\210\345\210\206\346\236\220\345\216\237\347\220\206\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..ce4103b3f82838d3593e7d04523b402b4283effa GIT binary patch literal 28092 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 literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/figures/\351\235\231\346\200\201\345\206\205\345\255\230\347\244\272\346\204\217\345\233\276.png" "b/zh-cn/device-dev/kernel/figures/\351\235\231\346\200\201\345\206\205\345\255\230\347\244\272\346\204\217\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..b21c09ee49ceda81474ce085aae1f67feea17f3a GIT binary patch literal 16217 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 FKL8U%JnaAg literal 0 HcmV?d00001 diff --git "a/zh-cn/device-dev/kernel/\344\270\255\346\226\255\347\256\241\347\220\206.md" "b/zh-cn/device-dev/kernel/\344\270\255\346\226\255\347\256\241\347\220\206.md" new file mode 100644 index 0000000000..29edaf0e1e --- /dev/null +++ "b/zh-cn/device-dev/kernel/\344\270\255\346\226\255\347\256\241\347\220\206.md" @@ -0,0 +1,7 @@ +# 中断管理 + +- **[基本概念](基本概念.md)** + +- **[开发指导](开发指导.md)** + + diff --git "a/zh-cn/device-dev/kernel/\344\272\213\344\273\266.md" "b/zh-cn/device-dev/kernel/\344\272\213\344\273\266.md" new file mode 100644 index 0000000000..e998fce8eb --- /dev/null +++ "b/zh-cn/device-dev/kernel/\344\272\213\344\273\266.md" @@ -0,0 +1,7 @@ +# 事件 + +- **[基本概念](基本概念-5.md)** + +- **[开发指导](开发指导-6.md)** + + diff --git "a/zh-cn/device-dev/kernel/\344\272\222\346\226\245\351\224\201.md" "b/zh-cn/device-dev/kernel/\344\272\222\346\226\245\351\224\201.md" new file mode 100644 index 0000000000..ce0ea2949c --- /dev/null +++ "b/zh-cn/device-dev/kernel/\344\272\222\346\226\245\351\224\201.md" @@ -0,0 +1,7 @@ +# 互斥锁 + +- **[基本概念](基本概念-7.md)** + +- **[开发指导](开发指导-8.md)** + + diff --git "a/zh-cn/device-dev/kernel/\344\273\273\345\212\241\347\256\241\347\220\206.md" "b/zh-cn/device-dev/kernel/\344\273\273\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000000..22165d0c36 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\344\273\273\345\212\241\347\256\241\347\220\206.md" @@ -0,0 +1,7 @@ +# 任务管理 + +- **[基本概念](基本概念-2.md)** + +- **[开发指导](开发指导-3.md)** + + diff --git "a/zh-cn/device-dev/kernel/\344\277\241\345\217\267\351\207\217.md" "b/zh-cn/device-dev/kernel/\344\277\241\345\217\267\351\207\217.md" new file mode 100644 index 0000000000..6eb88eb04b --- /dev/null +++ "b/zh-cn/device-dev/kernel/\344\277\241\345\217\267\351\207\217.md" @@ -0,0 +1,7 @@ +# 信号量 + +- **[基本概念](基本概念-11.md)** + +- **[开发指导](开发指导-12.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230.md" "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230.md" index 831eadf1d1..871a1c5ac8 100755 --- "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230.md" +++ "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230.md" @@ -2,7 +2,7 @@ - [基本概念](#section1392116583424) - [使用场景](#section159581619194319) -- [功能](#section114001032104317) +- [接口说明](#section114001032104317) ## 基本概念 @@ -14,7 +14,7 @@ 针对用户态开发,OpenHarmony内核提供了一套内存系统调用接口,支持内存的申请释放、重映射、内存属性的设置等,还有C库的标准内存操作函数。 -## 功能 +## 接口说明 **表 1** 标准C库相关接口 diff --git "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230\344\277\241\346\201\257\347\273\237\350\256\241.md" "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\344\277\241\346\201\257\347\273\237\350\256\241.md" new file mode 100644 index 0000000000..f0dce32252 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\344\277\241\346\201\257\347\273\237\350\256\241.md" @@ -0,0 +1,107 @@ +# 内存信息统计 + +- [基础概念](#section52691565235) +- [功能配置](#section470611682411) +- [开发指导](#section9368374243) + - [开发流程](#section679912407257) + - [编程实例](#section1025453412611) + - [示例代码](#section165277971315) + - [结果验证](#section3460102414271) + + +## 基础概念 + +内存信息包括内存池大小、内存使用量、剩余内存大小、最大空闲内存、内存水线、内存节点数统计、碎片率等。 + +- 内存水线:即内存池的最大使用量,每次申请和释放时,都会更新水线值,实际业务可根据该值,优化内存池大小; + +- 碎片率:衡量内存池的碎片化程度,碎片率高表现为内存池剩余内存很多,但是最大空闲内存块很小,可以用公式(fragment=100-最大空闲内存块大小/剩余内存大小)来度量; + +- 其他参数:通过调用接口(详见[内存管理](内存管理.md)章节接口说明),扫描内存池的节点信息,统计出相关信息。 + +## 功能配置 + +LOSCFG\_MEM\_WATERLINE:开关宏,默认打开;若关闭这个功能,在target\_config.h中将这个宏定义为0。如需获取内存水线,需要打开该配置。 + +## 开发指导 + +### 开发流程 + +关键结构体介绍: + +``` +typedef struct { + UINT32 totalUsedSize; // 内存池的内存使用量 + UINT32 totalFreeSize; // 内存池的剩余内存大小 + UINT32 maxFreeNodeSize; // 内存池的最大空闲内存块大小 + UINT32 usedNodeNum; // 内存池的非空闲内存块个数 + UINT32 freeNodeNum; // 内存池的空闲内存块个数 +#if (LOSCFG_MEM_WATERLINE == 1) // 默认打开,如需关闭,在target_config.h中将该宏设置为0 + UINT32 usageWaterLine; // 内存池的水线值 +#endif +} LOS_MEM_POOL_STATUS; +``` + +- 内存水线获取:调用LOS\_MemInfoGet接口,第1个参数是内存池首地址,第2个参数是LOS\_MEM\_POOL\_STATUS类型的句柄,其中字段usageWaterLine即水线值。 + +- 内存碎片率计算:同样调用LOS\_MemInfoGet接口,可以获取内存池的剩余内存大小和最大空闲内存块大小,然后根据公式(fragment=100-最大空闲内存块大小/剩余内存大小)得出此时的动态内存池碎片率。 + +### 编程实例 + +本实例实现如下功能: + +1.创建一个监控线程,用于获取内存池的信息; + +2.调用LOS\_MemInfoGet接口,获取内存池的基础信息; + +3.利用公式算出使用率及碎片率。 + +### 示例代码 + +代码实现如下: + +``` +#include +#include +#include "los_task.h" +#include "los_memory.h" +#include "los_config.h" + +void MemInfoTaskFunc(void) +{ + LOS_MEM_POOL_STATUS poolStatus = {0}; + LOS_MemInfoGet(pool, &poolStatus); + /* 算出内存池当前的碎片率百分比 */ + unsigned char fragment = 100 - poolStatus.maxFreeNodeSize * 100 / poolStatus.totalFreeSize; + /* 算出内存池当前的使用率百分比 */ + unsigned char usage = LOS_MemTotalUsedGet(pool) * 100 / LOS_MemPoolSizeGet(pool); + printf("usage = %d, fragment = %d, maxFreeSize = %d, totalFreeSize = %d, waterLine = %d\n", usage, fragment, poolStatus.maxFreeNodeSize, + poolStatus.totalFreeSize, poolStatus.usageWaterLine); +} + +int MemTest(void) +{ + unsigned int ret; + unsigned int taskID; + TSK_INIT_PARAM_S taskStatus = {0}; + taskStatus.pfnTaskEntry = (TSK_ENTRY_FUNC)MemInfoTaskFunc; + taskStatus.uwStackSize = 0x1000; + taskStatus.pcName = "memInfo"; + taskStatus.usTaskPrio = 10; + ret = LOS_TaskCreate(&taskID, &taskStatus); + if (ret != LOS_OK) { + printf("task create failed\n"); + return -1; + } + return 0; +} +``` + +### 结果验证 + +编译运行输出的结果如下: + +``` +usage = 22, fragment = 3, maxFreeSize = 49056, totalFreeSize = 50132, waterLine = 1414 +``` + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230\346\263\204\346\274\217\346\243\200\346\265\213.md" "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\346\263\204\346\274\217\346\243\200\346\265\213.md" new file mode 100644 index 0000000000..5c57178e50 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\346\263\204\346\274\217\346\243\200\346\265\213.md" @@ -0,0 +1,128 @@ +# 内存泄漏检测 + +- [基础概念](#section1026719436293) +- [功能配置](#section13991354162914) +- [开发指导](#section95828159308) + - [开发流程](#section369844416304) + - [编程实例](#section460801313313) + - [示例代码](#section96539275311) + - [结果验证](#section20527343183119) + + +## 基础概念 + +内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到内存申请的地方,方便进一步确认。 + +## 功能配置 + +1. LOSCFG\_MEM\_LEAKCHECK:开关宏,默认关闭;若打开这个功能,在target\_config.h中将这个宏定义为1。 +2. LOSCFG\_MEM\_RECORD\_LR\_CNT:记录的LR层数,默认3层;每层LR消耗sizeof\(void \*\)字节数的内存。 +3. LOSCFG\_MEM\_OMIT\_LR\_CNT:忽略的LR层数,默认4层,即从调用LOS\_MemAlloc的函数开始记录,可根据实际情况调整。为啥需要这个配置?有3点原因如下: + - LOS\_MemAlloc接口内部也有函数调用; + - 外部可能对LOS\_MemAlloc接口有封装; + - LOSCFG\_MEM\_RECORD\_LR\_CNT 配置的LR层数有限; + + +正确配置这个宏,将无效的LR层数忽略,就可以记录有效的LR层数,节省内存消耗。 + +## 开发指导 + +### 开发流程 + +该调测功能可以分析关键的代码逻辑中是否存在内存泄漏。开启这个功能,每次申请内存时,会记录LR信息。在需要检测的代码段前后,调用LOS\_MemUsedNodeShow接口,每次都会打印指定内存池已使用的全部节点信息,对比前后两次的节点信息,新增的节点信息就是疑似泄漏的内存节点。通过LR,可以找到具体申请的代码位置,进一步确认是否泄漏。 + +调用LOS\_MemUsedNodeShow接口输出的节点信息格式如下:每1行为一个节点信息;第1列为节点地址,可以根据这个地址,使用GDB等手段查看节点完整信息;第2列为节点的大小,等于节点头大小+数据域大小;第3\~5列为函数调用关系LR地址,可以根据这个值,结合汇编文件,查看该节点具体申请的位置。 + +``` +node size LR[0] LR[1] LR[2] +0x10017320: 0x528 0x9b004eba 0x9b004f60 0x9b005002 +0x10017848: 0xe0 0x9b02c24e 0x9b02c246 0x9b008ef0 +0x10017928: 0x50 0x9b008ed0 0x9b068902 0x9b0687c4 +0x10017978: 0x24 0x9b008ed0 0x9b068924 0x9b0687c4 +0x1001799c: 0x30 0x9b02c24e 0x9b02c246 0x9b008ef0 +0x100179cc: 0x5c 0x9b02c24e 0x9b02c246 0x9b008ef0 +``` + +>![](public_sys-resources/icon-caution.gif) **注意:** +>开启内存检测会影响内存申请的性能,且每个内存节点都会记录LR地址,内存开销也加大。 + +### 编程实例 + +本实例实现如下功能:构建内存泄漏代码段。 + +1. 调用LOS\_MemUsedNodeShow接口,输出全部节点信息打印; +2. 申请内存,但没有释放,模拟内存泄漏; +3. 再次调用LOS\_MemUsedNodeShow接口,输出全部节点信息打印; +4. 将两次log进行对比,得出泄漏的节点信息; +5. 通过LR地址,找出泄漏的代码位置; + +### 示例代码 + +代码实现如下: + +``` +#include +#include +#include "los_memory.h" +#include "los_config.h" + +void MemLeakTest(void) +{ + LOS_MemUsedNodeShow(LOSCFG_SYS_HEAP_ADDR); + void *ptr1 = LOS_MemAlloc(LOSCFG_SYS_HEAP_ADDR, 8); + void *ptr2 = LOS_MemAlloc(LOSCFG_SYS_HEAP_ADDR, 8); + LOS_MemUsedNodeShow(LOSCFG_SYS_HEAP_ADDR); +} +``` + +### 结果验证 + +编译运行输出log如下: + +``` +node size LR[0] LR[1] LR[2] +0x20001b04: 0x24 0x08001a10 0x080035ce 0x080028fc +0x20002058: 0x40 0x08002fe8 0x08003626 0x080028fc +0x200022ac: 0x40 0x08000e0c 0x08000e56 0x0800359e +0x20002594: 0x120 0x08000e0c 0x08000e56 0x08000c8a +0x20002aac: 0x56 0x08000e0c 0x08000e56 0x08004220 + +node size LR[0] LR[1] LR[2] +0x20001b04: 0x24 0x08001a10 0x080035ce 0x080028fc +0x20002058: 0x40 0x08002fe8 0x08003626 0x080028fc +0x200022ac: 0x40 0x08000e0c 0x08000e56 0x0800359e +0x20002594: 0x120 0x08000e0c 0x08000e56 0x08000c8a +0x20002aac: 0x56 0x08000e0c 0x08000e56 0x08004220 +0x20003ac4: 0x1d 0x08001458 0x080014e0 0x080041e6 +0x20003ae0: 0x1d 0x080041ee 0x08000cc2 0x00000000 +``` + +对比两次log,差异如下,这些内存节点就是疑似泄漏的内存块: + +``` +0x20003ac4: 0x1d 0x08001458 0x080014e0 0x080041e6 +0x20003ae0: 0x1d 0x080041ee 0x08000cc2 0x00000000 +``` + +部分汇编文件如下: + +``` + MemLeakTest: + 0x80041d4: 0xb510 PUSH {R4, LR} + 0x80041d6: 0x4ca8 LDR.N R4, [PC, #0x2a0] ; g_memStart + 0x80041d8: 0x0020 MOVS R0, R4 + 0x80041da: 0xf7fd 0xf93e BL LOS_MemUsedNodeShow ; 0x800145a + 0x80041de: 0x2108 MOVS R1, #8 + 0x80041e0: 0x0020 MOVS R0, R4 + 0x80041e2: 0xf7fd 0xfbd9 BL LOS_MemAlloc ; 0x8001998 + 0x80041e6: 0x2108 MOVS R1, #8 + 0x80041e8: 0x0020 MOVS R0, R4 + 0x80041ea: 0xf7fd 0xfbd5 BL LOS_MemAlloc ; 0x8001998 + 0x80041ee: 0x0020 MOVS R0, R4 + 0x80041f0: 0xf7fd 0xf933 BL LOS_MemUsedNodeShow ; 0x800145a + 0x80041f4: 0xbd10 POP {R4, PC} + 0x80041f6: 0x0000 MOVS R0, R0 +``` + +其中,通过查找0x080041ee,就可以发现该内存节点是在MemLeakTest接口里申请的且是没有释放的。 + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230\347\256\241\347\220\206.md" "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\347\256\241\347\220\206.md" new file mode 100644 index 0000000000..fb44d9bd13 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -0,0 +1,9 @@ +# 内存管理 + +- **[基本概念](基本概念-4.md)** + +- **[静态内存](静态内存.md)** + +- **[动态内存](动态内存.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\345\255\230\350\260\203\346\265\213.md" "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\350\260\203\346\265\213.md" new file mode 100644 index 0000000000..82555bc862 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\345\255\230\350\260\203\346\265\213.md" @@ -0,0 +1,11 @@ +# 内存调测 + +内存调测方法旨在辅助定位动态内存相关问题,提供了基础的动态内存池信息统计手段,向用户呈现内存池水线、碎片率等信息;提供了内存泄漏检测手段,方便用户准确定位存在内存泄漏的代码行,也可以辅助分析系统各个模块内存的使用情况;提供了踩内存检测手段,可以辅助定位越界踩内存的场景。 + +- **[内存信息统计](内存信息统计.md)** + +- **[内存泄漏检测](内存泄漏检测.md)** + +- **[踩内存检测](踩内存检测.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\346\240\270\347\274\226\347\240\201\350\247\204\350\214\203.md" "b/zh-cn/device-dev/kernel/\345\206\205\346\240\270\347\274\226\347\240\201\350\247\204\350\214\203.md" new file mode 100644 index 0000000000..f23eb77b1e --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\346\240\270\347\274\226\347\240\201\350\247\204\350\214\203.md" @@ -0,0 +1,332 @@ +# 内核编码规范 + +- [总体原则](#section9512812145915) +- [目录结构](#section1355317267017) +- [命名](#section1375364815017) +- [注释](#section1692516179119) +- [格式](#section10888536113) +- [宏](#section12276501124) +- [头文件](#section158507231319) +- [数据类型](#section91351731446) +- [变量](#section575493915417) +- [断言](#section13864440410) +- [函数](#section671919481745) + +此规范基于业界通用的编程规范整理而成,请内核的开发人员遵守这样的编程风格。 + +## 总体原则 + +总体原则: + +- 清晰:代码应当易于理解、易于维护、易于重构,避免晦涩语法 +- 简洁:命名简短,函数紧凑 +- 高效:通过使用算法、编译器优化选项或硬件资源提高程序效率 +- 美观:代码风格合理、一致 + +在大部分情况下,开发人员应当遵从以下规范,但也有一些例外场景。如修改第三方开源代码或大量使用开源代码接口下,应当与开源代码保持一致。请依据总体原则,灵活处理。 + +## 目录结构 + +建议按照功能模块划分子目录,子目录再定义头文件和源文件目录。 + +目录名和文件名如果没有特殊的需要,采用全小写的形式,可以使用下划线(“\_”)分割。 + +## 命名 + +推荐使用驼峰风格,具体规则如下: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

类型

+

命名风格

+

形式

+

函数、结构体类型、枚举类型、联合体类型、typedef的类型

+

大驼峰,或带有模块前缀的大驼峰

+

AaaBbb

+

XXX_AaaBbb

+

局部变量,函数参数,宏参数,结构体中字段,联合体中成员

+

小驼峰

+

aaaBBB

+

全局变量

+

带“g_”前缀的小驼峰

+

g_aaaBBB

+

宏(不含函数式宏),枚举值,goto标签

+

全大写,下划线分割

+

AAA_BBB

+

函数式宏

+

全大写下划线分割,或大驼峰,或带有模块前缀的大驼峰

+

AAA_BBB

+

AaaBbb

+

XXX_AaaBbb

+

头文件防止重复的符号

+

以下划线“_”开头以H结尾,中间为文件名的全大写并以下划线分割

+

_AAA_H

+
+ +内核对外API建议采用LOS\_ModuleFunc的形式,如果有宾语则建议采用前置的方式,比如: + +``` +LOS_TaskCreate +LOS_MuxLock +``` + +kernel目录下内部模块间的接口使用OsModuleFunc的形式,比如: + +``` +OsTaskScan +OsMuxInit +``` + +## 注释 + +一般的,尽量通过清晰的软件架构,良好的符号命名来提高代码可读性;然后在需要的时候,才辅以注释说明。 + +注释是为了帮助阅读者快速读懂代码,所以要从读者的角度出发,按需注释。 + +注释内容要简洁、明了、无歧义,信息全面且不冗余。 + +文件头部要进行注释,建议注释列出:版权说明、文件功能说明,作者、创建日期、注意事项等。 + +注释风格要统一,建议优先选择/\* \*/的方式,注释符与注释内容之间要有1空格,单行、多行注释风格如下: + +``` +/* 单行注释 */ +// 单行注释 +/* + * 多行注释 + * 第二行 + */ +// 多行注释 +// 另一行 +``` + +针对代码的注释,应该置于对应代码的上方或右方。 + +代码上方的注释,与代码行间无空行,保持与代码一样的缩进。 + +代码右边的注释,与代码之间,至少留1空格。 + +建议将多条连续的右侧注释对齐,比如: + +``` +#define CONST_A 100 /* Const A */ +#define CONST_B 2000 /* Const B */ +``` + +## 格式 + +程序采用缩进风格编写,使用空格而不是制表符(’\\t’)进行缩进,每级缩进为4个空格。 + +换行时,函数左大括号另起一行放行首,并独占一行;其他左大括号跟随语句放行末。右大括号独占一行,除非后面跟着同一语句的剩余部分,如 do 语句中的 while,或者 if 语句的else/else if,或者逗号、分号。 + +一行只写一条语句。 + +比如: + +``` +struct MyType { // 跟随语句放行末,前置1空格 + ... +}; // 右大括号后面紧跟分号 +int Foo(int a) { // 函数左大括号独占一行,放行首 + if (a > 0) { + Foo(); // 一行只有一条语句 + Bar(); + } else { // 右大括号、"else"、以及后续的左大括号均在同一行 + ... + } // 右大括号独占一行 + ... +} +``` + +每行字符数不要超过 120 个,代码过长时应当换行,换行时将操作符留在行末,新行缩进一层或进行同类对齐,并将表示未结束的操作符或连接符号留在行末。 + +``` +// 假设下面第一行已经不满足行宽要求 +if (currentValue > MIN && // Good:换行后,布尔操作符放在行末 + currentValue < MAX) { // Good: 与(&&)操作符的两个操作数同类对齐 + DoSomething(); + ... +} +flashPara.flashEndAddr = flashPara.flashBaseAddr + // Good: 加号留在行末 + flashPara.flashSize; // Good: 加法两个操作数对齐 + +// Good:函数参数放在一行 +ReturnType result = FunctionName(paramName1, paramName2); +ReturnType result = FunctionName(paramName1, + paramName2, + paramName3); // Good:保持与上方参数对齐 +ReturnType result = FunctionName(paramName1, paramName2, + paramName3, paramName4, paramName5); // Good:参数换行,4 空格缩进 +ReturnType result = VeryVeryVeryLongFunctionName( // 行宽不满足第1个参数,直接换行 + paramName1, paramName2, paramName3); // 换行后,4 空格缩进 + +// Good:每行的参数代表一组相关性较强的数据结构,放在一行便于理解 +int result = DealWithStructLikeParams(left.x, left.y, // 表示一组相关参数 + right.x, right.y); // 表示另外一组相关参数 +``` + +包括 if/for/while/do-while 语句应使用大括号,即复合语句。 + +``` +while (condition) {} // Good:即使循环体是空,也应使用大括号 +while (condition) { + continue; // Good:continue 表示空逻辑,使用大括号 +} +``` + +case/default 语句相对 switch 缩进一层,风格如下: + +``` +switch (var) { + case 0: // Good: 缩进 + DoSomething1(); // Good: 缩进 + break; + case 1: { // Good: 带大括号格式 + DoSomething2(); + break; + } + default: + break; +} +``` + +指针类型"\*"跟随变量或者函数名,例如: + +``` +int *p1; // OK +int* p2; // Bad:跟随类型 +int*p3; // Bad:两边都没空格 +int * p4; // Bad:两边都有空格 +struct Foo *CreateFoo(void); // OK: "*"跟随函数名 +特例: +char * const VERSION = "V100"; // OK: 当有 const 修饰符时,"*"两边都有空格 +int Foo(const char * restrict p); // OK: 当有 restrict 修饰符时,"*"两边都有空格 +sz = sizeof(int*); // OK:右侧没有变量,"*"跟随类型 +``` + +## 宏 + +定义函数式宏前,应考虑能否用函数替代。对于可替代场景,建议用函数替代宏。对于有性能需求的场景,可以使用内联函数。 + +定义宏时,要使用完备的括号,例如: + +``` +#define SUM(a, b) ((a) + (b)) // 符合本规范要求. +#define SOME_CONST 100 // Good: 单独的数字无需括号 +#define ANOTHER_CONST (-1) // Good: 负数需要使用括号 +#define THE_CONST SOME_CONST // Good: 单独的标识符无需括号 +``` + +以下情况需要注意: + +- 宏参数参与 '\#', '\#\#' 操作时,不要加括号; +- 宏参数参与字符串拼接时,不要加括号; +- 宏参数作为独立部分,在赋值(包括+=, -=等)操作的某一边时,可以不加括号; +- 宏参数作为独立部分,在逗号表达式,函数或宏调用列表中,可以不加括号。 + +``` +// x 不要加括号 +#define MAKE_STR(x) #x + +// obj 不要加括号 +#define HELLO_STR(obj) "Hello, " obj + +// a, b 需要括号;而 value 可以不加括号 +#define UPDATE_VALUE(value, a, b) (value = (a) + (b)) + +// a 需要括号;而 b 可以不加括号 +#define FOO(a, b) Bar((a) + 1, b) +``` + +包含多条语句的函数式宏的实现语句必须放在 do-while\(0\)中。 + +禁止把带副作用的表达式作为参数传递给函数式宏,比如自加操作\(“a++”\)。 + +函数式宏定义中慎用 return、goto、continue、break 等改变程序流程的语句。 + +禁止宏调用参数中出现预编译指令,如\#include,\#define和\#ifdef,这样做会导致未定义的行为。 + +宏定义不以分号结尾。 + +## 头文件 + +头文件应当职责单一。 + +通常情况下,每个.c文件都应有一个相应的.h文件(并不一定同名),用于放置对外提供的函数声明、宏定义、类型定义等。如果不需要提供对外接口,可以没有对应的.h文件。 + +避免头文件循环依赖,如a.h 包含 b.h,b.h 包含 c.h,c.h 包含 a.h。 + +头文件应当自包含,即包含某个头文件,不需要引入其他头文件就可以编译。 + +头文件用\#define、\#ifndef、\#endif保护,防止重复包含;不要使用 \#pragma once。 + +禁止通过声明的方式引用外部函数接口、变量,只能通过包含头文件的方式使用其他模块或文件提供的接口。 + +建议按稳定度包含头文件,依次顺序为: 源码对应的头文件,C标准库,操作系统库,平台库,项目公共库,自己其他的依赖。 + +## 数据类型 + +基础数据类型建议使用los\_compiler.h中定义的类型,比如无符号32位整数位定义为UINT32。 + +## 变量 + +避免大量栈分配,如较大的局部数组。 + +谨慎使用全局变量,尽量不用或少用全局变量。 + +变量应当初始化后再使用。 + +禁止将局部变量的地址返回到其作用域以外。 + +指向资源句柄或描述符的变量,在资源释放后立即赋予新值(如果变量的作用域马上结束可以不赋予新值)。指向资源句柄或描述符的变量包括指针、文件描述符、socket描述符以及其它指向资源的变量。 + +## 断言 + +断言必须使用宏定义,且只能在调试版本中生效。 + +断言应当看作设计约束,禁止用断言检测程序在运行期间可能导致的错误,可能发生的错误要用错误处理代码来处理。 + +禁止在断言内改变运行环境。 + +一个断言只用于检查一个错误。 + +## 函数 + +由一个进程向另一个进程发送的数据、由应用向内核发送的数据等应当进行合法性校验,校验包括但不限于: + +- 校验数据长度 +- 校验数据范围 +- 校验数据类型和格式 +- 校验输入只包含可接受的字符(“白名单”形式) + +函数应避免使用全局变量、静态局部变量和直接的I/O操作,不可避免时,应当对读写操作进行封装。 + diff --git "a/zh-cn/device-dev/kernel/\345\206\205\346\240\270\350\260\203\346\265\213.md" "b/zh-cn/device-dev/kernel/\345\206\205\346\240\270\350\260\203\346\265\213.md" new file mode 100644 index 0000000000..6b7080f2bc --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\206\205\346\240\270\350\260\203\346\265\213.md" @@ -0,0 +1,9 @@ +# 内核调测 + +- **[内存调测](内存调测.md)** + +- **[异常调测](异常调测.md)** + +- **[Trace调测](Trace调测.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\212\250\346\200\201\345\206\205\345\255\230.md" "b/zh-cn/device-dev/kernel/\345\212\250\346\200\201\345\206\205\345\255\230.md" new file mode 100644 index 0000000000..31361e2a8b --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\212\250\346\200\201\345\206\205\345\255\230.md" @@ -0,0 +1,227 @@ +# 动态内存 + +- [运行机制](#section328282013571) +- [开发指导](#section7921151015814) + - [使用场景](#section326917198583) + - [接口说明](#section1032331584) + - [开发流程](#section07271773592) + - [编程实例](#section84931234145913) + - [结果验证](#section165233233917) + + +## 运行机制 + +动态内存管理,即在内存资源充足的情况下,根据用户需求,从系统配置的一块比较大的连续内存(内存池,也是堆内存)中分配任意大小的内存块。当用户不需要该内存块时,又可以释放回系统供下一次使用。与静态内存相比,动态内存管理的优点是按需分配,缺点是内存池中容易出现碎片。 + +OpenHarmony LiteOS-M动态内存在TLSF算法的基础上,对区间的划分进行了优化,获得更优的性能,降低了碎片率。动态内存核心算法框图如下: + +**图 1** 动态内存核心算法 +![](figures/动态内存核心算法.png "动态内存核心算法") + +根据空闲内存块的大小,使用多个空闲链表来管理。根据内存空闲块大小分为两个部分:\[4, 127\]和\[27, 231\],如上图size class所示: + +1. 对\[4,127\]区间的内存进行等分,如上图绿色部分所示,分为31个小区间,每个小区间对应内存块大小为4字节的倍数。每个小区间对应一个空闲内存链表和用于标记对应空闲内存链表是否为空的一个比特位,值为1时,空闲链表非空。\[4,127\]区间的31个小区间内存对应31个比特位进行标记链表是否为空。 +2. 大于127字节的空闲内存块,按照2的次幂区间大小进行空闲链表管理。总共分为24个小区间,每个小区间又等分为8个二级小区间,见上图蓝色的Size Class和Size SubClass部分。每个二级小区间对应一个空闲链表和用于标记对应空闲内存链表是否为空的一个比特位。总共24\*8=192个二级小区间,对应192个空闲链表和192个比特位进行标记链表是否为空。 + +例如,当有40字节的空闲内存需要插入空闲链表时,对应小区间\[40,43\],第10个空闲链表,位图标记的第10比特位。把40字节的空闲内存挂载第10个空闲链表上,并判断是否需要更新位图标记。当需要申请40字节的内存时,根据位图标记获取存在满足申请大小的内存块的空闲链表,从空闲链表上获取空闲内存节点。如果分配的节点大于需要申请的内存大小,进行分割节点操作,剩余的节点重新挂载到相应的空闲链表上。当有580字节的空闲内存需要插入空闲链表时,对应二级小区间\[2^9,2^9+2^6\],第31+2\*8=47个空闲链表,并使用位图的第47个比特位来标记链表是否为空。把580字节的空闲内存挂载第47个空闲链表上,并判断是否需要更新位图标记。当需要申请580字节的内存时,根据位图标记获取存在满足申请大小的内存块的空闲链表,从空闲链表上获取空闲内存节点。如果分配的节点大于需要申请的内存大小,进行分割节点操作,剩余的节点重新挂载到相应的空闲链表上。如果对应的空闲链表为空,则向更大的内存区间去查询是否有满足条件的空闲链表,实际计算时,会一次性查找到满足申请大小的空闲链表。 + +内存管理结构如下图所示: + +**图 2** 动态内存管理结构图 +![](figures/动态内存管理结构图.png "动态内存管理结构图") + +- 内存池池头部分 + + 内存池池头部分包含内存池信息、位图标记数组和空闲链表数组。内存池信息包含内存池起始地址及堆区域总大小,内存池属性。位图标记数组有7个32位无符号整数组成,每个比特位标记对应的空闲链表是否挂载空闲内存块节点。空闲内存链表包含223个空闲内存头节点信息,每个空闲内存头节点信息维护内存节点头和空闲链表中的前驱、后继空闲内存节点。 + +- 内存池节点部分 + + 包含3种类型节点:未使用空闲内存节点,已使用内存节点和尾节点。每个内存节点维护一个前序指针,指向内存池中上一个内存节点,还维护内存节点的大小和使用标记。空闲内存节点和已使用内存节点后面的内存区域是数据域,尾节点没有数据域。 + + +## 开发指导 + +### 使用场景 + +动态内存管理的主要工作是动态分配并管理用户申请到的内存区间。动态内存管理主要用于用户需要使用大小不等的内存块的场景,当用户需要使用内存时,可以通过操作系统的动态内存申请函数索取指定大小的内存块,一旦使用完毕,通过动态内存释放函数归还所占用内存,使之可以重复使用。 + +### 接口说明 + +OpenHarmony LiteOS-M的动态内存管理主要为用户提供以下功能,接口详细信息可以查看API参考。 + +**表 1** 静态内存模块接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

初始化和删除内存池

+

LOS_MemInit

+

初始化一块指定的动态内存池,大小为size。

+

LOS_MemDeInit

+

删除指定内存池,仅打开LOSCFG_MEM_MUL_POOL时有效。

+

申请、释放动态内存

+

LOS_MemAlloc

+

从指定动态内存池中申请size长度的内存。

+

LOS_MemFree

+

释放从指定动态内存中申请的内存。

+

LOS_MemRealloc

+

按size大小重新分配内存块,并将原内存块内容拷贝到新内存块。如果新内存块申请成功,则释放原内存块。

+

LOS_MemAllocAlign

+

从指定动态内存池中申请长度为size且地址按boundary字节对齐的内存。

+

获取内存池信息

+

LOS_MemPoolSizeGet

+

获取指定动态内存池的总大小。

+

LOS_MemTotalUsedGet

+

获取指定动态内存池的总使用量大小。

+

LOS_MemInfoGet

+

获取指定内存池的内存结构信息,包括空闲内存大小、已使用内存大小、空闲内存块数量、已使用的内存块数量、最大的空闲内存块大小。

+

LOS_MemPoolList

+

打印系统中已初始化的所有内存池,包括内存池的起始地址、内存池大小、空闲内存总大小、已使用内存总大小、最大的空闲内存块大小、空闲内存块数量、已使用的内存块数量。仅打开LOSCFG_MEM_MUL_POOL时有效。

+

获取内存块信息

+

LOS_MemFreeNodeShow

+

打印指定内存池的空闲内存块的大小及数量。

+

LOS_MemUsedNodeShow

+

打印指定内存池的已使用内存块的大小及数量。

+

检查指定内存池的完整性

+

LOS_MemIntegrityCheck

+

对指定内存池做完整性检查,仅打开LOSCFG_BASE_MEM_NODE_INTEGRITY_CHECK时有效。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>- 由于动态内存管理需要管理控制块数据结构来管理内存,这些数据结构会额外消耗内存,故实际用户可使用内存总量小于配置项OS\_SYS\_MEM\_SIZE的大小。 +>- 对齐分配内存接口LOS\_MemAllocAlign/LOS\_MemMallocAlign因为要进行地址对齐,可能会额外消耗部分内存,故存在一些遗失内存,当系统释放该对齐内存时,同时回收由于对齐导致的遗失内存。 + +### 开发流程 + +本节介绍使用动态内存的典型场景开发流程。 + +1. 初始化LOS\_MemInit。 + + 初始一个内存池后生成一个内存池控制头、尾节点EndNode,剩余的内存被标记为FreeNode内存节点。注:EndNode作为内存池末尾的节点,size为0。 + + +1. 申请任意大小的动态内存LOS\_MemAlloc。 + + 判断动态内存池中是否存在大于申请量大小的空闲内存块空间,若存在,则划出一块内存块,以指针形式返回,若不存在,返回NULL。如果空闲内存块大于申请量,需要对内存块进行分割,剩余的部分作为空闲内存块挂载到空闲内存链表上。 + + +1. 释放动态内存LOS\_MemFree。 + + 回收内存块,供下一次使用。调用LOS\_MemFree释放内存块,则会回收内存块,并且将其标记为FreeNode。在回收内存块时,相邻的FreeNode会自动合并。 + + +### 编程实例 + +本实例执行以下步骤: + +1. 初始化一个动态内存池。 +2. 从动态内存池中申请一个内存块。 +3. 在内存块中存放一个数据。 +4. 打印出内存块中的数据。 +5. 释放该内存块。 + +示例代码如下: + +``` +#include "los_memory.h" + +VOID Example_DynMem(VOID) +{ + UINT32 *mem = NULL; + UINT32 ret; + + /*初始化内存池*/ + ret = LOS_MemInit(g_testPool, TEST_POOL_SIZE); + if (LOS_OK == ret) { + printf("Mem init success!\n"); + } else { + printf("Mem init failed!\n"); + return; + } + + /*分配内存*/ + mem = (UINT32 *)LOS_MemAlloc(g_testPool, 4); + if (NULL == mem) { + printf("Mem alloc failed!\n"); + return; + } + printf("Mem alloc success!\n"); + + /*赋值*/ + *mem = 828; + printf("*mem = %d\n", *mem); + + /*释放内存*/ + ret = LOS_MemFree(g_testPool, mem); + if (LOS_OK == ret) { + printf("Mem free success!\n"); + } else { + printf("Mem free failed!\n"); + } + + return; +} +``` + +### 结果验证 + +输出结果如下: + +``` +Mem init success! +Mem alloc success! +*mem = 828 +Mem free success! +``` + diff --git "a/zh-cn/device-dev/kernel/\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/zh-cn/device-dev/kernel/\345\217\214\345\220\221\351\223\276\350\241\250.md" new file mode 100644 index 0000000000..8b9323d618 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -0,0 +1,191 @@ +# 双向链表 + +- [基本概念](#section1990715203418) +- [功能说明](#section848334511411) +- [开发流程](#section01781261552) +- [编程实例](#section67569495514) + - [实例描述](#section48761994551) + - [示例代码](#section1280202685519) + - [结果验证](#section5811249105512) + + +## 基本概念 + +双向链表是指含有往前和往后两个方向的链表,即每个结点中除存放下一个节点指针外,还增加一个指向前一个节点的指针。其头指针head是唯一确定的。 + +从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,这种数据结构形式使得双向链表在查找时更加方便,特别是大量数据的遍历。由于双向链表具有对称性,能方便地完成各种插入、删除等操作,但需要注意前后方向的操作。 + +## 功能说明 + +双向链表模块为用户提供下面几种功能,接口详细信息可以查看API参考。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

初始化链表

+

LOS_ListInit

+

将指定双向链表节点初始化为双向链表

+

LOS_DL_LIST_HEAD

+

定义一个双向链表节点并以该节点初始化为双向链表

+

增加节点

+

LOS_ListAdd

+

将指定节点插入到双向链表头端

+

LOS_ListTailInsert

+

将指定节点插入到双向链表尾端

+

删除节点

+

LOS_ListDelete

+

将指定节点从链表中删除

+

LOS_ListDelInit

+

将指定节点从链表中删除,并使用该节点初始化链表

+

判断双向链表是否为空

+

LOS_ListEmpty

+

判断链表是否为空

+

获取结构体信息

+

LOS_DL_LIST_ENTRY

+

获取包含链表的结构体地址,接口的第一个入参表示的是链表中的某个节点,第二个入参是要获取的结构体名称,第三个入参是链表在该结构体中的名称

+

LOS_OFF_SET_OF

+

获取指定结构体内的成员相对于结构体起始地址的偏移量

+

遍历双向链表

+

LOS_DL_LIST_FOR_EACH

+

遍历双向链表

+

LOS_DL_LIST_FOR_EACH_SAFE

+

遍历双向链表,并存储当前节点的后继节点用于安全校验

+

遍历包含双向链表的结构体

+

LOS_DL_LIST_FOR_EACH_ENTRY

+

遍历指定双向链表,获取包含该链表节点的结构体地址

+

LOS_DL_LIST_FOR_EACH_ENTRY_SAFE

+

遍历指定双向链表,获取包含该链表节点的结构体地址,并存储包含当前节点的后继节点的结构体地址

+
+ +## 开发流程 + +双向链表的典型开发流程: + +1. 调用LOS\_ListInit/LOS\_DL\_LIST\_HEAD初始双向链表。 +2. 调用LOS\_ListAdd向链表插入节点。 +3. 调用LOS\_ListTailInsert向链表尾部插入节点。 +4. 调用LOS\_ListDelete删除指定节点。 +5. 调用LOS\_ListEmpty判断链表是否为空。 +6. 调用LOS\_ListDelInit删除指定节点并以此节点初始化链表。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 需要注意节点指针前后方向的操作。 +>- 链表操作接口,为底层接口,不对入参进行判空,需要使用者确保传参合法。 +>- 如果链表节点的内存是动态申请的,删除节点时,要注意释放内存。 + +## 编程实例 + +### 实例描述 + +本实例实现如下功能: + +1. 初始化双向链表。 +2. 增加节点。 +3. 删除节点。 +4. 测试操作是否成功。 + +### 示例代码 + +示例代码如下: + +``` +#include "stdio.h" +#include "los_list.h" + +static UINT32 ListSample(VOID) +{ + LOS_DL_LIST listHead = {NULL,NULL}; + LOS_DL_LIST listNode1 = {NULL,NULL}; + LOS_DL_LIST listNode2 = {NULL,NULL}; + + //首先初始化链表 + printf("Initial head\n"); + LOS_ListInit(&listHead); + + //添加节点1和节点2,并校验他们的相互关系 + LOS_ListAdd(&listHead, &listNode1); + if (listNode1.pstNext == &listHead && listNode1.pstPrev == &listHead) { + printf("Add listNode1 success\n"); + } + + LOS_ListTailInsert(&listHead, &listNode2); + if (listNode2.pstNext == &listHead && listNode2.pstPrev == &listNode1) { + printf("Tail insert listNode2 success\n"); + } + + //删除两个节点 + LOS_ListDelete(&listNode1); + LOS_ListDelete(&listNode2); + + //确认链表为空 + if (LOS_ListEmpty(&listHead)) { + printf("Delete success\n"); + } + + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +Initial head +Add listNode1 success +Tail insert listNode2 success +Delete success +``` + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\225\260\346\215\256\347\273\223\346\236\204.md" new file mode 100644 index 0000000000..5464ca3cee --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -0,0 +1,5 @@ +# 基本数据结构 + +- **[双向链表](双向链表.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-11.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-11.md" new file mode 100644 index 0000000000..dd72ce5e10 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-11.md" @@ -0,0 +1,53 @@ +# 基本概念 + +- [运行机制](#section1794010261861) + - [信号量控制块](#section11372149164815) + - [信号量运作原理](#section139726510491) + + +信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务间同步或共享资源的互斥访问。 + +一个信号量的数据结构中,通常有一个计数值,用于对有效资源数的计数,表示剩下的可被使用的共享资源数,其值的含义分两种情况: + +- 0,表示该信号量当前不可获取,因此可能存在正在等待该信号量的任务。 +- 正值,表示该信号量当前可被获取。 + +以同步为目的的信号量和以互斥为目的的信号量在使用上有如下不同: + +- 用作互斥时,初始信号量计数值不为0,表示可用的共享资源个数。在需要使用共享资源前,先获取信号量,然后使用一个共享资源,使用完毕后释放信号量。这样在共享资源被取完,即信号量计数减至0时,其他需要获取信号量的任务将被阻塞,从而保证了共享资源的互斥访问。另外,当共享资源数为1时,建议使用二值信号量,一种类似于互斥锁的机制。 +- 用作同步时,初始信号量计数值为0。任务1获取信号量而阻塞,直到任务2或者某中断释放信号量,任务1才得以进入Ready或Running态,从而达到了任务间的同步。 + +## 运行机制 + +### 信号量控制块 + +``` +/** + * 信号量控制块数据结构 + */ +typedef struct { + UINT16 semStat; /* 信号量状态 */ + UINT16 semType; /* 信号量类型 */ + UINT16 semCount; /* 信号量计数 */ + UINT16 semId; /* 信号量索引号 */ + LOS_DL_LIST semList; /* 挂接阻塞于该信号量的任务 */ +} LosSemCB; +``` + +### 信号量运作原理 + +信号量初始化,为配置的N个信号量申请内存(N值可以由用户自行配置,通过LOSCFG\_BASE\_IPC\_SEM\_LIMIT宏实现),并把所有信号量初始化成未使用,加入到未使用链表中供系统使用。 + +信号量创建,从未使用的信号量链表中获取一个信号量,并设定初值。 + +信号量申请,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。 + +信号量释放,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。 + +信号量删除,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。 + +信号量允许多个任务在同一时刻访问共享资源,但会限制同一时刻访问此资源的最大任务数目。当访问资源的任务数达到该资源允许的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。 + +**图 1** 信号量运作示意图 +![](figures/信号量运作示意图.png "信号量运作示意图") + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-13.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-13.md" new file mode 100644 index 0000000000..73b3fd7ad4 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-13.md" @@ -0,0 +1,21 @@ +# 基本概念 + +时间管理以系统时钟为基础,给应用程序提供所有和时间有关的服务。 + +系统时钟是由定时器/计数器产生的输出脉冲触发中断产生的,一般定义为整数或长整数。输出脉冲的周期叫做一个“时钟滴答”。系统时钟也称为时标或者Tick。 + +用户以秒、毫秒为单位计时,而操作系统以Tick为单位计时,当用户需要对系统进行操作时,例如任务挂起、延时等,此时需要时间管理模块对Tick和秒/毫秒进行转换。 + +OpenHarmony LiteOS-M内核时间管理模块提供时间转换、统计功能。 + +### 时间单位: + +- Cycle + + 系统最小的计时单位。Cycle的时长由系统主时钟频率决定,系统主时钟频率就是每秒钟的Cycle数。 + +- Tick + + Tick是操作系统的基本时间单位,由用户配置的每秒Tick数决定。 + + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-15.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-15.md" new file mode 100644 index 0000000000..2c64cf5b52 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-15.md" @@ -0,0 +1,54 @@ +# 基本概念 + +- [运行机制](#section070665816719) + - [定时器状态](#section115453813506) + - [定时器模式](#section137521353175010) + + +软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设定的Tick时钟计数值后会触发用户定义的回调函数。定时精度与系统Tick时钟的周期有关。 + +硬件定时器受硬件的限制,数量上不足以满足用户的实际需求,因此为了满足用户需求,提供更多的定时器,OpenHarmony LiteOS-M内核提供软件定时器功能。软件定时器扩展了定时器的数量,允许创建更多的定时业务。 + +软件定时器功能上支持: + +- 静态裁剪:能通过宏关闭软件定时器功能。 +- 软件定时器创建。 +- 软件定时器启动。 +- 软件定时器停止。 +- 软件定时器删除。 +- 软件定时器剩余Tick数获取。 + +## 运行机制 + +软件定时器是系统资源,在模块初始化的时候已经分配了一块连续的内存,系统支持的最大定时器个数由los\_config.h中的LOSCFG\_BASE\_CORE\_SWTMR\_LIMIT宏配置。 + +软件定时器使用了系统的一个队列和一个任务资源,软件定时器的触发遵循队列规则,先进先出。定时时间短的定时器总是比定时时间长的靠近队列头,满足优先被触发的准则。 + +软件定时器以Tick为基本计时单位,当用户创建并启动一个软件定时器时,OpenHarmony LiteOS-M内核会根据当前系统Tick时间及用户设置的定时间隔确定该定时器的到期Tick时间,并将该定时器控制结构挂入计时全局链表。 + +当Tick中断到来时,在Tick中断处理函数中扫描软件定时器的计时全局链表,看是否有定时器超时,若有则将超时的定时器记录下来。 + +Tick中断处理函数结束后,软件定时器任务(优先级为最高)被唤醒,在该任务中调用之前记录下来的定时器的超时回调函数。 + +### 定时器状态 + +- OS\_SWTMR\_STATUS\_UNUSED(未使用) + +系统在定时器模块初始化的时候将系统中所有定时器资源初始化成该状态。 + +- OS\_SWTMR\_STATUS\_CREATED(创建未启动/停止) + +在未使用状态下调用LOS\_SwtmrCreate接口或者启动后调用LOS\_SwtmrStop接口后,定时器将变成该状态。 + +- OS\_SWTMR\_STATUS\_TICKING(计数) + +在定时器创建后调用LOS\_SwtmrStart接口,定时器将变成该状态,表示定时器运行时的状态。 + +### 定时器模式 + +OpenHarmony LiteOS-M内核的软件定时器提供三类定时器机制: + +- 第一类是单次触发定时器,这类定时器在启动后只会触发一次定时器事件,然后定时器自动删除。 +- 第二类是周期触发定时器,这类定时器会周期性的触发定时器事件,直到用户手动地停止定时器,否则将永远持续执行下去。 +- 第三类也是单次触发定时器,但与第一类不同之处在于这类定时器超时后不会自动删除,需要调用定时器删除接口删除定时器。 + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-17.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-17.md" new file mode 100644 index 0000000000..6d21b260ce --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-17.md" @@ -0,0 +1,31 @@ +# 基本概念 + +- [运行机制](#section96644177124) + +CPU(中央处理器,Central Processing Unit)占用率分为系统CPU占用率和任务CPU占用率。 + +系统CPU占用率(CPU Percent)是指周期时间内系统的CPU占用率,用于表示系统一段时间内的闲忙程度,也表示CPU的负载情况。系统CPU占用率的有效表示范围为0~100,其精度(可通过配置调整)为百分比。100表示系统满负荷运转。 + +任务CPU占用率指单个任务的CPU占用率,用于表示单个任务在一段时间内的闲忙程度。任务CPU占用率的有效表示范围为0~100,其精度(可通过配置调整)为百分比。100表示在一段时间内系统一直在运行该任务。 + +用户通过系统级的CPU占用率,判断当前系统负载是否超出设计规格。 + +通过系统中各个任务的CPU占用情况,判断各个任务的CPU占用率是否符合设计的预期。 + +## 运行机制 + +OpenHarmony LiteOS-M的CPUP(CPU Percent,系统CPU占用率)采用任务级记录的方式,在任务切换时,记录任务启动时间,任务切出或者退出时间,每次当任务退出时,系统会累加整个任务的占用时间。 + +可以在target\_config.h的中对该功能进行选配。 + +OpenHarmony LiteOS-M提供以下两种CPU占用率的信息查询: + +- 系统CPU占用率。 +- 任务CPU占用率。 + +**CPU占用率的计算方法:** + +系统CPU占用率=系统中除idle任务外其他任务运行总时间/系统运行总时间 + +任务CPU占用率=任务运行总时间/系统运行总时间 + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-2.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-2.md" new file mode 100644 index 0000000000..db5ae0ccd5 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-2.md" @@ -0,0 +1,96 @@ +# 基本概念 + +- [任务相关概念](#section673132352511) +- [任务运行机制](#section176294469251) + +从系统角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。 + +OpenHarmony LiteOS-M的任务模块可以给用户提供多个任务,实现任务间的切换,帮助用户管理业务程序流程。任务模块具有如下特性: + +- 支持多任务。 +- 一个任务表示一个线程。 +- 抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。 +- 相同优先级任务支持时间片轮转调度方式。 +- 共有32个优先级\[0-31\],最高优先级为0,最低优先级为31。 + +## 任务相关概念 + +**任务状态** + +任务有多种运行状态。系统初始化完成后,创建的任务就可以在系统中竞争一定的资源,由内核进行调度。 + +任务状态通常分为以下四种: + +- 就绪(Ready):该任务在就绪队列中,只等待CPU。 +- 运行(Running):该任务正在执行。 +- 阻塞(Blocked):该任务不在就绪队列中。包含任务被挂起(suspend状态)、任务被延时(delay状态)、任务正在等待信号量、读写队列或者等待事件等。 +- 退出态(Dead):该任务运行结束,等待系统回收资源。 + +**任务状态迁移** + +**图 1** 任务状态示意图 +![](figures/任务状态示意图.png "任务状态示意图") + +**任务状态迁移说明:** + +- 就绪态→运行态 + + 任务创建后进入就绪态,发生任务切换时,就绪队列中最高优先级的任务被执行,从而进入运行态,同时该任务从就绪队列中移出。 + +- 运行态→阻塞态 + + 正在运行的任务发生阻塞(挂起、延时、读信号量等)时,该任务会从就绪队列中删除,任务状态由运行态变成阻塞态,然后发生任务切换,运行就绪队列中最高优先级任务。 + +- 阻塞态→就绪态(阻塞态→运行态) + + 阻塞的任务被恢复后(任务恢复、延时时间超时、读信号量超时或读到信号量等),此时被恢复的任务会被加入就绪队列,从而由阻塞态变成就绪态;此时如果被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,该任务由就绪态变成运行态。 + +- 就绪态→阻塞态 + + 任务也有可能在就绪态时被阻塞(挂起),此时任务状态由就绪态变为阻塞态,该任务从就绪队列中删除,不会参与任务调度,直到该任务被恢复。 + +- 运行态→就绪态 + + 有更高优先级任务创建或者恢复后,会发生任务调度,此刻就绪队列中最高优先级任务变为运行态,那么原先运行的任务由运行态变为就绪态,依然在就绪队列中。 + +- 运行态→退出态 + + 运行中的任务运行结束,任务状态由运行态变为退出态。退出态包含任务运行结束的正常退出状态以及Invalid状态。例如,任务运行结束但是没有自删除,对外呈现的就是Invalid状态,即退出态。 + +- 阻塞态→退出态 + + 阻塞的任务调用删除接口,任务状态由阻塞态变为退出态。 + + +**任务ID** + +任务ID,在任务创建时通过参数返回给用户,是任务的重要标识。系统中的ID号是唯一的。用户可以通过任务ID对指定任务进行任务挂起、任务恢复、查询任务名等操作。 + +**任务优先级** + +优先级表示任务执行的优先顺序。任务的优先级决定了在发生任务切换时即将要执行的任务,就绪队列中最高优先级的任务将得到执行。 + +**任务入口函数** + +新任务得到调度后将执行的函数。该函数由用户实现,在任务创建时,通过任务创建结构体设置。 + +**任务栈** + +每个任务都拥有一个独立的栈空间,我们称为任务栈。栈空间里保存的信息包含局部变量、寄存器、函数参数、函数返回地址等。 + +**任务上下文** + +任务在运行过程中使用的一些资源,如寄存器等,称为任务上下文。当这个任务挂起时,其他任务继续执行,可能会修改寄存器等资源中的值。如果任务切换时没有保存任务上下文,可能会导致任务恢复后出现未知错误。因此在任务切换时会将切出任务的任务上下文信息,保存在自身的任务栈中,以便任务恢复后,从栈空间中恢复挂起时的上下文信息,从而继续执行挂起时被打断的代码。 + +**任务控制块TCB** + +每个任务都含有一个任务控制块\(TCB\)。TCB包含了任务上下文栈指针(stack pointer)、任务状态、任务优先级、任务ID、任务名、任务栈大小等信息。TCB可以反映出每个任务运行情况。 + +**任务切换** + +任务切换包含获取就绪队列中最高优先级任务、切出任务上下文保存、切入任务上下文恢复等动作。 + +## 任务运行机制 + +用户创建任务时,系统会初始化任务栈,预置上下文。此外,系统还会将“任务入口函数”地址放在相应位置。这样在任务第一次启动进入运行态时,将会执行“任务入口函数”。 + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-21.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-21.md" new file mode 100644 index 0000000000..310f6014ea --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-21.md" @@ -0,0 +1,82 @@ +# 基本概念 + +- [运行机制](#section10284121317365) + - [日志方式](#section13804114513361) + - [Cow机制](#section172771130193610) + - [lfs掉电保护](#section42941021173614) + + +LittleFS主要用在微控制器和flash上,是一种嵌入式文件系统,具有如下3个特点: + +1. 掉电恢复 + + 在写入时即使复位或者掉电也可以恢复到上一个正确的状态。 + +2. 擦写均衡 + + 有效延长flash的使用寿命。 + +3. 有限的RAM/ROM + + 节省ROM和RAM空间。 + + +## 运行机制 + +最经典的掉电保护方法有两种,一种是使用日志,一种是通过COW方式。lfs结合了两种方法,并优化了两种方案的缺点,提供了一套掉电保护策略 + +### 日志方式 + +![](figures/zh-cn_image_0000001124310992.png) + +具体步骤为: + +1. 写入数据之前,先在日志区存储开始标志,记录要写入的数据位置和大小; +2. 待写入的数据写入日志区; +3. 待写入的数据写入数据区; +4. 写入完成之后,在日志区记录结束标志。 + +模拟掉电场景: + +1. 步骤1完成,步骤2没有完成;重启之后,保持原来的数据,日志无效; +2. 步骤1,2完成了,步骤3没有完成,尝试把步骤2的数据写入到数据区; +3. 步骤1,2,3完成了,步骤4没有完成,同样尝试把步骤2的数据写入到数据区; + +### Cow机制 + +![](figures/zh-cn_image_0000001170790681.png) + +具体步骤为: + +1. 想更新节点F的数据,先申请一个新的节点,把F的旧数据拷贝过去,然后更新新的数据; +2. 把父节点的指针指向新的节点,去掉旧节点的指针。 + +模拟掉电场景: + +步骤1完成了,步骤2没有完成,则使用旧的数据,新的节点变成孤儿节点。 + +### lfs掉电保护 + +fs结合了日志方式和COW机制两种方式进行掉电保护,并且优化了两种方案。 + +前面谈过文件系统三要素,超级块,inode,以及数据。对应lfs来说,他把超级块以及inode通过日志的方式存储,两种采用统一的存储结构,后文称两者为元数据;普通数据则采用cow的方式存储,采用czt逆序链表的方式。 + +![](figures/zh-cn_image_0000001124307264.png) + +**元数据的存储** + +![](figures/zh-cn_image_0000001124147160.png) + +元数据(对应root,dir)采用双block的方式存储,互为备份,每个block都有一个revision序号,值越大,表示block的数据越新,每个block默认可以存储最多0xff个文件的数据,如果超过这个值,则需要compact(压缩)。 + +Compact是干什么呢? 即当数据的大小大于某个值的时候,把数据整合,剔除同一个id的旧的数据,然后写入到备份block里面。 + +**普通数据的存储** + +Lfs的数据采用链表的方式逆向管理。 + +![](figures/zh-cn_image_0000001124306828.png) + +1. 采用逆向的指针,这样常规的追加数据,不需要额外的开销来重新建立所有的索引; +2. 每个偶数block有多个指针,指向更远的数据,这样可以在检索的时候加快速度。 + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-4.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-4.md" new file mode 100644 index 0000000000..50b4c21033 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-4.md" @@ -0,0 +1,17 @@ +# 基本概念 + +内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要包括内存的初始化、分配以及释放。 + +在系统运行过程中,内存管理模块通过对内存的申请/释放来管理用户和OS对内存的使用,使内存的利用率和使用效率达到最优,同时最大限度地解决系统的内存碎片问题。 + +OpenHarmony LiteOS-M的内存管理分为静态内存管理和动态内存管理,提供内存初始化、分配、释放等功能。 + +- 动态内存:在动态内存池中分配用户指定大小的内存块。 + - 优点:按需分配。 + - 缺点:内存池中可能出现碎片。 + +- 静态内存:在静态内存池中分配用户初始化时预设(固定)大小的内存块。 + - 优点:分配和释放效率高,静态内存池中无碎片。 + - 缺点:只能申请到初始化预设大小的内存块,不能按需申请。 + + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-5.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-5.md" new file mode 100644 index 0000000000..a96f943c8d --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-5.md" @@ -0,0 +1,52 @@ +# 基本概念 + +- [运行机制](#section1735611583011) + - [事件控制块](#section1161415384467) + - [事件运作原理](#section187761153144617) + + +事件(Event)是一种任务间的通信机制,可用于任务间的同步操作。事件的特点是: + +- 任务间的事件同步,可以一对多,也可以多对多。一对多表示一个任务可以等待多个事件,多对多表示多个任务可以等待多个事件。但是一次写事件最多触发一个任务从阻塞中醒来。 +- 事件读超时机制。 +- 只做任务间同步,不传输具体数据。 + +提供了事件初始化、事件读写、事件清零、事件销毁等接口。 + +## 运行机制 + +### 事件控制块 + +``` +/** + * 事件控制块数据结构 + */ +typedef struct tagEvent { + UINT32 uwEventID; /* 事件集合,表示已经处理(写入和清零)的事件集合 */ + LOS_DL_LIST stEventList; /* 等待特定事件的任务链表 */ +} EVENT_CB_S, *PEVENT_CB_S; +``` + +### 事件运作原理 + +**事件初始化:**会创建一个事件控制块,该控制块维护一个已处理的事件集合,以及等待特定事件的任务链表。 + +**写事件:**会向事件控制块写入指定的事件,事件控制块更新事件集合,并遍历任务链表,根据任务等待具体条件满足情况决定是否唤醒相关任务。 + +**读事件:**如果读取的事件已存在时,会直接同步返回。其他情况会根据超时时间以及事件触发情况,来决定返回时机:等待的事件条件在超时时间耗尽之前到达,阻塞任务会被直接唤醒,否则超时时间耗尽该任务才会被唤醒。 + +读事件条件满足与否取决于入参eventMask和mode,eventMask即需要关注的事件。mode是具体处理方式,分以下三种情况: + +LOS\_WAITMODE\_AND:表示eventMask中所有事件都发生时,才返回。 + +LOS\_WAITMODE\_OR:表示eventMask中任何事件发生时,就返回。 + +LOS\_WAITMODE\_CLR:事件读取成功后,对应读取到的事件会被清零。需要配合LOS\_WAITMODE\_AND或者LOS\_WAITMODE\_OR来使用。 + +**事件清零:**根据指定掩码,去对事件控制块的事件集合进行清零操作。当掩码为0时,表示将事件集合全部清零。当掩码为0xffff时,表示不清除任何事件,保持事件集合原状。 + +**事件销毁:**销毁指定的事件控制块。 + +**图 1** 事件运作原理图 +![](figures/事件运作原理图.png "事件运作原理图") + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-7.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-7.md" new file mode 100644 index 0000000000..4989a0b93e --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-7.md" @@ -0,0 +1,19 @@ +# 基本概念 + +- [运行机制](#section115161649726) + +互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。 + +任意时刻互斥锁的状态只有两种,开锁或闭锁。当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。当该任务释放它时,该互斥锁被开锁,任务失去该互斥锁的所有权。当一个任务持有互斥锁时,其他任务将不能再对该互斥锁进行开锁或持有。 + +多任务环境下往往存在多个任务竞争同一共享资源的应用场景,互斥锁可被用于对共享资源的保护从而实现独占式访问。另外互斥锁可以解决信号量存在的优先级翻转问题。 + +## 运行机制 + +多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的,需要任务进行独占式处理。互斥锁怎样来避免这种冲突呢? + +用互斥锁处理非共享资源的同步访问时,如果有任务访问该资源,则互斥锁为加锁状态。此时其他任务如果想访问这个公共资源则会被阻塞,直到互斥锁被持有该锁的任务释放后,其他任务才能重新访问该公共资源,此时互斥锁再次上锁,如此确保同一时刻只有一个任务正在访问这个公共资源,保证了公共资源操作的完整性。 + +**图 1** 互斥锁运作示意图 +![](figures/互斥锁运作示意图.png "互斥锁运作示意图") + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-9.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-9.md" new file mode 100644 index 0000000000..90541dda60 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265-9.md" @@ -0,0 +1,67 @@ +# 基本概念 + +- [运行机制](#section1582619446311) + - [队列控制块](#section1648304614720) + - [队列运作原理](#section15384012164811) + + +队列又称消息队列,是一种常用于任务间通信的数据结构。队列接收来自任务或中断的不固定长度消息,并根据不同的接口确定传递的消息是否存放在队列空间中。 + +任务能够从队列里面读取消息,当队列中的消息为空时,挂起读取任务;当队列中有新消息时,挂起的读取任务被唤醒并处理新消息。任务也能够往队列里写入消息,当队列已经写满消息时,挂起写入任务;当队列中有空闲消息节点时,挂起的写入任务被唤醒并写入消息。 + +可以通过调整读队列和写队列的超时时间来调整读写接口的阻塞模式,如果将读队列和写队列的超时时间设置为0,就不会挂起任务,接口会直接返回,这就是非阻塞模式。反之,如果将都队列和写队列的超时时间设置为大于0的时间,就会以阻塞模式运行。 + +消息队列提供了异步处理机制,允许将一个消息放入队列,但不立即处理。同时队列还有缓冲消息的作用,可以使用队列实现任务异步通信,队列具有如下特性: + +- 消息以先进先出的方式排队,支持异步读写。 +- 读队列和写队列都支持超时机制。 +- 每读取一条消息,就会将该消息节点设置为空闲。 +- 发送消息类型由通信双方约定,可以允许不同长度(不超过队列的消息节点大小)的消息。 +- 一个任务能够从任意一个消息队列接收和发送消息。 +- 多个任务能够从同一个消息队列接收和发送消息。 +- 创建队列时所需的队列空间,接口内系统自行动态申请内存。 + +## 运行机制 + +### 队列控制块 + +``` +/** + * 队列控制块数据结构 + */ +typedef struct +{ + UINT8 *queue; /* 队列消息内存空间的指针 */ + UINT16 queueState; /* 队列状态 */ + UINT16 queueLen; /* 队列中消息节点个数,即队列长度 */ + UINT16 queueSize; /* 消息节点大小 */ + UINT16 queueID; /* 队列ID */ + UINT16 queueHead; /* 消息头节点位置(数组下标)*/ + UINT16 queueTail; /* 消息尾节点位置(数组下标)*/ + UINT16 readWriteableCnt[OS_READWRITE_LEN]; /* 数组下标0的元素表示队列中可读消息数, + 数组下标1的元素表示队列中可写消息数 */ + LOS_DL_LIST readWriteList[OS_READWRITE_LEN]; /* 读取或写入消息的任务等待链表, + 下标0:读取链表,下标1:写入链表 */ + LOS_DL_LIST memList; /* 内存块链表 */ +} LosQueueCB; +``` + +每个队列控制块中都含有队列状态,表示该队列的使用情况: + +- OS\_QUEUE\_UNUSED:队列未被使用。 +- OS\_QUEUE\_INUSED:队列被使用中。 + +### 队列运作原理 + +- 创建队列时,创建队列成功会返回队列ID。 +- 在队列控制块中维护着一个消息头节点位置Head和一个消息尾节点位置Tail,用于表示当前队列中消息的存储情况。Head表示队列中被占用的消息节点的起始位置。Tail表示被占用的消息节点的结束位置,也是空闲消息节点的起始位置。队列刚创建时,Head和Tail均指向队列起始位置。 +- 写队列时,根据readWriteableCnt\[1\]判断队列是否可以写入,不能对已满(readWriteableCnt\[1\]为0)队列进行写操作。写队列支持两种写入方式:向队列尾节点写入,也可以向队列头节点写入。尾节点写入时,根据Tail找到起始空闲消息节点作为数据写入对象,如果Tail已经指向队列尾部则采用回卷方式。头节点写入时,将Head的前一个节点作为数据写入对象,如果Head指向队列起始位置则采用回卷方式。 +- 读队列时,根据readWriteableCnt\[0\]判断队列是否有消息需要读取,对全部空闲(readWriteableCnt\[0\]为0)队列进行读操作会引起任务挂起。如果队列可以读取消息,则根据Head找到最先写入队列的消息节点进行读取。如果Head已经指向队列尾部则采用回卷方式。 +- 删除队列时,根据队列ID找到对应队列,把队列状态置为未使用,把队列控制块置为初始状态,并释放队列所占内存。 + +图 1 队列读写数据操作示意图 + +![](figures/zh-cn_image_0000001124146302.png) + +上图对读写队列做了示意,图中只画了尾节点写入方式,没有画头节点写入,但是两者是类似的。 + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265.md" "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265.md" new file mode 100644 index 0000000000..8582b7742a --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\346\234\254\346\246\202\345\277\265.md" @@ -0,0 +1,37 @@ +# 基本概念 + +在程序运行过程中,出现需要由CPU立即处理的事务时,CPU暂时中止当前程序的执行转而处理这个事务,这个过程叫做中断。当硬件产生中断时,通过中断号查找到其对应的中断处理程序,执行中断处理程序完成中断处理。 + +通过中断机制,在外设不需要CPU介入时,CPU可以执行其它任务;当外设需要CPU时,CPU会中断当前任务来响应中断请求。这样可以使CPU避免把大量时间耗费在等待、查询外设状态的操作上,有效提高系统实时性及执行效率。 + +下面介绍下中断的相关概念: + +- 中断号 + + 中断请求信号特定的标志,计算机能够根据中断号判断是哪个设备提出的中断请求。 + +- 中断请求 + + “紧急事件”向CPU提出申请(发一个电脉冲信号),请求中断,需要CPU暂停当前执行的任务处理该“紧急事件”,这一过程称为中断请求。 + +- 中断优先级 + + 为使系统能够及时响应并处理所有中断,系统根据中断事件的重要性和紧迫程度,将中断源分为若干个级别,称作中断优先级。 + +- 中断处理程序 + + 当外设发出中断请求后,CPU暂停当前的任务,转而响应中断请求,即执行中断处理程序。产生中断的每个设备都有相应的中断处理程序。 + +- 中断触发 + + 中断源向中断控制器发送中断信号,中断控制器对中断进行仲裁,确定优先级,将中断信号发送给CPU。中断源产生中断信号的时候,会将中断触发器置“1”,表明该中断源产生了中断,要求CPU去响应该中断。 + +- 中断向量 + + 中断服务程序的入口地址。 + +- 中断向量表 + + 存储中断向量的存储区,中断向量与中断号对应,中断向量在中断向量表中按照中断号顺序存储。 + + diff --git "a/zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270-1.md" "b/zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270-1.md" new file mode 100644 index 0000000000..df2416afdc --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270-1.md" @@ -0,0 +1,15 @@ +# 基础内核 + +- **[中断管理](中断管理.md)** + +- **[任务管理](任务管理.md)** + +- **[内存管理](内存管理.md)** + +- **[IPC](IPC.md)** + +- **[时间管理](时间管理.md)** + +- **[软件定时器](软件定时器.md)** + + diff --git "a/zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\345\237\272\347\241\200\345\212\237\350\203\275.md" "b/zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270.md" old mode 100755 new mode 100644 similarity index 61% rename from "zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\345\237\272\347\241\200\345\212\237\350\203\275.md" rename to "zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270.md" index e5c98ad81b..94b43451a9 --- "a/zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\345\237\272\347\241\200\345\212\237\350\203\275.md" +++ "b/zh-cn/device-dev/kernel/\345\237\272\347\241\200\345\206\205\346\240\270.md" @@ -1,4 +1,4 @@ -# OpenHarmony轻内核基础功能 +# 基础内核 - **[进程](进程.md)** diff --git "a/zh-cn/device-dev/kernel/\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" new file mode 100644 index 0000000000..d248439963 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" @@ -0,0 +1,15 @@ +# 小型系统内核 + +- **[认识LiteOS-M内核](认识LiteOS-M内核.md)** + +- **[快速入门](快速入门.md)** + +- **[基础内核](基础内核-1.md)** + +- **[扩展组件](扩展组件.md)** + +- **[内核调测](内核调测.md)** + +- **[附录](附录.md)** + + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-10.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-10.md" new file mode 100644 index 0000000000..c521fd755d --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-10.md" @@ -0,0 +1,199 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section2148236125814) + - [示例代码](#section121451047155716) + - [结果验证](#section2742182082117) + + +## 接口说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

创建/删除消息队列

+

LOS_QueueCreate

+

创建一个消息队列,由系统动态申请队列空间。

+

LOS_QueueDelete

+

根据队列ID删除一个指定队列。

+

读/写队列(不带拷贝)

+

LOS_QueueRead

+

读取指定队列头节点中的数据(队列节点中的数据实际上是一个地址)。

+

LOS_QueueWrite

+

向指定队列尾节点中写入入参bufferAddr的值(即buffer的地址)。

+

LOS_QueueWriteHead

+

向指定队列头节点中写入入参bufferAddr的值(即buffer的地址)。

+

读/写队列(带拷贝)

+

LOS_QueueReadCopy

+

读取指定队列头节点中的数据。

+

LOS_QueueWriteCopy

+

向指定队列尾节点中写入入参bufferAddr中保存的数据。

+

LOS_QueueWriteHeadCopy

+

向指定队列头节点中写入入参bufferAddr中保存的数据。

+

获取队列信息

+

LOS_QueueInfoGet

+

获取指定队列的信息,包括队列ID、队列长度、消息节点大小、头节点、尾节点、可读节点数量、可写节点数量、等待读操作的任务、等待写操作的任务。

+
+ +## 开发流程 + +1. 用LOS\_QueueCreate创建队列。创建成功后,可以得到队列ID。 +2. 通过LOS\_QueueWrite或者LOS\_QueueWriteCopy写队列。 +3. 通过LOS\_QueueRead或者LOS\_QueueReadCopy读队列。 +4. 通过LOS\_QueueInfoGet获取队列信息。 +5. 通过LOS\_QueueDelete删除队列。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 系统支持的最大队列数是指:整个系统的队列资源总个数,而非用户能使用的个数。例如:系统软件定时器多占用一个队列资源,那么用户能使用的队列资源就会减少一个。 +>- 创建队列时传入的队列名和flags暂时未使用,作为以后的预留参数。 +>- 队列接口函数中的入参timeOut是相对时间。 +>- LOS\_QueueReadCopy和LOS\_QueueWriteCopy及LOS\_QueueWriteHeadCopy是一组接口,LOS\_QueueRead和LOS\_QueueWrite及LOS\_QueueWriteHead是一组接口,每组接口需要配套使用。 +>- 鉴于LOS\_QueueWrite和LOS\_QueueWriteHead和LOS\_QueueRead这组接口实际操作的是数据地址,用户必须保证调用LOS\_QueueRead获取到的指针所指向的内存区域在读队列期间没有被异常修改或释放,否则可能导致不可预知的后果。 +>- 鉴于LOS\_QueueWrite和LOS\_QueueWriteHead和LOS\_QueueRead这组接口实际操作的是数据地址,也就意味着实际写和读的消息长度仅仅是一个指针数据,因此用户使用这组接口之前,需确保创建队列时的消息节点大小,为一个指针的长度,避免不必要的浪费和读取失败。 + +## 编程实例 + +### 实例描述 + +创建一个队列,两个任务。任务1调用写队列接口发送消息,任务2通过读队列接口接收消息。 + +1. 通过LOS\_TaskCreate创建任务1和任务2。 +2. 通过LOS\_QueueCreate创建一个消息队列。 +3. 在任务1 SendEntry中发送消息。 +4. 在任务2 RecvEntry中接收消息。 +5. 通过LOS\_QueueDelete删除队列。 + +### 示例代码 + +示例代码如下: + +``` +#include "los_task.h" +#include "los_queue.h" +static UINT32 g_queue; +#define BUFFER_LEN 50 + +VOID SendEntry(VOID) +{ + UINT32 ret = 0; + CHAR abuf[] = "test message"; + UINT32 len = sizeof(abuf); + + ret = LOS_QueueWriteCopy(g_queue, abuf, len, 0); + if(ret != LOS_OK) { + printf("send message failure, error: %x\n", ret); + } +} + +VOID RecvEntry(VOID) +{ + UINT32 ret = 0; + CHAR readBuf[BUFFER_LEN] = {0}; + UINT32 readLen = BUFFER_LEN; + + //休眠1s + usleep(1000000); + ret = LOS_QueueReadCopy(g_queue, readBuf, &readLen, 0); + if(ret != LOS_OK) { + printf("recv message failure, error: %x\n", ret); + } + + printf("recv message: %s\n", readBuf); + + ret = LOS_QueueDelete(g_queue); + if(ret != LOS_OK) { + printf("delete the queue failure, error: %x\n", ret); + } + + printf("delete the queue success!\n"); +} + +UINT32 ExampleQueue(VOID) +{ + printf("start queue example\n"); + UINT32 ret = 0; + UINT32 task1, task2; + TSK_INIT_PARAM_S initParam = {0}; + + initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)SendEntry; + initParam.usTaskPrio = 9; + initParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + initParam.pcName = "SendQueue"; + + LOS_TaskLock(); + ret = LOS_TaskCreate(&task1, &initParam); + if(ret != LOS_OK) { + printf("create task1 failed, error: %x\n", ret); + return ret; + } + + initParam.pcName = "RecvQueue"; + initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)RecvEntry; + ret = LOS_TaskCreate(&task2, &initParam); + if(ret != LOS_OK) { + printf("create task2 failed, error: %x\n", ret); + return ret; + } + + ret = LOS_QueueCreate("queue", 5, &g_queue, 0, 50); + if(ret != LOS_OK) { + printf("create queue failure, error: %x\n", ret); + } + + printf("create the queue success!\n"); + LOS_TaskUnlock(); + return ret; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +start test example +create the queue success! +recv message: test message +delete the queue success! +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-12.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-12.md" new file mode 100644 index 0000000000..4a483b3391 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-12.md" @@ -0,0 +1,206 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section22061718111412) + - [示例代码](#section1775922321416) + - [结果验证](#section160404016213) + + +## 接口说明 + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

创建/删除信号量

+

LOS_SemCreate

+

创建信号量,返回信号量ID

+

LOS_BinarySemCreate

+

创建二值信号量,其计数值最大为1

+

LOS_SemDelete

+

删除指定的信号量

+

申请/释放信号量

+

LOS_SemPend

+

申请指定的信号量,并设置超时时间

+

LOS_SemPost

+

释放指定的信号量

+
+ +## 开发流程 + +1. 创建信号量LOS\_SemCreate,若要创建二值信号量则调用LOS\_BinarySemCreate。 +2. 申请信号量LOS\_SemPend。 +3. 释放信号量LOS\_SemPost。 +4. 删除信号量LOS\_SemDelete。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>由于中断不能被阻塞,因此不能在中断中使用阻塞模式申请信号量。 + +## 编程实例 + +### 实例描述 + +本实例实现如下功能: + +1. 测试任务ExampleSem创建一个信号量,锁任务调度,创建两个任务ExampleSemTask1、ExampleSemTask2, ExampleSemTask2优先级高于ExampleSemTask1,两个任务中申请同一信号量,解锁任务调度后两任务阻塞,测试任务ExampleSem释放信号量。 +2. ExampleSemTask2得到信号量,被调度,然后任务休眠20Tick,ExampleSemTask2延迟,ExampleSemTask1被唤醒。 +3. ExampleSemTask1定时阻塞模式申请信号量,等待时间为10Tick,因信号量仍被ExampleSemTask2持有,ExampleSemTask1挂起,10Tick后仍未得到信号量,ExampleSemTask1被唤醒,试图以永久阻塞模式申请信号量,ExampleSemTask1挂起。 +4. 20Tick后ExampleSemTask2唤醒, 释放信号量后,ExampleSemTask1得到信号量被调度运行,最后释放信号量。 +5. ExampleSemTask1执行完,40Tick后任务ExampleSem被唤醒,执行删除信号量。 + +### 示例代码 + +示例代码如下: + +``` +#include "los_sem.h" +#include "securec.h" + +/* 任务ID */ +static UINT32 g_testTaskId01; +static UINT32 g_testTaskId02; + +/* 测试任务优先级 */ +#define TASK_PRIO_TEST 5 + +/* 信号量结构体id */ +static UINT32 g_semId; + +VOID ExampleSemTask1(VOID) +{ + UINT32 ret; + + printf("ExampleSemTask1 try get sem g_semId, timeout 10 ticks.\n"); + + /* 定时阻塞模式申请信号量,定时时间为10ticks */ + ret = LOS_SemPend(g_semId, 10); + + /* 申请到信号量 */ + if (ret == LOS_OK) { + LOS_SemPost(g_semId); + return; + } + /* 定时时间到,未申请到信号量 */ + if (ret == LOS_ERRNO_SEM_TIMEOUT) { + printf("ExampleSemTask1 timeout and try get sem g_semId wait forever.\n"); + + /*永久阻塞模式申请信号量*/ + ret = LOS_SemPend(g_semId, LOS_WAIT_FOREVER); + printf("ExampleSemTask1 wait_forever and get sem g_semId.\n"); + if (ret == LOS_OK) { + LOS_SemPost(g_semId); + return; + } + } +} + +VOID ExampleSemTask2(VOID) +{ + UINT32 ret; + printf("ExampleSemTask2 try get sem g_semId wait forever.\n"); + + /* 永久阻塞模式申请信号量 */ + ret = LOS_SemPend(g_semId, LOS_WAIT_FOREVER); + + if (ret == LOS_OK) { + printf("ExampleSemTask2 get sem g_semId and then delay 20 ticks.\n"); + } + + /* 任务休眠20 ticks */ + LOS_TaskDelay(20); + + printf("ExampleSemTask2 post sem g_semId.\n"); + /* 释放信号量 */ + LOS_SemPost(g_semId); + return; +} + +UINT32 ExampleSem(VOID) +{ + UINT32 ret; + TSK_INIT_PARAM_S task1; + TSK_INIT_PARAM_S task2; + + /* 创建信号量 */ + LOS_SemCreate(0, &g_semId); + + /* 锁任务调度 */ + LOS_TaskLock(); + + /* 创建任务1 */ + (VOID)memset_s(&task1, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); + task1.pfnTaskEntry = (TSK_ENTRY_FUNC)ExampleSemTask1; + task1.pcName = "TestTask1"; + task1.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + task1.usTaskPrio = TASK_PRIO_TEST; + ret = LOS_TaskCreate(&g_testTaskId01, &task1); + if (ret != LOS_OK) { + printf("task1 create failed .\n"); + return LOS_NOK; + } + + /* 创建任务2 */ + (VOID)memset_s(&task2, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); + task2.pfnTaskEntry = (TSK_ENTRY_FUNC)ExampleSemTask2; + task2.pcName = "TestTask2"; + task2.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + task2.usTaskPrio = (TASK_PRIO_TEST - 1); + ret = LOS_TaskCreate(&g_testTaskId02, &task2); + if (ret != LOS_OK) { + printf("task2 create failed.\n"); + return LOS_NOK; + } + + /* 解锁任务调度 */ + LOS_TaskUnlock(); + + ret = LOS_SemPost(g_semId); + + /* 任务休眠400 ticks */ + LOS_TaskDelay(400); + + /* 删除信号量 */ + LOS_SemDelete(g_semId); + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +ExampleSemTask2 try get sem g_semId wait forever. +ExampleSemTask2 get sem g_semId and then delay 20 ticks. +ExampleSemTask1 try get sem g_semId, timeout 10 ticks. + +ExampleSemTask1 timeout and try get sem g_semId wait forever. +ExampleSemTask2 post sem g_semId. +ExampleSemTask1 wait_forever and get sem g_semId. +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-14.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-14.md" new file mode 100644 index 0000000000..46c7d87b7c --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-14.md" @@ -0,0 +1,159 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section127752801718) + - [示例代码](#section321653551711) + - [结果验证](#section4366193318167) + + +用户需要了解当前系统运行的时间以及Tick与秒、毫秒之间的转换关系时,需要使用到时间管理模块的接口。 + +## 接口说明 + +OpenHarmony LiteOS-M内核的时间管理提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** 时间管理接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

时间转换

+

LOS_MS2Tick

+

毫秒转换成Tick

+

LOS_Tick2MS

+

Tick转化为毫秒

+

OsCpuTick2MS

+

Cycle数目转化为毫秒,使用2个

+

UINT32类型的数值分别表示结果数值的高、低32位。

+

OsCpuTick2US

+

Cycle数目转化为微秒,使用2个

+

UINT32类型的数值分别表示结果数值的高、低32位。

+

时间统计

+

LOS_SysClockGet

+

获取系统时钟

+

LOS_TickCountGet

+

获取自系统启动以来的Tick数

+

LOS_CyclePerTickGet

+

每个Tick多少Cycle数

+
+ +## 开发流程 + +时间管理的典型开发流程: + +1. 根据实际需求,完成板级配置适配,并配置系统主时钟频率OS\_SYS\_CLOCK(单位Hz)和LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND。OS\_SYS\_CLOCK的默认值基于硬件平台配置。 +2. 调用时钟转换/统计接口。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 时间管理不是单独的功能模块,依赖于OS\_SYS\_CLOCK和LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND两个配置选项。 +>- 系统的Tick数在关中断的情况下不进行计数,故系统Tick数不能作为准确时间使用。 +>- 配置选项维护在开发板工程的文件target\_config.h。 + +## 编程实例 + +### 实例描述 + +在下面的例子中,介绍了时间管理的基本方法,包括: + +1. 时间转换:将毫秒数转换为Tick数,或将Tick数转换为毫秒数。 +2. 时间统计:每Tick的Cycle数、自系统启动以来的Tick数和延迟后的Tick数。 + +### 示例代码 + +前提条件: + +- 使用每秒的Tick数LOSCFG\_BASE\_CORE\_TICK\_PER\_SECOND的默认值100。 +- 配好OS\_SYS\_CLOCK系统主时钟频率。 + +时间转换: + +``` +VOID Example_TransformTime(VOID) +{ + UINT32 ms; + UINT32 tick; + + tick = LOS_MS2Tick(10000); // 10000ms转换为tick + dprintf("tick = %d \n", tick); + ms = LOS_Tick2MS(100); // 100tick转换为ms + dprintf("ms = %d \n", ms); +} +``` + +时间统计和时间延迟: + +``` +VOID Example_GetTime(VOID) +{ + UINT32 cyclePerTick; + UINT64 tickCount; + + cyclePerTick = LOS_CyclePerTickGet(); + if(0 != cyclePerTick) { + dprintf("LOS_CyclePerTickGet = %d \n", cyclePerTick); + } + + tickCount = LOS_TickCountGet(); + if(0 != tickCount) { + dprintf("LOS_TickCountGet = %d \n", (UINT32)tickCount); + } + + LOS_TaskDelay(200); + tickCount = LOS_TickCountGet(); + if(0 != tickCount) { + dprintf("LOS_TickCountGet after delay = %d \n", (UINT32)tickCount); + } +} +``` + +### 结果验证 + +编译运行得到的结果为: + +时间转换: + +``` +tick = 1000 +ms = 1000 +``` + +时间统计和时间延迟: + +``` +LOS_CyclePerTickGet = 495000 +LOS_TickCountGet = 1 +LOS_TickCountGet after delay = 201 +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-16.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-16.md" new file mode 100644 index 0000000000..37753d3a43 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-16.md" @@ -0,0 +1,218 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section3741753191918) + - [示例代码](#section20760101182016) + - [结果验证](#section11244112818172) + + +## 接口说明 + +OpenHarmony LiteOS-M内核的软件定时器模块提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** 软件定时器接口 + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

创建、删除定时器

+

LOS_SwtmrCreate

+

创建定时器

+

LOS_SwtmrDelete

+

删除定时器

+

启动、停止定时器

+

LOS_SwtmrStart

+

启动定时器

+

LOS_SwtmrStop

+

停止定时器

+

获得软件定时器剩余Tick数

+

LOS_SwtmrTimeGet

+

获得软件定时器剩余Tick数

+
+ +## 开发流程 + +软件定时器的典型开发流程: + +1. 配置软件定时器。 + - 确认配置项LOSCFG\_BASE\_CORE\_SWTMR和LOSCFG\_BASE\_IPC\_QUEUE为1打开状态; + - 配置LOSCFG\_BASE\_CORE\_SWTMR\_LIMIT最大支持的软件定时器数; + - 配置OS\_SWTMR\_HANDLE\_QUEUE\_SIZE软件定时器队列最大长度; + +2. 创建定时器LOS\_SwtmrCreate。 + - 创建一个指定计时时长、指定超时处理函数、指定触发模式的软件定时器; + - 返回函数运行结果,成功或失败; + +3. 启动定时器LOS\_SwtmrStart。 +4. 获得软件定时器剩余Tick数LOS\_SwtmrTimeGet。 +5. 停止定时器LOS\_SwtmrStop。 +6. 删除定时器LOS\_SwtmrDelete。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 软件定时器的回调函数中不要做过多操作,不要使用可能引起任务挂起或者阻塞的接口或操作。 +>- 软件定时器使用了系统的一个队列和一个任务资源,软件定时器任务的优先级设定为0,且不允许修改 。 +>- 系统可配置的软件定时器资源个数是指:整个系统可使用的软件定时器资源总个数,而并非是用户可使用的软件定时器资源个数。例如:系统软件定时器多占用一个软件定时器资源数,那么用户能使用的软件定时器资源就会减少一个。 +>- 创建单次软件定时器,该定时器超时执行完回调函数后,系统会自动删除该软件定时器,并回收资源。 +>- 创建单次不自删除属性的定时器,用户需要调用定时器删除接口删除定时器,回收定时器资源,避免资源泄露。 + +## 编程实例 + +### 实例描述 + +在下面的例子中,演示如下功能: + +1. 软件定时器创建、启动、删除、暂停、重启操作。 +2. 单次软件定时器,周期软件定时器使用方法。 + +### 示例代码 + +前提条件: + +- 在los\_config.h中,将LOSCFG\_BASE\_CORE\_SWTMR配置项打开。 +- 在los\_config.h中,将LOSCFG\_BASE\_CORE\_SWTMR\_ALIGN配置项关闭,示例代码中演示代码不涉及定时器对齐。 +- 配置好LOSCFG\_BASE\_CORE\_SWTMR\_LIMIT最大支持的软件定时器数。 +- 配置好OS\_SWTMR\_HANDLE\_QUEUE\_SIZE软件定时器队列最大长度。 + +代码实现如下: + +``` +#include "los_swtmr.h" + +/* Timer count */ +UINT32 g_timerCount1 = 0; +UINT32 g_timerCount2 = 0; + +/* 任务ID */ +UINT32 g_testTaskId01; + +void Timer1_Callback(UINT32 arg) // 回调函数1 +{ + UINT32 tick_last1; + g_timerCount1++; + tick_last1=(UINT32)LOS_TickCountGet(); // 获取当前Tick数 + printf("g_timerCount1=%d, tick_last1=%d\n", g_timerCount1, tick_last1); +} + +void Timer2_Callback(UINT32 arg) // 回调函数2 +{ + UINT32 tick_last2; + tick_last2=(UINT32)LOS_TickCountGet(); + g_timerCount2++; + printf("g_timerCount2=%d tick_last2=%d\n", g_timerCount2, tick_last2); +} + +void Timer_example(void) +{ + UINT32 id1; // timer id + UINT32 id2; // timer id + UINT32 uwTick; + + /*创建单次软件定时器,Tick数为1000,启动到1000Tick数时执行回调函数1 */ + LOS_SwtmrCreate (1000, LOS_SWTMR_MODE_ONCE, Timer1_Callback, &id1, 1); + + /*创建周期性软件定时器,每100Tick数执行回调函数2 */ + LOS_SwtmrCreate(100, LOS_SWTMR_MODE_PERIOD, Timer2_Callback, &id2, 1); + printf("create Timer1 success\n"); + + LOS_SwtmrStart (id1); //启动单次软件定时器 + printf("start Timer1 sucess\n"); + + LOS_TaskDelay(200); //延时200Tick数 + LOS_SwtmrTimeGet(id1, &uwTick); // 获得单次软件定时器剩余Tick数 + printf("uwTick =%d\n", uwTick); + + LOS_SwtmrStop(id1); // 停止软件定时器 + printf("stop Timer1 sucess\n"); + + LOS_SwtmrStart(id1); + LOS_TaskDelay(1000); + + LOS_SwtmrDelete(id1); // 删除软件定时器 + printf("delete Timer1 sucess\n"); + + LOS_SwtmrStart(id2); // 启动周期性软件定时器 + printf("start Timer2\n"); + + LOS_TaskDelay(1000); + LOS_SwtmrStop(id2); + LOS_SwtmrDelete(id2); +} + +UINT32 Example_TaskEntry(VOID) +{ + UINT32 ret; + TSK_INIT_PARAM_S task1; + + /* 锁任务调度 */ + LOS_TaskLock(); + + /* 创建任务1 */ + memset(&task1, 0, sizeof(TSK_INIT_PARAM_S)); + task1.pfnTaskEntry = (TSK_ENTRY_FUNC)Timer_example; + task1.pcName = "TimerTsk"; + task1.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + task1.usTaskPrio = 5; + ret = LOS_TaskCreate(&g_testTaskId01, &task1); + if (ret != LOS_OK) { + printf("TimerTsk create failed.\n"); + return LOS_NOK; + } + + /* 解锁任务调度 */ + LOS_TaskUnlock(); + + return LOS_OK; +} +``` + +### 结果验证 + +编译烧录运行,输出结果如下: + +``` +create Timer1 success +start Timer1 sucess +uwTick =798 +stop Timer1 sucess +g_timerCount1=1, tick_last1=1208 +delete Timer1 sucess +start Timer2 +g_timerCount2=1 tick_last2=1313 +g_timerCount2=2 tick_last2=1413 +g_timerCount2=3 tick_last2=1513 +g_timerCount2=4 tick_last2=1613 +g_timerCount2=5 tick_last2=1713 +g_timerCount2=6 tick_last2=1813 +g_timerCount2=7 tick_last2=1913 +g_timerCount2=8 tick_last2=2013 +g_timerCount2=9 tick_last2=2113 +g_timerCount2=10 tick_last2=2213 +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-18.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-18.md" new file mode 100644 index 0000000000..f447cb15cb --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-18.md" @@ -0,0 +1,163 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section51413507517) + - [示例代码](#section17617965523) + - [结果验证](#section1968771515188) + + +## 接口说明 + +**表 1** 功能列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

获取系统CPU占用率

+

LOS_SysCpuUsage

+

获取当前系统CPU占用率

+

LOS_HistorySysCpuUsage

+

获取系统历史CPU占用率

+

获取任务CPU占用率

+

LOS_TaskCpuUsage

+

获取指定任务CPU占用率

+

LOS_HistoryTaskCpuUsage

+

获取指定任务历史CPU占用率

+

LOS_AllCpuUsage

+

获取所有任务CPU占用率

+

输出任务CPU占用率

+

LOS_CpupUsageMonitor

+

输出任务历史CPU占用率

+
+ +## 开发流程 + +CPU占用率的典型开发流程: + +1. 调用获取系统CPU使用率函数LOS\_SysCpuUsage。 +2. 调用获取系统历史CPU使用率函数LOS\_HistorySysCpuUsage。 +3. 调用获取指定任务CPU使用率函数LOS\_TaskCpuUsage。 + - 若任务已创建,则关中断,正常获取,恢复中断; + - 若任务未创建,则返回错误码; + +4. 调用获取指定任务历史CPU使用率函数LOS\_HistoryTaskCpuUsage。 + - 若任务已创建,则关中断,根据不同模式正常获取,恢复中断; + - 若任务未创建,则返回错误码; + +5. 调用获取所有任务CPU使用率函数LOS\_AllCpuUsage。 + - 若CPUP已初始化,则关中断,根据不同模式正常获取,恢复中断; + - 若CPUP未初始化或有非法入参,则返回错误码; + + +## 编程实例 + +### 实例描述 + +本实例实现如下功能: + +1. 创建一个用于CPUP测试的任务。 +2. 获取当前系统CPUP。 +3. 以不同模式获取历史系统CPUP。 +4. 获取创建的测试任务的CPUP。 +5. 以不同模式获取创建的测试任务的CPUP + +### 示例代码 + +前提条件: + +在target\_config.h中将LOSCFG\_BASE\_CORE\_CPUP配置项打开。 + +代码实现如下: + +``` +#include "los_task.h" +#include "los_cpup.h" +#define MODE 4 +UINT32 g_cpuTestTaskID; +VOID ExampleCpup(VOID) +{ + printf("entry cpup test example\n"); + while(1) { + usleep(100); + } +} +UINT32 ItCpupTest(VOID) +{ + UINT32 ret; + UINT32 cpupUse; + TSK_INIT_PARAM_S cpupTestTask = { 0 }; + memset(&cpupTestTask, 0, sizeof(TSK_INIT_PARAM_S)); + cpupTestTask.pfnTaskEntry = (TSK_ENTRY_FUNC)ExampleCpup; + cpupTestTask.pcName = "TestCpupTsk"; + cpupTestTask.uwStackSize = 0x800; + cpupTestTask.usTaskPrio = 5; + ret = LOS_TaskCreate(&g_cpuTestTaskID, &cpupTestTask); + if(ret != LOS_OK) { + printf("cpupTestTask create failed .\n"); + return LOS_NOK; + } + + usleep(100); + + /* 获取当前系统cpu占用率 */ + cpupUse = LOS_SysCpuUsage(); + printf("the current system cpu usage is: %u.%u\n", + cpupUse / LOS_CPUP_PRECISION_MULT, cpupUse % LOS_CPUP_PRECISION_MULT); + + cpupUse = LOS_HistorySysCpuUsage(CPU_LESS_THAN_1S); + /* 获取指定任务的cpu占用率,该测试例程中指定的任务为以上创建的cpup测试任务 */ + printf("the history system cpu usage in all time:%u.%u\n", + cpupUse / LOS_CPUP_PRECISION_MULT, cpupUse % LOS_CPUP_PRECISION_MULT); + cpupUse = LOS_TaskCpuUsage(g_cpuTestTaskID); + /* 获取指定历史任务在系统启动到现在的cpu占用率,该测试例程中指定的任务为以上创建的cpup测试任务 */ + printf("cpu usage of the cpupTestTask:\n TaskID: %d\n usage: %u.%u\n", + g_cpuTestTaskID, cpupUse / LOS_CPUP_PRECISION_MULT, cpupUse % LOS_CPUP_PRECISION_MULT); + cpupUse = LOS_HistoryTaskCpuUsage(g_cpuTestTaskID, CPU_LESS_THAN_1S); + printf("cpu usage of the cpupTestTask in all time:\n TaskID: %d\n usage: %u.%u\n", + g_cpuTestTaskID, cpupUse / LOS_CPUP_PRECISION_MULT, cpupUse % LOS_CPUP_PRECISION_MULT); + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +entry cpup test example +the current system cpu usage is : 1.5 + the history system cpu usage in all time: 3.0 + cpu usage of the cpupTestTask: TaskID:10 usage: 0.0 + cpu usage of the cpupTestTask in all time: TaskID:10 usage: 0.0 +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-22.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-22.md" new file mode 100644 index 0000000000..093017bd9f --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-22.md" @@ -0,0 +1,70 @@ +# 开发指导 + +移植LittleFS到新硬件设备上,需要申明lfs\_config: + +``` +const struct lfs_config cfg = { + // block device operations + .read = user_provided_block_device_read, + .prog = user_provided_block_device_prog, + .erase = user_provided_block_device_erase, + .sync = user_provided_block_device_sync, + + // block device configuration + .read_size = 16, + .prog_size = 16, + .block_size = 4096, + .block_count = 128, + .cache_size = 16, + .lookahead_size = 16, + .block_cycles = 500, +}; +``` + +其中.read,.prog,.erase,.sync分别对应该硬件平台上的底层的读写\\擦除\\同步等接口。 + +read\_size 每次读取的字节数,可以比物理读单元大以改善性能,这个数值决定了读缓存的大小,但值太大会带来更多的内存消耗。 + +prog\_size 每次写入的字节数,可以比物理写单元大以改善性能,这个数值决定了写缓存的大小,必须是read\_size的整数倍,但值太大会带来更多的内存消耗。 + +block\_size 每个擦除块的字节数,可以比物理擦除单元大,但此数值应尽可能小因为每个文件至少会占用一个块。必须是prog\_size的整数倍。 + +block\_count 可以被擦除的块数量,这取决于块设备的容量及擦除块的大小。 + +### 示例代码 + +代码实现如下: + +``` +int main(void) { + // mount the filesystem + int err = lfs_mount(&lfs, &cfg); + + // reformat if we can't mount the filesystem + // this should only happen on the first boot + if (err) { + lfs_format(&lfs, &cfg); + lfs_mount(&lfs, &cfg); + } + + // read current count + uint32_t boot_count = 0; + lfs_file_open(&lfs, &file, "boot_count", LFS_O_RDWR | LFS_O_CREAT); + lfs_file_read(&lfs, &file, &boot_count, sizeof(boot_count)); + + // update boot count + boot_count += 1; + lfs_file_rewind(&lfs, &file); + lfs_file_write(&lfs, &file, &boot_count, sizeof(boot_count)); + + // remember the storage is not updated until the file is closed successfully + lfs_file_close(&lfs, &file); + + // release any resources we were using + lfs_unmount(&lfs); + + // print the boot count + printf("boot_count: %d\n", boot_count); +} +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-3.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-3.md" new file mode 100644 index 0000000000..ee4e2944bc --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-3.md" @@ -0,0 +1,306 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [结果验证](#section189023104457) + + +任务创建后,内核可以执行锁任务调度,解锁任务调度,挂起,恢复,延时等操作,同时也可以设置任务优先级,获取任务优先级。 + +## 接口说明 + +OpenHarmony LiteOS-M内核的任务管理模块提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** 任务管理模块接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

创建和删除任务

+

LOS_TaskCreateOnly

+

创建任务,并使该任务进入suspend状态,不对该任务进行调度。如果需要调度,可以调用LOS_TaskResume使该任务进入ready状态。

+

LOS_TaskCreate

+

创建任务,并使该任务进入ready状态,如果就绪队列中没有更高优先级的任务,则运行该任务。

+

LOS_TaskDelete

+

删除指定的任务。

+

控制任务状态

+

LOS_TaskResume

+

恢复挂起的任务,使该任务进入ready状态。

+

LOS_TaskSuspend

+

挂起指定的任务,然后切换任务

+

LOS_TaskDelay

+

任务延时等待,释放CPU,等待时间到期后该任务会重新进入ready状态。传入参数为Tick数目。

+

LOS_Msleep

+

传入参数为毫秒数,转换为Tick数目,调用LOS_TaskDelay。

+

LOS_TaskYield

+

当前任务时间片设置为0,释放CPU,触发调度运行就绪任务队列中优先级最高的任务。

+

控制任务调度

+

LOS_TaskLock

+

锁任务调度,但任务仍可被中断打断。

+

LOS_TaskUnlock

+

解锁任务调度。

+

LOS_Schedule

+

触发任务调度。

+

控制任务优先级

+

LOS_CurTaskPriSet

+

设置当前任务的优先级。

+

LOS_TaskPriSet

+

设置指定任务的优先级。

+

LOS_TaskPriGet

+

获取指定任务的优先级。

+

获取任务信息

+

LOS_CurTaskIDGet

+

获取当前任务的ID。

+

LOS_NextTaskIDGet

+

获取任务就绪队列中优先级最高的任务的ID。

+

LOS_NewTaskIDGet

+

等同LOS_NextTaskIDGet。

+

LOS_CurTaskNameGet

+

获取当前任务的名称。

+

LOS_TaskNameGet

+

获取指定任务的名称。

+

LOS_TaskStatusGet

+

获取指定任务的状态。

+

LOS_TaskInfoGet

+

获取指定任务的信息,包括任务状态、优先级、任务栈大小、栈顶指针SP、任务入口函数、已使用的任务栈大小等。

+

LOS_TaskIsRunning

+

获取任务模块是否已经开始调度运行。

+

任务信息维测

+

LOS_TaskSwitchInfoGet

+

获取任务切换信息,需要开启宏LOSCFG_BASE_CORE_EXC_TSK_SWITCH。

+
+ +## 开发流程 + +以创建任务为例,讲解开发流程。 + +1. 锁任务调度LOS\_TaskLock,防止高优先级任务调度。 +2. 创建任务LOS\_TaskCreate。 +3. 解锁任务LOS\_TaskUnlock,让任务按照优先级进行调度。 +4. 延时任务LOS\_TaskDelay,任务延时等待。 +5. 挂起指定的任务LOS\_TaskSuspend,任务挂起等待恢复操作。 +6. 恢复挂起的任务LOS\_TaskResume。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 执行Idle任务时,会对待回收链表中的任务控制块和任务栈进行回收。 +>- 任务名是指针,并没有分配空间,在设置任务名时,禁止将局部变量的地址赋值给任务名指针。 +>- 任务栈的大小按8字节大小对齐。确定任务栈大小的原则是,够用就行,多了浪费,少了任务栈溢出。 +>- 挂起当前任务时,如果已经锁任务调度,则无法挂起。 +>- Idle任务及软件定时器任务不能被挂起或者删除。 +>- 在中断处理函数中或者在锁任务的情况下,执行LOS\_TaskDelay会失败。 +>- 锁任务调度,并不关中断,因此任务仍可被中断打断。 +>- 锁任务调度必须和解锁任务调度配合使用。 +>- 设置任务优先级时可能会发生任务调度。 +>- 可配置的系统最大任务数是指:整个系统的任务总个数,而非用户能使用的任务个数。例如:系统软件定时器多占用一个任务资源,那么用户能使用的任务资源就会减少一个。 +>- LOS\_CurTaskPriSet和LOS\_TaskPriSet接口不能在中断中使用,也不能用于修改软件定时器任务的优先级。 +>- LOS\_TaskPriGet接口传入的task ID对应的任务未创建或者超过最大任务数,统一返回-1。 +>- 在删除任务时要保证任务申请的资源(如互斥锁、信号量等)已被释放。 + +## 编程实例 + +本实例介绍基本的任务操作方法,包含2个不同优先级任务的创建、任务延时、任务锁与解锁调度、挂起和恢复等操作,阐述任务优先级调度的机制以及各接口的应用。示例代码如下: + +``` +UINT32 g_taskHiId; +UINT32 g_taskLoId; +#define TSK_PRIOR_HI 4 +#define TSK_PRIOR_LO 5 + +UINT32 Example_TaskHi(VOID) +{ + UINT32 ret; + + printf("Enter TaskHi Handler.\n"); + + /* 延时100个Ticks,延时后该任务会挂起,执行剩余任务中最高优先级的任务(TaskLo任务) */ + ret = LOS_TaskDelay(100); + if (ret != LOS_OK) { + printf("Delay TaskHi Failed.\n"); + return LOS_NOK; + } + + /* 100个Ticks时间到了后,该任务恢复,继续执行 */ + printf("TaskHi LOS_TaskDelay Done.\n"); + + /* 挂起自身任务 */ + ret = LOS_TaskSuspend(g_taskHiId); + if (ret != LOS_OK) { + printf("Suspend TaskHi Failed.\n"); + return LOS_NOK; + } + printf("TaskHi LOS_TaskResume Success.\n"); + return ret; +} + +/* 低优先级任务入口函数 */ +UINT32 Example_TaskLo(VOID) +{ + UINT32 ret; + + printf("Enter TaskLo Handler.\n"); + + /* 延时100个Ticks,延时后该任务会挂起,执行剩余任务中最高优先级的任务 */ + ret = LOS_TaskDelay(100); + if (ret != LOS_OK) { + printf("Delay TaskLo Failed.\n"); + return LOS_NOK; + } + + printf("TaskHi LOS_TaskSuspend Success.\n"); + + /* 恢复被挂起的任务g_taskHiId */ + ret = LOS_TaskResume(g_taskHiId); + if (ret != LOS_OK) { + printf("Resume TaskHi Failed.\n"); + return LOS_NOK; + } + return ret; +} + +/* 任务测试入口函数,创建两个不同优先级的任务 */ +UINT32 Example_TskCaseEntry(VOID) +{ + UINT32 ret; + TSK_INIT_PARAM_S initParam; + + /* 锁任务调度,防止新创建的任务比本任务高而发生调度 */ + LOS_TaskLock(); + + printf("LOS_TaskLock() Success!\n"); + + initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskHi; + initParam.usTaskPrio = TSK_PRIOR_HI; + initParam.pcName = "TaskHi"; + initParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + + /* 创建高优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */ + ret = LOS_TaskCreate(&g_taskHiId, &initParam); + if (ret != LOS_OK) { + LOS_TaskUnlock(); + + printf("Example_TaskHi create Failed!\n"); + return LOS_NOK; + } + + printf("Example_TaskHi create Success!\n"); + + initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskLo; + initParam.usTaskPrio = TSK_PRIOR_LO; + initParam.pcName = "TaskLo"; + initParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + + /* 创建低优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */ + ret = LOS_TaskCreate(&g_taskLoId, &initParam); + if (ret != LOS_OK) { + LOS_TaskUnlock(); + printf("Example_TaskLo create Failed!\n"); + return LOS_NOK; + } + + printf("Example_TaskLo create Success!\n"); + + /* 解锁任务调度,此时会发生任务调度,执行就绪队列中最高优先级任务 */ + LOS_TaskUnlock(); + + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +LOS_TaskLock() Success! +Example_TaskHi create Success! +Example_TaskLo create Success! +Enter TaskHi Handler. +Enter TaskLo Handler. +TaskHi LOS_TaskDelay Done. +TaskHi LOS_TaskSuspend Success. +TaskHi LOS_TaskResume Success. +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-6.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-6.md" new file mode 100644 index 0000000000..6869a792fd --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-6.md" @@ -0,0 +1,194 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section460018317164) + - [实例描述](#section896412438910) + - [示例代码](#section149077554912) + - [结果验证](#section4461439172017) + + +## 接口说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

事件检测

+

LOS_EventPoll

+

根据eventID,eventMask(事件掩码),mode(事件读取模式),检查用户期待的事件是否发生。

+
须知:

当mode含LOS_WAITMODE_CLR,且用户期待的事件发生时,此时eventID中满足要求的事件会被清零,这种情况下eventID既是入参也是出参。其他情况eventID只作为入参。

+
+

初始化

+

LOS_EventInit

+

事件控制块初始化。

+

事件读

+

LOS_EventRead

+

读事件(等待事件),任务会根据timeOut(单位:tick)进行阻塞等待;

+

未读取到事件时,返回值为0;

+

正常读取到事件时,返回正值(事件发生的集合);

+

其他情况返回特定错误码。

+

事件写

+

LOS_EventWrite

+

写一个特定的事件到事件控制块。

+

事件清除

+

LOS_EventClear

+

根据events掩码,清除事件控制块中的事件。

+

事件销毁

+

LOS_EventDestroy

+

事件控制块销毁。

+
+ +## 开发流程 + +事件的典型开发流程: + +1. 初始化事件控制块 +2. 阻塞读事件控制块 +3. 写入相关事件 +4. 阻塞任务被唤醒,读取事件并检查是否满足要求 +5. 处理事件控制块 +6. 事件控制块销毁 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 进行事件读写操作时,事件的第25位为保留位,不可以进行位设置。 +>- 对同一事件反复写入,算作一次写入。 + +## 编程实例 + +### 实例描述 + +示例中,任务Example\_TaskEntry创建一个任务Example\_Event,Example\_Event读事件阻塞,Example\_TaskEntry向该任务写事件。可以通过示例日志中打印的先后顺序理解事件操作时伴随的任务切换。 + +1. 在任务Example\_TaskEntry创建任务Example\_Event,其中任务Example\_Event优先级高于Example\_TaskEntry。 +2. 在任务Example\_Event中读事件0x00000001,阻塞,发生任务切换,执行任务Example\_TaskEntry。 +3. 在任务Example\_TaskEntry向任务Example\_Event写事件0x00000001,发生任务切换,执行任务Example\_Event。 +4. Example\_Event得以执行,直到任务结束。 +5. Example\_TaskEntry得以执行,直到任务结束。 + +### 示例代码 + +示例代码如下: + +``` +#include "los_event.h" +#include "los_task.h" +#include "securec.h" + +/* 任务ID */ +UINT32 g_testTaskId; + +/* 事件控制结构体 */ +EVENT_CB_S g_exampleEvent; + +/* 等待的事件类型 */ +#define EVENT_WAIT 0x00000001 + +/* 用例任务入口函数 */ +VOID Example_Event(VOID) +{ + UINT32 ret; + UINT32 event; + + /* 超时等待方式读事件,超时时间为100 ticks, 若100 ticks后未读取到指定事件,读事件超时,任务直接唤醒 */ + printf("Example_Event wait event 0x%x \n", EVENT_WAIT); + + event = LOS_EventRead(&g_exampleEvent, EVENT_WAIT, LOS_WAITMODE_AND, 100); + if (event == EVENT_WAIT) { + printf("Example_Event,read event :0x%x\n", event); + } else { + printf("Example_Event,read event timeout\n"); + } +} + +UINT32 Example_TaskEntry(VOID) +{ + UINT32 ret; + TSK_INIT_PARAM_S task1; + + /* 事件初始化 */ + ret = LOS_EventInit(&g_exampleEvent); + if (ret != LOS_OK) { + printf("init event failed .\n"); + return -1; + } + + /* 创建任务 */ + (VOID)memset_s(&task1, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S)); + task1.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_Event; + task1.pcName = "EventTsk1"; + task1.uwStackSize = OS_TSK_DEFAULT_STACK_SIZE; + task1.usTaskPrio = 5; + ret = LOS_TaskCreate(&g_testTaskId, &task1); + if (ret != LOS_OK) { + printf("task create failed.\n"); + return LOS_NOK; + } + + /* 写g_testTaskId 等待事件 */ + printf("Example_TaskEntry write event.\n"); + + ret = LOS_EventWrite(&g_exampleEvent, EVENT_WAIT); + if (ret != LOS_OK) { + printf("event write failed.\n"); + return LOS_NOK; + } + + /* 清标志位 */ + printf("EventMask:%d\n", g_exampleEvent.uwEventID); + LOS_EventClear(&g_exampleEvent, ~g_exampleEvent.uwEventID); + printf("EventMask:%d\n", g_exampleEvent.uwEventID); + + /* 删除任务 */ + ret = LOS_TaskDelete(g_testTaskId); + if (ret != LOS_OK) { + printf("task delete failed.\n"); + return LOS_NOK; + } + + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +Example_Event wait event 0x1 +Example_TaskEntry write event. +Example_Event,read event :0x1 +EventMask:1 +EventMask:0 +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-8.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-8.md" new file mode 100644 index 0000000000..a194bc9e58 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274-8.md" @@ -0,0 +1,205 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section783435801510) +- [编程实例](#section1426719434114) + - [实例描述](#section896412438910) + - [示例代码](#section149077554912) + - [结果验证](#section2059413981311) + + +## 接口说明 + +**表 1** 互斥锁模块接口 + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

互斥锁的创建和删除

+

LOS_MuxCreate

+

创建互斥锁

+

LOS_MuxDelete

+

删除指定的互斥锁

+

互斥锁的申请和释放

+

LOS_MuxPend

+

申请指定的互斥锁

+

LOS_MuxPost

+

释放指定的互斥锁

+
+ +## 开发流程 + +互斥锁典型场景的开发流程: + +1. 创建互斥锁LOS\_MuxCreate。 +2. 申请互斥锁LOS\_MuxPend。 + + 申请模式有三种:无阻塞模式、永久阻塞模式、定时阻塞模式。 + + - 无阻塞模式:任务需要申请互斥锁,若该互斥锁当前没有任务持有,或者持有该互斥锁的任务和申请该互斥锁的任务为同一个任务,则申请成功。 + - 永久阻塞模式:任务需要申请互斥锁,若该互斥锁当前没有被占用,则申请成功。否则,该任务进入阻塞态,系统切换到就绪任务中优先级高者继续执行。任务进入阻塞态后,直到有其他任务释放该互斥锁,阻塞任务才会重新得以执行。 + - 定时阻塞模式:任务需要申请互斥锁,若该互斥锁当前没有被占用,则申请成功。否则该任务进入阻塞态,系统切换到就绪任务中优先级高者继续执行。任务进入阻塞态后,指定时间超时前有其他任务释放该互斥锁,或者用户指定时间超时后,阻塞任务才会重新得以执行。 + +3. 释放互斥锁LOS\_MuxPost。 + - 如果有任务阻塞于指定互斥锁,则唤醒被阻塞任务中优先级高的,该任务进入就绪态,并进行任务调度; + - 如果没有任务阻塞于指定互斥锁,则互斥锁释放成功。 + +4. 删除互斥锁LOS\_MuxDelete。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 两个任务不能对同一把互斥锁加锁。如果某任务对已被持有的互斥锁加锁,则该任务会被挂起,直到持有该锁的任务对互斥锁解锁,才能执行对这把互斥锁的加锁操作。 +>- 互斥锁不能在中断服务程序中使用。 +>- LiteOS-M内核作为实时操作系统需要保证任务调度的实时性,尽量避免任务的长时间阻塞,因此在获得互斥锁之后,应该尽快释放互斥锁。 +>- 持有互斥锁的过程中,不得再调用LOS\_TaskPriSet等接口更改持有互斥锁任务的优先级。 + +## 编程实例 + +### 实例描述 + +本实例实现如下流程。 + +1. 任务Example\_TaskEntry创建一个互斥锁,锁任务调度,创建两个任务Example\_MutexTask1、Example\_MutexTask2。Example\_MutexTask2优先级高于Example\_MutexTask1,解锁任务调度。 +2. Example\_MutexTask2被调度,以永久阻塞模式申请互斥锁,并成功获取到该互斥锁,然后任务休眠100Tick,Example\_MutexTask2挂起,Example\_MutexTask1被唤醒。 +3. Example\_MutexTask1以定时阻塞模式申请互斥锁,等待时间为10Tick,因互斥锁仍被Example\_MutexTask2持有,Example\_MutexTask1挂起。10Tick超时时间到达后,Example\_MutexTask1被唤醒,以永久阻塞模式申请互斥锁,因互斥锁仍被Example\_MutexTask2持有,Example\_MutexTask1挂起。 +4. 100Tick休眠时间到达后,Example\_MutexTask2被唤醒, 释放互斥锁,唤醒Example\_MutexTask1。Example\_MutexTask1成功获取到互斥锁后,释放,删除互斥锁。 + +### 示例代码 + +示例代码如下: + +``` +#include +#include "los_mux.h" + +/* 互斥锁句柄id */ +UINT32 g_testMux; +/* 任务ID */ +UINT32 g_testTaskId01; +UINT32 g_testTaskId02; + +VOID Example_MutexTask1(VOID) +{ + UINT32 ret; + + printf("task1 try to get mutex, wait 10 ticks.\n"); + /* 申请互斥锁 */ + ret = LOS_MuxPend(g_testMux, 10); + + if (ret == LOS_OK) { + printf("task1 get mutex g_testMux.\n"); + /* 释放互斥锁 */ + LOS_MuxPost(g_testMux); + return; + } + if (ret == LOS_ERRNO_MUX_TIMEOUT ) { + printf("task1 timeout and try to get mutex, wait forever.\n"); + /* 申请互斥锁 */ + ret = LOS_MuxPend(g_testMux, LOS_WAIT_FOREVER); + if (ret == LOS_OK) { + printf("task1 wait forever, get mutex g_testMux.\n"); + /* 释放互斥锁 */ + LOS_MuxPost(g_testMux); + /* 删除互斥锁 */ + LOS_MuxDelete(g_testMux); + printf("task1 post and delete mutex g_testMux.\n"); + return; + } + } + return; +} + +VOID Example_MutexTask2(VOID) +{ + printf("task2 try to get mutex, wait forever.\n"); + /* 申请互斥锁 */ + (VOID)LOS_MuxPend(g_testMux, LOS_WAIT_FOREVER); + + printf("task2 get mutex g_testMux and suspend 100 ticks.\n"); + + /* 任务休眠100Ticks */ + LOS_TaskDelay(100); + + printf("task2 resumed and post the g_testMux\n"); + /* 释放互斥锁 */ + LOS_MuxPost(g_testMux); + return; +} + +UINT32 Example_TaskEntry(VOID) +{ + UINT32 ret; + TSK_INIT_PARAM_S task1; + TSK_INIT_PARAM_S task2; + + /* 创建互斥锁 */ + LOS_MuxCreate(&g_testMux); + + /* 锁任务调度 */ + LOS_TaskLock(); + + /* 创建任务1 */ + memset(&task1, 0, sizeof(TSK_INIT_PARAM_S)); + task1.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_MutexTask1; + task1.pcName = "MutexTsk1"; + task1.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + task1.usTaskPrio = 5; + ret = LOS_TaskCreate(&g_testTaskId01, &task1); + if (ret != LOS_OK) { + printf("task1 create failed.\n"); + return LOS_NOK; + } + + /* 创建任务2 */ + memset(&task2, 0, sizeof(TSK_INIT_PARAM_S)); + task2.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_MutexTask2; + task2.pcName = "MutexTsk2"; + task2.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE; + task2.usTaskPrio = 4; + ret = LOS_TaskCreate(&g_testTaskId02, &task2); + if (ret != LOS_OK) { + printf("task2 create failed.\n"); + return LOS_NOK; + } + + /* 解锁任务调度 */ + LOS_TaskUnlock(); + + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +task2 try to get mutex, wait forever. +task2 get mutex g_testMux and suspend 100 ticks. +task1 try to get mutex, wait 10 ticks. +task1 timeout and try to get mutex, wait forever. +task2 resumed and post the g_testMux +task1 wait forever, get mutex g_testMux. +task1 post and delete mutex g_testMux. +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274.md" "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274.md" new file mode 100644 index 0000000000..c97dfdd3f2 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\200\345\217\221\346\214\207\345\257\274.md" @@ -0,0 +1,130 @@ +# 开发指导 + +- [接口说明](#section158501652121514) +- [开发流程](#section11841123033618) +- [编程实例](#section460018317164) + - [结果验证](#section1048572415182) + + +当产生中断请求时,CPU暂停当前的任务,转而去响应外设请求。用户可以根据需要注册对应的中断处理程序,指定CPU响应中断请求时所执行的具体操作。 + +## 接口说明 + +OpenHarmony LiteOS-M内核的中断模块提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** 中断模块接口 + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

创建、删除中断

+

HalHwiCreate

+

中断创建,注册中断号、中断触发模式、中断优先级、中断处理程序。中断被触发时,会调用该中断处理程序。

+

HalHwiDelete

+

根据指定的中断号,删除中断。

+

打开、关闭中断

+

LOS_IntUnLock

+

开中断,使能当前处理器所有中断响应。

+

LOS_IntLock

+

关中断,关闭当前处理器所有中断响应。

+

LOS_IntRestore

+

恢复到使用LOS_IntLock、LOS_IntUnLock操作之前的中断状态。

+
+ +## 开发流程 + +1. 调用中断创建接口HalHwiCreate创建中断。 +2. 调用TestHwiTrigger接口触发指定中断(该接口在测试套中定义,通过写中断控制器的相关寄存器模拟外部中断,一般的外设设备,不需要执行这一步)。 +3. 调用HalHwiDelete接口删除指定中断,此接口根据实际情况使用,判断是否需要删除中断。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 根据具体硬件,配置支持的最大中断数及可设置的中断优先级个数。 +>- 中断处理程序耗时不能过长,否则会影响CPU对中断的及时响应。 +>- 中断响应过程中不能直接、间接执行引起调度的LOS\_Schedule等函数。 +>- 中断恢复LOS\_IntRestore\(\)的入参必须是与之对应的LOS\_IntLock\(\)的返回值(即关中断之前的CPSR值)。Cortex-M系列处理器中0-15中断为内部使用,因此不建议用户去申请和创建。 + +## 编程实例 + +本实例实现如下功能: + +1. 创建中断。 +2. 触发中断。 +3. 删除中断。 + +代码实现如下,演示如何创建中断和删除中断,当指定的中断号HWI\_NUM\_TEST产生中断时,会调用中断处理函数: + +``` +#include "los_interrupt.h" + +/*创建中断*/ +#define HWI_NUM_TEST 7 + +STATIC VOID HwiUsrIrq(VOID) +{ + printf("in the func HwiUsrIrq \n"); +} + +static UINT32 Example_Interrupt(VOID) +{ + UINT32 ret; + HWI_PRIOR_T hwiPrio = 3; + HWI_MODE_T mode = 0; + HWI_ARG_T arg = 0; + + /*创建中断*/ + ret = HalHwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiUsrIrq, arg); + if(ret == LOS_OK){ + printf("Hwi create success!\n"); + } else { + printf("Hwi create failed!\n"); + return LOS_NOK; + } + + /* 延时50个Ticks, 当有硬件中断发生时,会调用函数HwiUsrIrq*/ + LOS_TaskDelay(50); + + /*删除中断*/ + ret = HalHwiDelete(HWI_NUM_TEST); + if(ret == LOS_OK){ + printf("Hwi delete success!\n"); + } else { + printf("Hwi delete failed!\n"); + return LOS_NOK; + } + return LOS_OK; +} +``` + +### 结果验证 + +编译运行得到的结果为: + +``` +Hwi create success! +Hwi delete success!. +``` + diff --git "a/zh-cn/device-dev/kernel/\345\274\202\345\270\270\350\260\203\346\265\213.md" "b/zh-cn/device-dev/kernel/\345\274\202\345\270\270\350\260\203\346\265\213.md" new file mode 100644 index 0000000000..8e9a050102 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\274\202\345\270\270\350\260\203\346\265\213.md" @@ -0,0 +1,329 @@ +# 异常调测 + +- [基本概念](#section2741911123412) +- [运行机制](#section16618124317346) +- [接口说明](#section16111931351) +- [使用指导](#section16317163520350) + - [开发流程](#section13457839133618) + - [定位流程](#section197332323815) + + +## 基本概念 + +OpenHarmony LiteOS-M提供异常接管调测手段,帮助开发者定位分析问题。异常接管是操作系统对运行期间发生的异常情况进行处理的一系列动作,例如打印异常发生时异常类型、发生异常时的系统状态、当前函数的调用栈信息、CPU现场信息、任务调用堆栈等信息。 + +## 运行机制 + +栈帧用于保存函数调用过程中的函数参数、变量、返回值等信息。调用函数时,会创建子函数的栈帧,同时将函数入参、局部变量、寄存器入栈。栈帧从高地址向低地址生长。以ARM32 CPU架构为例,每个栈帧中都会保存PC、LR、SP和FP寄存器的历史值。LR链接寄存器(Link Register)指向函数的返回地址,FP帧指针寄存器(Frame Point)指向当前函数的父函数的栈帧起始地址。利用FP寄存器可以得到父函数的栈帧,从栈帧中获取父函数的FP,就可以得到祖父函数的栈帧,以此类推,可以追溯程序调用栈,得到函数间的调用关系。 + +当系统发生异常时,系统打印异常函数的栈帧中保存的寄存器内容,以及父函数、祖父函数的栈帧中的LR链接寄存器、FP帧指针寄存器内容,用户就可以据此追溯函数间的调用关系,定位异常原因。 + +堆栈分析原理如下图所示,实际堆栈信息根据不同CPU架构有所差异,此处仅做示意。 + +**图 1** 堆栈分析原理示意图 +![](figures/堆栈分析原理示意图.png "堆栈分析原理示意图") + +图中不同颜色的寄存器表示不同的函数。可以看到函数调用过程中,寄存器的保存。通过FP寄存器,栈回溯到异常函数的父函数,继续按照规律对栈进行解析,推出函数调用关系,方便用户定位问题。 + +## 接口说明 + +OpenHarmony LiteOS-M内核的回溯栈模块提供下面几种功能,接口详细信息可以查看API参考。 + +**表 1** 回溯栈模块接口 + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

回溯栈接口

+

LOS_BackTrace

+

打印调用处的函数调用栈关系。

+

LOS_RecordLR

+

在无法打印的场景,用该接口获取调用处的函数调用栈关系。

+
+ +## 使用指导 + +### 开发流程 + +开启异常调测的典型流程如下: + +1. 配置异常接管相关宏。 + + 需要在target\_config.h头文件中修改配置: + + + + + + + + + + + + + + + + +

配置项

+

含义

+

设置值

+

LOSCFG_BACKTRACE_DEPTH

+

函数调用栈深度,默认15层

+

15

+

LOSCFG_BACKTRACE_TYPE

+

回溯栈类型:

+

0:表示关闭该功能;

+

1:表示支持Cortex-m系列硬件的函数调用栈解析;

+

2:表示用于Risc-v系列硬件的函数调用栈解析;

+

根据工具链类型设置1或2

+
+ + +1. 使用示例中有问题的代码,编译、运行工程,在串口终端中查看异常信息输出。示例代码模拟异常代码,实际产品开发时使用异常调测机制定位异常问题。 + + 本示例演示异常输出,包含1个任务,该任务入口函数模拟若干函数调用,最终调用一个模拟异常的函数。代码实现如下: + + ``` + #include + #include "los_config.h" + #include "los_interrupt.h" + #include "los_task.h" + + UINT32 g_taskExcId; + #define TSK_PRIOR 4 + + /* 模拟异常函数 */ + + UINT32 Get_Result_Exception_0(UINT16 dividend){ + UINT32 divisor = 0; + UINT32 result = dividend / divisor; + return result; + } + + UINT32 Get_Result_Exception_1(UINT16 dividend){ + return Get_Result_Exception_0(dividend); + } + + UINT32 Get_Result_Exception_2(UINT16 dividend){ + return Get_Result_Exception_1(dividend); + } + + UINT32 Example_Exc(VOID) + { + UINT32 ret; + + printf("Enter Example_Exc Handler.\r\n"); + + /* 模拟函数调用 */ + ret = Get_Result_Exception_2(TSK_PRIOR); + printf("Divided result =%u.\r\n", ret); + + printf("Exit Example_Exc Handler.\r\n"); + return ret; + } + + + /* 任务测试入口函数,创建一个会发生异常的任务 */ + UINT32 Example_Exc_Entry(VOID) + { + UINT32 ret; + TSK_INIT_PARAM_S initParam; + + /* 锁任务调度,防止新创建的任务比本任务高而发生调度 */ + LOS_TaskLock(); + + printf("LOS_TaskLock() Success!\r\n"); + + initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_Exc; + initParam.usTaskPrio = TSK_PRIOR; + initParam.pcName = "Example_Exc"; + initParam.uwStackSize = LOSCFG_SECURE_STACK_DEFAULT_SIZE; + /* 创建高优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */ + ret = LOS_TaskCreate(&g_taskExcId, &initParam); + if (ret != LOS_OK) { + LOS_TaskUnlock(); + + printf("Example_Exc create Failed!\r\n"); + return LOS_NOK; + } + + printf("Example_Exc create Success!\r\n"); + + /* 解锁任务调度,此时会发生任务调度,执行就绪队列中最高优先级任务 */ + LOS_TaskUnlock(); + + return LOS_OK; + } + ``` + + +1. 上述代码串口终端输出异常信息如下: + + ``` + entering kernel init... + LOS_TaskLock() Success! + Example_Exc create Success! + Entering scheduler + Enter Example_Exc Handler. + *************Exception Information************** + Type = 10 + ThrdPid = 4 + Phase = exc in task + FaultAddr = 0xabababab + Current task info: + Task name = Example_Exc + Task ID = 4 + Task SP = 0x200051ac + Task ST = 0x20004ff0 + Task SS = 0x200 + Exception reg dump: + PC = 0x80037da + LR = 0x80037fe + SP = 0x20005190 + R0 = 0x4 + R1 = 0x40 + R2 = 0x4 + R3 = 0x0 + R4 = 0x4040404 + R5 = 0x5050505 + R6 = 0x6060606 + R7 = 0x20005190 + R8 = 0x8080808 + R9 = 0x9090909 + R10 = 0x10101010 + R11 = 0x11111111 + R12 = 0x12121212 + PriMask = 0x0 + xPSR = 0x41000000 + ----- backtrace start ----- + backtrace 0 -- lr = 0x800381a + backtrace 1 -- lr = 0x8003836 + backtrace 2 -- lr = 0x8005a4e + backtrace 3 -- lr = 0x8000494 + backtrace 4 -- lr = 0x8008620 + backtrace 5 -- lr = 0x800282c + backtrace 6 -- lr = 0x80008a0 + backtrace 7 -- lr = 0x80099f8 + backtrace 8 -- lr = 0x800a01a + backtrace 9 -- lr = 0x800282c + backtrace 10 -- lr = 0x80008a0 + backtrace 11 -- lr = 0x80099f8 + backtrace 12 -- lr = 0x8009bf0 + backtrace 13 -- lr = 0x8009c52 + backtrace 14 -- lr = 0x80099aa + ----- backtrace end ----- + + TID Priority Status StackSize WaterLine StackPoint TopOfStack EventMask SemID name + --- -------- -------- --------- ---------- ---------- ---------- --------- ----- ---- + 0 0 Pend 0x2d0 0x104 0x200029bc 0x200027f0 0x0 0xffff Swt_Task + 1 31 Ready 0x500 0x44 0x20002f84 0x20002ac8 0x0 0xffff IdleCore000 + 2 6 Ready 0x1000 0x44 0x20003f94 0x20002fd8 0x0 0xffff TaskSampleEntry1 + 3 7 Ready 0x1000 0x44 0x20004f9c 0x20003fe0 0x0 0xffff TaskSampleEntry2 + 4 4 Running 0x200 0xec 0x200051ac 0x20004ff0 0x0 0xffff Example_Exc + + OS exception NVIC dump: + interrupt enable register, base address: 0xe000e100, size: 0x20 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + interrupt pending register, base address: 0xe000e200, size: 0x20 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + interrupt active register, base address: 0xe000e300, size: 0x20 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + interrupt priority register, base address: 0xe000e400, size: 0xf0 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 + interrupt exception register, base address: 0xe000ed18, size: 0xc + 0x0 0x0 0xf0f00000 + interrupt shcsr register, base address: 0xe000ed24, size: 0x4 + 0x70008 + interrupt control register, base address: 0xe000ed04, size: 0x4 + 0x400f806 + + memory pools check: + system heap memcheck over, all passed! + memory pool check end! + ``` + + +### 定位流程 + +异常接管一般的定位步骤如下: + +1. 打开编译后生成的镜像反汇编(asm)文件。如果默认没有生成,可以使用objdump工具生成,命令为: + + ``` + arm-none-eabi-objdump -S -l XXX.elf + ``` + + +1. 搜索PC指针(指向当前正在执行的指令)在asm中的位置,找到发生异常的函数。 + + PC地址指向发生异常时程序正在执行的指令。在当前执行的二进制文件对应的asm文件中,查找PC值0x80037da,找到当前CPU正在执行的指令行,反汇编如下所示: + + ``` + UINT32 Get_Result_Exception_0(UINT16 dividend){ + 80037c8: b480 push {r7} + 80037ca: b085 sub sp, #20 + 80037cc: af00 add r7, sp, #0 + 80037ce: 4603 mov r3, r0 + 80037d0: 80fb strh r3, [r7, #6] + kernel_liteos_m\targets\cortex-m7_nucleo_f767zi_gcc/Core/Src/exc_example.c:10 + UINT32 divisor = 0; + 80037d2: 2300 movs r3, #0 + 80037d4: 60fb str r3, [r7, #12] + kernel_liteos_m\targets\cortex-m7_nucleo_f767zi_gcc/Core/Src/exc_example.c:11 + UINT32 result = dividend / divisor; + 80037d6: 88fa ldrh r2, [r7, #6] + 80037d8: 68fb ldr r3, [r7, #12] + 80037da: fbb2 f3f3 udiv r3, r2, r3 + 80037de: 60bb str r3, [r7, #8] + ``` + + +1. 可以看到: + 1. 异常时CPU正在执行的指令是udiv r3, r2, r3,其中r3取值为0,导致发生除零异常。 + 2. 异常发生在函数Get\_Result\_Exception\_0中。 + +2. 根据LR值查找异常函数的父函数。 + + 包含LR值0x80037fe的反汇编如下所示: + + ``` + 080037ec : + Get_Result_Exception_1(): + kernel_liteos_m\targets\cortex-m7_nucleo_f767zi_gcc/Core/Src/exc_example.c:15 + UINT32 Get_Result_Exception_1(UINT16 dividend){ + 80037ec: b580 push {r7, lr} + 80037ee: b082 sub sp, #8 + 80037f0: af00 add r7, sp, #0 + 80037f2: 4603 mov r3, r0 + 80037f4: 80fb strh r3, [r7, #6] + kernel_liteos_m\targets\cortex-m7_nucleo_f767zi_gcc/Core/Src/exc_example.c:16 + return Get_Result_Exception_0(dividend); + 80037f6: 88fb ldrh r3, [r7, #6] + 80037f8: 4618 mov r0, r3 + 80037fa: f7ff ffe5 bl 80037c8 + 80037fe: 4603 mov r3, r0 + ``` + + +1. LR值80037fe上一行是bl 80037c8 ,此处调用了异常函数,调用异常函数的父函数为Get\_Result\_Exception\_1\(\)。 +2. 重复步骤3,解析异常信息中backtrace start至backtrace end之间的LR值,得到调用产生异常的函数调用栈关系,找到异常原因。 + diff --git "a/zh-cn/device-dev/kernel/\345\277\253\351\200\237\345\205\245\351\227\250.md" "b/zh-cn/device-dev/kernel/\345\277\253\351\200\237\345\205\245\351\227\250.md" new file mode 100644 index 0000000000..53ddc75318 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\345\277\253\351\200\237\345\205\245\351\227\250.md" @@ -0,0 +1,47 @@ +# 快速入门 + +- [搭建开发环境](#section157851447151716) +- [获取OpenHarmony源码](#section381985201816) +- [获取示例工程源码](#section204717216181) +- [编译运行](#section9772514181917) + +OpenHarmony LiteOS-M内核的编译构建系统是一个基于gn和ninja的组件化构建系统,支持按组件配置、裁剪和拼装,按需构建出定制化的产品。编译构建系统的详细信息可以参考[编译构建概述](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E6%A6%82%E8%BF%B0.md)。本文主要介绍如何基于gn和ninja编译LiteOS-M工程。 + +## 搭建开发环境 + +在搭建各个开发板环境前,需要完成OpenHarmony系统基础环境搭建。系统基础环境主要是指OpenHarmony的编译环境和开发环境,详细介绍请参考官方站点[搭建系统基础环境](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/%E6%90%AD%E5%BB%BA%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83.md)。开发者需要根据环境搭建文档,完成下述软件的安装:Python3.7+、gn、ninja、hb。对于LiteOS-M内核,还需要安装ARM GCC编译工具链。 + +## 获取OpenHarmony源码 + +开发者需要在Linux服务器上通过Git克隆获取OpenHarmony最新源码,详细的源码获取方式,请见[源码获取](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/get-code/%E6%BA%90%E7%A0%81%E8%8E%B7%E5%8F%96.md)。获取OpenHarmony完整仓代码后,假设克隆目录为\~/openHarmony。 + +## 获取示例工程源码 + +以开发板Nucleo-F767Zi为例,演示如何编译运行OpenHarmony LiteOS-M内核工程。在本地目录,执行下述命令克隆示例代码。 + +``` +git clone https://gitee.com/harylee/nucleo_f767zi.git +``` + +假设克隆到的代码目录为\~/nucleo\_f767zi。 执行如下命令把代码目录的device、vendor目录复制到openHarmony工程的相应目录。 + +``` +cp -r ~/nucleo_f767zi/device/st ~/openHarmony/device/st +cp -r ~/nucleo_f767zi/vendor/st ~/openHarmony/vendor/st +``` + +关于示例代码目录的说明,可以参考资料站点[板级目录规范](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/%E7%A7%BB%E6%A4%8D%E6%A6%82%E8%BF%B0-0.md#section6204129143013)。如果需要自行移植开发板,请参考[板级系统移植](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/%E6%9D%BF%E7%BA%A7%E7%B3%BB%E7%BB%9F%E7%A7%BB%E6%A4%8D.md)。 + +## 编译运行 + +编译运行前,把交叉编译工具链bin目录配置到PATH环境变量中或者在device/st/nucleo\_f767zi/liteos\_m/config.gni文件中把board\_toolchain\_path配置项设置为交叉编译工具链bin目录。 在OpenHarmony根目录,执行hb set设置产品路径,选择nucleo\_f767zi产品,然后执行hb build开启编译。如下: + +``` +user@dev:~/OpenHarmony$ hb set +[OHOS INFO] Input code path: # 直接按回车,然后选择nucleo_f767zi产品即可 +OHOS Which product do you need? nucleo_f767zi@st +user@dev:~/OpenHarmony$ hb build +``` + +最终的镜像生成在\~/openHarmony/out/nucleo\_f767zi/目录中,通过STM32 ST-LINK Utility软件将镜像文件下载至单板查看运行效果。 + diff --git "a/zh-cn/device-dev/kernel/\346\211\251\345\261\225\347\273\204\344\273\266.md" "b/zh-cn/device-dev/kernel/\346\211\251\345\261\225\347\273\204\344\273\266.md" new file mode 100644 index 0000000000..dcfc826616 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\346\211\251\345\261\225\347\273\204\344\273\266.md" @@ -0,0 +1,9 @@ +# 扩展组件 + +- **[C++支持](C++支持.md)** + +- **[CPUP](CPUP.md)** + +- **[文件系统](文件系统-19.md)** + + diff --git "a/zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237-19.md" "b/zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237-19.md" new file mode 100644 index 0000000000..ba10ab39c5 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237-19.md" @@ -0,0 +1,204 @@ +# 文件系统 + +当前支持的文件系统有FATFS与LittleFS,支持的功能如下表所示: + +**表 1** ****功能列表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

FATFS

+

LITTELFS

+

文件操作

+

open

+

打开文件

+

支持

+

支持

+

close

+

关闭文件

+

支持

+

支持

+

read

+

读取文件内容

+

支持

+

支持

+

write

+

往文件写入内容

+

支持

+

支持

+

lseek

+

设置文件偏移位置

+

支持

+

支持

+

unlink

+

删除文件

+

支持

+

支持

+

rename

+

重命名文件

+

支持

+

支持

+

fstat

+

通过文件句柄获取文件信息

+

支持

+

支持

+

stat

+

通过文件路径名获取文件信息

+

支持

+

支持

+

fsync

+

文件内容刷入存储设备

+

支持

+

支持

+

目录操作

+

mkdir

+

创建目录

+

支持

+

支持

+

opendir

+

打开目录

+

支持

+

支持

+

readdir

+

读取目录项内容

+

支持

+

支持

+

closedir

+

关闭目录

+

支持

+

支持

+

rmdir

+

删除目录

+

支持

+

支持

+

分区操作

+

mount

+

分区挂载

+

支持

+

支持

+

umount

+

分区卸载

+

支持

+

支持

+

umount2

+

分区卸载,可通过MNT_FORCE参数进行强制卸载

+

支持

+

不支持

+

statfs

+

获取分区信息

+

支持

+

不支持

+
+ +- **[FAT](FAT-20.md)** + +- **[LittleFS](LittleFS.md)** + + diff --git "a/zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\346\226\207\344\273\266\347\263\273\347\273\237.md" "b/zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237.md" old mode 100755 new mode 100644 similarity index 98% rename from "zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\346\226\207\344\273\266\347\263\273\347\273\237.md" rename to "zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237.md" index 7941f79d37..b17821e62d --- "a/zh-cn/device-dev/kernel/OpenHarmony\350\275\273\345\206\205\346\240\270\346\226\207\344\273\266\347\263\273\347\273\237.md" +++ "b/zh-cn/device-dev/kernel/\346\226\207\344\273\266\347\263\273\347\273\237.md" @@ -1,4 +1,4 @@ -# OpenHarmony轻内核文件系统 +# 文件系统 OpenHarmony轻内核支持的文件系统有:VFS(虚拟文件系统)、NFS、RAMFS、FAT、JFFS2。 diff --git "a/zh-cn/device-dev/kernel/\346\227\266\351\227\264\347\256\241\347\220\206.md" "b/zh-cn/device-dev/kernel/\346\227\266\351\227\264\347\256\241\347\220\206.md" new file mode 100644 index 0000000000..967a229499 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\346\227\266\351\227\264\347\256\241\347\220\206.md" @@ -0,0 +1,7 @@ +# 时间管理 + +- **[基本概念](基本概念-13.md)** + +- **[开发指导](开发指导-14.md)** + + diff --git "a/zh-cn/device-dev/kernel/\346\240\207\345\207\206\345\272\223\346\224\257\346\214\201.md" "b/zh-cn/device-dev/kernel/\346\240\207\345\207\206\345\272\223\346\224\257\346\214\201.md" new file mode 100644 index 0000000000..7522c305c5 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\346\240\207\345\207\206\345\272\223\346\224\257\346\214\201.md" @@ -0,0 +1,7 @@ +# 标准库支持 + +- **[CMSIS支持](CMSIS支持.md)** + +- **[POSIX支持](POSIX支持.md)** + + diff --git "a/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\346\240\207\345\207\206\347\263\273\347\273\237\345\206\205\346\240\270.md" old mode 100755 new mode 100644 similarity index 78% rename from "zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270.md" rename to "zh-cn/device-dev/kernel/\346\240\207\345\207\206\347\263\273\347\273\237\345\206\205\346\240\270.md" index 8fbfb4c35a..5911c5e037 --- "a/zh-cn/device-dev/kernel/Linux\345\206\205\346\240\270.md" +++ "b/zh-cn/device-dev/kernel/\346\240\207\345\207\206\347\263\273\347\273\237\345\206\205\346\240\270.md" @@ -1,4 +1,4 @@ -# Linux内核 +# 标准系统内核 - **[Linux内核概述](Linux内核概述.md)** diff --git "a/zh-cn/device-dev/kernel/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/zh-cn/device-dev/kernel/\346\266\210\346\201\257\351\230\237\345\210\227.md" new file mode 100644 index 0000000000..3a56400156 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -0,0 +1,7 @@ +# 消息队列 + +- **[基本概念](基本概念-9.md)** + +- **[开发指导](开发指导-10.md)** + + diff --git "a/zh-cn/device-dev/kernel/\347\272\277\347\250\213.md" "b/zh-cn/device-dev/kernel/\347\272\277\347\250\213.md" index f4c48da802..7add0e4dc7 100755 --- "a/zh-cn/device-dev/kernel/\347\272\277\347\250\213.md" +++ "b/zh-cn/device-dev/kernel/\347\272\277\347\250\213.md" @@ -2,7 +2,7 @@ - [基本概念](#section1179311337405) - [使用场景](#section44877547404) -- [功能](#section2069477134115) +- [接口说明](#section2069477134115) ## 基本概念 @@ -67,7 +67,7 @@ OpenHarmony内核的线程一共有32个优先级\(0-31\),最高优先级为0 线程创建后,用户态可以执行线程调度、挂起、恢复、延时等操作,同时也可以设置线程优先级和调度策略,获取线程优先级和调度策略。 -## 功能 +## 接口说明 OpenHarmony内核系统中的线程管理模块,线程间通信为用户提供下面几种功能: diff --git "a/zh-cn/device-dev/kernel/\347\275\221\347\273\234.md" "b/zh-cn/device-dev/kernel/\347\275\221\347\273\234.md" index c16fab43b4..17eafd2f16 100755 --- "a/zh-cn/device-dev/kernel/\347\275\221\347\273\234.md" +++ "b/zh-cn/device-dev/kernel/\347\275\221\347\273\234.md" @@ -2,7 +2,7 @@ - [基本概念](#section9840143083510) - [使用场景](#section1575885183516) -- [功能](#section16351198193614) +- [接口说明](#section16351198193614) ## 基本概念 @@ -15,7 +15,7 @@ 针对用户态开发,OpenHarmony内核提供了一套网络功能系统调用接口,支持socket的创建关闭、数据收发、网络属性的设置等,通过C库提供标准的POSIX socket函数供开发者使用。 -## 功能 +## 接口说明 **表 1** 标准C库相关接口 diff --git "a/zh-cn/device-dev/kernel/\350\256\244\350\257\206LiteOS-M\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\350\256\244\350\257\206LiteOS-M\345\206\205\346\240\270.md" new file mode 100644 index 0000000000..7984b0843b --- /dev/null +++ "b/zh-cn/device-dev/kernel/\350\256\244\350\257\206LiteOS-M\345\206\205\346\240\270.md" @@ -0,0 +1,62 @@ +# 认识LiteOS-M内核 + +- [内核简介](#section1429342661510) + - [cpu体系架构支持](#section48891456112819) + - [运行机制](#section4599142312817) + + +## 内核简介 + +OpenHarmony LiteOS-M内核是面向IoT领域构建的轻量级物联网操作系统内核,具有小体积、低功耗、高性能的特点。其代码结构简单,主要包括内核最小功能集、内核抽象层、可选组件以及工程目录等。OpenHarmony LiteOS-M内核架构包含硬件相关层以及硬件无关层,如下图所示,其中Kernel Arch模块属于硬件相关层,该模块按不同编译工具链、芯片架构分类,提供统一的HAL(Hardware Abstraction Layer)接口,提升了硬件易适配性,满足AIoT类型丰富的硬件和编译工具链的拓展;Components等其他模块属于硬件无关层,其中Kernel Task等内核模块提供基础能力,Components模块提供网络、文件系统等组件能力,Utils模块提供错误处理、调测等能力,KAL(Kernel Abstraction Layer)模块提供统一的标准接口。 + +**图 1** 内核架构图 +![](figures/内核架构图.png "内核架构图") + +### cpu体系架构支持 + +CPU体系架构分为通用架构定义和特定架构定义两层,通用架构定义层为所有体系架构都需要支持和实现的接口,特定架构定义层为特定体系架构所特有的部分。在新增一个体系架构的时候,必须需要实现通用架构定义层,如果该体系架构还有特有的功能,可以在特定架构定义层来实现。 + +**表 1** CPU体系架构规则 + + + + + + + + + + + + + + + + + + + + +

规则

+

通用体系架构层

+

特定体系架构层

+

头文件位置

+

kernel/arch/include

+

kernel/arch/<arch>/<arch>/<toolchain>/

+

头文件命名

+

los_<function>.h

+

los_arch_<function>.h

+

函数命名

+

Halxxxx

+

Halxxxx

+
+ +LiteOS-M已经支持ARM Cortex-M3、ARM Cortex-M4、ARM Cortex-M7、ARM Cortex-M33、RISC-V等主流架构,如果需要扩展CPU体系架构,请参考[芯片架构适配点](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/porting/%E7%A7%BB%E6%A4%8D%E6%A6%82%E8%BF%B0.md#%E8%8A%AF%E7%89%87%E6%9E%B6%E6%9E%84%E9%80%82%E9%85%8D%E7%82%B9)。 + +### 运行机制 + +在开发板配置文件target\_config.h配置系统时钟、每秒Tick数,可以对任务、内存、IPC、异常处理模块进行裁剪配置。系统启动时,根据配置进行指定模块的初始化。内核启动流程包含外设初始化、系统时钟配置、内核初始化、操作系统启动等,详见内核启动流程图。 + +**图 2** 内核启动流程 +![](figures/内核启动流程.png "内核启动流程") + diff --git "a/zh-cn/device-dev/kernel/\350\270\251\345\206\205\345\255\230\346\243\200\346\265\213.md" "b/zh-cn/device-dev/kernel/\350\270\251\345\206\205\345\255\230\346\243\200\346\265\213.md" new file mode 100644 index 0000000000..ab5d4101a0 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\350\270\251\345\206\205\345\255\230\346\243\200\346\265\213.md" @@ -0,0 +1,85 @@ +# 踩内存检测 + +- [基础概念](#section17368154517335) +- [功能配置](#section4696190123420) +- [开发指导](#section672362973417) + - [开发流程](#section026014863416) + - [编程实例](#section186311302356) + - [示例代码](#section12709533354) + - [结果验证](#section81214126369) + + +## 基础概念 + +踩内存检测机制作为内核的可选功能,用于检测动态内存池的完整性。通过该机制,可以及时发现内存池是否发生了踩内存问题,并给出错误信息,便于及时发现系统问题,提高问题解决效率,降低问题定位成本。 + +## 功能配置 + +LOSCFG\_BASE\_MEM\_NODE\_INTEGRITY\_CHECK:开关宏,默认关闭;若打开这个功能,在target\_config.h中将这个宏定义为1。 + +1. 开启这个功能,每次申请内存,会实时检测内存池的完整性。 +2. 如果不开启该功能,也可以调用LOS\_MemIntegrityCheck接口检测,但是每次申请内存时,不会实时检测内存完整性,而且由于节点头没有魔鬼数字(开启时才有,省内存),检测的准确性也会相应降低,但对于系统的性能没有影响,故根据实际情况开关该功能。 + +由于该功能只会检测出哪个内存节点被破坏了,并给出前节点信息(因为内存分布是连续的,当前节点最有可能被前节点破坏)。如果要进一步确认前节点在哪里申请的,需开启内存泄漏检测功能,通过LR记录,辅助定位。 + +>![](public_sys-resources/icon-caution.gif) **注意:** +>开启该功能,节点头多了魔鬼数字字段,会增大节点头大小。由于实时检测完整性,故性能影响较大;若性能敏感的场景,可以不开启该功能,使用LOS\_MemIntegrityCheck接口检测。 + +## 开发指导 + +### 开发流程 + +通过调用LOS\_MemIntegrityCheck接口检测内存池是否发生了踩内存,如果没有踩内存问题,那么接口返回0且没有log输出;如果存在踩内存问题,那么会输出相关log,详见下文编程实例的结果输出。 + +### 编程实例 + +本实例实现如下功能: + +1. 申请两个物理上连续的内存块; +2. 通过memset构造越界访问,踩到下个节点的头4个字节; +3. 调用LOS\_MemIntegrityCheck检测是否发生踩内存。 + +### 示例代码 + +代码实现如下: + +``` +#include +#include +#include "los_memory.h" +#include "los_config.h" + +void MemIntegrityTest(void) +{ + /* 申请两个物理连续的内存块 */ + void *ptr1 = LOS_MemAlloc(LOSCFG_SYS_HEAP_ADDR, 8); + void *ptr2 = LOS_MemAlloc(LOSCFG_SYS_HEAP_ADDR, 8); + /* 第一个节点内存块大小是8字节,那么12字节的清零,会踩到第二个内存节点的节点头,构造踩内存场景 */ + memset(ptr1, 0, 8 + 4); + LOS_MemIntegrityCheck(LOSCFG_SYS_HEAP_ADDR); +} +``` + +### 结果验证 + +编译运行输出log如下: + +``` +[ERR][OsMemMagicCheckPrint], 2028, memory check error! +memory used but magic num wrong, magic num = 0x00000000 /* 提示信息,检测到哪个字段被破坏了,用例构造了将下个节点的头4个字节清零,即魔鬼数字字段 */ + + broken node head: 0x20003af0 0x00000000 0x80000020, prev node head: 0x20002ad4 0xabcddcba 0x80000020 +/* 被破坏节点和其前节点关键字段信息,分别为其前节点地址、节点的魔鬼数字、节点的sizeAndFlag;可以看出被破坏节点的魔鬼数字字段被清零,符合用例场景 */ + + broken node head LR info: /* 节点的LR信息需要开启内存检测功能才有有效输出 */ + LR[0]:0x0800414e + LR[1]:0x08000cc2 + LR[2]:0x00000000 + + pre node head LR info: /* 通过LR信息,可以在汇编文件中查找前节点是哪里申请,然后排查其使用的准确性 */ + LR[0]:0x08004144 + LR[1]:0x08000cc2 + LR[2]:0x00000000 +[ERR]Memory interity check error, cur node: 0x20003b10, pre node: 0x20003af0 /* 被破坏节点和其前节点的地址 */ +``` + diff --git "a/zh-cn/device-dev/kernel/\350\275\257\344\273\266\345\256\232\346\227\266\345\231\250.md" "b/zh-cn/device-dev/kernel/\350\275\257\344\273\266\345\256\232\346\227\266\345\231\250.md" new file mode 100644 index 0000000000..903970bdd6 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\350\275\257\344\273\266\345\256\232\346\227\266\345\231\250.md" @@ -0,0 +1,7 @@ +# 软件定时器 + +- **[基本概念](基本概念-15.md)** + +- **[开发指导](开发指导-16.md)** + + diff --git "a/zh-cn/device-dev/kernel/\350\275\273\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\350\275\273\345\206\205\346\240\270.md" deleted file mode 100755 index 6b4997efe3..0000000000 --- "a/zh-cn/device-dev/kernel/\350\275\273\345\206\205\346\240\270.md" +++ /dev/null @@ -1,11 +0,0 @@ -# 轻内核 - -- **[OpenHarmony轻内核基础功能](OpenHarmony轻内核基础功能.md)** - -- **[OpenHarmony轻内核文件系统](OpenHarmony轻内核文件系统.md)** - -- **[标准库](标准库.md)** - -- **[调测](调测.md)** - - diff --git "a/zh-cn/device-dev/kernel/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" new file mode 100644 index 0000000000..0ae605881a --- /dev/null +++ "b/zh-cn/device-dev/kernel/\350\275\273\351\207\217\345\222\214\345\260\217\345\236\213\347\263\273\347\273\237\345\206\205\346\240\270.md" @@ -0,0 +1,7 @@ +# 轻量和小型系统内核 + +- **[轻量系统内核](轻量系统内核.md)** + +- **[小型系统内核](小型系统内核.md)** + + diff --git "a/zh-cn/device-dev/kernel/\350\275\273\351\207\217\347\263\273\347\273\237\345\206\205\346\240\270.md" "b/zh-cn/device-dev/kernel/\350\275\273\351\207\217\347\263\273\347\273\237\345\206\205\346\240\270.md" new file mode 100644 index 0000000000..290c4915bf --- /dev/null +++ "b/zh-cn/device-dev/kernel/\350\275\273\351\207\217\347\263\273\347\273\237\345\206\205\346\240\270.md" @@ -0,0 +1,11 @@ +# 轻量系统内核 + +- **[基础内核](基础内核.md)** + +- **[文件系统](文件系统.md)** + +- **[标准库](标准库.md)** + +- **[调测](调测.md)** + + diff --git "a/zh-cn/device-dev/kernel/\350\277\233\347\250\213.md" "b/zh-cn/device-dev/kernel/\350\277\233\347\250\213.md" index 795c6fec46..c425b175ae 100755 --- "a/zh-cn/device-dev/kernel/\350\277\233\347\250\213.md" +++ "b/zh-cn/device-dev/kernel/\350\277\233\347\250\213.md" @@ -2,7 +2,7 @@ - [基本概念](#section29197338383) - [使用场景](#section85513272398) -- [功能](#section4517119124015) +- [接口说明](#section4517119124015) ## 基本概念 @@ -74,7 +74,7 @@ OpenHarmony内核的进程一共有32个优先级\(0-31\),用户进程可配 进程创建后,用户只能操作自己进程空间的资源,无法操作其它进程的资源(共享资源除外)。 用户态允许进程挂起,恢复,延时等操作,同时也可以设置用户态进程调度优先级和调度策略,获取进程调度优先级和调度策略。进程结束的时候,进程会主动释放持有的进程资源,但持有的进程pid资源需要父进程通过wait/waitpid或父进程退出时回收。 -## 功能 +## 接口说明 OpenHarmony内核系统中的进程管理模块为用户提供下面几种功能: diff --git "a/zh-cn/device-dev/kernel/\351\231\204\345\275\225.md" "b/zh-cn/device-dev/kernel/\351\231\204\345\275\225.md" new file mode 100644 index 0000000000..73adc5ca61 --- /dev/null +++ "b/zh-cn/device-dev/kernel/\351\231\204\345\275\225.md" @@ -0,0 +1,9 @@ +# 附录 + +- **[内核编码规范](内核编码规范.md)** + +- **[基本数据结构](基本数据结构.md)** + +- **[标准库支持](标准库支持.md)** + + diff --git "a/zh-cn/device-dev/kernel/\351\235\231\346\200\201\345\206\205\345\255\230.md" "b/zh-cn/device-dev/kernel/\351\235\231\346\200\201\345\206\205\345\255\230.md" new file mode 100644 index 0000000000..090cea4a0d --- /dev/null +++ "b/zh-cn/device-dev/kernel/\351\235\231\346\200\201\345\206\205\345\255\230.md" @@ -0,0 +1,182 @@ +# 静态内存 + +- [运行机制](#section165473517522) +- [开发指导](#section57511620165218) + - [使用场景](#section215474911529) + - [接口说明](#section79231214539) + - [开发流程](#section1388511316548) + - [编程实例](#section17801515105519) + - [结果验证](#section11818154112319) + + +## 运行机制 + +静态内存实质上是一个静态数组,静态内存池内的块大小在初始化时设定,初始化后块大小不可变更。 + +静态内存池由一个控制块LOS\_MEMBOX\_INFO和若干相同大小的内存块LOS\_MEMBOX\_NODE构成。控制块位于内存池头部,用于内存块管理,包含内存块大小uwBlkSize,内存块数量uwBlkNum,已分配使用的内存块数量uwBlkCnt和空闲内存块链表stFreeList。内存块的申请和释放以块大小为粒度,每个内存块包含指向下一个内存块的指针pstNext。 + +**图 1** 静态内存示意图 +![](figures/静态内存示意图.png "静态内存示意图") + +## 开发指导 + +### 使用场景 + +当用户需要使用固定长度的内存时,可以通过静态内存分配的方式获取内存,一旦使用完毕,通过静态内存释放函数归还所占用内存,使之可以重复使用。 + +### 接口说明 + +OpenHarmony LiteOS-M的静态内存管理主要为用户提供以下功能,接口详细信息可以查看API参考。 + +**表 1** 静态内存模块接口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能分类

+

接口名

+

描述

+

初始化静态内存池

+

LOS_MemboxInit

+

初始化一个静态内存池,根据入参设定其起始地址、总大小及每个内存块大小。

+

清除静态内存块内容

+

LOS_MemboxClr

+

清零从静态内存池中申请的静态内存块的内容。

+

申请、释放静态内存

+

LOS_MemboxAlloc

+

从指定的静态内存池中申请一块静态内存块。

+

LOS_MemboxFree

+

释放从静态内存池中申请的一块静态内存块。

+

获取、打印静态内存池信息

+

LOS_MemboxStatisticsGet

+

获取指定静态内存池的信息,包括内存池中总内存块数量、已经分配出去的内存块数量、每个内存块的大小。

+

LOS_ShowBox

+

打印指定静态内存池所有节点信息(打印等级是LOS_INFO_LEVEL),包括内存池起始地址、内存块大小、总内存块数量、每个空闲内存块的起始地址、所有内存块的起始地址。

+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>初始化后的内存池的内存块数量,不等于总大小除于内存块大小,因为内存池的控制块和每个内存块的控制头,都存在内存开销,设置总大小时,需要将这些因素考虑进去。 + +### 开发流程 + +本节介绍使用静态内存的典型场景开发流程。 + +1. 规划一片内存区域作为静态内存池。 +2. 调用LOS\_MemboxInit初始化静态内存池。 + + 初始化会将入参指定的内存区域分割为N块(N值取决于静态内存总大小和块大小),将所有内存块挂到空闲链表,在内存起始处放置控制头。 + +3. 调用LOS\_MemboxAlloc接口分配静态内存。 + + 系统将会从空闲链表中获取第一个空闲块,并返回该内存块的起始地址。 + +4. 调用LOS\_MemboxClr接口。 + + 将入参地址对应的内存块清零。 + +5. 调用LOS\_MemboxFree接口。 + + 将该内存块加入空闲链表。 + + +### 编程实例 + +本实例执行以下步骤: + +1. 初始化一个静态内存池。 +2. 从静态内存池中申请一块静态内存。 +3. 在内存块存放一个数据。 +4. 打印出内存块中的数据。 +5. 清除内存块中的数据。 +6. 释放该内存块。 + + 示例代码如下: + + +``` +#include "los_membox.h" + +VOID Example_StaticMem(VOID) +{ + UINT32 *mem = NULL; + UINT32 blkSize = 10; + UINT32 boxSize = 100; + UINT32 boxMem[1000]; + UINT32 ret; + + /*内存池初始化*/ + ret = LOS_MemboxInit(&boxMem[0], boxSize, blkSize); + if(ret != LOS_OK) { + printf("Membox init failed!\n"); + return; + } else { + printf("Membox init success!\n"); + } + + /*申请内存块*/ + mem = (UINT32 *)LOS_MemboxAlloc(boxMem); + if (NULL == mem) { + printf("Mem alloc failed!\n"); + return; + } + printf("Mem alloc success!\n"); + + /*赋值*/ + *mem = 828; + printf("*mem = %d\n", *mem); + + /*清除内存内容*/ + LOS_MemboxClr(boxMem, mem); + printf("Mem clear success \n *mem = %d\n", *mem); + + /*释放内存*/ + ret = LOS_MemboxFree(boxMem, mem); + if (LOS_OK == ret) { + printf("Mem free success!\n"); + } else { + printf("Mem free failed!\n"); + } + + return; +} +``` + +### 结果验证 + +输出结果如下: + +``` +Membox init success! +Mem alloc success! +*mem = 828 +Mem clear success +*mem = 0 +Mem free success! +``` + diff --git a/zh-cn/readme.md b/zh-cn/readme.md index 7a117bfee0..d208c391d9 100644 --- a/zh-cn/readme.md +++ b/zh-cn/readme.md @@ -1,4 +1,4 @@ -# OpenHarmony开发者文档 +# 导读 此工程存放OpenHarmony提供的快速入门、开发指南、API参考等开发者文档,欢迎参与OpenHarmony开发者文档开源项目,与我们一起完善开发者文档。 @@ -10,7 +10,7 @@ - overview:[设备开发导读](device-dev/quick-start/导读.md) - quick-start:[快速入门](device-dev/quick-start/Readme-CN.md)(搭建环境、获取源码、编译、烧录等) - 开发基础能力 - - Kernel:[轻内核](device-dev/kernel/轻内核.md) + - Kernel:[轻量和小型系统内核](device-dev/kernel/轻量和小型系统内核.md) - Drivers:[驱动](device-dev/driver/Readme-CN.md) - Subsystems:[子系统](device-dev/subsystems/Readme-CN.md)(编译构建、图形图像、DFX、XTS等子系统) - Security:[隐私与安全](device-dev/security/Readme-CN.md) @@ -34,7 +34,7 @@ - overview:[设备开发导读](device-dev/quick-start/导读.md) - quick-start:[快速入门](device-dev/quick-start/Readme-CN.md)(搭建环境、获取源码、编译、烧录等) - 开发基础能力 - - Kernel:[Linux内核](device-dev/kernel/Linux内核.md) + - Kernel:[标准系统内核](device-dev/kernel/标准系统内核.md) - Drivers:[驱动](device-dev/driver/Readme-CN.md) - Subsystems:[子系统](device-dev/subsystems/Readme-CN.md)(编译构建、图形图像、DFX、XTS等子系统) - Security:[隐私与安全](device-dev/security/Readme-CN.md) @@ -45,8 +45,8 @@ - [外设驱动](device-dev/guide/外设驱动开发示例.md) - porting:[移植适配](device-dev/porting/Readme-CN.md) - - [三方芯片移植指导](device-dev/porting/三方芯片移植指导.md) - - [三方库移植指导](device-dev/porting/三方库移植指导.md) + + [三方库移植指导](device-dev/porting/三方库移植指导.md) - bundles:[组件开发](device-dev/bundles/Readme-CN.md) - [组件开发规范](device-dev/bundles/组件开发规范.md) @@ -55,7 +55,7 @@ - 应用开发 - - overview:[应用开发导读](application-dev/application-dev-guide.md) + - overview:[应用开发导读](application-dev/应用开发导读.md) - quick-start:[入门](application-dev/quick-start/Readme-CN.md) - ui:[UI](application-dev/ui/Readme-CN.md) - media:[媒体](application-dev/media/Readme-CN.md) diff --git a/zh-cn/release-notes/OpenHarmony-1-1-1-LTS.md b/zh-cn/release-notes/OpenHarmony-1-1-1-LTS.md new file mode 100644 index 0000000000..c06477ed22 --- /dev/null +++ b/zh-cn/release-notes/OpenHarmony-1-1-1-LTS.md @@ -0,0 +1,140 @@ +# OpenHarmony 1.1.1 LTS(2021-06-22) + +- [版本概述](#section1846294912228) +- [源码获取](#section84808293211) + - [通过镜像站点获取](#section8394142222113) + - [通过repo下载](#section7180193542317) + +- [更新说明](#section175225345334) + +## 版本概述 + +更新发布LTS(long-term support)长期支持版本OpenHarmony 1.1.1,本版本在1.1.0版本的基础上新增了部分功能和修复了部分缺陷。 + +## 源码获取 + +### 通过镜像站点获取 + +**表 1** 源码获取路径 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

版本源码

+

版本信息

+

下载站点

+

SHA256校验码

+

全量代码

+

1.1.1

+

站点

+

SHA256校验码

+

Hi3861解决方案(二进制)

+

1.1.1

+

站点

+

SHA256校验码

+

Hi3518解决方案(二进制)

+

1.1.1

+

站点

+

SHA256校验码

+

Hi3516解决方案(二进制)

+

1.1.1

+

站点

+

SHA256校验码

+

Release Notes

+

1.1.1

+

站点

+

-

+
+ +### 通过repo下载 + +下载命令如下: + +repo init -u [https://gitee.com/openharmony/manifest.git](https://gitee.com/openharmony/manifest.git) -b refs/tags/OpenHarmony-v1.1.1-LTS --no-repo-verify + +## 更新说明 + +本版本完全继承了OpenHarmony 1.1.0的所有特性,并在OpenHarmony 1.1.0版本的基础上,对各模块进行了缺陷修复和性能优化,详情请参考下表。 + +**表 2** 版本更新说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

类别

+

更新内容

+

通信

+
  • 更新了部分STA相关功能的数据类以及新增了几个AP相关功能的innerkits接口
  • 新增了蓝牙相关功能的innerkits接口,包括BLE设备gatt相关的操作,以及BLE广播、扫描等功能
+

安全

+
  • 支持调用方仅使用绑定的能力,裁剪设备认证能力
  • 支持了huks裁剪设备认证
+

内核

+
  • 修复clang编译的系统镜像内核栈回溯功能失效
  • 解决调度中存在有符号数与无符号数比较
  • 修复setitimer中定时给进程发信号时未持有调度锁,导致踩内存等问题
  • lwip适配内核posix接口
  • 修复sigaction中sigsuspend的后执行信号顺序与预期不符,信号注册时未屏蔽用户传入信号屏蔽字段
+

驱动

+
  • liteos_m上的编译错误修复
  • 合入解决mmc crash的问题
+

AI

+
  • AI添加共享内存机制
  • AI添加linux内核适配
  • 同步算法禁用异步调用
  • 添加gitignore和Cmakelist
+

图形

+
  • 修复circle progress开启端点样式情况下,进度为0,圆形端点需要绘制问题
  • 修改旋转表冠灵敏度及方向相关问题
  • 增加 UIList 自动对齐动画时间设置功能
  • 修复当LineBreakMode为LINE_BRAK_ELLIPSIS时UILabel GetText宽度值错误
  • slider组件新增样式属性
  • UITimePicker增加设置循环接口
  • 修复定点数优化导致的NEON旋转缩放变换显示异常的BUG
  • 修复换行算法在字符串中有多个换行符时存在的换行错误
  • 修复表盘指针显示花屏问题
+

全球化

+
  • 添加日期时间模板Ed和MEd
+

ACE框架

+
  • 修复checkbox/radio点击事件异常
  • 修复list和if指令场景JS应用crash问题
  • slider样式归一处理
  • pickerview组件支持循环滑动
  • 修改align-item设置值为stretch情况下,子项居中显示的问题
+
+ -- GitLab