一转眼3个月的试用期过去了,作为一名菜鸟,经历了很挫折,再这里,总结经验教训,为了以后更好的发展!
3个月前,也就是2012年9月份,我开始了自己人生的第一份工作(个人经历比较少,照理说作为个本科生,毕业前多多少少也实习了1、2家公司了),我是2012年7月份正式毕业的,之前的5个月(2011年12月-2012年5月)在北京学习,也就没找实习单位,7月一毕业出学校,老爸要求我先考个驾照,不急着找工作,所以又在家待了2个月把驾照拿了!9月来到了深圳,面试了5家公司,找的是嵌入式软件方面的工作,结果第5家就是现在工作的公司。
公司是做环境方面的测试仪器的。刚入职第一天,本以为前2个月会过得比较轻松自在(因为听学长们说刚进公司没什么事的,公司会给新人1、2个月熟悉公司业务),但是没想到的是,HR带我到我们软件部部门老大那里报道完后,老大直接就分配了一个项目给我(我、另一个硬件工程师还有一个机构工程师,3个人一起完成,我负责软件部分),老大还问我愿不愿做,我当时也没考虑这么多,就说“行”。
第一个月,因为大学之前没过什么东西(唉,大学过得比较简单和颓废,总结起来只做了2件事:第一件事是:打篮球;第二件事是:打魔兽世界(WOW)),所以没什么经验和思路,脑子也是一片空白,老大从交完项目给我之后也就再也没给我什么安排了,前2个星期,我自己把项目需要的软件开发环境搭建好,把项目使用到的一些芯片资料下载好,也初略的看了些,但是还是不知道要干什么,软件从什么地方开始写起,想着这么一个项目自己怎么可能做出来呢!唉,有点后悔当初自己说“行”了。第3个星期,项目组开会,第一次参加这种讨论的会议(人不多,2个部门的老大加上我们3个工程师),一起讨论了40分钟吧,我没主动说一句话,也不知道说什么,作为一个新人,我只是“嗯、好的、行、知道了”的回答,第一次开会,我得到的信息是回去写一份软件需求分析文档。回去之后,了解了硬件提供的接口和要求后,我开始写项目软件需求分析(公司服务器上下了个模版,自己之前也没写过),之后把写好的需求分析发给老大,老大检查后说有很多地方要改,要我把这需求分析在写详细了,具体的功能模块要区分清楚,软件的实现框架图(我就弄了些流程图)。第4个星期,硬件把一块弄好的板子叫我写软件测试功能(这板子是项目其中一个模块的),拿到板子和原理图,我把板子上的一些东西大概熟悉了一遍,就开始看芯片手册了,熟悉这芯片的主要功能和一些接口(下了两份datasheet中英文的对照着看,E文水平太烂,看着就头痛、打瞌睡),根据硬件提出的要求,我也不急写程序(主要还是不知道怎么下手),看着芯片公司提供的例程熟悉芯片的各种操作,程序弄好了总要有个验证吧,那就得把程序烧到板子去看看现象啊,后来去仓库申请了一个ULINK2(公司里的东西都是要申请的,填单申请,仓库没货的话还要填单请购),心里也蛮不是滋味,你说搞开发的这些东西公司应该都配备齐全了,什么都还要自己去找(万用表、示波器、螺丝刀等这些东西都要自己去找的,不过也好,找来找去,公司的人也认识了蛮多),这样我折腾了一天把东西找齐了,把ULINK2的接口、管脚熟悉了,知道这东西怎么用、怎么接线了(因为板子上提供的程序下载口只有7个脚的,但是这边是20pin的,没办法,只能看着原理图,用杜邦线一条条的连接起来,要接的线有vcc、rst、TDI、TDO、TMS、TCK、GND)下载的工具弄好了,但是板子还要供电啊·····又等跑仓库申请一个5v的电源(一个电源,一条3PIN的电源线),回来百度了下这线怎么接(L线(灰色)、N线(蓝色)、地线(黄绿色)毕竟是和220v直接相连,生怕接错短路造成什么危险·····),终于,板子上电启动了,折腾了蛮久,菜鸟真心不容易啊,能怪谁呢,只能怪自己大学没多花时间去学习这些!第一个月过去了······(程序还没烧啊,没办法,这个只能到下个月了,哈哈 ,国庆放假呢······没回家,留在深圳玩了)
第二个月,10月8号,嘿嘿国庆的假期过得很快,我又要投入到工作中了,还有很多很多的事要做啊······周一,又开了一次会议,检查项目的进度(惭愧啊····我的项目都没有什么动静啊),会上结构工程师和硬件工程师在一个问题上是争吵得厉害,一个不服一个,这次,我还是没说什么话,只是回答了一些问题,说项目在进行着。这次开会也是40分钟左右,没什么收获,回去继续弄自己的。接着上个月的烧程序吧,菜鸟的每一次行动都是艰难的,看吧,这个烧程序,也有来折腾,刚开始keil软件一直提示“NO ULINK Found!”后来发现是线路没接好,因为自己接的线错了(唉,那7根线还真是要求够高的),程序烧进去了,但是串口怎么没数据出来呢(我写的是一个调试串口的程序,我想还是先把板子的通讯调通了,在弄其他的),奇怪,程序就是简单的让串口输出“hello motorola”,怎么没反应呢??老老实实检查吧!我先是用万用表测了串口和芯片部分的硬件连接,发现连接是没问题,回去检查软件,串口初始化、波特率什么的都没问题啊,为什么没数据呀······问老大,老大说,你自己debug下,一步步看下寄存器的值,看哪里有问题····额,行吧,自己找吧!因为串口一直连着的,突然有一天我无意在串口上看到了“hello motorola”····咦,怎么又有输出了呢???我重新烧了程序,串口又没数据了,奇怪。。。过了一会,它又有数据了。后来得发现,这哥们是烧写完程序,每次都是2分钟才显示数据,这就奇怪了,这是为什么呢?最后,发现是看门口狗的问题,每次烧写程序后要断电重启下,就可以工作了·····额,菜鸟就是这样被折腾的!嘿嘿,遇到问题,先自己想,想不出来,就QQ群里问,在不行跑到论坛上请教!把这板子调通了,还自己学习了操作这芯片的其他外设。
第二个月中旬,硬件又给了我一块新的板子(另一个模块的STM32F103B的板子),有了之前的学习,网上关于这芯片的资料也很多,项目要用这模块操作5个传感器,并将传感器采集的数据通过IIC进行通信。涉及到传感器和IIC,看了很多传感器和时序图,了解了IIC是怎么操作的,这里遇到了一些问题。第一,在烧写程序时,提示ERROR:“NO ARM Device Found in JTAG Chain Please check the JTAG and the connected devices”,无法加载flash编程算法,编程芯片没选对,但是检查了芯片的选型和options中选项,都没什么问题,在网上看到别人说,有可能是软件版本太低的问题,当时我用的keil4.12版本的,后来只能到官网上下载了一个keil4.6最新的版本,咦,居然程序烧写成功了,虽不是什么大的成功,但是对于我这个菜鸟来说,也算是一种激励了,毕竟又可以继续往下做了!O(∩_∩)O哈哈~,小乐了一下!第二、这问题算是纠结得比较久的问题了,由于硬件在设计原理图时,把JLINK的+3.3v弄成3.3v,结果JLINK的3.3v就没和其他的连接上,导致和JLINK3.3v管脚相连的RST脚上拉失败,RST一直处于低电平,所以,每次烧写程序进去的时候芯片就复位了,刚开始,硬件一直说是我软件的问题,在检测这个问题的一个半星期的过程中,我用万用表、示波器把板子进行检测,最后还发现了,硬件居然用100k(用10k就差不多了)的上拉电阻接在JLINK的3.3v和RST管脚之间,就算是3.3v接上了,也无法工作。最后,硬件工程师很不好意的说,“实在对不住啊,让您弄了这么久!”呵呵,这也没什么,别小看了一个小小的上拉电阻,它的作用很大,很关键。也好,这样我自己学会怎么去检测(软件点灯、单独控制某个外设,示波器观察串口的输出波形,)感谢硬件工程师的出错,让我学到了很多东西,提高了自己的动手能力!在此,谢谢他了!
第3个月,前两个月一路摸爬滚打的过来·······嘿嘿,这个月有新的板子了,也是项目的主控芯片LM3S9B92,这一模块主要是要接收前两部分发来的数据,并将其显示在TFT上,当然还有其他的一些TFT上的设置(端口、历史数据等等)。TI官网下了外设驱动库、图形库以及一些资料,这里还是用到之前的东西,串口和IIC通讯都是用到,只是TI提供了丰富的库,使用起来也比较方便,这里主要遇到了2个问题,第一是:keil编译不能大于32k的问题,原因是keil没破解,其次是WIN7系统要用管理员身份去破解(蛋疼,害我折腾了1、2天);第二个问题是,液晶屏容易卡死的问题,最后在eeworld论坛上得到了解决,是由于堆栈的太小的原因!嘿嘿,在此非常感谢论坛上那哥们给我的帮助,谢谢了!
项目还有很多弄,现在只是大体完成了。感谢公司提供给我这个菜鸟学习的机会,感谢eeworld论坛上给我的帮助的朋友,感谢电子时代QQ群的猫师傅和太阳大叔以及小勇子。
都说男怕入错行,我也不知道自己是不适合这一行,毕竟自己大学的专业是电子信息工程的,兴趣嘛又不是特别爱好的那种,但是也不讨厌。3个月下来,我也知道自己是很多东西不懂,什么都要学,所以项目的进度是挺慢的,内心也比较惭愧,总感觉对不起公司。最近买了一本《我编程,我快乐》的程序员职业规划的书,这星期看完后,给自己做个职业规划,毕竟有规划,才有奋斗的方向,找到自己适合和喜欢做的方向,同学们很多都在搞android和linux方面的,自己之前也挺想搞哪方面的,但是第一份工作又不是相关的,只是涉及到单片机和ARM的,现在还这不知道自己该怎么去做出选择······
嘿嘿,一下子3个小时过去了,罪过啊····赶紧继续弄这个项目吧!