嵌入式开发入门与进阶经验(转)

时间:2021-02-06 14:40:37

 

(一)

如何从零基础学习嵌入式开发,我在这里给大家一个切实可行的道路,而且相对容易入手,学习中会不断有收获。
掌握单片机,嵌入式开发是每个硬件工程师必修课程。但嵌入式开发的掌握却并不简单,需要循序渐进的学,需要耐心的学。
对于一个零基础的人来说,学习嵌入式还是有一定难度的。
对于一个大学电子或计算机专业的人员来说,学习单片机,嵌入式还是要方便一些。
对于没有电路基础,没有编程基础的人来说,学习应该先基本掌握电路和c语言编程。
1 准备工作
模拟电路,数字电路,c语言编程
模拟电路比较难学,学个模模糊糊也就可以了,主要方法是听视频教程,看简单一点的教材,有时间在Multism上做一些仿真实验;数字电路比较容易学,找个大学视频教程学完它;c语言编程找一本c语言编程教材,做完书上习题即可。
模拟电路的视频教程有:清华华成英的《模拟电路基础》,讲的很细,但也很枯燥。
2 51单片机
学习51单片机,可以花100多元钱,到淘宝上买一块学习开发板,把视频全部学完,然后自己再做一些练习就可以了。最好掌握proteus仿真,不买硬件也可以学习。学习51单片机,一是掌握51单片机的各种资源,二是掌握常用元器件和总线。学完后,自己做一些实用的东西比如led广告屏之类的。会很有成就感哟!
个人觉得51单片机比较好的教程有:
郭天祥《十三天学会51单片机》;晨辉教你轻松学51;手把手教你学单片机(视频教程)等为了增加各种硬件知识,提高学习兴趣,大家还可以买arduino来玩一些有趣的电子制作,可以熟悉avr单片机。会增加很多学习兴趣哟!
3 学习small rtos51
买一本陈明计、周立功写的《 嵌入式实时操作系统Small RTOS51原理及应用》,仔细研读,做完实验。
学习操作系统比较枯燥,要坚持。
会avr单片机的,《建立一个属于自己的AVR的RTOS》是最容易入手的操作系统教程。比陈明计的好读多了。
4 学习ucos ii
买邵贝贝翻译的《嵌入式实时操作系统--μC/OS-Ⅱ》仔细研读,并找周立功公司的杨屹的文章,实现对ucos ii的移植。
5 在arm上运行ucosii
网上有很多这个平台的实验,教程,多做一些实验。
淘宝上开发学习板一大堆,大家可以买一块来做一做。
推荐一本书:《一步步写嵌入式操作系统--ARM编程的方法与实践》http://read.dangdang.com/book_14937
这本书不同于枯燥的教材,完全是为新手编写的,一步一步实现的操作系统。我给的这个当当网址可以试读某些章节
6 在arm上运行linux
linux比较复杂,但学习操作系统必须学习掌握linux,以后搞安卓开发也有基础。
以上学习有了眉目,就可以到企业去实习,做嵌入式系统开发了。

 

出处:

http://tieba.baidu.com/p/2136014161?pn=1

 

(二)

随着嵌入式行业的迅猛发展,嵌入式Linux凭借其系统发展的成熟度、市场应用的高份额也受到更多工程师朋友的青睐,越来越多的企业和研发机构都转向嵌入式Linux的开发和研究,这使得嵌入式Linux在新兴的嵌入式操作系统领域内也获得了飞速发展和广泛应用。面对如此火热的行业,如何才能成为嵌入式Linux开发工程师?成为一名合格的嵌入式Linux开发工程师需要学习哪些知识?
  一:C语言
  嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。
  二:Linux基础
  Linux操作系统的概念、安装方法,详细了解Linux下的目录结构、基本命令、编辑器VI ,编译器GCC,调试器GDB和 Make 项目管理工具, Shell Makefile脚本编写等知识,嵌入式开发环境的搭建。
  三:Linux系统编程
  重点学习标准I/O库,Linux多任务编程中的多进程和多线程,以及进程间通信(pipe、FIFO、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对Linux应用开发的理解和代码调试的能力。
  四:Linux网络编程
  计算机网络在嵌入式Linux系统应用开发过程中使用非常广泛,通过Linux网络发展、TCP/IP协议、socket编程、TCP网络编程、UDP网络编程、Web编程开发等方面入手,全面了解Linux网络应用程序开发。重点学习网络编程相关API,熟练掌握TCP协议服务器的编程方法和并发服务器的实现,了解HTTP协议及其实现方法,熟悉UDP广播、多播的原理及编程方法,掌握混合C/S架构网络通信系统的设计,熟悉HTML,Javascript等Web编程技术及实现方法。
  五:数据结构与算法
  数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其C语言实现过程。
  六:C++ 、QT
  C++是Linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及C++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于QT具有跨平台、面向对象、丰富API、支持2D/3D渲染、支持XML、多国语等强大功能,在嵌入式领域的GUI开发中得到了广范的应用,在本阶段通过基于QT图形库的学习使学员可以熟练编写GUI程序,并移植QT应用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。
  七:Cortex A8 、Linux 平台开发
  通过基于ARM Cortex-A8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。Linux平台包括内核裁减、内核移植、交叉编译、GNU工具使用、内核调试、Bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的Linux系统,集成部署Linux系统整个流程。同时了解Android操作系统开发流程。Android系统是基于Linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、PDA等消费类电子产品。
  八:驱动开发
  驱动程序设计是嵌入式Linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉Linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备ARM硬件接口的基础知识,熟悉ARMCortex-A8处理器s5pv210各资源、掌握Linux设备驱动原理框架,熟悉工程中常见Linux高级字符设备、块设备、网络设备、USB设备等驱动开发,在工作中能独立胜任底层驱动开发。
  以上就是列出的关于一名合格嵌入式Linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。尤其是对于一些刚毕业的应届大学生们实际项目操作经验更是严重缺乏锻炼,这时,选择一个好的嵌入式培训机构至关重要,学习完整的linux开发课程,最重要的是很多的阶段性的大项目来自用人单位的真实开发案例,这样才能真正掌握企业需要的一部份嵌入式系统开发知识。

依在下看来,要想成为尖端的开发者,

必须对CC++、汇编语言、嵌入式开发、Windows APILinux API这些底层技术有着深入的了解。要知道解JAVA.NET……等这些之所以称为高级开发语言,并不是指它们比CC++、汇编语言更高级,而是指它们封装了CC++等等的功能,更适合用于企业软件的开发,使开发变得简单。但如果要开发一些底层的软件,大型的系统的时候,就必须用到CC++、汇编等开发语言,这是成功尖端人才的一个条件。