单片机和嵌入式,我喜欢用儿子和爸爸这种关系去区分它们。
我当初是通过嵌入式挖到了单片机开发,所以说单片机和嵌入式是一个包含关系,嵌入式包含了单片机。
这层关系一定要先搞清楚。
嵌入式总共分为以下几个主流方向:
1. 单片机开发工程师
需要学习的知识大概如下:
①学习C语言、汇编
②学习51、STM32单片机
③学习常用Usart、IIC、SPI、can协议。
④能看懂数据手册基本参数
⑤能看懂电路原理
⑥熟悉绘图工具(AD)使用。
2. Linux系统开发工程师
需要学习的知识大概如下:
①熟悉uboo移植、内核kernel的裁剪。
②熟悉Linux设备驱动开发
③熟悉ARM CPU架构、Linux内核、内存管理、进程调度、文件系统、网络原理等。
④熟悉常用外设驱动Usart、IIC、SPI、Nandflash、MMU等
⑤熟悉Bootloader开发
3. Linux应用工程师
需要学习的知识大概如下:
①.熟悉C和C++
②熟悉Linux系统文件、进程、内存共享、消息队列、信号、多线程、网络等
③熟悉GTK或者QT
④熟悉视频、音频、Ble等算法协议。
4. 安卓系统开发工程师
需要学习的知识大概如下:
①.熟悉Linux内核与驱动程序开发
②熟悉Android框架开发和维护
③熟悉Android Hal和framework开发
④熟悉JNI/NDK开发。
⑤熟悉Android下网络编程。
⑥熟悉C,C++,java,Shell编程语言。
每个方向所需要的学习的课程内容是不一样的,1和2是偏硬件驱动层,3,4是更偏重应用层。
很多人喜欢去评价,说哪个方向比哪个好。
我做了这个行业10年来说说自己的看法。
这4个方向,没有说哪个比哪个好,如果单纯用工资去衡量,这种方式并不客观,可能会影响到你的判断和选择。
当初我就是这样,哪里工资高就去哪里,完全没考虑到一个行业的发展趋势。
最终导致的结果就是,你的收入很容易到达瓶颈,再怎么也涨不上去。
所以,这个首先看你个人的一个擅长或者兴趣领域。
如果你的动手能力强,可以往单片机开发方向和Linux系统开发方向。
如果你想偏软件的,不想碰硬件,往Linux应用开发和安卓开发。
如果你是刚入门这块的话,我建议是先从单片机开发上手。
很多人说单片机开发很简单,没前途,不否认单片机开发工资确实低一点,因为大多数开发都是在做应用,单片机就是一个工具,你只会用工具工资还想高到哪里去?
如果你能独立完成产品软硬件设计看看?
会蓝牙、Zigbee、NBIOT、WiFi开发看看?
这些也都是单片机,只是在单片机内部加了特殊模块(BLE、Zigbee)集成的SOC。
这个大家可以去招聘平台搜搜看,搜嵌入式大多数都是单片机开发的职位,比如STM32之类的,足以说明市场之大,市场大意味着工作也好找。
还有一点就是局限性,用单片机做产品基本个人都能完整整个技术部分,包括硬件和软件设计。
而Linux或者安卓方向却很难,拿安卓来开发来说,他需要有Linux系统开发工程师把系统移植到ARM或者其他架构下的芯片里,然后把外设驱动都调好,安卓系统才能基于这上面跑起来。
所以如果你想后期自己创业做产品,单片机方向是比较合适的,只要你有丰富的经验,完全可以自己一个人独立开发一款产品。
当然,如果你完全是看工资,那往Linux和安卓方向比较适合你。