硬件面试进了某公司,部门报到的一天才发现被分到了算法组,心中不免彷徨不安。整个部门是做关于电力电子相关的产品,所以给自己先定位为嵌入式软件工程师,虽然自己对嵌入式软件一门不通,但想着既来之则安之,必须得接受事实,相信可以通过学习来填补技术空白。 有了定位就可以更方便的查找学习资料。通过检索“嵌入式软件工程师”寻找合适的学习资料。这里分享一位博主的学习路线建议作为参考嵌入式软件工程师学习路线。 先从编程语言上来说,嵌入式编程采用较多是C语言,特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。 这一阶段推荐的嵌入式学习书籍如下:《C程序设计语言》,《C语言核心技术》,《数据结构与算法分析--C语言描述》,《C和指针》,《C陷阱与缺陷》,《C++ Primer》。 然后从所使用的CPU的角度来编程,比如应用比较广泛的ARM嵌入式体系结构。这一阶段重点是学习嵌入式CPU的裸机编程,熟悉中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等常用嵌入式外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上,对硬件进行编程控制。这和硬件工程师学习的侧重点有所不同。这一阶段对应的学校的课程主要包括模拟电路、数字电路、微机原理和单片机。这一阶段重点是要看CPU的芯片手册,大部分的参考书也是对芯片手册的翻译。推荐的参考书籍如下:《ARM嵌入式系统开发--软件设计与优化》,《ARM处理器开发详解 基于ARM Cortex-A8处理器的开发设计》。 以上只是针对我这种小白在入门时所需要学习的内容,到更后面的阶段,还会涉及到嵌入式Linux应用程序开发、嵌入式Linux驱动程序开发以及综合项目等。同时针对不同的项目和产品,必须得熟悉相应领域的基础知识,比如电源中的各种拓扑以及控制、电机控制的各种算法等,这对于偏算法的小伙伴来说尤为重要。
|