Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567015
  • 博文数量: 287
  • 博客积分: 27
  • 博客等级: 民兵
  • 技术积分: 547
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-01 20:20
文章分类

全部博文(287)

文章存档

2015年(1)

2014年(95)

2013年(90)

2012年(101)

分类: 嵌入式

2013-09-22 12:14:20

原文地址:嵌入式开发学习计划 作者:张银刚

       走出本校门半年多了,在工作中发现反而使自己失去了以前在学校里明确的方向感,最近几个月里一直在思索自己的方向...
       曾经在学校里用了一年多时间做了一个嵌入式的工业仪器项目,回想通过那个时候的开发,收获很多,并且曾经也非常想在出校门后从事嵌入式Linux开发的相关工作,但工作之后才发现,现在的公司没有像我想像中的那样,有我非常感兴趣的嵌入式开发,而是走向了纯软件的开发之路。现在想来,我当时的愿望没有实现哦!
         现在,回首工作过的半年多时间,发现自己现在能学习到,没有在学校的那一年的嵌入式项目开发学到的多。感觉到自己有点走下坡路了,所以通过最近几个月反复的思考,我决定还是得再重新搞我喜欢的嵌入式开发。与以前相比,我的Linux下C语言开发技能进步了许多(毕竟在现在的公司是做这方面的工作的),这样看来,若自己再想重新走嵌入式开发的路,Linux下C语言应用软件开发、TCP/IP网络协议、Linux系统定制与裁剪方面的基本技术应该是有了,所以现在的重点应该是放在底层的软件开发和硬件结构方面,如:深入到操作系统及系统底层(Linux驱动开发、系统级工作原理等)、了解常用嵌入式处理器的结构与内部寄存器操作(ARM体系结构和外围接口、ARM汇编指令等)。我以前在学校里的看法是:可以不用学习汇编,因为我做的嵌入式开发是用C语言就可以了。但现在的想法不一样了:没有完全了解硬件结构的嵌入式软件开发人员不是一个优秀的嵌入式开发工程师,所以学习硬件的汇编指令应该是以充分掌握硬件体系结构为目的的。当然,若把汇编学习好了,那些对性能要求非常高的系统上面,软件也可以用汇编来编写。


所以我的嵌入式开发学习计划主要分以下几步走:
       第一步:在以前做过Linux移植裁剪、了解Linux的基础上,先学习《Linux设备驱动程序 第三版》,从而达到对Linux下驱动程序开发的入门,能进行内核模块的加载与删除、简单的字符驱动程序的编写。
       第二步:学习ARM体系结构和外围接口及其特性。从而达到能熟悉ARM内部硬件体系结构、外围接口及接口硬件、中断及地址等。

      第三步:学习ARM汇编指令,从而加深了解ARM内部各寄存器位置及实际操作方法。
       第四步:学习操作系统原理(当然以Linux为基础学习),从而优化我的嵌入式开发能力,可以处理系统级软件的设计。
       看情况,以后再深入到Linux内核源代码中去,重点放在学习Linux内核里内存管理单元和任务高度管理单元上面。

 

我的计划--嵌入式学习路径

      从去年做嵌入式项目到今天,已经快一年时间了,经历了从PCB设计, bootloader修改,核心移植, 文件系统移植,驱动开发,QT开发,几乎嵌入式开发的全过程。 回想起一年前,对嵌入式的感受大不一样,只庆幸是在学校,才能经历如此完整的项目流程。看到admin如此认真的写帖,感慨万千,将自己的很多想法写出来,希望对后来者有些帮助. ..如此,心足慰也。

第一个话题,嵌入式学习的路径有哪些...
       这是一个初学者常问的问题,也是初学者问嵌入式该如何入门的根源。我感觉有两个方面,偏硬和偏软。我不认为嵌入式开发软件占绝对比重,相反,软硬件都懂,才是嵌入式高手所应该追求的,也是高手的必由之路。
硬件道路:
       第一步: pcb设计,一般为开发板的电路裁减和扩充,由开发板原理图为基础,画出PCB和封装库,设计自己的电路。
       第二步: SOPC技术,一般为FPGA,CPLD开发,利用VHDL等硬件描述语言做专用芯片开发,写出自己的逻辑电路,基于ALTER或XILINUX的FPGA做开发。
       第三步: SOC设计,分前端,后端实现,这是硬件设计的核心技术:芯片设计。能做到这步,已经不属于平凡的技术人员。
软件道路:
       第一步:bootloader的编写,修改, 通过这步熟悉ARM硬件结构,学习ARM汇编语言,阅读ARM的芯片手册,感觉就是像操作51单片机一样操作ARM芯片。这一步最好的两个参考资料就是:芯片手册和bootloader源代码。
       第二步:系统移植, 驱动开发。我只做过linux方向,所以也推荐学习嵌入式linux系统作为标准体系。其他开源而且可以获得大量学习资料。操作系统是整个计算机科学的核心,熟悉kernel实属不易,kernel, 驱动开发的学习,没有什么捷径,只有多读代码,多写代码,熟悉系统API.. understanding linux kernel , linux device driver 都是不可多得的好书,值得一看。
       第三步:应用程序的编写,各种GUI的移植,qt , minigui都被大量采用,两种思想都类似,熟悉一种就可以。软件道路中,驱动,系统应该是最深入的部分,不是短时间可以掌握的,需要有勇气和耐心..嵌入式开发,软硬结合,因为硬件条件比PC差很多,所以肯定会遇见不少问题,因此实践的勇气更加重要。有问题就解决问题,无数次的实验,也许是解决问题的必由之路..
       前路甚远,吾将前行不已。


qianrushi
阅读(520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~