linux-ecos

Linux下建立ecos开发环境
本文链接:/s/blog_574d08530100f5rf.html
在装好后的Linux系统(此处使用的是Fedora 10)后,开始准备建立ecos 的开发环境
1.下载安装tcl/tk工具(linux是fedora10的可以省略这一步,其他系统就不清楚了)
方法见我的博客《tcl/tk的安装》,或者google搜索相关的方法也可以
地址:/s/blog_574d08530100f5n4.html
2.根据ECOS网站/getstart.html的页面说面:
Developers wishing to use the pre-built eCos host tools on a Linux host must first ensure that they have libstdc++ v3 (/usr/lib/libstdc++.so.5) installed.
先安装:libstdc++ v3
以root身份登录超级终端,输入以下命令行
yum install compat-libstdc++-33(因为我是Fedora)
3.libstdc++ v3 安装完成后,输入以下命令行
cd /opt(opt文件夹是我准备放安装ecos开发环境的文件夹)
wget --passive-ftp
ftp:///pub/ecos/ecos-install.tcl(输入
这条命令后,可能会出现wget:unable to resolve host
address''这样的反馈信息,这说明你的虚拟机没有
连上你要下载ecos的站点,多试几次就可以了)
成功后继续输入命令
sh ecos-install.tcl (现在知道为什么要安装tcl/tk了吧)
4.连接成功后,会出现如下图,你准备下载的ECOS站点(总共有25个推荐的站点,一个一个试吧,总有一个站点是你能够下载安装的。

我选的是【20】因为看起来像是台湾的站点)
5.接下来是选择交叉编译工具,我用的板子是STM3210E,根据ECOS站点说明,使用的是arm-eabi,于是我就输入了1,然后再输入q。

不同的板子交叉编译工具不同,要根据具体你使用的板子来选择交叉编译工具,相关说明自己查看ecos的站点说明。

下图是我选交叉编译工具的画面
6.接下在看到的是如下画面,是进行ecos3.0的下载,看到installation complete!就完成了
7.安装ECOS包
cd /opt/ecos
./ecosenv.sh
8.设置环境变量(此处环境变量只是临时设置,关闭了终端后重新开启,会失效的,因为作为新手临时设置环境变量时安全的。

如果熟悉了环境变量后想永久设置环境变量请参看结尾处《一些说明》里面的第4条)
# ECOS_REPOSITORY=/opt/ecos/ecos-3.0/packages ; export ECOS_REPOSITORY
# PATH=/opt/ecos/gnutools/arm-eabi/bin:$PATH ; export PATH
# PATH=/opt/ecos/ecos/ecos-3.0/tools/bin:$PATH ; export PATH
(如果你想验证你的环境变量是否设置正确,可以输入以下命令
arm-eabi-gcc --version
configtool --version
如果输入以上命令有版本相关的说明,就说明环境变量输入正确了)
9.设置图形配置工具configtool
cd /opt/ecos/ecos-3.0/tools/bin
configtool
就会看到下图的configtool的图形化界面
一切都OK了,终于结束了。

一些说明:
1.第3步的时候如果你不是fedora系统而是其他Linux系统,那么你输入的就不是
yum install compat-libstdc++-33
具体是什么请参看/getstart.html
例如:
openSUSE: zypper install libstdc++33
Ubuntu: apt-get install libstdc++5
2.如果中途出现configure aproxy?[Y/n]
请输入n
出现这个说明你下载安装的站点链接断了,输入n后你必须重新选择一个对你有效地链接,慢慢试试吧,有25个呢!
3.configtool的一些设置
Build->Repository->/opt/ecos/ecos-3.0
Tools->Paths->Build Tools->/opt/ecos/guntools
Tools->Paths->Usr Tools->/bin
4.永久设置环境变量
所参考的文献是参考文章5.以root身份登录超级终端,输入命令如下:
vi /etc/profile
i
在文本末尾加上以下3行语句
export PATH="$PATH:/opt/ecos/ecos-3.0/tools/bin"(在已有的PATH环境变量里面加入新的环境变量)
export PATH="$PATH:/opt/ecos/gnutools/arm-eabi/bin"
export EC0S_REPOSITORY="$ECOS_REPOSITORY/opt/ecos/ecos-3.0/package"(新建的环境变量)
按ESC键,输入冒号(shift+:键)
wq
结束了
注销后,才会生效。

通过echo $PATH
echo $ECOS_REPOSITORY
这两个命令查看是否将要修改的环境变量写入进去了
参考文章
1. /techinfo_redsetup.asp
2. /Linux/2009-06/20530.htm
3. /u/27817/showart_46904
4.html
4. /light/showentry=54052
5./her02008/blog/item/b901672e8e19e4584fc2269e.htm l(永久设置环境变量)。

合集下载

嵌入式系统设计-BSP编程

嵌入式系统设计-BSP编程
12
Blob
其基本功能为: 初始化硬件(CPU速度,存储器,中断,RS232串口) 引导Linux内核并提供ramdisk 给LART下载一个内核或者ramdisk 给FLASH片更新内核或者ramdisk 测定存储配置并通知内核 给内核提供一个命令行 Blob功能比较齐全,代码较少,比较适合做修改移植,用来引导 Liunx,目前大部分S3C44B0板都用Blob修改移植后来加载 uClinux。
15
Bootloader代码是芯片复位后进入操作系统之前执行 的一段代码,主要用于完成由硬件启动到操作系统 启动的过渡,从而为操作系统提供基本的运行环境, 如初始化CPU、 堆栈、存储器系统等。Bootloader 代码与CPU 芯片的内核结构、具体型号、应用系统 的配置及使用的操作系统等因素有关,其功能类似 于PC机的BIOS程序。由于Bootloader和CPU及电 路板的配置情况有关,因此不可能有通用的 bootloader ,开发时需要用户根据具体情况进行移 植。
4



BOOTLOADER两种启动方式
一种是可以直接从 Flash 启动。 另一种是可以将压缩的内存映像文件从 Flash(为 节省 Flash 资源、提高速度)中复制、解压到 RAM, 再从 RAM 启动。 当电源打开时,一般的系统会去执行 ROM(应 用较多的是 Flash)里面的启动代码。这些代码是 用汇编语言编写的,其主要作用在于初始化 CPU 和 板上的必备硬件如内存、中断控制器等。有时候用 户还必须根据自己板子的硬件资源情况做适当的调 整与修改。
6
Redboot
Redboot支持的处理器构架有ARM,MIPS,MN10300,PowerPC, Renesas SHx, v850,x86等,是一个完善的嵌入式系统Boot Loader。 Redboot是在ECOS的基础上剥离出来的,继承了ECOS的简洁、轻巧、可灵活配置、 稳定可靠等品质优点。它可以使用X-modem或Y-modem协议经由串口下载,也可 以经由以太网口通过BOOTP/DHCP服务获得IP参数,使用TFTP方式下载程序映像文 件,常用于调试支持和系统初始化(Flash下载更新和网络启动)。Redboot可以通 过串口和以太网口与GDB进行通信,调试应用程序,甚至能中断被GDB运行的应用 程序。Redboot为管理FLASH映像,映像下载,Redboot配置以及其他如串口、以 太网口提供了一个交互式命令行接口,自动启动后,REDBOOT用来从TFTP服务器 或者从Flash下载映像文件加载系统的引导脚本文件保存在Flash上。当前支持单板机 的移植版特性有: 支持ECOS,Linux操作系统引导 在线读写Flash 支持串行口kermit,S-record下载代码 监控(minitor)命令集:读写I/O,内存,寄存器、 内存、外设测试功能等 Redboot是标准的嵌入式调试和引导解决方案,支持几乎所有的处理器构架以及大量 的外围硬件接口,并且还在不断地完善过程中。

天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发

天津科技大学嵌入式操作系统---第3章 基于linux的嵌入式软件开发
3.1.1 嵌入式软件体系结构 3.1.2 基于Linux的嵌入式软件
18:19
4
3.1.1 嵌入式软件体系结构
18:19
5
1. 设备驱动层
设备驱动层是嵌入式系统中必不可少的重 要部分,使用任何外部设备都需要有相应 驱动程序的支持,它为上层软件提供了设 备的操作接口。 上层软件不用理会设备的具体内部操作, 只需调用驱动层程序提供的接口即可。 驱动层一般包括硬件抽象层HAL、板级支 持包BSP和设备驱动程序。
18
3.2.2 基于开发板的二次开发
所谓二次开发是利用现成的开发板进行开发,不同于通用 计算机和工作站上的软件开发工程,一个嵌入式软件的开 发过程具有很多特点和不确定性。其中最重要的一点是软 件跟硬件的紧密耦合特性。 由于嵌入式系统的灵活性和多样性,这样就给软件设计人 员带来了极大地困难。第一,在软件设计过程中过多地考 虑硬件,给开发和调试都带来了很多不便;第二,如果所 有的软件工作都需要在硬件平台就绪之后进行,自然就延 长了整个的系统开发周期。这些都是应该从方法上加以改 进和避免的问题。 为了解决这个问题,通常的做法是基于某种开发板做二次 开发,从这个角度看,硬件开发所占的比重不到20%,而 软件开发的比重占到了80%。
3.1 嵌入式软件结构 3.2 嵌入式软件开发流程 3.3 嵌入式linux开发环境 3.4 嵌入式系统引导代码 3.5 linux内核结构及移植 3.6 嵌入式文件系统及移植 3.7 linux设备驱动概述 3.8 设备驱动程序接口 3.9 linux设备驱动开发流程
18:19 3
3.1 嵌入式软件结构
?在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器在嵌入式开发中经常要面对设备驱动程序的开发嵌入式系统通常有许多设备用于与用户交互象触摸屏小键盘滚动轮传感器rs232接口lcd等等

linux高斯数据库启动语句

linux高斯数据库启动语句

linux高斯数据库启动语句启动高斯数据库的命令通常是在命令行界面中执行的。

具体的命令可能会因数据库版本和配置的不同而有所差异,但一般来说,启动高斯数据库的命令类似于以下格式:css复制代码oef -tstart其中,oef是用于管理高斯数据库的命令行工具,-t参数表示要执行的操作类型,start表示启动数据库。

请注意,具体的命令可能因高斯数据库的版本和配置而有所不同。

建议查阅高斯数据库的官方文档或联系技术支持以获取更准确的命令和操作指南。

在启动高斯数据库时,有以下几点注意事项:1.环境检查:确保操作系统环境满足高斯数据库的最低要求,包括内存、磁盘空间、操作系统版本等。

2.配置文件检查:确保数据库的配置文件(如gauss_storage.conf)设置正确,包括数据库存储路径、端口号等。

3.端口冲突:确保数据库使用的端口没有被其他程序占用。

4.日志文件:检查日志文件,如errorlog和serverlog,以获取启动过程中的任何错误或警告信息。

5.数据完整性:如果数据库在之前有非正常关闭或数据损坏的情况,启动时应检查数据完整性。

6.参数设置:某些参数设置可能影响启动过程,如最大连接数、内存分配等。

根据实际需求和系统资源合理配置这些参数。

7.安全性:确保数据库的安全性设置满足要求,如用户权限、防火墙设置等。

8.依赖服务:确保所有高斯数据库依赖的服务(如PostgreSQL、GEOS等)都已正确安装和配置。

9.文档支持:如果遇到问题,建议查阅高斯数据库的官方文档或联系技术支持获取帮助。

10.测试:在生产环境之前,建议在测试环境中先进行启动和配置测试,以确保一切正常。

遵循这些注意事项可以帮助您顺利启动高斯数据库,并确保其稳定运行。

嵌入式系统结课论文

嵌入式系统结课论文

目录1 什么是嵌入式系统? (2)2 嵌入式处理器的分类与特点 (3)3 ARM9支持哪两种指令集 (5)4 什么是大端存储和小端存储? (5)5 bootloader的介绍 (6)6 嵌入式操作系统与通用操作系统相比有何不同? (7)8 嵌入式Linux的开发流程包括哪些步骤? (8)9 嵌入式系统的图形用户接口设计软件 (10)参考文献 (12)1 什么是嵌入式系统?1、1嵌入式系统概念嵌入式系统是计算机的一种应用形式,通常指嵌入在宿主设备中的微处理机系统。

它所强调的是隐藏计算机的常见形式,辅助寄宿主设备,使宿主设备的功能智能化。

据此,通常把嵌入式系统定义为一种以应用为中心,以计算机为基础,软硬件可以剪裁,适用于系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

1、2 嵌入式系统发展趋势系统化嵌入式应用软件的开发需要强大的开发工具和操作系统的支持。

随着互联网技术的成熟、带宽的提高,网上信息日趋丰富,应用项目多种多样,像手机、掌上电脑等嵌入式设备的功能不再单一,电气结构也更为复杂。

为了满足功能的不断升级,设计师一方面要采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力;同时还要采用实时多任务编程技术和交叉开发工具技术,简化应用程序设计,保障软件质量和缩短开发周期。

目前,国外商品化的嵌入式实时操作系统,已进入我国市场的有Windriver,Microsoft,QNX和Nuclear等。

开源化随着嵌入式Linux系统的产生,越来越多的嵌入式产品采用开源嵌入式操作体统。

由于Linux系统本身所具备的特点,使得开源嵌入式操作系统很容易推广并且得到不断的完善。

相信不久的将来,开源的完善的嵌入式系统会在嵌入式系统应用中占据更重要的地位。

人性化嵌入式设备之所以为亿万用户乐于接受,原因是它们具有与使用者之间的亲和力和自然的人机交互界面。

人们与信息终端交互要求以GUI屏幕为中心的多媒体界面。

实时操作系统RTOS培训

实时操作系统RTOS培训

可重入性(Reentrancy )
可重入型函数可以被一个以上的任务调 用,而不必担心数据的破坏 可重入型函数任何时候都可以被中断, 一段时间以后又可以运行 编写可重入型函数需遵循的规则:
使用局部变量,即变量保存在CPU寄存器或堆栈中 尽量不使用static或extern变量
任务优先级
每个任务都有其优先级。任务越重要, 赋予的优先级应越高
嵌入式系统
嵌入式系统通常都是实时系统,其特征为
系统的正确性不但依赖于运行逻辑结果 的正确性,而且依赖于得到结果所花费的 时间
系统对于各种外部输入在预定时间内能 得到可以预测的结果
嵌入式系统通常使用RTOS,其特征为
在不同的系统负载下,行为可以预测 支持基于优先级的调度 MEMORY模型对于RTOS的性能十分重
主要的嵌入式实时操作系统
VxWorks
使用最广、市场占有率最高的嵌入式实时操作系统,美国WindRiver 公司产品
VRTX
老牌嵌入式实时操作系统
pSOS
ISI公司推出,现已被WindRiver公司收购
WinCE
Microsoft公司推出,实时性不太好,主要用于掌上系统
Palm OS
3Com公司推出,在PDA市场占有很大份额
一个信号量是一个16位变量,初值为 0~65535,值为0表示资源处于锁住状态, 非0表示有多个资源,供多个任务访问 信号量表示符号:钥匙或旗帜
信号量的P、V操作
等待信号量( P操作):
如果信号量值大于0,则 信号量值减1,任务得以 继续运行
如果信号量的值为0,等 待信号量的任务被挂起并 列入等待信号量任务表
任务状态变迁图
WAITING
DORMANT

什么是嵌入式操作系统 常见的嵌入式系统有哪些

什么是嵌入式操作系统 常见的嵌入式系统有哪些

什么是嵌入式操作系统常见的嵌入式系统有哪些
常见的嵌入式系统:
Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-
II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C ExecuTIve
什幺是嵌入式操作系统
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统的重要组成部分。

嵌入时操作系统具有通用操作系统的基本特点,能够有效管理复杂的系统资源,并且把硬件虚拟化。

传统定义(狭义嵌入式):嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

当前客观定义(泛嵌入式):除PC之外的一切计算机系统都可以叫嵌入式系统。

典型代表:智能手机、工业机器人、汽车电子、航空航天(四。

嵌入式操作系统的分类

嵌入式操作系统的分类关于嵌入式操作系统的分类常见的嵌入式系统有Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、CExecutive。

下面店铺为您带来关于嵌入式操作系统的分类,欢迎阅读!嵌入式操作系统的分类篇1第一类、传统的经典RTOS:最主要的便是Vxworks操作系统,以及其Tornado开发平台。

Vxworks因出现稍早,实时性很强(据说可在1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。

特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。

Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。

像Bell-alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。

但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。

目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。

但无论如何,Vxworks 在一段长时间内仍是不可动摇的。

与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。

第二类、嵌入式Linux操作系统:Linux的前途除作为服务器操作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。

Linux本身不是一个为嵌入式设计的操作系统,不是微内核的,并且实时性不强。

目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的Linux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在ARM9上的,一般是将Linux2.4.18内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM9上)。

Linux操作系统修改内核参数的三种方法详细说明

Linux操作系统修改内核参数的三种方法详细说明linux内核的参数设置怎么弄呢,Linux 操作系统修改内核参数有以下三种方式:修改 /etc/sysctl.conf 文件;在文件中加入配置项,格式为 key = value,保存修改后的文件,执行命令 sysctl -p 加载新配置。

使用 sysctl 命令临时修改;如:sysctl -w net.ipv4.tcp_mem = “379008 505344 758016”直接修改/proc/sys/ 目录中的文件。

如:echo “379008 505344 758016” 》 /proc/sys/net/ipv4/tcp_mem 注意:第一种方式在重启操作系统后自动永久生效;第二种和第三种方式在重启后失效。

内核参数kernel.core_uses_pi d = 1core_uses_pid 可以控制 core 文件的文件名中是否添加 pid 作为扩展名。

设置为1,表示添加 pid 作为扩展名,生成的 core 文件格式为core.xxx;设置为0(默认),表示生成的 core 文件统一命名为 core。

kernel.core_pat te rn = corecore_pattern 可以控制 core 文件的保存位置和文件格式。

如:kernel.core_pattern = “/corefile/core-%e-%p-%t”,表示将core 文件统一生成到 /corefile 目录下,产生的文件名为 core-命令名-pid-时间戳。

以下是参数列表:%p - insert pid into filename 添加 pid%u - insert current uid into filename 添加当前 uid%g - insert current gid into filename 添加当前 gid%s - insert signal that caused the coredump into the filename 添加导致产生 core 的信号%t - insert UNIX ti me that the coredump occurred into filename 添加 core 文件生成时的 unix 时间%h - insert hostname where the coredump happened into filename 添加主机名%e - insert coredumping executable name into filename 添加命令名kernel.msgmax = 8192进程间的消息传递是在内核的内存中进行的。

linux给运行程序指定动态库路径

linux给运⾏程序指定动态库路径1. 连接和运⾏时库⽂件搜索路径到设置库⽂件在连接(静态库和共享库)和运⾏(仅限于使⽤共享库的程序)时被使⽤,其搜索路径是在系统中进⾏设置的。

⼀般 Linux 系统把 /lib 和 /usr/lib 两个⽬录作为默认的库搜索路径【deepin可以在⾥⾯搜索出qt,因为deepin默认安装了qt程序运⾏依赖库】,所以使⽤这两个⽬录中的库时不需要进⾏设置搜索路径即可直接使⽤。

对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。

设置库⽂件的搜索路径有下列两种⽅式,可任选其⼀使⽤:(1). 在 /etc/ld.so.conf ⽂件中添加库的搜索路径。

(或者在/etc/ld.so.conf.d 下新建⼀个.conf⽂件,将搜索路径⼀⾏⼀个加⼊-junziyang)将⾃⼰可能存放库⽂件的路径都加⼊到/etc /ld.so.conf中是明智的选择添加⽅法也极其简单,将库⽂件的绝对路径直接写进去就OK了,⼀⾏⼀个。

例如:/usr/X11R6/lib/usr/local/lib/opt/lib需要注意的是:这种搜索路径的设置⽅式对于程序连接时的库(包括共享库和静态库)的定位已经⾜够了,但是对于使⽤了共享库的程序的执⾏还是不够的。

这是因为为了加快程序执⾏时对共享库的定位速度,避免使⽤搜索路径查找共享库的低效率,所以是直接读取库列表⽂件 /etc/ld.so.cache 从中进⾏搜索的。

/etc/ld.so.cache 是⼀个⾮⽂本的数据⽂件,不能直接编辑,它是根据 /etc/ld.so.conf 中设置的搜索路径由 /sbin/ldconfig 命令将这些搜索路径下的共享库⽂件集中在⼀起⽽⽣成的(ldconfig 命令要以 root 权限执⾏)。

因此,为了保证程序执⾏时对库的定位,在 /etc/ld.so.conf 中进⾏了库搜索路径的设置之后,还必须要运⾏/sbin/ldconfig 命令更新 /etc/ld.so.cache ⽂件之后才可以。

第七章-数据结构教程(Java语言描述)-李春葆-清华大学出版社


第二阶段通常用C语言完成,以便实现更复杂的功能, 也使程序有更好的可读性和可移植性。这个阶段的任 务有: 初始化本阶段要使用到的硬件设备。 检测系统内存映射。 将内核映像和根文件系统映像从Flash读到RAM。 为内核设置启动参数。 调用内核。
ห้องสมุดไป่ตู้
7.1.4常见的BootLoader
(1)Redboot Redboot (Red Hat Embedded Debug and Bootstrap)是Red Hat公司开发的一个独立运行在嵌入式系统上的BootLoader程序, 是目前比较流行的一个功能、可移植性好的BootLoader。 Redboot是一个采用eCos开发环境开发的应用程序,并采用了 eCos的硬件抽象层作为基础,但它完全可以摆脱eCos环境运行, 可以用来引导任何其他的嵌入式操作系统,如Linux、Windows CE等。
BootLoader是嵌入式系统在加电后执行的第一段代码, 在它完成CPU和相关硬件的初始化之后,再将操作系 统映像或固化的嵌入式应用程序装载到内存中然后跳 转到操作系统所在的空间,启动操作系统运行。
对于嵌入式系统而言,BootLoader是基于特定硬件平 台来实现的。因此,几乎不可能为所有的嵌入式系统 建立一个通用的BootLoader,不同的处理器架构都有 不同的BootLoader。
第7章 嵌入式Linux系统移植及调试
目录
7.1 Boot Loader基本概念与典型结构 7.2 U-Boot 7.3 交叉开发环境的建立 7.4 交叉编译工具链 7.5 嵌入式Linux系统移植过程 7.6 Gdb调试器 7.7 远程调试 7.8 内核调试
一个嵌入式linux系统通常由引导程序及参数、 linux内核、文件系统和用户应用程序组成。 由于嵌入式系统与开发主机运行的环境不同, 这就为开发嵌入式系统提出了开发环境特殊化 的要求。交叉开发环境正是在这种背景下应运 而生。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档