分类：社会民生-求职就业
问题：打算从事嵌入式开发工作需要什么条件？求回答。 
打算从事工作需要什么条件？求回答。
回答：1.基础，皮毛就可以，实在不会就算了，反正公司有硬件工程师，而且还可以找供货商要技术支持，如果要软硬件都通，那模电啊数电啊都是基础，跑不掉的；2.C/C++/C#/JAVA选一种，推荐C，汇编很少用没太大必要；3.操作系统，linux/wince/ucos/android等任选一种，初学推荐ucos；4.开发板，这个是重中之重，自己买的话，目前2440的板子是性价比最高的，比如友善的mini2440；5.买个模块，GPS/GSM/WIFI/BT等等，选个喜欢的，做项目。做电路板的，那是硬件开发的工作，对于他们来说，做什么电路板都差不多，感受不到嵌入式的电路板与其它电路板太大的不同；做UI、MMI的，是很上游的，与做Windows下的代码开发也没什么大不同。我觉得最有挑战性的工作是做嵌入式设备的驱动程序，上要考虑如何给UI留个好接口，下要理解板子电路是怎么做的、有多少中断多少寄存器以及怎么调用。如果规模更大一点的板子，比如arm9之类的，又会有一个操作系统层，那就更复杂了，这个后面再说。 做MMI的，有时候可能比Windows开发还容易些。因为用到的类库、函数库、API函数要比Windows开发要少许多，比较容易全面掌握(从事Windows开发有可能做了2~3年了还摸不清到底有多少个Windows API)。MMI毕竟属于嵌入式开发，它有它自己独特的难度：基本上没有IDE环境——很少能够用上VC6之类的IDE——往往是一个编辑器加上命令行编译器了事，排错比较难。所以，用EVC做嵌入式开发的人员自然是嵌入式开发人员中很幸福的一类人了。:) 如果选择了做驱动层，那么可就任重而道远了——它的全面性体现在硬件知识、软件知识、综合技能、外语能力。本文也主要想探讨一下这个方面，只当是对我半年的工作做一个总结，同时也对今后的学习方向做一个规划。 写驱动程序必须了解硬件机理。与PC机的驱动程序开发不同的是，PC上的驱动程序开发一般主要需要PC上装的操作系统的实现和要做驱动的那个外设的硬件构成；而作嵌入式驱动开发很多是没有操作系统的，很多只有一套简单的监控程序，所以需要了解整个板子的硬件构成。这就要求你最起码的几门功课要过关：电路基础、模拟电路技术、数字电路技术。这只是个起步，之后呢，如果做控制类的板子肯定要懂自动控制原理、现代控制理论，如果做通讯类的板子肯定要了解通讯原理、高级通讯原理、信号调制方面的知识，其中知识的复杂不是两三年能搞定的。据个例子说，做手机驱动的如果连直流漂移都不知道，肯定看不懂硬件资料，能写出来代码才怪呢。 驱动程序是小而精的程序，它要求对数据结构、算法、构架、编译原理各个方面都有深入了解和丰富的实践经验。如果做复杂的带有操作系统的板子，那么肯定还要了解操作系统的内存管理、线程调度等知识。虽然PC机的开发上有很多常用算法模块已经有很优化实现，但是这些代码往往不能直接套用在嵌入式设备的代码里，原因可能因为这段代码太大、太全、或者不符合项目的要求。嵌入式设备的RAM很小，因此我们编写代码必须仔细把握大小，甚至要关注到Byte级。嵌入式系统承受不了很多冗余的代码，所以很多常用算法都没有现成合适的函数库，需要你重新实现，根据硬件有针对性的重新编写。因此，精湛的编码技术、周密的代码规划都是必备的基本功。