文章摘要:嵌入式软件开发需要学什么
嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。那么嵌入式开发学什 […]
嵌入式开发就是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。那么嵌入式开发学什么呢?现在就一起来看看吧。
嵌入式开发学习内容
1、C语言
嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
2、Linux基础
Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具,Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。
3、Linux网络编程
计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
4、数据结构与算法
数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
5、C++ 、QT
C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。
6、Cortex A8 、Linux 平台开发
通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nandflash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
7、驱动开发
驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARMCortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
学习嵌入式开发必知的知识
1、离开舒适圈
虽然当了多年的工程师、但自认是系统与软件技术“通才”的DSP与嵌入式软件开发顾问公司Jetperch创办人MattLiberty建议,不断更新并提升原本擅长的技术虽然很重要,但嵌入式工程师若能扩展自己的知识领域会更有益。走出舒适圈,挑战自我、去学习原本不熟悉的东西,包括工程以外的知识,例如与客户、同事之间的互动,将会收获良多。
2、学习利用搜索引擎
当了多年工程师、自认是“看得懂系统架构的软件人”的PTRGroup首席科学家MichaelAnderson认为,不要闭门造车,要善用开放源码世界的信息,很多常见的设计问题其实透过因特网就能找到同领域菁英贡献的程序代码;嵌入式工程师们要走出自己的小世界拥抱社群,与同领域的其他工程师们相互交流、互相帮助,而这也是开放源码世界的精神。
3、学习那些让因特网实现的技术
具备多年嵌入式工程师经验的独立产品设计与顾问公司AuriumTechnologies总经理KenWada认为,多数嵌入式领域工程师都知道如何撰写C或C++语言程序,但有时候这样的技能是不够的;他建议嵌入式工程师学习因特网有关的技术,对职业生涯发展会有加分效果,例如他目前负责的几个开发案,都是在嵌入式系统中嵌入虚拟(virtual)的XML,好让一些小型连网设备能具备“即插即用”的运作模式。
4、熟悉实时操作系统(RTOS)
在工程人才招募机构RandstadTechnologies负责嵌入式产业领域的解决方案经理HenryWintz表示,目前产业界对于熟悉RTOS的工程师需求很高,也愿意提供更高的薪资水平;因此他鼓励没有接触过RTOS的嵌入式工程师从一些较小型的系统着手,累积相关技术经验。此外他也发现产业界对嵌入式Linux人才有不少需求,主要是因为这种操作系统具备较大的设计弹性。
5、了解最新的处理器
有超过多年嵌入式软件工程师经验的Embedded.fm工程师EleciaWhite表示,除了要深入了解C或C++等基本程序语言,有时也要认识一些热门的新程序语言以因应特殊设计需求,但更重要的是了解最新的处理器技术;处理器才是嵌入式系统的本质。因为我们的系统资源有限,我们需要了解可用的资源有哪些。
嵌入式学习路径
1.了解计算机原理,操作系统基础知识。了解硬盘,内存和CPU的关系,程序是如何加载到内存运行的,了解操作系统进程切换和时间片的概念。
2.学习C语言,掌握编译器基本知识,能编写简单的程序。学习硬件相关知识。
3.购买洞洞板或者面包板,配合stm32等单片机核心板及相应教材,实践IO操作,中断,定时器,ADC,UART通信,IIC通信,SPI通信,CAN通信,看门狗等基本功能。在此过程中不断巩固提升C语言编程水平。
4.掌握了某一种单片机的基本编程和控制后,可以进军嵌入式操作系统的学习。在此期间可以继续使用STM32核心板,加购LCD串口液晶显示屏,不需要买带字库的显示屏,简单实用的串口显示屏就可以。然后可以从FreeRTOS开始学习,这个操作系统代码少,概念清晰,易于学习操作系统的原理,也易于移植,基本上可以参考官网以及网络上的资料顺利的将操作系统移植到STM32核心板。通过FreeRTOS,可以学习嵌入式操作系统的基本原理,并可以编写LCD驱动程序来感受硬件驱动程序的概念。
5.学习嵌入式Linux操作系统,购买ARM9或以上版本的主控的开发板,要求开发板上至少有串口和网口。学习板级支持包的开发,交叉编译,GDB调试,UBOOT移植,内核移植,根文件系统制作,设备树,驱动程序编写,网络编程相关知识。
6.学习物联网相关模块的使用,可以购买ESP32核心板进行wifi,蓝牙的模块控制学习,购买其他模块实现其他小项目的练习。
通过上面的一番闭关修炼,你已经掌握了嵌入式开发的主要知识架构,接下来就要多做小项目,多练习排错,才能不断积累经验,走向大牛的人生巅峰。