diff --git a/VSCode+Ozone使用方法.md b/VSCode+Ozone使用方法.md index bc95983..bc7f88b 100644 --- a/VSCode+Ozone使用方法.md +++ b/VSCode+Ozone使用方法.md @@ -47,7 +47,7 @@ CubeMX进行初始化 --> VSCode编写代/进行编译/简单调试 --> Ozone变 ***务必学完以上课程再开始本教程的学习。*** -> 4. 如果有可能,还应该学习:[哈佛大学公开课:计算机科学cs50](https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fcs50.html)。你将会对单片机和计算机有不同的理解。 +> 如果有可能,还应该学习:[哈佛大学公开课:计算机科学cs50](https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fcs50.html)。你将会对单片机和计算机有不同的理解。 ## 预备知识 @@ -123,6 +123,8 @@ RTOS创建任务的时候也会为每个任务分配一定的栈空间,它会 > 工具链包含了编译器,链接器以及调试器等开发常用组件。我们使用的Arm GNU toolchain中,编译器是`arm-none-eabi-gcc.exe`,链接器是`arm-none-eabi-ld.exe`,调试器则是`arm-none-eabi-gdb.exe`。通过跨平台调试器和j-link/st-link/dap-link,我们就可以在自己的电脑上对异构平台(即单片机)的运行进行调试了。 +==***特别注意,在新框架中我们使用的是arm-none-eabi-gcc,此编译器不支持`__packed`关键字,若要进行字节压缩(不对齐字节),应该使用预编译指令`#pragma pack(1)`***==。 + ### Debug外设工作原理 ![image-20221112145717063](assets\image-20221112145717063.png) @@ -248,7 +250,7 @@ VSCode常用快捷键包括: 此时就可以享受intellicode带来的各种便利的功能了。我们的项目使用Makefile进行编译,在之前的编译介绍中,以GCC编译器为例,如果需要编译一个文件,要输入如下命令: ```shell -gcc your_source_code_name.c -o output +gcc your_source_code_name.c -o output # your_source_code_name是待编译的文件名 ``` 然而,你面对的是一个拥有几百个.c和.h文件以及大量的链接库,如果要将所有文件都输入进去,那将是一件苦恼的事。Makefile在gcc命令上提供了一层抽象,通过编写makefile来指定参与编译的文件和编译选项,再使用`make`命令进行编译,它会自动将makefile的内容“翻译”为gcc命令。这样,编译大型项目就不是一件困难的事了。更多关于makefile的指令介绍,参见[附录3](##附录3:Makefile指令介绍)。 @@ -473,6 +475,24 @@ VSCode `ctrl+,`进入设置,通过`搜索`找到cortex-debug插件的设置。 这页不要动。如果希望保存jlink的调试日志,最后一个选项选择一个文件或者新建一个日志文件。 +### 启用FreeRTOS支持 + +注意,如果你的代码使用了实时系统,在载入项目的时候Ozone会进行对应的提示。选择载入支持实时系统的插件即可。 + +如果没有提示,请在console中输入下面的命令然后回车即可: + +```shell +Project.SetOSPlugin(“plugin_name”) +# plugin_name是启用的实时系统支持插件名 +# 我们要使用的命令是Project.SetOSPlugin(“FreeRTOSPlugin_CM4”) +``` + +支持的插件在Ozone的安装目录下的`Plugins/OS`目录: + +![image-20221119174445067](assets/image-20221119174445067.png) + +我们的项目是F4的板子,内核时Cortex-M4(CM4),因此选用`FreeRTOSPlugin_CM4.js`(输入的时候js后缀不用输)。 + ### 常用调试窗口和功能 下图的配置是笔者常用的layout。每个窗口是否显示、放在什么位置等都是可以自己定义的。通过工具栏的view选项卡可以自行选择需要展示的窗口。 @@ -483,6 +503,14 @@ VSCode `ctrl+,`进入设置,通过`搜索`找到cortex-debug插件的设置。 2. 变量watch窗口,这里的变量不会实时更新,只有在暂停或遇到断点的时候才会更新。若希望实时查看,在这里右键选择需要动态查看的变量,选择Graph,他就会出现在**窗口8**的位置。 + 如果不需要可视化查看变量变化的趋势,但是想不赞同查看变量的值,请右键点击变量,选择一个合适的refresh rate: + + ![image-20221119173731119](assets/image-20221119173731119.png) + + 如果是一个结构体,你可以为整个结构体都进行刷新率的配置,不需要手动一个个修改。**或直接右键点击窗口**,将refresh打勾: + + ![image-20221119173918340](assets/image-20221119173918340.png) + 3. 断点和运行追踪管理 4. 调试控制台,输出调试器的信息。 @@ -509,6 +537,8 @@ VSCode `ctrl+,`进入设置,通过`搜索`找到cortex-debug插件的设置。 - **变量动态查看(可视化)** + - **在变量的watch窗口右键点击变量,选择一个refresh rate也可以实时查看变量(和keil一样)。** + - 如果没有打开窗口,现在view->timeline中打开可视化窗口。动态变量查看的窗口也在view->data sampling。 启用动态变量查看的流程如下: diff --git a/assets/image-20221119173731119.png b/assets/image-20221119173731119.png new file mode 100644 index 0000000..08d19eb Binary files /dev/null and b/assets/image-20221119173731119.png differ diff --git a/assets/image-20221119173918340.png b/assets/image-20221119173918340.png new file mode 100644 index 0000000..7775198 Binary files /dev/null and b/assets/image-20221119173918340.png differ diff --git a/assets/image-20221119174445067.png b/assets/image-20221119174445067.png new file mode 100644 index 0000000..719019e Binary files /dev/null and b/assets/image-20221119174445067.png differ