想要从事 linux嵌入式方面的应用软件开发。我该怎么学呢?

想要从事 linux嵌入式方面的应用软件开发。我该怎么学呢,比如先看什么书,后看什么书, 应用软件开发是我的初步打算,想通过这些了解linux及基本编程理念,然后再想linux驱动方面过度,主要做这方面的东西。 最后研究linux内核(这个是个人兴趣)。 目前我只有c语言c++的一些基础,linux系统的应用 及点单的linux下c编程的基础。请高手们指点。怎么学能适合我的方向。最好详细些, 我会在追加分数的。
楼下是个有心的人,从网上copy了别人的答案。 这不是我想要的, 可能真正的高手没有时间来回答我的问题吧。 哎。。。。。。。 那个高手能给我点意见。 再补上100分。

韦东山的那本书挺经典,卓越的链接:
http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1274700325&asin=B001DCEA46&sr=8-1

《嵌入式Linux应用开发完全手册》以S3C2410、S3C2440开发板为例,从分析硬件上电执行的第一条指令开始,到构造出一个类似PDA、基于Linux的桌面GUI系统,带领读者学习、掌握从最底层到最高层的软件编写方法。

《嵌入式Linux应用开发完全手册》全面介绍了嵌入式Linux系统开发过程中,从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如UART、I*IC、LCD等),UBoot、Linux内核的分析、配置和移植,根文件系统的构造(包括移植busybox、glibc、制作映象文件等),内核调试技术(比如添加kgdb补丁、栈回溯等),驱动程序编写及移植(LED、按键、扩展串口、网卡、硬盘、SD卡、LCD和USB等),GUI系统的移植(包含两个GUI系统:基于Qtopia和基于X),应用程序调试技术。

《嵌入式Linux应用开发完全手册》从最简单的点亮一个LED开始,由浅入深地讲解,使读者最终可以配置、移植、裁剪内核,编写驱动程序,移植GUI系统,掌握整个嵌入式Linux系统的开发方法。

1、Linux 基础
安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解。
2、Shell 编程基础
Shell简介 认识后台程序Bash编程熟悉Linux系统下的编辑环境。
3、Linux 下的 C 编程基础
linux C语言环境概述 Gcc使用方法 Gdb调试技术。
4、嵌入式系统开发基础
嵌入式系统概述 交叉编译 配置TFTP服务 配置NFS服务 下载Bootloader和内核 嵌入式Linux应用软件开发。
4、嵌入式系统移植
Linux内核代码 平台相关代码分析 ARM平台介绍 平台移植的关键技术 移植Linux内核到 ARM平台 了解移植的概念 能够移植Linux内核移植Linux2.6内核到 ARM9开发板。
5、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux应用软件开发流程 Linux系统的文件和设备。
6、嵌入式系统中多进程程序设计Linux系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念。
...
网上很多~可以先从虚拟机玩起。
A.一般安装一个VMWARE虚拟机,再从网上下载个RedHat9.0的光盘镜像。
这个比较适合入门linux,当然也有Cygwin的,不过不推荐。
B.然后就可以按照上面的步骤学起来了,等把linux的shell和gcc,gdb,系统编程,gui(QT,miniGUI,MicroWin等等)玩好之后,可以买个开发板了,这里就不说明具体品牌了,2410/2440开发板很多的。
C.然后开始玩开发板,常用的代码编辑工具有:SourceInsight,UE。
还有代码比较工具,BeyondCompare。
当然还有ADS1.2,这个是必不可少的,可以先把ARM开发板当单片机开发板玩!先熟悉具体硬件设备的使用,如UART,SPI,LCD控制器等,最后再去玩Bootloader,系统移植,内核,文件系统,应用编程,驱动编程。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-14
说下我的经历。
我大学是学的软件工程,在学校要把基础学科学好,操作系统,网络,组原,编译,数据结构和算法。编程的话,我那时候是主攻C++,java也学过。毕业也找了份通信设备制造商的工作,做的嵌入式软件工程师。主要做通信设备上协议的开发,工作中主要学习网络协议,内核编程。
我不知道你到底是想学底层的开发,还是只是想学linux下的应用软件开发。但看你想学linux内核,我就说说我看内核的情况吧。在刚开始工作的时候,我被要求花2个多星期的时间准备一个ppt给整个部门做个报告,内容是linux内存管理。相信你也有点基本概念吧,操作系统中可以这么说,最重要的就是内存管理和文件系统这两大块,可想而知对于我一个新人来讲内存管理压力是多么大。但是我坚持下来了,并通过这两个多星期的学习,真的学到很多东西,所以人有时候就得逼着自己做。内核学习是非常枯燥的,要想学的话就得持之以恒。学内核之前,之前说过的基础学科的知识是必要掌握的,接着就可以开始内核之旅了。首先去买本内核的书吧,understand linux kernel是个不错的选择,英文过的去的话就看英文的,有什么不懂的或难以理解的可以去ChinaUnix论坛上提问,linux书籍有很多,网上搜一下很方便的,给个链接http://www.linuxdiyf.com/viewarticle.php?id=37062。平时也要结合代码看,2.6的内核直接在网上搜下就能下到。
这是我的个人经历,你可参考下。本回答被提问者采纳
第2个回答  2011-01-13
如果你要往底层设备驱动发展的话 直接现在就可以学了 有一定的硬件基础 单片机应用开发 外围电路扩展 linux设备驱动的框架知识以及内核知识 因为你是提供给应用层函数系统调用的 相对的知识点比较多 各类设备你要熟悉 不然你看源代码的时候没法理解为什么这样做
第3个回答  2011-01-05
先安装一次gentoo,如果有毅力就安装lfs,这两个linux发行版如果能在不看笔记情况下装好,你的linux就入门了。
再学习linux嵌入,会轻松许多。
第4个回答  2011-01-08
在网上下些视频教程最好了,比如国嵌的,培训班就没必要去上了,浪费钱。然后搞块板子自己玩玩。C++主要是想QT编程时候可能用到,linux其他对C++无要求,主要是C。
相似回答