|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ Q" n5 X% p9 m4 X8 }( r5 Z- i
很多人学完单片机就想学ARM,但不知如何去学~现在列出一下学习这方面的步骤-----基于linux系统的学习步骤如下:(一步步来哦:# o! p7 V: g0 @: s# J
其实这也只是个基础,以后实际做项目了还要去学很多
; `" g0 g+ r0 F0 O* |( c( g1 X/ R4 J
/ h J1 G5 O2 x6 f6 g1、Linux 基础
6 m$ d! G. x+ E9 O1 Z
, G$ a2 U7 u1 t0 P5 P4 O安装Linux操作系统 $ y$ M" V2 M4 e7 T, f P7 I# m
Linux文件系统
' {" c: N7 k3 I6 T1 l/ MLinux常用命令
2 d; u; n4 C( D2 CLinux启动过程详解
8 F$ }, i; }! `" n( G( w熟悉Linux服务 能够独立安装Linux操作系统
, }5 P# z/ x& ?+ ?2 X能够熟练使用Linux系统的基本命令 5 v" s/ v( R9 ?& A2 P0 e
认识Linux系统的常用服务 安装Linux操作系统
# X8 p R4 V9 U+ M, o/ m, vLinux基本命令实践
+ M6 Y7 s. o7 W7 s" E' D% u设置Linux环境变量 " s9 w1 I: B1 _$ j& s+ w7 i# o2 W2 n
定制Linux的服务 Shell 编程基础使用vi编辑文件
G" d! i2 G8 t使用Emacs编辑文件7 i1 @2 Z. Q1 l3 s) j# c. N! P
使用其他编辑器
% N7 j) r4 I# h' x( m2、Shell 编程基础
1 }, n5 j0 `: xShell简介5 H2 d& x. q$ A9 O: V
认识后台程序
+ {3 [* k) g) BBash编程熟悉Linux系统下的编辑环境 0 o" W- i" O, `+ x, }
熟悉Linux下的各种Shell
* L1 g, _* w, Q熟练进行shell编程熟悉vi基本操作
1 P6 [4 x# \- {% d7 L9 E3 j熟悉Emacs的基本操作
% v9 ~) f% V9 @) x/ t比较不同shell的区别 $ R$ p( g" O5 @$ z3 Y: M
编写一个测试服务器是否连通的shell脚本程序 * }* Y2 _) n1 b& W
编写一个查看进程是否存在的shell脚本程序 0 { ?" E5 b, G8 D1 q6 S
编写一个带有循环语句的shell脚本程序0 v `; O! J: @" u+ K! H# D5 u( c" a
3、Linux 下的 C 编程基础( t/ ?% x3 \" n+ a2 ^" y# Z
linux C语言环境概述
9 ]( ]( U6 D6 x4 ^# @8 H) }Gcc使用方法
, P' P0 h! p: R( Y/ oGdb调试技术
2 N9 I6 q7 J# f$ }, e! JAutoconf
5 | ]7 T! F+ j/ yAutomake
. r# T( O3 s. z& x: u4 z) oMakefile
3 l y0 a; m, U ^! C$ J代码优化 熟悉Linux系统下的开发环境
/ S8 f) e+ b7 Y9 K5 C5 @熟悉Gcc编译器
: ^0 R' d! I; c熟悉Makefile规则编写Hello,World程序 2 Y7 W- \& R. |* a: j- D
使用 make命令编译程序
* N2 |* @: I8 R$ |* p编写带有一个循环的程序 ! z8 X: n8 n) p; W; W' ~* `. R
调试一个有问题的程序) C- @, ?, h' }" Z/ F4 h
4、嵌入式系统开发基
8 Z" W; n7 S: i7 a9 `嵌入式系统概述
8 c- a C; A( u- H交叉编译
/ M9 A8 s6 S. O配置TFTP服务+ K( n+ I2 i( T' A& F
配置NFS服务
' Z; e" W3 ] ^* }- C下载Bootloader和内核
. o2 L: T. V. X嵌入式Linux应用软件开发流程
; S* }' B: B7 E' v. O熟悉嵌入式系统概念以及开发流程
2 V% i4 z5 T6 V) E7 _, |4 R建立嵌入式系统开发环境制作cross_gcc工具链
: J5 ~; X" {+ ]' a c/ A编译并下载U-boot
# s& e I; _7 X, V3 E) ]编译并下载Linux内核
$ x! D- L) g) {) H5 D0 F5 c2 N编译并下载Linux应用程序" }0 g/ x/ Z) v$ f/ q+ ` q* o
4、嵌入式系统移植
; Y! A" g, l3 x: ` U% K) i7 DLinux内核代码
& \: ~4 u, Y; `* }, u' x平台相关代码分析 2 v+ X! ]: e0 {
ARM平台介绍
: W1 ^' i1 `9 D- }& E* r) R. A平台移植的关键技术 : l! V5 m: f* X1 V; Z4 V
移植Linux内核到 ARM平台 了解移植的概念
+ z ?: ~2 a* ~4 u: ]5 |: Y% l1 r能够移植Linux内核移植Linux2.6内核到 ARM9开发板+ ?5 D1 o3 f! B) S2 Q D4 U4 z8 g! S$ A; V
5、嵌入式 Linux 下串口通信
. c* ` w& H5 ?) `串行I/O的基本概念 R- ^# _# Y8 k2 L3 M, f! _
嵌入式Linux应用软件开发流程
/ Y' A# R# h+ w' v' Q% d; QLinux系统的文件和设备
" J1 f! R0 ~) t9 q与文件相关的系统调用
1 S# x4 R, ]2 R& t配置超级终端和MiniCOM 能够熟悉进行串口通信
2 E+ X( |) h0 z4 T# e |! H* g熟悉文件I/O 编写串口通信程序
( G" h: e6 B5 l; a# u% d编写多串口通信程序
5 ]: j* l$ Q3 i" _- s1 L6 O6、嵌入式系统中多进程程序设计
7 d! [" n5 g8 Q* Y) dLinux系统进程概述
' p" t9 P) e, W( d, ~% @嵌入式系统的进程特点 / A/ L) A& n& b- y: l
进程操作
4 j9 ~/ j0 A' x& |3 X# u. ^) Z' H守护进程
5 @% _) F" c, r" W* H. i$ {相关的系统调用了解Linux系统中进程的概念
+ V0 W. c( \; u4 n* f4 d能够编写多进程程序编写多进程程序
7 x) R& f8 A' ]( ]. t& f编写一个守护进程程序
7 ]' |- B* M& a! W' \: dsleep系统调用任务管理、同步与通信 Linux任务概述' ]5 d) X, W( F
任务调度
% Z* K3 k. N1 ]! u* D2 q! c7 M管道 ( X! c" N4 K$ y8 S9 N( v
信号
8 u5 j" H9 ?( E/ f共享内存
7 i2 T8 m2 \4 Q1 r, y$ |任务管理 API 了解Linux系统任务管理机制
% L/ L: i0 f. G: ~: h7 `: a8 j6 i熟悉进程间通信的几种方式 % `" s# A M8 Z% Y# _ K
熟悉嵌入式Linux中的任务间同步与通信
1 v7 z" r8 Z) [% ~编写一个简单的管道程序实现文件传输 M) g& ~9 H V. _# a$ X
编写一个使用共享内存的程序5 s7 p& t! q* G3 x; |
7、嵌入式系统中多线程程序设计
i8 j% @, k. e8 J线程的基础知识 0 |- N& a, W8 Z+ a% Q
多线程编程方法 ( W, I; H0 r2 D9 U- r7 ?+ O
线程应用中的同步问题了解线程的概念
! I/ I# ?% p/ d1 b/ S7 z; d6 E能够编写简单的多线程程序编写一个多线程程序
$ L M1 X" o) a% C% w# N$ H% e" y; R8、嵌入式 Linux 网络编程1 X' a8 M; a) C) [# e5 ~
网络基础知识 9 M1 l5 ^2 Y3 f0 j
嵌入式Linux中TCP/IP网络结构 7 x0 J T0 j4 C
socket 编程 4 Q9 v6 x4 Z9 I7 U" k, z: X
常用 API函数
1 x% g) J7 S8 U0 D L- d分析Ping命令的实现 5 ~0 E5 d3 \. E) Z% c. b
基本UDP套接口编程 : D: a5 P- Q* {$ \& F# f
许可证管理
2 V. m% V! h1 E: Z3 H9 f! yPPP协议 ) V6 |2 Z) ^, z. A" T
GPRS 了解嵌入式Linux网络体系结构
" |$ e3 d6 \, i5 |能够进行嵌入式Linux环境下的socket 编程
5 I j! R- @# ~7 f+ a- x熟悉UDP协议、PPP协议
) K( |, D: _7 Q7 r$ c熟悉GPRS 使用socket 编写代理服务器
% u; }- w g1 t/ q, [使用socket 编写路由器 . J; G: b2 _2 I- b: M
编写许可证服务器
4 l" c8 d# ^8 @5 ~' j指出TCP和UDP的优缺点
; {- ^& B5 o/ e4 o) q. ]; G编写一个web服务器 5 b* I2 R8 m9 T% ]% v
编写一个运行在 ARM平台的网络播放器
6 W# [0 x) W. j' x2 @9、GUI 程序开发
; B. e% G" N% ~" R+ @2 [# vGUI基础
6 W; p2 ?9 c4 T) D2 n( }嵌入系统GUI类型
; A' W$ t0 |! {- O' j编译QT
1 @ W+ y; T: {* N( I7 R, y进行QT开发熟悉嵌入式系统常用的GUI
) i8 A" L1 F( e) q# w能够进行QT编程使用QT编写“Hello,World”程序 2 u' ^9 T/ e8 l6 D+ u
调试一个加入信号/槽的实例
( K' ?0 X# h/ F通过重载QWidget 类方法处理事件
# o0 g' F' k( K2 g0 R1 L10、Linux 字符设备驱动程序& X b( d9 w$ G$ T2 s6 S
设备驱动程序基础知识 , G, U+ C. i$ a" j7 `9 F3 L$ F
Linux系统的模块 / X f1 l, L) ?; L/ O
字符设备驱动分析
/ K5 @3 F, w1 I" A4 D/ e9 E( ufs_operation结构 & q+ h6 s+ N& e" N+ O
加载驱动程序了解设备驱动程序的概念
8 n! m, N2 l( G) U了解Linux字符设备驱动程序结构 + L5 N' c' I& o7 |5 e, t
能够编写字符设备驱动程序编写Skull驱动
! ]% e* r H, f# }" D编写键盘驱动
& O5 q) z+ Q! j/ B编写I/O驱动 7 p1 Z/ R; U* l$ z# G, P+ Q" K
分析一个看门狗驱动程序
+ V+ q0 C- ?- R( Z, |: \: s+ V1 M5 f对比Linux2.6内核与2.4内核中字符设备驱动的不同
5 Q( O- Y5 V' h s# V0 A- R9 mLinux 块设备驱动程序块设备驱动程序工作原理
5 e$ p$ Z3 g+ q1 K. S3 ?典型的块设备驱动程序分析 # p: K' Y. ]8 J8 { Y; U
块设备的读写请求队列了解Linux块设备驱动程序结构
9 r- g% ~1 V( v5 k能够编写简单的块设备驱动程序比较字符设备与块设备的异同
: f/ t s" i% n! L7 w6 ^" ]" ~: [编写MMC卡驱动程序 u$ \5 y+ A4 ^& q
分析一个文件系统
) N/ x/ e1 ^% ]0 a! l对比Linux2.6内核与2.4内核中块设备驱动的不同2 V' Z. Q# |' C' r" b
11、文件系统8 a5 y; P# c9 x3 C8 k. V
虚拟文件系统 " }6 A4 a2 l4 |
文件系统的建立
! B, x( v) V* y9 e0 u; B$ lramfs内存文件系统 6 K7 I8 R* A' v4 j: v; h' u
proc文件系统
) s6 Y9 K# d" `9 zdevfs 文件系统 7 a5 m. h( A5 W* m$ ]: Q0 C
MTD技术简介 & h( f* v9 N8 Y" ?. N
MTD块设备初始化 " A5 p) E( Y% e5 X, Z+ i8 [8 X% U
MTD块设备的读写操作了解Linux系统的文件系统 2 ]3 b! s0 M! H
了解嵌入式Linux的文件系统
2 x1 o* b5 ^3 ?9 U: b0 I0 N了解MTD技术 . d1 m( T' {+ a
能够编写简单的文件系统为 ARM9开发板添加 MTD支持 3 W2 X9 o4 d$ L+ w Y
移植JFFS2文件系统 $ g- c$ `# `9 j( l6 J
通过proc文件系统修改操作系统参数
% I9 a( ?( k, F4 w# W- @& k; m分析romfs 文件系统源代码
# x+ i% Q0 j. Q( X2 b创建一个cramfs 文件系统 |
|