对于更开始入坑的同学,可能也像我一样搞不清楚两者的区别与联系。现在结合知乎网上的相关资料发一篇文章来具体分析。

基于STM32的开发属于微控制器开发领域,主要开发工具是keil或IAR,这种开发更准确的说法是单片机开发或者硬件开发;而招聘里所说的嵌入式开发,开发环境是基于Linux操作系统,这种开发一般会分为几个层次:驱动开发、操作系统层开发、应用层开发。开发后者所需了解的知识和前者的不是在同一个层次上。

如果玩过Arduino和树莓派,那么这个就很好理解了。STM32开发和Arduino是同一个层次,处于微控制器级别;嵌入式Linux开发和树莓派一个层次,属于微处理器级别。

更详细地说,单片机开发主要在于控制、检测和传输数据,比如控制继电器开关以控制门锁,检测温湿度上传数据到网关。而处理器除了可以做单片机的事,还可以处理音视频等计算量很大的任务,有文件管理系统也有更多的存储空间,以及该平台所提供的「开封即用」的工具(即安装后就可以直接使用),比如在树莓派上运行一个人脸检测系统是没问题的,在树莓派上搭建Web网站也是很方便的。

嵌入式Linux使用的主控芯片比STM32更高级。什么叫高级?除了运行速度内存空间等特性以外,从拿到芯片开始开发,到最后成为一个完整的产品原型或方案,其过程需要用到很多开发工具,硬件电路板的设计、驱动层和系统层代码的移植,应用层代码的编写,这些是需要一个团队合作完成的,当然大牛也可以独立完成,但是需要非常非常多的精力,同时项目周期也会拖得非常非常的长。

嵌入式Linux开发,不是像单片机开发那样设计好硬件后,只需要打开IDE编写代码,然后烧录测试改代码烧录测试改代码。

放上一张ARM芯片内核汇总图片。其中STM32内核属于Cortex-M系列,嵌入式Linux所用内核可能是Cortex-A系列。有的Cortex-M不支持MMU内存管理单元,据我所知最多只能上到 µC/OS系列的嵌入式系统,而Cortex-A支持MMU,可以上类Unix系统。一旦上了类Unix系统,底层的东西就可以封装起来,只提供接口给上层开发人员。

这里科普一下。如果学过面向对象编程,那封装和接口就很容易理解。封装是把实现细节尽可能的隐藏起来,对外提供一个或多个公共接口,开发人员只需要知道这个接口怎么调用即可,不需要知道是怎么实现的。这一点和基于单片机开发很大不同,单片机开发本质就是“面向寄存器开发”。而嵌入式Linux开发,是"面向N-1层开发",比如应用层就是“面向操作系统层API开发”。

当然,现在STM32有了STM32Cube这个开发工具,就好像把STM32开发封装一层并提供接口一样。但对我来说,Cube只是一个“开发框架”或"中间件",Cube使开发者配置引脚更省心省力,同时把寄存器封装了一层,以更友好的方式告诉开发者,开发者只需要根据接口文档提供的接口去调用即可(可惜Cube的文档、学习和开发资料太少)。我要是不用Cube,也可以开发STM32,没有Cube以前开发者都是直接看芯片手册开发的。

而对于嵌入式Linux开发,则不能脱离N-1层,不了解底层API都不知道要做什么,例如使用TCP,至少也要知道Socket接口,例如编写Web管理页面,至少也需要一个Web框架(比如Python的Django)及Web服务器(比如Apache)。当然,由于嵌入式Linux都是基于类Unix开发,很多接口及其知识都是通用的,掌握了底层接口以后可以更多的关注业务逻辑。而在单片机开发中,换了一个芯片就需要重新看芯片手册,哪怕是实现相同的功能也有种重新开发的感觉,所以芯片选型阶段也是重中之重。嵌入式Linux应用层开发则不用那么麻烦,只要操作系统是类Unix,底层提供相同的接口即可代码重用。

嵌入式linux和stm32嵌入式开发这两者之间有什么关联性的更多相关文章

  1. 从嵌入式linux到android应用开发

      时间过得很快,转眼之间已经到新公司一个月了.虽然学到了一些移动开发的知识,但是觉得离我的目标还很远,完全没能达到我想要的水平.以前产品都是自己主导的,需要完成什么,计划什么也是自己主导,现在得从头 ...

  2. 转: 嵌入式linux下usb驱动开发方法--看完少走弯路【转】

    转自:http://blog.csdn.net/jimmy_1986/article/details/5838297 嵌入式linux下的usb属于所有驱动中相当复杂的一个子系统,要想将她彻底征服,至 ...

  3. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...

  4. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

  5. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  6. 是否要从单片机转为嵌入式Linux?

    作者:嵌入式老鸟火哥 授权转载于公众号嵌入式老鸟的职场之道(ID: ict_embedded),有增加内容和修改. 最近很多童鞋投票并咨询如何从单片机转为嵌入式Linux开发.看来读者圈中做单片机,R ...

  7. 嵌入式 Linux 应用:概述

    转载:http://www.ibm.com/developerworks/cn/linux/embed/embl/overview/index.html   从腕表到基于群集的超级计算机 在对嵌入式 ...

  8. gdbserver远程调试嵌入式linux应用程序方法

    此处所讲的是基于gdb和gdbsever的远程调试方法.环境为:PC机:win7.虚拟机:10.04.下位机:飞嵌TE2440开发板. 嵌入式linux应用程序的开发一般都是在linux里面编写好代码 ...

  9. 浅析嵌入式Linux系统的构成和启动过程

    在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...

随机推荐

  1. spring注解(Component、依赖注入、生命周期、作用域)

    1.注解 注解就是一个类,使用@加上注解名称,开发中可以使用注解取代配置文件 2.@Component 取代<bean  class="">,@Component 取代 ...

  2. spark源码分析, 任务提交及序列化

    简易基本流程图如下 1. org.apache.spark.scheduler.DAGScheduler#submitMissingTasks 2. => org.apache.spark.sc ...

  3. spring源码之bean的初始化及循环引用

    实例化方法,把bean实例化,并且包装成BeanWrapper 1.点进这个方法里面. 这个方法是反射调用类中的 factoryMethod 方法. 这要知道@Bean 方法的原理, 实际上sprin ...

  4. 开源发丝分割数据集CelebAHairMask-HQ(国庆献礼)

    在这个特别日子里,举国欢庆,什么都可以缺席,大礼包不行. 本次开源针对CelebAMask-HQ中发丝部分进行细化的数据集. 该数据集可用于发丝分割等方向的研究和探索. 在过去的一年时间里,疫情改变很 ...

  5. 075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现

    075 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 07 综合案例-数组移位-主方法功能4的实现 本文知识点:综合案例-数组移位-主方法功能4的实现 说明:因为 ...

  6. Matlab2016b安装流程

    来源:https://jingyan.baidu.com/article/59703552da12ab8fc007402b.html Matlab2016b安装教程 听语音 原创 | 浏览:34338 ...

  7. 使用AirtestProject+pytest做支付宝小程序UI自动化测试

    一,前言 1,背景 因公司业务需要做支付宝小程序的UI自动化测试,于是在网上查找小程序的自动化资料,发现微信小程序是有自己的测试框架的,但几乎找不到支付宝小程序UI自动化测试相关的资料.白piao失败 ...

  8. (SpringBoot-Jpa)使用Idea数据库自动脚本Generate POJOS生成 Entity对象,

    因:使用SpringBoot -jpa,需要手动配置Entity 但是如果你的表中有很多属性,或者有很多表怎么办?? 每个手动写? 还是用mybatis.写mapper??? 解决:使用idea自动工 ...

  9. Nuxt+Vue聊天室|nuxt仿微信App界面|nuxt.js聊天实例

    一.项目简述 nuxt-chatroom 基于Nuxt.js+Vue.js+Vuex+Vant+VPopup等技术构建开发的仿微信|探探App界面社交聊天室项目.实现了卡片式翻牌滑动.消息发送/emo ...

  10. Mock测试你的Spring MVC接口

    1. 前言 在Java开发中接触的开发者大多数不太注重对接口的测试,结果在联调对接中出现各种问题.也有的使用Postman等工具进行测试,虽然在使用上没有什么问题,如果接口增加了权限测试起来就比较恶心 ...