基于ARM9的车载导航系统的技术分

目 次

摘要 ……………………………………………………………………………………………… 3
1 嵌入式系统简介 …………………………………………………………………… 4
1.1 嵌入式系统 ……………………………………………………………………… 4
2 嵌入式车载导航系统及其中的关键技术 ………………………………………… 6
2.1 车载导航嵌入式系统 …………………………………………………………… 6
2.2 其他主要技术模块……………………………………………………………… 7
3 嵌入式车载导航系统软件平台设计 ……………………………………………… 8
3.1 嵌入式系统(软件)……………………………………………………………… 8
3.2 嵌入式Linux平台的建立 ……………………………………………………… 9
3 总结 ………………………………………………………………………………… 13
参考文献………………………………………………………………………………14

基于ARM9的车载导航系统的技术分析
摘要:随着时代的发展,汽车已经成为当今社会中必不可少的代步工具。嵌入式车载导航系统是集定位技术、地理信息技术、通信技术和嵌入式系统技术于一体,实时、高速地向驾驶员提供导航定位、地理信息等服务的一项技术。本文提出了一个将导航定位技术和嵌入式Linux 系统相结合,设计基于嵌入式Linux的车载导航系统的方案,在ARM9平台上移植嵌入式Linux 操作系统,然后基于此平台实现车载导航系统。在整个系统中,嵌入式Linux 操作系统是软件的运行平台,在车载导航系统中占有重要的地位。因此本文对导航系统的硬件平台及嵌入式Linux操作系统进行了重点研究。车载导航系统的基本原理我们不做过多介绍,重点介绍根据车载定位导航系统的要求设计系统架构,开发基于ARM9 (S3C2410A)的系统硬件平台;对于嵌入式Linux操作系统,详细介绍了Bootloader. Linux内核和设备驱动程序的开发过程,完成了U-Boot 移植、设备驱动程序的编写和内核的编译,嵌入式GUI程序设计实现了良好的人机交互界面。由于采用先进的基于ARM9-Linux平台的嵌入式系统设计,从而提高了系统的性能、集成度以及可扩展性,同时使得该系统具有功能强、功耗低、可靠性高等特点。
关键字:车载导航系统,GPS导航定位技术,ARM9平台,Linux 操作系统,Bootloader,人机交互。

1 嵌入式系统简介
嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,适用于应用系统,对功能、可靠性、成本、体积和功耗等方面有特殊要求的专用的计算机系统。该系统可以结合处理器的系统电路和专属软件,成为一个独立的系统或者更大的系统的一部分。
1.1 嵌入式系统
嵌入式系统与通用计算机系统的本质区别在于系统应用不同,嵌入式系统是将一个计算机系统嵌入到对象系统中。这个对象可能是庞大的机器,也可能是小巧的手持设备,用户并不关心这个计算机系统的存在。嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各行各业,它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。
1.1.1 嵌入式系统硬件结构
嵌入式系统一般包含嵌入式微处理器、外围硬件设备、嵌入式实时操作系统和用户的应用程序4个部分。任何嵌入式系统都包括硬件和软件两个方面。硬件包括微处理器、存储器、I/O端口和图形控制器。软件包括操作系统软件和应用软件,应用软件控制着嵌入式系统的运作和行为,而操作系统则为应用程序提供必要的底层支持。图1.1 给出了典型嵌入式硬件平台的组成。
图1-1 典型嵌入式硬件结构

1.1.2 嵌入式系统的发展趋势
随着嵌入式系统实时性要求的提高和软件规模的不断上升,实时多任务操作系统(RTOS)逐步成为国际嵌入式系统的主流。未来嵌入式系统的发展趋势将逐渐走向系统智能化、人机界面自然友好、规模化跨行业协作、进一步的网络支持、小尺寸、微功耗、低成本、物联网的应用等。
1.1.3 嵌入式系统应用领域
嵌入式系统看似深奥难懂,但已经广泛应用于各个领域,典型的应用产品有信息家电、家庭智能管理系统、POS网络及电子商务、工业控制、交通管理、环境工程与自然、机器人、手持设备,除了常见的生活方面,军事领域、航天领域等也得到了广泛的应用。嵌入式系统未来的发展形势将会越来越广泛。

2 嵌入式车载导航系统及其中的关键技术
车载电子设备在技术水平上的不断提高已经成为现代汽车发展的重要标志之而车载导航设备是其中重要组成部分。它要将数据通讯系统,影音娱乐系统,定位系统,电子控制系统实时显示出来,让用户得到充分的驾驶信息,以ARM及嵌入式操作系统为技术核心,为车辆驾驶者提供安全行驶所必需的路况、地理信息的车载导航系统目前正在全世界得到越来越广泛的应用,大大提高了用户驾驶体验与车辆运行的安全性。
2.1 车载导航嵌入式系统
2.1.1 车载导航嵌入式系统的发展情况
车载电子设备在技术水平上的不断提高已经成为现代汽车发展的重要标志之一,而车载导航设备是其中重要组成部分。它要将数据通讯系统,影音娱乐系统,定位系统,电子控制系统实时显示出来,让用户得到充分的驾驶信息,以ARM及嵌入式操作系统为技术核心,为车辆驾驶者提供安全行驶所必需的路况、地理信息的车载导航系统目前正在全世界得到越来越广泛的应用,大大提高了用户驾驶体验与车辆运行的安全性。
但目前市场上的车载导航系统多使用WinCE 作为操作系统,不仅软件使用价格昂贵,而且对硬件要求较高,运行速度偏慢。而嵌入式Linux操作系统,具有源码开放、易移植、模块化、资源丰富的优势,与WinCE 操作系统相比,使其成为车载导航系统的不二选择。
2.1.2 嵌入式处理器S3C2410A
嵌入式系统硬件结构的核心是嵌入式处理器,其作用是控制、辅助系统运行的硬件单元。
S3C2410A是韩国Sam Sung 公司的一款基于ARM920T 内核(内 部结构如图3.2所示)的16/32 位RISC 嵌入式微处理器,其内核频率可达200 ~266.MHz,片上资源非常丰富,可以简化外围电路设计,降低功耗。其低廉的价格、丰富的外设资源,使得这款CPU 得到了非常广泛的应用。它主要面向手持式设备以及高性价比、低功耗的应用。
2.1.3 嵌入式处理器具体细节
ARM9微处理器支持两种指令集:32位ARM指令集和16位Thumb指令集。ARM指令为32位的长度;Thumb指令集是ARM指令集的一个子集,是针对代码密度问题而提出的,它具有16位的代码宽度。处理器在执行ARM程序段时,ARM处理器处于ARM工作状态;处理器在执行Thumb程序段时,ARM处理器处于Thumb工作状态。
大端格式:在这种格式中,字数据的高字节存储在低地址中而字数据的低字节则存放在高地址中。
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
2.2 其他主要技术模块
2.2.1 GPS全球定位技术
GPS (Global Position System): 全球定位系统,它是美国从上世纪70年代开始研制,历时20年,耗资近200亿美元,于1994年全面建成的利用导航卫星进行测时和测距,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统.如今,GPS已经成为当今世界上最实用,也是应用最广泛的全球精密导航、指挥和调度系统。
2.2.2 GPRS网络结构及传输原理
GPRS是在原有的GSM网络中增加了两个节点: SGSN (Serving GPRS SuportNode, 服务CPRS节点)和GSs (Gateay GPRS SuprtNode,网关GPRS节点),SCSN 的主要作用就是记录车辆的当前位置信息,并在车辆和GGSN之间完成移动分组数据的发送和接收,GGSN主要是起网关作用,它可以和许多不同的数据网络连接。GCSN提供了GPRS网络与Internet的接口,而SGSN负责联系移动终端和GGSN.应此,一个完整的GPRS诵讯过程就是车载终端发出的数据先传至BSS (Base Station System基站系统),经由GPRS网络传至GGSN,通过GGSN接入Internet, 在Internet上依靠TCP协议传给上位机,终端接收数据的流程则与此相反,CPRS数据收发在网络层使用TCP/IP协议。

3 嵌入式车载导航系统软件平台设计
系统软件包括操作系统和设备驱动两部分。操作系统采用嵌入式Linux, 这种操作系统与硬件结合紧密,具有结构紧凑、体积微小、实时性强和高度伸缩性等优点。驱动程序用于驱动车载导航系统中的硬件设备。下面将以Embedded Linux 为中心,介绍Linux 系统的移植、设备驱动开发。
3.1 嵌入式系统(软件)
3.1.1引导程序BootLoader
一个嵌入式Linux系统从软件角度通常可以分为引导加载程序、Linux操作 系统内核、文件系统和用户应用程序四个层次。其中的引导加载程序是计算机系统加电后运行的第一段软件代码。引导加载程序包括固化在固件(firmware)中的Boot代码和BootLoader两大部分。
BootLoader的主要功能包括:(1)硬件设备初始化(CPU的主频、SDRAM、中断、串口等);(2) 内核启动参数;(3) 启动内核;(4) 与主机进行交互,从串口、USB口或者网络口下载映像文件,并可以对Flash等存储设备进行管理。
当前在嵌入式系统开发中,常用的 bootloader有Vivi和U-Boot两种。Vivi可用于ARM9处理器的引导。目前vivi只能利用串行通信为用户提供接口,支持基于S3C2410芯片UP-NETARM2410平台.上Linux内核的引导,结构简单,可以传递内核参数;U-Boot全称Universal Boot Loader,是遵循GPL协议的一个开放源码项目。U -Boot目前可支持PowerPC、ARM、 X86、 MIPS等体系结构的,上百种开发板,已经成为功能最多、灵活性最强并且开发最积极的开放源码BootLoader。U-Boot提供两种操作模式:启动加载模式和下载模式,并具有大型BootLoader的全部功能。
我们在系统的软件设计中采用的引导程序是韩国Mizi 公司开发的BootLoader----Vivi 。在嵌入式系统中,BootLoader 是高度依赖于硬件的,在嵌入式系统中建立一个通用的BootLoader 几乎是不可能,因此对于每一种特定的平台,都要移植一个BootLoader。可以说建立一个与平台配套的、易于使用的BootLoader ,是软件设计的关键一步。
3.1.2 Linux内核
Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
3.2 嵌入式Linux平台的建立
3.2.1 嵌入式Linux平台的建立
嵌入式Linux系统平台从软件角度看通常可以分为三个层次:引导程序(Bootloader):初始化硬件,引导加载Linux内核。Linux内核(Linux Kernel): 嵌入式定制内核及控制内核引导系统的参数。根文件系统(Root File System): 提供管理系统的各种配置文件。图3.1显示了一个装有Bootloader、 内核启动参数、内核映像以及根文件系统镜像的固态存储设备(FLASH)的空间分配结构图。
图3-1 Flash的空间分配结构图

3.2.2 交叉编译环境的建立
在满足系统稳定、安全、可靠的基础上,嵌入式产品的体积要尽可能小,从而不能够提供足够的资源供编译过程使用,因此,必须建立一种交叉编译的环境,即在高性能的宿主机上对即将运行于目标机上的程序进行编译,生成可在目标机上可以运行的代码格式,然后下载到目标机中运行。Linux 环境下使用GNU 工具完成编译、链接等过程,包括针对目标系统的编译器gcc、针对目标系统的二进制工具binuTIls 、针对目标系统的标准c 库glibc 和针对目标系统的Linux 内核头文件。
在linux 的根目录下,通过命令tar Ixvf cross-2.95.3.tar.bz2 进行解压缩,执行完毕之后在/usr/local/ 目录下自动生成arm/2.95.3 目录,进入2.93.3 目录下可以看到arm-linux 、bin、include 、lib 等各种目录,说明交叉编译工具安装完毕,编译环境已经建立起来了。
3.2.3 引导程序的移植
受嵌入式系统资源的限制,嵌入式系统的引导程序并不像PC 机上的引导程序一样是由BIOS 和位于硬盘MBR 中的引导程序组成,整个系统的引导加载任务主要是由一个称为BootLoader 的引导程序来完成的。BootLoader 是系统复位后首先要执行的代码,主要作用是初始化硬件设备、建立内存空间的映射等,将系统的软硬件环境带到一个合适的状态,从而为操作系统和应用程序的调用建立一个良好的环境。
针对本系统的引导程序移植的思路是找到一个与所设计的平台最相近的平台的BootLoader,然后根据所设计平台的硬件参数对BootLoader 进行修改,从而完成BootLoader 的移植。首先根据实际情况修改vivi 工程管理文件Makefile 文件中的相关参数,包括交叉编译器库和头文件路径,交叉编译开关选项设置,Linux 内核代码中的库和头文件路径等。然后根据硬件平台的参数修改相应的配置,如处理器时钟、存储器初始化、通用I/O 初始化等等。然后进行配置、编译生成可执行的代码。
3.2.4 内核的移植
由于嵌入式系统是针对特定应用的,而且资源有限,所以标准Linux 无法应用到嵌入式系统中,因此必须根据实际情况对Linux 进行裁剪、配置,从而产生一个适用的嵌入式Linux 操作系统。Linux 内核的移植包括获取源代码、修改设置、裁减配置和编译。
3.2.5 获取源代码
Linux 内核源代码一般都有专门的机构负责维护,我们可以从这些机构的网站上下载下来使用。
嵌入式系统的应用的针对性很强,从站点上下载下来的内核不可能包含针对所有嵌入式系统的代码,因此需要对代码进行修改设置,从而适合目标平台。一般包含下面几步。
① 编写与处理器相关的代码。主要包括时钟设置、中断设置、存储器分配及其他一些寄存器的设置等等,这些与HMS30C7202 处理器相关的代码放在/arch/arm/mach-s3c2440 目录下。
② 修改根目录下的工程管理文件Makefile ,指定所移植的硬件平台和交叉编译器的路径。
③ 修改/ arch/arm 目录下的工程管理文件Makefile ,指定内核运行的虚拟地址,修改该目录下的配置文件config.in,以便在执行配置命令时能够显示HMS30C7202 的相关信息。
④在/arch/arm/def-configs 目录下添加配置好的HMS30C7202 配置文件。在/arch/arm/boot/compressed 目录下添加处理器的初始化代码head-s3c2440.s 。
⑤ 修改/arch/arm/kernel 目录下的工程管理文件Makefile ,确定文件类型之间的依赖关系。
3.2.6 裁减配置及编译
修改完内核设置后,就可以对内核进行裁减配置及编译了,在配置中剪裁掉冗余的部分,使编译生成的最终的内核的映像文件代码量尽可能小。执行如下命令:

make menuconfig //进入配置菜单,选择处理器类型和所需要的各种外设、协议的支持等等, 包含了LCD 、触摸屏、串口、声音、EXT2、FAT 和JFFS2 文件系统以及TCPIP 协议的支持.

make dep //搜索Linux 编译输出与源代码之间的依赖关系,并生成依赖文件。

make zlmage //编译Linux 内核,生成压缩的内核映像文件zImage 。存放在/arch/arm/boot/ 目录下。

3.2.7 驱动程序的编写
驱动程序是操作系统内核和底层硬件之间的接口,驱动程序为应用程序屏蔽了硬件的细节,通过驱动程序,应用程序对硬件的操作可以像对普通的文件操作一样方便。驱动程序的主要作用是初始化和释放硬件设备,检测和处理硬件设备出现的问题,在应用程序、内核和底层硬件之间传输数据。
由于嵌入式系统是针对具体应用的,因此,应该根据具体的平台编写相应设备的驱动程序,以方便应用程序对底层硬件的访问。每一个系统调用都对应着file_operaTIons 结构的每一个成员,编写驱动程序主要是编写底层设备需要的各个操作函数并填充结构file_operaTIons ,该结构在/include/Linux/fs.h 文件中定义。
驱动程序通过设备名、主设备号和从设备号与具体的硬件相联系。驱动程序可以以动态或者静态方式加载到内核当中,在调试阶段,一般以动态的方式加载驱动程序,而在最终形成产品时,添加到内核当中,每次启动内核时自动加载。
3.2.7 根文件系统
一个嵌入式产品的稳定运行,除了引导程序、内核之外,还必须有一个区域用来为用户提供支持架构和用户使用的应用软件,存放数据读写的结果,这个区域就是根文件系统。嵌入式系统中通常使用的根文件系统有:Romfs 、Cramfs 、Ramfs 、JFFS2、EXT2 等,另外根文件系统既可以建立在RAMDISK 上,也可以建立在Flash 上,在RAMDISK 上建立根文件系统Cramfs 。

4 总结
本文针对嵌入式车载导航系统的应用背景和设计要求,分析了目前比较流行的各种嵌入式处理器体系结构和嵌入式操作系统,提出了ARM9+嵌入式Linux操作系统架构的整体设计方案。
实现了嵌入式Linux 操作系统在ARM9 平台上的移植。分析了引导程序(Bootloader)、设备驱动程序与内核之间的关系以及具体的开发过程,完成了Vivi的移植、设备驱动程序的编写和Linux内核的配置和编译。
将嵌入式Liuux 操作系统用于车载导航系统,是对传统的车辆导航系统的重大改进,成本大幅降低,同时利用Linux 系统的多线程技术,可以解决系统中多个任务并行处理的问题,保障了系统的稳定性、可靠性,提高了系统的运行速度。

参 考 文 献

[1] 管素清,刘捷.嵌入式车载导标系统系统的设计[J].计算机工程与设计,2005.26(5): 1320-1322
[2] 王晓宁.基于ARM车载导航系统的研究与分析[D].燕山大学,2010
[3] 唐良宝,柏子刚.基于ARM9-Linux平台的车载导航系统设计.微计算机信息, 2009(25):01~02
[4] 李秀娟,张晓东,于心俊. 嵌入式系统设计. 机械工业出版社,2013,8
[5] 于明.ARM9嵌入式系统设计与开发教程.电子工业出版社,2006,4
[6] 张德营,王喆, 张晓艳.基于嵌入式技术的车载导航系统的研究.电子元器件资讯,2010(7)
[7] 杨殿阁.车载导航系统的研究与实现.汽车技术2005(01)
[8] 翟战强,蔡少华.基于GPRS/GPS/GIS的车辆导航与监控系统.测绘通报.2004 (02)
[9] 李欣,俞斌.一种改进的地图匹配技术在车载导航系统中的应用[J].电子测试,2008(5):60-65
[10] 黄帅.嵌入式车载导航的设计和实现.微计算机信息.2008(10):284-285
[11] 周立功. ARM& WinCE实验与实践:基于S3C2410[M].北京:北京航空航天大学出版杜,2007
[12] (印度)Kamal R.嵌人式系统:体系结构、编程设计[M].陈曙晖,等译.北京:清华大学出版社,2005.

基于ARM9的车载导航系统的技术分析相关推荐

  1. android导航实现方法研究现状,地图匹配算法设计 - 基于Android的车载导航系统的研究与设计...

    3.2 地图匹配算法设计 地图匹配以某个车辆位置点或某段车行轨迹曲线作为待匹配样本,以该点或该轨迹曲线附近的所有道路上的位置点或道路曲线作为模板,通过待匹配样本或模板间的匹配,选择相似度最高的匹配样本 ...

  2. php关键技术,基于Apache+MySQL+PHP的关键技术分析

    中国电化教育 总 期 口 穆荣军 开发平台的选择 开发平台的选择有多种开发工具的组合 操作系统 网络数据库编程软件 脚本开发工具 支持网络教育平台的模块化开发 . 其中以技术颇具代表性 . 开发平台是 ...

  3. android6.0系统车载航一,基于android的车载影音导航系统软件设计与实现-计算机应用技术专业论文.docx...

    基于android的车载影音导航系统软件设计与实现-计算机应用技术专业论文 西南科技大学硕士研究生学位论文 西南科技大学硕士研究生学位论文第1页 摘要 经过对车载影音/导航综合系统在国内外行业以及高校 ...

  4. linux 车载视频监控,基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文.docx...

    基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文 目录 HYPERLINK \l "_bookmark0" 第一章 绪论1 HYPERLINK \l "_ ...

  5. 实战:基于技术分析的Python算法交易

    译者 | Tianyu 出品 | AI科技大本营(ID:rgznai100) 本文是用 Python 做交易策略回测系列文章的第四篇.上个部分介绍了以下几个方面内容: 介绍了 zipline 回测框架 ...

  6. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...

    基于Java语言开发的个性化股票分析技术:移动平均线(MA) 基于 Java 语言开发的个性化股票分析技术:移动平均线(MA)移动平均线(MA)是以道·琼斯的"平均成本概念"为理论 ...

  7. AI开发者大会之计算机视觉技术实践与应用:2020年7月3日《如何利用计算机视觉增加便利店连锁每日销售额》、《基于图像 / 视频的人脸和人体分析基础技术及其应用介绍》

    AI开发者大会之计算机视觉技术实践与应用:2020年7月3日<如何利用计算机视觉增加便利店连锁每日销售额>.<基于图像 / 视频的人脸和人体分析基础技术及其应用介绍>.< ...

  8. java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc

    基于Java语言开发的个性化股票分析技术:随机指数(KDJ) KDJ指标又叫随机指标,是由乔治·蓝恩博士(GeorgeLane)最早提出的,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析 ...

  9. 解读:基于订单流、技术分析与神经网络的期货短期走势预测模型

    写在前面 下面这篇文章的内容主要是来自发表于TechRxiv 的一篇Preprint文章<Order Flow, Technical Analysis And Neural Network: P ...

最新文章

  1. 【AI】caffe源码分析(一)
  2. 【教程】TestComplete测试桌面应用程序教程(四)
  3. fastqc检验时不能执行java_利用fastqc检测原始序列的质量
  4. python上机实验报告读取文件_Python程序设计实验报告八 : 文件
  5. 概率分布函数的关系框架
  6. AI:2020年6月21日北京智源大会演讲分享之15:15-15:40黄萱菁教授《自然语言处理中的表示学习》
  7. 为什么剩余数不能相加_行测备考:如何快解数量关系中的剩余定理
  8. 变量声明和函数声明的意义详解
  9. BZOJ3038 上帝造题的七分钟
  10. 计算机涉及数学知识点,初二数学知识点归纳
  11. 不要给a设置outline:none
  12. html 实时预览在线,用HTML+CSS做一个实时预览的markdown编辑器
  13. 实用教程丨官方下载Oracle各版本安装软件及补丁包
  14. response 200是什么意思 python_鹿晨晖一组做了200次坐姿腿屈伸,他什么意思?
  15. Matlab使用过程中内存不足问题的总结(修改)
  16. 计算机组成原理r型指令logisim实现_全国计算机二级MS office选择题增分速记宝典!...
  17. SpringBoot工程中,如果不继承spring-boot-starter-parent ,还可以怎么做到的版本管理?
  18. 指标赋权与评价类方法总结
  19. SpringBoot 系列教程(九十一):SpringBoot+Redis生成图片验证码并校验
  20. LoadRunner11代理在Win10操作系统启动不起来,或者报错:该内存不能为written

热门文章

  1. 破局者DFINITY
  2. QLineEdit 设置为不可编辑
  3. 一篇搞懂cache的命中率
  4. Unity项目中不显示手柄
  5. 为什么计算机能听懂人的指令,计算机能听懂我们在说什么吗?
  6. IDEA彻底删除一个项目
  7. UDS的CAN刷新软件
  8. mysql认证考试 含金量_计算机二级证书含金量有多高?你真的知道吗?
  9. layui -- loading实现加载中效果
  10. 学校购买计算机的请示,学校购买办公用品的请示