第7期——与行工前辈一起畅谈DSP
与行工前辈一起畅谈DSP
高手问答第7期
小编导读:
本期高手问答(8月11日-8月18日),我们请来了行工@michael_xing 为大家解答有关DSP的问题。
行工简介:
michael_xing就是行江涛前辈,大家应该不陌生,经常在论坛解答问题,是DSP的技术牛人。
行工2008年于西安电子科技大学硕士毕业,毕业之后一直在DSP领域进行研究和开发。曾经任职于美国3DSP公司的嵌入式软件开发职位,中兴通讯的系统软件开发职位等,主要负责系统仿真、DSP和MCU等嵌入式算法和控制开发。
?
- 假如你还在为DSP中的电路实现or系统研发理不清头绪呢?
- 假如你还在为DSP编程中的程序优化找不到更优的方法?
- 或许,你可以动动你的五指,按下enter键,跟帖提问,并@michael_xing ,我们的行工哟,maybe热心的行工就能给你把问题解决or指引一个方向!
同往常一样,我们的高手问答,还是回帖提问,记得同时@michael_xing
社区高手招募
不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区高手问答。
联系方式:pengjiali@elecfans.com。快来联系小编吧!
**************************************************************************
Elecfans高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。
************问答精华*****************************
往期回顾:
【高手问答】第10期—宋雪松老师l手把手教你学51单片机
【高手问答】第9期——张工带你玩转STM32问答
【高手问答】第8期——社区之星李工为你的ARM问题解惑
【高手问答】第7期——与行工前辈一起畅谈DSP
【高手问答】第6期—— 李工解答PCB设计
【高手问答】第5期——STM32硬件问答
【高手问答】第4期——与社区之星王工聊聊labview设计
【高手问答】第3期——走进硬件电路设计
【高手问答】第2期——阿东带你走进fpga的逻辑编程设计
【高手问答】第1期——朱兆琪在线解答单片机C语言编程
@michael_xing 请问前辈DSP TMS320F28232 是不是浮点型芯片?一个在28232上可以运行的程序,换成28335后程序不改动上是不是也可以跑?
烧写flash时提示如下错误,是锁死了么?请前辈给分析下什么原因引起的,三天锁三个,
C28xx: Flash Programmer: Error erasing Flash memory.
C28xx: Flash operation timed out waiting for the algorithm to complete. Operation cancelled.
C28xx: Trouble Writing Memory Block at 0x3f64fa on Page 0 of Length 0x12
Cannot write to target
在MAP中显示 CSM_PWL 003f7ff8 00000008 00000000 00000008 RWIX,密码位没被占用
。
@michael_xing 小弟完全未接触过音频编解码,最近因为需要了解了一下音频编解码的芯片,其中均集成了ADC和DAC,想请教一下行工,音频编解码与ADC和DAC是什么关系?(我理解是:ADC是编码的基础,DAC是解码的基础,解码其实就是将数字量经DAC后生成了模拟量在经运放等恢复音频,不知对否?)
@michael_xing
请问下,DSP2812怎么实现3路的模拟信号输出,而且该3路模拟信号是可控,可调的。
如果用SPI,怎么实现3路输出?
或者其他用PWM波然后再经过什么可以实现这样的功能?先谢谢前辈的指导了。
@michael_xing
当T1CTPRIP—PDPINTA口电平被拉至低电平后,PWM1-6没有PWM波形输出,如何设置能够使得当T1CTRIP-PDPINTA恢复成高电平后,继续产生PWM波形?求大神指导,我现在的状况是,一旦T1CTRIP-PDPINTA口在某一瞬间降为低电平,以后就算恢复成高电平也没有PWM输出了,只能再次上电复位@michael_xing 求大神指导
@michael_xing
自己写的一直进不去中断,关于PDPINT保护,中断pwm输出的程序。我写的程序是这样子的
使用的是evb的pdpintb中断
先是
GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5=1; //设置外设功能
GpioMuxRegs.GPDDIR.bit.GPIOD5=1; //设置为输出口
Ev中
EvbRegs.EXTCONB.bit.INDCOE=0;
EvbRegs.EVBIMRA.bit.PDPINTB=1;
EvbRegs.EVBIFRA.bit.PDPINTB=1;
主程序中
PieCtrl.PIEIER1.bit.INTx2=1; //pdpintb 中断
请问还缺少什么?
初步问题是 没开CPU的中断和外设的时钟时能
应加上
IER|=M_INT1; //开CPU中断1
SysCtrlRegs.PCLKCR.bit.EVBENCLK = 1; //使能EVB模块时钟
还有其它问题吗? 不知道问题出在哪里呢?希望能得到指导。谢谢前辈。
@michael_xing 大虾,我在调试DSP(6701)的时候,发现程序下到SDRAM内跑的时候,只能按INT型数据跑,如果按字节读写的时候就会乱。还有我调试时使用fopen,printf函数时,就会死机。我研究电路图发现,SDRAM是由两个16位宽的尔必达EDS5116ABTA拼接成32位。但是SDRAM的高16位和低16位UDQM和LDQM同时共用DSP的BE0和BE1,高16位的SDRAM没有接BE2和BE3。请教大虾,这是不是就是我出问题的原因?
通过dsp f2812 的gpioA组引脚采集一幅静态数字图像,采集后存储到外部存储单元sram中,该怎样设置gpio引脚,该怎样配置,摄像头用ov6620.@michael_xing 大虾求助
@michael_xing 最近在做DSP图像处理,需要将采集到的图像从YCrCb转换成RGB格式后,进行图像处理,再将RGB图像转换成YCrCb进行显示,下面是我的图像处理的程序,不知道为什么显示出来的结果总是一片黑,求大神指点。
void videoReverse()
{
int i,j,temp;
int r,g,b,y,cr,cb,pr,pg,pb;
Uint8 *Y,*Cr,*Cb;
for(i=intALines;i > 1) + j);
Cb=(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j);
y=(*Y);cr=(*Cr);cb=(*Cb);
y-=16;cr-=128;cb-=128;
r=1.164*y+1.596*cr;
g=1.164*y-0.813*cr-0.392*cb;
b=1.164*y+2.017*cb;
if ( r>255 ) r=255;
else if ( r 255 ) g=255;
else if ( g 255 ) b=255;
else if ( b 255 ) temp=255;
else if ( temp > 1) + j)=pb;
pr=abs(0.439*r-0.368*g-0.071*b+128);
*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j)=pg;
Y++;Cr++;Cb++;
}
}
for(i=numLines/2+intALines;i > 1) + j);
Cb=(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j);
y=(*Y);cr=(*Cr);cb=(*Cb);
y-=16;cr-=128;cb-=128;
r=1.164*y+1.596*cr;
g=1.164*y-0.813*cr-0.392*cb;
b=1.164*y+2.017*cb;
if ( r>255 ) r=255;
else if ( r 255 ) g=255;
else if ( g 255 ) b=255;
else if ( b 255 ) temp=255;
else if ( temp > 1) + j)=pb;
pr=abs(0.439*r-0.368*g-0.071*b+128);
*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j)=pg;
Y++;Cr++;Cb++;
}
}
}
求助@michael_xing 大侠下面这段程序中的void image_projecting ()函数该如何进行优化呢?进行线性汇编的话该如何进行代码修改呢?
* FILENAME: app_process.c
* PLATFORM: VC6.0
*
* The c file is used to compute the projection iamge
*
*
\******************************************************************************/
/*--------------the head file declaration-------------------------------------*/
#include
#include
#include
#include "app_extern.h"
#include "app_main.h"
/*---------------------------------------------------------------------------------------*/
/*----------------------the function of computing the prejectiong image -----------------*
* *
* 此函数用于计算该图像的目标放投影图 *
* 即:计算图像中每一点成为目标的概率 *
* 反投影图中越亮的点表明该点越有可能成为目标 *
* 由两部分在组成:1.计算目标的归一化直方图 *
* 2.计算各个像素点成为目标的概率 *
* 注:本文在图像上建立的坐标系如下图所示 *
* *
* 0---------------> X(352) *
* | *
* | *
* | *
* | *
* V y (288) *
/-----------------------------------------------------------------------------------------*/
void image_projecting ()
{
object_modeling(Y_data);
compute_prob_project(Y_data,Y_shadow);
}
/*------------------the function of computing the probility of the pixel -----------------*
* *
* 此函数用来计算图像中各像素点成为目标的概率 *
* *
/-----------------------------------------------------------------------------------------*/
void compute_prob_project(unsigned char *p_data ,unsigned char*p_data_project)
{
int i ;
unsigned short *prob=Histogram_object;
unsigned char temp;
for(i=0;i frame.iFrm.y1 + i * capLinePitch,
disFrameBuf->frame.iFrm.y1+ i * disLinePitch,
numPixels);
DAT_copy(capFrameBuf->frame.iFrm.cb1 + i * (capLinePitch >> 1),
disFrameBuf->frame.iFrm.cb1 + i * (disLinePitch >> 1),
numPixels>>1);
DAT_copy(capFrameBuf->frame.iFrm.cr1 +i * (capLinePitch >> 1),
disFrameBuf->frame.iFrm.cr1 + i * (disLinePitch >> 1),
numPixels>>1);
}
//自己加的代码开始
for(i=200;i frame.iFrm.y1)+i*numPixels+j)=0xFF-
*(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.y1)+i*numPixels+j);
}
for(j=100;j frame.iFrm.cb1)+i*(numPixels>>1)+j)=0x80;
*(Uint8*)((Uint32)(disFrameBuf->frame.iFrm.cr1)+i*(numPixels>>1)+j)=0x80;
}
}
//自己加的代码结束
/*-----------------------------------------------------------*/
/*Display the decoded frame. */
/*-----------------------------------------------------------*/
DAT_wait(DAT_XFRID_WAITALL);
CACHE_clean(CACHE_L2ALL,NULL,NULL);
FVID_exchange(disChan, &disFrameBuf);
好人,有问题再问吧,先赞
我的小车单独转弯,一个轮前转一个后转可以。但是一加传感器检测时,只能一个轮子前转,而另一个轮子不转啦。怎么回事。测试时,代码很简单啊。求帮助。
while(1)
{
if(p10==1&&p11==0)
{
turn_right();
}
if(p10==0&&p11==1)
{
turn_left();
}
if(p10==1&&p11==1)
{
back();
}
else
forward();
}
@michael_xing
最近在做dsp通过68013与pc机进行数据通信的项目!遇到一个很奇怪的问题,想请教一下。
首先我采用的是68013的异步slave fifo的模式。使用BULK传输。fifo缓冲区设定大小为512*4,固件程序中自动处理数据包的长度为512.
68013的异步slave fifo传输模式的逻辑控制是用cpld和dsp共同控制的,cpld中控制读写信号,控制输出使能信号SLOE,控制片选信号CS;DSP程序中控制地址FIFO_ADR0/ADR1,并读取FIFO_FLAGB/FIFO_FLAGC标志位。整个逻辑控制都实现好了!通信也正常,数据收发都很正常。
但是在测试68013通信速度时,出现了问题!我用ccs中profile->clock->view时钟周期计算时间,然后根据发送的字节数计算速度。
现在我就发送512字节,用for循环赋值。
void Dsp_PC(char* buf,int len)
{
int i,k;
if(0==GPIO_Input_Read(pin_FLAGB))
{
while(1)
{
if(1==GPIO_Input_Read(pin_FLAGB))
{
break;
}
}
}
if(1==GPIO_Input_Read(pin_FLAGB))
{
GPIO_Output_Config(pin_ADR1,1);
GPIO_Output_Config(pin_ADR0,0);
for(i=0;i 设置断点 *(unsigned char*)USB_68013CS=buf[i];
}
}
return ;
}
main()
{
、、、、、一系列的初始化、、、
-->设置断点 asm(" NOP ");
for(i=0;i 设置断点 Dsp_PC(buf,512); //buf是我自己定义的一个数据,里面存放我发送的数据,512是发送的字节数
}
-->设置断点 asm(" NOP ");
}
现在如果在我标注的地方设置断点,那么就是单步执行Dsp_PC中发送的数据,在全部发送完512字节后,用的时钟周期是12000左右,但是如果我只在main函数中的两个空语句asm(" NOP ");处加断点,那么是for循环自行发送512字节,这时的时钟周期是37000,两者差别30倍左右!
请教前辈,问题出在哪?首先这两种方法外部因素全部一样 。 在线等、、
哇塞,各位很积极。谢谢各位对活动的捧场。
我觉得这个问题,是这样子:
(1)首先,为什么想换片子?从flash容量,还是从代码编写上?从不同的角度出发,更换的芯片是不同的。
(2)其次,如果想获取更多的对芯片的了解,建议你记下官网www.ti.com,在搜索栏中,输入你要的芯片名称,就可以看到详细记录,这个比datasheet更直观,而且一般会有芯片的对比和升级路线,对于你更换芯片非常有帮助。
在我使用的代码里,tms320f28232和tms320f28334(5),代码架构类似,因此,只要注意管脚对应上,代码几乎不用更改。而且给的例程多数都是模块的使用,没有涉及浮点运算。
很抱歉,tms320f2000系列的芯片,主要用于控制,做算法的比较少。如果做简单的算法,即使tms320f28334(5)有FPU单元(浮点),我也会使用定点来做运算。tms320f28232是定点的内核,没有FPU单元。
如果这样还不够,可以再回复。抱歉,回复有点晚。
先说一句非常悲观的话题:如果芯片锁死,意味着芯片不能用了,必须要更换。
但是,一般上,烧写flash,如果没有进行特别的操作,不会锁死的。
特别的操作,比如烧写过程中,断电。但是,这样子,也不是完全就会出问题。
再比如,我想知道你选用的仿真器是谁家的,使用的ccs是哪个版本?
所以说,你三天锁三个,有点不正常,我担心的是环境,不是你的操作手法。
你理解的基本上是对的。
你所想了解的系统,就是通过ADC将音频模拟信号采样,进入dsp进行数字处理,处理完之后,通过DAC将数字信号再转换成音频模拟信号输出。
如果你很想做音频,我给你建议一个系统,不过价格可能有点高。之前我也很想做,后来放弃了,时间太有限了。我可以把我羡慕已久的系统介绍给你。
不是打广告,因为我有朋友已经使用过了。就学习而言,可以让你完全学会;就开发而言,也可以开发一些新产品。
C5535eZdsp USB 记忆棒开发套件
http://www.ti.com.cn/tool/cn/tmdx5535ezdsp
哈哈,首先抱歉,你的问题,我有点没理解。
那我先来谈谈我的看法,理解不到之处,请你继续回复。
(1)SPI是接口,对于tms320f2812来说,只有一个SPI接口,那么如果要使用该接口来控制两个以上的从设备,就必须了解SPI总线的原理,把例程代码进行扩展,就可以实现了。前提已经很明确,SPI可以实现主从一对一,主从一对多的控制。
(2)PWM模块,对于tms320f2812来说,有16路吧,记得是很多,那么实现多路模拟输出是完全没有问题的。而且有一个特点,对于dsp来说,所有的模块是独立的。既然是独立的,肯定是可以单独控制,并可调。不过,dsp一般都是单线程,需要使用者合理安排各自的调整时间和顺序。
不到之处,请回复。
你使用的是哪款芯片,谢谢。
虽然你没说你使用的芯片,我大致猜一下,应该是tms320f281x系列的芯片。
我调试过tms320f2806x或者tms320f28x,建议,先调试一下ev_pwm和ev_timer_period两个例程,有问题,可以讨论。
不到之处,请回复。
实在抱歉,我没有调试过6701的芯片。
对不住了。
通过dsp f2812 的gpioA组引脚采集一幅静态数字图像,采集后存储到外部存储单元sram中,该怎样设置gpio引脚,该怎样配置,摄像头用ov6620.@michael_xing 大虾求助
首先,你准备使用ov6620摄像头芯片,先搞清楚,这款新片的接口是什么?然后,再决定使用2812的哪些管脚。
其次,ov6620资料很多,
(1)ov6620摄像头使用说明
(2)OV6620详细操作指南
(3)OV6620 源程序代码
再次,看到了单片机采集数据的时候,使用的是一个P口,那么使用2812的GPIO口也可以,需要设置为输入特性。
关于GPIO的使用,参考例程gpio_loopback和gpio_toggle
特别注意,操作GPIO时,一定添加保护,EALLOW和EDIS。
比如:
//////*******************************input**************************************************two
////===================================================adf4351: muxout
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;
////===================================================*no_ptt(no use)
//GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
//GpioCtrlRegs.GPADIR.bit.GPIO1 = 0;
////===================================================off_rem(no use)
//GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
//GpioCtrlRegs.GPADIR.bit.GPIO2 = 0;
我倒,这是你的算法。
我只有一个建议,做软件算法之前,现在pc上的软件上,进行仿真,最后再在dsp上进行移植。
三条建议:(1)将指针类型,评估占用空间大小,定义为数组类型。
(2)去掉printf语句,使用串口或者iic,上传打印信息。
(3)然后可以评估你使用的dsp或者mcu的空间是否满足你的要求。
期待将你要移植的目标,回复。
我记得,是有两个触发的。
PWM具有两个比较器,CA和CB,将这两个同时使用时,就可以完成你的目的了。
参考一下例程epwm_updown_aq。
(1)需要将SCIRXINTA挂在到中断表里。
PieVectTable.SCITXINTA = &sciaTxFifoIsr;
PieVectTable.SCIRXINTA = &sciaRxFifoIsr;
(2)另一个原因是,你没有添加文件DSP2833x_PieVect.c。
unsigned int datacount=0;
int databuffer[1000]={0};
int *souraddr,*deminaddr;
建议:
使用databuffer之前,使用循环将其全部清零。
初始化清零,只会作用到第一个数组元素,后续的全是乱码。
这个属于算法,而且是你下的代码,我建议,你好好把代码和你的算法,对一下。
理解一下。
while(1)
{
if(p10==1&&p11==0)
{
turn_right();
}
else if(p10==0&&p11==1)
{
turn_left();
}
else if(p10==1&&p11==1)
{
back();
}
else {
forward();
}
}
main()
{
、、、、、一系列的初始化、、、
-->设置断点 asm(" NOP ");
// for(i=0;i 设置断点 asm(" NOP ");
}
这样子,测试过吗?
刚接手DSP6678,买了TMDSEVM6678LE的板子,以前做的是28335,现在想搞清楚bois如何配置,不知道怎么下手?求指导@michael_xing
大虾门,我在调试DSP(6701)的时候,发现程序下到SDRAM内跑的时候,只能按INT型数据跑,如果按字节读写的时候就会乱。还有我调试时使用fopen,printf函数时,就会死机。我研究电路图发现,SDRAM是由两个16位宽的尔必达EDS5116ABTA拼接成32位。但是SDRAM的高16位和低16位UDQM和LDQM同时共用DSP的BE0和BE1,高16位的SDRAM没有接BE2和BE3。请教@michael_xing ,这是不是就是我出问题的原因?
@michael_xing需要采集46个模拟信号与6个数字信号,打算选取2片16通道12位AD再加上DSP自带的16通道进行采样。目前在选取AD芯片和如何分配资源以及与上位机通信方面比较迷茫,希望大神能指指路 O(∩_∩)O谢谢
@michael_xing 请问行工 使用三星的k9wag08u1m Flash芯片,使用dsp320f28069对其进行读写操作,发现在坏块检测的时候每次返回的都是随机数?请问高手,这是什么原因导致的?补充:时序和读写地址都是按照datasheet上写的。
大虾 我还有一个问题哦@michael_xing 我这里有信号发生器,连接上DSP板子,再连接上主机,在主机上创立一个Host API ,要求采样,比如采1024点,把数据序列存在一个文件夹里面,也写出DSP采样主程序,这就结束了,我再用Matlab把所采集的数据序列绘出图来,这样的过程该如何下手呢?
为什么要片内RAM大的DSP效率高?
请问大神如何选择DSP的电源芯片?
前辈你好,DSP的最高主频能从芯片型号中获得吗?
前来学习,支持
关于bios的配置,经验不足,见谅。
这个问题,我可以推荐个采样芯片,AD7606,这个芯片我使用过,8路同步采样AD,使用一个SPI接口就可以控制。
类似的16路芯片,也可以使用。
建议这样的电路搭建,不要采用片内的AD,直接采用全部外挂的AD来进行。这样子,可以简单些。
另外,提到数字信号,可以不用采用,直接进行电压处理(将其压缩到3.3v以内,加上电压保护),输入到DSP(MCU)的IO,就可以了。
注意事项:
(1)AD有双极性和单极性之分;
(2)AD布板,最好参考芯片的参考电路来进行,需要考虑干扰问题。
读写时序,有数字示波器观测过吗?
第一次调试不熟悉的芯片,总是有这样子的问题的。
建议,如果代码没有问题,一般从两个方面查找:
(1)访问芯片的电平信号,是否满足要求,比如SPI接口访问,需要电平3v,但是有电阻衰减,造成电平信号弱,就会出现时序问题。
(2)使用示波器,查看时序,确保时序的正确性。
我这里有信号发生器,连接上DSP板子,再连接上主机,在主机上创立一个Host API ,要求采样,比如采1024点,把数据序列存在一个文件夹里面,也写出DSP采样主程序,这就结束了,我再用Matlab把所采集的数据序列绘出图来,这样的过程该如何下手呢?
其实,你想做的就是一个数据采集和显示器,数据采集是靠dsp来实现,数据显示是在PC上实现,那么中间需要一个数据传输,你没说。
(1)dsp采集,不太难,你已经实现了;
(2)dsp需要和pc之间有个数据交互或者数据传递,你要选择一种通信方式;
(3)PC只要接收到数据之后,就可以存储、显示、计算等等操作了。
建议,如果数据速率要求不高,也可以选择串口,因为串口最简单。
如果数据速率要求高,就要选择诸如网口、usb来传输,这样一方面需要dsp侧做一些工作,同时PC侧也需要做一些工作。
baidu一下吧,这个问题,不用我写了吧。
这个问题好,因为dsp的厂家都注意到这个问题了。
一般上,dsp的厂家在推荐芯片的同时,都是配套销售。从电源芯片(LDO)到外围的串口,包括处理EMI的芯片,都会有。
直接的方法:问代理,绝对让你有收获。
加入,你使用的是ti的芯片,那么在官网上搜索型号,然后看所有的指标。就可以看到了。
而且,厂家一般都会把给型号的演进过程中的产品,贴出来,供你挑选。
我用的是TMS320F2812
能把问题全部站上来吗?哈哈。往前找,实在不好找。
嗯,我有点怀疑是电源问题,可能不太稳定,我同一个程序做了点小修改,前几次刷进去没事,最后就莫名其妙的锁了@michael_xing
@michael_xing
我问:当T1CTPRIP—PDPINTA口电平被拉至低电平后,PWM1-6没有PWM波形输出,如何设置能够使得当T1CTRIP-PDPINTA恢复成高电平后,继续产生PWM波形?求大神指导,我现在的状况是,一旦T1CTRIP-PDPINTA口在某一瞬间降为低电平,以后就算恢复成高电平也没有PWM输出了,只能再次上电复位@michael_xing 求大神指导
您答:你使用的是哪款芯片,谢谢。
我回:我用的是TMS320F2812
@michael_xing 我正在参加电子大赛,对于由话筒产生的叫啸现象如何抑制?查了资料都是用DSP理论说明的。目前对DSP理论计算掌握不熟,大神能指点一下吗?多谢了!
我一直在使用ARM处理器,现在速度为几百兆的芯片感觉就很少了,认为速度就很快了,今天看到了DSP的处理速度能达到4800MIPS,这个换算成频率是4800MHZ吗?也就是4.8G,真的吗?为什么这么快呢?@michael_xing 求解析
大虾 我是学弱 想请问一下ti dspc200系列可以完成图像处理吗?
@michael_xing
现在我在做C6678方面的开发,我有两个问题想问一下专家: 1在用CCS对C6678进行调式的时候,具体详细的步骤是什么样的啊,需要注意一些什么问题呢