|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
' H$ ]- ^/ y n# B( `4 K2 j8 Z很多人学完单片机就想学ARM,但不知如何去学~现在列出一下学习这方面的步骤-----基于linux系统的学习步骤如下:(一步步来哦:& H- M8 z0 v* C0 h p8 I
其实这也只是个基础,以后实际做项目了还要去学很多* D- N. b- L$ A2 L. ~) G
8 ^" q! T, n9 q$ |4 ~5 Q" L1、Linux 基础/ h0 G( C" J" m
]9 [7 O) x- X; w* O安装Linux操作系统
" O$ H# z; [* |$ I* Y% l& XLinux文件系统
2 T h1 P k: J4 F) K2 \Linux常用命令 ; l" l7 U$ u' V' f/ s! C2 t
Linux启动过程详解 5 T: \7 U+ ?9 `( @4 M. j
熟悉Linux服务 能够独立安装Linux操作系统
+ q" H* `: r- `! `. U% m能够熟练使用Linux系统的基本命令
. g: F* P. y' ~0 l7 e+ H9 u% s认识Linux系统的常用服务 安装Linux操作系统
0 g# v* ^5 ^) b: |# l9 o+ o5 @& mLinux基本命令实践
' h; a: a1 A) v. d, E1 k1 d设置Linux环境变量 ( k0 v" h( j u$ w0 l" @ j
定制Linux的服务 Shell 编程基础使用vi编辑文件 4 v3 Q0 }6 \/ P( z: M
使用Emacs编辑文件0 t. j7 U3 p; f0 v* ~: G
使用其他编辑器& `/ _. A& A/ g. \. Y8 n
2、Shell 编程基础
; V5 D$ Y8 b( A, d' vShell简介) Y9 C& ]( E+ h/ j" Y( [4 f
认识后台程序. g+ R) S$ \) ^1 |7 v
Bash编程熟悉Linux系统下的编辑环境 6 k- q3 Y9 }+ R1 c6 H5 N
熟悉Linux下的各种Shell
8 i; _0 h9 l! c0 Z' `+ u熟练进行shell编程熟悉vi基本操作 4 V: n* Y4 N' z% D
熟悉Emacs的基本操作
% E2 ?% F7 d& [* W0 M/ P比较不同shell的区别
" ~1 K. s( D- e: x$ N' p4 H编写一个测试服务器是否连通的shell脚本程序
2 L Y( ?, h/ |% i9 u* |编写一个查看进程是否存在的shell脚本程序
; o; ^' m/ @- P" X( }) @编写一个带有循环语句的shell脚本程序, Y, L. V( Y" I! `$ H
3、Linux 下的 C 编程基础" h) ^# s7 x! i' p
linux C语言环境概述
( t8 U0 F3 F# `8 O: PGcc使用方法 * g( t0 _& H" t, ~0 S
Gdb调试技术
4 r& a; Y, t) p4 zAutoconf
# I; ^2 i+ [. S0 y9 nAutomake
6 d# m; A. R! ^! H; b/ J2 y( r: V: AMakefile
) j# q& O4 u9 f1 T代码优化 熟悉Linux系统下的开发环境, @. C3 E& y0 f+ s; m
熟悉Gcc编译器 ! R; g G$ v' ?/ Q% y# e: e- [0 D
熟悉Makefile规则编写Hello,World程序 9 T4 B* t! W5 g% c/ S# {6 ~: n- N, g
使用 make命令编译程序 + u6 h5 s' Y% y R# d
编写带有一个循环的程序
5 U% s q D+ o! i j& _调试一个有问题的程序' u( e; J4 Y6 s W9 c2 }. Z Z
4、嵌入式系统开发基( W% X6 h8 _" ^2 R5 i* z& L
嵌入式系统概述
) \! [4 C) h) w8 s5 n P交叉编译 $ s) J0 Z9 `: o- k* s6 q* c
配置TFTP服务
9 g& e l* H1 V* _& c9 L; W! H: u% l s6 F配置NFS服务
\1 c: W- \: v: _" x! }- s5 {0 y下载Bootloader和内核- `2 Z7 W: C, B
嵌入式Linux应用软件开发流程
7 x0 K' Z6 N1 y$ Q! b( [& e, c熟悉嵌入式系统概念以及开发流程
& ]' R' R3 T ]4 J建立嵌入式系统开发环境制作cross_gcc工具链 4 L7 Z: s" L( h! A. |
编译并下载U-boot% k, j+ v2 N+ W+ z n0 [9 a
编译并下载Linux内核 3 |3 k2 m9 `7 D7 i7 p% [
编译并下载Linux应用程序
5 ]5 P" _6 }8 H9 b3 ]4、嵌入式系统移植 T+ m& K5 C6 Y% ^; K; _
Linux内核代码 ) o- p/ N9 O2 c; z% C! _
平台相关代码分析
% C J. b7 |5 I# T) \$ ^ARM平台介绍
7 u0 s9 ~- x. ?平台移植的关键技术
- b W" F% f$ V% a移植Linux内核到 ARM平台 了解移植的概念 " M( B, q: E* C2 y: A: s
能够移植Linux内核移植Linux2.6内核到 ARM9开发板8 m6 E, R/ j2 o) {: l
5、嵌入式 Linux 下串口通信* J: O3 i: _- g! v8 B0 R) f1 c' e
串行I/O的基本概念 $ Z# f1 k$ U& x* t, s, g1 j* E
嵌入式Linux应用软件开发流程 # p! u0 o/ I. G4 v( b
Linux系统的文件和设备
* _ i+ x" s0 s# D; f! y与文件相关的系统调用 w! ~5 X. h- D" T l& @, s6 t
配置超级终端和MiniCOM 能够熟悉进行串口通信
5 m! S1 R' s o; {! R1 N; t9 h4 _! w熟悉文件I/O 编写串口通信程序 7 [- Z; ?* m7 ~) u7 i0 f# ~2 v
编写多串口通信程序$ S% _3 ?; g0 k& O* c
6、嵌入式系统中多进程程序设计! Y, y# o6 k7 b8 J% W, U2 A! ~; M% r; D
Linux系统进程概述
) k9 r' j" P* {. ^$ ~2 x! D+ B$ f8 Q嵌入式系统的进程特点 , R, [, M; r( z# Y0 s
进程操作
' C1 s' l8 [( n! B: N+ n4 Y守护进程
* ?9 s3 _. m9 U5 [相关的系统调用了解Linux系统中进程的概念
; x1 M+ v$ i+ V7 k, o$ p8 s5 w能够编写多进程程序编写多进程程序 % [& u& C" ~! h0 H- `
编写一个守护进程程序 # u& M1 v! M4 p# C
sleep系统调用任务管理、同步与通信 Linux任务概述0 H/ b) m4 `8 C% t' A
任务调度 # b7 f4 o; z8 b2 h
管道
% G+ w8 C# j8 E: z9 N: T信号 / P2 I) O! D0 G* `; j
共享内存 ; G: |4 E% a5 A9 _& @9 T
任务管理 API 了解Linux系统任务管理机制 & {7 l* F" f5 L- l# u
熟悉进程间通信的几种方式
6 R1 Z" x! A B! M, H4 P熟悉嵌入式Linux中的任务间同步与通信) p/ u$ t/ f( L2 X$ b
编写一个简单的管道程序实现文件传输
/ w7 K% h' O T$ Z P编写一个使用共享内存的程序
, W- w/ \2 X+ j, _0 ^/ l$ O7、嵌入式系统中多线程程序设计
- A! P0 R9 @2 Z- X! ~" U/ ~2 u线程的基础知识 9 U; t$ _7 m& ^. y5 g% ?
多线程编程方法 ' ^8 c4 A" h' Q A% C( J+ s2 Z' @
线程应用中的同步问题了解线程的概念 ' {1 b( U* e0 ]" { R
能够编写简单的多线程程序编写一个多线程程序
M# B8 Y: V* c) g% i8、嵌入式 Linux 网络编程
3 c* A# ]4 m: y& L/ Q网络基础知识 4 }; `: U# `' p ^9 V
嵌入式Linux中TCP/IP网络结构
, p9 C8 ?& d( l2 _socket 编程 & j K# B" ?/ i) u
常用 API函数
& X6 l5 j/ `+ V* J- o9 E分析Ping命令的实现
9 `- ?% u, g0 C, ]0 M基本UDP套接口编程
1 `* _+ X+ m% v' y0 I3 V, r# D许可证管理
8 d5 h/ a: A/ `, i+ c( I; k: j; `4 wPPP协议
( N d8 y9 [9 x s. K" gGPRS 了解嵌入式Linux网络体系结构 + v" t* G* [+ s ], [( @
能够进行嵌入式Linux环境下的socket 编程
) l, y- @ `" B0 i/ e# T熟悉UDP协议、PPP协议
& _1 s; {, p. H* D熟悉GPRS 使用socket 编写代理服务器 + y5 B7 K1 i# N# M
使用socket 编写路由器 ' o1 j6 \% _/ Z o
编写许可证服务器
( n X9 M- @7 R! v) [0 B. ~指出TCP和UDP的优缺点 7 l3 i/ w# G, s" x! I6 l+ L' n, d
编写一个web服务器 2 ~ j% G2 X9 F8 {1 I$ B
编写一个运行在 ARM平台的网络播放器5 t! S( o( ~1 K2 `0 Q! k3 e
9、GUI 程序开发
: H7 X$ |- w* |GUI基础 - h8 o5 V$ V! c8 {2 e7 [/ o5 X" P
嵌入系统GUI类型 . G( e5 R$ M1 S! |
编译QT # _+ s6 f% F6 m
进行QT开发熟悉嵌入式系统常用的GUI
! X" Y5 W" _7 \能够进行QT编程使用QT编写“Hello,World”程序
; M$ s6 I4 T' t3 j: W调试一个加入信号/槽的实例
2 \3 \- |- h( ]# b# @$ o9 J通过重载QWidget 类方法处理事件0 z* \% h' p/ g5 U7 B! F* V2 G
10、Linux 字符设备驱动程序
" G& @- Z$ K. W! Q' R9 Z3 V设备驱动程序基础知识 ( i/ o/ Y1 A; K$ W% V. M- V1 E" F1 N
Linux系统的模块
2 T7 O% ~0 r* m# g字符设备驱动分析 - w: R, u5 J4 I4 h# u! _; A
fs_operation结构
6 o: F/ x* p2 l# Y Q. K# d加载驱动程序了解设备驱动程序的概念
/ F. x7 r% b3 M( b了解Linux字符设备驱动程序结构
# S. M0 D% ~. C& |" b2 t! _. J* b能够编写字符设备驱动程序编写Skull驱动 7 g, ?8 K3 N0 a. L
编写键盘驱动 : N3 i6 a5 h5 r9 h
编写I/O驱动 f7 J1 r( O2 p+ c
分析一个看门狗驱动程序 ' v- N% c1 x- O% o' t' {2 r
对比Linux2.6内核与2.4内核中字符设备驱动的不同
; m! R) {+ E' m$ k0 WLinux 块设备驱动程序块设备驱动程序工作原理 9 ^6 }( ~) e9 {
典型的块设备驱动程序分析 . b1 o5 f; c2 ]' {2 C
块设备的读写请求队列了解Linux块设备驱动程序结构 1 O; j$ b: V1 @) ~3 Y+ |
能够编写简单的块设备驱动程序比较字符设备与块设备的异同 * ?- y% B9 B) r* `' Y8 X) O
编写MMC卡驱动程序
$ b- f0 l5 F- q! }; S. P: b8 R1 i分析一个文件系统 8 s, O- E9 f' T
对比Linux2.6内核与2.4内核中块设备驱动的不同
/ ]# b- U8 k, Y/ v5 I4 Z) o1 P- s0 W11、文件系统
% z8 ]/ G+ [2 s! L7 \+ N, ^虚拟文件系统 : d8 z( `% b$ F- @
文件系统的建立 1 v% Z5 u9 I9 M1 D5 L& m
ramfs内存文件系统
7 V7 q' o* }4 O( _4 R3 ^+ x z1 Lproc文件系统
( A/ C8 k) B% U4 rdevfs 文件系统
/ A2 v; w: c& g0 |, j9 o$ hMTD技术简介
, V1 g/ D3 B& x+ b6 hMTD块设备初始化 / i3 Z+ i u3 ?
MTD块设备的读写操作了解Linux系统的文件系统
# y2 ?1 }# ~( g8 E E# y了解嵌入式Linux的文件系统 ! U) k2 U, M6 p9 M! y- p
了解MTD技术 ( y2 ]' E9 C3 x" U5 ^
能够编写简单的文件系统为 ARM9开发板添加 MTD支持 ! O* S( C4 H/ f/ e" z9 d; b
移植JFFS2文件系统
- X* T5 K. w# O" I! _) D$ D通过proc文件系统修改操作系统参数
$ ?" S. E3 |" }% Z5 }6 |4 n分析romfs 文件系统源代码
4 m4 }# p- b6 g2 ]创建一个cramfs 文件系统 |
|