建立一个嵌入式开发的 Docker 镜像
前言
在几年前,还在大学时就接触了Docker,了解了它对于开发环境一致性的意义,但是一直没有实际用过。前一段时间构建博客的时候,开发环境可以使用Docker,刚好开启了实践的第一步。
正文
开始是在搞博客的时候,VScode 推荐了一个插件 Dev Containers ,就试一试,插件信息弹出来需要下载 Docker Desktop,自动跳转到官网了,那还犹豫什么,对着最大的按钮点了,下载安装都很快,都是默认的,不过是在C盘,后来转移镜像文件到其他盘还是有点麻烦,WSL也是自动装的,基本都点的下一步和确认,当时一直处于科学上网状态,所以一点都没卡。就这样,有了Docker,有了自己做镜像的环境。
用的时候还是很舒服的,就是硬盘空间消耗很快。有了对这个的良好印象,我就开始想做一个自己的Docker镜像,匹配自己的开发环境。
先搞一个基础版的镜像,只安装 STM32cubeclt 工具,安装这个还调整了 Dockerfile 很多次,Dockerfile就是配置镜像的文件,ST官网下载需要登陆验证,就把在线安装的路堵了,开始时还想建一个GitHub仓库,把 STM32cubeclt 安装包传上去,搞半天才发现,单个大于100M的文件传不上去。
再换一种方法,在本地,把安装包传入镜像,在镜像中安装。报错了,信息显示需要有图形化安装环境,显示证书,依稀记得在window11安装 STM32cubeclt 时好像是点了我同意来着,这个必须要点吗?在命令行怎么搞?试了好几种方法,绕过验证、安装模拟图形化界面、脚本自动点击,都没有效果。
只能试试在外解压,传送到镜像中,外层安装包解压后是 .sh 文件,想了好一会儿怎么在window11把它搞定,一个“古老”的方法,直接改后缀名,将 .sh改为.zip,可以解压了,出来的文件没有后缀名了,此时 7-zip 竟然还能显示解压,打开果然是。把打开后的文件全部移动到镜像,配置一下就成功了。在这个过程中使用的命令基本都是问 AI,怎么发布了,打标签之类的,好用,定制化搜索引擎。
在这个基础镜像上,建立一个新的镜像,将STM32CubeG4 库、Eclipse ThreadX RTOS、Python 3。为什么要 python?有控制领域的库,要是安装一个 MATLAB Runtime,体积我受不了,现在镜像的大小就快受不了了。
镜像搞好之后,要测试,使用 STM32CubeMX 建了一个简单的配置,将 Azure RTOS(新名字:Eclipse ThreadX RTOS)也加上,在容器中打开,还是有很多bug的,各种环境路径、各种插件设置、检查开发环境的脚本、构建的脚本,还有这些之间的冲突。插件配置环境的速度太快,打开文件夹,还没有连接容器呢,自己配置好了,进入容器就报错,这让我怎么说你好呢!
搞了两天,基本完好,可以使用了,镜像体积有 10G,怎么说呢,哎,自己搞的,含泪也要用。
zhouhengai/stm32g4-motor-dev
1
docker pull zhouhengai/stm32g4-motor-dev:latest
GitHub库STM32G4_thteadx_examplo
1
git clone https://github.com/BJKJKZHOU/STM32G4_thteadx_examplo.git
