面向硬件编程的一些思考

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tr1912/article/details/71617506

       最近小编这几天弄了弄硬件的编程,感觉很有趣,同时跟纯软件编程肯定是有很多区别的,所以在此和大家说道说道。


一、硬件编程


        其实说道硬件编程,大家肯定乍一听感觉很难,很高大上,但是我想说的是除了需要了解一些硬件编程中对于各种机器工作状态的理解之外,剩下的就真没有什么了,基本都是逻辑and逻辑and实际,说白了就是看文档,理清楚逻辑再加上一些根据实际状况的调试就可以很轻松的能够搞定硬件编程。

        硬件编程是什么呢?其实我们用到的电脑里面的驱动就是面向硬件的编程,只不过驱动程序是真正硬件里面程序的一种辅助程序。硬件编程就是对可以进行逻辑操控的硬件进行编程,让他做你想要做的事情,这里说道可编程硬件 ,基本上都是针对的一类有存储功能的,逻辑可变的一系列芯片的一个总称,常见的有51单片机,Arduino,arm处理器(一般手机上面用的)等等。一般常见的基础电子元件是不可以被编程的,如电阻,LED,电子管等

        如果你可以用你写的程序来操作这些类似CPU的处理器,那么恭喜你,你已经迈入了硬件工程师领域的大门了。说到硬件编程,为了操作简单,和硬件接触方便,通常用的语言都是C,C++,汇编等基础语言,在一般程序员上手上来说的话是完全没有问题的,尤其是到了arduino时代,用C编程arduino的程序简直不要这么简单。


二、硬件选择


        

        一般来讲的话,如果真心想要学习硬件编程的人都会从51系列的单片机入手,包括STC89C52,STC12S5C60S等等,如果想要进一步进阶的话,要接触到STM32系列的单片机了,他同样比较简单,但是性能和效率上要比基础的51单片机好很多,然后下一步肯定就是面向ARM的编程了,想要做ARM的编程,首先需要了解一些关于Linux的知识,因为一般用ARM的单片机光有程序已经是不够的了,还必须要有硬件系统才可以很好的管理,也为编程者省去了很多事情,还有Linux的内核对于基础硬件的操作也很好,Linux的代码也是用C语言写的,所以他们臭味相投。

        如果你只是想要了解一下硬件编程,想做为一个个人兴趣爱好的话,可以从arduino来入手,因为他基本不需要你懂单片机中的什么寄存器了,中断了就可以让你实现很多功能,所以比较容易做出东西,可以让初学者有一个很简单的认识,并且arduino的功能也是非常强大,它自己集成了很多的硬件处理库,方便操作不同的硬件电路,它还可以直接用对象的角度来考虑整个硬件的世界,比较适合某些自身程序员。



三、编程


        其实说道编程,感觉天下的程序是一家,不管是纯软件编程还是硬件中的软件编程也好,核心的语句总是那么几个,核心的流程也总是那么几个,并且考虑的东西都是一样的,怎样可以获得正确的数据,怎样去处理。

        然而不同的地方在于可能纯软件编程中需要的数据要不就是从界面(interface)上人输入的,要不就是获得已有的,要不就是从某个函数方法中获得的。但是硬件编程需要从硬件中读取数据,数据有的时候不是很直接,类似于信号一类的东西,比如有的硬件(传感器)反馈回来的是一组电平数,或者是一段PWM波形,你就需要去按照说明文档对其进行合理的分析,然后才能得到你想要的结果,然后需要考虑如何显示,像是在屏幕上哪个像素点亮,哪个像素点灭等一系列细小的东西。

        然后再硬件编程中绝大部分都是单线程的编程所以需要考虑时序的问题,可能稍微逻辑不好就会导致整个数据的读取错误,并且单片机在操作其他硬件的时候是需要对硬件进行加电初始化的,还有进行加点激励才会读取数据的,对于这些情况也需要注意,这个时候理解一些计算机或者硬件工作原理就显得格外重要了。


四、总结


        其实我感觉每个程序员都应该去经历一些硬件编程的考验,从我们经历的各种学习来看包括网络原理,操作系统,软考基础等的训练,我再来看硬件程序的编写和硬件说明书,就会突然发现有很多熟悉的身影,因为他们就是真真正正的用在这些硬件上面的理论,所以我们写程序的时候也不能光考虑最后的实现,还要考虑实际中电路或者硬件的工作方法,这个时候我们写出来的程序肯定会更加的高效、更加的有依据。

展开阅读全文

一些思考 一些帮助

09-08

2007年入职rn转眼已经过了一年了rn看着那些正在说着在大学煎熬的兄弟,心里面多的还是羡慕rn现在是开学的时候,无比的怀念我的大学rn也许给工作的人机会再读一次大学,80%的人都愿意.rn工作的一年,有开心,有难过,体会特别的多,也说下自己的一些体会,希望对正在读书,正在迷茫,正在消沉的兄弟姐妹们有点帮助,说实话,做程序员不容易啊-.-以下的每个小点只是临时想的,没有任何逻辑关系:)rnrn工作地点: 尽量去经济发达的,IT行业发达的地方(不管从环境还是机遇来说,这些地方都比较好,也许你会说这些地方竞争激烈,如果你真的这么想,我想告诉你,孩子,你该进敬老院了)rnrn工作单位: 如果是第一份工作,能进大公司固然是好,但是如果进不了,那么也要进一家能够让自己学到东西的公司,其实工资少点也没关系的,最主要的是你要相信自己,相信这些只是暂时的.在选择公司的时候,不要太相信别人说的,特别是在学校的时候,同学之间经常说这个公司好,那个公司不好,其实你要知道,他们也只是学生,他们对公司有多大的了解?这些时候你应该的是通过朋友,网络去了解你所感兴趣的公司,能够得到一些过来人的指导,其实是很好的,不过希望这个过来人有这个能力:).rnrnMFC: csdn经常会有问MFC是否过时这种问题,我想更多的是提问者想得到一种肯定,而非想知道MFC本身,如果是程序初学者,或者是在校的学生,不要管这些什么过不过时,更多的是应该提升自己对于程序的兴趣,人家用汇编都可以做你MFC做的事情.如果对于已经工作的人来说,我想应该慢慢的从MFC中走出来,从更高的层面去设计程序,不该受到MFC的约束.试着想想,有一天,突然有另外一个类库出现,全免费,功能齐全,简单易用,那么你还会用现在的MFC么? 自己大学的时候学习C++和MFC的时候就是什么都不管,网上找例子,自己修改例子,然后自己想例子,在这些不断的看别人的东西中,不断的有自己的东西产生的时候,对于编程产生了很好的兴趣,带着兴趣去学习,比什么都好,但是慢慢的,用多了,发现MFC有点束缚自己的思想了,慢慢的你就会发现,MFC不算什么,更多的是关注设计,关注OO.很多时候觉得,以前老师要我们学习C++的目的,更多是让我们了解面向对象编程思想.rnrn英语: 英语是个好东西,自己英语也不咋滴,但是知道这个东西很重要,在学校的学生应该每天用少打一局游戏的时间来多多学习点英语:)别到用的时候只会My name is~~~~;rnrn为人处事: 如果我是一个HR,那么我想人品和技术应该是对等考虑的,毕竟大家都是人,和你工作的同事也是人,有时间的时候多多审视一下自己,多多找找自身的问题,我们应该做一个细胞,懂得怎么去变异,怎么去更新:) rnrn圈子: 不要永远都想生活在自己的一个小小的圈子里面,多认识朋友,多交流,多沟通,别让社会把自己遗忘:)rnrn迷茫: 生活中经常会有迷茫,不知道自己该干什么,不知道自己走的路是否正确,不知道生活是为了什么,自己前途在哪里.心情很沮丧,每当这个时候,我会让自己尽量的放松,打打游戏,出去走走,唱唱歌,能放松就行,对于生活前途这些的思考,不应该是在迷茫的时候,更多的是应该在自己清醒的时候.rnrn工作: 负责是一个好事情,但是别学大哥一样把所有责任都归咎于自己,把所有开发任务都自己来扛,毕竟你是在团队里面开发,你还有你的伙伴,应该把责任平摊,这样让自己被这些事情烦心,也可以给自己的伙伴一些讯息,一些合作者的讯息:)这样整个团队才能和谐(时代的主题)....rnrn提醒: 有很多东西,上面的,关于生活关于程序的,在以前的生活中其实有人提醒过,但是有时候觉得不是那么重要,没有注意,善待提醒,好好的去想想别人的提醒,这个是生活中的一个避免出错的小窍门:)rnrn生活: 程序只是生活的一部分,很小,真的:)..别错过生活中其它美好的东西...rnrn另外由于个人原因,准备向上海发展了,想向兄弟姐妹们了解下上海有什么比较好点的公司?C++的...壮士一去兮不复还啊~~rn(GF看了写的过后说,你重点应该是最后一句吧,其实不是,很早就想写点这些东西了,因为在大学生活以及后面的工作中感受到,要是在生活中有人给自己一些指导,也许自己就不会走太多弯路了,自己随手写写文章,虽然力量很渺小,但是希望能够帮到需要帮助的人). 论坛

没有更多推荐了,返回首页