0
关注
3009
浏览

想要学习物联网,基础知识是嵌入式Linux么?

为什么被折叠? 0 个回复被折叠
SmartLife366 核心会员 用户来自于: 北京市
2026-01-14 08:07
基础知识有,而不是“是”。要学的还很多。
物联网那些事 核心会员 用户来自于: 北京市
2026-01-14 07:20
嵌入式是物联网技术的一个方面,如果你从事技术方面的研究开发 这块算是基础了 先大致说一说我的工作经历。97年毕业后做了两年的电气与电子设计与开发,这一时期,我做过电路原理图的设计和PCB板的设计。从99年开始,我进入了软件行业。第一次做嵌入式开发是在2000年,在随后的六年多的时间里,我差不多做过整个操作系统的组件。一开始用的是uC/OS RTOS,熟悉它的人知道,它是一个微内核,提供了任务的调度、Mutex、Semaphore等基本的功能,但是像TCP协议栈、文件系统、堆管理(指malloc/和free)这些功能都没有,当然也包括没有相应的硬件驱动模块,如PCI、串口、I2C、IDE硬盘等。第一次做的这个产品是一个DVR(Digital Video Recorder),CPU用的是AMD的SC520,是一块x86的处理器。因为公司小,所以整个DVR的嵌入式软件就我一个人做,这对于我来说是一个难得的机会和挑战。我所做的包括: 1) 熟悉CPU。x86中存在实模式和保护模式,CPU一上电后进入的是实模式,要进入保护模式则需要做一定的设置,最后做一个长跳转,就能进入保护模式。对于这一处理器的熟悉和了解,使得我对于处理器有一个很好的认识。此外,还得明白什么是芯片组、PCI的原理和配置方法、SDRAM如何配置、IDE的PIO模式是如何工作的,等等。 2) 熟悉uC/OS RTOS并对其进行扩展。理解任务是如何实现的、任务是如何被调度的、Mutex和Semaphore是如何实现的、对处理器进行开关中断的目的是什么且要注意什么,等等。对于RTOS的扩展则包括实现了一个采用malloc/free进行内存分配的堆管理模块,这一管理模块是参照XINU操作系统来实现的;对任务调度部分进行修改以方便中断服务程序的管理。 3) 将MINUX操作系统的文件系统移植到我们的DVR上。MINUX中采用的就是UNIX中的i-node的方式来管理文件的,这种方式在现在的Linux中也能看到。由于MINUX的文件系统是针对小型存储设备的,所以对其代码要进行修改,以适应当时所采用的上G的硬盘。 4) 将XINU中的TCP协议栈移植到DVR上。我记得很清楚的是,当时对于TCP的滑动窗口的调试以及校验和的调试花了不少时间。 可以说这一时期的工作,使得我对于操作系统的原理和实现非常的熟悉。还有,我在这一公司使用过了逻辑分析仪去分析总线信号以解决问题,这些都是非常好的经历,都有助于提升对计算机系统的理解。 2003年我加入了UTStarcom,因为前一个项目的经历,当时进这一公司时觉得自己很牛。但很快我发现,嵌入式系统中还有很多是我要学的,我还嫩呢。比如: 1) 第一个挑战是处理器,当时用的是PowerPC8250。对于处理器,我花了不少时间去读相关的资料。总的加起来,其手册超过两千页,而且还是英文的。为了使得自己更加的熟悉这块处理器,我前前后后对这些资料完整的读了三四遍。 2) 当时采用的是RTEMS操作系统,这一系统就是一个类UNIX的操作系统,早期是美国军方使用的,后来变成了开源项目。在这一操作系统上的工作经历让我一下子意识到了自己的一个问题,那就是:以前的工作只是技术性的不具备系统性。比如,如何将一个操作系统作为一个系统将其设计得更好、驱动程序如何方便增加以及扩展,等等。这一切说到底是自己的设计能力还是不足。我花了很长的时间来研究RTEMS操作系统的实现,这对于提升自己的设计能力有很大的帮助。 3) 对于编译器和C语言的理解不深。比如什么是ABI(Application Binary Interface)?后来知道Stack Frame和程序的调用栈的管理都与ABI有关系。 在UTStarcom工作的初期,所有与操作系统相关的问题都是由我来解决的。此外,在我的经理的支持下,我还做过了一个更新版本RTEMS操作系统的移植,当时,UTStarcom的RTEMS操作系统的移植是在新泽西完成的,我不知我是不是UTStarcom在中国第一个做这个操作系统移植的。当时,我在做移植时还碰到了一个与编译器相关的问题,还找过WindRiver做支持。因为我们用的是WindRiver的调试器,当时怀疑是调试器有问题,最后发现是RTEMS的Tool Chain有Bug。UTStarcom的中期,我们将我们的应用程序移植到了VxWorks上,所以后来我对于VxWorks也很熟悉。后来还做过了一个ADSL接入的项目,采用的还是VxWorks以及PNE(Platform for Network Equipment),处理器用的是Intel的XScale IXP425。2006年5月我离开了UTStarcom。 应当说,前面两个公司工作经历是我很宝贵的财富。一方面完成了从小公司到大公司的转变,说实在的在进UTStarcom时,还是很有压力的。什么都是新的,新的行业、新的产品,当然对于我来说是直接工作内容的变化,新的处理器、新的操作系统、等。前两个公司有一个工作情景我一直很怀念,那就是:我是一手拿示波器,一手拿电路原理图进行软件调试的。 好了说了这么多,现在我想说说我对于嵌入式系统开发的感受和看法。在此,我想先说说什么是嵌入式开发,这一点我看过不少对其的定义。先抛开别人的定义,我想说说我的观点。有不少工程师的工作是写运行在RTOS之上的应用程序的,但他(她)其实根本不用接触硬件相关的知识、不用接触什么是中断、也不用考虑任务的优先级,对于这些工作我不认为是嵌入式开发,其实,说到底只是采用了新的一套API(即RTOS的相关函数)进行编程。嵌入式开发我认为至少要与硬件和RTOS打交道,对一操作系统的原理和实现很清楚。从我的角度来看,如果一个写驱动的人只知道驱动相关的内容,而对于操作系统的机理并不是很清楚,那也不能算是嵌入式系统开发,就是驱动开发。下面是我对于嵌入式系统开发的一些看法。 1) 嵌入式开发对于提升我们的系统知识有很大的帮助,尤其是操作系统的知识。嵌入式系统开发对于我们的知识面要求非常的广,且要有一定的深度。在做嵌入式开发之前,我是做Visual C++开发的,当我做过嵌入式开发后,我就能明白在Windows桌面上双击鼠标时,后台有什么事情发生了。比如,我能想到后面有一个Loader将文件加载到内存,并最终运行程序。虽然,没有做过嵌入式开发也能想到这一点,但能看到的深度是不同的。 2) 当我们对于操作系统的原理和实现非常熟悉后,嵌入式系统开发的工作相对简单。因为,操作系统的概念已经很成熟了,而现在的嵌入式系统就是将现代操作系统的技术运用到嵌入式系统。这里说的简单,主要是强调其需求相对的稳定、功能相对的单一。软件设计真正复杂是做应用,应用开发是我们真正能发挥设计能力的地方。 3) 嵌入式系统开发经验对于提升我们解决问题的能力有及大的帮助。因为我们系统性的知道了软件是如何被组织在CPU上运行的,这对于我们分析和解决问题很有意义,对于自己解决复杂问题的信心也很有帮助。 4) 具备一定的硬件知识对于嵌入式开发大有裨益。比如,我们要明白什么是片选,什么是3态,什么是I/O,如何看时序图等等。最好还得会使用相关仪器,比如示波器、逻辑分析仪。 最后,我想说的是嵌入式系统开发一旦我们达到了一定的水平后,其实很简单,就是如何去看CPU和相关芯片的Datasheet!
润松 核心会员 用户来自于: 北京市
2026-01-14 06:52
以我个人的几年观察来看 学习物联网,嵌入式系统是基础之一,肯定是要掌握,但是Linux只是嵌入式系统中的一种,还有其他很多种嵌入式系统 Vxworks:可靠性极高,应用于航空航天、工业医疗等领域,但学习成本高 FreeRTOS:内存资源占用极小,0.5KB内存即可,适合嵌入式硬件。 Contiki:内存资源占有较小,不到10KB, Tiny OS:低功耗,内存资源占有小,适合低功耗无线网络领域 RIOT OS:仅需1.5KB内存资源,支持多线程、动态内存等功能,支持高效电源利用和无线支持 基于Linux系统的开源物联网系统 华为LiteOS:支持多功能和广泛无线支持、Raspbian、三星Tizen、Google Brillo、Ostro、HelloX、RTthread等 可以看到,嵌入式Linux只是物联网中的一种操作系统,但是Linux也是相对主流的物联网操作系统,Linux已经完善成熟,有丰富学习资料,学习成本也相对低,所以打基础当然首选Linux 选择哪个物联网操作系统学习,要结合应用领域,考虑该OS的硬件平台、通信协议支持、内存资源占有大小、是否支持高级功能等... 除了学习OS,还要了解其他基础知识: 1传感器:物联网的数据采集离不开传感器,也要大概了解下各种传感器的性能和基本原理等 2 通信连接协议:TCP/IP/WiFi、Bluetooth、ZigBee、3/4G、MQTT等,要结合选择学习的OS学,看该OS是否支持该通信协议 3硬件架构平台:基于ARM芯片还是其他芯片,设备硬件平台很重要,也要大概了解下 4 数据存储:选用何种数据库 5 开发语言:C/C++、Java、javascript、python等 选用何种语言,看选用的物联网具体类型,是设备端开发、还是网关端开发、还是软件端开发 还要看看开发环境,针对不同操作系统的开发工具,实现具体的应用功能 6协同架构:通过标准的网络通信协议来实现不同标准之间的设备通信,提供设备的发现、初始化设置、协同交互等 7 运行库:基本操作、传感器接口支持、安全协议、后台连接等 等等 所以,学习物联网,嵌入式Linux只是其中的一个基础知识点而已,物联网本来就是个大坑,牵扯到软硬件等各方面,还要很多东西需要学习

关于作者

问题动态

发布时间
2026-01-14 08:43
更新时间
2026-01-14 08:43
关注人数
0 人关注

推荐内容

物联网的发展趋势和商业模式会是什么?
智能家居里的布线为什么这么重要?
物联网是什么?目前物联网相关产业有哪些?
什么是物联网?
请阐述计算机前沿技术物联网发展现状与趋势?
光纤传感领域目前形势如何?
ZigBee是如何组网的?
如何评价LoRa这项应用于低功率长距离场景的物联网传输技术?
那种无线技术最有可能会统治物联网世界?
物联网专业的学生的发展方向选硬件还是软件?
All Rights Reserved Powered BY WeCenter V4.1.0 © 2026 粤ICP备20025096号-2
  

粤公网安备 44190002007303号