操作系统有两种 用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的。
工业控制用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射频模块,当用户需要做无线连接时,可以以此为原型来开发。
linux开发是指:硬件开发?驱动开发?应用程序开发?
STM32是cortex-M内核,一般能跑linux的都是cortex-A核,架构差异蛮大的。
STM32单片机 = cortex-M内核 + 外设。
arm soc = cortex-A内核 + 外设。
先说结论:单片机开发基础对linux开发有帮助,但是很有限。
STM32基础:我个人认为是一定的code能力+寄存器配置能力 + 小型程序开发能力 + 外设驱动能力。
先大概说一下linux启动流程吧:
1、FSBL:引导程序,厂家固化的,不用管;
2、SSBL:bootloader程序,一般用u-boot,厂家会提供一个可用版本,定制裁剪功能看个人需求;
3、linux内核 + linux驱动。
4、跟文件系统rootfs,可能需要增添删改。
linux毕竟是庞大的操作系统,开发起来当然也非常复杂,需要的技术栈十分庞大,比如:
makefile、链接脚本、交叉编译、shell脚本、设备树、驱动框架等等。
即使是linux驱动开发也是基于框架的开发,与单片机开发差距较大。既然想进入linux世界,先从空杯心态开始吧。
写这么多,不是说linux很难,其实任何东西入门容易,精通难,比如Linux内核进程调度、存储管理等等,都是我不知道的。没关系的,可以从简单的开始入手,一步一步积累嘛。
软件版本
STM32CubeMX版本6.0。
ubuntu系统信息
安装好后的stm32CubeMX长这样:
stm32CubeMX
1. 下载好安装包文件,是一个压缩包,en.stm32cubemx_v6-0-0.zip。
2. 解压
3. 解压后是1个文件夹加上3个文件,推荐看ReadMe.html,然后即可以关闭本网页了。
4. 如果你接着看下来,那么我就把里面内容摘出来。
4.1. 打开Terminal,在你解压后的目录下运行chmod 777 SetupSTM32CubeMX-6.0.0.linux。
4.2. 双击文件 "SetupSTM32CubeMX-6.0.0.linux"。
5. 然后就和你在Windows下安装的一样了。
第一,学习一下不同体系的单片机,如pic,avr,freescale等,粗略了解各单片机异同。因为不同企业使用的单片机不同。
第二,学习一下控制理论,有助于理解与设计控制策略。
第三,学习一下机电控制。
至于代码,我想已经不是主要的了。对于智能玩具的开发,不是一个人能做的,是一个系统,设计与编程是两个专业了,互相之间只需要了解对方的需求,而不要求精通。