最近在搞一个开源的STM32项目,项目开源得很彻底,所有用到的工具全是开源的。比如原理图PCB工具用的是kiCAD,源码组织是基于Makefile的,编译器用的gcc,使用Openocd烧录……相比之前用Keil或IAR,着实麻烦很多。
首先是虚拟机的搭建,之前一直用的ubuntu12.04,现在不少开发包找不到,因为它自己有一套python的调试组件,而它需要python3.6及以上的运行环境。实在是累了。换一个新的虚拟机系统好了。选了ubuntu20.04,目前最新版本了。但是坑也是多,国内几乎找不到ubuntu20.04下的问题讨论,可能也跟我一样,没怎么用,不过国外已经不少了。
当然,新有新的好,也有新的坏。好是啥都好,不好就是坑都得自己趟,例如在vmware15.5下安装ubuntu20.04共享文件夹在虚拟机中看不到。到目前为止(2020-5-23)基本明确是vmware的vm-tool没有适配。
扯多了,这里再记录一个ubuntu20.04下安装STM32CubeProgrammer的问题。
首先去官网下载软件压缩包:点击进入官网下载页面
下载到压缩包后解压:
en.stm32cubeprog_v2-4-0.zip SetupSTM32CubeProgrammer-2.4.0.exe SetupSTM32CubeProgrammer-2.4.0.app SetupSTM32CubeProgrammer-2.4.0.linux
压缩包内有两个文件*.exe、*.linux以及*.app文件夹。由于STM32CubeProgrammer是基于java的,所以它们其实并不简单的是三个平台下的安装文件。
因此第一个坑就是:理所当然的只拷了*.linux到linux下,然后安装。
sudo ./SetupSTM32CubeProgrammer-2.4.0.linux
结果就是一直提示:Error: Unable to access jarfile SetupSTM32CubeProgrammer-2.4.0.exe
一般怎么也想不到在linux下会去运行一个.exe文件。
解决方法也很简单:将整个压缩包直接在linux下解压,再执行安装即可。当然,前提是需要安装好jre(1.7+)。
即使到了这一步也有可能出现无法打开界面,提示API缺少依赖(命令行打开提示找不到main类)。这是由于ubuntu上使用的是open jdk,而该应用需要oracle jdk,即需要去oracle官网下载相应版本然后安装,记得加好环境变量。
然而到这里也许幸运的就可以正常使用了,不过大概率你会被提示USB device Permission deny。此时需要加入ST-LINK设备的udev rules,这是新的安全机制。我使用的方法是:
先安装libusb-1.0-0-dev,然后git clone https://github.com/texane/stlink
把stlink项目clone下来后编译安装:
cmake .
make
make install
至此应该是可以了。如果还是不行,那就把config/udev/rules.d/下的rules文件全部复制到/etc/udev/rules.d目录下。再重启下虚拟机,此时应该是真的可以了,也可以不需要使用root权限去访问st-link。如果还是不行,我……
以上,记录下问题,希望对后来人有所帮助。