gtk移植到嵌入式_物联网时代的盛行,应届毕业生是学嵌入式好呢,还是安卓或ios呢?...

截至2019年7月1日,看了一遍所有答案,感觉挺有意思的,这里说别学嵌入式的人挺多的,并明示或暗示题主去移动开发。除了赞同「即将到来的物联网时代」是一个伪命题以外,以及感谢某些答案给我一些信息之后,下面想和题主探讨一下嵌入式和移动开发之间的关系。我也是今年(2019年)的毕业生,所以我至少比很多人知道题主想要什么。
=====================================================================
首先,题主的专业是物联网应用技术,如果我没猜错,该专业高年级会分两个方向,嵌入式和移动开发,也就是你题目中描述的。
嵌入式系统是一个非常非常广泛的定义,从技术层面来说可以分为硬件层,驱动层,系统层和应用层。手机也可以勉强算是一个嵌入式系统,手机手机,拿在手里的机器。手机的APP移动开发,就是嵌入式系统的应用层开发。硬件层,就是原理图、PCB图、电路板那些。驱动层,主要工作是对MCU寄存器进行读写、总线的使用以及对传感器什么外设的操作等,简单说就是编写直接操作硬件的代码。系统层,把前面的驱动层封装起来,并弄出个接口(驱动接口),同时加上进程控制、内存管理、文件系统、网络通信四样东西,再把这些东西再封装起来,最后提供接口给应用层。当然,由于嵌入式系统是专用设备,具有可裁剪的特性,所以上面五样东西不一定都有。应用层,只要是涉及人机交互界面的都属于这里,其中一种就是手机移动开发。
那么,为什么移动开发那么受欢迎?岗位需求那么多?求职时相对于其他三个层面(硬件层,驱动层,系统层)容易找到工作?因为这一层面,是直接面向最终用户,也就是我们普通的广大消费者。
手机应用层这一层次,产品的定位非常的多。我从网上截取了一张图:

798a53f58ccda77fa4ba2fc1dd5bd97b.png

是的,如此多的应用,是需要大量的工程师来开发的,同时也体现了这一层次的岗位需求非常大
IT界有一个笑话:「我有一个价值十亿的 idea,只要开发这样一个 APP,半年就会有一千万人用,一年就能纳斯达克上市。项目我已经规划的非常清楚,启动资金也很充足,现在就差一个程序员了。」
笑话的本意是讽刺外行人不懂内行,但也可以从侧面反映出该行业的人才短缺。对了,这里的程序员就是APP工程师。
2019-06-01 补充:这里应用层是指UI界面,编程时需要用到类的思想,开发工具有提供Button类,Label类,View类,Timer类等,系统底层已经封装好了,只提供API给开发者。除了APP开发,还有比如Linux上的Qt,GTK等开发环境,裸机开发(单片机开发)没有系统层和UI应用层。
系统层。
除了Android和iOS两大手机平台,嵌入式的操作系统还有uC/OS,嵌入式Linux,vxWorks等等,总之很多,有开源的也有商业的。
对于小公司或者个人来说只要学会移植运用就行,进入大公司才有可能开发新的操作系统。
这一层次相对于其他层次,开发岗位的需求是比较少的。我意思是说,开发一个操作系统的岗位是很难找到的。如果是在某些开源的系统进行二次开发,比如Linux+ARM的开发,也就是培训机构那些内容,这种岗位需求多不多,我真不好下评论。培训机构是包就业,他们会和其他大企业合作,把毕业生送到岗位上去(感觉好像以前计划经济时代的大学生毕业分配去向啊~),所以这些培训机构出来的人毕业后不愁找不到这方面的工作。可是,如果你没去培训机构,完完全全自学Linux+ARM,可不一定能找到相关工作!这方面我深有体会,因为我是走了自学的路。
但是,如果题主是本科生,我是不建议题主去培训机构的。没必要!几万块钱啊!我有次去培训机构听公开课,完全就和大学的实验课相差无几,最重要的还是讲师的能力,讲得好学生就学得好。如果题主不是一本学校的学生, 我相信你更清楚地明白,听那些非常差的老师讲课真是浪费时间!
驱动层和硬件层。
我决定把它们放在一起讲。为什么呢?因为这个对于优秀的工程师来说,一个人就可以完成的工作了,团队合作只是为了加快项目进度。这一层次,并不像手机应用层的开发,至少需要一个美工画图(UI设计)和一个程序员。
这两个层次,我相信就是题主所说的嵌入式开发。也就是51、STM32、ARM等芯片开发,UART、IIC、SPI等串并行接口的运用,Bluetooth、WIFI、zigbee等通信方式的使用。为什么一到了这里我就写到了很多技术名词呢?除了我对这些比较熟悉以外,还因为,底层的东西就是这些,可以说学了就一劳永逸。它们出现以后就永远存在,永远有用。比如,不论哪款单片机都会有一个串口UART,学会了UART,以后不管用什么芯片,一看到「该芯片支持UART」就明白了。
对了,别听培训机构那些老师说51、STM32(Cortex-M3)已经过时,现在是ARM7、Cortex-A8的时代的话。这些只是芯片架构,如果没有学好51、STM32,我可不敢去玩后面那些的(应用层除外)。
完美的学习路线是:51--->STM32--->ARM。对,这是需要一步一步来的。跳过去学……不说了,我去哭会儿。
:这里的ARM指的是S3C2440,最近答主准备接触树莓派,可能会改变「学习路线」的观点。另,学习学得特别痛苦也有可能是教材不对!
其实树莓派开发就相当于在Linux下的应用层的开发,只是多了硬件操作。
树莓派的四种玩法:做Web服务器(server)提供网页信息等,做终端(client)进行共享文件、下载等,连接显示器或音响播放视频或音频等,在Linux下对GPIO进行操作控制硬件等。)
另外,在驱动和硬件这两个层次做出来的产品,我们现在称之为智能硬件
比如无人机:

ddb9e866fd27fbefdeb333f6910988e0.png


简单来看,无人机就是硬件层+驱动层,可能会有操作系统,但是应用层的人机界面就没有了。啊,抱歉,人机界面可能会有,不过不是在飞机上而是在手机上。

d2ea5a9c0f43d78c051a9500995bc39c.png


你要是觉得无人机太难了,那智能插座呢?

e15d36a56cc32fa3f826f21baf0c55ae.png

也就是一个单片机+继电器+手机APP。
这两款产品只是属于消费电子领域,而且嵌入式技术还会涉及到医疗电子工业控制等领域这些必须去特定的工作环境才能了解,在此不多提。
所以,题主,你现在知不知道你的专业是这么好玩的?同时要学习的东西是非常非常多的。
=================================================================
听说题主是专科,那我最后给的建议还是去移动开发。为什么?移动开发的资料多且全,网上教程也多,同时也有开源代码,有一台电脑和一部手机即可,不需要买开发板学习。而嵌入式,资料杂,教程乱,理解一个概念都要查半天,同时还需要买开发板学习,如果没有强大的自学能力,以及资料收集整理能力,是完全做不了的。
我认识个大神,他刚刚接触我最近正在玩的WIFI芯片,首先就是去官网、论坛、QQ群下载各种资料,尤其是芯片手册,示例代码等等。因为我接触得早,一开始我教他避开一些坑,过了两天后居然可以平等的讨论问题了,又过了一个星期,他自己解决了官网例程的一个编译BUG,而我自己却解决不了,还得请教他。(我当然不会告诉你们,他说他初中就开始编程了,而我大学才开始接触单片机)
回正题。APP移动开发,不需要你用到高深的算法,甚至冒泡排序都很少用;也不需要你知道操作系统太深层次的东西,比如进程间的通信方式有几种。很多东西底层已经封装好了,你只要直接调用它们的接口即可(就是包含一个头文件然后调用一个函数)。
这一层次的技术非常简单,按我的理解,就相当于建筑工人,或者说码农。我并不是鄙视这一层,我现在也在做移动开发。我既没有考研,也进不了大公司,那我也必须从「基层」干起。
另外,我不知道题主你是不是面临类似于选专业的这种选择,或者是参加培训课程的这种。这种选择是一进去了,要跳出来的成本是非常大的,比如转专业。如果题主是这种,或者是找工作方向的,那正如我前面给的建议去移动开发;如果题主是问学习方向,那我和你说,你有能力的话,嵌入式和移动开发都学,学习是无止尽的。我现在就是上班做APP开发,下班玩单片机,顺便和师弟师妹们聊聊就业方向。
最后,借用前面大神朋友的一句忠告,赠与题主:「做安卓和苹果的UI,一定要将这个学习提到产品层面才有出息,不能只停留于表面的技术。
==================================================================
其实写了那么多,我感觉自己还没有写完,回头一看自己洋洋洒洒的答案,还是就此为止吧。
以上内容只是阐明了移动开发和嵌入式开发在技术上的关系,现在工作一年,感觉两者的开发关注点有很大的不同!APP开发更多关注的是信息展示和UI界面,考虑更多的是如何把数据优雅、美观、方便地展示给用户看,同时可能需要联网进行数据的更新,是以手机用户的角度来开发项目,另外有一些是专职开发IDE的;而嵌入式开发,关注的是底层,单片机开发关注对片上资源的使用,外设的操作甚至要会做电路板,嵌入式Linux这个就比较大,有的关注UI界面,有的关注网络数据传输,有的关注视频编解码,甚至有的开发内核kernel。所以嵌入式开发,更多是从电路板、芯片、系统、性能等非消费者的角度考虑问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值