Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3533889
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: LINUX

2010-10-28 13:44:09

嵌入式系统学习步骤

1Linux 基础
安装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系统的文件和设备 与文件相关的系统调用 配置超级终端和MiniCOM 能够熟悉进行串口通信 熟悉文件I/O 编写串口通信程序 编写多串口通信程序


6

、嵌入式系统中多进程程序设计
Linux
系统进程概述 嵌入式系统的进程特点 进程操作 守护进程 相关的系统调用了解Linux系统中进程的概念 能够编写多进程程序编写多进程程序 编写一个守护进程程序 sleep系统调用任务管理、同步与通信 Linux任务概述任务调度 管道 信号 共享内存 任务管理 API 了解Linux系统任务管理机制 熟悉进程间通信的几种方式 熟悉嵌入式Linux中的任务间同步与通信编写一个简单的管道程序实现文件传输 编写一个使用共享内存的程序


7

、嵌入式系统中多线程程序设计
线程的基础知识 多线程编程方法 线程应用中的同步问题了解线程的概念 能够编写简单的多线程程序编写一个多线程程序


8

、嵌入式 Linux 网络编程
网络基础知识 嵌入式LinuxTCP/IP网络结构 socket 编程 常用 API函数 分析Ping命令的实现 基本UDP套接口编程 许可证管理 PPP协议 GPRS 了解嵌入式Linux网络体系结构 能够进行嵌入式Linux环境下的socket 编程 熟悉UDP协议、PPP协议 熟悉GPRS 使用socket 编写代理服务器 使用socket 编写路由器 编写许可证服务器 指出TCPUDP的优缺点 编写一个web服务器 编写一个运行在 ARM平台的网络播放器


9

GUI 程序开发
GUI
基础 嵌入式系统GUI类型 编译QT 进行QT开发熟悉嵌入式系统常用的GUI 能够进行QT编程使用QT编写“HelloWorld”程序 调试一个加入信号/槽的实例 通过重载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 文件系统
嵌入式系统概述

嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁减,对功能、可靠性、成本、体积、功耗有严格要求专用计算机系统

 

广义的嵌入式系统

    凡是带有微处理器的专用系统都可以称为嵌入式系统。如单片机系统和带OSARM系统。

    各类单片机系统,在完成较为单一的专业功能时具有简洁高效的特点。但是由于他们没有操作系统,所以管理硬件和软件的能力有限,在实现复杂的多任务功能时往往困难重重,甚至无法实现。

狭义的嵌入式系统

是指那些使用嵌入式微处理器构成的独立系统,具有操作系统,完成特定功能,用于特定场合

 

嵌入式系统的应用远远超过了各种通用计算机

一台通用计算机的外部设备中就包含了5-10个嵌入式微处理器:

键盘、鼠标、软驱、硬盘、显示卡、显示器、Modem、网卡、声卡、打印机、扫描仪、数字相机、USB集线器等均是由嵌入式处理器控制的

在制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面均是嵌入式计算机的应用领域

 

嵌入式系统的组成

总体上嵌入式系统可以划分成硬件和软件两部分

  硬件一般由高性能的微处理器和外围的接口电路组成

  软件一般由实时操作系统和其上运行的应用软件构成

 

嵌入式系统与一般PC系统区别

设备名称

嵌入式系统

PC

CPU

嵌入式处理器(ARMMIPS,Score+

CPUIntelAMD等)

内存

SDRAM芯片

SDRAMDDR内存条

存储设备

Flash芯片

硬盘

输入设备

触摸屏,按键

鼠标、键盘、麦克等

输出设备

LCD

显示器

其它设备

音频芯片、USB芯片、网卡芯片等

主板集成或外接卡

名称

嵌入式系统

PC

引导代码

Bootloader引导,针对不同电路进行移植

主板的BIOS引导,无须改动

操作系统

LinuxWinCEVxWorks等,需要移植

WindowsLinux等,无需移植

驱动程序

每个设备驱动针对电路板进行开发或移植,一般不能直接下载使用

操作系统含有大多数驱动程序,或下载直接使用

开发环境

交叉编译

本机编译

协议栈

需要移植

操作系统或第三方提供

 

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,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字1991ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,ARM技术正在逐步渗入到我们生活的各个方面。

 

嵌入式操作系统

嵌入式操作系统是嵌入式应用软件的基础和开发平台。嵌入式系统具有操作系统的最基本的功能:

v 进程调度

v 内存管理

v 设备管理

v 文件管理

v 操作系统接口(API调用)

嵌入式操作系统具有的特点:

v 可裁减,可配置。

v 有一定的实时性。

 

外围硬件设备

外围设备是指在一个嵌入式系统当中,嵌入式处理器以外的完成存储、通信、调试、显示等辅助功能的其它部件,根据外围设备的功能可分为以下3类:

  存储器:SRAMDRAMNAND 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层: 实时操作系统

驱动层:设备驱动程序、HALBSP

 

嵌入式开发分类

硬件开发: 电路设计

            驱动开发

 

系统开发:  Linux开发

            WINCE开发

 

软件开发:  应用程序

            图形界面

嵌入式系统开发流程

裸机开发:

    对于功能简单仅包括应用程序的嵌入式系统一般不使用操作系统,仅有应用程序和设备驱动程序

带操作系统的开发

当设计较复杂的程序时,可能就需要一个操作系统(OS)来管理控制内存、多任务、周边资源等,现代高性能嵌入式系统应用越来越广泛,操作系统使用成为必然发展趋势

 

带操作系统的开发

ü      硬件开发

ü      启动加载程序

ü      操作系统内核

ü      根文件系统

ü      设备驱动

ü      应用程序

 

通常基于linux系统的嵌入式开发步骤如下:

ü     开发目标硬件系统:

    如选择微处理器、Flash及其它外设等

ü     建立交叉开发环境:

    安装交叉编译工具链、安装开发调试工具

ü     开发Bootloader:移植ubootvivi

ü     移植linux内核:如linux2.6.31内核

ü     开发根文件系统:CRAMFSYAFFS

ü     开发相关硬件的驱动程序:led,adc等驱动

ü     开发上层的应用程序:如QT GUI开发

 

必备的基础

ü     计算机操作能力

ü      操作系统原理

ü      单片机基础

ü      C语言基础

ü      独立解决问题的能力

Linux命令

进入Linux系统,必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号:

1root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。

2普通用户--这个帐号供普通用户使用,可以进行有限的操作。

一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。如果只需要完成一些由普通帐号就能完成的任务,建议不要使用超级用户帐号,以免无意中破坏系统,影响系统的正常运行。

 

用户登录分两步:

第一步,输入用户的登录名

第二步,输入用户的口令

当用户正确地输入用户名和口令后,就能合法地进入系统。屏幕显示:

[root@loclhost /root] #

这时就可以对系统做各种操作了。超级用户的提示符是#,其他用户的提示符是$

 

控制台切换

Linux是一个多用户操作系统,它可以同时接受多个用户登录。Linux还允许一个用户进行多次登录,这是因为LinuxUNIX一样,提供了虚拟控制台的访问方式,允许用户在同一时间从不同的虚拟控制台进行多次登录。虚拟控制台的选择可以通过按下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

卸载名字为namerpm

 

挂载

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命令的使用方法


阅读(1033) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~