在某些平台上看到很多人鼓吹嵌入式Linux开发比单片机开发要好,让所有人都去做嵌入式Linux开发。说这种话的人大多数是嵌入式Linux的培训机构,或者是一开始就以嵌入式Linux入门的那一批人,当然,也有很多的大佬。

我认为最有发言权的是在单片机行业待了三年以上,然后在嵌入式Linux行业也待过三年以上的人,显然笔者不是,不过笔者还是想把自己的理解写出来。

一个以单片机为主控的产品开发步骤:画原理图---画PCB---在Keil上编程---软硬件Debug

一个以嵌入式Linux为操作系统的产品开发步骤:画原理图---画PCB---在Linux下移植Uboot---

在Linux下移植内核与编写驱动程序---在Linux下移植根文件系统---在Linux下编写应用程序---软硬

件Debug

可以看出,做嵌入式Linux的步骤比做单片机的多很多。

通常一个单片机产品软硬件两个人甚至一个人就可以完成,经常看到某些项目一个人画PCB,打板子回来就开始写程序,一个人软硬件全部做完,软件顶多上一个freeeos或者ucosiii。(不排除某些复杂的项目需要多个硬件与软件)。

嵌入式Linux的软硬件通常比较复杂。先来说说硬件,现在很多的MPU都是需要外挂ROM和RAM,至少现在的主流芯片是这样干的。当然也有那种自带RAM的,例如新唐的NUC977,全志的F1C100S。这些自带的RAM的内存都偏小(128MB的就很少,一般是32MB或者是64MB),只能适合那种中低端的应用。外挂RAM与ROM对硬件的要求就比较高,举个简单的例子,你找出最复杂的STM32FX板卡与最简单的S3C2440板卡。看看那两个板子的原理图与PCB布线难度就知道了。我再说说软件,要跑Linux的项目,一般工程量都比较大。一般的公司会将软件开发人员分为驱动程序编写与应用程序编写这两大类,不排除有公司分的更细。应用软件的代码量通常比较大。

ps:有些MCU也可以跑linux,例如STM32可以通过外挂ROM和RAM跑uclinux(不带MMU)。

单片机的优势:低成本(无论是从物料成本还是从人工成本),不过现在的STM32确实涨的离谱,实时性高(STM32FX跑裸机或者跑ucosii的中断响应肯定比跑嵌入式Linux的芯片中断响应快,不信可以测试),软件开发简单,一个Keil走遍天下,硬件开发简单,通常不需要用BGA封装。

单片机的不足:处理能力不足,不能跑大型的任务,所有项目通常是在一个工程下。修改一个功能就需要更新整个程序。(开发人员薪资偏低,狗头保命)

嵌入式Linux的优势:有大量的开源软件与社区的支持,应用与驱动独立,支持多个进程。MCU就算跑操作系统也只能多线程。应用程序之间可以完全独立开来。例如一个需求:需要一边播放MP3音乐,一边玩游戏。你用Linux开发可以完全将这两个应用放在两个不同的工程里面,如果用单片机开发,你只能放一起。

嵌入式Linux的不足:实时性低(就算是RT-Linux也不如单片机的裸机相应快)。硬件布线复杂,通常涉及到多个BGA封装。软件开发难度高,Linux想吃透很不容易。

做一个产品首先是选型。是MCU跑裸机还是MPU跑嵌入式Linux或者是MCU+FPGA,MCU+DSP,DSP+FPGA,嵌入式Linux+DSP,嵌入式Linux+FPGA,甚至在FPGA中嵌入软核,跑Linux,反正是根据需求来。

嵌入式Linux开发与单片机开发的区别相关推荐

  1. 嵌入式 Linux 与物联网软件开发 ——C 语言内核深度解析

    C 语言是嵌入式 Linux 领域的主要开发语言. 对于学习嵌入式.单片机.Linux 驱动开发等技术来说,C 语言是必须要过的一关.C 语言学习的特点是入门容易.深入理解难.精通更是难上加难.很多用 ...

  2. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"华章计算机&quo ...

  3. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.4 位运算构建特定二进制数...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第2章,第2.4节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"异步社区" ...

  4. linux 下51单片机开发环境搭建

    linux 下51单片机开发环境搭建(arch linux) 编译sdcc 软件: sdcc 命令:sdcc file.c 得到一堆文件需要( .inx) 命令: packihx file.inx & ...

  5. 嵌入式Linux与物联网软件开发:C语言内核深度解析

    嵌入式Linux与物联网软件开发:C语言内核深度解析     1.C语言与内存         1.引言         2.计算机程序运行的目的         3.位.半字.字的概念和内存位宽   ...

  6. ARM-Linux开发与单片机开发的异同

    ARM Linux程序的开发主要分为三类:应用程序开发.驱动程序开发.内核开发以及具有不同特征的不同类型的软件开发. ARM-Linux应用开发和单片机开发的不同 ARM的应用开发主要有两种方式:一种 ...

  7. 【嵌入式Linux】第二部分 - 开发实践

    本部分主要专注构建从0到1的嵌入式Linux学习知识体系,主要设计环境配置,嵌入式Linux基础部分,Linux文件系统及系统移植,驱动开发等知识. 目前持续更新中,更新时间:2022年11月12日 ...

  8. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...

    注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...

  9. linux下51单片机开发解决方案

    上篇: 最近从学长那里淘到了一套单片机开发板,他给我的开发工具,驱动等都是 windwos 下的,而我一直用的是 linux--花了一个周末的时间,终于找到了一个合适的解决方案. 首先,我问了一下狗狗 ...

  10. 嵌入式 linux 应用 go 语言开发(开篇,缘起)

    go语言被称作互联网时代的c语言,用来开发嵌入式linux是一种享受. 希望能否带来开发工作效率的提升,产品质量稳定性方面的提升,产品功能上的增强. 物联网时代,就是要有所"变革" ...

最新文章

  1. 微秒时间_Ublox 1PPS时间脉冲精度配置问题
  2. sqlserver定时差异备份_一分钟看懂完全备份、差异备份以及增量备份
  3. 【原】Java学习笔记030 - 异常
  4. 实心等腰直角三角形。
  5. 关于'java' 不是内部或外部命令,也不是可运行的程序 或批处理文件 和 错误: 找不到或无法加载主类 helloworld的问题...
  6. java索引ref_java – 如何使用jgit库将git HEAD指向特定的ref?
  7. 视频测试序列的下载地址
  8. 软件项目文档_什么是软件项目的好的文档?
  9. 疫情期间我们与你同在:关爱障碍群体刚需,坚持做无障碍的倡议书
  10. Nexus私服学习1
  11. 十个实用的谷歌搜索小技巧
  12. 卡西欧计算机做英语,卡西欧的这个小萌物 原来是台英语学习机
  13. 初等数论及python应用
  14. ZCMU 1919 :kirito's 星爆气流斩 (多重背包问题)
  15. google官方提供的颜色表。
  16. 抢注数字域名 数字含义解释
  17. android简单手电筒,android 简单的手电筒制作
  18. Lodop、C-Lodop页面找不到报404错误解决
  19. TMC260系列电机驱动芯片应用介绍
  20. 马宁伟-20年工作经验谈-3-十年磨一剑

热门文章

  1. 计算机二级c语言编程题库100题下载,计算机二级C语言编程题库100题.doc
  2. python list转json对象,python 对象和json互相转换方法
  3. Pandas高级教程之:时间处理
  4. STM32程序下载1:通过keil-ST-Link方式下载
  5. 精通开关电源设计(二)
  6. Gradle化的Android Gallery3D App
  7. 2021年零基础学Delphi 11开发极简教程
  8. 基于matlab的暴雨强度公式参数推求,基于MATLAB的暴雨强度公式参数推求
  9. maven 压缩html,使用YUI Compressor Maven插件压缩 js,css 输出war包
  10. GPU架构(Fermi Kepler)