文档库 最新最全的文档下载
当前位置:文档库 › SOC3210嵌入式Linux开发手册-v1[1].2

SOC3210嵌入式Linux开发手册-v1[1].2

SOC3210嵌入式Linux开发手册-v1[1].2
SOC3210嵌入式Linux开发手册-v1[1].2

SOC3210嵌入式Linux

开发手册

创建日期 2008年6月

当前版本 V1.2

版 本 记 录

版本号编者修订日期备注

1.0 2008年6月创建

1.1 2008年11月

1. 2 2010年1月

本文档是为了让用户方面使用产品而提供的参考资料,保留全部权利,不转让任何知识产权以及其他权利的许可。文档的日常更新会在适当的时候发布,恕不另行通知,在购买本资料所记载的产品时,请预先向我们确认最新消息并索取最新消息。

目 录

第一节 手册指南 (6)

1.1如何使用该手册 (6)

1.2名词解释 (6)

第二节 SOC3210-DEV套件概述 (7)

2.1套件内容 (7)

2.2SOC3210-DEV简介 (7)

2.2.1 软硬件性能特点 (7)

2.3光盘介绍 (10)

2.4系统需求 (12)

第三节 快速安装使用指南 (12)

3.1S TEP1打开包装 (12)

3.2S TEP2检查套件 (13)

3.3S TEP3连接LCD,串口及电源 (13)

3.4S TEP4开机画面 (13)

第四节 SOC3210-DEV的硬件系统 (14)

4.1SOC3210-DEV概述 (14)

4.2SOC3210-DEV接口介绍 (15)

第五节 LINUX实用命令 (17)

5.1L INUX常用命令 (17)

5.1.1 文件列表 –ls (17)

5.1.2 目录切换 –cd (17)

5.1.3 复制 –cp (17)

5.1.4 删除 –rm (17)

5.1.5 移动 –mv (17)

5.1.6 比较 –diff (17)

5.1.7 回显 –echo (18)

5.1.8 容量查看 –du (18)

5.1.9 文件内容查看 –cat (18)

5.1.10 分页查看 –more (18)

5.1.11 时间日期 –date (18)

5.1.12 查找 –find (18)

5.1.13 搜索 –grep (18)

5.1.14 设置环境变量 –export (18)

5.1.15 编辑 –vi (19)

5.1.16 压缩与解压 –tar (19)

5.1.17 挂载 –mount (19)

5.1.18 启动信息显示 -dmesg (19)

5.1.21 进程查看 –ps (19)

5.1.22 杀死进程 –kill (20)

5.2网络服务及应用程序 (20)

5.2.1 ifconfig命令 (20)

5.2.2 route命令 (20)

5.2.3 ping命令 (20)

5.2.4 traceroute命令 (20)

5.2.5 远程登录 –telnet (21)

5.2.6 Telent服务器 – inetd (21)

第六节 基于SOC3210-DEV的嵌入式LINUX开发 (21)

6.1建立开发环境 (21)

6.1.2 重构工具链 (22)

6.3开发包目录 (23)

6.4开发工具 (25)

6.4.1 JTAG (25)

6.4.2 minicom (26)

6.4.3 cutecom (28)

6.5B OOTLOADER介绍 (29)

6.5.1、Pmon编译 (30)

6.5.2、Pmon内置命令介绍 (31)

6.5.3 pmon的更新 (33)

6.5.4 soc-boot的编译 (38)

6.5.4.1 soc-boot的编译 (38)

6.5.4.2 soc-Boot的更新 (38)

6.6配置和编译内核 (43)

6.6.1、配置内核 (43)

6.6.2内核的下载与运行 (44)

6.7制作文件系统映像 (46)

6.8应用程序开发指南 (47)

6.8.1 Hello,world (47)

6.8.2 数学函数调用示例 (48)

6.9驱动程序开发指南 (48)

6.9.1 Linux驱动程序开发指南 (48)

6.9.2 驱动程序开发简要介绍 (48)

6.9.2.1 驱动程序的结构 (49)

6.9.2.2 设备驱动的初始化 (50)

6.9.3 按键驱动示例 (53)

6.10 LINUX 下的设备驱动程序 (57)

第七节 系统设置与更新 (58)

7.1设置和保存时间 (58)

7.2启动脚本 (58)

7.5NFS网络文件系统环境搭建 (59)

7.6WEBSERVER服务器应用 (60)

7.7IPID系统烧写更新 (61)

7.8QTOPIA 界面烧写 (63)

第八节 嵌入式图形界面QT (63)

8.1安装QTE3 (63)

8.2安装QTE2 (64)

第九节 驱动测试程序 (68)

9.1串口测试程序 (69)

9.2网卡测试程序 (69)

9.3 U盘测试程序 (70)

9.4SD卡测试程序 (71)

9.5鼠标测试程序 (71)

9.6红外测试程序 (72)

第一节 手册指南

1.1 如何使用该手册

下面列出了本手册每个章节的主题:

第一节指导您如何使用本手册

第二节 SOC3210配套概述

第三节快速安装使用指南

第四节 SOC3210-DEV的硬件系统

第五节 LINUX 实用命令

第六节基于SOC3210-DEV 的嵌入式LINUX 开发

第七节系统设置与更新

第八节嵌入式图形界面QT

第九节驱动测试程序

1.2 名词解释

名词含义BSP Board Support Package板级支持包

Machine,3210系列开发板专用调试机DBM Debug

iPid 3210系列开发板配套功能展示软件代号

第二节 SOC3210-DEV套件概述

2.1 套件内容

SOC3210-DEV套件包含以下几部分:

·一块SOC3210-DEV开发板(预装Linux,并带有iPid演示系统)

·1张光盘(含有工具链及jtag工具,Linux程序光盘)

·一条DB9标准直连串口线

·一条RJ-45水晶头对等网线

·一条JTAG连接线

·一个开发板专用电源

2.2 SOC3210-DEV简介

SOC3210-DEV是基于SOC3210芯片,采用4层板设计的SOC3210应用开发参考设计板。SOC3210系列芯片是高集成度的高性能系统级芯片(System-On-Chip),内嵌高性能32位嵌入式RISC CPU核,支持通用MIPSII指令集,主频可达266MHz。网络方面内置MAC,提供MII接口;存储器接口方面,芯片同时支持SDRAM接口、NOR FLASH/ROM、NAND FLASH接口,并特置HPI接口可直接与VOIP CODEC芯片相连;提供丰富的其他外设接口支持,包括I2C接口、UART串口、SPI接口、AC97等接口,提供丰富的GPIO接口,能够为“网络 + 语音”以及工业控制应用提供高效的单芯片解决方案。

在软件上,我们使用的是自主开发的嵌入式Linux操作系统,基于SOC3210平台和开发工具包,我们编写和移植了许多软件供用户使用和参考,如MP3播放器,媒体播放器,Web服务器等等。

2.2.1 软硬件性能特点

SOC3210-DEV硬件标准特性:

名称 说明

处理器 SOC3210 266MHz MIPS处理器

Cache 16KB指令Cache,8KB数据Cache

系统内存 64MB SDRAM (32位总线接口)

NANDFLASH 128MB NAND Flash

Boot ROM 2MB NOR Flash

SPI接口可以接SD卡,支持热插拔SD卡

以太网接口2路10/100M以太网RJ45接口, 并支持WIFI。

RS232串口2路,DB9接口。

CAN控制器两路CAN-BUS,最高传送速率1Mbps。

I2C接口 1路I2C接口,外接FM/AM module

显示接口LCD接口,支持DSTN和TFT液晶屏(3.3V/5V),最大分辨率1024×768

VGA 接口,最大支持SVGA (1024×768)分辨率

通用 数字 I/O

64路缓冲可现场配置数字IO (3.3V ),(2.00双排插接口)。 可配置成:

A)标准输出(3.3V); B)标准输入(3.3V);

C)PWM 输出,频率/占空比可动态控制,0-4MHz; D)脉冲计数输入.

ADC 8路A/D,12bits 精度,最高100KSPS 采样率。(2.00双排插接口)。 DAC 8路D/A,12bits 精度,最高100KSPS 采样率。(2.00双排插接口)。 音频接口 1路AC97音频接口(1路MIC 输入,1路立体声输入,1路立体声输出)

Watchdog 内置watchdog

电源接口 输入: DC +5~+12V/3A 电源接口(支持手机电池接口) 输出: 1: DC5V/3A 2: DC3.3V/3A 3: DC1.8V/800mA 4:

DC1.2V/800mA

其它

8个按键;两个电源/工作状态LED 指示灯;

SOC3210-DEV 软件特性:

名称 功能特性 说明 JTAG

Jtag Debug Tool

Jtag 调试工具

功能强大的Bootloader,包括开发板上主要外设驱动程序,可以当做一个简单的操作系统使用。

Xmodem,ymodem 支持Xmodem,Ymodem 传输协议 Netconfig 基本网络配置命令,如ifaddr

tftp

Tftp 传输协议 Flash Driver & Flash Tool

Nor 和Nand 操作工具 Flash update Flash 更新工具 Set Kernel Parameter 支持设置内核参数 FAT & Ext2 Support

FAT 与Ext2文件系统支持

SD Card Driver SD 卡驱动 LCD Driver LCD 驱动 Gzip Gzip 解压缩支持

PMON

Etc……

其它……

最小化Bootloader,实现最基本加载操作系统功能。为客户开发最终产品时使用。也可扩展其它功能。

Set Kernel Parameter 支持设置内核参数 Flash Driver & Flash Tool

Nor 和Nand 操作工具 Gzip Gzip 解压缩支持

BIOS

SOC-BOOT

Etc……

其它……

Linux kernel 2.6.18 & 2.4.18

使用2.4.18和2.6.18稳定内核

内核

ROM/CRAM/EXT2/SQUASH/YAFFS/J2FFS/NFS file

system

支持

ROM/CRAM/EXT2/SQUASH/YAFFS/J2FFS/NFS

等文件系统

etc.

其他

System Interrupt & Timer Driver

系统中断和系统时钟驱动

Serial device Driver 串口驱动 Block device Driver 块设备驱动 Nor Flash Driver Nor Flash 驱动 Nand Flash Driver

Nand Flash 驱动 10/100MBase-T external Ethernet Device

Driver

外接10/100M 以太网卡驱动

RTC (Real Time Clock) Driver

实时时钟驱动 USB Host Driver USB Host 驱动 USB Slave Driver

USB Slave 驱动 LEDS LEDS 灯驱动 Buttons

用户按键驱动 Many Country Language Support

国际化支持 LCD

液晶(LCD)驱动 Frame Buffer Driver Frame Buffer Infrared remote control

红外控制驱动 AC97 OSS Driver AC97驱动 Watch Dog Driver 看门狗驱动 驱动支持

SD card Driver

SD 卡驱动 TCP/IP 完整的TCP/IP 协议

ICMP ICMP 协议 ARP/RARP

ARP/RARP 协议 UDP UDP 协议 PPP PPP 协议 IGMP IGMP 协议 SMTP SMTP 协议 SNMP SNMP 协议 SIP SIP 协议 NFS

NFS Remote login (telnet)

Telnet 远程登录 Web server

Web 服务器 网络协议及网络应用程序

Web base management suite (Sample only)

通过网页管理目标板 Console & FTP

在控制台下使用FTP 升级系统

系统升级 Online

在线升级

Local console through RS232 and remote

telnet configuration and management(Sample

Only) 通过串口控制台或telnet 远程登录配置

系统

WEB configuration and management(Sample

Only)

通过浏览器进行简单配置 Network ping 使用ping 检查系统

配置系统和服务

Ifconfig, route, inetd

提供ifocnfig, route,inetd 等网络配置

和服务程序

login, sh, echo, discard

登录和其他程序

基本工具

cat, chmod, discard, echo, flashfsd, flashwrite, free, genhtml, hostname, init, kill, loader, ls, mkdir, mount, ps, reboot, rm, smanaged, sysconf, yes,insmod, lsmod,

rmmod

Linux 常用命令

SOCplayer 控制台下的mp3播放器

Wma Decode Lib

Wma 解码库 Sqlite DataBase Sqlite 嵌入式数据库 Qt3.3.7Embedded Lib

QT 库及实用程序 Ncurses Lib

文本界面图形库 leds 控制用户LED 实用应用程序

SOC3210_botton

键盘使用程序

U Disk 支持各种U 盘直接插拔使用 USB Camera

支持使用USB 摄像头

USB 设备驱动

其他

其他

2.3 光盘介绍

·Tools 目录 -JTAG 目录 -使用SOC3210进行应用开发时所要使用的JTAG 调试工具 -Toolchian -使用SOC3210进行应用开发时所要使用的gcc 编译器 -mkfs_tool

-文件系统制作工具 -tools

-常用的一些ftp ,串口等软件工具 ·Documents 目录

-SOC3210_BSP 包使用指南

-制作CF 卡DBM 系统手册

-编译运行qtopia 文档 -制作ramdisk 文件系统 -驱动路径说明文档 - drivers manual.pdf

- SOC3210系列手册 目录 -datasheet 目录 -3210i 分册 -3210M 分册 -3210W 分册

-3210系列合成手册 -featurelist 目录 -3210i 分册

-3210M分册

-3210W分册

-3210系列合成手册

-usermanual 目录

·Miscellaneous目录

-SOC3210-DEV硬件设计原理图

-DEV硬件说明

-DEV3210宣传单通用设计

-EIC100目录

-pc104文档与代码

·Software目录

-Bootloader目录

-SOC3210-DEV的bootloader

-Busybox目录

-制作文件系统时所要使用的Busybox源代码

-linux目录

-使用SOC3210进行应用开发时所要使用的linux内核源代码

-application 目录

-ipid 目录

-存放ipid的pmon,内核与文件系统镜像

-GUI目录

-使用SOC3210进行图形界面应用开发时所要使用的软件工具,如QTE3,QTE2,qtopia_bin -数码相框目录

-存放数码相框的应用程序代码

-mp3目录

-存放mp3的应用程序代码

-网络收音机目录

-存放网络收音机的应用程序代码

-QQ聊天软件目录

-QQ软件代码

-webserver 目录

-webserver的使用手册与源程序包

·Other目录

-ncurses 目录

-数据库

-Database目录

-使用SOC3210应用开发时所要使用的数据库软件工具及说明

·Examples目录

-使用SOC3210进行应用开发时,可以参照的示例程序

2.4 系统需求

在使用SOC3210-DEV进行开发时,它必须使用串口、JTAG电缆和网络接口与PC相连接,推荐配置如下:·奔腾2.0G(或更高)或兼容PC

·安装Fedora core 8.0操作系统

·512M内存

·40GB硬盘可用空间

·一个CD-ROM或DVD-ROM

·一个串口

·一个并口

·一个网口

·一个USB接口

第三节 快速安装使用指南

3.1 Step1 打开包装

3.2 Step2 检查套件

3.3 Step3 连接LCD,串口及电源

3.4 Step4 开机画面

开发板预装Demo软件系统iPid,下图为其主操作界面:

第四节 SOC3210-DEV的硬件系统

4.1 SOC3210-DEV概述

SOC3210-DEV母板正面

SOC3210-DEV母板背面

SOC3210-DEV子板正面

SOC3210-DEV子板背面

4.2 SOC3210-DEV接口介绍

SOC3210-DEV在尽可能小的板面上集成了SDRAM、Nand Flash、外围设备包括RJ-45网口、音频输入与输出,MIC接口、SD-CARD接口,Jtag接口,USB接口、标准串口、WIFI接口,LCD接口,P/S2(鼠标键盘接口)等。详细介绍如下:

1.键盘接口

2.鼠标接口

3. 1个标准的USB口,可接U盘(板上端的USB可用)

4. mic接口:此接口连接至麦克风

5. line out音频输出接口,您可以连接耳机或喇叭等的音频接收设备

6. HP out

7. SD卡接口

8. LCD屏接口,使用25*2/2mm排线连接母板和子板

9. video port: 视频数字信号输出口

10. VGA转接口:接显示器时使用。

11. 串口接口(COM):9针的连接端口可以连接串行通信设备

12. 以太网口,这组连接端口可通过网络电缆连接至局域网(LNA,Local Area Network)。请参考下表中

网络指示灯之灯号说明:

LINK指示灯 ACT指示灯

状态描述状态描述

绿灯亮连线中橘灯亮数据传输中

灯灭没有连线橘灯灭无数据传输

13. 12V/5A电源适配器接口:供电电源接口。

14.. 14针的JATG接口,主要用来下载程序

pin net pin net

1 TRST_N

2 GND

3 TDI

4 GND

5 TDO

6 GND

7 TMS 8 GND

9 TCK 10 GND

11 RESET 12 GND

13 TAP_SEL 14 3.3V

15.NAND FLASH

16. NOR FLASH

17.CPU

第五节 Linux实用命令

5.1 Linux常用命令

5.1.1 文件列表 –ls

#ls #以默认方式显示当前目录文件列表

#ls –a #显示所有文件包括隐藏文件

#ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可

#执行

5.1.2 目录切换 –cd

#cd dir#切换到当前目录下的dir目录

#cd /#切换到根目录

#cd ..#切换到到上一级目录

5.1.3 复制 –cp

#cp source target #将文件source 复制为 target

#cp /root/source . #将/root下的文件source复制到当前目录

#cp –av soure_dir target_dir#将整个目录复制,两目录完全一样

#cp –fr source_dir target_dir#将整个目录复制,并且是以非链接方式复制,当source目录带有符

#号链接时,两个目录不相同

5.1.4 删除 –rm

#rm file #删除某一个文件

#rm -fr dir #删除当前目录下叫dir的整个目录

5.1.5 移动 –mv

#mv source target #将文件source更名为target

5.1.6 比较 –diff

#diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不

#同则列出

#diff file1 file2#比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不

#相同的内容显示,如果是二进制代码则只表示两个文件是不同的

#echo message#显示一串字符

#echo "message message2"#显示不连续的字符串

5.1.8 容量查看 –du

#du #计算当前目录的容量

#du -sm /root#计算/root目录的容量并以M为单位

5.1.9 文件内容查看 –cat

#cat file #显示文件的内容,和DOS的type相同

#cat file | more#显示文件的内容并传输到more程序实现分页显示,使用命令less file

#可实现相同的功能

5.1.10 分页查看 –more

#more#分页命令,一般通过管道将内容传给它,如ls | more

5.1.11 时间日期 –date

#date#显示当前日期时间

#date -s 20:30:30 #设置系统时间为20:30:30

#date -s 2002-3-5 #设置系统时期为2002-3-5

5.1.12 查找 –find

#find -name /path file#在/path目录下查找看是否有文件file

5.1.13 搜索 –grep

#grep -ir “chars”#在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,

#-r为下一级目录

5.1.14 设置环境变量 –export

#export LC_ALL=zh_CN.GB2312 #将环境变量LC_ALL的值设为zh_CN.GB2312

#vi file#编辑文件file

vi 原基本使用及命令:

输入命令的方式为先按ctrl+c, 然后输入:x(退出),:x!(退出并保存) :w(写入文件),:w!(不询问方式写入文件), :r file(读文件file) ,:%s/oldchars/newchars/g(将所有字串oldchars换成newchars) 这一类的命令进行操作

5.1.16 压缩与解压 –tar

#tar xfzv file.tgz#将文件file.tgz解压

#tar cfzv file.tgz source_path#将文件source_path压缩为file.tgz

5.1.17 挂载 –mount

#mount -t yaffs /dev/mtdblock/0 /mnt #把/dev/mtdblock/0装载到 /mnt目录

#mount -t nfs 192.168.0.1:/friendly-arm/root /mnt #将nfs服务的共享目录/friendly-arm/root挂接到/mnt目录

5.1.18 启动信息显示 -dmesg

#dmesg #显示kernle启动及驱动装载信息

5.1.19 改变文件权限 –chmod

#chmod a+x file #将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用

#bash file才能执行

#chmod 666 file#将文件file设置为可读写

5.1.20 创建节点 –mknod

#mknod /dev/tty1 c 4 1#创建字符设备tty1,主设备号为4,从设备号为1,即第一个tty终端

5.1.21 进程查看 –ps

#ps #显示当前系统进程信息

#ps –ef#显示系统所有进程信息

#kill -9 500 #将进程编号为500的程序杀死

5.2 网络服务及应用程序

5.2.1 ifconfig命令

ifconfig命令可检查并设置主机的网络接口,在SOC3210-DEV上执行时不加任何参数会显示网卡与本地回路(lo,loopback)的信息。

ifconfig命令除了可查看网络状态之外,还能改变一些网络的设置:

#ifconfig eth0 192.168.1.100,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0。SOC3210-DEV缺省网络IP地址为192.168.1.100。也可以使用ifconfig命令暂时关闭网卡:

#ifconfig eth0 down

5.2.2 route命令

route命令是linux系统中控制台下用来设置网关的常用工具,它的使用方法如下:#route #显示当前路由设置情况

#route add default gw 192.168.1.1 #设置192.168.1.1为默认路由

default #删除默认路由

#route

del

5.2.3 ping命令

ping命令可以用来测试本机和网络上另外一台计算机是否连通。此处ip可根据您实际ip替换。

3

#表示向192.168.3.1连续发送3次数据包,以验证网络是否连接正常,192.168.3.1

–c

#ping

如果连接正常,则结果如下

ping –c 3 192.168.3.1

5.2.4 traceroute命令

traceroute命令可用来检测本机连到其他主机时,数据包在传送过程中经过了哪些路由器及时间。

嵌入式linux简单程序

1、demo demo.c #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include //模块相关 #include //内核相关 #include //file_operations #include //ssize_t定义文件 #include //__init和__exit相关 #include #include #include //copy_to_user()和copy_from_user()在此定义 #include /*相关宏定义*/ #define DEVICE_NAME "demo"//设备名称 #define demo_MAJOR 88//主设备号 #define demo_MINOR 0//次设备号 #define ERROR -1 static int MAX_BUF_LEN=1024;//数值的最大值 static int WRI_LENGTH=0; /*结构体的定义*/ static int demo_major=demo_MAJOR; struct demo_dev { struct cdev cdev; char drv_buf[1024]; }; struct demo_dev * demo_devp; /****************************************************************************** *******/ /*demo设备文件打开*/ int demo_open(struct inode * inode,struct file *filp) { filp->private_data=demo_devp;

嵌入式Linux系统开发标准教程

嵌入式Linux系统开发标准教程 目录 版权信息 内容简介 编辑推荐 目录 编辑本段版权信息 书名: 嵌入式Linux系统开发标准教程 作者:华清远见嵌入式培训中心 出版社:人民邮电出版社 出版时间: 2009 ISBN: 9787115194756 开本:16 定价: 45.00 元 编辑本段内容简介 《嵌入式Linux系统开发标准教程(第2版)》以嵌入式Linux系统开发流程为主线,剖析了嵌入式Linux系统构建的各个环节。《嵌入式Linux 系统开发标准教程(第2版)》从嵌入式系统基础知识和Linux编程技术讲起,接下来介绍了嵌入式Linux交叉开发环境的建立,然后分析了嵌入式Linux系统的引导程序、内核和文件系统三大组成部分,最后介绍了嵌入式Linux系统集成和部署的方法。 《嵌入式Linux系统开发标准教程(第2版)》先以ARM平台为例,对U-Boot和Linux内核启动过程做了详细分析,为学习嵌入式Linux系统开

发奠定基础,然后从概念上阐述了嵌入式Linux系统开发流程,实践上提供了具体的操作步骤,使读者能够深入理解嵌入式Linux系统的构建。 《嵌入式Linux系统开发标准教程(第2版)》可作为高等院校电子类、电气类、控制类等专业高年级本科生、研究生学习嵌入式Linux的教材,也可供希望进入嵌入式领域的科研和工程技术人员参考使用,还可作为嵌入式培训班的教材和教辅材料。 编辑本段编辑推荐 众多专家、厂商联合推荐,业界权威培训机构的经验总结。《嵌入式Linux系统开发标准教程(第2版)》配套PPT嵌入式专家讲座视频鞂式图书样章。嵌入式系统概述、ARM嵌入式处理器、Linux编程环境,嵌入式交叉开发环境、交叉杆塔工具链、Bootloader、配置编译Linux内核、Liux内核移植、内核高度技术、制作根文件系统、开源软件的应用、系统集成测试、部署Linux系统。 编辑本段目录 第1章嵌入式系统概述 1.1嵌入式系统的定义与特点 1.2常见的嵌入式操作系统 1.3嵌入式Linux的发展历史 1.4初步认识嵌入式Linux开发环境 1.5嵌入式Linux系统开发要点 第2章ARM嵌入式处理器 2.1初识ARM 2.1.1ARM公司简介 2.1.2ARM体系结构基础 2.1.3Linux与ARM处理器 2.2ARM指令集 2.2.1ARM处理器的指令集概述 2.2.2ARM指令寻址方式 2.2.3Thumb指令概述 2.3典型ARM处理器简介 2.3.1AtmelAT91RM9200 2.3.2SamsungS3C2410 2.3.3TIOMAP1510/1610系列 2.3.4Freescalei.Max21 2.4典型的嵌入式系统开发平台——三星S3C2410开发板

嵌入式Linux应用程序开发报告

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2015~ 2016 学年第一学期 课程名称嵌入式Linux应用程序开发指导教师叶伟琼职称副教授 学生姓名皓月叶舞专业班级通信工程12XX 学号124082004XX 题目AD驱动 成绩起止日期2015 年12 月14 日~2015年12月20 日 目录清单 序号材料名称资料数量备注 1 课程设计任务书 1 2 课程设计说明书 1 3 课程设计图纸10 张4 5 6

湖南工业大学 课程设计任务书 2015 —2016学年第1 学期 计算机与通信学院通信工程专业12XX 班 课程名称:嵌入式Linux应用程序开发 设计题目: AD驱动 完成期限:自2015 年12 月14 日至2015 年12 月20 日共 1 周 内容及任务一、设计的主要技术参数 数模转换、数模编程 二、设计任务(内容) 1、完成相关编程模拟量输入采集和转换 2、将结果显示 3、测试并运行,改变模拟量输入 4、验证 5、完成课程设计说明书 三、设计工作量 1周完成 进度安排 起止日期工作内容 12月14日分组、任务分配、课题理解 12月15日-12月17日功能分析、程序设计 12月18日-12月19日实验验证和测试 12月20 日总结、书写实验报告 参考资料[1] 王实甫. 嵌入式Linux系统设计与实例开发. 吉林大学出版社,2004年 [2] 田丰兴. 嵌入式控制系统. 北京航空航天大学出版社,2002年 指导教师(签字):年月日系(教研室)主任(签字):年月日

湖南工业大学 嵌入式Linux应用程序设计 课程设计说明书 AD驱动 起止日期: 2015年 12月14日至 2015年 12月 20 日 学生姓名皓月叶舞 班级通信1204班 学号124082004XX 成绩 指导教师(签字) 计算机与通信学院 2015年 12月20日

嵌入式Linux应用软件开发流程

从软件工程的角度来说,嵌入式应用软件也有一定的生命周期,如要进行需求分析、系统设计、代码编写、调试和维护等工作,软件工程的许多理论对它也是适用的。 但和其他通用软件相比,它的开发有许多独特之处: ·在需求分析时,必须考虑硬件性能的影响,具体功能必须考虑由何种硬件实现。 ·在系统设计阶段,重点考虑的是任务的划分及其接口,而不是模块的划分。模块划分则放在了任务的设计阶段。 ·在调试时采用交叉调试方式。 ·软件调试完毕固化到嵌入式系统中后,它的后期维护工作较少。 下面主要介绍分析和设计阶段的步骤与原则: 1、需求分析 对需求加以分析产生需求说明,需求说明过程给出系统功能需求,它包括:·系统所有实现的功能 ·系统的输入、输出 ·系统的外部接口需求(如用户界面) ·它的性能以及诸如文件/数据库安全等其他要求 在实时系统中,常用状态变迁图来描述系统。在设计状态图时,应对系统运行过程进行详细考虑,尽量在状态图中列出所有系统状态,包括许多用户无需知道的内部状态,对许多异常也应有相应处理。 此外,应清楚地说明人机接口,即操作员与系统间地相互作用。对于比较复杂地系统,形成一本操作手册是必要的,为用户提供使用该系统的操作步骤。为使系统说明更清楚,可以将状态变迁图与操作手册脚本结合起来。

在对需求进行分析,了解系统所要实现的功能的基础上,系统开发选用何种硬件、软件平台就可以确定了。 对于硬件平台,要考虑的是微处理器的处理速度、内存空间的大小、外部扩展设备是否满足功能要求等。如微处理器对外部事件的响应速度是否满足系统的实时性要求,它的稳定性如何,内存空间是否满足操作系统及应用软件的运行要求,对于要求网络功能的系统,是否扩展有以太网接口等。 对于软件平台而言,操作系统是否支持实时性及支持的程度、对多任务的管理能力是否支持前面选中的微处理器、网络功能是否满足系统要求以及开发环境是否完善等都是必须考虑的。 当然,不管选用何种软硬件平台,成本因素都是要考虑的,嵌入式Linux 正是在这方面具有突出的优势。 2、任务和模块划分 在进行需求分析和明确系统功能后,就可以对系统进行任务划分。任务是代码运行的一个映象,是无限循环的一段代码。从系统的角度来看,任务是嵌入式系统中竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备和内存空间等系统资源。 在设计一个较为复杂的多任务应用系统时,进行合理的任务划分对系统的运行效率、实时性和吞吐量影响都极大。任务分解过细会不断地在各任务之间切换,而任务之间的通信量也会很大,这样将会大大地增加系统的开销,影响系统的效率。而任务分解过粗、不够彻底又会造成原本可以并行的操作只能按顺序串行执行,从而影响系统的吞吐量。为了达到系统效率和吞吐量之间的平衡折中,在划分任务时应在数据流图的基础上,遵循下列步骤和原则:

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。 1 ARM处理器及开发板 在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。ARM已成为业界实际的RISC芯片标准。 ARM系列处理器根据各自特点应用于不同领域。从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号; RTC(real timeclock);LCD控制器;PWM输出等各项指标。 本文使用的是ARM9,其性能远远高过ARM7。开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。 2 嵌入式Linux系统 嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能。目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。 嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。 嵌入式Linux系统有很多种。本文使用的是Red Hat9操作系统。 在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。此时若直接删除Linux分区,会导致系统无法启动

华清远见嵌入式Linux课程

课程名称:嵌入式学院—嵌入式LINUX工程师就业培训班 上课时间为:上午9:00—12:00 下午13:30—17:30 (每天7小时正式上课时间)晚自习18:00—21:00 第一阶段:嵌入式Linux软件工程师 ?职场定位:Linux Development Engineer for Software Engineering ?本期目标:嵌入式系统是现在最热门的计算机应用领域之一,嵌入式C语言在其中起着至关重要的作用。一个精通C语言程序设计的程序员,可以很容易地进入Linux、WinCE、Vxworks等嵌入式操作系统下的软件开发工作。本阶段学习目标是掌握C语言基本知识、C编程语法基础和Linux操作系统的使用,并熟练掌握嵌入式Linux的开发环境,为将来的编程工作打基础。

第二阶段:嵌入式Linux系统工程师 ?职场定位:Linux Development Engineer for Embedded Systems ?证书:微软嵌入式工程师认证证书(认证费500元),红帽公司《Linux应用开发工程师证书》(认证费500元) ?本期目标:参加本期培训的学员应该掌握嵌入式C语言编程技巧。嵌入式Linux应用开发和系统开发是嵌入式Linux中最重要的一部分,也是企业人才需求最广的一部分。本期学习的主要目标是精通嵌入式Linux下的程序设计,熟悉嵌入式Linux开发流程,强化学员对Linux应用开发的理解和编码调试的能力,同时掌握bootloader和kernel的移植技能,了解ARM体系结构和编程,具备ARM硬件接口的基础知识,并了解Linux内核开发相关内容,初步掌握Linux下的驱动程序开发方法。另外,本期课程还会让学员了解另外一个比较重要的嵌入式操作系统:Windows CE,使学员在掌握嵌入式Linux的同时,也了解Windows CE的开发方法,拓展学员的知识面,丰富学员的知识结构。最后通过几个典型的企业全真案例,进一步巩固本期课程内容,使学员真正学以致用。

关于嵌入式系统软件的全过程质量保证精

关于嵌入式系统软件的全过程质量保证 质量是产品的生命 当今随着软、硬件技术的发展,嵌入式系统广泛应用于航空航天、国防军事、电子通信等行业,其中软件也越来越复杂。而这些领域应用特点,决定了嵌入式系统往往是高安全、任务关键的系统,软件的微小瑕疵就可能严重威胁到生命和国家的安全、天文数字的巨额财产损失。这就使得保证嵌入式软件的质量和可靠性,变得至关重要。而在这些领域,对产品质量从来就保持着高度的重视,有将“质量视为产品的生命”的传统。这样,相关行业的高层管理人员和开发人员对于软件的质量也逐渐提高了重视程度。近年来,在组织上,建立了完善的软件测试体系;在开发和测试方法上,建立了中国的软件过程成熟度的评价体系GJB5OO0在自动化工具方面,投入了大量的经费和人员在测试设备的开发、购置和建设方面。应该说,软件作为嵌入式产品主要的组成部分之一,对其质量的重视是目前相关行业的一个共识。 IBM Rational多年来在软件工程和质量保证方面积累了丰富的方法和经验。本文依据部分嵌入式开发机构对软件质量保证工作的一些理解,分析相应开发机构工作中可能的问题,并提出以RUP为核心的全过程质量管理的思想和具体的实现方式,提出不同单位的过程改进方法,以一种渐进的方式,从简单的工作开始,逐渐深入地改进组织的软件质量管理水平。 定义质量 对于任何一个组织,定义共同的对质量的理解是重要的第一步。软件开发组织经常按照一种不精确的、概括的质量观念来运转。 在IBM Rational统一过程中,质量定义如下: 满足或超出认定的一组需求; 使用经过认可的评测方法和标准来评估; 使用认定的流程来生产。 在这个定义中,我们首先看需求,IBM Rati onal的软件质量在用户需求方面的定义分为五个方面:易用性、可靠性、性能、可支持和功能。 质量保证,归根结底就是为客户提供更高品质的产品,更好地满足客户的需求。另一方面,这个质量定义中明确指出,质量更体现在软件开发的整个过程和一个标准的评价方式上。 软件开发过程质量就是指为了生成工件而对可接受流程的实施和遵守程度,体现在三个层次: 产品本身和用来生产、组装软件产品的零部件质量; 在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率,各个过程对质量的承诺; 软件产品验收的评测手段应该是被业界广泛认可和接受的方法,所构筑的质量评价标准。 一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级来评估。 RUP全过程质量保证 Rational Unified Process (RUP是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发的各个过程中,谁(角色)应该在什么时候(详细工作流程)做什么(任务)和产生什

《嵌入式LInux设计与开发》练习题

练习题(一) 一、填空题 1.嵌入式系统一般包括_____________、嵌入式操作系统和。 2.Arm7内核采用的是体系结构。 3.S3C2410X芯片包含通道PWM定时器和____________通道内部计时器。4.gcc的编译流程分为预处理、编译、和______________。 5.C语言中的预处理语句是以符号开头的。 6.多任务系统中有3个功能单位:任务、和____________。 二、选择题 1.下列操作系统中,具有Windows图形界面的是()A.VxWorks B.QNX C.Windows CE D.Linux 2.使vi编辑器处于可编辑状态的命令是()A.r B.p C.i D.b 3.下列选项中,能帮助用户生成makefile的工具是()A.gcc B.autotools C.gdb D.vi 4.可以使用TFTP通过网络下载文件的命令是()A.run B.tftpboot C.sleep D.mv 5.下列不属于Linux系统中线程的是()A.用户级现程B.网络级线程C.轻量级线程D.内核级线程 6.下列选项中,常用于网络中不同机器之间的进程间通信的是()A.套接字B.管道C.信号D.信号量 7.使用有关线程操作的函数时必须包含的头文件是()A.pthread.h B.stdio.h C.time.h D.string.h 8.TCP/IP参考模型包含几层()A.4 B.5 C.6 D.7 9.在TCP中,用于发送数据的函数是()A.bind()B.send()C.accept()D.recv() 10.下列选项中,不属于Linux系统的设备分类的是()

嵌入式Linux系统开发教程很完整的习题答案

嵌入式Linux系统开发教程很完整的习题答案

参考答案 第一章 一、填空题。 1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。 2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。 4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。 5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。 6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。 二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。(A) A、嵌入式处理器 B、嵌入式控制器 C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D) A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。(B) A、Palm B、VxWorks C、Linux D、WinCE [在此处键入]

嵌入式Linux应用程序开发测试题

嵌入式Linux应用程序开发测试题(14级嵌入式方向专用) 一、选择题 1、下列哪一项不是嵌入式操作系统的特点D A、占有资源少 B、低成本 C、高可靠性 D、交互性 2、在Linux内核配置过程中,下面哪项命令采用的是基于图形窗口模式的配置 界面C A、make config B、make menuconfig C、make xconfig D、make oldconfig 3、在Linux内核配置过程中,下面哪项命令建立依赖关系C A、make config B、make menuconfig C、make dep D、make clean 4、交叉编译器中,下面哪项不是必需包含的D A、glibc B、gcc C、binutils D、tmake 5、内核的编译主要步骤不包括下面哪项D A、内核配置 B、建立依存关系 C、建立内核 D、加载内核 6、内核编译时选项前的尖括号中可以是空,*,M,其中*表示C A、选项将编译为模块 B、不包含选项 C、包含选项 7、Bootloader的stage1阶段主要完成的工作不包括下面哪项D A、基本的硬件初始化 B、为加载stage2准备RAM空间 C、拷贝stage2到RAM中 D、用汇编语言跳转到main入口函数 8、GCC的正确编译流程为A A、预处理-编译-汇编-链接 B、预处理-编译-链接-汇编

C、预处理-链接-编译-汇编 D、编译-预处理-汇编-链接 9、如需GCC提供编译过程中所有有用的报警信息,则在编译时应加入选项B A、-w B、-Wall C、-werror D、-error 10、下面哪些与GDB相关的说法是错误的B A、GDB能调试可执行文件 B、GDB能调试源代码 C、GDB对编译过程有要求D、GDB支持交叉调试 11、在GDB调试过程中,使用下面哪项命令设置断点,其中m代表行号A A、b m B、c m C、n m D、s m 12、open函数原型中的O_RDWR标志表示文件打开方式为C A、只读方式打开文件 B、可写方式打开文件 C、读写方式打开文件 D、以添加方式打开文件,在打开文件的同时,文件指针指向文件末尾 13、在Linux操作系统中,串口设备的设备名一般为C A、com1 B、port1 C、ttyS0 D、serl1 14、下面哪项对Linux操作系统下fork函数的描述是错误的D A、fork函数执行一次返回两个值 B、新进程称为子进程,而原进程称为父进程 C、父进程返回值为子进程的进程号 D、子进程返回值为父进程的进程号 15、编写守护进程的第一步为A A、创建子进程,父进程退出 B、在子进程中创建新会话 C、改变当前目录为根目录 D、关闭文件描述符 16、在关于TCP/UDP的描述中,下面哪项是错误的C A、TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递

嵌入式linux学习心得(精选多篇)

嵌入式linux学习心得(精选多篇) 第一篇:嵌入式linux学习内容 知识结构 1嵌入式处理器与裸机程序开发2linux系统管理3linux 应用程序开发4linux驱动程序开发5linux内核开发与系统移植 一、处理器 1arm处理器工作模式2arm系统寄存器3arm寻址方式4arm汇编指令集5arm环境c语言编程6arm中断与异常7ads 集成开发环境 8裸机程序开发(串口、lcd、时钟、led、按键……) 二、系统管理 1linux定制安装2linux命令详解 3samba、nfs、tftp、wireshark使用4shell编程 三、应用程序开发 1gcc、gdb、makefile2文件、时间编程

3多进程、多线程程序设计4进程间通讯5网络编程 6qt图形化应用程序开发7android图形化应用程序开发 四、内核开发 1linux内核配置与裁剪2linux内核模块开发3根文件系统制作4进程子系统5内存子系统6proc文件系统7系统调用8内核定时器9内核异常分析 五、驱动程序开发 1字符设备驱动程序2总线、设备、驱动模型3硬件访问技术4中断处理5input设备驱动6platform驱动程序7pci、usb 驱动程序8网卡驱动程序9触摸屏驱动程序xx串口驱动程序 学习顺序 1嵌入式处理器与裸机程序开发2linux系统管理3linux 应用程序开发4linux内核开发基础5嵌入式linux环境搭建6linux驱动程序开发7深入学习linux内核 第二篇:嵌入式linux学习步骤 嵌入式linux学习步骤 作者:phantom时间:xxxx-8-6文章来源:来自网络

嵌入式Linux应用程序开发详解-第1章

“黑色经典”系列之《嵌入式Linux应用程序开发详解》 能够熟练使用Linux系统的基本命令 能够独立在Linux系统中安装软件 能够独立定制Linux服务 华清远见<嵌入式Linux应用开发班>培训教材

1.1 嵌入式Linux基础 随着摩托罗拉手机A760、IBM智能型手表WatchPad、夏普PDA Zaurus等一款款高性能“智能数码产品”的出现,以及Motolola、三星、MontaVista、飞利浦、Nokia、IBM、SUN 等众多国际顶级巨头的加入,嵌入式Linux的队伍越来越庞大了。在通信、信息、数字家庭、工业控制等领域,随处都能见到嵌入式Linux的身影。根据美国VDC(V enture Development Co.)统计数据显示,嵌入式Linux的市场规模从2001年的5520万美元,到2006将会增长至3.46亿美元,在未来两年将占嵌入式操作系统市场份额的50%。 究竟是什么原因让嵌入式Linux发展如此迅速呢?又究竟是什么原因让它能与强劲的Vxworks、Window CE相抗衡呢?这一切还是要归根于它的父亲——Linux的功劳。可以说,嵌入式Linux正是继承和发展了Linux的诱人之处才走到今天的,而Linux也正是有了嵌入式Linux的广泛应用才使其更加引人瞩目。以下就从Linux开始,一层层揭开嵌入式Linux的面纱。 1.1.1 Linux发展概述 简单地说,Linux是指一套免费使用和自由传播的类UNIX操作系统。人们通常所说的Linux是指Linus Torvalds所写的Linux操作系统内核。 当时的Linus还是芬兰赫尔辛基大学的一名学生,他主修的课程中有一门课是操作系统,而且这门课是专门研究程序的设计和执行。最后这门课程提供了一种称为Minix的初期UNIX 系统。Minix是一款仅为教学而设计的操作系统,而且功能有限。因此,和Minix的众多使用者一样,Linus也希望能给它添加一些功能。 在之后的几个月里,Linus根据实际的需要,编写了磁盘驱动程序以便下载访问新闻组的文件,又写了个文件系统以便能够阅读Minix文件系统中的文件。这样,“当你有了任务切换,有了文件系统和设备驱动程序后,这就是UNIX,或者至少是其内核。”于是,0.0.1版本的Linux就诞生了。 Linus从一开始就决定自由传播Linux,他把源代码发布在网上,于是,众多的爱好者和程序员也都通过互联网加入到Linux的内核开发工作中。这个思想与FSF(Free Software Foundation)资助发起的GNU(GNU’s Not UNIX)的自由软件精神不谋而合。 GNU是为了推广自由软件的精神以实现一个自由的操作系统,然后从应用程序开始,实现其内核。而当时Linux的优良性能备受GNU的赏识,于是GNU就决定采用Linus及其开发者的内核。在他们的共同努力下,Linux这个完整的操作系统诞生了。其中的程序开发共同遵守General Public License(GPL)协议,这是最开放也是最严格的许可协议方式,这个协议规定了源码必须可以无偿的获取并且修改。因此,从严格意义上说,Linux应该叫做GNU/Linux,其中许多重要的工具如gcc、gdb、make、Emacs等都是GNU贡献。 这个“婴儿版”的操作系统以平均两星期更新一次的速度迅速成长,如今的Linux已经有超过250种发行版本,且可以支持所有体系结构的处理器,如X86、PowerPC、ARM、XSCALE等,也可以支持带MMU或不带MMU的处理器。到目前为止,它的内核版本也已经从原先的0.0.1发展到现在的2.6.xx。 华清远见<嵌入式Linux应用开发班>培训教材

嵌入式软件开发流程

嵌入式软件的开发流程 嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以此满足系统对功能、成本、体积和功耗等要求。最简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的ROM 中仅有实现单一功能控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能。实质上与PC的区别仅仅是将微型操作系统与应用软件嵌入在ROM、RAM 和/或FLASH存储器中,而不是存贮于磁盘等载体中。很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。 近些年来,随着以计算机技术,通讯技术为主的信息技术的快速发展和Internet 的广泛应用,传统的控制学科正在发生变革,出现了许多新的生长点。伴随而来的一个现象是控制专业的相当多的学生在毕业后进入了计算机,通讯行业,以致有人说学控制没有用,自动化专业可以取消了。这些情况的出现使我们控制教育工作者反复思考,传统的控制应如何拓宽它的领域?控制专业应该教什么才使学生感到有用?流行的嵌入式操作系统可以分为两类:一类是从运行在个人电脑上的操作系统向下移植到嵌入式系统中,形成的嵌入式操作系统,如微软公司的Windows CE及其新版本,SUN公司的Java操作系统,朗讯科技公司的Inferno,嵌入式Linux等。这类系统经过个人电脑或高性能计算机等产品的长期运行考验,技术日趋成熟,其相关的标准和软件开发方式已被用户普遍接受,同时积累了丰富的开发工具和应用软件资源。 另一类是实时操作系统,如WindRiver 公司的VxWorks,ISI 的pSOS,QNX系统软件公司的QNX,ATI 的Nucleus,中国科学院凯思集团的Hopen嵌入式操作系统等,这类产品在操作系统的结构和实现上都针对所面向的应用领域,对实时性高可靠性等进行了精巧的设计,而且提供了独立而完备的系统开发和测试工具,较多地应用在军用产品和工业控制等领域中。Linux 是90年代以来逐渐成熟的一个开放源代码的操作系统。PC机上的Linux 版本在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux,RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应用程序,是研究开发工作的宝贵资源。 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。

嵌入式开发过程及相关概念

嵌入式开发过程及相关概念 基于Linux/uClinux 的嵌入式产品的开发,在确定好产品需求之后,通常遵循如下的开发过程: 第1步. 确定硬件设备。包括处理器、存储设备、显示屏、触摸屏以及其他外设,比如网卡、声卡等。通常,我们可以从一些方案提供商那里购买得到比较符合自己需求的硬件开发板(或者硬件参考设计板),有了这类硬件板,我们就可以根据自己的需求进一步定制,从而缩短开发周期。 第2步. 移植操作系统并开发设备驱动程序。通常,针对一款新的硬件开发板移植 Linux/uClinux 操作系统是技术难度较高的工作。如果我们购买由方案供应商提供的硬件开发板,则内核和大部分设备驱动程序是现成的,我们只需要开发定制设备的驱动程序即可。 第3步. 编写自己的应用软件。利用Linux/uClinux 开发嵌入式产品有个最大的好处,就是我们可以在PC 环境上完成绝大多数的应用软件开发和调试工作。比如,如果您的产品需要从某个特定的网站下载一幅图片然后显示在屏幕上,则我们可以在PC 上实现该软件,之后移植到硬件板上即可。因为该程序涉及的主要接口:网络、显示卡等,不管在PC 上,还是在硬件开发板上,均保持一致的接口。于是,只要在PC 上运行正确,该程序就能够在嵌入式硬件开发板上正确运行。 第4步. 将应用软件移植到硬件板子上并进行测试及调试。这个过程主要就是将应用软件以及应用软件所使用的函数库等,通过交叉编译器编译成目标硬件板上的程序,然后和共享库、常用工具程序等一起,形成一个完整的文件系统映像,之后下载到硬件板上,并在硬件板上进行应用软件的测试和调试。需要注意的是,因为嵌入式系统上的资源毕竟有限,比如内存的可获得性、存储空间的可用性等均会影响程序的正常运行,因此,我们需要在实际的硬件板上运行应用程序以便测试整个系统。 第5步. 通常,上述步骤符合一种迭代关系。进行到第4步时,也许我们会发现应用程序本身的一些问题,也许会发现驱动程序存在问题。这时,我们就要回到第2步、第3步修正错误并开展第二次迭代。当然,也有可能会发现我们最初选择的硬件性能和能力有缺陷,从而会导致从第1步重新来过。 第6步. 经过严格测试之后,整个硬件和软件系统就可以交给产品设计部门设计外观和模具并最终到生产线上生产了。以上就是基于Linux/uClinux 的嵌入式产品开发的一般过程。接下来我们重点介绍上述过程中的一些重要概念。 交叉编译 交叉编译是嵌入式开发中最常见的概念。交叉编译是相对于通常桌面上的开发而言的。在我们开发Windows 程序时,我们通常在Windows 平台上运行一个集成开发环境,编写代码,然后利用集成开发环境所带的编译器将代码编译并连接成Windows 平台上的程序,之后还可以在集成开发环境中运行并调试该程序。这种开发方式对PC 而言是非常方便的,因为PC 平台的软硬件配置已经足以完成编译程序这类计算量非常大的工作。然而,对嵌入式系统来讲,由于其硬件能力所限,我们不可能在嵌入式系统上安装编译器和连接器,然后在嵌入式系统上编写代码、编译并连接程序。于是,就出现了交叉编译器 (cross-compiler)。交叉编译器通常运行在某台功能足够强大的宿主机(host)上,可用来编译某个源程序,然后生成针对特定目标平台(target)的代码。 通常来讲,C 语言的交叉编译环境主要由如下几个部分组成: ?交叉编译器及相关二进制工具(连接器、归档工具、符号剥离器等)。

嵌入式软件开发流程

嵌入式软件开发流程

————————————————————————————————作者:————————————————————————————————日期:

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

嵌入式Linux系统开发教程最完整答案-贺丹丹版

参考答案 第一章 p20 一、填空题。 1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。 2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、内核可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。 4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。 5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。 6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。 二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。(A) A、嵌入式处理器 B、嵌入式控制器 C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。(D) A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。(B) A、Palm B、VxWorks C、Linux D、WinCE [在此处键入]

相关文档
相关文档 最新文档