https://github.com/zytc2009/BigTeam_learning
分类: LINUX
2010-10-28 13:44:09
嵌入式系统学习步骤
1、Linux 基础
安装Linux操作系统 Linux文件系统 Linux常用命令 Linux启动过程详解 熟悉Linux服务能够独立安装Linux操作系统 能够熟练使用Linux系统的基本命令 认识Linux系统的常用服务安装Linux操作系统 Linux基本命令实践 设置Linux环境变量 定制Linux的服务 Shell 编程基础使用vi编辑文件 使用Emacs编辑文件 使用其他编辑器
2
3
4
4
5
6
7
8
9
10
11
嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
广义的嵌入式系统
凡是带有微处理器的专用系统都可以称为嵌入式系统。如单片机系统和带OS的ARM系统。
各类单片机系统,在完成较为单一的专业功能时具有简洁高效的特点。但是由于他们没有操作系统,所以管理硬件和软件的能力有限,在实现复杂的多任务功能时往往困难重重,甚至无法实现。
狭义的嵌入式系统
是指那些使用嵌入式微处理器构成的独立系统,具有操作系统,完成特定功能,用于特定场合
嵌入式系统的应用远远超过了各种通用计算机
一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器:
键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡、打印机、扫描仪、数字相机、USB集线器等均是由嵌入式处理器控制的
在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域
嵌入式系统的组成
总体上嵌入式系统可以划分成硬件和软件两部分
硬件一般由高性能的微处理器和外围的接口电路组成
软件一般由实时操作系统和其上运行的应用软件构成
嵌入式系统与一般PC系统区别
设备名称 |
嵌入式系统 |
PC |
CPU |
嵌入式处理器(ARM,MIPS,Score+) |
CPU(Intel、AMD等) |
内存 |
SDRAM芯片 |
SDRAM或DDR内存条 |
存储设备 |
Flash芯片 |
硬盘 |
输入设备 |
触摸屏,按键 |
鼠标、键盘、麦克等 |
输出设备 |
LCD |
显示器 |
其它设备 |
音频芯片、USB芯片、网卡芯片等 |
主板集成或外接卡 |
名称 |
嵌入式系统 |
PC |
引导代码 |
Bootloader引导,针对不同电路进行移植 |
主板的BIOS引导,无须改动 |
操作系统 |
Linux、WinCE、VxWorks等,需要移植 |
Windows、Linux等,无需移植 |
驱动程序 |
每个设备驱动针对电路板进行开发或移植,一般不能直接下载使用 |
操作系统含有大多数驱动程序,或下载直接使用 |
开发环境 |
交叉编译 |
本机编译 |
协议栈 |
需要移植 |
操作系统或第三方提供 |
n 嵌入式系统专用于特定的应用,而PC是通用计算机。
n 使用多种类型的处理器和处理器体系结构。
n 关注成本。
n 大多有功耗约束。
n 经常在极端的环境下运行。
n 系统资源比PC少的多。
n 需要专用工具和方法进行开发设计。
n 嵌入式系统的数量远远超过PC。
嵌入式系统的特点
系统内核小
嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多
专用性强
嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植
系统精简
嵌入式系统一般不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于系统安全
实时性操作系统
这是嵌入式软件的基本要求,而且软件要求固化存储,以提高速度,软件代码要求高质量和高可靠性、实时性
专用的开发工具和开发环境
历史
v20 世纪70 年代:单片机
v20 世纪80 年代:嵌入式操作系统
v20 世纪90 年代:实时多任务操作系统
嵌入式处理器
嵌入式处理器是嵌入式系统的核心部件,与通用处理器的最大差异在于其大多工作在为特定用户群设计的系统中。
嵌入式处理器通常把通用计算机中许多由板块完成的任务集成在芯片内部,从而有利于嵌入式系统趋于小型化,并具有高效率、高可靠性等特征。
目前,市面上有1000多种嵌入式处理器芯片,包括ARM系列、MIPS系列、PowerPC系列等等。
v嵌入式微控制器(MCU)
v嵌入式微处理器(MPU)
v嵌入式DSP处理器(EDSP)
v嵌入式片上系统(SOC)
ARM
ARM,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,ARM技术正在逐步渗入到我们生活的各个方面。
嵌入式操作系统
嵌入式操作系统是嵌入式应用软件的基础和开发平台。嵌入式系统具有操作系统的最基本的功能:
v 进程调度
v 内存管理
v 设备管理
v 文件管理
v 操作系统接口(API调用)
嵌入式操作系统具有的特点:
v 可裁减,可配置。
v 有一定的实时性。
外围硬件设备
外围设备是指在一个嵌入式系统当中,嵌入式处理器以外的完成存储、通信、调试、显示等辅助功能的其它部件,根据外围设备的功能可分为以下3类:
存储器:SRAM、DRAM、NAND FLASH、 NOR FLASH等
接口:并口、RS232串口、SPI串行接口、USB通用串行总线、以太网接口等
人机接口:LCD、触摸屏、键盘等
嵌入式操作系统
1. 嵌入式Linux
Linux本身所具备的源码开放、内核可裁减等种种特性使其成为一种重要的嵌入式操作系统
随着嵌入式Linux技术的成熟,定制更加方便,同时支持更多的平台
2. WinCE
WinCE的缺点是体积庞大,价格昂贵,不完全开放源码。因此随着嵌入式操作系统领域日益激烈的竞争,微软不得不应付来自Linux等免费系统的冲击
3. VxWorks
VxWorks是美国WindRiver公司专门为实时嵌入式系统设计开发的操作系统软件。VxWorks拥有良好的持续发展能力、高性能的内核以及友好的用户开发环境,在实时嵌入式操作系统领域占据一席之地,但其昂贵的价格让不少厂商望而却步
4. µC/OS
µC/OS是一个典型的实时操作系统。它是研究和学习实时操作系统的重要选择。
特点:源码公开、代码结构清晰、可移植性好、可裁减、可固化、内核属于抢占式,最多可以管理60个任务。
嵌入式软件组成
应用层:特定的应用程序
文件系统/图形用户应用程序接口
OS层: 实时操作系统
驱动层:设备驱动程序、HAL、BSP
嵌入式开发分类
硬件开发: 电路设计
驱动开发
系统开发: Linux开发
WINCE开发
软件开发: 应用程序
图形界面
嵌入式系统开发流程裸机开发:
对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序
带操作系统的开发:
当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理控制内存、多任务、周边资源等,现代高性能嵌入式系统应用越来越广泛,操作系统使用成为必然发展趋势
带操作系统的开发:
ü 硬件开发
ü 启动加载程序
ü 操作系统内核
ü 根文件系统
ü 设备驱动
ü 应用程序
通常基于linux系统的嵌入式开发步骤如下:
ü 开发目标硬件系统:
如选择微处理器、Flash及其它外设等
ü 建立交叉开发环境:
安装交叉编译工具链、安装开发调试工具
ü 开发Bootloader:移植uboot,vivi
ü 移植linux内核:如linux2.6.31内核
ü 开发根文件系统:CRAMFS,YAFFS
ü 开发相关硬件的驱动程序:led,adc等驱动
ü 开发上层的应用程序:如QT GUI开发
必备的基础
ü 计算机操作能力
ü 操作系统原理
ü 单片机基础
ü C语言基础
ü 独立解决问题的能力
Linux命令
进入Linux系统,必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号:
1.root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。
2.普通用户--这个帐号供普通用户使用,可以进行有限的操作。
一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统,影响系统的正常运行。
用户登录分两步:
第一步,输入用户的登录名
第二步,输入用户的口令
当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:
[root@loclhost /root] #
这时就可以对系统做各种操作了。超级用户的提示符是“#”,其他用户的提示符是“$”。
控制台切换
Linux是一个多用户操作系统,它可以同时接受多个用户登录。Linux还允许一个用户进行多次登录,这是因为Linux和UNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从不同的虚拟控制台进行多次登录。虚拟控制台的选择可以通过按下Ctrl+Alt+一个功能键来实现,通常使用F1-F7,例如,用户登录后,按一下Ctrl+Alt+F2键,用户又可以看到"login:"提示符,说明用户看到了第二个虚拟控制台。然后只需按Ctrl+Alt+F1键,就可以回到第一个虚拟控制台。用户可以在某一虚拟控制台上进行的工作尚未结束时,切换到另一虚拟控制
台开始另一项工作。
添加用户
• useradd
格式:useradd [选项] 用户名范例:
useradd smb
添加名字为smb的用户
修改密码
• passwd
格式:passwd [选项] [用户名]
范例:
passwd smb
修改smb用户的密码
切换用户
• su
格式:su [选项][用户名]
范例:
su – root
切换到root用户,并将root的环境变量同时带入
关机
• shutdown
格式:shutdown [-t seconds] [-rkhncfF] time[message]
范例:
shutdown now
立刻关机
拷贝
• cp
格式:cp [选项] 源文件或目录目标文件或目录
范例:
1. cp /home/test /tmp/
将/home目录下的test文件copy到/tmp目录下
2. cp –r /home/dir1 /tmp/
将/home目录下的dir1目录copy到/tmp目录下
移动或更名
• mv
格式:mv [选项] 源文件或目录目标文件或目录
范例:
1. mv /home/test /home/test1
将/home目录下的test文件更名为test1
2.mv /home/dir1 /tmp/
将/home目录下dir1目录移动(剪切)到/tmp目录下
删除
• rm
格式:rm [选项] 文件或目录
范例:
1. rm /home/test
删除/home目录下的test文件
2.rm –r /home/dir
删除/home目录下的dir目录
创建目录
• mkdir
格式:mkdir [选项] 目录名
范例:
1. mkdir /home/workdir
在/home目录下创建workdir目录
2. mkdir –p /home/dir1/dir2
创建/home/dir1/dir2目录,如果dir1不存在,先创建dir1
改变工作目录
• cd
格式:cd 目录名
范例:
1. cd /home/
进入/home目录
查看当前路径
• pwd
格式:pwd
范例:
1. pwd
显示当前工作目录的绝对路径
查看目录
• ls
格式:ls [选项] [目录或文件]
范例:
1. ls /home
显示/home目录下的文件与目录(不包含隐藏文件)
2. ls –a /home
显示/home目录下的所有文件与目录(包含隐藏文件)
3. ls –l /home
显示/home目录下的文件与目录的详细信息
4. ls –c /home
显示/home目录下的文件与目录,按修改时间排序
打包与压缩
• tar
格式:tar [选项] 目录或文件
范例:
1.tar cvf tmp.tar /home/tmp
将/home/tmp目录下的所有文件和目录打包成一个tmp.tar文件
2.tar xvf tmp.tar
将打包文件tmp.tar在当前目录下解开
3.tar cvzf tmp.tar.gz /home/tmp
将/home/tmp目录下的所有文件和目录打包并压缩成一个tmp.tar.gz文件
4.tar xvzf tmp.tar.gz
将打包压缩文件tmp.tar.gz在当前目录下解开
解压缩
• unzip
格式:unzip [选项] 压缩文件名.zip
范例:
1.unzip tmp.zip
解压tmp.zip文件
访问权限
系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问文件。或目录访问权限分为只读,只写和可执行三种。有三种不同类型的用户可对文件或目录进行访问:文件所有者,与所有者同组的用户、其他用户。所有者一般是文件的创建者。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件所有者的读、写和执行权限;与所有者同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。例如:
$ ls -l sobsrc. tgz
-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. Tgz
注意这里共有10个位置。第一个字符指定了文件类型,如果第一个字符是横线,表示是一个非目录的普通文件。如果是d,表示是一个目录。r代表只读,w代表写,x代表可执行,横线代表无该项权限。
改变访问权限
• chmod
格式:chmod [who] [+ | - | =] [mode] 文件名
参数:
who:
u 表示文件的所有者。
g 表示与文件所有者同组的用户。
o 表示“其他用户”。
a 表示“所有用户”。它是系统默认值。
mode:
+ 添加某个权限
- 取消某个权限
= 赋予给定权限
例:chmod g+w hello.c
mode所表示的权限可使用下述字母(数字)的任意组合:
r 可读(4)
w 可写(2)
x 可执行(1)
例:chmod 761 hello.c
查看磁盘使用情况
• df
格式:df [选项]
范例:
df –k
以KB为单位显示磁盘使用情况
查看目录大小
• du
格式:du [选项] 目录
范例:
du –b ipc
以字节为单位显示ipc这个目录的大小
网络配置
• ifconfig
格式:ifconfig [选项] [网络接口]
范例:
1. ifconfig eth0 192.168.0.1
配置eth0这一网卡的ip地址为192.168.0.1
2. ifconfig eth0 down
暂停eth0这一网卡的工作
3. ifconfig eth0 up
恢复eth0这一网卡的工作
查看网络状态
• netstat
格式:netstat [选项]
范例:
1. netstat -a
查看系统中所有的网络监听端口。
软件安装
• rpm
格式:rpm [选项] [安装文件]
范例:
1. rpm -ivh tftp.rpm
安装名字为tftp的文件
2. rpm –qa
列出所有已安装rpm包
3. rpm –e name
卸载名字为name的rpm包
挂载
• mount
格式:mount [选项] 设备源目标目录
范例:
1. mount /dev/cdrom /mnt
将光驱挂载到/mnt目录下
• umount
格式:mount 目标目录
范例:
1. umount /mnt (对应mount例)
取消光驱在/mnt下的挂载
查找文件
• find
格式:find 路径-name ‘文件名’
范例:
1. find ./ -name ‘co*’
在当前目录及其子目录中寻找名为co开头的文件
2. find ./ -name ‘test’
在当前目录及其子目录中寻找名为test的文件
查找字符串
• grep
格式:grep [选项] 字符串
范例:
1. grep “file” ./ -rn
在当前目录及其子目录中,查找包含file字符串的文件
2. netstat –a | grep tftp
查看所有端口中用于tftp的端口
动态查看CPU使用
• top
格式:top
范例:
1.top
查看系统中的进程对cpu、内存等的占用情况。
查看进程
• ps
格式:ps [选项]
范例:
1.ps aux
查看系统中的所有进程。
杀死进程
• kill
格式:kill [选项] 进程号
范例:
1.kill –s SIGKILL 4096
杀死4096号进程
帮助
• man
格式:man 命令名
范例:
1. man grep
查看grep命令的使用方法
2. man ping
查看ping命令的使用方法