diff --git a/docs/backTrace.md b/docs/backTrace.md index d41e3ee8f93ebd5a33a641a5db35c4d1c30ff907..002b299fad83b94f50d7a807740b730f449ccc01 100644 --- a/docs/backTrace.md +++ b/docs/backTrace.md @@ -1,23 +1,26 @@ -

-

回溯栈分析工具

-

- -LiteOS Studio可对输出的backtrace文件进行解析,自动标记回溯栈地址,支持快速解析出对应函数、文件行数,且支持文件跳转。 - - -### 1、回溯栈分析页面入口 -> 打开Liteos Studio工具,点击调测工具里的回溯栈分析tab页签,设置编译器、可执行文件路径等,选择backtrace文件(目前仅支持后缀为.backtrace的文件),然后点击确定进入回溯栈分析页面。 - -![avatar](images/backtrace/backtraceEntry.png) - -> 或者直接打开backtrace文件 - -### 2、回溯栈分析相关配置 -回溯栈分析依赖工程的elf文件、编译器类型、编译器路径,需在调测工具设置界面进行相关设置。 - -### 3、回溯栈分析页面介绍 -如果配置好回溯栈分析的相关依赖,打开backtrace文件,回溯栈地址会高亮显示,鼠标移动到地址上时会显示代码行号,Ctrl+鼠标移动到地址上会显示函数名称且点击时可跳转到对应的代码行号。 - -![avatar](images/backtrace/backtraceRes1.png) -![avatar](images/backtrace/backtraceRes2.png) +

+

回溯栈分析工具

+

+ +LiteOS Studio可对输出的backtrace文件进行解析,自动标记回溯栈地址,支持快速解析出对应函数、文件路径,且支持文件跳转。 + + +### 1、回溯栈分析页面入口 +> 打开Liteos Studio工具,点击调测工具里的回溯栈分析tab页签,设置编译器、可执行文件路径等,选择backtrace文件(目前仅支持后缀为.backtrace的文件),然后点击确定进入回溯栈分析页面。 + +![avatar](images/backtrace/backtraceEntry.png) + +> 或者直接打开backtrace文件 + +### 2、回溯栈分析相关配置 +回溯栈分析依赖工程的可执行文件(如elf文件、bin文件)、编译器类型、编译器路径,需在调测工具设置界面进行相关设置。 +如果工程源码在linux上,可将工程映射到windows磁盘上,然后进行相关路径配置如下图所示。 + +![avatar](images/backtrace/backtraceSet.png) + +### 3、回溯栈分析页面介绍 +如果配置好回溯栈分析的相关依赖,打开backtrace文件,回溯栈地址会高亮显示,鼠标移动到地址上时会显示函数名称和文件路径,Ctrl+鼠标移动到地址上会显示函数详情且点击时可跳转到对应的代码行号。 + +![avatar](images/backtrace/backtraceRes1.png) +![avatar](images/backtrace/backtraceRes2.png) ![avatar](images/backtrace/backtraceRes3.png) \ No newline at end of file diff --git a/docs/buildAnalysis.md b/docs/buildAnalysis.md index ea5ab9381bd256f6916a1c28c54608aa1fd9c3b7..fa2820f943b9fa67ff4c989e6bf81f89facdd07b 100644 --- a/docs/buildAnalysis.md +++ b/docs/buildAnalysis.md @@ -1,46 +1,65 @@ -

-

镜像分析工具

-

- -LiteOS Studio对构建出的elf文件进行内存占用分析,支持LiteOS开发者快速评估内存段、符号表使用情况。 - - -### 1、镜像分析页面入口 -> 打开Liteos Studio工具,点击调测工具里的镜像分析tab页签,设置编译器、可执行文件路径等,然后点击确定进入镜像分析页面。 - -![avatar](images/buildAnalysis/buildAnalysisStart.png) - -> 或者通过打开命令行输入`build`找到`Build Analyzer`点击进入。 - -![avatar](images/buildAnalysis/buildAnalysisStart2.png) - -### 2、镜像分析相关配置 -镜像分析依赖工程的elf文件、map文件、编译器类型、编译器路径,需在调测工具设置界面进行相关设置。镜像分析结果展示界面可修改elf文件路径,配置好elf文件路径后,可点击右边的按钮重新执行镜像分析。 - -![avatar](images/buildAnalysis/buildAnalysisConfig.png) - -### 3、镜像分析页面介绍 -如果在调测工具中点击镜像分析时没有选择Map文件或者镜像分析依赖的Map文件中内存区域的数据为空时,进入镜像分析页面只有一个详细信息页签,否则有内存区域和详细信息两个页签。 - -![avatar](images/buildAnalysis/buildAnalysisPage2.png) -![avatar](images/buildAnalysis/buildAnalysisPage1.png) - -#### 内存区域 -内存区域包括每个内存区域数据的一个表格,包含了起始地址和结束地址以及内存占用。 -表格下面默认显示内存占比最高的前三个区域内容。 -点击不同的行会在下面仪表盘中显示点击行的数据。 - -![avatar](images/buildAnalysis/buildAnalysisPage3.png) -![avatar](images/buildAnalysis/buildAnalysisPage4.png) - -#### 详细信息 -详细信息里显示了Section和Symbol的信息。通过树表格展示层级关系,名称,VMA和LMA。双击Symbol子节点会跳转到具体的代码行号。 - -页面也支持搜索Name定位到具体的行,然后通过键盘Enter键跳转到下一个符合搜索条件的行。 - -![avatar](images/buildAnalysis/buildAnalysisPage5.png) - - -同时,点击表头的每列会对该列数据进行排序。 - -![avatar](images/buildAnalysis/buildAnalysisPage6.png) \ No newline at end of file +

+

镜像分析工具

+

+ +LiteOS Studio对构建出的elf文件进行内存占用分析,支持LiteOS开发者快速评估内存段、符号表使用情况。 + + +### 1、镜像分析页面入口 +> 打开Liteos Studio工具,点击调测工具里的镜像分析tab页签,设置编译器、可执行文件路径等,然后点击确定进入镜像分析页面。 + +![avatar](images/buildAnalysis/buildAnalysisStart.png) + +> 或者通过打开命令行输入`build`找到`Build Analyzer`点击进入。 + +![avatar](images/buildAnalysis/buildAnalysisStart2.png) + +### 2、镜像分析相关配置 +镜像分析依赖工程的elf文件、map文件、编译器类型、编译器路径,需在调测工具设置界面进行相关设置。镜像分析结果展示界面可修改elf文件路径,配置好elf文件路径后,可点击右边的按钮重新执行镜像分析。 + +![avatar](images/buildAnalysis/buildAnalysisConfig.png) + +### 3、镜像分析页面介绍 +镜像分析页面包括内存区域、详细信息、文件大小和模块大小。 + +#### 内存区域 +内存区域包括每个内存区域数据的一个表格,包含了起始地址和结束地址以及内存占用。 +表格下面默认显示内存占比最高的前三个区域内容。 + +![avatar](images/buildAnalysis/buildAnalysisRegions.png) + +点击不同的行会在下面仪表盘中显示点击行的数据。 + +![avatar](images/buildAnalysis/buildAnalysisRegions1.png) + +#### 详细信息 +详细信息里显示了Section和Symbol的信息。通过树表格展示层级关系,名称,VMA和LMA。双击Symbol子节点会跳转到具体的代码行号。 + +![avatar](images/buildAnalysis/buildAnalysisDetails.png) + +页面也支持搜索Name定位到具体的行,然后通过键盘Enter键跳转到下一个符合搜索条件的行,点击![avatar](images/buildAnalysis/buildAnalysisRegExp.png)可以开启支持正则搜索。 + +![avatar](images/buildAnalysis/buildAnalysisDetails1.png) + +同时,点击表头的每列会对该列数据进行排序。 + +![avatar](images/buildAnalysis/buildAnalysisDetails2.png) + +#### 文件大小 +文件大小里展示了文件和文件层级的大小以及总数,点击表头会对该列数据进行排序。 + +![avatar](images/buildAnalysis/buildAnalysisFile.png) + +表格除了File Name和Rom Size以外其他的列,都是动态变化的。 + +![avatar](images/buildAnalysis/buildAnalysisFile1.png) + +#### 模块大小 +模块大小里展示了文件和文件层级的大小以及总数,点击表头会对该列数据进行排序。 + +![avatar](images/buildAnalysis/buildAnalysisModule.png) + +类似文件大小,模块大小表格除了File Name和Rom Size以外其他的列,也都是动态变化的。下面展示的饼图显示父节点和子节点的数据情况,如果不存在子节点,就只显示父节点的图;如果存在子节点,左侧图是父节点,右侧图是子节点。 + +![avatar](images/buildAnalysis/buildAnalysisModule1.png) + diff --git a/docs/extension.md b/docs/extension.md index c73bf2e70b01c483700a4aea1729784cd98a413e..f7765a13c52902c6be5b41a52a81cee061080991 100644 --- a/docs/extension.md +++ b/docs/extension.md @@ -1,39 +1,39 @@ - -

-

HUAWEI LiteOS Studio扩展介绍

-

- -### 扩展发布说明 - -由于不同的开发板的编译、烧录、调测方式差异较大,`HUAWEI LiteOS Studio`通过不同的扩展来灵活支持各种目标开发板。`HUAWEI LiteOS Studio`扩展主要包含`LiteOS Studio Base基座扩展`和 -为不同的开发板定制的扩展,如`STM32`开发板扩展、`WiFi IoT Hi3861`开发板扩展。为实现`GDB`图形化调测能力,还提供了`LiteOS Studio Debug`调测扩展。 - -在`HUAWEI LiteOS Studio`集成开发环境中已经预置了基座扩展,调测扩展,和部分开发板扩展。如果用户使用VSCode或其他基于VSCode的定制`IDE`,也可以通过安装`HUAWEI LiteOS Studio`扩展来实现`HUAWEI LiteOS Studio`相同的能力。 - -各个扩展的安装文件后缀为`.vsix`, 可以访问[LiteOS Studio Extensions](https://gitee.com/LiteOS/LiteOS_Studio/releases/V1.45.1)下载。 - -### 扩展安装 - -在IDE 活动栏中,打开`扩展`视图,点击更多操作`...`,在弹出的菜单中选择`从 VSIX 安装`,然后指定扩展文件的路径,即可完成安装。 - -![avatar](images/extensionsInstall.png) - -**注意:由于扩展中预置了适用于Windows平台的编译器、烧录、调测工具等,HUAWEI LiteOS Studio扩展仅支持 Windows 版本的IDE。** - -### LiteOS Studio Base扩展 - -`HUAWEI LiteOS Studio Base`基座扩展, 可以安装到各种基于`VSCode`的IDE,如`VSCode-Huawei`、`WeCode`等。 基座扩展增加了侧边栏工具按钮 ![avatar](images/sidebar_tools.png), 集成了`HUAWEI LiteOS Studio`中工具栏支持的功能,包括编译、烧录、调试、目标板选择等工程配置,点击侧边栏工具按钮, 界面如下: - -![avatar](images/toolsview.png) - -### LiteOS Studio STM32扩展 - -对于[开源LiteOS](https://gitee.com/LiteOS/LiteOS)用户,安装`HUAWEI LiteOS Studio Base`基座扩展和`LiteOS Studio STM32`开发板扩展后,可以利用`IDE`新建`LiteOS STM32`工程, 支持对`STM32系列`开发板工程进行编译、烧录、调试等操作。`LiteOS Studio STM32`扩展支持`Gitee-LiteOS-Master`等`开源 LiteOS SDK` 版本,支持`STM32F429IG`、`STM32F769NI`、`STM32L431RC`等开发板。 - -### LiteOS Studio Hi3861扩展 - -对于`WIFI IoT Hi3861`开发板用户,安装`HUAWEI LiteOS Studio Base`基座扩展和`LiteOS Studio Hi3861`开发板扩展后,可以利用`IDE`新建`WIFI IoT Hi3861`工程,支持对`WIFI IoT Hi3861`开发板工程进行编译、烧录、调试、组件配置等操作。 - -### LiteOS Studio Debug调测扩展 - + +

+

HUAWEI LiteOS Studio扩展介绍

+

+ +### 扩展发布说明 + +由于不同的开发板的编译、烧录、调测方式差异较大,`HUAWEI LiteOS Studio`通过不同的扩展来灵活支持各种目标开发板。`HUAWEI LiteOS Studio`扩展主要包含`LiteOS Studio Base基座扩展`和 +为不同的开发板定制的扩展,如`STM32`开发板扩展、`WiFi IoT Hi3861`开发板扩展。为实现`GDB`图形化调测能力,还提供了`LiteOS Studio Debug`调测扩展。 + +在`HUAWEI LiteOS Studio`集成开发环境中已经预置了基座扩展,调测扩展,和部分开发板扩展。如果用户使用VSCode或其他基于VSCode的定制`IDE`,也可以通过安装`HUAWEI LiteOS Studio`扩展来实现`HUAWEI LiteOS Studio`相同的能力。 + +各个扩展的安装文件后缀为`.vsix`, 可以访问[LiteOS Studio Extensions](https://gitee.com/LiteOS/LiteOS_Studio/releases/V1.45.1)下载。 + +### 扩展安装 + +在IDE 活动栏中,打开`扩展`视图,点击更多操作`...`,在弹出的菜单中选择`从 VSIX 安装`,然后指定扩展文件的路径,即可完成安装。 + +![avatar](images/extensionsInstall.png) + +**注意:由于扩展中预置了适用于Windows平台的编译器、烧录、调测工具等,HUAWEI LiteOS Studio扩展仅支持 Windows 版本的IDE。** + +### LiteOS Studio Base扩展 + +`HUAWEI LiteOS Studio Base`基座扩展, 可以安装到各种基于`VSCode`的IDE,如`VSCode-Huawei`、`WeCode`等。 基座扩展增加了侧边栏工具按钮 ![avatar](images/sidebar_tools.png), 集成了`HUAWEI LiteOS Studio`中工具栏支持的功能,包括编译、烧录、调试、目标板选择等工程配置,点击侧边栏工具按钮, 界面如下: + +![avatar](images/toolsview.png) + +### LiteOS Studio STM32扩展 + +对于[开源LiteOS](https://gitee.com/LiteOS/LiteOS)用户,安装`HUAWEI LiteOS Studio Base`基座扩展和`LiteOS Studio STM32`开发板扩展后,可以利用`IDE`新建`LiteOS STM32`工程, 支持对`STM32系列`开发板工程进行编译、烧录、调试等操作。`LiteOS Studio STM32`扩展支持`Gitee-LiteOS-Master`等`开源 LiteOS SDK` 版本,支持`STM32F429IG`、`STM32F769NI`、`STM32L431RC`、`realview-pbx-a9`等开发板。 + +### LiteOS Studio Hi3861扩展 + +对于`WIFI IoT Hi3861`开发板用户,安装`HUAWEI LiteOS Studio Base`基座扩展和`LiteOS Studio Hi3861`开发板扩展后,可以利用`IDE`新建`WIFI IoT Hi3861`工程,支持对`WIFI IoT Hi3861`开发板工程进行编译、烧录、调试、组件配置等操作。 + +### LiteOS Studio Debug调测扩展 + `LiteOS Studio Debug`调测扩展支持对`HUAWEI LiteOS Studio`工程进行`GDB`图形化调测,支持`Jlink`、`OpenOCD`等调测器。该扩展还集成多线程感知等能力,调测时在调用栈视图中支持同时展示多个任务的调用栈信息。 \ No newline at end of file diff --git a/docs/images/addBoard.png b/docs/images/addBoard.png index 9c5d2603f2fa5d08b992d998fb362f3060381bee..145db43ea660d3830ff8bb1cefd23686bb599654 100644 Binary files a/docs/images/addBoard.png and b/docs/images/addBoard.png differ diff --git a/docs/images/backtrace/backtraceRes1.png b/docs/images/backtrace/backtraceRes1.png index 6de4d4c655c3b87f8831bb3b39998ae5463e6a03..590f6ea52cf2f9e881180f29b9cec51a5c0951b9 100644 Binary files a/docs/images/backtrace/backtraceRes1.png and b/docs/images/backtrace/backtraceRes1.png differ diff --git a/docs/images/backtrace/backtraceRes2.png b/docs/images/backtrace/backtraceRes2.png index 7d82d317ef9baf6382f864246ea32e04496288f9..acf8e17e0f41a4dd492e6da1ad1c37612bc188a6 100644 Binary files a/docs/images/backtrace/backtraceRes2.png and b/docs/images/backtrace/backtraceRes2.png differ diff --git a/docs/images/backtrace/backtraceRes3.png b/docs/images/backtrace/backtraceRes3.png index 1f372892f57fd6b847ab39eb3abf8ce5da7e2dd1..3d6a53c67186a66b7ce26d1a949c0c09415ed5bd 100644 Binary files a/docs/images/backtrace/backtraceRes3.png and b/docs/images/backtrace/backtraceRes3.png differ diff --git a/docs/images/backtrace/backtraceSet.png b/docs/images/backtrace/backtraceSet.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3ac2448dae3cdeeca8d30ddbb1eb7259327e68 Binary files /dev/null and b/docs/images/backtrace/backtraceSet.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisConfig.png b/docs/images/buildAnalysis/buildAnalysisConfig.png index 9e2a337fecf696a20bfd67efc021773e1299230b..6f96f5bf0e5626e2f2e4f1b475b666c18959bea9 100644 Binary files a/docs/images/buildAnalysis/buildAnalysisConfig.png and b/docs/images/buildAnalysis/buildAnalysisConfig.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisDetails.png b/docs/images/buildAnalysis/buildAnalysisDetails.png new file mode 100644 index 0000000000000000000000000000000000000000..cd811379563b51a66fb7f3d7db25e798f09fd419 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisDetails.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisDetails1.png b/docs/images/buildAnalysis/buildAnalysisDetails1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8ece23417ae847e4d067c00153630c72166bd8 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisDetails1.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisDetails2.png b/docs/images/buildAnalysis/buildAnalysisDetails2.png new file mode 100644 index 0000000000000000000000000000000000000000..c19fc0713c44b0d9a807f5c16352f92817f570ed Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisDetails2.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisFile.png b/docs/images/buildAnalysis/buildAnalysisFile.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe20cd1696aeb8ad7237eea2219379b1ff6b7db Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisFile.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisFile1.png b/docs/images/buildAnalysis/buildAnalysisFile1.png new file mode 100644 index 0000000000000000000000000000000000000000..531e17f6f02ed41ceefbfa07a8ee374fe45d5cf8 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisFile1.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisModule.png b/docs/images/buildAnalysis/buildAnalysisModule.png new file mode 100644 index 0000000000000000000000000000000000000000..3a974415ab400aa55fe74cf5c71d1e3385368b0a Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisModule.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisModule1.png b/docs/images/buildAnalysis/buildAnalysisModule1.png new file mode 100644 index 0000000000000000000000000000000000000000..49771f4e376fdb7d74313f0b6e45af508f170e0e Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisModule1.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisRegExp.png b/docs/images/buildAnalysis/buildAnalysisRegExp.png new file mode 100644 index 0000000000000000000000000000000000000000..e765c52f45d6a2f0dd595642ed048c6abb950f26 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisRegExp.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisRegions.png b/docs/images/buildAnalysis/buildAnalysisRegions.png new file mode 100644 index 0000000000000000000000000000000000000000..f68f912136778b1229b7f56ce3d23fdc12ff8a37 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisRegions.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisRegions1.png b/docs/images/buildAnalysis/buildAnalysisRegions1.png new file mode 100644 index 0000000000000000000000000000000000000000..e98c3602b448228a2212e48e5c4eb7977563d5e6 Binary files /dev/null and b/docs/images/buildAnalysis/buildAnalysisRegions1.png differ diff --git a/docs/images/buildAnalysis/buildAnalysisStart.png b/docs/images/buildAnalysis/buildAnalysisStart.png index 00ee27e90fd649d3556f8ecdcbc8fc21b2b16560..07fdbd2ddda59648995073a4d57bb3cfbe4ea7c8 100644 Binary files a/docs/images/buildAnalysis/buildAnalysisStart.png and b/docs/images/buildAnalysis/buildAnalysisStart.png differ diff --git a/docs/images/debugToolsSet.png b/docs/images/debugToolsSet.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b8608b2d8034ed6b96110db2544f91db1417e7 Binary files /dev/null and b/docs/images/debugToolsSet.png differ diff --git a/docs/images/newProject.png b/docs/images/newProject.png index a4fdc6c8c32e3ec7128d2939466ecfa53ac88d6d..eb53cf6a48cf3307901a2335706938e72f224208 100644 Binary files a/docs/images/newProject.png and b/docs/images/newProject.png differ diff --git a/docs/images/stackAnalysis/stackAnalysisConfig2.png b/docs/images/stackAnalysis/stackAnalysisConfig2.png index d8e6aab430f4460e22c81ea8873ac1908e3c0ab0..243c71c717f478d3adfb2474e2986ef2bd652981 100644 Binary files a/docs/images/stackAnalysis/stackAnalysisConfig2.png and b/docs/images/stackAnalysis/stackAnalysisConfig2.png differ diff --git a/docs/images/stackAnalysis/stackAnalysisEntry1.png b/docs/images/stackAnalysis/stackAnalysisEntry1.png new file mode 100644 index 0000000000000000000000000000000000000000..85523418c14eeb637795b7bbe7640ea0d49d2ebb Binary files /dev/null and b/docs/images/stackAnalysis/stackAnalysisEntry1.png differ diff --git a/docs/images/stackAnalysis/stackAnalysisEntry2.png b/docs/images/stackAnalysis/stackAnalysisEntry2.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e27eb9b0f1bc5f146ebf60efb9933baef7b7df Binary files /dev/null and b/docs/images/stackAnalysis/stackAnalysisEntry2.png differ diff --git a/docs/images/stm/qemu_burner.png b/docs/images/stm/qemu_burner.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f62a002963a0a1617011bc21481615e43e1a6f Binary files /dev/null and b/docs/images/stm/qemu_burner.png differ diff --git a/docs/images/stm/qemu_burner_succ.png b/docs/images/stm/qemu_burner_succ.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa699a9330cbc0801fc5d3c952535ef17cf121e Binary files /dev/null and b/docs/images/stm/qemu_burner_succ.png differ diff --git a/docs/images/stm/qemu_compile_succ.png b/docs/images/stm/qemu_compile_succ.png new file mode 100644 index 0000000000000000000000000000000000000000..22aea31e1bd0276833c92e5e8b39a28120c59190 Binary files /dev/null and b/docs/images/stm/qemu_compile_succ.png differ diff --git a/docs/images/stm/qemu_debugger.png b/docs/images/stm/qemu_debugger.png new file mode 100644 index 0000000000000000000000000000000000000000..20b91045a0bd411be227d0ff0607b14414ef994f Binary files /dev/null and b/docs/images/stm/qemu_debugger.png differ diff --git a/docs/images/stm/qemu_debugging.png b/docs/images/stm/qemu_debugging.png new file mode 100644 index 0000000000000000000000000000000000000000..967d8edbebd5f6d4f01c947f71d0d7208ccd0ca8 Binary files /dev/null and b/docs/images/stm/qemu_debugging.png differ diff --git a/docs/images/stm/qemu_target.png b/docs/images/stm/qemu_target.png new file mode 100644 index 0000000000000000000000000000000000000000..302d5f26fbfb5c7674e5b5f2287186443e74e013 Binary files /dev/null and b/docs/images/stm/qemu_target.png differ diff --git a/docs/images/stm/stm_.PNG b/docs/images/stm/stm_.PNG new file mode 100644 index 0000000000000000000000000000000000000000..dafedd1c80d71267b09abefa629b2017758f0496 Binary files /dev/null and b/docs/images/stm/stm_.PNG differ diff --git a/docs/images/stm/stm_confirm.png b/docs/images/stm/stm_confirm.png index 3e8b510928b1bdec785d5719b4633d3b210880ac..c4316c91a599b015a3bb8c3b0e24e3ae1c6c6914 100644 Binary files a/docs/images/stm/stm_confirm.png and b/docs/images/stm/stm_confirm.png differ diff --git a/docs/images/targetBoardNew.png b/docs/images/targetBoardNew.png index ed41f20b60d6ef405b112ed4fe40bdb4a12af0f1..8fc7dea28ac1dfa55663cd4bceb45271efc14ef5 100644 Binary files a/docs/images/targetBoardNew.png and b/docs/images/targetBoardNew.png differ diff --git a/docs/images/trace/Server/traceAgent.png b/docs/images/trace/Server/traceAgent.png index 402d290c07e3774dccd096f68afd9b9c59f19cfe..1240d4c2c8dd93a2ba0c65f653811780c42c0454 100644 Binary files a/docs/images/trace/Server/traceAgent.png and b/docs/images/trace/Server/traceAgent.png differ diff --git a/docs/images/trace/Server/traceAgentTask.png b/docs/images/trace/Server/traceAgentTask.png new file mode 100644 index 0000000000000000000000000000000000000000..099726687af5f6c9c3471a6d60df4267edff3362 Binary files /dev/null and b/docs/images/trace/Server/traceAgentTask.png differ diff --git a/docs/images/trace/Server/traceClientEn.png b/docs/images/trace/Server/traceClientEn.png new file mode 100644 index 0000000000000000000000000000000000000000..b95e51cd307377c0cc8546678a9379a6c7215776 Binary files /dev/null and b/docs/images/trace/Server/traceClientEn.png differ diff --git a/docs/images/trace/Server/traceEnable.png b/docs/images/trace/Server/traceEnable.png index 663d7fcf61cdbe3005daf5946374561633595e13..0b24fbbc15c8d6b35737a1926aecaee5e9c75aa2 100644 Binary files a/docs/images/trace/Server/traceEnable.png and b/docs/images/trace/Server/traceEnable.png differ diff --git a/docs/images/trace/traceCpu1.png b/docs/images/trace/traceCpu1.png index 068d8f2e48999f6b2e073f3903914e62421e784c..b1cec4bffcf70de70699332690af2f11f072621c 100644 Binary files a/docs/images/trace/traceCpu1.png and b/docs/images/trace/traceCpu1.png differ diff --git a/docs/images/trace/traceCpu2.png b/docs/images/trace/traceCpu2.png index c6d884c4e2a7ca61d31131bf2ab6bc144fddecd7..2e08b58ed319de502f92ab35e04c5832d3ed8b3a 100644 Binary files a/docs/images/trace/traceCpu2.png and b/docs/images/trace/traceCpu2.png differ diff --git a/docs/images/trace/traceEvent.png b/docs/images/trace/traceEvent.png index 13b79172b4cc32f12e9d7bfdf9652708165c00e6..62d8dc7a95a15a3fc2828a8c6b52107991473075 100644 Binary files a/docs/images/trace/traceEvent.png and b/docs/images/trace/traceEvent.png differ diff --git a/docs/images/trace/traceEvent2.png b/docs/images/trace/traceEvent2.png new file mode 100644 index 0000000000000000000000000000000000000000..bee9f2ab902a7c80f5c0bb8f54fe120d450e64d4 Binary files /dev/null and b/docs/images/trace/traceEvent2.png differ diff --git a/docs/images/trace/traceMem.png b/docs/images/trace/traceMem.png index aa5958c4bafe606cbffeef0c5b4f6073b167593f..eed5727236cb37da276e5d7887a8429ec04ebed3 100644 Binary files a/docs/images/trace/traceMem.png and b/docs/images/trace/traceMem.png differ diff --git a/docs/images/trace/traceSettings.png b/docs/images/trace/traceSettings.png index 986a77e60a984245608922203a79706015b79212..2dd36cba40507c1c26c327d925d16388be05ffc0 100644 Binary files a/docs/images/trace/traceSettings.png and b/docs/images/trace/traceSettings.png differ diff --git a/docs/images/trace/traceSettings2.png b/docs/images/trace/traceSettings2.png index fbc477a41db7256aa6d2cadf671d36d5653765df..6ee7ce945d00f3a5d0044959740e5a24fea1a6d2 100644 Binary files a/docs/images/trace/traceSettings2.png and b/docs/images/trace/traceSettings2.png differ diff --git a/docs/images/trace/traceSettings3.png b/docs/images/trace/traceSettings3.png index 491f0be539abf601bb5ca39f13e502da5eb5d179..0124e02f68287c4b9fa9667c62d9d53ae894c429 100644 Binary files a/docs/images/trace/traceSettings3.png and b/docs/images/trace/traceSettings3.png differ diff --git a/docs/images/trace/traceSettings4.png b/docs/images/trace/traceSettings4.png new file mode 100644 index 0000000000000000000000000000000000000000..ebd2e39486109842b6b50494def1f4e314d946f7 Binary files /dev/null and b/docs/images/trace/traceSettings4.png differ diff --git a/docs/images/trace/traceTimeline.png b/docs/images/trace/traceTimeline.png index ba72f2de121d00449b051defb8409071f6b129ed..99db7b93ea63c93e91aea411e154e9e51b9d8f98 100644 Binary files a/docs/images/trace/traceTimeline.png and b/docs/images/trace/traceTimeline.png differ diff --git a/docs/images/trace/traceViews.png b/docs/images/trace/traceViews.png index 9c99bc455f6e26ab6f5942cf91428a637e58a240..c78f953a6e7f313e7f3866254c40085397ce313c 100644 Binary files a/docs/images/trace/traceViews.png and b/docs/images/trace/traceViews.png differ diff --git a/docs/index.html b/docs/index.html index 3d6d405d7b6cc246e743794cc5233bdc0953b21e..b6f34285a347d0347375c8195f8a767a034045bb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,38 +1,38 @@ - - - - - HUAWEI LiteOS Studio Documentation - - - - - - - -
Please wait...
- - - - - + + + + + HUAWEI LiteOS Studio Documentation + + + + + + + +
Please wait...
+ + + + + diff --git a/docs/introduction.md b/docs/introduction.md index 6465305ad58f6dd6266f85254bca9daa708c1471..3ed92a8744ecd752cc373f1d65873d0ccdf2bca3 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -160,7 +160,7 @@ #### 烧录器界面介绍 点击工程配置页面左侧的`烧录器`选项进入烧录器界面。 -**烧录方式:** `烧录方式`下拉菜单目前支持`JLink`、`HiBurner`、`OpenOCD`三种烧录器,默认已经配好,如无额外需求不需要用户配置。 +**烧录方式:** `烧录方式`下拉菜单目前支持`JLink`、`HiBurner`、`OpenOCD`三种烧录器,以及`Simulator`仿真器。默认已经配好,如无额外需求不需要用户配置。 **烧录器目录:** `烧录器目录`是用户所使用的烧录器所在目录。 - HiBurner烧录器目录:`HUAWEI LiteOS Studio`仅预置`HiBurner`烧录器,默认安装在`C://users/用户名/.huawei-liteos-studio/tools`下,不需要用户自行配置此目录。 @@ -168,6 +168,7 @@ `https://www.segger.com/downloads/jlink/`,下载后需要将`JLink.exe`所在目录加入系统的Path环境变量。烧录器目录填写`JLink.exe`所在路径。 - OpenOCD烧录器目录:`OpenOCD`需要用户自行下载安装,推荐下载地址: `https://sourceforge.net/projects/openocd/files/openocd/0.10.0-rc2/`,烧录器目录填写`openocd.exe`所在路径。 +- Simulator仿真器目录:`Simulator`为`Qemu`仿真工具,需要用户自行下载安装,推荐下载地址:`https://qemu.weilnetz.de/`,烧录器目录填写`qemu-system-arm.exe`所在路径 **烧录文件:** `烧录文件`是用户编译生成的文件,目前支持`bin`、`fwpkg`、`hex`三种格式。执行编译后,后台将保存生成的烧录文件(`bin`、`fwpkg`、`hex`后缀的文件),并填入`烧录文件`下拉菜单中供用户点选,用户也可以在`bin`、`fwpkg`或`hex`文件上`单击右键->设置为烧录文件`或点击文件夹图标![avatar](images/browserFoler.png)浏览目录自行配置。 diff --git a/docs/project_stm32.md b/docs/project_stm32.md index b479254488beddef6f0e92f80d00ee620968a04a..2ba5dba1b49f8d237cd363b1dd2f15cd60b42eab 100644 --- a/docs/project_stm32.md +++ b/docs/project_stm32.md @@ -3,7 +3,7 @@

STM32工程示例

-本节介绍如何使用`HUAWEI LiteOS Studio` 开发`STM32`开发板工程。[开源LiteOS](https://gitee.com/LiteOS/LiteOS)工程,支持`STM32F429IG`、`STM32L431RC`、`STM32F769NI`等`STM32`系列开发板。 +本节介绍如何使用`HUAWEI LiteOS Studio` 开发`STM32`开发板工程。[开源LiteOS](https://gitee.com/LiteOS/LiteOS)工程,支持`STM32F429IG`、`STM32L431RC`、`STM32F769NI`等`STM32`系列开发板,以及支持Qemu仿真的`realview-pbx-a9`开发板。 ### 搭建Windows开发环境 @@ -13,6 +13,8 @@ 如果使用`OpenOCD`烧录,还需要安装`OpenOCD`烧录工具。 +如果选择`realview-pbx-a9`开发板进行仿真,还需要安装`Qemu`仿真器工具。 + 如果需要新建工程,还应该安装`git for windows`工具。 对于一些`STM32`开发板,用户可能还需要安装USB转串口驱动。 @@ -33,6 +35,9 @@ 如果开发板使用`JLink`仿真器,则应根据情况安装`JLink`软件,可参考[安装JLink仿真器软件](/install?id=安装JLink仿真器软件)。 +#### 安装Qemu仿真器软件 + +如果开发板使用`Qemu`仿真器,则应根据情况安装`Qemu`软件,可访问`Qemu下载官网`自行下载安装。 ### 使用入门 @@ -50,7 +55,7 @@ **步骤 3** 选择SDK版本号,当前STM32工程被维护在`https://gitee.com/`,支持最新版本`master`分支 -**步骤 4** 在开发板信息表点选开发板所在行,目前默认提供`STM32F429IG`、`STM32L431RC`、`STM32F769NI`三种开发板 +**步骤 4** 在开发板信息表点选开发板所在行,目前默认提供`STM32F429IG`、`STM32L431RC`、`STM32F769NI`、`realview-pbx-a9`四种开发板 点击`确认`按钮,后台将下载并保存所选目标板的SDK,等待下载完成后会在一个新窗口中自动打开新建的工程。 @@ -305,4 +310,42 @@ LiteOS作为轻量级物联网操作系统,同时只能运行一个Task任务 ![avatar](images/stm/jlink_remote_debugger.png) -同样,完成配置并确认后,点击调试按钮执行远程调试任务 \ No newline at end of file +同样,完成配置并确认后,点击调试按钮执行远程调试任务 + +### realview-pbx-a9工程编译、qemu仿真调测流程 + +#### 环境准备 + +本地需安装`Qemu`软件,并获取开源工程到本地,或通过`新建工程`建立`realview-pbx-a9`工程 + +#### realview-pbx-a9工程编译 + +首先打开本地工程,进入`工程配置`界面,选择`realview-pbx-a9`开发板 + +![avatar](images/stm/qemu_target.png) + +`编译器`配置与`stm32`系列开发板一致,可参照其他`stm32`开发板进行配置 + +点击编译按钮,执行编译,编译成功截图如下: + +![avatar](images/stm/qemu_compile_succ.png) + +#### realview-pbx-a9执行qemu仿真 + +进入`烧录器`界面,`烧录方式`选择`Simulator`,`烧录器目录`选择`qemu-system-arm.exe`所在目录,`烧录文件`选择`out/realview-pbx-a9`目录下的`Huawei_LiteOS.bin`文件,界面配置示例截图如下: + +![avatar](images/stm/qemu_burner.png) + +点击烧录按钮,执行`qemu`仿真,仿真开启成功后进入交互界面,截图如下: + +![avatar](images/stm/qemu_burner_succ.png) + +#### realview-pbx-a9调测 + +进入`调试器`界面,`调试器`选择`Simulator`,`调试器目录`选择`qemu-system-arm.exe`所在目录,GDB目录选择`arm-none-eabi-gdb.exe` `可执行文件路径`选择`out/realview-pbx-a9`目录下的`Huawei_LiteOS.elf`文件,界面配置示例截图如下: + +![avatar](images/stm/qemu_debugger.png) + +点击烧录按钮,执行`qemu`仿真,仿真开启成功后进入交互界面,截图如下: + +![avatar](images/stm/qemu_debugging.png) \ No newline at end of file diff --git a/docs/stackAnalysis.md b/docs/stackAnalysis.md index 983e947c9e2240ac845f251ac692813f5f7376ce..7e893d7722f6a289423e091b35f4f7119ca40b0f 100644 --- a/docs/stackAnalysis.md +++ b/docs/stackAnalysis.md @@ -1,36 +1,46 @@ -

-

栈估算工具

-

- -栈估算工具是基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化、问题定位等开发场景提供较为准确的静态内存分析数据参考。 - -### 1、使能栈估算功能 -打开Liteos Studio工具,在设置界面打开栈估算开关,开启后当工程执行编译时会自动进行栈估算。 - -![avatar](images/stackAnalysis/stackAnalysisConfig.png) - -### 2、栈估算相关配置 -栈估算依赖工程的asm文件,需在栈估算结果展示界面指定asm文件路径。配置好asm文件路径后,可点击右边的按钮重新执行栈估算。 - -![avatar](images/stackAnalysis/stackAnalysisConfig2.png) - -如果需要解析函数对应的代码行号,则需要在工程配置中准确配置编译器类型、编译器路径、可执行文件路径,如下图所示。 - -![avatar](images/stackAnalysis/stackAnalysisConfig3.png) -![avatar](images/stackAnalysis/stackAnalysisConfig4.png) - -### 3、栈估算入口 -点击工具栏上的栈估算按钮,可以查看栈估算的数据。 - -![avatar](images/stackAnalysis/stackAnalysisEntry.png) - -### 4、结果展示 -栈估算结果按函数列表和调用关系展示,如下图所示。 - -函数列表界面显示每个函数的函数名称、函数内部栈开销、代码行号。支持函数名称过滤功能。 - -![avatar](images/stackAnalysis/stackAnalysisRes1.png) - -调用关系界面显示每个函数的调用关系、函数名称、调用深度、函数最大栈开销、函数内部栈开销、代码行号。如果函数调用中存在回环,则会用回环图标标记,对应调用关系用“?”表示。同时,界面支持函数名称搜索和代码行号跳转。 - -![avatar](images/stackAnalysis/stackAnalysisRes2.png) \ No newline at end of file +

+

栈估算工具

+

+ +栈估算工具是基于静态二进制分析手段,提供任务栈开销估算值和函数调用关系图示,为栈内存使用、分析、优化、问题定位等开发场景提供较为准确的静态内存分析数据参考。 + +### 1、使能栈估算功能 +打开Liteos Studio工具,在设置界面打开栈估算开关,开启后当工程执行编译时会自动进行栈估算。 + +![avatar](images/stackAnalysis/stackAnalysisConfig.png) + +### 2、栈估算入口 +> 打开Liteos Studio工具,点击调测工具里的栈估算tab页签,设置编译器、可执行文件路径等,然后点击确定进入栈估算页面。 + +![avatar](images/stackAnalysis/stackAnalysisEntry1.png) + +> 或者通过打开命令行输入`Stack`找到`Stack Analyzer`点击进入。 + +![avatar](images/stackAnalysis/stackAnalysisEntry2.png) + +### 3、栈估算相关配置 +栈估算依赖工程的asm文件,需要配置asm文件路径。 + +![avatar](images/stackAnalysis/stackAnalysisConfig2.png) + +如果需要解析函数对应的代码行号,则需要准确配置编译器类型、编译器路径、可执行文件路径(如elf文件、bin文件)。可以在上面调测工具设置界面进行配置,也可以如下图所示在工程配置界面进行配置。 + +![avatar](images/stackAnalysis/stackAnalysisConfig3.png) +![avatar](images/stackAnalysis/stackAnalysisConfig4.png) + +栈估算还支持参数输入,目前仅支持如-sp -t taskentry1 taskentry2,即指定只解析taskentry1和taskentry2这两个任务入口函数。 + +如果工程源码在linux上,可将工程映射到windows磁盘上,然后进行相关路径配置如下图所示。 + +![avatar](images/debugToolsSet.png) + +### 4、结果展示 +栈估算结果按函数列表和调用关系展示,如下图所示。 + +函数列表界面显示每个函数的函数名称、函数内部栈开销、代码行号。支持函数名称过滤功能。 + +![avatar](images/stackAnalysis/stackAnalysisRes1.png) + +调用关系界面显示每个函数的调用关系、函数名称、调用深度、函数最大栈开销、函数内部栈开销、代码行号。如果函数调用中存在回环,则会用回环图标标记,对应调用关系用“?”表示。同时,界面支持函数名称搜索和代码行号跳转。 + +![avatar](images/stackAnalysis/stackAnalysisRes2.png) diff --git a/docs/studio_qa.md b/docs/studio_qa.md index 97dde4e77ff1887cd07e6539757f8563f9965fe1..0256c455ddc77b835fd1956358f2c1ae697a4191 100644 --- a/docs/studio_qa.md +++ b/docs/studio_qa.md @@ -46,11 +46,17 @@ LiteOS工程在windows下能够编译,且已经按照用户指南完成HUAWEI 通常不建议用户将工程保存到带有中文、特殊字符的文件夹下,`HUAWEI LiteOS Studio`暂时不对保存地址进行检查与限制,如果编译路径包含中文、空格等导致编译失败,可手动将工程保存到常规合法路径下。 +- **xxx.a文件已存在问题:** + + arm-none-eabi-ar*: unable to rename XXXX.a; reason: File exists, error creating archive + + 编译STM32开源工程时,概率性出现,新工程首次编译时出现可能性较高。可能为windows下arm gcc arm-none-eabi-ar本身产生的问题,可删除out目录(手动删除或通过清理编译方法),再尝试编译 + ### 烧录失败问题 - **系统版本问题:** - 使用openOCD烧录时,烧录报错`"."不是内部或外部命令,也不是可运行的程序,或批处理文件`,可能由于使用`WINDOWS7`操作系统,系统下没有`powershell`工具导致,可修改默认终端设置,如下图: + 烧录时,烧录报错`"."不是内部或外部命令,也不是可运行的程序,或批处理文件`,可能由于使用`WINDOWS7`操作系统,系统下没有`powershell`工具导致,可修改默认终端设置,如下图: ![avatar](images/setTerminal_1.png) diff --git a/docs/trace.md b/docs/trace.md index cfac5d91da5462c350a54547297f12263401e5ae..7280a975b11b8c6476e376fb45f458459cf77499 100644 --- a/docs/trace.md +++ b/docs/trace.md @@ -1,250 +1,275 @@ -

-

Trace工具

-

- -可视化Trace工具支持对LiteOS系统关键数据进行实时跟踪,保存与回放。Trace Server实现轻量级LiteOS事件监测,Trace Client可以让用户在任意时刻开始和停止记录Trace,并且可以图形化展示事件、CPU、内存、运行轨迹等信息。 - -### Trace Server使用说明 - -#### 使能Trace功能 - -make menuconfig 进入模块配置界面,如下,开启扩展内核下的trace模块 - -![avatar](images/trace/Server/traceEnable.png) - -选择trace工作模式 - -![avatar](images/trace/Server/traceWorkMode.png) - -1.online实时输出模式,在该模式下,trace默认为停止状态,用户需主动调用trace start来启动trace功能,且触发的trace事件会立即从传输口输出(如串口), 通过调用trace stop来停止trace功能; - -2.offline离线缓存模式,在该模式下,trace默认为启动状态,且触发的trace事件会缓存在buffer中,用户可进行线下工具导出(Jlink JMem)或者调用trace dump接口从传输口输出, 通过调用trace stop来停止trace功能、通过调用trace reset来清除buffer中的记录; - -3.系统默认trace为offline模式 - -选择trace数据输出方式 - -![avatar](images/trace/Server/tracePipeline.png) - -Trace数据输出方式目前仅支持串口输出,后续可扩展为TCPIP输出、蓝牙输出、JLINK输出等多种方式 - -#### Trace流程控制 - -三种方式: - -1. 用户可自行在代码中插入trace 对外API:LOS_TraceStart\LOS_TraceStop(los_trace.h) - -2. 在具备shell模块的开发环境中,开启shell, 则可通过shell命令控制trace流程,目前已支持的shell trace命令包括:trace_start 、trace_stop、trace_mask、trace_reset、trace_dump - -3. 在无shell模块的开发环境中,注册uart中断回调,也可实现trace流程控制,如下: - -![avatar](images/trace/Server/traceAgent.png) - -上述2、3种方式也交由Trace Client调用,用户可直接在Client端控制trace启动、停止流程。 - - -#### Trace流程控制之驱动适配 -TraceAgent用于响应trace 客户端的请求, 包括:启动、停止、设置事件掩码、dump离线trace的缓存数据等功能。 - -下面以uart适配为例,介绍如何实现响应客户端请求: - -1. 实现SerialPiplineInit(void),必要的资源创建等,如创建uart接受中断; - -2. 实现SerialPiplineReceive(unsigned char *data, unsigned int len, unsigned int timeout), 提供读取uart接受到的数据到data中的功能; - -3. 实现SerialDataSend(unsigned short len, unsigned char *data),提供uart发送data数据的功能; - -4. 实现SerialWait(void),提供等待信号,等到后再去读取uart数据的功能; - -5. 实现OsTracePipelineInit接口,将上述串口功能通过OsTracePipelineReg注册到系统中, 并初始化之,如下图所示: - -![avatar](images/trace/Server/tracePipelineInit.png) - -注意:客户端会发送以0xD 0xA 结束的数据串,如 “01 00 00 00 00 00 0d 0a”, SerialPiplineReceive需要将0xA之前的数据赋值给data, 如“01 00 00 00 00 00 0d” - -当trace发送数据流较频繁时,可能存在丢失数据的情况,可能存在Client控制命令丢失的情况。 - -建议:1. 减少发送数据流; 2.使用更高传输速率的其他通道。 - -#### Trace代码桩 - -##### 简易插桩 -提供给用户极简的一句话插桩: - -LOS_TRACE_EASY(Type, Identity, params...); - -Type 有效取值范围为[0, 0xF], 表示不同的事件类型; - -Identity 类型UINTPTR,表示事件描述的主要对象; - -Params 类型UINTPTR, 表示该事件的参数; - -示例: -LOS_TRACE_EASY(1, userId0, userParam1, userParam2); - -LOS_TRACE_EASY(2, userId0); - -LOS_TRACE_EASY(1, userId1, userParam1, userParam2); - -LOS_TRACE_EASY(2, userId1); - -##### 标准插桩 -trace事件类型定义如下: - -![avatar](images/trace/Server/traceMask.png) - -1.TRACE_MASK为事件掩码,粒度为模块级别,如果用户自定义trace模块,则需保证FLAG中取值为1的bit位与其他模块不同,且不超过上限; - -扩展语法为:TRACE_#MOD#_FLAG; - -![avatar](images/trace/Server/traceType.png) - -2.TRACE_TYPE 为具体的事件类型,粒度为接口级别; - -扩展语法为:#TYPE# = TRACE_#MOD#_FLAG | N; - -用户可按上述扩展语法进行新增事件定义 - -![avatar](images/trace/Server/traceParams.png) - -3.参数宏定义: - -扩展语法为:#TYPE#_PARAMS(Identity, parma1...) Identity, ... - -使能某事件,通过define对应事件宏至少1个参数,来追踪该类型事件 - -去能某事件,通过define对应事件宏0参数,如上图335行, 则不追踪该类型事件 - -用户可按照宏定义来裁剪不必要的参数, 如上图337行 - -![avatar](images/trace/Server/traceHook.png) - -4.代码桩插入: - -如上图所示, 在代码适当位置,插入桩,扩展语法如下: - - LOS_TRACE(#TYPE#, Identity, params...) - -目前系统默认仅插入了基础内核的代码桩,用户可按需新增插入。 - - -5.(可选)为实现trace事件可在前端用自然语言表达,针对用户扩展的事件需配置前端的事件表达,详见Trace Client使用说明。 - - -6.示例:新增文件系统trace事件如下: - - step 1.定义模块掩码: - - TRACE_FS_FLAG = 0x2000 - - step 2.定义具体事件类型: - - FS_READ = TRACE_FS_FLAG | 0; // 文件读 - - FS_WRITE = TRACE_FS_FLAG | 1; // 文件写 - - step 3.定义事件参数: - - FS_READ_PARAMS(fp, fd, flag, size) fp, fd, flags, size - - step 4.在适当位置插入代码桩: - - LOS_TRACE(FS_READ, fp, fd, flag, size); - - -#### Trace事件过滤 - -支持事件动态过滤: - -1.调用LOS_TraceEventMaskSet(UINT32 mask) 传入相应模块的使能位TRACE_#MOD#MASK来使能 - -2.通过客户端来设置使能位,详见客户端指导 - -系统默认的trace mask为使能任务和中断。 - -注意:简易插桩事件仅当mask设置为0时去能,其他情况均为使能;用户如需要动态分模块过滤事件,建议使用标准插桩定义新增事件。 - -#### Trace数据裁剪 - -![avatar](images/trace/Server/traceOpt.png) - -1.Core信息可裁剪,其包含系统状态信息:cpuid、hwiActive、isTaskLock等信息 - -2.trace事件计数可裁剪,其表示事件发生的序列 - -3.trace事件的参数可裁剪,对应#MOD#OPS#PARAMS 对应的参数 - -4.trace记录task obj任务信息可裁剪,其包含任务名,任务优先级信息 - -用户可按需进行配置。 - -### Trace Client使用说明 - - 当前Trace工具支持STM32F429IG工程、hi3556v200工程,使用Trace Client前开发板需已烧录支持trace功能的版本,trace支持在线和离线模式,可在工程中配置(参考`Trace Server使用说明`)。 - -#### Trace入口 - - 首先安装Trace插件,然后侧边栏点击trace按钮进入trace页面。 - -![avatar](images/trace/traceEntry.png) - -#### Trace设置 - - 抓取trace数据前需设置开发板的串口信息,如下图所示。 - -![avatar](images/trace/traceSettings.png) - - 用户还可以自定义trace事件,设置需要过滤的事件类型。 - - 如下图所示,勾选需要记录的事件类型。 - -![avatar](images/trace/traceSettings2.png) - - 如下图所示,用户可以自定义trace事件,需填写事件类型、事件编号、事件描述、事件参数。 - -![avatar](images/trace/traceSettings3.png) - -#### Trace操作 - - Trace工具支持开始Trace、停止Trace、导出Trace、保存Trace、打开Trace。 - - Trace在线模式时,点击开始按钮记录trace事件,界面可实时展示trace信息,点击停止按钮停止记录trace事件。trace离线模式时,可点击导出trace按钮,导出完成后trace数据展示在界面上。 - - trace数据还支持保存和查看历史数据:点击保存按钮,当前页面数据将以.db文件格式保存在指定位置上;点击打开按钮,可查看历史的trace数据,目前支持db文件格式和txt文件格式,db文件 - 保存的是已解析完成的trace数据,txt文件保存的是从串口直接打印的二进制原始数据。 - -![avatar](images/trace/traceTools.png) - -#### Trace视图 - - trace数据展示,当前支持事件信息、任务运行轨迹、CPU负载、内存使用情况。 - -![avatar](images/trace/traceViews.png) - -#### Trace事件视图 - - 事件信息通过表格方式展示,支持根据事件类型过滤,也支持根据关键字过滤,将鼠标移动到任务列可查看任务详情。用户还可以将数据导出保存成excel格式,进一步进行数据分析。 - -![avatar](images/trace/traceEvent.png) - -#### Trace运行轨迹 - - 运行轨迹视图展示每个任务在各个时间段的运行状态,可直观查看任务运行时长和切换过程。 - -![avatar](images/trace/traceTimeline.png) - -#### Trace CPU视图 - - CPU视图支持柱状图和饼图两种方式展示,柱状图可查看每个时刻每个任务的CPU使用情况;饼图可查看一定时间内每个任务的CPU使用情况。用户还可以通过点击图例中某个任务打开或关闭CPU占用率显示。 - - 说明:CPU数据是定时采样,如果trace抓取时间小于0.1s则获取不到cpu数据。 - -![avatar](images/trace/traceCpu1.png) - -![avatar](images/trace/traceCpu2.png) - -#### Trace 内存视图 - - 内存视图通过折线图展示系统内存的变化趋势,记录每个时刻的内存总量、已用内存和剩余内存。 - -![avatar](images/trace/traceMem.png) \ No newline at end of file +

+

Trace工具

+

+ +可视化Trace工具支持对LiteOS系统关键数据进行实时跟踪,保存与回放。Trace Server实现轻量级LiteOS事件监测,Trace Client可以让用户在任意时刻开始和停止记录Trace,并且可以图形化展示事件、CPU、内存、运行轨迹等信息。 + +### Trace Server使用说明 + +#### 使能Trace功能 + +make menuconfig 进入模块配置界面,如下,开启扩展内核下的trace模块 + +![avatar](images/trace/Server/traceEnable.png) + +选择trace工作模式 + +![avatar](images/trace/Server/traceWorkMode.png) + +1.online实时输出模式,在该模式下,trace默认为停止状态,用户需主动调用trace start来启动trace功能,且触发的trace事件会立即从传输口输出(如串口), 通过调用trace stop来停止trace功能; + +2.offline离线缓存模式,在该模式下,trace默认为启动状态,且触发的trace事件会缓存在buffer中,用户可进行线下工具导出(Jlink JMem)或者调用trace dump接口从传输口输出, 通过调用trace stop来停止trace功能、通过调用trace reset来清除buffer中的记录; + +3.系统默认trace为offline模式 + +选配启用客户端可视化或控制 + +![avatar](images/trace/Server/traceClientEn.png) + +该选项在离线模式下为可选,在线模式下为必选。 + +选择trace数据输出方式 + +Trace数据输出方式目前仅支持串口输出,后续可扩展为TCPIP输出、蓝牙输出、JLINK输出等多种方式 + +选择trace流程控制方式 + +![avatar](images/trace/Server/traceAgent.png) + +可以选择通过shell来控制、通过Trace Agent Task 来控制,或者不控制 + +#### Trace流程控制 + +三种方式: + +1. 用户可自行在代码中插入trace 对外API:LOS_TraceStart\LOS_TraceStop(los_trace.h) + +2. 在具备shell模块的开发环境中,开启shell, 则可通过shell命令控制trace流程,目前已支持的shell trace命令包括:trace_start 、trace_stop、trace_mask、trace_reset、trace_dump + +3. 在无shell模块的开发环境中,注册uart中断回调(前提uart中断未被复用),也可实现trace流程控制,如下: + +![avatar](images/trace/Server/traceAgentTask.png) + +上述2、3种方式也交由Trace Client调用,用户可直接在Client端点击相应按钮来控制trace。 + + +#### Trace流程控制之驱动适配 +TraceAgent用于响应trace 客户端的请求, 包括:启动、停止、设置事件掩码、dump离线trace的缓存数据等功能。 + +下面以uart适配为例,介绍如何实现响应客户端请求: + +1. 实现SerialPiplineInit(void),必要的资源创建等,如创建uart接受中断; + +2. 实现SerialPiplineReceive(unsigned char *data, unsigned int len, unsigned int timeout), 提供读取uart接受到的数据输出到data中的功能; + +3. 实现SerialDataSend(unsigned short len, unsigned char *data),提供uart发送data数据的功能; + +4. 实现SerialWait(void),提供等待功能,等待过后再去读取uart数据; + +5. 实现OsTracePipelineInit接口,将上述串口功能通过OsTracePipelineReg注册到系统中, 并初始化之,如下图所示: + +![avatar](images/trace/Server/tracePipelineInit.png) + +注意:客户端会发送以0xD 0xA 结束的数据串,如 “01 00 00 00 00 00 0d 0a”, SerialPiplineReceive需要将0xA之前的数据赋值给data, 即“01 00 00 00 00 00 0d” + +当trace发送数据流较频繁时,可能存在丢失数据的情况,可能存在Client控制命令丢失的情况。 + +建议:1. 减少发送数据流; 2.使用更高传输速率的其他通道。 + +#### Trace代码桩 + +##### 简易插桩 +提供给用户极简的一句话插桩: + +LOS_TRACE_EASY(Type, Identity, params...); + +Type 有效取值范围为[0, 0xF], 表示不同的事件类型; + +Identity 类型UINTPTR,表示事件描述的主要对象; + +Params 类型UINTPTR, 表示该事件的参数; + +示例: +LOS_TRACE_EASY(1, userId0, userParam1, userParam2); + +LOS_TRACE_EASY(2, userId0); + +LOS_TRACE_EASY(1, userId1, userParam1, userParam2); + +LOS_TRACE_EASY(2, userId1); + +##### 标准插桩 +trace事件类型定义如下: + +![avatar](images/trace/Server/traceMask.png) + +1.TRACE_MASK为事件掩码,粒度为模块级别,如果用户自定义trace模块,则需保证FLAG中取值为1的bit位与其他模块不同,且不超过上限; + +扩展语法为:TRACE_#MOD#_FLAG; + +![avatar](images/trace/Server/traceType.png) + +2.TRACE_TYPE 为具体的事件类型,粒度为接口级别; + +扩展语法为:#TYPE# = TRACE_#MOD#_FLAG | N; + +用户可按上述扩展语法进行新增事件定义 + +![avatar](images/trace/Server/traceParams.png) + +3.参数宏定义: + +扩展语法为:#TYPE#_PARAMS(Identity, parma1...) Identity, ... + +使能某事件,通过define对应事件宏至少1个参数,来追踪该类型事件 + +去能某事件,通过define对应事件宏0参数,如上图335行, 则不追踪该类型事件 + +用户可按照宏定义来裁剪不必要的参数, 如上图337行 + +![avatar](images/trace/Server/traceHook.png) + +4.代码桩插入: + +如上图所示, 在代码适当位置,插入桩,扩展语法如下: + + LOS_TRACE(#TYPE#, Identity, params...) + +目前系统默认仅插入了基础内核的代码桩,用户可按需新增插入。 + + +5.(可选)为实现trace事件可在前端用自然语言表达,针对用户扩展的事件需配置前端的事件表达,详见Trace Client使用说明。 + + +6.示例:新增文件系统trace事件如下: + + step 1.定义模块掩码: + + TRACE_FS_FLAG = 0x2000 + + step 2.定义具体事件类型: + + FS_READ = TRACE_FS_FLAG | 0; // 文件读 + + FS_WRITE = TRACE_FS_FLAG | 1; // 文件写 + + step 3.定义事件参数: + + FS_READ_PARAMS(fp, fd, flag, size) fp, fd, flags, size + + step 4.在适当位置插入代码桩: + + LOS_TRACE(FS_READ, fp, fd, flag, size); + + +#### Trace事件过滤 + +支持事件动态过滤: + +1.调用LOS_TraceEventMaskSet(UINT32 mask) 传入相应模块的使能位TRACE_#MOD#MASK来使能 + +2.通过客户端来设置使能位,详见客户端指导 + +系统默认的trace mask为使能任务和中断。 + +注意:简易插桩事件仅当mask设置为0时去能,其他情况均为使能;用户如需要动态分模块过滤事件,建议使用标准插桩定义新增事件。 + +#### Trace数据裁剪 + +![avatar](images/trace/Server/traceOpt.png) + +1.Core信息可裁剪,其包含系统状态信息:cpuid、hwiActive、isTaskLock等信息 + +2.trace事件计数可裁剪,其表示事件发生的序列 + +3.trace事件的参数可裁剪,对应#MOD#OPS#PARAMS 对应的参数 + +4.trace记录task obj任务信息可裁剪,其包含任务名,任务优先级信息 + +用户可按需进行配置。 + +### Trace Client使用说明 + + 当前Trace工具支持STM32F429IG工程、hi3556v200工程,使用Trace Client前开发板需已烧录支持trace功能的版本,trace支持在线和离线模式,可在工程中配置(参考`Trace Server使用说明`)。 + +#### Trace入口 + + 首先安装Trace插件,然后侧边栏点击trace按钮进入trace页面。 + +![avatar](images/trace/traceEntry.png) + +#### Trace设置 + + 抓取trace数据前需设置开发板的串口信息,如下图所示。 + +![avatar](images/trace/traceSettings.png) + + 用户还可以自定义trace事件,设置需要过滤的事件类型。 + + 如下图所示,勾选需要记录的事件类型。 + +![avatar](images/trace/traceSettings2.png) + + 如下图所示,用户可以自定义trace事件,需填写模块名称、模块掩码、事件描述、事件编号、事件参数。 + +![avatar](images/trace/traceSettings3.png) + + 参数类型目前支持4种:addr_hex表示16进制数据,UInt32表示无符号32位整型,Int32表示有符号32位整型,TimeoutInOsTicks表示超时相关的数据,如2ticks。 + +![avatar](images/trace/traceSettings4.png) + +#### Trace操作 + + Trace工具支持开始Trace、停止Trace、导出Trace、保存Trace、打开Trace。 + + Trace在线模式时,点击开始按钮记录trace事件,界面可实时展示trace信息,点击停止按钮停止记录trace事件。trace离线模式时,可点击导出trace按钮,导出完成后trace数据展示在界面上。 + + trace数据还支持保存和查看历史数据:点击保存按钮,当前页面数据将以.db文件格式保存在指定位置上;点击打开按钮,可查看历史的trace数据,目前支持db文件格式和txt文件格式,db文件 + 保存的是已解析完成的trace数据,txt文件保存的是从串口直接打印的二进制原始数据。 + +![avatar](images/trace/traceTools.png) + +#### Trace视图 + + trace数据展示,当前支持事件信息、任务运行轨迹、CPU负载、内存使用情况。 + +![avatar](images/trace/traceViews.png) + +#### Trace事件视图 + + 事件信息通过表格方式展示,支持根据事件类型过滤,也支持根据关键字过滤,将鼠标移动到任务列可查看任务详情。用户还可以将数据导出保存成excel格式,进一步进行数据分析。 + +![avatar](images/trace/traceEvent.png) + + 用户如果单击某一行的数据,则另外三个视图可关联显示当前时间戳的trace视图。 + 用户还可以双击某一行,如该行是某个信号量的操作事件,则会跳转到新视图显示当前信号量的使用记录。 + +![avatar](images/trace/traceEvent2.png) + +#### Trace运行轨迹 + + 运行轨迹视图展示每个任务在各个时间段的运行状态,可直观查看任务运行时长和切换过程。将鼠标移动到某个运行轨迹上则显示这段轨迹的运行时长,点击某个运行轨迹则显示这段时间内的事件记录列表。 + +![avatar](images/trace/traceTimeline.png) + +#### Trace CPU视图 + +CPU视图支持柱状图和饼图两种方式展示: + + 柱状图可查看每个时刻每个任务的CPU使用情况; + +![avatar](images/trace/traceCpu1.png) + + 饼图可查看一定时间内每个任务的CPU使用情况,用户可以通过调整滚动条左右两端的位置,查看特定时间段内的CPU占用情况; + +![avatar](images/trace/traceCpu2.png) + + 说明:用户还可以通过点击图例中某个任务打开或关闭CPU占用率显示。 + CPU数据是定时采样,如果trace抓取时间小于0.1s则获取不到cpu数据。 + + +#### Trace 内存视图 + + 内存视图通过折线图展示系统内存的变化趋势,记录每个时刻不同任务的内存占用情况。用户还可以通过点击图例中某个任务打开或关闭内存占用显示。 + +![avatar](images/trace/traceMem.png)