我和嵌入式的经历。
先谈谈工作经验。我大学的专业是自动化,所谓自动化就是万金油,什么都学,什么数模电,什么机械原理,什么单片鸡,LINUX,FPGA,等等,该学的都学了。 在学校没有做过任何项目,没有参加过竞赛。 毕业后大家都说要搞技术,由于在学校没有项目经验,再加上学校也是二流学校,好不容易才找了个技术岗。
岗位内容是做基于stc12c5A32s2单片鸡的测试工装(配套生产)。 说实话,企业里面你的岗位,决定了你的地位。 这个岗位就是研发的下游,任何人都可以屌你。那时候觉得 搞产品,搞嵌入式linux好牛逼啊。后来在这家公司,工作了2年,很感谢带我的工程师(夏工),学会了做人,这2年,对我成长最多的是我的硬件水平(虽然现在依旧不是很好),软件完整就做了3个项目。 考虑到这个公司的企业文化,以及个人的工资(太低了),决定辞职。
额,and 然后呢,你是怎么想的
有什么建议呢?比如说怎么提高自己的技术水平?
离职后到苏州,找工作的时候,好蛋疼,面试官要么是给个C语言的测试题,要么问个移植过gui么。我说个我画过PCB,就问我高速布线方面的知识。 (这些在我现在看来,都是好简单的题目)。但是我很火大,为什么别www.zhulaoshi.org人问的我都不懂,我2年工作经验还是做了不少东西。为什么没人看到我的优点,现在我想通了(面试我的都是小年青,他妈的他压根也不懂,就在网上找了些题目,百度一搜一大片,麻痹的好多答案都是错的,现在依旧好多微博上写的什么东西,垃圾的很,没有实践就没有话语权)。 然后最终有家公司要我了,在此表示感谢(是一个博士,带研究生的团队)。 后来我提及过为什么那么多面试的人当中,选择我。回答是,技术可以慢慢提升,但一个人骨子里的人品。
?这就是我第二份工作,在这份工作中我开始接触了第二个单片机(Avr的一款)。发现用c编程单片机没什么区别。简单做了第一个项目,每天就是画画电路板,用面包板搭电路,做实验。然后就接触了,什么ucosii。 这时候我发现一个问题,在有操作系统下开发,比纯裸机简单。大家会觉得这个是扯淡,纯裸机要想做出大项目,要考虑很多问题,就简单一个delay(),你也写不好。??就这样,然后由于项目需要,简单学习了下stm32,无论是对单片机认识,还是对外设认识,又有了一些认识。知识积累让我迫切的想知道那个linux究竟该怎么玩。 紧接着就被一个莫名的号拉到了朱老师物联网大讲堂1群。
我是4月多还是5月具体忘了,一个偶然的机会被别人(不知道是谁)拉大这个这个群的,当时我很火大,感觉和打广告的一样,很是反感。当时就想就他妈一个物联网,什么人都炒这个噱头搞名堂。这个是起点。?前面提到了,被人拉到学习群很是火大,但朱老师搞个免费视频 c基础还有linux多少天。 我想看看也没事(不得不说老朱的 营销策略)。??看了之后,也是这几个视频让我坚定了,后面学习arm-linux的决心。 我学习我不喜欢别人把知识点给我讲的很详细,我喜欢别人告诉我先要做什么比如学习C语言,学习到程度。 我始终坚信,有人指路就够了(师傅领进门,修行在个人)。 学习老朱的c基础和linux基础,我就看了下每个知识点的深度。 说实话,如果有人告诉我linux 系统的操作只要这个深度,我早就超神了。如果有人告诉我C要学的深点(搞小型单片机,高级c基本用不到,一度觉得c好多知识没用),所以我恶补,把c和指针,c专家编程和c缺陷都看了一遍。
?紧接着老朱抛出了第一个绣球, 买开发板送裸机。说实话,我学习不在乎花多少钱,在乎能学到什么。当时想裸机么,就算没有视频,我也可以看看,看看高级单片机究竟是怎么玩的(现在看来和低端的有差别,差别不大,外设方面 还比 低端单片机简单(应该是面向的对象不同的差异))。 这样就开始了裸机之旅,学习裸机的时候,老朱的对单片机软件方面知识和理解是我从来没有想过的,觉得醍醐灌顶。虽然老朱的很多硬件知识在传授的时候有bug(瑕不掩瑜),作为一个软件工程师做到这个水平也完全够了。
? ?? ?? ?? ?裸机的学习让我知道了,对于一个单片机就我们这个S5PV210而言。我们对soc内部每个知识点掌握的深度。下面就是自己查阅资料,自己总结,自己实践的过程。很多人看完视频,做完视频里面的代码就算完了。 我可以说我裸机里面后面的代码都没有做过完整的实验(但老朱里面的小bug我还是发现了),不是我多牛逼,而是我用心了。arm的汇编指令有多少同学去查过arm的手册的,C标准又有几个人去查过,求人不如求己。如果单单从视频里面学,有很多很容易走火入魔。可以负责任的说,S5PV210的裸机比起stm32这类单片机来说还简单些。裸机的学习对我来说是一个提升,老师很多讲解是面向初学者的(我也受益匪浅)很喜欢朱老师里面的废话(这些才是金玉良言),不然我不如去买书看,书上都有。
? ?? ?? ?? ?很感叹,老朱的基本功,相当扎实,在边录视频,边写代码,还要讲解的状态下还能写出代码,真心不容易。
一次说完
第一板斧,用C语言的思维方式进行程序构架构建
程序分为三大部分:
a、数据获取,为了程序的运行,上面的问题要获得猴子的总数,从那只猴子开始和剔除的个数;
b、数据运算,需要从一堆数据中剔除相应的数据,注意逻辑的正确;
c、提高程序的运行速率,少用循环多用指针。
确实啊,现在这样的时代,会弄代码和编程是超级吃香的。