ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:31.30KB ,
资源ID:3321817      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3321817.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式学习线路.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式学习线路.docx

1、嵌入式学习线路1、Linux基础安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件使用其他编辑器2、Shell 编程基础Shell简介 认识后台程序Bash编程熟悉Linux系统下的编辑环境熟悉Linux下的各种Shell 熟练进行shell编程熟悉vi基本操作 熟悉Emacs的基本操作比较

2、不同shell的区别 编写一个测试服务器是否连通的shell脚本程序编写一个查看进程是否存在的shell脚本程序 编写一个带有循环语句的shell脚本程序3、Linux 下的 C 编程基础linux C语言环境概述 Gcc使用方法 Gdb调试技术 Autoconf Automake Makefile 代码优化 熟悉Linux系统下的开发环境熟悉Gcc编译器 熟悉Makefile规则编写Hello,chi dazzle,World程序 使用 make命令编译程序 编写带有一个循环的程序调试一个有问题的程序4、嵌入式系统开发基础嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务下载Boot

3、loader和内核 嵌入式Linux应用软件开发流程熟悉嵌入式系统概念以及开发流程建立嵌入式系统开发环境制作cross_gcc工具链 编译并下载U-boot 编译并下载Linux内核 编译并下载Linux应用程序4、嵌入式系统移植Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板5、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备 与文件相关的系统调用 配置超级终端和MiniCOM 能够熟悉进行

4、串口通信熟悉文件I/O 编写串口通信程序 编写多串口通信程序6、嵌入式系统中多进程程序设计Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道 信号 共享内存 任务管理 API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输编写一个使用共享内存的程序7、嵌入式系统中多线程程序设计线程的基础知识 多线程编程方法 线程应用中的同步

5、问题了解线程的概念 能够编写简单的多线程程序编写一个多线程程序8、嵌入式 Linux 网络编程网络基础知识 嵌入式Linux中TCP/IP网络结构 socket 编程 常用 API函数 分析Ping命令的实现 基本UDP套接口编程 许可证管理 PPP协议 GPRS 了解嵌入式Linux网络体系结构能够进行嵌入式Linux环境下的socket 编程 熟悉UDP协议、PPP协议 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器指出TCP和UDP的优缺点 编写一个web服务器 编写一个运行在 ARM平台的网络播放器9、GUI 程序开发GUI基础 嵌入式系

6、统GUI类型 编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“Hello,World”程序 调试一个加入信号/槽的实例 通过重载QWidget 类方法处理事件10、Linux 字符设备驱动程序设备驱动程序基础知识 Linux系统的模块 字符设备驱动分析 fs_operation结构 加载驱动程序了解设备驱动程序的概念 了解Linux字符设备驱动程序结构能够编写字符设备驱动程序编写Skull驱动 编写键盘驱动 编写I/O驱动分析一个看门狗驱动程序 对比Linux2.6内核与2.4内核中字符设备驱动的不同Linux 块设备驱动程序块设备驱动程序工作原理 典型的块设备

7、驱动程序分析 块设备的读写请求队列了解Linux块设备驱动程序结构 能够编写简单的块设备驱动程序比较字符设备与块设备的异同 编写MMC卡驱动程序 分析一个文件系统 对比Linux2.6内核与2.4内核中块设备驱动的不同11、文件系统虚拟文件系统 文件系统的建立 ramfs内存文件系统 proc文件系统 devfs 文件系统 MTD技术简介 MTD块设备初始化 MTD块设备的读写操作了解Linux系统的文件系统了解嵌入式Linux的文件系统 了解MTD技术 能够编写简单的文件系统为 ARM9开发板添加 MTD支持 移植JFFS2文件系统通过proc文件系统修改操作系统参数 分析romfs 文件系

8、统源代码创建一个cramfs 文件系统学习掌握嵌入 Linux 的开发与移植 现在非常流行。 各种学习文章与培训班,充斥书店 街头。 笔者 也上了路,经历漫长的摸索,终于一日开窍,但的确 糟蹋了 很多 金钱与时间。 作为穷人,现写下自己的感受,供 好学寒士 参考。第一要点: 实验重于看书 (多编码,少翻书)一定首先搭建x86实验环境。用旧计算机(周末电脑城抛售存货,有新的),搭建一套 实验环境。host主机: 一台PC机(能够跑redhat linux,看问档 就可以了,配网卡与软驱)。target目标机: 一块旧PC主板,配一张网卡和一个软驱,电源。附件: 交*网线 ,交*串口线够了,不会超

9、过3千元(已经很满足了)。软件全部到 电脑城/网站 下载。先不管什么arm ppc mips, 以后看看文档吧。第二重点:GNU C编译在PC 上安装 redhat linux 包括 开发工具。熟悉linux 的配置命令。练习 linux 的 C 语言编程,多个程序的编译工程制作。无聊的话,将C语言教材的例程,编译十几个,熟悉GNU 编译器。www.gnu.org包括gcc make ld objdump ar 等 GNU toolkit第三重点:realtime linux 内核编程/加载到目标板运行。1。 下载 rt-linux ,或uclinux 或什么 非 redhat的linux 源

10、码,一定 是包括,编译工程makefile, 并且for x86 PC的。2。修改和配置程序,将 rtlinux的 标准 console口 改为串口,不是vga与键盘。3。在redhat linux 环境下,编译 这个 embedded linux内核。用mkboot的这样程序(或按代码中工具,) 将编译好的内核执行文件 拷贝定位软盘引导区。4。用这张软盘引导在目标PC主板 。在PC主机的 串口终端上配置 PC主板目标机。 效果同 redhat linux terminal console一样。以后越来月难,坚持。第四个重点 编译跑通网卡的驱动程序下载编译 你的网卡驱动源码跑通 主机与目标机的

11、 网络通讯。不要太动头想, ping 通就是了。第五个重点 用tftp 下载执行文件从 PC主机 到 目标机运行。第六个重点 GNU GDB 远程在线调试(网口调试)第七个重点 实时内核学习/修改照文章/书 分析调试/破坏 内核的源码。主要是 调度/消息/存储/文件/进程/线程/互斥 等单独跑跑, 了解内核功能就是了。第八个重点 TCP/IP的学习下载一个 简单的web server (http server)学习理解,并编译加载运行。将 PC主板目标机 看作网站服务器,然后在PC主机的网络浏难器中 访问这个 web server.有兴趣,把你的照片加载到目标机的 html网页中。www.ze

12、bra.org第九个重点 网卡驱动程序分析了解 PCI总线原理,尝试独立写点网卡驱动程序,过滤以太报文的处理。 跟踪处理 特殊的报文。第十个重点USB和 FLASH文件系统练习。(可以跳过)可以分析修改 USB与FLASH文件系统源码。一定要分析源码,上网查 FLASH的型号。第十一个重点 路由器实验。分析zebra方面的源码,再买一张网卡。尝试分析 NAT RIP等协议,将你的PC板目标机,变成一台简单的路由器。以后的实验 需要根据 行业来,例如,mini-GUI (图形编程),或 DVR (硬盘录象机),或IP Vedio WebTV 服务器。可以玩好几年,当然最好找工作前,有针对地做实验

13、。一句话,动手修改编码,不要只看看。嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)(2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。从事嵌入式软件开发的好处是:(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但

14、收入不低)。(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。(4)兴趣所在,这是最主要的。从事嵌入式软件开发的缺点是:(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。(2)这方面的企业数量要远少于企业计算类企业。(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。(4)平台依托强,换平台比较辛苦。兴趣的由来:1、成功观念不同,不虚度此生,就是

15、我的成功。2、喜欢思考,挑战逻辑思维。3、喜欢CC是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下:相信程序员。不要阻止程序员做那些需要去做的。保持语言短小精干。一种方法做一个操作。使得它运行的够快,尽管它并不能保证将是可移植的。4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。方法步骤:1、基础知识:目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。科目:数字电路、计算机组成原理、嵌入式微处理器结构。汇编语言、C/C+、编译原理、离散数学。数据结构和算法、操作系统、软

16、件工程、网络、数据库。方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。主攻书籍:the c+ programming language(一直没时间读)、数据结构-C2。2、学习linux:目的:深入掌握linux系统。方法:使用linuxlinxu系统编程开发驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。3、学习嵌入式linux:目的:掌握嵌入式处理器其及系统。

17、方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。主攻书籍:毛德操的嵌入式系统及其他arm9手册与arm汇编指令等。4、深入学习:A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。C、网络与信息安全技术:如加密技术,数字证书CA等。D、DSP技术:Digital Signal

18、 Process,DSP处理器通过硬件实现数字信号处理算法。说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c+,理由是c+不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。注意:要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些

19、不愿意做但必须要做的!技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。嵌入式书籍推荐Linux基础1、Linux与Unix Shell编程指南C语言基础1、C Primer Plus,5th Edition【美】Stephen Prata着2、The C Programming Language, 2nd Edition【美】Brian W. Kernighan David M. Rithie(K & R)着3、Advan

20、ced Programming in the UNIX Environment,2nd Edition(APUE)4、嵌入式Linux应用程序开发详解Linux内核1、深入理解Linux内核(第三版)2、Linux内核源代码情景分析毛德操胡希明著研发方向1、UNIX Network Programming(UNP)2、TCP/IP详解3、Linux内核编程4、Linux设备驱动开发(LDD)5、Linux高级程序设计杨宗德著硬件基础1、ARM体系结构与编程杜春雷着2、S3C2410 Datasheet英语基础1、计算机与通信专业英语系统教程1、嵌入式系统体系结构、编程与设计2、嵌入式系统采用公

21、开源代码和StrongARM/Xscale处理器毛德操胡希明着3、Building Embedded Linux Systems4、嵌入式ARM系统原理与实例开发杨宗德著理论基础1、算法导论2、数据结构(C语言版)3、计算机组织与体系结构?性能分析4、深入理解计算机系统【美】Randal E. Bryant David OHallaron着5、操作系统:精髓与设计原理6、编译原理7、数据通信与计算机网络8、数据压缩原理与应用C语言书籍推荐1. The C programming language程序设计语言2. Pointers on C和指针3. C traps and pitfalls陷阱

22、与缺陷4. Expert C Lanuage专家编程5. Writing Clean Code -Microsoft Techiniques for Developing Bug-free C Programs编程精粹-Microsoft编写优质无错程序秘诀6. Programming Embedded Systems in C and C+嵌入式系统编程7.C语言嵌入式系统编程修炼8.高质量C+/C编程指南林锐尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!嵌入式Linux学习的基本的原则是通学+专长。

23、通学,即了解该方向的相关领域,但是“通”不等于“泛”,对待学习应该举一反三,把握事物的本质。如果能用通用的思想去解决问题,那么才算学有小成。比如,五一学习Mark Balch的COMPLETE DIGITAL DESIGN后,对嵌入式系统在上电之后,软硬件如何配合工作有了更深入的理解。虽然这本书不是介绍嵌入式系统,但是很多技术是通用的。有开放的思维,把握自己研究的中心,把其他领域的方法思想吸收过来为我所用,这样可以对研究中心有更为深入的认识。 专长,即研究中心。通学的目的在于打好基础,融会贯通。但是仅仅如此是不够的。因为通学不可能把每个方向都研究精深,人的精力毕竟是有限的嘛,所以要有自己感兴趣

24、的方向,以此作为研究中心,深入深入再深入,成为该方向的专家。以通促专,提炼自己的思想,以开放的思维谋求最大的提升! 我选择的研究领域是嵌入式系统(ARM+Linux),在该领域有四种类型的工作: 1、系统设计 2、硬件设计 3、驱动开发及内核移植 4、应用开发 基于我目前的认识,研究中心是驱动开发及内核移植,争取以后做系统设计,成为嵌入式系统设计工程师。 嵌入式Linux学习分为三个阶段: 第一阶段:建立嵌入式Linux知识体系框架。 第二阶段:深入学习嵌入式Linux的基本技术。 第三阶段:精深专长。 这三个阶段可以交叉。第一阶段通过2006年暑假两个月的强化学习,已经完成。现在正在进行第二

25、阶段的学习。这个阶段关注嵌入式Linux软件开发的基本技术,包括:JTAG的工作原理及其实现(以JFlash为主)、bootloader的原理及实现(以U-boot为主)、kernel移植与开发(尝试2.4.18、2.6.X)、FS制作(尝试ramdisk、cromfs等)、应用程序的移植(基本掌握开发)、调试和诊断技术。在这个阶段,同时打好硬件基础(掌握S3C2410)和软件基础(bash、C和基本的开发工具)。第三个阶段在读研期间,以研究OS原理和Linux内核源代码为主,与第二阶段交叉进行。 其实,每天进步一点点,把这一点点所学加到已经建立的知识体系框架中,日积月累,思想认识必定会有所提

26、升。虽然都认可宁可断其一指,不可伤其十指,但是应该承认人的认识是有局限性的。比如学习A时,因缺乏实践等各方面原因,可能认识不深入,也许在学习B时突然认识到了。所以一定要举一反三,而且要反复学习。记住基础的技术,努力学习先进技术,不停止前进的脚步。【序】学习Linux开发近一年,由于我是实验室第一个从事这方面开发的,学习过程中遇到了很多问题,可是总是求师无门,只能一个人自己摸索,同时也充分利用了网络,参考了广大CSDN博友及相关论坛的帖子,在此表示感谢!嵌入式Linux的学习涵盖的范围比较广,下从bootloader,到内核移植、文件系统,中间的驱动开发,到上层的应用程序调试、开发环境等,变化莫

27、测,经常是别人的能用自己的就有问题。由于缺乏他人适当指点,自己在学习过程中也走了很多弯路,整个开发环境的搭建整了N久,更搞笑的是经常听说模块加载insmod,可连这个命令在主机还是ARM上用都没搞明白,那叫一个汗啊!大家勿笑,嵌入式Linux的初学者确实对交叉环境比较不懂,我是其一啊。现在适逢好友小布丁要学习嵌入式Linux,就将近一年来的学习体会总结下,整理了一个总体的学习计划,希望给那些曾经像我一样彷徨的人一些帮助。后续将完善此文档,上传到个人空间上,先贴出目录。本人水平有限,不当之处,还请大家指正!小布丁同学曾在我处于困境时一如既往的理解我支持我,给我信心给我鼓励,谢谢你,美丽开怀的小布

28、丁,希望你能happy and fascinating forever!谨以此文献给我们永远可爱迷人的小布丁!Sailor_foreverSeptember 3, 2007*第一篇Linux主机开发环境(15天)1.1 Vmvare下Linux的安装(优先)1.2 Windows下从硬盘安装Linux(可选)1.3 Linux的基本命令及使用1.4 Linux的文件系统及与windows的文件共享1.5 GCC开发工具1.6 GDB调试1.7 Makefile编写1.8主机端的模块编程1.9简单应用程序第二篇ARMLinux开发环境(7天)2.1交叉开发环境介绍2.2交叉编译器cross-to

29、ol2.3配置主机开发环境2.3.1配置超级终端minicom或hyperterminal或DNW2.3.2配置TFTP网络服务2.3.3配置NFS主机端网络服务2.4建立交叉开发环境 2.4.1配置NFS ARM端网络服务 2.4.2编译ARM-gdb2.5交叉调试应用程序2.6 ARM上的简单模块编程第三篇Linux系统bootlaoder移植(7天)3.1 Bootloader介绍3.2 u-boot命令及环境变量3.3 u-boot的编译配置3.4 u-boot源码分析3.5 u-boot移植过程第四篇Linux的内核移植(15天)4.1配置编译Linux内核4.1.1 Linux内核源代码结构4.1.2 Linux内核编译选项解析4.1.3Linux内核编译链接4.2Linux启动过程源代码分析4.3Linux内核移植平台相关代码分析第五篇Linux的驱动编程(15天)5.1 Lin

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1