什么是嵌入式软件

什么是嵌入式软件

嵌入式软件 , 就是运行在嵌入式系统上的软件 , 而不是运行在通用PC上 。嵌入式系统一般用在专用设备上 。像手机、可穿戴设备、数字相机、机顶盒、游戏机、智能玩具、数控设备或仪表、汽车电子、医疗仪器、航天航空设备等都是典型的嵌入式系统 。
如何入门嵌入式软件

随着现在智能家居产品的出现,很多人想转过来,可是一点基础都没有 , 怎么办呢?如果你围绕“嵌入式开发学习路线”搜一搜,很多答案都是“数字电路、计算机组成原理、嵌入式微处理器结构、汇编语言……”好吧,想要学完这些课程,我觉得你得重上一次大学了 。

很多人都是从事互联网的行业 , 现在感觉智能家居是以后的发展方向,无论是从软件开发转入还是零基础转入嵌入式开发,都有一个共同的特点,能利用的学习时间都很有限 。制定的策略是先切入嵌入式软件这一行当,等到了工作岗位再根据需要深入学习,所以建议他只学习最少必要知识,快速入门就行而不是快速精通 。

1. 掌握C语言

看书、看视频学习都可以 。不过我建议还是买一本教材认真阅读,反复上机实践 。对于嵌入式软件程序员 , 用得最多的是指针、数组、结构体、位操作等 , 这些知识一定要熟练掌握 。

2. 学习基本数据结构

往往我们听到说是做程序员很少用到算法?。?数据结构之类的东西,那是因为PHP,Java这类都是高级语言,主要负责的是软件层的程序编写,而嵌入式开发就需要软硬结合了 。在这里因为是入门,所以数据结构这块不用买来一本很厚的书从头啃到尾,这样只会中途放弃 。建议掌握最基本的链表、栈、队列就可以 。等真正入门后可以再回来系统的基础的学习 。

3. 选择一款开发板

选购开发板应以“适合”为原则,没有必要追随最新的处理器 。在处理器的选择上,主要分为两种 , 一种是以ARM Cortex-A为核心(可以移植Linux),这种处理器主要应用于消费电子;一种是以ARM Cortex-M为核心(跑不了Linux , 但是可以跑实时操作系统),这种处理器主要应用于工控领域 , 取代了之前的8位、16位单片机 。不管选择谁家的板子 , 除了板子,丰富的学习资料是必不可少的 。对于初学者,一定要有源码有视频 。如果有论坛、有人答疑就更完美了 。

4. 学习裸板开发

跟着视频和源码来学习 , 一定要动手实践 , 非常建议写博客总结 。学完这一步 , 一只脚就跨入嵌入式软件开发大门了 。不要惊讶 , 觉得还没学什么就可以搞嵌入式软件开发了 。可事实上就是这样 。到了工作岗位上边干边学 , 这样进步最快,难道不是吗?

5. 学习操作系统的移植

对于零基础的,可以移植一款RTOS(实时操作系统),比如C/OSⅡ或Ⅲ;基础好的可以学习移植Linux 。

第一,不是每个企业都有“ARM Linux”的需求 。对于做工控产品的企业,很少用Linux,有时候就是裸奔 , 功能复杂的话加一个RTOS足矣 。例如WIFI芯片和蓝牙芯片,不管是WIFI协议栈还是蓝牙协议栈,代码量都在10万行以上 , 在硬件上都是用Cortex-M3的核,最多跑一个RTOS , Linux根本用不上 。

第二,对于从来没有接触过开发板的人,一上来就移植Linux,学Linux驱动,难度实在是太大,很有可能被博大精深的Linux内核淹没而放弃,最后再来一句“我不适合搞嵌入式”,从此彻底无缘嵌入式软件开发 , 所以自信也需要逐步建立 。

并不是说Linux不重要 。相反 , Linux很重要,恰恰是嵌入式软件工程师的核心竞争力 。但是对于初学者,不要一上来就给自己定下那么大的目标,如果先通过C/OSⅡ或Ⅲ的学习来打基础 , 再去学习Linux就会有事半功倍的效果 。

既然已经学会了裸板开发和操作系统移植,你肯定有做东西的想法了,那就结合生活实际做点东西吧 。比如做一个家用防盗报警装置,当检测到有人进来,立刻给不在家的你拨打电话 。这时候你会发现,围绕着需求还有很多东西要学,独立完成一些小作品不仅能大大提高你的知识熟练度和解决问题的能力 , 也会使你在面试的时候有话可说 。


【什么是嵌入式软件】

经验总结扩展阅读