大专生入行嵌入式软件的辛酸泪

2019-07-21 08:05发布

     提笔先谢谢原子哥,因为他的stm32开发板让我找到了一份嵌入式方面的工作,没有他就没有现在的我!
     我是个大专生,88年生,专业是物流,我的专业和我现在从事的工作可以说是天壤之别。前年我毕业了,毕业等于失业,说的就是我,
因为是大专生(本人不努力的结果)所以也没有学到啥技能,出来找工作也很难,所以去了一家日企电子厂当操作工了,在日企每天上班10多个
小时,每天站得累得腰酸背痛(整天打螺丝的缘故),可以说是行尸走肉地混日子。
     有一天,一个本科生来到生产线实习(日企的惯例),在交谈中得知他的专业是软件开发,月薪3000多,可怜的我加班到死一个月才拿2500
左右。从那天起,我就觉得自己未来的命运不能这样,与其浑浑噩噩得打螺丝不如最后再拼搏一记,也许依旧不会成功但也无憾了。
     下定决心后准备入行软件开发了,因为整天接触到电路板,所以最后决定下来的是嵌入式软件工程师。于是,辞职后我花了大半个月的工资去买了各种书籍,c语言入门的、数据结构、算法、操作系统等等。我的计算机基础是相当差,学起来相当吃力,但我每天坚持练习敲代码1000行,差不多半年后终于入门了,现在想想其中的辛酸不足为外人道也。
    然后,又准备学ARM单片机了,所以机缘巧合地买了原子的stm32开发板(难度相对小点适合入门),从到第一个实验到最后几个,我先敲一遍原子哥的代码,然后再尝试着自己独立写,虽然对于我来说这其中的过程非常难,但还是坚持下来了。几个月后,当我把最后一个实验的代码敲出来后,就决定去找一份工作了。
    那些天,我在51job和智联上投了好多份简历,但都是杳无音讯,也许是我大专生的缘故吧,也许没有一个HR会相信一个物流专业的大专生能搞嵌入式软件开发。直到半个月后,我终于收到了一个电话,是一个小公司让我去面试。当时的心情那是一个激动!第二天,我坐车来到了那家公司,面试我的项目经理水平相当高,问了一些嵌入式方面的专业问题,把我问得一愣一愣的,我以为没戏了,最后还好让我写了一个音频芯片驱动的代码,
这个驱动代码我很有把握(呵呵曾经背过类似的。)面试的经理看我写得不错,就没有问一些刁钻问题了,大多都是SD卡驱动、GPRS和GPS方面的简单问题,最后才晓得他们准备用stm32开发一个导航项目,而stm32自认为自学的还可以,心中暗暗窃喜了。
    一个礼拜后,我被顺利录取了,月薪3800(苏州园区),嵌入式开发。
    只要努力,一个大专生也能搞嵌入式,这是我总结出来的结果。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
43条回答
我是大专生
1楼-- · 2019-07-25 09:40
回复【29楼】office200688:
---------------------------------
哭是懦弱的表现,男人就要对自己狠一点!
lxj19901115
2楼-- · 2019-07-25 11:13
哈哈,有点差不多的样子,我学的是电子专业,也是大专,在学校的时候,打了两年酱油,到大三的时候,才把C语言的书,看玩,然后,就买了个STM32的开发板,稀里糊涂的,玩到大三毕业,话说,那时候毕业的时候,就知道用STM32点灯,其他的如TIMER,ADC,DAC,啥的都不懂,,,然后毕业之后,悲催的生活开始了,毕业也就失业了,
具体遭遇是这样的,
12年初,一个人拎着个包,就来深圳了,
然后,因为老乡的关系,接手了第一个项目,就是写一个NOR FALSH 128M 的驱动,开发费是3K
当时的基础,就会点灯,其他的啥都不会,比如啥是SPI ,啥是SDIO,文件系统,等等,都不懂,更别说去写存储器的驱动了,
从接手这个项目,到之后的一个月,都在研究,怎么从SD卡里面读出数据来,,,貌似这个过程就花了一个多月,试了SPI,和SDIO模式
悲催的一个月中,去研究啥是文件系统,用U盘和WINHEX这个工具,去分析里面的二进制数据,,晕,,尼玛,在测试用SD卡,读数据的时候
用SPI 模式去驱动,总是不稳定,只能读出第一个扇区里面的数据,然后读另外的扇区,就一直读不出来,,,就因为这个,在这里耗费了1个多月,,
只能说明这个,上学不努力,工作的时候,就只能时不时的骂自己,咋这么傻呢
花费了,将近一个月之后,采用STM32 SDIO DMA 并且挂载FATFS文件系统,终于解决了文件的读的问题,
之后,就是写NOR FLASH 的驱动,
在写的时候,就发现了这个问题,就是管脚的分布,组织该怎么搞,怎么分配才有利于程序的开发
当时并没有像这个问题,就随便找了些IO给弄起来,后来发现程序写到后面有难度了,就在开发中间过程中去修改原理图,
修改了3次,尼玛,我发现自己太能折腾了,,,
然后磕磕碰碰,整个项目用了2个月的时间,才把这个项目给干掉了,在这中间,客户催了不下十次,,,

后来,到12年底的时候,要写一个NAND的驱动,发现STM32 有外部存储器总线FSMC,是可以驱动NOR FLASH的,
我就傻了,当时在做那个NOR FLASH驱动的时候,为啥没想到用硬件接口去做,而是用IO模拟呢,,只能说对STM32不熟悉,,,


就关于做的第一个项目,在之后的半年,总结的经验如下:
1,做任何事情,首先要向清楚之后,再动手。
2,在调试程序的时候,碰到问题,首先不要去改代码,而是要去静下心来,去思考为什么导致这个原因,想好之后,再动手去改
3,在接手项目的时候,必须把这几点弄清楚,首先要把整个工程的说明和要求文档弄到手,并且要仔细读清楚,第2,对所使用平台的要熟悉,有啥硬件接口,或者IO啥的
lxj19901115
3楼-- · 2019-07-25 12:08
接着更新
,话说在把第一个项目干掉之后,用了2个月的时间,,比较恐怖了,客户催的急,而我又没啥经验,搞的那老乡也不敢帮我接啥外单了,
然后悲催的又开始了,持续两个月,没工作,没钱吃饭,没钱交房租,没钱出去玩,,,等等,,
偶尔的半个月,晚上去吃个5块钱的炒粉,都是奢侈,
没钱了,又不敢跟家里说,毕竟读了大学出来,连吃的问题,都解决不了,没脸面啊,,
后来,偶然的机会,接手了一个MP3播放器的项目,
功能很简单,就是在别人写DEMO上,增加几个按键功能
但是奇葩的问题,就来了,我从来没写过,写没看到过上2W行以上的代码,当时看代码的时候,就晕了,这句啥意思啊,这个函数又是啥意思啊,,,迷茫中,
因为别人说这个项目很简单的,而我却改了一个星期,后来还是有问题的代码,晕,,,,基础和思维太差了,,,,勉勉强强,交了单
因为前个案子的原因,那人又来找我,说要在原来的基础上,那个播放器,要带LCD屏幕显示,
因为没有生活费,虽然这个案子对于当时的我来说,有相当的难度,但是为了生存,依然接了下来,
因为要带LCD的问题,所以就有这个几个要解决,
第一,代码程序空间的解决
第二,编写LCD驱动
第三,点LCD,
第四,图片的组织,
等等,
在程序空间上上的问题,因为偶的C语言基础还可以,就果断的在写代码的时候,使用了宏定义功能,根据不同的功能打开对应的编译开关宏
编写LCD驱动的问题,花了一周的时候时间去写驱动,当时对LCD的根本就不懂,其中的原理,比如说,LCD的RAM是啥,LCD的行和列的计算
显示的颜 {MOD}的控制,等等,都不懂,后来看别人的例程在那板子上的LCD上,点亮了一个字母A,然后激动了,那天晚上喝了半瓶啤酒,为啥?
高兴啊,把棘手的问题解决了
之后,就是图片的问题,因为,要带LCD,所以有很多图片,而我,为了那400块钱的美工画图的费用,花了一周的时间,用XP上的那个画图工具
对着电脑,一个BIT一个BIT的去画,,画了100多张,尼玛,那感觉好爽,头都变大了,然后在这些图片做出来之后,给客户看,他说可以,比原来的好,当时高兴了了下
,,,话说这个带LCD的MP3播放器的案子,也花费了我两个月时间,当然学到东西比较多,另外说明了一个问题,我太笨了,,,,但是我还是坚持,

关于,这个MP3播放器的案子总结如下:
1 ,在接手任何单片机项目的时候,看代码的时候,必须要有这个原则
   A,首先找出主程序中的死循环,部分,看看死循环部分大概做了些啥
   B,找出这个工程文件当中的,中断代码文件部分,并且把每个中断是具体干啥的基本功能了解清楚
   C,在做了,之前那两个步骤之后,再返回到MAIN函数主体中,一句一句的查看,在这个工程当中用到了哪些接口,哪些模块等等
2,在组织和架构工程的时候,必须要有模块化思维
3,在对于很多文件组织的时候,比如我刚说的那个100多个图片,你要从存储器里面读出来,而且要精确定位每个文件的话,你会怎么做呢?
  如果这些文件会更新,有可能是几个,也有可能是几百个,那你又怎么去维护你的程序
  说到这里,就必须想到和要有这个思维,在组织管理同类型的文件或数据的时候,必须要有表格的思维,
  用表格去访问和读写数据
八度空间
4楼-- · 2019-07-25 12:56
回复【32楼】我是大专生:
---------------------------------
有道理,男人就要对自己狠点。

楼主的精神值得学习,辛苦点总是有回报的。

我现在也在敲代码中,一起努力、加油!!!
我是大专生
5楼-- · 2019-07-25 15:33
 精彩回答 2  元偷偷看……
victor
6楼-- · 2019-07-25 19:03
顶!!!!

一周热门 更多>