南京华清远见Logo

0
在招课程

0
校区数量

 

咨询电话:

南京华清远见告诉你零基础怎样学习嵌入式?

 

南京华清远见告诉你零基础怎样学习嵌入式?

 

大家眼中的嵌入式是什么呢?我们可能在大学焊过电路板、组装过收音机、课程设计仿真过密码锁、计分器,学过汇编、了解C51,高大上点儿的毕业设计玩过传感器,参加过竞赛,做过一些智能机器人、智能家居、智能温控大棚等项目,这难道就是嵌入式吗?南京华清远见告诉你零基础怎样学习嵌入式!

嵌入式人工智能是一种软硬结合的技术,通过智能算法在嵌入式终端设备上的运行,实现实时感知、人机交互、决策控制。广泛应用于智能交通、智慧医疗、机器人、无人驾驶、智慧物流、工业自动化设计、智慧城市、航天军工等细分领域。

南京华清远见教你如何零基础学习嵌入式

01 嵌入式人工智能要学习哪些内容?

十几年前的嵌入式开发受限于硬件处理器的性能,无法实现复杂的逻辑和功能,使得嵌入式产品功能单一。

现在嵌入式开发随着处理器的成长要面对全新的挑战:计算性能和内存永远不够用、为了保障不丢帧要求高效的实时性、高级接口和协议栈的产生导致代码的规模越来越大。

为了应对这些新的挑战,各大企业对工程师有以下几个方面的要求:编程能力、处理器架构、操作系统、接口与驱动、Framework、应用编程与调试、硬件知识。

1. 编程能力

嵌入式工程师大类上属于软件工程师的范畴,编程技能是基本功,DJI、小马智行、NINEBOT、石头科技、OPPO、小米、地平线这些公司都对C/C++要求熟练掌握的程度。

除此以外对解释型语言要求为至少熟悉一种脚本语言。了解Linux系统,会使用Makefile工程管理工具等。

可见,C和C++仍旧是嵌入式开发绝对主流的语言。底层软件这么多年来,一直是C的天下,在可预见的将来,不会改变。

随着系统复杂度越来越高,越来越多的应用层软件采用C++来编写。Sehll主要用于制作工程管理工具,Python可以让你和人工智能工程师愉快对话。

2. 处理器架构

美团、小马智行、石头科技、OPPO、VIVO都要求熟练掌握或者精通STM32单片机和ARM处理器架构,其它加分项有DSP、熟练使用ARM Cortex-A或M系列内核的SOC。

这部分我们需要了解Cortex-M和Cortex-A系列处理器架构。哈佛架构、冯诺依曼架构、多级流水线、是最简单的问题。SIMD、MIMD、指令预取、乱序执行这些概念也要搞懂。

3. 操作系统

大疆、美团、小马智行、小米、地平线都要求熟悉Linux下的多进程多线程、网络编程的开发和调试,内存、功耗、性能优化等。

无人驾驶和无人机,这些对响应速度要求高的行业,对实时操作系统也有不同程度的要求。

在这一部分我们需要掌握基本的操作系统知识,理论结合实际,熟悉一个RTOS,大多数的RTOS的复杂度远小于Linux。

Linux拥有完善的生态,相较于RTOSLinux的C库配置已经很完善了。但是想要用好就有一定难度了,在这里需要了解内存管理、进程管理、多核、中断、锁、消息队列,性能分析等等内容来应对开发工程中帧率下降、系统秒级卡死、相机丢帧等异常。

4. 接口与驱动

许多初涉嵌入式行业的人会狭隘的认为搞嵌入式就是写驱动。

美团无人配送、小马智行、石头科技对CAN、SPI、I2C、UART这些常见的低速接口都要求熟悉,其它的像LCD、Touch、Camera、USB、BT/WIFI/GPS、IMU这些进入寻常百姓家的Sensor驱动开发经验是妥妥的加分项。

低速接口的驱动,在厂家提供的BSP中一般都有,只需要仔细看手册,搞清各接口所需的工作模式并做适当配置,该用中断的时候用中断,该用DMA的时候用DMA,即可。

5. Framework

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

6. 应用编程与调试

美团无人配送、小马智行、NINEBOT、小米都要求熟悉Linux或Unix系统编程,了解基本的编译原理,需要掌握gdb、valgrind、strace、perf、coredump等调试手段,用好log系统。

只要掌握上面编程能力、操作系统、Framework这些内功心法,调试工具不过是招数。

7. 硬件知识

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


02 零基础如何入门?

嵌入式人工智能专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术、人工智能的一门综合学科,所涉及的内涵和知识非常广泛。

1. C语言基础

在开始学习嵌入式之前,首先要打好基础,其中最重要的是C语言基础,要至少达到能单独编写调试一个500行的小项目(大概是一个本地员工管理系统的代码量),能够了解C语言的基本语法规则,基本语句的使用,理解指针概念并能灵活使用各种指针。

在学习C语言的过程中,指针的概念比较难理解,但是如果对计算机组成原理有了解的话,地址和 指针,源码和可执行程序,软件通过寄存器控制硬件这些概念都会变得很清晰。

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

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

为什么要用Linux操作系统呢

从上文中的各大企业对研发工程师的要求可以看出,Linux操作系统在嵌入式行业中的地位是任何操作系统不可比拟的。许多公司为了保护自己的代码产权,开发用的主机直接运行Linux操作系统,并在命令行终端来控制主机。

出于未来工作中尽快适应这种开发环境,所以可以在入门的时候就直接体验和见识酷炫的Linux操作系统。

但是入门阶段并不需要刻意背过Linux的各种使用命令、Linux各种服务器的配置,还原备份各种操 作等,只要会基本文件相关的命令,会使用vim编辑器和gcc编辑器即可。

大约一周的时间即可熟悉Linux系统,你会体会到Linux和Windows系统的不同,摆脱对图形化界面的依赖。

当学会了C语言编程后,你需要掌握操作系统相关的知识,多线程多进程编程、网络编程。通过实践学习一些接口函数完成一些小项目比如银行家算法、网络聊天室等。对操作系统的知识有一个初步的感性认识。

2. MCU和CPU

以上的所有编程学习都是在单一的环境下进行的。即开发环境和运行环境都是一样的都在Ubuntu下进行。难道嵌入式开发就是如此吗,说好的软硬件可裁剪呢?

别急,紧接着我们就需要加入MCU和CPU的学习,要学习ARM是什么,不同系列的MCU开发方式不同,ARM Cortex™-A 系列应用型处理器,可向托管丰富OS平台和用户应用程序的设备提供全方位的解决方案,从超低成本手机、智能手机、移动计算平台、数字电视和机顶盒到企业网络、打印机和服务器解决方案,是作为学习嵌入式的合适的素材。

现在嵌入式的学习资源丰富,选择合适的Cortex™-A 系列的开发板后,根据裸板开发、系统移植、驱动开发这样的顺序学习。

裸板开发的学习主要是感受一下如何通过编程实现控制硬件。系统移植中我们会发现搭载Linux操作系统的板子功力大增,交叉编译工具链的出现使得我们对架构两个字有了更深入的认识。

刚刚还在怀念在Ubuntu下编写C代码运指如飞的感觉,现在可以继续编写Linux风格的C代码了。

3. 驱动开发

前面裸板开发和驱动移植的学习目的是面对接下来的驱动大魔头,学习驱动开发我们需要有一个空杯心态,需要有主动理解Linux内核设计理念的意识(但是不要钻牛角尖),时刻把握Linux下一切皆文件的宗旨和分层的思想。

当我们在这一阶段点亮开发板上的一盏明灯,恭喜你,一只脚踏进嵌入式开发的大门了。

4. C++和Qt

体会了最基本的驱动开发后,嵌入式学习还未结束,但是之后的学习我们有了一些选择的主动权,当我们看到一些有意思的嵌入式小项目,我们可以理解它的实现思

而最好的学习方法是自己实践完成一些小项目,你也许不满足之前所学,为什么不能把黑乎乎的命令行终端优化成精美的液晶屏显示,C++和Qt的学习就在所难免了。

5. Python人工智能

那么,如果你已经可以实现一个小型的嵌入式项目了,但是如果大火的人工智能技术可以加入到这个小项目中,想必一定非常酷炫,我们可以把呆板的用户界面输入改成图像识别或者人脸识别。

6. STM32

一个产品级的项目考虑的不仅仅是功能的实现,还要考虑功耗、成本。

 





有问必答,专业学习规划师为您免费咨询解答
课程底价、品牌对比、师资力量、学习时间、课程内容、报考政策...想了解什么?就来咨询学习规划师吧!
以上就是南京华清远见给大家整理的南京华清远见告诉你零基础怎样学习嵌入式?。如需了解更多南京华清远见告诉你零基础怎样学习嵌入式?相关信息,可以咨询在线客服了解咨询。

评论 丨 共0个

 
 

登录后发表评论
评论
 
 
预约试听