学嵌入式要学哪些东西开发还是学Python,还是前端

这几个语言都是目前被广泛使用嘚编程语言各自都有对应的应用场景,都是非常值得学习的编程语言选择学习哪一个编程语言,主要是看从事的领域以及自身的知識结构和学习能力,下面对这几个编程语言做一个概要分析

java语言目前被广泛的使用在大型互联网平台的开发领域,由于Java稳定的性能和健铨的生态Java语言在项目开发方面的风险是比较小的,而且由于目前Java程序员群体比较庞大所以很多技术团队都会选择使用Java的开发方案。Java相仳Html5和Python来说还是有一定的难度,主要是如何理解Java语言的“抽象”过程从发展的前景来看,Java的前景还是不错的

Python随着大数据和人工智能的發展而得到了广泛的关注,Python的语法比较简单同时Python又提供了强大的库支撑,所以使用Python进行编程相对来说还是一件比较愉快的事情Python语言也罙受程序员群体的欢迎。如果未来要从事大数据、人工智能等方面的开发那么学习Python就是一个比较理想的选择了。

前端开发后端化也是一個趋势因此目前的前端开发被赋予了更多的意义。但是前端开发的内容随着移动互联网和大数据的发展而逐渐增多除了传统的Web前端开發之外,目前Android开发、iOS开发、APP混合式开发以及第三方开发(各大平台的小程序等)都逐渐并入到了前端开发团队目前前端开发也是一个比較明显的趋势,所以当前的前端开发也被称为“大前端”从就业的角度出发,学习前端开发是不错的选择但是要想提升自身的岗位竞爭力,要进一步丰富自身的知识结构

但是根据你以上的描述,以你目前的情况如果没有确定自己的发展方向,那么建议可以从前端开發入手原因有以下几点:

第一,前端开发容易上手对于没有编程基础的人来说,选择一门容易上手的语言是比较重要的因为好上手嘚语言更容易建立起初学者的自信。前端开发语法简单实验环境简单(一个记事本加一个浏览器就可以),虽然内容比较多但是学习過程还是会相对顺利很多。

第二前端开发对基础知识要求低。前端学习对数学、数据结构、编译原理等基础内容几乎没有要求而学习Java囷Python,就需要有扎实的数学和数据结构基础对于零基础的人来说,这些基础内容可能需要一个漫长的学习过程

第三,前端开发应用广泛目前前端开发应用非常广泛,随着移动互联网的发展前端开发的应用场景也得到了明显的拓展。而且现在前端开发有逐渐后端化的趋勢比如NodeJS的大面积使用。

前端学习的内容集中在Html、CSS以及JavaScript三个大的方面其中JavaScript的学习是一个重点。目前JavaScript的应用非常广泛大量的开源项目都昰基于JavaScript的,未来JavaScript的应用前景也非常广阔在最新的TIOBE语言排行榜上,JavaScript的排名也比较靠前

以你描述的情况来说,不建议你去自学因为你的學历,而且没有计算机基础的自学对于本身的要求是比较高的,需要自己要有好的约束能力和学习能力往往那些自学成功的人,都是具备了这两点要求可以去参加培训班,但是现在的培训班成本都比较高基本都在2万左右,或者你也可以找一个专业的老师带着你一起學习成本低而且能避免自己少走很多弯路。

希望我的回答对你有帮助另外如果你想从事前端开发,了解前端的相关知识或者说行业方面不懂的问题,我自己做前端开发6年的经验对于前端也总结了一些学习方法和路线,也整理了一套学习视频需要的话可以点击这条鏈接: 另外如果有什么问题,也可以私信我随时来问我,很乐意为你解惑

说到嵌入式要学哪些东西那首先我们要知道,什么是嵌入式要学哪些东西嵌入式要学哪些东西说白了就是嵌入式要学哪些东西系统。从应用对象上加以定义来说它昰一个软件和硬件的综合体,还可以涵盖机械等附属装置一个嵌入式要学哪些东西系统装置一般都由嵌入式要学哪些东西计算机系统和執行装置组成,嵌入式要学哪些东西计算机系统是整个嵌入式要学哪些东西系统的核心

生活中,智能手环、智能音箱、智能家电、共享單车、无人驾驶.....这些都属于嵌入式要学哪些东西系统其特点是由嵌入式要学哪些东西计算机系统和执行装置组成。嵌入式要学哪些东西技术为人类带来了今日的美好生活人们怎么可能浅尝辄止,为了将嵌入式要学哪些东西技术发扬光大国内的DJI、美团&NINEBOT、小马智行、地平線、小米等优秀企业正使用嵌入式要学哪些东西技术优化人类的生活。 显而易见嵌入式要学哪些东西开发这条路是光明的。

01 嵌入式要学哪些东西开发需要学习哪些内容

那么,如果我们想学习嵌入式要学哪些东西需要掌握哪些内容呢?其实我们直接分析大企业嵌入式偠学哪些东西相关岗位的工作描述,就可以找到答案也是我们努力的方向。十几年前的嵌入式要学哪些东西开发受限于硬件处理器的性能无法实现复杂的逻辑和功能,使得嵌入式要学哪些东西产品功能单一现在嵌入式要学哪些东西开发随着处理器的成长要面对全新的挑战:计算性能和内存永远不够用、为了保障不丢帧要求高效的实时性、高级接口和协议栈的产生导致代码的规模越来越大。为了应对这些新的挑战各大企业对工程师有以下几个方面的要求:编程能力、处理器架构、操作系统、接口与驱动、Framework、应用编程与调试、硬件知识。

嵌入式要学哪些东西工程师大类上属于软件工程师的范畴编程技能是基本功,DJI、小马智行、NINEBOT、石头科技、OPPO、小米、地平线这些公司都對C/C++要求熟练掌握的程度除此以外对解释型语言要求为至少熟悉一种脚本语言。了解Linux系统会使用Makefile工程管理工具等。可见C和C++仍旧是嵌入式要学哪些东西开发绝对主流的语言。底层软件这么多年来一直是C的天下,在可预见的将来不会改变。随着系统复杂度越来越高越來越多的应用层软件采用C++来编写。Sehll主要用于制作工程管理工具Python可以让你和人工智能工程师愉快对话。

美团、小马智行、石头科技、OPPO、VIVO都偠求熟练掌握或者精通STM32单片机和ARM处理器架构其它加分项有DSP、熟练使用ARM Cortex-A或M系列内核的SOC。这部分我们需要了解Cortex-M和Cortex-A系列处理器架构哈佛架构、冯诺依曼架构、多级流水线、是最简单的问题。SIMD、MIMD、指令预取、乱序执行这些概念也要搞懂

目前的电子产品功能越来越多,也越来越複杂操作系统可以极大地简化产品的开发难度。大疆、美团、小马智行、小米、地平线都要求熟悉Linux下的多进程多线程、网络编程的开发囷调试内存、功耗、性能优化等。无人驾驶和无人机这些对响应速度要求高的行业,对实时操作系统也有不同程度的要求在这一部汾我们需要掌握基本的操作系统知识,理论结合实际熟悉一个RTOS,大多数的RTOS的复杂度远小于LinuxLinux拥有完善的生态,相较于RTOSLinux的C库配置已经很完善了但是想要用好就有一定难度了,在这里需要了解内存管理、进程管理、多核、中断、锁、消息队列性能分析等等内容来应对开发笁程中帧率下降、系统秒级卡死、相机丢帧等异常。

许多初涉嵌入式要学哪些东西行业的人会狭隘的认为搞嵌入式要学哪些东西就是写驱動美团无人配送、小马智行、石头科技对CAN、SPI、I2C、UART这些常见的低速接口都要求熟悉,其它的像LCD、Touch、Camera、USB、BT/WIFI/GPS、IMU这些进入寻常百姓家的Sensor驱动开发經验是妥妥的加分项低速接口的驱动,在厂家提供的BSP中一般都有只需要仔细看手册,搞清各接口所需的工作模式并做适当配置该用Φ断的时候用中断,该用DMA的时候用DMA即可。

中间件和协议栈的部分有一个特点研发机器人的企业一般都会要求熟悉ROS,相机类的企业要求熟悉camera、codec、storage相关的pipeline还有基本的协议栈也是必须了解和掌握的。

美团无人配送、小马智行、NINEBOT、小米都要求熟悉Linux或Unix系统编程了解基本的编译原理,需要掌握gdb、valgrind、strace、perf、coredump等调试手段用好log系统。只要掌握上面编程能力、操作系统、Framework这些内功心法调试工具不过是招数。

科技企业大哆要求了解一定的硬件知识基础硬件知识的掌握程度,达到可以看懂原理图并对常见的元器件有一定了解熟悉模电数电知识即可。基夲上是电子工程类学生所学专业课的内容。另外要会使用示波器等测试仪器,会驱动常见的传感器等

02 嵌入式要学哪些东西开发如何叺门?

嵌入式要学哪些东西系统专业是综合了计算机硬件技术计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知识非常广泛

在开始学习嵌入式要学哪些东西之前,首先要打好基础其中最重要的是C语言基础,要至少达到能单独编写调试一个500行的小项目(大概是一个本地员工管理系统的代码量)能够了解C语言的基本语法规则,基本语句的使用理解指针概念并能灵活使用各种指针。茬学习C语言的过程中指针的概念比较难理解,但是如果对计算机组成原理有了解的话地址和 指针,源码和可执行程序软件通过寄存器控制硬件这些概念都会变得很清晰。

那学习C语言使用什么环境

首选方案,Windows安装虚拟机虚拟机运行Linux操作系统,编辑器选择vim命令行运荇gcc编译器编译环境。

为什么要用Linux操作系统呢

从上文中的各大企业对研发工程师的要求可以看出,Linux操作系统在嵌入式要学哪些东西行业中嘚地位是任何操作系统不可比拟的许多公司为了保护自己的代码产权,开发用的主机直接运行Linux操作系统并在命令行终端来控制主机。絀于未来工作中尽快适应这种开发环境所以可以在入门的时候就直接体验和见识酷炫的Linux操作系统。但是入门阶段并不需要刻意背过Linux的各種使用命令、Linux各种服务器的配置还原备份各种操 作等,只要会基本文件相关的命令会使用vim编辑器和gcc编辑器即可。大约一周的时间即可熟悉Linux系统你会体会到Linux和Windows系统的不同,摆脱对图形化界面的依赖当学会了C语言编程后,你需要掌握操作系统相关的知识多线程多进程編程、网络编程。通过实践学习一些接口函数完成一些小项目比如银行家算法、网络聊天室等对操作系统的知识有一个初步的感性认识。

以上的所有编程学习都是在单一的环境下进行的即开发环境和运行环境都是一样的都在Ubuntu下进行。难道嵌入式要学哪些东西开发就是如此吗说好的软硬件可裁剪呢?别急紧接着我们就需要加入MCU和CPU的学习,要学习ARM是什么不同系列的MCU开发方式不同,ARM Cortex?-A 系列应用型处理器可向托管丰富OS平台和用户应用程序的设备提供全方位的解决方案,从超低成本手机、智能手机、移动计算平台、数字电视和机顶盒到企業网络、打印机和服务器解决方案是作为学习嵌入式要学哪些东西的合适的素材。现在嵌入式要学哪些东西的学习资源丰富选择合适嘚Cortex?-A 系列的开发板后,根据裸板开发、系统移植、驱动开发这样的顺序学习裸板开发的学习主要是感受一下如何通过编程实现控制硬件。系统移植中我们会发现搭载Linux操作系统的板子功力大增交叉编译工具链的出现使得我们对架构两个字有了更深入的认识。刚刚还在怀念茬Ubuntu下编写C代码运指如飞的感觉现在可以继续编写Linux风格的C代码了。

前面裸板开发和驱动移植的学习目的是面对接下来的驱动大魔头学习驅动开发我们需要有一个空杯心态,需要有主动理解Linux内核设计理念的意识(但是不要钻牛角尖)时刻把握Linux下一切皆文件的宗旨和分层的思想。当我们在这一阶段点亮开发板上的一盏明灯恭喜你,一只脚踏进嵌入式要学哪些东西开发的大门了

体会了最基本的驱动开发后,嵌入式要学哪些东西学习还未结束但是之后的学习我们有了一些选择的主动权,当我们看到一些有意思的嵌入式要学哪些东西小项目我们可以理解它的实现思路。而最好的学习方法是自己实践完成一些小项目你也许不满足之前所学,为什么不能把黑乎乎的命令行终端优化成精美的液晶屏显示C++和Qt的学习就在所难免了。不过还好有C语言的加持,C++的学习变得比较顺利最大的困难应该在于面向过程到媔向对象思维的转变。

那么如果你已经可以实现一个小型的嵌入式要学哪些东西项目了,但是如果大火的人工智能技术可以加入到这个尛项目中想必一定非常酷炫,我们可以把呆板的用户界面输入改成图像识别或者人脸识别现在编写人工智能代码最广泛的语言是Python3,在github仩有许多的开源项目和代码为了看懂开源代码,暂且不管复杂的数学相关的算法首先需要学习Python3。其实Python3也是一种解释型语言,之前的基础学习中我们学过Shell两者都是解释型语言,最大区别在于运行的环境和应用的场景不同Shell多用于编写Linux系统下的小工具,Makefile的编写是最大的應用场景Python可以运行在Windows和Linux下,移植了Python的开发板可以根据各大AI开放平台的支持,将设备接入平台调用云平台提供的API实现图像识别、人脸識别、文字识别......

一个产品级的项目考虑的不仅仅是功能的实现,还要考虑功耗、成本此时你会发现许多低功耗的模块可以取代之前基于ARM Cortex?-A的开发板,STM32映入眼帘STM32的开发原理无非也是控制寄存器驱动硬件模块,在芯片手册中挣扎一段时间通过一周的时间熟悉CubeMX和keil的使用,驱動一个温湿度传感器或者其它传感器模块在这个过程中我们就可以了解STM32开发的基本套路。

本文首先通过分析各大企业对嵌入式要学哪些东西开发的岗位人员的要求,得到嵌入式要学哪些东西开发人员需要掌握的技术然后结合自己的经历对入门嵌入式要学哪些东西的学習路径提出个人的建议。我们可以了解到嵌入式要学哪些东西开发的入门级别需要熟练掌握C\C++,有熟练控制寄存器的能力无论是通过驱動还是直接控制裸板。有管理工程代码的能力这里需要学会Shell编程,会搭建基本的开发环境并编写合理规范的Makefile。我认为只要掌握上述嘚技术,中间一些学习顺序不必完全遵循像是先学STM32还是先学ARM Cortex?-A开发板的系统移植,根据自己的需要和兴趣选择就好学习的过程本就有迭代和螺旋上升的特点,面对陌生的技术要学会举一反三可以通过接触过的技术对比去理解。最后祝看到本文的你,可以通过过硬的開发技能拥有自由选择职业底气。

领取价值5000元课程视频资料活动

95个课程视频+课程配套源码+4大案例拆解视频

我要回帖

更多关于 嵌入式要学哪些东西 的文章

 

随机推荐