Linux对于开发者来说真的是一个非常好的系统,为开发者来说应该不陌生,通常我们在Windows下开发stm32很方便,有非常多的工具,IDE等支持,同样是操作系统,Linux开发STM32也一点不会差。
Linux下开发stm32也有很多方法:
1.使用makefile
2.使用eclipse
3.使用stm32cubemx+sw4stm32。
4....
有大神使用第一种,本人对makefile一知半解,拿不出手。第二种,windows下可以使用eclipse开发,eclipse有linux版本,所以应该也是可以的,不过本人并没有试过。这里要说的就是第三种,当然除了这些,像Mbed之类的在线开发工具,只要有网,无论什么平台都能开发的就不说了。
stm32cubemx相信大家都已经很熟悉了,st推出的基于hal库的图形化配置和代码生成工具,不记得从哪个版本开始,这个工具添加了对linux的支持,st大力发展linux用户的野心昭然可见。除此之外,st还和ac6合作推出了stm32 ode,即sw4stm32,一款免费的可开发stm32的集成开发工具。sw4stm32是基于eclipse开发的,打开后的界面和eclipse基本完全一样,也同时支持windows和linux两种版本,这也说明了第二种方法是可行的。下面真正开始开发环境搭建工作:
1.准备工作
下载stm32cubemx:http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html。
下载sw4stm32:http://www.openstm32.org/Downloading+the+System+Workbench+for+STM32+installer。
这两个软件都需要j**a运行时环境(JRE),所以需要先安装好JRE,这里就不讲了,百度一下都有。
2.安装
其实这两个软件安装方式做得很类似windows下的安装了,解压双击即可安装,不过既然用了linux系统,就允许我装一下逼,用命令行来安装。
安装步骤:
1.完成前面的下载后得到两个文件:
en.stm32cubemx.zip install_sw4stm32_linux_64bits-v1.8.run。
首先解压压缩文件包,
unzipen.stm32cubemx.zip。
得到
Readme.html
SetupSTM32CubeMX-4.15.0.exe。
SetupSTM32CubeMX-4.15.0.app。
SetupSTM32CubeMX-4.15.0.linux。
四个文件,exe后缀是windows下的安装文件,很熟悉了,.linux后缀就是linux系统的安装文件,此处用这个文件安装,(前面已经说过,可以直接双击安装),直接执行该文件:
./SetupSTM32CubeMX-4.15.0.linux。
(如果出错,查看文件是否有执行权限,加上权限后再执行)。
效果如图:
此时就会跳出图形安装界面,
这个界面都很熟悉了吧,和windows下一样,按照提示一步一步安装就可以了,甚至可以一路next到底就行。如果双击安装,会直接来到这一步,后面的步骤省略!
到这里,安装就完成了,再安装文件夹下找到STM32CubeMX文件双击,或者通过命令行启动该文件,就可以打开STM32CubeMX软件,见到我们熟悉的界面,使用方法和windows下一模一样,
安装好相应的库之后就可以建立工程了,不过我们还没有开发环境,所以现在先安装开发环境:SW4STM32软件:
执行命令
chmod+x install_sw4stm32_linux_64bits-v1.8.run。
给install_sw4stm32_linux_64bits-v1.8.run添加执行权限,可能需要超级权限,切换到root用户或者命令前加sudo执行,然后该文件就有了执行权限(前面多了x,颜色变了)。
然后执行文件
./install_sw4stm32_linux_64bits-v1.8.run。
开始安装,然后一路next,可以选择自定义安装路径,期间有可能需要输入root用户密码,安装过程和windows基本一样。
出现这个界面的时候,恭喜,安装完成了!!!
这个界面和eclipse完全一样的,喜欢eclipse的会比较习惯这个,不过更方便的是直接安装eclipse下的插件。
现在STM32CUBEMX和SW4STM32都安装好了,接下来建一个工程测试一下,手边刚好有一块Nucleo-F429ZI的开发板,就用这块板来测试,用Cube新建工程应该都熟悉了,这里就不详细描述了。
一般习惯不勾选Generate Under Root,这样文件结构更合理。
生成工程后有这么些文件,然后用sw4stm32打开:
选择File->Import->General->Exist Project intoWorkspace。
选择刚刚生成的工程的文件夹,Finish。
编译一下工程,没有错误,没有警告,然后添加几行测试代码:
然后编译,运行,就可以看到板子上LD2蓝色LED以1 Hz的频率闪烁,电脑上打开串口助手,就能接收到板子发送过来的测试信息,如下图所示。
至此,说明linux下编写stm32程序的环境已经完全搭建成功,并且成功创建了第一个可以运行的测试程序,接下来,就可以愉快的开发自己的stm32应用程序啦。
附上出处链接:http://www.eefocus.com/zero99/blog/16-06/386318_752b3.html?=blog。
操作系统有两种 用MMU的 和 不用MMU的。
用MMU的是Windows MacOS Linux Android。
不用MMU的是FreeRTOS VxWorks ucOS...。
CPU有两种 带MMU的 和 不带MMU的。
带MMU的有 Cortex-A系列 ARM9 ARM11系列。
不带MMU的有 Cortex-M系列...。
STM32是M系列...不可能运行Linux...。
ucLinux不算Linux的。
不知道你是怎么想的,STM32不支持LINUX!
我觉得ARM+LINUX门槛高,做出来的东西不容易被山寨。
现在很多东西都可以用51、STM32来做,但是你的好想法,好创意都容易被其他公司给山寨去。
当然ARM+LINUX也会被山寨,但是要考虑山寨的成本。
我之前的对手公司,准备山寨我公司LINUX创意的产品,但是开发难度大,周期长。不能有效抢占市场,他们来挖人也挖不到,后来它们用UCOS来做。LINUX的强大是它的网络,用UCOS来山寨,再怎么厉害,其他的外设还好说,但是网络那关永远过不去。这就是一个槛。
现在驱动转做软件的大有人在,做好一个驱动基本就不用怎么大改了,而应用就不同了,不同的客户不同的应用。应用的需求大,所以很多做驱动/硬件的转软件。
但是,一般牛B的软件工程师大多是驱动/硬件工程师转过去的。因为他们知道如何将应用程序很好的控制硬件。
STM32是M系列,属于低成本设计,不带MMU控制器,不可能运行Linuxuc,μClinux不算Linux的。
因此基于STM平台且满足实时控制要求操作系统,只有以下5种可供移植选择。分别为μClinux、μC/OS-II、eCos、FreeRTOS和rt-thread。
操作系统有两种:用MMU的和不用MMU的。
用MMU的是Windows、 MacOS 、Linux、 Android,
不用MMU的是FreeRTOS VxWorks ucOS。
CPU有两种:带MMU的和不带MMU的,
带MMU的有Cortex-A系列ARM9、 ARM11系列,
不带MMU的有Cortex-M系列。
工业控制用linux比stm32多。
STM32MP1强调适用于所有用户,但是工业控制领域采用Linux操作系统较多,消费领域采用安卓操作系统比较多,对于这一现状,ST表示第一款产品首先支持Linux操作系统,是从STM32MP1的性能考量。
整套STM32MP1软件套件可以简化客户的流程开发,其中重要的一点是STM32MP1的Linux平台,全面兼容主流行的OpenLinux开发包。目前,STM32MP1SoC驱动程序已被Linux社区采用和认可,ST的STM32MP1支持Linux4.19LTS,LTS表示ST会长期支持这一软件发行版。在支持整个Linux开发源时,STM32MP1全面兼容开源软件的标准,包括Linux的Foundation和YoctoProject,因为Linux代码开源,而且非常多,客户不可能全部都用或者清楚哪个好用,ST在Yocto建立一个Project,客户可以稳定简易使用这个开发包,而且支持Linaro社区,里面有一些参考软件和培训。因为Linux是开源的,代表是公开的,所以预集成安全操作系统OP-TEE,客户不需要再付费;客户可以使用免费的加密OS,让系统在可信区域加密,公开用的数据全部用开源的Linux。
ST还为STM32MP1提供了硬件解决方案。STM32MP1提供两种开发板:一是全部功能板,支持157A和157C,157C是安全加密功能升级的部分;探索板有两套,一套是精简版本,包括MP1+基本外设,还有一个相对完整的功能,配了MIPI屏和Wi-Fi/BT射频模块,当用户需要做无线连接时,可以以此为原型来开发。