一、vscode 连接docker 容器

当你打开了一个平平无奇的vscode,恰好你又装了 RemoteSSH 这个插件,恰巧在左下角的“打开远程窗口”之后

屏幕顶上就有连接到主机,“将当前窗口连接到主机”是一样的,只是不打开新的窗口而已

在主机地址里面输入 “root@localhost:2222”,密码是zephyr 。这个怎么改密码下一期定制docker镜像的时候再说。

第一次登录会让你安装一下插件,大胆放心的装,都是微软官方的插件和nrf官方的一个devicetree的辅助插件。

SSH显示登录了localhost,因为docker在本地机。终端进入了docker里面的环境,记住!是docker里面的系统。

到此已经接上开发环境了。但是还没能开发的。需要调用一下docker 里面的一个已经写好的vscode.workspace文件

二、打开vscode workspace

在/目录下有vscode的workspace文件,不要犹豫,点它。完事会提示要不要信任工作区,那必须得信任,不然搞不了。

提示选工具包,直接Esc取消就行。

左边资源管理器就出现3个大的文件夹,到这里就说明你已经接好开发环境和设置好工作区了。

三、开发环境的目录介绍

开发环境的三个目录有两个是zephyr的代码,日常编辑使用的是/workspace

项目代码的结构介绍

这个文件夹里面带.的是环境的参数配置文件,现阶段不用动。

apps就是zephyr的一个个项目,点灯,玩各种外设等等,

这里可以自己新增项目,在本地用git里面的 new_project.sh XXX(项目名称,英文数字组成)来新增。本地文件夹生成后,自动会同步到docker的工作区的。如果不行的话,那大概率就是启动 ${PWD}这个变量没有设置好。这个自己调整一下就好了

你看我的文件夹路径

项目结构如下:

/01_blink 是项目名称

        /boards:用来存放DTS的插件overlay文件的。这里很重要

        /build:编译过程的产物,我习惯每次都清理的。west build的时候可以清理的。

        /src :放源文件的,main.c这类

CMakeLists.tst :CMAKE的必要文件

prj.conf :这个是zephyr的必要文件,即使是空白文件也要有,现阶段就是个空白文件

如果用我的new_project.sh生成的项目,CMakeLists.txt 我已经自动生成好内容的了。如果自己手动的话就自己写一下简单的CMAKE

zephyr源代码的结构介绍

/opt/toolchains/zephyr 就是源文件了,以后经常用到的文件夹是boards、drivers

dts、samples这几个,作为一个板佬,用的最多的也就差不多这几个了。也就是查查MACRO数据和IO MUX。

另外一个重要的文件是west.yml 这个是记录了zephyr的组件安装清单,说白了就是能搞什么芯片,干什么功能的。如果不想全量安装zephyr的modules就在这里调整。

最后,/opt/toolchains/modules这个就是不要乱动了。这个是内部模组的源代码,可以看,但是不要动。不然得重新安装west sdk 。

四、west 代码编译

编译用的 west工具 先到项目的目录下,就是有CMakeLists.txt那里。然后在vscode的终端里面。

编译命令

west build -p always -b esp32c3_devkitc -- -DDTC_OVERLAY_FILE=boards/esp32c3_devkitc.overlay

解释如下:

west build :build嘛,不用解释了。

-p always :pristine 的意思,就是问你 build文件夹的上一次编译的文件全部清空 always就是往死里干,auto就自动决定,目前阶段用always省的出幺蛾子。

-b xxx :board 编译的目标是用什么板。目前用的是esp32c3,

如果用sheilds的话还有一个参数的,

--shield 接板子的名称 /opt/toolchains/zephyr/boards/shields 里面有名字

-- -DTC_OVERLAY_FILE = xxx 这个就是用dts的插件文件来编辑devicetree, 板佬必须用到的。用来调整devicetree的。

编译完成,没报错

在本地机的对应workspace文件夹里面项目/build/zephyr,就有zephyr.bin 用esptool烧录它,zephyr.elf用GDB 打bug。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐