很有用的热知识:从单片机到嵌入式linux我们需要做什么
这是我今天一个同学问我的
我再零散的说一些观点,假如大家有这方面的经历,也帮忙在文章下留言,谢谢大家。
///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///
正文开始:
先说共有点
单片机和嵌入式他们最终都是要跑硬件的,所以你也会遇到像GPIO口、I2C、串口、SPI、定时器、看门狗这些问题。
所以假如你学了单片机,那么你在这些东西上肯定是有积攒的。那么这些就是你的优势,假如你让一个学java的去做嵌入式开发,我觉得并不适宜,由于他可能对电子的很多东西不懂,他可能看不懂原理图,也不会用示波器万用表,也不知道什么是中断,中断向量之类的。
但是你假如是单片机开发,这些你都了如指掌,那,这就是优势。
但是从单片机开发到嵌入式Linux,我觉得要先看看多任务。
假如有了多任务的概念,那么不管你是做RTOS还是Linux都是适宜的。
那差异点在哪里呢?
嵌入式的特点是软硬件可裁剪,所以从单片机到嵌入式Linux,你作为软件开发,最大的问题就是裁剪,依据不同的硬件配置做不同的裁剪软件。
而且,从单片机到Linux,它的难度能够说是指数级增加。
你能够用单片机来做一个U盘,嗯,你做出来了。
然后你到Linux下去看看USB的架构,嗯,你绝对是懵逼的,由于绝壁是太复杂了,所以你想在没有完全了解的情况下就给这些代码动刀子,你做不到。
我今天和我一个同事聊天,他跟我说,以前他做手机开发的,做那些驱动,也就是供给商给给代码,然后推进下进度就好了。
他说的没有错,很多小厂商就是这么做的,但是难就难在,可能某个修改就一行代码,但是你就是不知道在哪里,要是你没有经历,对架构不熟悉,你绝壁要熟悉上一个星期~,我之前在中兴调一个马达驱动,找驱动文件都找了很久,还要了解马达的电机驱动原理,最后去验证对焦那才是一个让我崩溃的事情。
所以,从单片机到嵌入式Linux,你对架构的掌控是一个很大的挑战。
其次是调试
大的系统,要给它开刀做手术,可不是一刀子下去一刀子出来就完事,还是须要针对性的去做调试,对不同的问题先有理论根底再动刀子。
哦,你以为嵌入式Linux不写代码
你须要写C,有时候由于某些问题,你须要写C++,python,shell~
就此时的行业开展来看只会单片机已经不吃香了并且在薪资待遇方面来看的话单片机的收入限制性太强可能工作很多年之后发现没有了成长空间,因此渐渐转到嵌入式Linux这个方向是越来越多的人的一个选择,那么接触了那么长时长单片机之后又要怎样从单片机领域转到嵌入式Linux呢?下面我们就来了解一下要如何从单片机到嵌入式linux我们须要做什么呢!
提到单片机很多人都很觉得不生疏,大街小巷上面电子产品都用到。近几年随着嵌入式的开展,做单片机的一帮家伙忽然觉得大祸临头一般发现自己熟悉掌握的单片机慢慢被嵌入式超越了,那么嵌入式到底是啥玩意,和单片机有啥区别,怎么完成顺利的转化。
从严格意义上来说,单片机是嵌入式的一个子集,嵌入式其实就是对单片机系统的升级,附加了更多的功能,最普通的单片机只须要一个while循环在里面操作实施就能够了,在嵌入式层次已经升级到操作系统级别,在这里面很多人有个疑惑,为啥一提到嵌入式总是和linux挂上钩,其实嵌入式里面用的系统根本上都是基于linux的,其实还有少量别的操作系统的嵌入式,假如早期的wince系统(微软的嵌入式框架),系统的升级了,此时嵌入式设备都能够玩多进程框架了,于之前相比还是不可想象的。
小个头的单片机和嵌入式到底有啥区别?
1.嵌入式在硬件配置上有了全方面的升级。此时大家用的手机都是嵌入式范畴的,根本山属于微型电脑的级别了,这是单片机不能比拟的,其实硬件的配置的大幅度提升也给维修工带来很大的难度,前几天家里刚买的变频冰箱出问题了,上门的师傅看到款式直摇头,又是变频的啊,然后问了一堆故障之后,首先给售后打了一通电话询问,然后我说你不是带了一堆器具嘛,师傅说了句,此时的冰箱里面都是一堆堆的板子,搞什么智能省电,坏了不是重新刷设备就是换板子,我们这些维修工器具越来越没有用武之地了。
科技的进步,嵌入式的全力开展给人们的生活都会带来不一样的感觉,其实对于搞单片机的硬件的升级还是之前的驱动的开发,以及寄存器的设置大同小异。
2.嵌入式在软件系统层次,比单片机丰盛了许多,典型的单片机程序MP3,也在风行了几年迅速被手机产品取代。这也不是简略几个按钮或者一个小显示屏的单片机所能比拟的,特别是安卓系统的出现,实实在在的拉动嵌入式的开展,搞得大街小巷做芯片的公司,假如上面不能跑安卓似乎都没法和客户谈生意。
想要从单片机转到嵌入式Linux的搭档能够参照这个资料能够有效的攻克单片机过渡到嵌入式Linux的理论上的问题,理论想明白了实际的东西也就好进行了,就怕你想不明白其中的道理
从单片机到嵌入式linux我们须要做什么
由于安卓系统的时兴其实给开发人员带来一点很大的不同,以前的嵌入式的应用根本不是c/c++方面的,此时java也上来了,由于嵌入式的设备运行个java的虚拟机根本都不是问题。所以此时c/c++就业不如java火热一个很重要的理由。
玩过单片机的须要在这个层次深层的加深,从软件的层次上来说不仅仅是简略的寄存器的配置,还波及到操作系统里面的多进程,多线程的,以及内存和磁盘的管理这些都须要增强。
嵌入式主要分为三个方向,一是系统开发:侧重开发环境搭建、内核原理、交叉编译等;二是嵌入式Linux应用开发:侧重Linux应用编程、内核编译、系统调用;三是底层驱动开发:侧重嵌入式Linux系统下的驱动开发、内核的深层分析。