2270|5

1643

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

嵌入式系统开发和直接用汇编开发单片机中的项目有什么区别,前者是不是必须在OS上开发 [复制链接]

邀请:@rain   @jxb01033016   @黑衣人   @songbo   @open82977352   @歹匕示申   @daicheng   @辛昕   参与回复

嵌入式系统开发和直接用汇编开发单片机中的项目有什么区别,前者是不是必须在一个单片机的操作系统OS上开发

此帖出自stm32/stm8论坛

最新回复

ls都是热心大侠!   详情 回复 发表于 2020-10-29 09:33
点赞 关注
 

回复
举报

1万

帖子

139

TA的资源

版主

沙发
 

根本不存在楼主的说法,甚至楼主的问题都不成立。MCU即所谓的“单片机”全部都属于“嵌入式计算机系统”,而一般语境下的“嵌入式系统”却专指基于操作系统的二次开发,本身是个错误观念,但将错就错的人很多。嵌入式计算机系统是否需要基于操作系统,完全由应用需求决定。一般而言,采用嵌入式操作系统的应用通常较为复杂,且具有一定通用性或通用子系统,这时采用操作系统会大幅简化通用部分的开发,可以说通用部分甚至可以不必再开发,操作系统已支持。

此帖出自stm32/stm8论坛
 
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 

回复

6105

帖子

4

TA的资源

版主

板凳
 
本帖最后由 damiaa 于 2020-9-1 15:38 编辑

建议新手还是从裸跑开始。搞得清楚一点。裸跑久了再穿衣服那就暖和。

此帖出自stm32/stm8论坛
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

4
 

汇编开发很少了,不是没有,只是很少。

此帖出自stm32/stm8论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

5
 

我非常同意沙发中 @chunyang 大神的说法。

这个问题和表述完全有问题。

我用比较直接和简单的方式来说明,或者说直接给你梳理清楚问题。

 

首先,所谓嵌入式系统,这是个很含糊的说法。

但具体地说,这里就不说什么 狭义广义了,我直接就说,一般而言,“嵌入式”通常指的是跑 Linux Wince这一类较为复杂操作系统的系统,你可以简单类比为 树莓派。

但是,稍微扩展一点,一般把单片机,也就是MCU,SoC也包括进来。

所谓嵌入式究竟是什么。

我以前在知乎写过一个我自认为很生动形象的解释:

所谓嵌入式、嵌入式,人如其名,就是一个嵌在一个更复杂的机电系统里的软硬件系统——实物上表现为硬件电路板,软件指的是里面跑的程序。(当然,操作系统可以视为一个更大的程序,一个底层背景程序)

 

综上所述,嵌入式系统,这个提法,它的核心,我个人认为其实在于它处在一个综合性的系统里,究竟是一种什么集成方式,当然,如今,嵌入式这个词已经变成一个独有的专用术语,和最初这个生动形象的说法已经越来越遥远。

目前,简单来说,除了个人PC,服务器不能称为嵌入式,其实基本上任何你见到的电子控制系统,都可以叫做嵌入式系统。

 

然后,才是你的第二个问题

所谓嵌入式开发,在你的问题语境里,我认为你说的是软件开发。

这个相对好解释,前面说了。

嵌入式分两种,一种是跑Linux或者Wince,或者现在的Android吧,这类的高端复杂,性能强悍的软硬件系统。

另一种是我们常见的MCU。单片机。

 

对于前者来说,那肯定是带系统的,这个时候,你的开发工作,其实也可以分成三部分。

第一种,最常见,应用级开发,类似于你在ubuntu或者,说树莓派吧,更好理解。

你在树莓派上用QT开发一个简单的图形界面,它可能涉及了USB,WIFI或者串口,然后在上面显示出数据。

第二种,也常见,驱动开发。

比如你要给你的树莓派新增一个i2c接口的心率传感器模块,那你得写一个底层的i2c驱动——有了这个,你才能进一步开发上面提到的应用级开发。

第三种,是最高级的,也是非常少见的。

通常除了Linux圈里的一些爱好者以外,一般只有大型公司,会针对他们自己使用的Linux发行版进行系统级的改善。

比方说,Google 华为 小米 这样的公司里,肯定会有一群对Android,甚至是对Android背后的Linux进行系统层面的改进的系统开发人员。

 

但对于MCU,情况就很不一样。

相对于Linux而言,MCU程序的复杂度和代码量级通常小了几个数量级。

通常,在MCU上,最基础的开发是裸机开发,而裸机开发和你用汇编语言还是C/C++这种相对高级的中级开发语言没有任何关系。

你的问题和描述里,这是第二个最大的误解。

当然,MCU和MCU之间,在性能和配置方面的差别,也是非常巨大的,加上针对MCU的简易操作系统,主要是实时系统,即RTOS,如最著名的 FreeRTOS uCos,以及近年来国内非常出名的RTT。

实际上,这种操作系统相对来说是非常简单的,其代码规模并不会比一般的裸机程序复杂太多。

但实际上,在这种简单的小RTOS和巨大的linux wince Android之间,还有许多大小不一的操作系统,比如在复杂机电控制系统上非常常用也非常著名的 Vxworks。

它的代码规模相对于FreeRTOS,uCos(我是指它的内核)要大得多,但比起linux而言,又相对小很多。

 

MCU和在上面运行的OS一样,它们的规模量级范围非常大。

因此,MCU和MCU是很不一样的。

 

所以,不能简单认为,嵌入式的软件开发只有 在OS上二次开发 和 使用最原始的汇编语言 两种。

这里面的东西复杂得很。

此帖出自stm32/stm8论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

423

帖子

0

TA的资源

一粒金砂(高级)

6
 

ls都是热心大侠!

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表