当前位置:文档之家› 嵌入式linux学习心得(多篇范文)

嵌入式linux学习心得(多篇范文)

嵌入式linux学习心得知识结构1. 嵌入式处理器与裸机程序开发2. linux系统管理3. linux应用程序开发4. linux驱动程序开发5. linux内核开发与系统移植一、处理器1. arm处理器工作模式2. arm系统寄存器3. arm寻址方式4. arm 汇编指令集5. arm环境c语言编程6. arm中断与异常7. ads集成开发环境8. 裸机程序开发(串口、lcd、时钟、led、按键……)二、系统管理1. linux定制安装2. linux命令详解3. samba、nfs、tftp、wireshark使用4. shell编程三、应用程序开发1. gcc、gdb、makefile2. 文件、时间编程3. 多进程、多线程程序设计4. 进程间通讯5. 网络编程6. qt图形化应用程序开发7. android图形化应用程序开发四、内核开发1. linux内核配置与裁剪2. linux内核模块开发3. 根文件系统制作4. 进程子系统5. 内存子系统6. proc文件系统7. 系统调用8. 内核定时器9. 内核异常分析五、驱动程序开发1. 字符设备驱动程序2. 总线、设备、驱动模型3. 硬件访问技术4. 中断处理5. input设备驱动6. platform驱动程序7. pci、usb驱动程序8. 网卡驱动程序9. 触摸屏驱动程序 10. 串口驱动程序学习顺序1. 嵌入式处理器与裸机程序开发2. linux系统管理3. linux应用程序开发4. linux内核开发基础5. 嵌入式linux环境搭建6. linux驱动程序开发7. 深入学习linux内核第二篇:嵌入式linux学习步骤嵌入式linux学习步骤作者:phantom 时间:XX-8-6 文章来源:来自网络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 的基本操作比较不同shell的区别编写一个测试服务器是否连通的shell脚本程序编写一个查看进程是否存在的shell脚本程序编写一个带有循环语句的shell脚本程序3、linux 下的 c 编程基础linux c语言环境概述 gcc使用方法 gdb调试技术 autoconf automake makefile 代码优化熟悉linux系统下的开发环境熟悉gcc编译器熟悉makefile规则编写hello,world程序使用 make命令编译程序编写带有一个循环的程序调试一个有问题的程序4、嵌入式系统开发基础嵌入式系统概述交叉编译配置tftp服务配置nfs服务下载bootloader和内核嵌入式linux应用软件开发流程熟悉嵌入式系统概念以及开发流程建立嵌入式系统开发环境制作cross_gcc工具链编译并下载u-boot 编译并下载linux内核编译并下载linux应用程序4、嵌入式系统移植linux内核代码平台相关代码分析 arm平台介绍平台移植的关键技术移植linux内核到 arm平台了解移植的概念能够移植linux内核移植linux2.6内核到 arm9开发板5、嵌入式 linux 下串口通信串行i/o的基本概念嵌入式linux应用软件开发流程 linux系统的文件和设备与文件相关的系统调用配置超级终端和mini 能够熟悉进行串口通信熟悉文件i/o 编写串口通信程序编写多串口通信程序6、嵌入式系统中多进程程序设计linux系统进程概述嵌入式系统的进程特点进程操作守护进程相关的系统调用了解linux系统中进程的概念能够编写多进程程序编写多进程程序编写一个守护进程程序 sleep系统调用任务管理、同步与通信linux任务概述任务调度管道信号共享内存任务管理 api 了解linux系统任务管理机制熟悉进程间通信的几种方式熟悉嵌入式linux中的任务间同步与通信编写一个简单的管道程序实现文件传输编写一个使用共享内存的程序7、嵌入式系统中多线程程序设计线程的基础知识多线程编程方法线程应用中的同步问题了解线程的概念能够编写简单的多线程程序编写一个多线程程序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基础嵌入式系统gui类型编译qt 进行qt开发熟悉嵌入式系统常用的gui 能够进行qt编程使用qt编写“hello,world”程序调试一个加入信号/槽的实例通过重载qwidget 类方法处理事件10、linux 字符设备驱动程序设备驱动程序基础知识 linux系统的模块字符设备驱动分析fs_operation结构加载驱动程序了解设备驱动程序的概念了解linux字符设备驱动程序结构能够编写字符设备驱动程序编写skull驱动编写键盘驱动编写i/o驱动分析一个看门狗驱动程序对比linux2.6内核与2.4内核中字符设备驱动的不同linux 块设备驱动程序块设备驱动程序工作原理典型的块设备驱动程序分析块设备的读写请求队列了解linux块设备驱动程序结构能够编写简单的块设备驱动程序比较字符设备与块设备的异同编写mmc卡驱动程序分析一个文件系统对比linux2.6内核与2.4内核中块设备驱动的不同11、文件系统虚拟文件系统文件系统的建立 ramfs内存文件系统 proc文件系统devfs 文件系统 mtd技术简介 mtd块设备初始化 mtd块设备的读写操作了解linux系统的文件系统了解嵌入式linux的文件系统了解mtd技术能够编写简单的文件系统为 arm9开发板添加 mtd支持移植jffs2文件系统通过proc文件系统修改操作系统参数分析romfs 文件系统源代码创建一个cramfs 文件系统第三篇:嵌入式linux学习经验谈打印版本,(转载)前面废话省略,进入正题:一、废话(已删)。

二、起步:你应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix如何选择版本:北美用redhat,欧洲用suse,桌面mandrake较多,而debian是技术最先进的linux开发人员中用debian的最多,其次是redhat,从全球linux各应用领域市场份额来看无疑redhat是最多的,此外还有很多出名的发行版本,不再列举。

对于初学linux的人来说,我建议是使用redhat,原因如下:1)现在很多书都是以redhat为例讲的,为了与书本协调一致2)周围的人都用redhat,交流比较方便3)redhat应用范围广,有典型性和代表性4)它易于使用和安装,我们没有必要把时间浪费在“装系统”上而应集中精力学习最有用的东西。

【注】现在觉得rh很死板,as,es等用在服务器上或许不错,personal desktop用mandrake,debian,suse都不错,笔者现在用mandrake,因为她长得漂亮:)如果你并不打算深入学习linux,而是有诸如适应北京市政府办公平台迁移到linux上这种需要,那么中软,红旗等中文linux是不错的选择我强烈建议:自己亲自动手把linux装到你的硬盘上,你必须学会独立安装linux系统的技能,对于现在的版本来说,其实跟装winxp一样简单从此现在开始,请不要以windows的工作方式来考虑问题,应该尝试挖掘linux身上的“天才unix”的气质。

三.进阶掌握至少50个以上的常用命令理解shell管道"|",文件流重定向">"及追加">>"等熟悉gnome/kde等x-windows桌面环境操作掌握等软件包的常用安装方法学习添加外设,安装设备驱动程序(比如modem)熟悉grub/lilo引导器及简单的修复操作熟悉系统固有目录的名称及公用学会用mount命令访问其他文件系统了解vi,gcc,gdb等常用编辑器,编译器,调试器学习linux环境下的简单组网建议:买一本不需要太厚的linux教材,大致可以满足要求(现在的书越来越多了,还带很多图,我当时可没这么多书)四.高级应用澄清一些概念:linux的普通操作与真正的系统管理不能相提并论,后者需要很多知识1.英语即使你不学linux,我也强烈建议你学好英文[u.s.english]。

因为实质上计算机语言就是英文和字符,所谓的多国语言只是外部包装。

你必须能无障碍的阅读大量的英文技术文档在搜索引擎找到的英文网站和网页中熟练的检索最好能有用英文直接交流的能力,摆脱了这个障碍,你的学习和理解速度就能快很多,你就有机会拉开和别人的差距。

2.shell[sed/awk]shell是命令解释器,是内核与用户界面交流通道,shell写的小脚本有点类似于win下的.bat但shell比.bat强大的多,shell不只是解释命令,更是一种编程语言,有时候几百行的c用shell几十行就能代替完成工作,因为shell的工作方式建立在系统已有的众多应用程序之上这也是cs中的一个重要思想。

此外,shell可以实现工作自动化,这个概念也比较重要sed,awk用来处理文本,历来很常用。

3.perl/php漂亮的脚本, cgi的首选,比asp好,应用面很广++c、c++是linux/unix的核心语言,系统代码都是c写的5.asm系统底层及内核,硬件,设备驱动程序,嵌入式开发都需要。

//走核心路线的话,cc++,asm最重要6.java,python,tcl,xml五、系统管理篇在熟悉linux的基础上还需要掌握至少一种unix。

我首推solaris,其次是freebsd比如运营级系统一般是solaris+oracle/db2之类的学习apache、ssh、sendmail/qmail、proftp/vsftp、samba、squid、mysql/postgresql/oracle、bind等各种应用服务器的构架及电子商务的应用熟悉tcp/ip协议族,学习诸如apache+php+proftp+mysql+a的实现以及大型局域网,分布式集群等各种企业级应用解决方案熟悉多用户管理,数据库管理,文件系统,逻辑存储管理,日志分析,备份与灾难数据修复系统补丁,内核升级,以及在此基础上的防火墙构架等以保障系统安全在内的各种系统管理技能。

相关主题