
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内核进程调度、存储管理等等,都是我不知道的。没关系的,可以从简单的开始入手,一步一步积累嘛
工业控制用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射频模块,当用户需要做无线连接时,可以以此为原型来开发。
环境:
ubuntu 13.10
stm32f103zet6
一、STM 32 GCC 安装
stm32 属于arm cortex-m系列thumb指令集,所以给arm用的arm-none-eabi就可以了,首先是下载
下载地址:
https://launchpad.net/gcc-arm-embedded/+download
下载其中的gcc-arm-none-eabi-version-linux.tar.bz2
解压到目录会产生gcc-arm-none-eabi的文件夹
把该编译器添加到用户的环境中:
在最后一行添加:
因为之前有添加过树莓派的编译器了,所以实际上是这样的:
两个编译器环境中间用冒号隔开
注销后测试:
可以查看到该编译器的版本,就表示可以了。
二、工程环境的建立
新建个工程文件夹及其目录
下载安装官方库:
1、stm32的寄存器不像51 avr等单片机那么少,自己写写库,背背寄存器就可以了,所以ST公司提供了官方的库。为了避免重复造轮子,就直接采用其库,库版本为STM32_USB-FS-Device_Lib_V4.0.0,这个库多了usb支持,下载的话到st官网搜索stm32f10x就有了。
2、解压把解压好的文件夹复制到刚才新建的libs里面.
3、在工程根目录下新建Makefile.common文件,这个为通用makefile。
编译库文件:
进入libs文件夹,新建Makefile:
编译该库:
就会在lib目录下生成libstm32.a,这个就是编译好的静态库了。
建立工程编译ld文件
这个ld文件,为在编译时告诉编译器把代码放到什么地址,根据芯片的内存以及flash容量不同有所调整。
在工程根目录下新建linker.ld文件
根据芯片型号不同,选择相应的RAM FLASH大小。
在工程根目录下新建Makefile文件:
在src里面添加测试源码,主要是startup.c 以及main.c。
然后进入工程主目录下make就好了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)