嵌入式系统是一种应用范围非常广泛的系统。可以说除了桌面计算机和服务器外所有计算设备都属于嵌入式系统,例如从便携式音乐播放器到航天飞机上的实时系统控制都属于嵌入式系统。 大多数商用的嵌入式系统都设计成专用任务的低成本的产品。大多数的嵌入式系统都具有实时性的要求。有些功能需要非常快的主频,但其他大多数功能并不需要高速的处理能力。这些系统通过特定的器件和软件来满足实时性的要求。 简单地通过速度和成本来定义嵌入式系统是困难的,但对于大批量的产品而言,成本常常对系统设计起决定作用。通常,一个嵌入式系统的很多部分相对系统主要功能来说需要较低的性能,因此嵌入式系统和通用PC相比,能够使用一个满足辅助功能的合适的CPU,从而简化了系统设计,降低了成本。例如,数字电视的机顶盒需要处理每秒以百万兆位计的连续数据,但这些数据处理大部分是由定制的硬件来实现的,如解析、管理和编解码多个频道的数字影像。 对于大批量生产的嵌入式系统,如便携式音乐播放器或手机等,降低成本就成为最主要的问题。这些系统通常只具有几个芯片:一个高度集成的CPU,一个定制的芯片用于控制其他所有的功能,还有一个存储芯片。在这种设计中,每部分都设计成使用最小的系统功耗。 对于小批量的嵌入式应用,为了降低开发成本,常常使用PC体系结构,通过限制程序的执行时间或用一个实时操作系统来替换原先的操作系统。在这种情况下,可以使用一个或多个高性能的CPU来替换特殊用途的硬件。 嵌入式系统的软件通常运行在有限的硬件资源上:没有硬盘、操作系统、键盘或屏幕。软件一般都没有文件系统,如果有的话,也会采用Flash驱动器。如果有人机交互接口的话,也是一个小键盘或液晶显示器。硬件是计算机的物理部分,和存储在硬件中的计算机软件程序和数据区分开来。 嵌入到机械中的嵌入式系统需要长期无故障连续运行,因此它的软件需要比PC中的软件更加仔细地开发和更加严格地测试。 那么,到底什么是嵌入式系统呢? 根据IEEE(国际电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”(原文为devices used to control,monitor,or assist the operation of equipment,machinery or plants)。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。 目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础,软件 硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 可以这样认为,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。 本书是按照人事部、信息产业部全国计算机技术与软件专业技术资格(水平)考试要求编写,内容紧扣《嵌入式系统设计考试大钢》。全书共六章,分别对嵌入式系统基础知识、嵌入式微处理器与接口设计、嵌入式软件与操作系统、嵌入式软件程序设计、嵌入式系统设计与维护等知识进行了详细的讲解。最后介绍了一个典型的嵌入式系统设计案例。 本书内容丰富,结构合理,概念清晰。既可作为全国计算机技术与软件专业技术资格(水平)考试中嵌入式系统设计师级别的考试用书,供有关考生学习使用,也可作为本科生嵌入式系统相关课程教材或培训书使用。
上传时间: 2013-10-29
上传用户:dongqiangqiang
本书介绍Linux环境下的编程方法,内容包括Linux系统命令、 Shell脚本、编程语言(gawk、Perl)、系统内核、安全体系、X Window等,内容丰富、论述全面,涵盖了Linux系统的方方面面。本书附带光盘包括了RedHat Linux系统的最新版本,及安装方法,还包括本书的大量程序代码,极大地方便了读者,为使用和将要使用Linux系统的技术人员提供了较全面的参考。 目 录前言第一篇 Linux系统介绍第1章 Linux简介 …11.1 Linux 的起源 11.2 自由软件基金会的GNU计划 11.3 Linux 的发音 21.4 Linux 的特点 21.5 基本硬件要求 31.6 如何获得Linux 31.6.1 从网上下载Linux 31.6.2 从光盘获得Linux 31.7 涉及Linux 的Web 网址和新闻讨论组 61.8 Linux 的不足之处 7第2章 外壳及常用命令 82.1 登录和退出 82.2 Linux 系统的外壳 82.3 外壳的常用命令 92.3.1 更改帐号密码 92.3.2 联机帮助 92.3.3 远程登录 92.3.4 文件或目录处理 92.3.5 改变工作目录 102.3.6 复制文件 102.3.7 移动或更改文件、目录名称 102.3.8 建立新目录 102.3.9 删除目录 112.3.10 删除文件 112.3.11 列出当前所在的目录位置 112.3.12 查看文件内容 112.3.13 分页查看文件内容 112.3.14 查看目录所占磁盘容量 112.3.15 文件传输 112.3.16 文件权限的设定 122.3.17 检查自己所属的工作组名称 132.3.18 改变文件或目录工作组所有权 132.3.19 改变文件或目录的最后修改时间 132.3.20 文件的链接 132.3.21 文件中字符串的查寻 142.3.22 查寻文件或命令的路径 142.3.23 比较文件或目录的内容 142.3.24 文件打印输出 142.3.25 一般文件的打印 142.3.26 troff 文件的打印 142.3.27 打印机控制命令 142.3.28 进程控制 152.3.29 外壳变量 162.3.30 环境变量 162.3.31 别名 162.3.32 历史命令 172.3.33 文件的压缩 172.3.34 管道命令的使用 172.3.35 输入/输出控制 182.3.36 查看系统中的用户 182.3.37 改变用户名 182.3.38 查看用户名 182.3.39 查看当前系统上所有工作站 的用户 192.3.40 与某工作站上的用户交谈 192.3.41 检查远程系统是否正常 192.3.42 电子邮件的使用简介 19第3章 Linux系统的网络功能 213.1 Linux支持的网络协议 213.1.1 TCP/IP 213.1.2 TCP/IP 版本 6 213.1.3 IPX/SPX 213.1.4 AppleTalk 协议集 213.1.5 广域网 223.1.6 ISDN 223.1.7 PPP、SLIP及PLIP 223.1.8 业余无线电 223.1.9 ATM 223.2 Linux系统下的文件共享和打印共享 223.2.1 Machintosh 环境 223.2.2 Windows 环境 223.2.3 Novell 环境 233.2.4 UNIX 环境 233.3 Linux系统中的Internet/Intranet功能 233.3.1 邮件 233.3.2 Web 服务器 243.3.3 Web 浏览器 243.3.4 FTP 服务器和客户机 243.3.5 新闻服务 243.3.6 域名系统 243.3.7 DHCP和 bootp 243.3.8 NIS 243.4 Linux系统下应用程序的远程执行 243.4.1 Telnet 253.4.2 远程命令 253.4.3 X Window 253.5 Linux系统的网络互连功能 253.5.1 路由器 253.5.2 网桥 253.5.3 IP伪装 253.5.4 IP统计 263.5.5 IP 别名 263.5.6 流量限制器 263.5.7 防火墙 263.5.8 端口下传 263.5.9 负载平衡 263.5.10 EQL 273.5.11 代理服务器 273.5.12 按需拨号 273.5.13 管道、移动IP和虚拟个人网络 273.6 Linux系统中的网络管理 273.6.1 Linux系统下的网络管理应用程序 273.6.2 SNMP 283.7 企业级Linux网络 283.7.1 高可用性 283.7.2 RAID 283.7.3 冗余网络 28第4章 Linux系统管理简介 294.1 root 帐号 294.2 启动和关闭系统 294.2.1 从软盘启动 294.2.2 使用LILO 启动 294.2.3 关闭Linux系统 304.3 挂接文件系统 304.3.1 挂接软盘 304.3.2 创建新的文件系统 304.3.3 卸载文件系统 314.4 检查文件系统 314.5 使用文件作为交换区 314.6 系统和文件的备份 324.7 设置系统 334.7.1 设置系统名 334.7.2 使用维护磁盘 334.7.3 重新设置root 帐号口令 334.7.4 设置登录信息 33第二篇 Linux高级语言及管理编程第5章 外壳编程 355.1 创建和运行外壳程序 355.1.1 创建外壳程序 355.1.2 运行外壳程序 355.2 使用外壳变量 365.2.1 给变量赋值 365.2.2 读取变量的值 375.2.3 位置变量和其他系统变量 375.2.4 引号的作用 375.3 数值运算命令 385.4 条件表达式 405.4.1 if 表达式 405.4.2 case 表达式 415.5 循环语句 425.5.1 for 语句 435.5.2 while 语句 435.5.3 until 语句 445.6 shift 命令 445.7 select 语句 455.8 repeat 语句 465.9 子函数 46第6章 gawk语言编程 486.1 gawk的主要功能 486.2 如何执行gawk程序 486.3 文件、记录和字段 486.4 模式和动作 496.5 比较运算和数值运算 506.6 内部函数 506.6.1 随机数和数学函数 516.6.2 字符串的内部函数 516.6.3 输入输出的内部函数 526.7 字符串和数字 526.8 格式化输出 526.9 改变字段分隔符 546.10 元字符 546.11 调用gawk程序 556.12 BEGIN和END 556.13 变量 566.14 内置变量 566.15 控制结构 576.15.1 if 表达式 576.15.2 while 循环 576.15.3 for 循环 586.15.4 next 和 exit 586.16 数组 586.17 用户自定义函数 586.18 几个实例 59第7章 Perl语言编程 607.1 什么是Perl 607.2 Perl的现状 607.3 初试Perl 607.4 Perl变量 607.4.1 标量 607.4.2 数组 637.4.3 相关数组 657.5 文件句柄和文件操作 657.6 循环结构 667.6.1 foreach循环 667.6.2 判断运算 667.6.3 for循环 677.6.4 while 和 until循环 677.7 条件结构 677.8 字符匹配 687.9 替换和翻译 697.9.1 替换 697.9.2 翻译 707.10 子过程 707.10.1 子过程的定义 707.10.2 参数 707.10.3 返回值 707.11 Perl程序的完整例子 71第三篇 Linux系统内核分析第8章 Linux内核简介 738.1 系统初始化 738.2 系统运行 738.3 内核提供的各种系统调用 748.3.1 进程的基本概念和系统 的基本数据结构 748.3.2 创建和撤消进程 748.3.3 执行程序 748.4 存取文件系统 75第9章 系统进程 769.1 什么是进程 769.2 进程的结构 769.3 进程调度 789.4 进程使用的文件 799.5 进程使用的虚拟内存 809.6 创建进程 819.7 进程的时间和计时器 819.7.1 实时时钟 819.7.2 虚拟时钟 819.7.3 形象时钟 819.8 程序的执行 829.8.1 ELF文件 829.8.2 脚本文件 82第10章 内存管理 8310.1 内存管理的作用 8310.2 虚拟内存的抽象模型 8310.3 按需装入页面 8410.4 交换 8510.5 共享虚拟内存 8510.6 存取控制 8510.7 高速缓存 8610.7.1 缓冲区高速缓存 8610.7.2 页面高速缓存 8610.7.3 交换高速缓存 8610.7.4 硬件高速缓存 8610.8 系统页面表 8610.9 页面的分配和释放 8710.9.1 页面的分配 8810.9.2 页面的释放 8810.10 内存映射 8810.11 请求调页 8910.12 页面高速缓存 8910.13 内核交换守护进程 90第11章 进程间通信 9111.1 信号机制 9111.2 管道机制 9211.3 System V IPC 机制 9311.3.1 信息队列 9311.3.2 信号量 9411.3.3 共享内存 96第12章 PCI 9812.1 PCI 系统 9812.2 PCI地址空间 9812.3 PCI设置头 9912.4 PCI I/O 和 PCI 内存地址 10012.5 PCI-ISA桥 10012.6 PCI-PCI 桥 10012.7 PCI初始化 10112.7.1 Linux系统内核有关PCI的 数据结构 10112.7.2 PCI 设备驱动程序 10212.7.3 PCI BIOS 函数 10512.7.4 PCI Fixup 105第13章 中断和中断处理 10613.1 中断 10613.2 可编程中断控制器 10613.3 初始化中断处理的数据结构 10713.4 中断处理 108第14章 设备驱动程序 10914.1 硬件设备的管理 10914.2 轮询和中断 11014.3 直接内存存取 11014.4 内存 11114.5 设备驱动程序和内核之间的接口 11114.5.1 字符设备 11214.5.2 块设备 11314.6 硬盘 11314.6.1 IDE 硬盘 11514.6.2 初始化IDE 硬盘子系统 11514.6.3 SCSI 硬盘 11514.6.4 初始化 SCSI 磁盘子系统 11614.6.5 传递块设备请求 11814.7 网络设备 11814.7.1 网络设备文件名 11814.7.2 总线信息 11814.7.3 网络接口标记 11914.7.4 协议信息 11914.7.5 初始化网络设备 119第15章 文件系统 12115.1 Linux文件系统概述 12115.2 ext2文件系统 12215.2.1 ext2的索引节点 12215.2.2 ext2超级块 12415.2.3 ext2 数据块组描述符 12415.2.4 ext2 中的目录 12515.2.5 在ext2 文件系统中查找文件 12515.2.6 改变ext2 文件系统中文件 的大小 12615.3 VFS 12715.3.1 VFS 超级块 12815.3.2 VFS 索引节点 12915.3.3 登记文件系统 12915.3.4 挂接文件系统 13015.3.5 在VFS中查找文件 13115.3.6 撤消文件系统 13115.3.7 VFS 索引节点缓存 13215.3.8 VFS目录缓存 13215.4 缓冲区缓存 13315.5 /proc 文件系统 135第16章 网络系统 13616.1 TCP/IP 网络简介 13616.2 TCP/IP网络的分层 13716.3 BSD 套接口 13816.4 INET套接口层 14016.4.1 创建BSD 套接口 14116.4.2 给INET BSD 套接口指定地址 14116.4.3 在INET BSD套接口上创建连接 14216.4.4 监听INET BSD 套接口 14216.4.5 接收连接请求 14316.5 IP 层 14316.5.1 套接口缓冲区 14316.5.2 接收IP数据包 14416.5.3 发送IP数据包 14416.5.4 数据碎片 14416.6 地址解析协议 145第17章 系统内核机制 14717.1 Bottom Half处理 14717.2 任务队列 14817.3 计时器 14917.4 等待队列 14917.5 信号量 150第四篇 Linux系统高级编程第18章 Linux内核模块编程 15118.1 一个简单程序Hello World 15118.2 设备文件 15218.3 /proc文件系统 15618.4 使用/proc输入 15818.5 与设备文件通信 16218.6 启动参数 16918.7 系统调用 17018.8 阻塞进程 17218.9 替换printk 17718.10 调度任务 178第19章 有关进程通信的编程 18119.1 进程间通信简介 18119.2 半双工UNIX管道 18119.2.1 基本概念 18119.2.2 使用C语言创建管道 18219.2.3 创建管道的简单方法 18519.2.4 使用管道的自动操作 18719.2.5 使用半双工管道时的注意事项 18819.3 命名管道 18819.3.1 基本概念 18819.3.2 创建FIFO 18819.3.3 FIFO操作 18919.3.4 FIFO的阻塞 19019.3.5 SIGPIPE信号 19019.4 System V IPC 19019.4.1 基本概念 19019.4.2 消息队列基本概念 19119.4.3 系统调用msgget() 19419.4.4 系统调用msgsnd() 19519.4.5 系统调用msgctl() 19719.4.6 一个msgtool的实例 19919.5 使用信号量编程 20119.5.1 基本概念 20119.5.2 系统调用semget() 20219.5.3 系统调用semop() 20319.5.4 系统调用semctl() 20419.5.5 使用信号量集的实例:semtool 20519.6 共享内存 20919.6.1 基本概念 20919.6.2 系统内部用户数据结构 shmid_ds 20919.6.3 系统调用shmget() 21019.6.4 系统调用shmat() 21119.6.5 系统调用shmctl() 21119.6.6 系统调用shmdt() 21219.6.7 使用共享内存的实例:shmtool 212第20章 高级线程编程 21520.1 线程的概念和用途 21520.2 一个简单的例子 21520.3 线程同步 21720.4 使用信号量协调程序 21820.5 信号量的实现 22020.5.1 Semaphore.h 22020.5.2 Semaphore.c 221第21章 Linux系统网络编程 22521.1 什么是套接口 22521.2 两种类型的Internet套接口 22521.3 网络协议分层 22521.4 数据结构 22521.5 IP地址和如何使用IP地址 22621.5.1 socket() 22621.5.2 bind() 22621.5.3 connect() 22721.5.4 listen() 22821.5.5 accept() 22821.5.6 send() 和 recv() 22921.5.7 sendto() 和 recvfrom() 23021.5.8 close() 和 shutdown() 23021.5.9 getpeername() 23121.5.10 gethostname() 23121.6 DNS 23121.7 客户机/服务器模式 23221.8 简单的数据流服务器程序 23221.9 简单的数据流客户机程序 23421.10 数据报套接口 23521.11 阻塞 237第22章 Linux I/O端口编程 24022.1 如何在 C 语言下使用I/O端口 24022.1.1 一般的方法 24022.1.2 另一个替代方法: /dev/port 24122.2 硬件中断 与 DMA 存取 24122.3 高精确的时间 24122.3.1 延迟时间 24122.3.2 时间的量测 24322.4 使用其他程序语言 24322.5 一些有用的 I/O 端口 24322.5.1 并行端口 24322.5.2 游戏端口 24422.5.3 串行端口 245第五篇 Linux系统安全分析第23章 系统管理员安全 24723.1 安全管理 24723.2 超级用户 24723.3 文件系统安全 24723.3.1 Linux文件系统概述 24723.3.2 设备文件 24823.3.3 /etc/mknod命令 24923.3.4 安全考虑 24923.3.5 find命令 25023.3.6 secure程序 25023.3.7 ncheck命令 25023.3.8 安装和拆卸文件系统 25023.3.9 系统目录和文件 25123.4 作为root运行的程序 25123.4.1 启动系统 25123.4.2 init进程 25123.4.3 进入多用户 25223.4.4 shutdown命令 25223.4.5 系统V的cron程序 25223.4.6 系统V版本2之后的cron程序 25223.4.7 /etc/profile 25323.5 /etc/passwd文件 25323.5.1 口令时效 25323.5.2 UID和GID 25423.6 /etc/group文件 25423.7 增加、删除和移走用户 25423.7.1 增加用户 25423.7.2 删除用户 25523.7.3 将用户移到另一个系统 25523.8 安全检查 25523.8.1 记帐 25523.8.2 其他检查命令 25623.8.3 安全检查程序的问题 25623.8.4 系统泄密后怎么办 25723.9 加限制的环境 25823.9.1 加限制的外壳 25823.9.2 用chroot()限制用户 25823.10 小系统安全 25923.11 物理安全 25923.12 用户意识 26023.13 系统管理员意识 26123.13.1 保持系统管理员个人的 登录安全 26123.13.2 保持系统安全 261第24章 系统程序员安全 26324.1 系统子程序 26324.1.1 I/O子程序 26324.1.2 进程控制 26324.1.3 文件属性 26424.1.4 UID和GID的处理 26524.2 标准C程序库 26524.2.1 标准I/O 26524.2.2 /etc/passwd的处理 26624.2.3 /etc/group的处理 26724.2.4 加密子程序 26824.2.5 运行外壳 26824.3 编写安全的C程序 26824.3.1 需要考虑的安全问题 26824.3.2 SUID/SGID程序指导准则 26924.3.3 编译、安装SUID/SGID程序 的方法 26924.4 root用户程序的设计 270第25章 Linux系统的网络安全 27225.1 UUCP系统概述 27225.1.1 UUCP命令 27225.1.2 uux命令 27225.1.3 uucico程序 27325.1.4 uuxqt程序 27325.2 UUCP的安全问题 27325.2.1 USERFILE文件 27325.2.2 L.cmds文件 27425.2.3 uucp登录 27425.2.4 uucp使用的文件和目录 27425.3 HONEYDANBER UUCP 27525.3.1 HONEYDANBER UUCP与 老UUCP的差别 27525.3.2 登录名规则 27625.3.3 MACHINE规则 27725.3.4 组合MACHINE和LOGNAME 规则 27825.3.5 uucheck命令 27825.3.6 网关 27825.3.7 登录文件检查 27925.4 其他网络 27925.4.1 远程作业登录 27925.4.2 NSC网络系统 28025.5 通信安全 28025.5.1 物理安全 28025.5.2 加密 28125.5.3 用户身份鉴别 28225.6 SUN OS系统的网络安全 28325.6.1 确保NFS的安全 28325.6.2 NFS安全性方面的缺陷 28425.6.3 远程过程调用鉴别 28425.6.4 Linux鉴别机制 28425.6.5 DES鉴别系统 28525.6.6 公共关键字的编码 28625.6.7 网络实体的命名 28625.6.8 DES鉴别系统的应用 28725.6.9 遗留的安全问题 28725.6.10 性能 28825.6.11 启动和setuid程序引起的问题 28825.6.12 小结 289第26章 Linux系统的用户安全性 29026.1 口令安全 29026.2 文件许可权 29026.3 目录许可 29126.4 umask命令 29126.5 设置用户ID和同组用户ID许可 29126.6 cp mv ln和cpio命令 29126.7 su和newgrp命令 29226.7.1 su命令 29226.7.2 newgrp命令 29226.8 文件加密 29226.9 其他安全问题 29326.9.1 用户的.profile文件 29326.9.2 ls -a 29326.9.3 .exrc文件 29326.9.4 暂存文件和目录 29326.9.5 UUCP和其他网络 29326.9.6 特洛伊木马 29426.9.7 诱骗 29426.9.8 计算机病毒 29426.9.9 要离开自己已登录的终端 29426.9.10 智能终端 29426.9.11 断开与系统的连接 29426.9.12 cu命令 29526.10 保持帐户安全的要点 295第六篇 X window系统的内部结构和使用第27章 X Window系统的基本知识 29727.1 X Window系统介绍 29727.1.1 X的特点 29727.1.2 什么是窗口系统 29827.1.3 X发展的历史 29927.1.4 X的产品 29927.1.5 MIT发行的X 29927.2 X的基本结构 30227.2.1 X 的基本元素 30327.2.2 服务程序和客户程序如何 交互通信 30427.2.3 X 的网络概况 30627.3 从用户界面的角度概观X 30727.3.1 管理界面:窗口管理器 30727.3.2 应用程序界面和工具箱 30927.3.3 其他系统角度 30927.4 术语和符号 31027.4.1 术语 31027.4.2 符号 31127.5 启动和关闭X 31227.5.1 启动X 31227.5.2 执行X程序的方式 31327.5.3 关闭X 31427.6 窗口管理器基础—uwm 31527.6.1 什么是窗口管理器 31527.6.2 启动uwm 31527.6.3 基本窗口操作 —uwm 的菜单 31527.6.4 移动窗口 31627.6.5 重定窗口大小 31627.6.6 建立新窗口 31627.6.7 管理屏幕空间 31827.6.8 中止应用程序窗口 32027.6.9 激活uwm菜单的其他方式 32027.7 使用 x的网络设备 32027.7.1 指定远程终端机—display 选项 32127.7.2 实际使用远程的显示器 32227.7.3 控制存取显示器—xhost 32227.8 终端机模拟器—详细介绍xterm 32327.8.1 选择xterm功能—菜单与 命令行选项 32327.8.2 滚动xterm屏幕 32427.8.3 记录与终端机的交互过程—写 记录 32527.8.4 剪贴文本 32527.8.5 使用Tektronix模拟功能 32627.8.6 使用不同的字体 32727.8.7 使用颜色 32727.8.8 其他xterm选项 32727.8.9 设定终端机键盘 328第28章 实用程序和工具 32928.1 实用程序 32928.2 保存、显示和打印屏幕图像 33028.3 使用X的应用程序 33228.3.1 文字编辑器—Xedit 33328.3.2 邮件/信息处理系统—xmh 33628.4 示例和游戏程序 33628.4.1 找出通过随机迷宫的 路径—maze 33628.4.2 担任鼠标指针的大眼睛— xeyes 33628.4.3 智慧盘游戏—puzzle 33728.4.4 打印一个大X标志—xlogo 33728.4.5 跳动的多面体—ico 33728.4.6 动态几何图案—muncher与 plaid 33728.7 显示信息和状态的程序 33728.7.1 列出X服务程序的特征— xdpyinfo 33828.7.2 获取有关窗口的信息 33828.7.3 观察X的事件—xev 340第29章 定制X Window系统 34129.1 使用X的字体和颜色 34129.1.1 字体初步 34129.1.2 字体命名 34229.1.3 观察特定字体的内容—xfd 34329.1.4 保存字体和位置 34329.1.5 例子:在你的服务程序中 增加新字体 34529.1.6 使用X的颜色 34629.2 定义和使用图形 34729.2.1 系统图形程序库 34729.2.2 交互编辑图形—bitmap 34729.2.3 编辑图形的其他方法 34929.2.4 定制根窗口—xsetroot 34929.3 定义应用程序的缺省选项— Resources 35029.3.1 什么是资源 35029.3.2 XToolkit 35129.3.3 管理资源—资源管理器 35329.3.4 资源的类型—如何指定值 35829.4 实际使用资源 35929.4.1 在何处保存资源的缺省值 35929.4.2 在服务程序上保存缺省值— xrdb 36329.4.3 常见的错误和修正 36629.5 定制键盘和鼠标 36729.5.1 实际使用转换 36829.5.2 转换—格式和规则 37429.5.3 转换规范中常见的问题 37729.6 键盘和鼠标—对应和参数 37929.6.1 键盘和鼠标映射—xmodmap 37929.6.2 键盘和鼠标参数设定—xset 38229.7 进一步介绍和定制uwm 38429.7.1 uwm的新特征 38429.7.2 定制uwm 38629.8 显示器管理器—xdm 39029.8.1 需要做些什么 39029.8.2 xdm 39129.8.3 xdm的更多信息 39229.8.4 uwm配置 395附录A Gcc使用介绍 396附录B 安装X Window窗口系统 410
上传时间: 2013-11-10
上传用户:changeboy
重大消息:完美NRF24L01+的代替面世了,SI24R1,它与NORDIC 的 NRF24L01+是完全兼容的(SPI 的操作时序,寄存器定义,工作状态 图),可以相互通信,支持NRF24L01+的所有通信功能。Si24R 完全 PIN 对PIN 替换NORDIC 的NRF24L01+ ,只要在原来焊NRF24L01P 的 位置上焊上SI24R1,就可以正常通信,SI24R1 还可以与NRF24L01P 相互通信,最大功率做到7DB,灵敏度更高,功耗更低,价格更廉. 为广大NORDIC 的用户节约了不少的生产成本!
上传时间: 2014-01-15
上传用户:ks201314
随着PCB设计复杂程度的不断提高,设计工程师对 EDA工具在交互性和处理复杂层次化设计功能的要求也越来越高。Cadence Design Systems, Inc. 作为世界第一的EDA工具供应商,在这些方面一直为用户提供业界领先的解决方案。在 Concept-HDL15.0中,这些功能又得到了大度地提升。首先,Concept-HDL15.0,提供了交互式全局属性修改删除,以及全局器件替换的图形化工作界面。在这些全新的工作环境中,用户可以在图纸,设计,工程不同的级别上对器件,以及器件/线网的属性进行全局性的编辑。
上传时间: 2013-11-19
上传用户:38553903210
今天我要和大家说的是capture 在查找和替换上做出的一些更新。在以前的版本中,我们只能查找一些和property values 相对应的内容。16.6 版本可以允许通过标准语法的表达式来查找更多的内容。同时也在查找窗口下加了2 个菜单。
标签: OrCAD_Capture_CIS Cadence 16.6 新功能
上传时间: 2013-10-18
上传用户:zhaiye
目录 C语言基础知识 C 语言简介 C 语言的特点… C 语言的发展和标准化…数据类型、运算、表达式和编译预处理 数据类型… 基本类型与数据表示 整数类型和整数的表示… 实数类型和实数的表示… 字符类型和字符的表示… 运算符、表达式与计算… 算术运算符 算术表达式 表达式的求值… 变量——概念、定义和使用… 变量的定义0 变量的使用:取值与赋值 预处理 文件包含命令… 宏定义与宏替换…逻辑判断与运算… 关系运算和逻辑运算 复杂条件的描述0 i f语句循环控制 whi le语句 for语句… 循环程序常用的若干机制 增量和减量运算符(++、--) 逗号运算符 控制结构和控制语句 do-while循环结构… 流程控制语句… goto语句… 开关语句…函数 概述… 函数定义和程序的函数分解… 函数定义… 函数调用…数组 数组的概念、定义和使用 数组变量定义… 数组的使用 数组的初始化…结构 结构(struct) 结构说明与变量定义 结构变量的初始化和使用 结构与函数 处理结构的函数0指针 指针的概念 指针操作… 指针作为函数的参数 与指针有关的一些问题… 指针与数组 指向数组元素的指针 基于指针运算的数组程序设计 数组参数与指针 字符指针与字符数组0
上传时间: 2013-11-16
上传用户:asdkin
安装方法: 1.查找你机器的“网络标识”(计算机名称)。方法是,鼠标在桌面上点 我的电脑--->属性(右键)--->计算机名--->完整的计算机名称,把名称抄下备用,不要最后那个“点”。 2.进入安装包内MAGNiTUDE文件夹,用记事本打开nx6.lic, 将第1行中的this_host用你机子的计算机名替换,例如我的机子完整的计算机名称NET 则改为SERVER NET ID=20080618 28000(原来为SERVER this_host ID=20080618 28000),改好后存盘备用。 首先你找到MAGNiTUDE下的UG6.LIC并用记事本打开,把里面的his_host改成你的计算机名,注意一个字母都不能错,然后另存一个地方,等会儿要用。接下来安装 1.双击打开Launch.exe 2. 选择第2项“Install License Server安装 3.在这里可以选择安装介面的语言。默认为中文简体。 4. 在安装过程中会提示你寻找license文件,点击NEXT会出错,这时使用浏览(Browse)来找到你刚才改过的那个LIC文件就可以了。继续安装直到结束,目录路径不要 改变,机器默认就行,(建议默认,也可放在其它的盘,但路径不能用中文)。 (可以先不进行括号中的内容,为了防止语言出现错误,建议运行DEMO32,然后选择文件类型为所有,找到你改过的LIC文件,再进行下面的步骤。) 5. 选择第2项“Install NX进行主程序安装。 6. 直接点击下一步。并选择典型方式安装,下一步,会出现语言选择画面,请选 择 Simplified Chinese(简体中文版),默认为英文版。按提示一步一步安装直到结束。 安装路 径可以改变。 7.打开MAGNiTUDE文件夹。 8. 进入MAGNiTUDE文件夹,把UGS\NX6.0文件夹的几个子文件夹复制到安装NX6.0主程序相应的目录 下,覆盖。假如安装到D:\Program Files\UGS\NX 6.0 把NX6.0文件夹内的所有文件夹复制到D:\Program Files\UGS\NX 6.0文件夹相应的文件 进行覆盖就可以。 9. 进入开始-程序-UGS NX6.0-NX6.0打开6.0程序。 注:如果打不开,请按以下步骤操作 进入开始-程序-UGS NX6.0-NX6.0许可程序,打开lmtools,启动服务程序。选择 Start/stop/reread,点一下Stop Server, 再点Start Server,最下面一行显示Server Start Successful. 就OK,然后打开桌面NX6.0。 经过我的实践,绝对可行!
上传时间: 2013-11-09
上传用户:qoovoop
UG8.0破解版下载地址_UG8.0安装教程 里面包含了,下载地址和视频教程安装 ug8.0安装方法 一、安装 1.将文件夹……\NX_8.0.0.25_Win64\NX_8.0.0.25_Win64_crack_SSQ\UGSLicensing中的NX8.0.lic复制到硬盘任意一个英文文件夹下面 2.用记事本打开NX8.0.lic,将第一行的“this_host”改成本记算机的名称如“LBDZ-20111018GA”保存备用 3.开始安装UG,双击运行Launch.exe 4.弹出NX8.0安装介面,先安装许可证文件 Install license Server,指定安装路径,下一步 5.指定使用许可证文件的路径指向第2步备用的NX8.0.lic,下一步,点安装……完成许可证安装 6.返回NX8.0安装介面,安装主程序 Install NX,安装类型选典型(安装所有程序),下一步 7.指定安装路径,下一步,下一步 8.NX语言选择 简体中文,下一点,点安装……完成NX安装 ug8.0安装方法 二、破解 1.在破解文件夹NX_8.0.0.25_Win64_crack_SSQ中找到DRAFTINGPLUS、NXCAE_EXTRAS、NXNASTRAN、NXPLOT、UGII这5个文件夹,将之替换到安装目录D:\Program Files\Siemens\NX 8.0\ 2.在破解文件夹UGSLicensing中找到ugslmd.exe文件,将之替换到许可证安装目录D:\Program Files (x86)\UGS\UGSLicensing ug8.0安装方法 三、配置许可许 1.点开始--程序--Siemens NX 8.0--NX许可工具--Lmtools,启动许可证服务器 2.点Config Services选项卡,如果只装有一个版本的UG默认设置即可,点Save Service保存服务,点是 3.然后点Start/Stop/Reread选项卡,(中间应该出现一个许可证服务器),勾选“Force Server Shutdown”, 4.选点Stop Server停止服务器,再点Start Server启动服务器,下面显示Server Start Successful表示启动成功,配置完毕 (如果装有其它版本的UG,配置过程稍有不同,第2步需要手动设置) ug8.0安装方法 四、启动UG8.0 OK!
上传时间: 2013-10-12
上传用户:athjac
Altium Designer 10是由Altium公司推出的一款开发软件,Altium Designer 10综合了电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案-一个既满足当前,也满足未来开发需求的解决方案。 Altium Designer10 为您带来了一个全新的管理元 Altium Designer release 10器件的方法。其中包括新的用途系统、修改管理、新的生命周期和审批制度、实时供应链管理等更多的新功能! Altium Designer 10安装流程: 安装完后复制 AD10.Crack 文件夹下文件到安装目录。 1.运行AD10KeyGen,点击“打开模板”,加载license.ini,如想修改注册名,只需修改:TransactorName=Your Name,其中Your Name用你自己的名字替换,其它参数在单机版的情况下无需修改; 2.点击“生成协议”,保存生成的alf文件(文件名任意,如“jack ”),并将其放到你的安装目录下; 3.将patch.exe放到你的安装目录下,运行patch,对安装目录下的dxp.exe文件补丁,注意运行破解时软件没有运行; 4.启动DXP,运行菜单DXP->My Account,点击Add Standalone License file,加载前面生成的license(.alf)文件后即能正常使用了。 资源是.bin格式的镜像文件,到网上下一个UltraISO打开后另存为iso或isz格式,用DAEMON Tools Lite虚拟光驱打开就能安装了。(或者安装一个快压打开) 安装提醒: 安装时有两个路径选择,第一个是安装主程序的;第二个是放置设计样例、元器件库文件、模板文件的,共3.3GB。如果你的C盘留的不够大,建议将3GB多的东西和主程序安装在一块儿。 安装完成后界面可能是英文的,如果想调出中文界面,则可以:DXP-->Preferences-->System-->General-->Localization--选中Use localized resources,保存设置后重新启动程序就有中文菜单了。 Altium Designer 10破解方法: 安装包里已经带有破解文件了,但没有AD10KeyGen这个文件,所以要把注册名改成自己的名字不方便。 1.运行AD10KeyGen,点击“打开模板”,加载license.ini,如想修改注册名,只需修改: TransactorName=Your Name 其中Your Name用你自己的名字替换,其它参数在单机版的情况下无需修改; 2.点击“生成协议”,保存生成的alf文件(文件名任意,如“jack ”),并将其放到你的安装目录下; 3.将patch.exe放到你的安装目录下,运行patch,对安装目录下的dxp.exe文件补丁,注意运行破解时软件没有运行; 4.启动DXP,运行菜单DXP->My Account,点击Add Standalone License file,加载前面生成的license(.alf)文件后即能正常使用了。 注意: 1.局域网内用同一license不再提示冲突 2.仅供学习研究使用,勿用于非法用途。 相关资料:altium designer 10 破解教程
上传时间: 2013-11-10
上传用户:叶立炫95
安装方法: 1.查找你机器的“网络标识”(计算机名称)。方法是,鼠标在桌面上点 我的电脑--->属性(右键)--->计算机名--->完整的计算机名称,把名称抄下备用,不要最后那个“点”。 2.进入安装包内MAGNiTUDE文件夹,用记事本打开nx6.lic, 将第1行中的this_host用你机子的计算机名替换,例如我的机子完整的计算机名称NET 则改为SERVER NET ID=20080618 28000(原来为SERVER this_host ID=20080618 28000),改好后存盘备用。 首先你找到MAGNiTUDE下的UG6.LIC并用记事本打开,把里面的his_host改成你的计算机名,注意一个字母都不能错,然后另存一个地方,等会儿要用。接下来安装 1.双击打开Launch.exe 2. 选择第2项“Install License Server安装 3.在这里可以选择安装介面的语言。默认为中文简体。 4. 在安装过程中会提示你寻找license文件,点击NEXT会出错,这时使用浏览(Browse)来找到你刚才改过的那个LIC文件就可以了。继续安装直到结束,目录路径不要 改变,机器默认就行,(建议默认,也可放在其它的盘,但路径不能用中文)。 (可以先不进行括号中的内容,为了防止语言出现错误,建议运行DEMO32,然后选择文件类型为所有,找到你改过的LIC文件,再进行下面的步骤。) 5. 选择第2项“Install NX进行主程序安装。 6. 直接点击下一步。并选择典型方式安装,下一步,会出现语言选择画面,请选 择 Simplified Chinese(简体中文版),默认为英文版。按提示一步一步安装直到结束。 安装路 径可以改变。 7.打开MAGNiTUDE文件夹。 8. 进入MAGNiTUDE文件夹,把UGS\NX6.0文件夹的几个子文件夹复制到安装NX6.0主程序相应的目录 下,覆盖。假如安装到D:\Program Files\UGS\NX 6.0 把NX6.0文件夹内的所有文件夹复制到D:\Program Files\UGS\NX 6.0文件夹相应的文件 进行覆盖就可以。 9. 进入开始-程序-UGS NX6.0-NX6.0打开6.0程序。 注:如果打不开,请按以下步骤操作 进入开始-程序-UGS NX6.0-NX6.0许可程序,打开lmtools,启动服务程序。选择 Start/stop/reread,点一下Stop Server, 再点Start Server,最下面一行显示Server Start Successful. 就OK,然后打开桌面NX6.0。 经过我的实践,绝对可行!
上传时间: 2013-11-12
上传用户:sjw920325