申请护照了

爸爸前两天冒雨跑到大阪给我申请护照了。护照的申请比较麻烦,先是妈妈抱着我到区役所开了一大堆证明,然后开始筹办我的护照上的玉照。由于我人小,不能到自动拍照机上照相,如果到照相馆去的话爸爸妈妈又舍不得钱。于是妈妈用家里的那个数码相机给我照了几天的照片,然后用爸爸写好的一个做登记照的软件做成登记照的样子,拿去洗照片。结果洗出来的照片比预想的要大了一些。护照照片规定是42mm x 47mm,人头是宽21mm - 24mm,高28mm - 33mm,可是我是个圆脸,经过计算只有我的头宽是上限24mm的时候,头高才刚好到下限28mm,经过几次筛选反复测试,爸爸终于让我的玉照满足了护照的要求。

于是他上个星期三满怀信心地奔赴大阪的领事馆。正所谓天有不测风云,不仅当天下起了瓢泼大雨,而且当爸爸慌急火忙地跑到办理窗口办手续的时候,被告知小孩满3个月的必须亲自来办理。我此时已经满了5个月,根据规定爸爸必须把我带上才能办理我的护照。我寻思不会有这么不近人情的规定吧,多半是那位办事的阿姨看我的玉照好看,想见见本人,让我签个名拍个照留个念吧。经过爸爸一番苦口婆心、胡搅蛮缠,并由阿姨请示了上级领导之后,终于同意对我网开一面、宽大处理,这样我的护照终于申请下来了。办理需要9个工作日,4月初就能到手了。

经过上述折腾,爸爸回来之后大病3天,今天才有力气帮我更新这个博客呢。

会叫妈妈了

经过几个月的坚持不懈地练习,我现在终于会以纯正而地道的发音叫“妈妈”了,"爸爸"的发音也已经基本掌握。但是爸爸妈妈听到我叫的时候,总是愁眉苦脸的,难道你们不愿意听我叫“爸爸妈妈“么。

爸爸说我每次叫“妈妈”的时候,不是要换尿布就是要吃奶或者是要睡觉,而且我还总是带着哭腔叫,所以他们听到“妈妈”这个词不免有些心惊肉跳。做父母的哪能那么省心呢,又要听人家叫爸爸妈妈,又要我不哭不闹,怎么你们尽想好事情呢。

BCG疫苗

昨天爸爸妈妈给我洗澡的时候,突然发现我胳膊上注射BCG疫苗的地方出现了白色的小颗粒。日本的BCG疫苗 用3乘3的针头阵列扎两次,因此我的胳膊上有18个针眼,所有的针眼都红肿起来,其中有两个上面有白色颗粒。妈妈担心是洗澡的时候不小心碰到了扎针的地 方,以至于感染化脓。于是今天就特地带我去区役所咨询。一位老太太接待了我们,她看了我的胳膊之后说,这个是正常情况,再过一段时间就会消失的。并且还来 连连夸我长得漂亮,将来一定是个美人。妈妈的日语不好,没有把夸奖我的话听全,真是遗憾了。

左右声道反转问题

RY DSP开发 2006/03/27

在开发声音的输入输出的程序时,我遇到过很多次左右声道反转的问题。就是说原本的左声道变成了右声道,右声道变成了左声道。下面是我的根据经验的解决办法。

DSP 和ADC或DAC之间的通信通常采取IIS模式。帧同步信号和时钟信号都由外部提供。先以字长为32bit的IIS mode为例,如果左右声道的数据都为32bit的长整型数,则一帧的长度是64bit,也就是说一帧有64个时钟周期。前32个时钟周期时,帧同步信号 为低电平,后32个时钟周期为高电平。

McBSP在时钟的上升缘或者下降缘检测帧同步信号和数据信号(具体是上升缘还是下降缘通过设置 PCR寄存器的CLKXP和CLKRP来决定)。由于当帧同步信号为低电平的时候象征着一帧的开始,因此PCR中的FSXP和FSRP需要设置为 ACTIVE LOW。在时钟缘时,McBSP若检测到帧同步信号为低电平,就知道是一帧开始了。在此后的时钟缘若McBSP检测到帧同步信号为高电平,则开始准备检测 下一个帧同步信号。

我用DMA从McBSP获取数据,正常情况下获取的数据的顺序是LRLRLR….,左右声道反转,意味着接收到的信号变 成了RLRLRL….。为什么会这样呢,我猜测在McBSP启动的时候如果检测到帧同步信号为低电平则立即开始进行数据传输。因此若McBSP启动时帧同 步信号恰好为低电平,则它不一定能够接收到完整的一帧数据,这样就造成了左右声道反转。我解决办法就是先将McBSP设置为GPIO模式,读取帧同步信 号,当帧同步信号变为高电平的时候,启动McBSP传输。这样在帧同步信号为高电平时McBSP被启动,它就能够接收到下一帧完整的数据了。

用pyOpenGL重写三维汽车模拟程序

前段时间用Vpython写了一个3D汽车模拟程序,它从Labview的realtime target实时地接收到汽车的各个部件角度和位置的数据,绘制成3D动画,因此可以直观地分析实验结果。

但是Vpython只支持简单的模型,虽然提供了faces类,但是许多效果无法用程序控制,例如灯光、透明度以及显示线框模型。所以我就下载了pyOpenGL包,直接用openGL重写了这个程序。

直 接用OpenGL写程序,就不得不自己设置照相机、灯光以及材质等信息,幸好有本OpenGL的红皮书详细地介绍了这些入门知识。汽车模型的载入部分和 Vpython的版本没有什么区别,也是从blender导出的.x文件中读取模型信息,并传递给opengl进行绘制,为了尽量减少openGL库函数 的调用,我选择了glDrawArrays函数。在调用glDrawArrays之前,先设置好GL_VERTEX_ARRAY, GL_NORMAL_ARRAY,GL_COLOR_ARRAY等几个数组,这样一个glDrawArrays命令就很把整个车身绘制出来了。

既然已经直接采用openGL了,那么就来做几个效果吧。在调用glDrawArrays之前,调用glPolygonMode可以设置绘制多边形的模式,有点线面三种选择,看多了面模型,偶尔切换到线框模型还是很酷的,而且可以看到被车身遮住的轮胎。

添 加半透明效果会显得更加酷一些,这个也很简单,只要在绘制透明物体时采用glBlendFunc就行了,具体设置可以参照红皮书。既然能够绘制半透明,那 么做一个镜像车身也不困难了。我在路面下面和汽车对称的地方也绘制了一个汽车,然后让路面透明一点点,这样整体的效果就好像路面反射出一个汽车的虚像。



C5509A的开发正式开始

RY DSP开发 2006/03/09

今天收到DSKC5509A的板子,于是新项目的开发正式开始。首先要解决3个问题:DSP程序的启动(BOOT),和MCU的I2C通信,以及声音的输入输出。

DSP 采用standard serial boot mode启动,由MCU向DSP传输程序文件。详细可参考TI的应用报告SPRA375E:Using the …/VC5509A Bootloader。采用HEX55工具可以把out文件转换为启动用的文件:hex55.exe -boot -v5510:2 -serial16 -e 145fah -b dsk_app.out,其中-e 145fah是设置entry point, 可以在map文件中找到。

不幸的是,DSK板子采用McBSP0作声音的输入输出,用I2C向AIC23发送命令,这样启动和I2C通信都 无法直接在DSKC5509A上进行测试。于是硬件担当者对这块板子大动手脚,取下原来的AIC23芯片,装上另外一个Codec芯片和MCU芯片。 McBSP0与MCU相连以调试启动部分, McBSP2与Codec芯片相连调试声音输入输出,I2C与MCU相连调试I2C通信。

目前声音输入输出部分已经调试通过,这么大动手脚居然板子没有出问题,令人不得不佩服硬件担当者。