简介:

本文主要介绍我学习嵌入式的经历。并结合自身的经验希望可以对大家有所帮助。

视频及教材:

郭天祥相关视频及教材,天狼星相关视频及教材,野火迷你相关视频及教材以及韦东山100ask官网所介绍的视频及教材

个人简介:

我的本科学校是一个很普通的二本,研究生也是二本。我找的是一个规模中等的公司(我个人对这份工作还是比较满意的)。而我所面试的公司也是做嵌入式Linux相关的产品。好了我的基本情况就介绍到这里了。而详细的情况我会在下面说明。

我的大学——忙碌而充实:

因为我所做的与单片机相关的项目都在大学时,而在研究生期间我主要研究的是量子相关的课题,所以这里我重点介绍我的大学。

我的大学是一个很普通的二本。有时候大家可以会觉得他是一个专科,因为他是以学院命名的。而对于刚进大学的我嵌入式是一个我从来没有接触过的概念,更没有想到我的后半生都会与嵌入式相关。那时的我并没有明确的目标,只是想着要好好学习老师课上所讲的内容,而那时也是我最天真的时候。那时我所做的很多事都是因为其他人也在做,而没有真正去了解我真正想要的是什么,更没有认真的想过我的大学应该怎么过。

这样的日子维持了一年,在这一年中我虽然也很忙碌但是回想自己走过的路,却发现并没有留下任何的痕迹。而真正出现转机是在我大二国庆节期间,那时候的我无所事事,但好的一点是我有几个要好的朋友。我们在一起聊天的时候他们聊到了自己所焊接的电路板,自己所搭建的电路,以及自己所设计的功能模块。这些都是我以前所没有接触过的。那一时刻,我突然意识到虽然我完全听不懂他们在说什么,但是感觉可以自己设计电路来实现某种特殊的功能对我来说似乎很有吸引力。所以那时候我决定要加入这个组织——第二课堂。

不得不说第二课堂开启了我对这个世界新的认识,同时也感谢第二课堂为我提供了那么好的平台来学习各种嵌入式相关的知识。现在想想在第二课堂的两年我都觉得收获满满。我刚进第二课堂时还没有学习单片机,而是利用各种电子元器件和简单的芯片来实现一些简单的功能电路。而我们使用最多的就是NE555芯片了。虽然现在已经忘了这些芯片的功能,但是那段时间的练习却真正的让我学到了很多模电数电方面的知识,以及对各种芯片引脚和各种电子元器件的识别。这段时间一定要感谢我的好朋友礼标和吴老板。

我接触的第一个单片机是stc89c51,也就是大家常说的51单片机。而这个单片机让我了解到,原来我们可以通过一种编程语言来控制一个机器的电平变化。而不是我在以前焊接电路板时,只能使用简单的逻辑电路搭建简单的功能。在这里,他的功能得到了足够的扩展。而51单片机的两个重点:中断和定时器,这两样功能让我十分幸喜,因为我意识到我可以使用这两个功能来完成很多的设计了。而那时的液晶屏更是让我意识到我可以将自己想表达的意思或者监控的数据显示到我的机器上了。这是多么愉快的事情(那时总是因为一些简单的功能而幸喜,而现在回想当初的行为确实有些幼稚)。依然记得当时自己用液晶在屏幕上显示内容时的高兴。

这个之后我还用51做了很多好玩的东西,例如LED矩阵:

学完51单片机,我就开始学习ATmage16(AVR)单片机。这个单片机还是对寄存器进行操作的,不过相对于51来说AVR的速度确实快了很多,而且功能也更加的强大。例如在引脚的模式选择方面就比51多了好几个。而其他的中断以及AD等更是51所不能及的。因此我在那段时间用AVR做了很多好玩的东西。而这期间我用这个单片机做过一个小冰箱:

这个冰箱在当时炎热的夏季,给我们带来了不少欢乐。而我使用到的就是一个单总线的温度传感器,其将温度测出并实时的在数码管上显示,而关于温度的控制部分,我本来打算用pwm来控制电源的开关以实现控制温度的目的,但是并没有完成这部分功能,而这部分的功能我用到了后面做智能风扇中。

而做完冰箱我做了一些更有趣的项目——智能小车,这个智能小车有三个功能:循迹,避障和蓝牙遥控。我将这三部分功能融合到一起,通过手机蓝牙选择使用哪个功能。而这里的循迹和避障功能我使用网上的红外发送和接收模块通过检测红外线是否接收到来确定是否遇到黑线或者碰到东西,从而做出反应。而对于蓝牙遥控功能,我直接使用蓝牙模块通过串口连接以实现蓝牙数据传输。这里有一个循迹的图:

做完小车之后我感觉自己对ATmage16芯片有了一定的了解,这时候我画了一个ATmage16最小系统的板子:

确实只有自己画了板子,才对这个芯片有一个更深入的理解。同时也可以对外围部件以及各个部件的尺寸类型有更好的了解:

而学还习AVR有一个让我骄傲的地方就是我写了一些AVR模块的库,这个库对我十分重要,我在使用AVR后期进行编程时主要就是对这些库中的源文件和头文件进行调用。当你学会使用现有的库时,你会发现其实库调用是多么的方便。

学完AVR之后我就开始学习stm32,对我来说32就像是一个新的大陆,之所以这么说不仅仅是因为32在性能方面远超51和AVR,而是因为32的编程方式是调用库进行编程的。在学习32之前我一直是针对寄存器进行编程(当然32也可以针对寄存器进行编程)。而寄存器编程的特定就是你要很好的了解你所编程的单片机,也就是说你要对单片机的各个引脚及接口功能都要十分的熟悉。而对于32单片机来说就相对简单,比较适合对硬件不是很熟悉的人。也就是说就算你对寄存器的操作方式不是很熟悉也可以对32单片机进行编程。因为32单片机是一个可以调用库进行编程的。由于32单片机的很多功能都已经被前辈写好,并将其封装成库。而我们只需要调用某种功能在库中的API接口就可以了。因此使用32单片机对我们来说是一个质的飞跃。同时也让我们了解了对库中API接口调用的重要性。这将帮助我以后学习嵌入式Linux打下基础。

我用32做的是我的毕业设计,对于我所完成的功能,我使用自己当初毕业论文的简介:

在没有家人在场的情况下,当老人不小心摔倒而且没有能力进行自救时或者老人遇到其他的突发危险而现场没有家人帮助时,如果没有及时得到救治或者帮助,这很可能会导致老人瘫痪甚至威胁老人的生命安全。在这种情况下,我们采用集三轴加速度和三轴陀螺仪于一体的MPU6050模块对老人是否跌倒进行监测。当老人跌倒时,以STM32为核心的中央控制系统将会向周围人发出发出声光警报。如果老人有能力自己站起来,可以自行解除警报。当老人没有能力自己站起来时,装置将在警报响起10 S后通过GSM模块将从GPS模块获得的经纬度信息以短信形式发送到指定联系人。该指定联系人可以通过智能手机搜索得出老人的地址。而且本装置还有一键SOS功能,当老人碰到其他危险且没有能力自救时,可以通过按下SOS按键直接将自己的地理信息通过短信形式发送给指定联系人。

而作品的实物图为:

好了,做完上面的设计,我的大学也就画上了完美的句号。在此我要感谢几个人,是他们在我做嵌入式的路上指导和帮助我,并为我提供各种便利。首先要感谢的是第二课堂的汪老师,可以说第二课堂的学生能有今天的成就在很大程度上要感谢汪老师,是汪老师为我们提供第二课堂的教室,并在学习的路上指导我们。而第二个要感谢的就是我的同学,吴老板和礼标,是他们在我当初学习嵌入式时不断指引我,并帮助我学习了很多的知识。而第三个要感谢的是我的师兄:林耕风。他对我以后在嵌入式方向上的提高给了很多好的建议。同时他也是一个热爱着技术,并对生活充满激情的人。他是我很敬佩也很向往的人。好了,接下来要开启的是我的研究生生涯了。

我的研究生——迷茫中前行:

我在研究生期间主要的课题是量子通信,而与嵌入式的关系并不是很大。而对于嵌入式的很多知识我是自学的,这里就要感谢韦东山老师的视频以及开发板,韦东山老大的开发板和视频很详细的为我们讲解了Linux在2440开发板上的运行、移植以及驱动的编写。这里还要感谢我表哥和我的同学吴老板,是他们在我当初迷茫的时候为我指引方向。

如果用一个词来形容我的大学,我会用充实来形容,因为在大学期间我的目标明确,同时也会很有效的将自己的时间用到学习中。而对于我的研究生,我想跟多的是迷茫。初入研究生学校对很多新鲜的事物充满好奇,那时的我以为自己还可以像大学时一样有一个实验室,然后自己在其中做一些喜欢的项目。但是真实的研究生生活并不是我想象的那样,我的导师的研究课题是量子方向,因此我要学习量子的知识,而这方面知识的学习对我来说压力很大。因为在大学时我更多的时间是在实验室度过的。所以我的理论知识并不好,尤其是物理(但真正的学习下来,自己还是收获颇丰,同时也为自己在一个新的领域开启了一扇门,而相对于其他的来说,更重要的是我在这段时间证明了自己的学习能力,我发现如果你用心去学一门知识,其实也并不是那么的困难)。同时我发现我的实验室并不是我想象的实验室,我的实验室里没有示波器,没有可控电源。那时候的我十分失落,虽然比较失望但是我并没有就此放弃。在思考了一段时候之后我觉得学习Java,因为Java在那时比较火,同时也不需要任何的硬件,只要你有电脑就好了。因此我开启了Java的学习之路。现在想想那时候学的东西,似乎都已经忘记,但是那时候对于生活的态度还是很好的。我虽然不能改变我导师的方向,那么我就用课余时间去学一些东西来弥补这份失落。我记得我用GUI界面做了一个飞机大战的游戏。同时也学习了HTML,并在我女朋友生日的时候copy并修改别人的网页来为他庆生。

我修改的网页已经找不到了,但是修改前的网页还在,这个网页是动态的,简洁但是漂亮。

学了很多Java的知识但是总觉得心中空落落的,我知道我所学习的东西并不系统,同时也不是从底层开始做起,所以做起事来总觉的心中没有把握。同时我发现现在学习Java的人太多了,同时也发现Java似乎是每个人都可以学习的,是无门槛的,那么我的核心竞争力在哪里?这是我当时问自己的一句话,我也希望大家可以常问一下自己,你的核心竞争力是什么?

而这时我与我哥以及吴老板的电话改变了我的学习路线。我在电话中问他们也是问自己:我应该学习什么?我的兴趣点又是什么?我要高于其他人的门槛是什么?我发现我还是对嵌入式有感情。我还是想学习有底层的东西,这样我觉得学的踏实。同时我发现学习嵌入式Linux是需要门槛的,并不是每个学过单片机的本科生就可以学习。所以我从研二的时候开始学习嵌入式Linux,而从此开始了我的嵌入式Linux之路。而也开始了我对系统的了解。我以前的博客所介绍的就是我在研究生期间学习嵌入式Linux的学习笔记和心得。

找工作——一点优势就是很大的距离:

由于我还是学生,所以我参加的是校招,而相对于社招,校招就简单了很多。而这时你相对于其他人一点的优势,其实你就跟他拉开了很大的距离。就像我在前面所说的门槛。

做技术的校招大多数分为下面几个步骤:

宣讲会——》笔试——》技术面试——》HR面——》发offer

在各位参加宣讲会之前我想大家就对自己要应聘的岗位十分熟悉了吧。如果不熟悉你可以在宣讲会时了解也不晚,但是大致的方向应该是清楚的,例如你是要做嵌入式还是要做算法,或者是做图像你应该清楚吧。而在选择岗位时你就会发现,其实平时多学一些东西还是十分重要的,因为平时多学一些东西,那么你的选择范围就相对广一些。而宣讲会时的提问就很重要了。因为回答你问题的很可能是你的部门主管,同时也可能是你面试时的面试官,所以你要在提问时让他对你有一个好的印象十分重要。所以你在提问时要有针对性,要在你的问题中体现了你在这个方向上有了一些了解,并且很想继续学下去,而他应聘的置位正好适合你,例如你要应聘嵌入式驱动工程师岗位,你可以这样提问:您好,我是学习嵌入式Linux驱动的,目前我学习了一些驱动的框架,例如输入系统和usb驱动。我想问咱们公司在驱动上主要做那个方向?上面的问题体现出了两点,第一你确实学习了嵌入式驱动的一些知识,同时你也表示你对这个职位感兴趣。

宣讲会之后就要笔试了,而笔试其实更多的时候是在考大家的基础,或者说是一个细节。这就要看你平时编程时是不是细心了。而对于做嵌入式驱动的岗位有时候还会考你一些简单的汇编,所以希望你在平时用汇编编程时注意一些。这里我要强调的一点就是你要在这个试卷上体现出你确实学过一些知识,也就是通过你的答案让阅卷的人知道你是他要找的(阅卷的人很可能就是要面试你的人)。例如你会碰到对寄存器中位操作的试题,对于很多人可能就是简单的使用指针对寄存器中位进行操作,而这个时候你在指针声明前加一个voliate关键字就很不一样了,阅卷的人以看就知道你不仅会这道题,同时也知道你确实写过驱动相关的代码。而在笔试中另一个要注意的地方就是当你碰到不会写的程序时,写下你的思路,这个很重要。有时候阅卷人就是要看到你的思路。而对于写出程序的题,你同样要写出思路,这样可以让阅卷人更好的了解你的思路,同时这也体现了一个好的程序员的素养。

笔试完就要通过你的笔试内容来决定是否通知你参加面试了。而技术面就要检验大家平时的学习成果了,技术面其实更多还是喜欢问你做过什么样的项目。如果你有一些项目经验,那么你就有加分项了。因为面试官很喜欢有项目经验的人,如果你没有项目经验那么你就要向面试官证明你的学习能力很强了。而这个时候面试官的问题有时候会很难(因为他会问很多学习中的细节,以及知识点的细节)。还是那句老话,在技术面时不要不懂装懂,因为对你面试的人都是这方面的牛人,他们对这方面的知识十分熟悉,所以你会什么答什么。不会的不要乱说 。要保持谦虚。

如果你通过了技术面试,那么可以很荣幸的通知你,你被录取的几率就很大了,因为到HR面试时,主要就是来谈工资了。

嵌入式Linux——学习经历相关推荐

  1. 嵌入式linux学习步骤

    <一> 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linu ...

  2. linux嵌入式如何学习,嵌入式Linux要如何学习?嵌入式linux学习路线讲解

    在学习嵌入式linux之前,一定要有C语言基础,而且是越熟练越好.对于汇编基础来说没有那么重要,当然对于C语言来说起码能够熟练写出一个数组排序.输入数字求和之类的程序代码.当然如果不熟悉的话就需要多写 ...

  3. 嵌入式linux学习路线参考(LINUX学习者必看经典)

    整理了嵌入式linux学习路线供参考,希望对您有所参考价值! 一.linux入门 目前嵌入式主要开发环境有 Linux.Wince等:Linux因其开源.开发操作便利而被广泛采用.而Linux操作系统 ...

  4. 嵌入式linux学习笔记--TCP通讯整理

    嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...

  5. 迅为嵌入式Linux学习笔记4——进程

    迅为嵌入式Linux学习笔记4--进程 进程指的是正在运行的程序,是操作系统分配资源的最小单位. 进程ID 每个进程都有唯一的标识符,这个标识符就是进程ID,简称pid 进程间通信的方法 管道通信:分 ...

  6. 迅为嵌入式Linux学习笔记5——进程间通信

    迅为嵌入式Linux学习笔记5--进程间通信 管道通信 无名管道 无名管道只能实现有亲缘关系的进程之间的通信,比如父子进程. pipe函数: #include <unistd.h> int ...

  7. 嵌入式Linux学习经典书籍-学完你就是高手

    很多刚入门的朋友一直都有人问我要学习资料,嵌入式实在太杂,网上很多人写的太不负责了,本书单综合了本人以及一些朋友多年的经验整理而成. 本人见识和阅读量有限,本书单可能有不对的地方,欢迎朋友指正,交流你 ...

  8. 嵌入式linux学习论坛,嵌入式linux学习路线分享:教你真正好学的嵌入式开发学习路线...

    Linux 是一个开源.免费的操作系统,主要应用于服务器(网站服务器.云计算集群.DNS 等)和嵌入式,同时也被很多程序员用作个人操作系统.Linux 使用 GPL 许可证,允许任何人以任何形式传播其 ...

  9. 转——嵌入式Linux学习路线

    可能是年前跳槽的比较多,遇到不少同学咨询到嵌入式行业发展和职业规划的问题,这里总结一下嵌入式行业的机遇和选择,希望对读者们有所帮助. 我们暂且宏观上把程序员分为3类:业务类,专业类,系统类. 业务类 ...

  10. 嵌入式Linux学习路线图

    淘 宝:100ask.taobao.com 邮 箱:weidongshan@qq.com 微信公众号:baiwenkeji 公司 微博:百问科技 个人 微博:韦东山 版本 日期 作者 说明 V1 20 ...

最新文章

  1. python moviepy 特效编辑
  2. sklearn pipeline_我的sklearn学习经验
  3. python产品缺陷_基于python从redmine-api中获取项目缺陷数据(1)
  4. 8 无法识别raid盘_王者荣耀防沉迷规则再升级;未来将采用人脸识别验证
  5. 中国历史上影响最大的10首诗
  6. 判断是否为数组和方法
  7. html5动态切换class,uni-app v-for循环遍历 动态切换class、动态切换style
  8. python画螺旋状图形教程_如何快速绘制一个“螺旋状”图形?
  9. 用IAR调试芯唐Cortex-M0系列芯片指南
  10. 伯努利试验和二项分布
  11. 树莓派开机启动chromium浏览器
  12. Tomcat8+Redis集群解决会话共享
  13. vue项目使用预渲染 进行seo优化
  14. 关于win 10电脑连接手机热点自动断开的问题
  15. HBuilder没有显示表格边框
  16. 逆向之OllyDbg调试细则
  17. pic 18f45k80单片机看门狗程序
  18. 天地图调用域名与 https
  19. iOS开发基本功的那些事儿(未完待续)
  20. 高速下载苹果官方文档(百度云盘)

热门文章

  1. Visio 连线 取消自动附着,取消自动捕捉
  2. 做外贸如何防止邮箱被封?已解决!
  3. 科大讯飞实习 第七周日记
  4. oracle的视图和同义词
  5. 关于二叉树的前序、中序、后序三种遍历
  6. 歌曲:酒干倘卖无 背后的故事
  7. 《蔡康永的说话之道》书摘
  8. 网站点击量太大崩溃怎么办_网站崩溃时该怎么办
  9. 电磁场与波 matlab,电磁场数值计算法与MATLAB实现
  10. Google Analytics与百度统计比较