第一次写博客也不知道写什么,只是自己感觉进入到了比较迷茫的阶段,后续想通过手写一个项目来麻痹自己(项目涉及的方面相对多一些,想通过博客的方式记录下来整个过程,权当做是自己的笔记好了),先写一篇回忆博客练下手,也是记录自己这几年的职业生涯。

回想自己入坑码农行业,严格意义上讲,是从大三才开始的。同样是大学,有的人入校门就是冲着保研去的,比如我的室友,一直在学习,有空就去图书馆,专业成绩没得说,专业第一,还是班长,拿一等奖学金的学霸,最后也是如愿保研华科。对比我自己,大学前两年相对比较荒废些,打游戏较多,专业成绩整体也只是专业十几名,中上水平,不上不下的很尴尬,又不是很想考研(好吧,不自欺欺人了,还是觉得自己考不上好的学校),直接找工作吧又没什么拿得出手的技能,就陷入了恐慌之中。

大三上学期的9月份,上届学长学姐来分享找工作的经验,有Java,Android,c++,嵌入式,因为那个做嵌入式的学长说了好多,让我把前面几位学长学姐的分享都给忘掉了,就觉得,哇,嵌入式是个好东西。于是分享完后跟着学长继续请教了一些问题,学长说大三都过去一个月了,现在入门有点晚,嵌入式的门槛稍微高一点,不到一年时间,明年秋招不一定能找到好工作。自己当时也很迷茫,觉得不学点东西没法找工作,学这个门槛又有点高,但是毕竟那会年轻气盛,我才不管你门槛高不高,就入坑了,开启了为期十个月的自学生涯。

学习过程(其实也可以说心路历程,哈哈):

1. 第一步,从卸载lol开始,然后就是捣鼓电脑,装虚拟机。刚开始那会跟着网上免费视频入的门,装Linux虚拟机,用的红帽,来回装了好几回才成功,自己都鄙视自己了。

2. 装好虚拟机后学习C语言基础,虽然大一大二有过c和c++的课,但学习环境是VC++6.0,命令行很不习惯,更别说什么GCC编译了,就自己搜了些免费视频和书(《 鸟哥的Linux私房菜》)继续学习Linux命令,当时课上都在看电子书。觉得自己从进大学校门以来,从没这么专注的干过一件事,就这么一点点的学习,转眼一个月就过去了。算着秋招时间,自己根本学不完,心理压力越来越大,就又问了学长这么下去是不是就完了,学长建议我先稳住,去好好学习C语言,尤其是指针操作

3. 当时班长建议我买个51单片机学学,既可以学C语言,又可以学硬件,然后我立马买了个arm9 2440开发板。。开发板到手我就跟着视频一步一步做测试,一周后发现自己啥也不懂,就想着要不还是单纯回去学习C语言吧。。跟着一些视频资料学习了怎么在Linux下写程序,常用命令,GCC编译器,C语言的各种基础,数据结构,上课时候就看《C程序设计语言》和《C语言完全手册》(不是说谭浩强老师的书不好,是我自己确实很难吸收),当然了这是我迫不得已的情况下才上课看的,大学课堂还是有很多知识要学习的,这也导致我一些专业课程后面期末考试前要预习好久。就这么上课看书记笔记,下课跟视频敲代码,每天晚上也是学习到一两点(之前是打游戏到一两点,哈哈),很快就到了12月,因为得准备期末考试,暂时把学习搁置了几周

4. 寒假回家带了2440和51小车(课设内容),自己憋在一个屋子里看了一个月视频,写代码,然后把51单片机小车的功能都自己写完跑了一遍,C语言也算是基础打得比较好了,多进程,多线程,socket编程也是入门了,常用数据结构也能手写了,但进度其实很慢,因为2440拿回去就吃灰了。。

5. 返校后,了解到另外一个同学也在学嵌入式,他是买了课程,我说那我也得买点课程看看,他的课程里老师语速较慢,我不是很习惯。第一期视频正好还是C语言基础,大概看了目录,觉得再买有点浪费时间,同学则是已经学到第三期驱动开发了,对比下我只有C语言基础。就上网看嵌入式视频的评价,然后入手韦东山的免费视频看一下怎么使用裸板,了解了uboot,kernel,驱动,文件系统,应用程序,交叉编译。其实个人感觉韦东山的入门视频对于当时的我来说已经是相当高的难度了,但养成的习惯没改,跟着视频敲代码,思考,也是照葫芦画瓢用汇编和C语言写了自己uboot,就是点个灯,移植内核,根文件系统,写应用程序测试(也是点灯)

6. 觉得韦老师的授课风格个人比较喜欢,就买了他的后续两期付费视频,做驱动模块开发和应用软件开发,学习驱动模块时候,感觉太难了,就只是在照搬代码,也不清楚自己在干什么,只是了解了字符设备驱动,块设备驱动,网络驱动这些基本概念和input子系统什么的,学到一半有些扛不住,但还是在5月中旬把视频学完了,然后找学长问,我学这个怎么写简历啊,学长说什么?你还没做项目,赶紧做俩项目啊,驱动学习比较难,你学习的也只是入门,很难靠驱动找工作的。就跟着韦老师的视频做了个电子书和数码相框,跟一块学习的同学做了个网络安全传输文件和基于motion的移动检测,就到暑假了。。

7. 暑假跟着班长参加了电赛,做了个基于STM32的小系统,做的效果也不好。。名次比较差,但收获还是蛮多的,电赛过程中自己手焊电路,还用到了51,MSP430,STM32,相当于常用单片机我基本都有所接触了。先学习arm再回头做单片机的感觉就是,单片机程序其实跟arm的裸机基本上是一样的,看电路底板图,通过寄存器操作CPU和外设电路,就发现uboot和驱动开发自己也可以入门了。再就是刷笔试题,跟同学互相讲项目,看谁能讲通,关键点在哪,8月底才开始投简历,然后9月开学后翘课去听宣讲会,笔试,面试,自己还算是比较幸运吧,面了就6家,九月底就签了offer了,进了一家比较心仪的安防公司,学习前的目标其实就是进入这家公司,做嵌入式应用开发,后续十月份也没继续找工作。

8. 然后自己就扮演起去年学长的角色,去给下届学弟学妹们分享。还真是个循环,哈哈。后来就跟老师上课了,有个关系还可以的专业老师上课说得准备找导师做毕设了,我下了课赶紧联系这位老师能不能做我导师,老师名额暑假就已经满了,这可能就是机会总是留给有准备的人吧,自己一直都是慢半拍。我就去跟班长了解下我适合跟哪个老师,班长建议我跟系主任(本人电子信息系),虽然没给我们上过课,但他嵌入式项目很多,挺和蔼一人,我就直接去联系了。大四上跟着老师做了基于arm11的视频点播器,每周末都要跑去本部跟着研究生们一起学习,汇报,学了很多硬件方面知识,类似232接口,485接口,网卡芯片,各类传感器等等,还要调示波器,当时还纳闷,我到这里来是干什么的。后来也有Linux上的软件开发,系统移植是上届的研究生做过了,加了无线网卡,连接上设备就可以看视频,用到Apache,网页开发是与我同届的一个计算机专业学生用PHP开发的,跟他了解到他其实大二就参加这个项目了,大三则是已经出去实习了,当时就觉得自己弱小的心灵受到了二次伤害,怎么这么多优秀的人啊,大二我还带着室友们在召唤师峡谷驰骋呢,真的是没有对比就没有伤害。好在自己心态还算良好,也不在意别人到底如何优秀,就但行好事莫问前程(现在明白了是问前程也问不到),就继续做那个项目,还是有所收获的,之前学驱动时候云里雾里,接触硬件层后,感觉对嵌入式系统理解更深刻了。

9. 因为我做的项目是上届研究生做的,我只是把项目又重过了一遍,导师觉得后面论文查重不好过,让我在做个新项目,只能跟着导师的脚步继续走下去,是一个在树莓派上做的物联网关系统,然后已经支持GSM和Lora协议,我负责的是把4G模块加上,就自己搜了很多资料,逛了多家淘宝,多次逛电子市场,最后加了个4G模块,软件上倒也没做什么大改动,但也算实际参与了一个项目,加上自己去那个公司每天要坐地铁,转公交,单向通勤就需要一个半小时,每周去三到四天,连续去了两个月,公交地铁上闲着没事就看书,不知不觉就把《C专家编程》,《高质量C编程指南》,《C缺陷与陷阱》读完了,对自己的编程思维确实提升了一些。因为每天三小时的通勤,过得其实真的蛮累的,后来导师也给了辛苦钱,哈哈。这个项目是在一个小公司做的,涵盖了前端设备(我参与)和后端平台开发,涉及到电路设计,软件设计和结构设计,了解了一个实际产品的落地,后续也用这个写了毕设论文顺利毕业。

回首整个大学,我觉得自己是个很幸运的人,从学长,班长和导师得到了很大的帮助,用大三大四两年弥补大一大二两年的荒废。

接下来就是18年本科毕业,做摄像机开发,工作中相继碰到了三位很好的师父,带着我工作学习,了解业务,做应用开发,学习如何与人合作,沟通交流,入职半年就开始自己带项目,成功做好了几款产品。写到这里,再回想自己,从事嵌入式应用开发已有将近三个年头,总结自己近些年的做的开发工作,专业方面就是在嵌入式Linux环境下进行C语言编程,涉及多线程,网络编程等,用到各种应用层的网络协议,第三方库,也会涉及很多工具,类似经常调试死机的gdb,查看进程系统调用的strace,网络抓包tcpdump等,这些也算是一个嵌入式软件应用开发的基础技能,但做的更多是其实是业务层面的,如何理解产品需求,如何设计解决方案,怎么实现,如何夸组沟通,如何跟测试部沟通,如何跟技术支持沟通解决现场问题,如何跟客户对接,跟分公司沟通等等。毕竟软件开发工作还是要面向人开发的,不可能说每天只面对电脑敲敲代码就完成工作内容了,当然这只是我一个普通的渣渣一线码农的狭隘想法。

思绪再拉回迷茫的事,还差4个月就毕业三年整了(不知道为啥突然想到了梁朝伟的台词“明明说三年,三年后又三年”),如果大学时选择读研,顺利的话,今年刚毕业,没走过的路也不清楚会是怎样。很清楚自己就是一个普通人,不是那些后浪,没有什么引以为傲的经历,资本,只是新一代的韭菜。至于工作,也不是挣大钱的互联网,嵌入式工作还是要积累很多基础知识。都说人在二十多岁时最容易迷茫,找不到方向,自己都还没过25岁的生日,正处于这迷茫的中间段,我也不知道自己迷茫什么,但终究是有一些焦虑。老男孩里的歌词说的挺好的,当初的愿望实现了吗,事到如今只好祭奠吗。这么说来是自己没有了目标,小学时候是要考个好初中,初中则是考个好高中,高中期望上个好大学,大学时愿望就是顺利毕业找一份工作,一路按部就班的走来,突然没了学业上的固有走法,就一头栽进了社会,就好像独木舟突然冲进了太平洋,三百六十度的远方。然后就是三年下来,自己的解决问题能力确实变强了,但基础却更薄弱了,今天没有学长指路,也没有班长和导师帮助,上次的恐慌还是在大学,那时候是通过学习解决的,要不迷茫的时候就继续学习吧。既然做安防这个行业,那自己的基本音视频素养还是要培养下,接下来准备写一个从音视频采集到编码,网络传输,解码,播放的小项目起手,网上确实有很多案例了,但自己还是想重新造轮子,学习新知识的同时整理下自己已学的却已遗忘的旧知识。

不知不觉就写了这么多,语言比较随意,但发现原来自己还是挺喜欢写东西的,第一篇博客就到这里结束吧。

回忆做嵌入式软件的几年相关推荐

  1. 【荐读】一名95后的嵌入式软件工程师,成长之路!

    作为一名95后,没有个两年三跳都要跟不上队伍了~ 时间过得真快,转眼间三个月就过了,我在新公司转正了. 今年六月份,我从原公司辞职了.从世界五百强到小公司.从机器人到芯片.从一座城到另一座城.这一跳让 ...

  2. 在腾讯做嵌入式是怎么样的

    昨天发朋友圈,是我帮忙同学拍的几张照片,自己觉得拍的不错,点赞的人还挺多的,就想着聊聊在腾讯做嵌入式软件开发的情况. 我面试的BSP驱动开发工程师,入职后也从事这方面的事情,但是并不仅仅是BSP驱动. ...

  3. 32岁已育国企技术女,上升无望,下一步如何做?

    点击上方蓝字关注「中产之路」 读者微信咨询,经同意,隐去敏感信息,发在这里. 读者: 京杭君你好,看了你的经历,很佩服,你的眼界和执行力都非常好. 我之前只埋头苦干,不抬头看天,现在处境尴尬. 我说下 ...

  4. 嵌入式系统功能概要设计说明_嵌入式软件架构设计实际该怎么做?

    一   错误的示范 最近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,因此把他安排了去负责一个新产品的研发,前期让他负责加速度计.NB-IOT.舵机 ...

  5. 【小白】【大学】一名嵌入式软件开发小白的单片机学习历程、心路历程、经验分享

    我的嵌入式学习之路 我为什么写这篇文章 先简单介绍一下我自己 与每一个技术小白共勉 这篇文章写给谁 我的学习经验分享 我的成长之路 我的单片机学习历程分享 51系列单片机学习历程 预备知识:(可以查百 ...

  6. 嵌入式软件开发工程师求职要求

    文章目录 他人感悟 工作职责 任职要求 嵌入式软件开发涉及的知识点很多,我仅简单说一下: 他人感悟 一线工程师告诉你嵌入式真实现状与发展前景 当我们谈论嵌入式时我们究竟在谈什么 工作职责 负责硬件平台 ...

  7. 2021届秋招嵌入式软件开发(联发科、海康威视、浙江大华、高德红外、汇顶科技、瑞芯电子、深圳有为)

    非985/211学校,研究生!本科专业机械设计及其自动化,设计到一点单片机知识,对于单片机没有项目实践经验,底子弱!后来考研,没有考上自己想去的学校,调剂到湖北双非院校继续读研,选导师的时候,师姐师兄 ...

  8. 嵌入式软件工程师_程序人生一名嵌入式软件工程师的成长总结

    哈喽,我是老吴.今天分享一篇18年毕业生的总结文.文章于首发于[嵌入式大杂烩] (2019-10-16).文章里干货多多,各位慢慢品读吧. 一.我的工作经历 1.1 第一家公司 1.2 第二家公司 1 ...

  9. 嵌入式软件开发——嵌入式软件工程师:就职的“门票”

    原载 http://zhouping62.blog.sohu.com/120392067.html 这十年来我一直需要做面试工作,有些年会面试两三百人,少的年份也要面试一百来人.我的工作领域是手机的软 ...

最新文章

  1. IDEA显示类的结构 Alt+F7
  2. php发送验证图片,php生成图片验证码_PHP教程
  3. charles修改响应体
  4. AgileConfig-如何使用AgileConfig.Client读取配置
  5. 编写干净的测试–验证或不验证
  6. 图像处理 --- 三、图像变换 3.2 图像的几何变换
  7. Log4j2进阶使用(按大小时间备份日志)
  8. L1-062 幸运彩票 (15 分)-PAT 团体程序设计天梯赛 GPLT
  9. 如何解压bz2后缀的压缩文件
  10. 概率论与数理统计学习笔记——第四十三讲——两个正态总体的抽样分布
  11. WIN2000故障修复之故障恢复控制台篇
  12. 基于python的opencv图像处理对交通路口的红绿灯进行颜色检测,无人汽车驾驶第一步!
  13. 怎样把PDF翻译成中文
  14. Unity功能记录(十四) ------ 启动画面
  15. linux curl命令详解,以及实例
  16. Unicode 字符串逆序
  17. GitHub学生包申请(学生认证)教程,国内外主流云主机平台对比
  18. adb 命令获取安卓设备IMEI码
  19. Matlab代码导入STM32F103流程
  20. 数据可视化策略_从无见识到有见识的四种设计有影响力的数据可视化的策略

热门文章

  1. D-Link DCS系列监控账号密码信息泄露
  2. 我国计算机通信技术现状及未来的发展趋势,概述计算机通信技术的发展趋势
  3. 研究生期间如何赚外快
  4. [解决方案] LaTeX公式中的多行大括号 (如涵盖多个不等式)
  5. 网页制作存在的一些难点
  6. 打印机共享怎么设置?如何设置打印机共享?
  7. 【CNNVD-201303-018】D-Link DIR-645 Routers 认证绕过漏洞复现
  8. 小白学mongodb-文档操作
  9. MyBatis学习(二)--利用MyBatis实现CRUD操作
  10. ps可以去视频水印h吗