新手如何入门嵌入式软件开发

Sailor_forever   sailing_9806@163.com 转载请注明

http://blog.csdn.net/sailor_8318/archive/2008/04/24/2325483.aspx

【摘要】:ARM+Linux是目前比较吃香的嵌入式软件开发组合,但很多新手对于如何入门嵌入式感觉不知从何下手,本文分析了学习嵌入式软件开发需要具备哪些基本知识和技能,开发学习的基本步骤,并给出了各种参考资料及网站。  
【关键词】嵌入式,ARM,Linux,处理器,总线接口,操作系统,驱动开发
  
  
1    软硬件的基本技能
  
关于ARM+linux,涉及软硬件两块,要求通吃,这种人才比较适合成长为嵌入式系统架构师  
  
1.1    硬件包括处理器的体系结构及硬件总线接口两部分
  
处理器的体系结构
需要对微机原理、单片机、处理器等有所了解,基本上搞明白一种处理器如ARM、MIPS、PPC、DSP,学习其他的就很快了  
  
硬件总线接口
最底层的,驱动开发是最常见的工作了  
这需要对各种硬件总线接口等有所了解,如IIS、IIC、UART、SPI、CAN、MDIO、USB、PCI、PCMCIA、SDRAM、FLASH及EEPROM等,设备千差万别,但基本的连接都是通过这些接口进行的,搞明白了接口剩下的就是具体芯片的事了  
  
1.2    软件主要包括开发语言及操作系统开发
  
开发语言
嵌入式软开以C语言开发为主,要求精通指针、结构指针、指针函数及所有的数据类型转换,对const、static、volatile、packed、aligned等关键字有深入的认识  
  
操作系统开发
如果想搞嵌入式软件开发的话,不学点操作系统方面的知识你会发现没什么市场  
现在基本上是个平台都想跑个操作系统  
控制类的uC/OS-II,eCos,这些都是小型的操作系统,学起来简单,但在求职中市场小  
手机类的,如Windows Mobile、Sybian、PalmOS及Andriod,搞Sybian、PalmOS的人还不多,Windows Mobile和Andriod还是挺火的,也是未来的领导者  
网络通信类的,如VxWorks、Linux等大型复杂的操作系统,也是企业要求最多的,还有不太知名的OSE,但其在基站设备中占据了50%的市场份额  
当然还有不带MMU的,如uClinux、Nucleus等  
个人感觉尤其是Linux是目前求职市场中最火的,主要是由于其开源的优势,很多单位都在往这方面投入以减少成本  
  
如果以前对操作系统方面了解较少的话,个人建议可以先学学uC/OS-II,简单易上手,主要是借此学习操作系统的相关知识  
然后主打Linux,要结合开发板来学,这样才上手的快  
  
2    开发板
广州优龙、华恒等都是比较知名的开发板厂家,配套的资料比较完善,相应的技术支持也不错,可以考虑
  
3    开发流程及参考书目
  
嵌入式开发需要遵循一个基本的流程,首先是开发环境及流程,然后是驱动开发和应用程序开发,最后就是深入内核的海洋,学习设计理念及方法,最高境界就是就是将这些设计思路娴熟的运用在任意一个应用环境中,那时候就是神了~~~
  
3.1    嵌入式开发设计流程:
1、ARM嵌入式Linux系统构造与驱动开发范例
2、嵌入式设计及Linux驱动开发指南
3、嵌入式Linux应用程序开发详解
都属于Linux开发设计流程方面的入门书籍,嵌入式开发的基础
  
3.2    Linux驱动开发:
1、嵌入式系统接口设计与Linux驱动程序开发 北京航空航天大学出版社 刘淼 强烈推荐; 包括各种硬件总线接口范例,接口开发必备
2、Linux设备驱动程序<Linux Device Drivers third edition>,Linux驱动开发必备经典,粗读查询即可,当然最基本的字符设备驱动和块设备驱动必须熟练掌握
  
3.3    Linux应用程序开发:
UNIX环境高级编程
UNIX网络编程全卷
  
3.4    Linux内核开发:
内核完全注释,源代码级的分析,但版本较低
深入理解Linux内核Understanding the Linux Kernel,太深了,东西太多,最后看合适
Linux内核设计与实现Linux Kernel Development,内核整体结构和基本理论知识
  
  
3.5    ARM:
ARM体系结构与编程,杜春蕾
ARM应用系统开发详解
  
4    相关Linux网站
4.1    各种Linux论坛
http://www.linuxforum.net/forum/ubbthreads.php
http://www.linuxsir.org/bbs/
http://bbs.chinaunix.net/
http://www.linuxeden.com/forum/
http://www.linuxfans.org/bbs/index.php
  
4.2    开源网站
http://sourceforge.net/
http://www.denx.de
http://www.pudn.com/
http://download.chinaunix.net/
  
4.3    内核源代码学习下载
http://lxr.linux.no/linux+v2.6.19/
http://www.kernel.org/pub/linux/kernel/

在《嵌入式 Linux 学习七步曲》一文中,介绍了下从 bootloader ,到内核移植、文件系统,中间的驱动开发,到上层的应用程序调试、开发环境等,有兴趣的话可供参考

http://blog.csdn.net/sailor_8318/archive/2007/09/03/1769662.aspx

新手如何入门嵌入式软件开发相关推荐

  1. 新手如何从零开始入门前端开发,分享我的学习方法!

    我经常会看到很多同学在学习前端的时候比较迷茫,不知道到底应该以怎样的学习路线来入门和进阶前端领域.每次遇到这种问题我也会分享一下自己的学习经验,但是发现这是一个问得非常多的一个共性问题. 作为程序员, ...

  2. 云计算是什么意思?新手怎么学云计算开发入门课程

    云计算是什么意思?云计算就是将处理数据这个步骤放在网络的远程端进行,因为手机.平板和个人电脑等个人设备的数据处理性能(CPU.内存.硬盘和GPU等)是非常有限的,而让用户购买十几万甚至上百万的高性能服 ...

  3. 什么是嵌入式开发?嵌入式软件开发入门教程

    嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的.固定的.成熟的,这就大大减少了由硬件系统引入错误的机会.此外,由于嵌入式 操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的 ...

  4. 专业嵌入式软件开发——全面走向高质高效编程(含DVD光盘1张)

    -- 专业嵌入式软件开发--全面走向高质高效编程(含DVD光盘1张) 李云 编著 ISBN 978-7-121-14783-8 2012年1月出版 定价:108.00元(含DVD光盘1张) 16开 6 ...

  5. 嵌入式培训怎么学?新手怎么学习嵌入式开发

    在当今社会中一个非常显着的代名词就是"高科技",可谓是无处不在,首先哪些像火箭,飞船的咱就不多说了,说了咱也搞不明白,我们就说身边的东西,例如无人驾驶汽车,自动收藏的床,声控灯,四 ...

  6. 新手篇——学习网页开发需要多长时间就能找到工作

    2019独角兽企业重金招聘Python工程师标准>>> 近几年Web前端框架层出不穷,比如 React, Vue, AngulaJS等吸引了大量的注意力,前端技术发展势头迅猛,各大互 ...

  7. python新手项目-推荐:一个适合于Python新手的入门练手项目

    原标题:推荐:一个适合于Python新手的入门练手项目 随着人工智能的兴起,国内掀起了一股Python学习热潮,入门级编程语言,大多选择Python,有经验的程序员,也开始学习Python,正所谓是人 ...

  8. python经典好书-新手Python入门经典书籍推荐

    随着人工智能和大数据时代的来临,开始学习Python的朋友是越来越多了.近来就连房地产大亨潘石屹也在微博上表示,自己开始学Python了.确实在当下,无论是不是做程序员,还是在各个行业像是数据分析.运 ...

  9. 从事嵌入式开发需要掌握哪些知识?从事嵌入式软件开发的前景如何?

    什么是嵌入式? 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一.嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器.存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很 ...

最新文章

  1. 传真休眠怎么取消_C盘满了怎么办——系统瘦身
  2. 公司要上监控,选型调研下 Zabbix 和 Prometheus
  3. 约瑟夫环的问题--剑指 Offer 62. 圆圈中最后剩下的数字
  4. tomcat的基本使用
  5. 2007年50种方式将改变你生活
  6. gsm短信猫长短信pdu数据包分析[转]
  7. php文件怎么加统计代码,php统计文件中的代码行数
  8. JavaScript高级程序设计 第4版
  9. 基于keras实现双向GRU的中文情感分析
  10. win10下标注工具sloth的安装及使用
  11. 桌面计算机地址栏在哪,win10系统工具栏怎样添加桌面和地址栏选项【图文教程】...
  12. 屏蔽ENTER键、ESC键的使用
  13. python 排名函数_分数排名(Python),成绩,排序,python
  14. 【附源码】计算机毕业设计SSM校园流浪猫关爱系统
  15. c语言在函数内部宏定义,简单讲解C++的内部和外部函数以及宏的定义
  16. javac错误:javac不是内部或外部命令 也不是可运行的程序 解决方法
  17. 负载均衡之LoadBalancer
  18. 明纬电源、航嘉电源真假美猴王 你怎么识别?
  19. 再见,像风一样自由的男人纳什
  20. java毕业设计大学生学习交友平台Mybatis+系统+数据库+调试部署

热门文章

  1. 【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识
  2. 2021中国最好学科排名:北大、清华、人大中国顶尖学科居前三
  3. Java语言程序设计基础(3)【数组】
  4. HTML+CSS大作业网站设计——英雄联盟LOL(4页) HTML+CSS+JavaScript web期末网站设计大作业
  5. 1546 #732 (Div. 2) D. AquaMoon and Chess(组合数,规律)
  6. 国考报名系统服务器繁忙,2018年国家公务员考试报名提示“系统繁忙请重新登录”怎么办...
  7. 关闭云鲸拖地机器人风干_云鲸拖地机器人无法正常工作,官方给出解决方案:要关机24小时...
  8. powershell 操作 office365邮箱设置
  9. Java 基础(十五)并发工具包 concurrent
  10. 基于JAVAEE的网络电子相册管理系统的设计与实现