打印

**写的很好啊

[复制链接]
7412|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chl00100|  楼主 | 2007-11-27 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜鸟这篇**本来贴在blog几天了,今天偶然发现hellodsp转载,想想俺在2姨这里潜水也有两年了,特别在DSP版块,吸取了不少营养,所以贴出来,希望能给冷清的DSP版增加点人气^_^

DM643项目开发小结(原创) 
      经过半年多的学习,自己做的DM643板子样机总算出来了,今天有时间,用流水帐记录一下,,,,
      项目主要是做一个视频测量设备,之前外包某位牛人用2440开发,项目以流产结束,木办法,重担就压在了菜鸟偶的肩上,当然对刚毕业的偶也是一个难得的学习机会,,,,,因为需要显示要求比较高,并且需要复杂的OSD功能,所以偶选择了DM643平台,之所以没有用比较流行的DM642是因为开发板是从合众达买的,而合众达的DM642开发板没有OSD功能,TI的又太贵,加之我们并没有多路视频的要求,所以,,,
       四月初拿到开发板,当时偶对DSP是纯白薄啊(当然现在也很菜拉),之前只是玩过51和ARM7而已。于是恶补啊,买了几本书《DSP原理及开发应用》(支长义等编,主要讲C54X的),《DSP嵌入式应用系统开发典型实例》(李显等编,主要讲6000系列的),还有就是两本TI文档的中译本(english比较菜哦):《TI DSP/BIOS用户手册与驱动开发》,《TI DSP集成化开发环境(CCS)使用手册》,关于买书,自从工作后,偶是从不吝啬的,总觉得,花几十块钱买本书,在实际工作中就算是能解决一个问题,也值了^_^
        其实书买了不少,大多数并没有细看,当然菜鸟觉得也没这个必要,只捡自己感兴趣的看看,其它的工作中遇到问题时再翻书查就OK了,,,就这样粗略的学习之后,就开始玩开发板了,先按照使用手册把例程运行一遍,对硬件及CCS环境有个大概了解之后,就修改例程写自己的应用程序了,这一写就到了9月初(中间画SCH等用了一个多月),因为当时自己做的PCB刚回来,还没调通,就在开发板上做了一个样机拿到深圳光博会参展了,,,,,程序比较大,具体的代码细节这里就略了,下面主要记一些硬件调试过程,,,,, 
        在四月中旬出项目进程表的时候,和老大商量好先做板子再搞软件,所以当时就暂停玩开发板了,转而参考开发板作自己的原理图。关于LAYOUT方面,我以前只有两层板经验,加上当时赶时间计划在光博会之前把样机拿出来,所以外包给深圳一位老哥(55555,又丧失一次学习LAYOUT的机会)。做原理图偶大概花了一个月时间出了第一个版本,然后就联系IC经销商买器件做封装啊什么的,加上与深圳那位老哥的不断沟通修改,PCB到我手里的时间已经是8月底了,当时软件上还有一些问题要解决,所以用自己的PCB调试做样机已经不太可能了,干脆仍在那里,光博会回来才开始调试,,,,,
       光博会归来,开始调试,PCB为8层板,硬件结构为DM643+FPGA+CPLD+ARM7。
1)BGA焊接:DM643是548脚的BGA封装,间距为0.8mm,所以焊接必须外包了,费了好大劲,才从网上查到一家南京的BGA焊接公司,联系之,那位哥们也挺热情,于是就100元/片焊了两片(本来PCB,器件都是按3套备的,但SEED当时就剩两片卖了,汗,,,)
2)BGA焊好拿回来后就开始焊电源,这里值得一提的是,象这种比较复杂点的板子,最好是一个模块一个模块焊上去,焊好一个模块,检查运行是否正确,然后再焊下一个模块,这样出了问题(不出问题几乎是不可能的)好查点,否则如果一次焊了很多器件,出了问题会把人给搞死的,后面遇到的种种问题更验证了我这种想法的正确性。1.8V和3.3v都是用的TPS54310,先焊1.8v的(因为DM643要求内核要先于外围上电),网上有很多**讲这个IC的,主要是需要几个LOW-ESR的电容,还有就是反馈电阻需要精密的,焊好之后才发现电感封装做小了(因为以前从没用过DC/DC器件,没考虑到电感的电流),没办法,1.8v用了两个并联,3.3v用了四个并联;LOW-ESR电容偶幸运的买到了,不关心,主要就是那两个决定输出电压的反馈电阻了,datasheet上建议用1%的精密电阻,偶没买,实际上就是买到精密电阻,也不一定是合适的,因为公式是VO=0.891 +  (R5 x 0.891)/R4 决定的,所以不太容易配置这两个电阻,偶的建议是随便先弄一个10K的电阻作为R5或R4,然后找一个可调电阻作为另一个慢慢调,当然要注意电压一定要从低往高调。
         1.8v调好之后,有了经验,3.3V就好调了。值得注意的一件事是,PCB上只有DM643芯片的时候,1.8V和3.3V与GND之间的电阻都是几十欧姆,当焊上电源芯片之后,都成2-3欧姆了,1.8V的电阻在这个范围内我还不太奇怪(datasheet上标称core的工作电流为800多mA),但3.3v就不行了,与论坛上别人的差的比较大,,,,不过,TPS54310性能到不错,电压还算稳定,就是DM643有点发烫,实在找不到原因,就先凑合用了,后来发现两个reserve脚的3.3v和1.8v电压由于疏忽接反了(汗~~~),现在3.3V电阻小且DM643发烫的原因暂定在这里,以后改版再验证,好在是reserve脚,要是其他电源脚,那立马需要改板了,,,,,
3)电源搞定之后,就可以连接仿真器进行IO操作了,我开始时把两片SDRAM也焊上了,其实没这个必要,例程为seed的,功能是利用GPIO14使LED闪烁,仿真器能够连上,但每次LOAD PROGRAM后总是提示“can't set breakpoint at  0x******”,这个问题搞了n天,把配置脚改一下,不行,CMD改一下,还是不行,把GEL通看一遍,试着改几个地方,依旧不行,,,最后实在没办法,就开始怀疑硬件了,静下心来仔细想想,这个IO操作是在仿真环境下运行的,除了与DM643有关,没有其他什么影响因素了,而仿真器也已经提醒DM643连接良好,那么是坏片的可能性也很小了,唯一的可能性就是BGA焊接出了问题,这期间也在网上看到有人遇到类似情况,也是BGA焊接不良造成的。于是赶忙重新焊接一块,上电一仿真,先前的问题没有了,板子上的LED闪烁拉,高兴!!!!(nnd,看来BGA焊接不可靠哦~~)。  这里还有一件事情不得不提一下,我们知道,1.8v和3.3v电源上都有很多滤波电容,特别是有很多0.1uf的,我是在验证LED能够闪烁之后才焊上这些电容的,0402封装的,全部在BGA正背面,焊上之后,重新上电,3.3v不正常,被拉到2v一下,54310很烫,用万用表量一下,发现3.3v与GND之间的电阻由原来的2欧姆多变成0点几欧姆了,典型的短路,赶紧把刚焊上的滤波电容焊掉,然后再量又到2欧姆多了,电压也正常了,然后再把这些0402的电容焊上才OK!0402啊,累啊,55555~这里其实我们又看到了一个模块一个模块焊接并验证正确性的好处了,假如我一股脑焊了很多器件上去,然后发现短路了,那就惨了,大家都知道,短路特别是电源短路是电路调试中比较难查的现象,有时候会累死人的,而通过这个板子的调试我发现滤波电容短路发生的概率是很高的(包括电容本身质量问题短路和焊接不小心短路)。
4)在3)中已经可以验证DM643没有问题,BGA焊接也没有问题了,下面就焊接两片SDRAM,SDRAM挂在EMIF上,而EMIF是需要时钟驱动的,原理图设计是25MHZ有源晶振经过PLL芯片ICS512倍频到133MHZ的,问题又出现了ICS512没有输出,因为ICS512是一个非常简单的8pin IC,所以偶很快断定是假货(上网查查买到ICS512假货的还真不少),说到假货,后面还有遇到,并且还与IC经销商之间的争执,,,没办法,改配置脚,先用内置时钟驱动EMIF,配置为600/6 = 100MHZ。然后运行SDRAM读写例程,老天保佑,OK!
5)接下来焊接FLASH,参考开发板原理图,我们的FLASH芯片是AM29LV033C,焊接上去后,出问题了。首先,芯片很烫;其次程序不能load了,既然不能load,4)中已经被验证工作正常的两片SDRAM也不能工作了;还有就是从DSP输出的连接SDRAMECLKOUT没有信号了;但是芯片所有引脚的电平是正确的。片子很烫,所以每次上电一小会赶紧断电,经过不断的实验,确定不是CCS和代码的问题后,只好判定片子是假货,再翻一下21ic上CHUNYANG大虾的假货辨别的经典**,发现我们的3片AM29LV033C表面有明显的 划痕,边沿不齐,基本断定是片子的问题,,,,没办法,由经另外一个经销商从深圳调了2片AM29LV033C,2天后货到,把原来的芯片焊掉,焊上新买的,上电,不烫,连接CCS,load正常,运行FLASH读写例程,读写0x00000000,0xffffffff,0x55555555,全部OK,高兴!!!然后就是恼火,妈的,这批近3000元的IC中有两片IC都是假货!立即打电话给卖器件给我的胡**,这种事嘛,人家当然不愿意解决了,理由是“时间太长了”,但小mm态度还是不错的,最后,让偶出示一张技术鉴定书,盖上公司公章,说是请示总经理,偶就把上面的实验现象写了一下,传真过去,大概一个星期后打电话给俺,退了假片的款,,,,说实话,就200块钱,我不追老大也不会怪我,但我觉得不追回来很窝火,浪费我那么多时间!!!假货就一定要赔偿,也算是尽自己最大努力给公司减小损失,心安理得,,,,
6)再接下来就是CPLD了,以前从没有动手用过FPGA/CPLD,仅大四在北京实习时买过一本夏雨闻编的《verilog数字系统设计教程》,对verilog的基本语法还算了解。考虑到板子上的CPLD主要控制FLASH高三位地址,还有IIC_SEL等,都是简单信号,而且我的程序256K足够了,加上现在没太多时间研究verilog,没有象合众达板子上一样作寄存器,直接置0或1,ISE仿真OK!以后有时间再研究吧。。又花半天焊了一个JTAG下载线,下载顺利!
7)再接下来就是焊接视频编解码器,FPGA等,FPGA封装引脚做宽了,这时显微镜又发挥作用了,要不真的死定了,全部焊好,用FLASHBURN把程序烧录进FLASH,上电,很幸运,有图象,但不正常,花屏,示波器一查,原来是解码器CVBS输入端一电容短路,换掉,OK,图像比较清晰,但有横纹,google一下,断定可能是视频编解码器AGND没有磁珠隔离的缘故,但这片AGND在中间层,没办法,反复试验,最后把模拟1.8V,3.3V的隔离磁珠去掉直接短路图像才出奇的好了,这个问题也放在再版解决了,,,,
至此,样机调试基本结束,现在已经测试3,4天了,跑到600MHZ,还算稳定,,,,
欢迎多多交流,huiliangcai@126.com 

相关帖子

沙发
zhongxon| | 2007-11-28 16:06 | 只看该作者

一篇挺好的**

这一文章写得不错。但才有几十人个浏览,除了我这个回复外没人回复。
可另一篇却:
新设计的一款VC5416系统  70人回复,2987人浏览。

是搞642的人少吗?可是:

TMS320DM642工程文件送大家呵(13页原理图、4层PCB):65人回复,浏览2246人

这说明什么?

使用特权

评论回复
板凳
xfarm| | 2007-11-28 16:21 | 只看该作者

感兴趣的多,真正搞的少:

这贴子太好了!

使用特权

评论回复
地板
xfarm| | 2007-11-28 16:32 | 只看该作者

敢问楼上两位兄弟,OSD是什么功能?

在标准显示器上显示?

使用特权

评论回复
5
zhongxon| | 2007-11-28 16:48 | 只看该作者

On Screen Display

OSD是on-screen display的简称,即菜单式调节方式。一般是按Menu键后屏幕弹出的显示器各项调节项目信息的矩形菜单,可通过该菜单对显示器各项工作指标包括色彩、模式、几何形状等进行调整,从而达到最佳的使用状态。  
  
也指把文字等迭加在屏幕上

使用特权

评论回复
6
yxwsz| | 2007-11-28 17:32 | 只看该作者

顶一下;

顶一下
C6000系列的DSP复交复杂,搞起来是比较麻烦;
多参考参考开发板,仔细阅读TI的文档,还是很有必要的

使用特权

评论回复
7
zhongxon| | 2007-11-29 09:23 | 只看该作者

其实

一般说起C6000很复杂,其实也没啥,最好的学习的方法就是最直接的方法,如果看TI的文档可能看一年也没什么作用,越看越复杂,与其"临渊羡渔,不如立即织网"。

使用特权

评论回复
8
chl00100|  楼主 | 2007-11-29 10:19 | 只看该作者

作为一个DSP菜鸟

看到砍单片机,ARM那么火爆,DSP版冷冷清清,心里那个哇凉哦~~~
其实DSP开发和单片机开发差别也不是很大,至于6000系列玩的人少,可能是实际产品中还是控制类的比较多,所以ARM,51比较火,而有机会接触数字信号处理特别是图像处理的相对就不多了,,,,

使用特权

评论回复
9
nxy825715| | 2007-11-29 17:19 | 只看该作者

个人见解:

弄DSP的人就少,而弄6000系列DSP的就少之又少。
这贴经典,收藏了。

使用特权

评论回复
10
iversonma| | 2007-11-29 17:30 | 只看该作者

做的是纯硬件吗?怎么没有软件部分的描述

使用特权

评论回复
11
chl00100|  楼主 | 2007-11-30 08:52 | 只看该作者

re

文中提到过了  “程序比较大,具体的代码细节这里就略了,下面主要记一些硬件调试过程,,,,,” 
在小公司工作,软硬件想不一个人做都难,只是感觉软件不像硬件一样容易总结,,,

使用特权

评论回复
12
ankee| | 2007-12-11 10:08 | 只看该作者

**写的很好啊

文章写的很好啊,这哥们功力不错,也很有上进心啊

使用特权

评论回复
13
21ic| | 2007-12-11 10:59 | 只看该作者

好。顶一个。

使用特权

评论回复
14
caotingg| | 2007-12-11 20:06 | 只看该作者

我也在做dm642的采集卡

其实电源部分应该在输出的地方加一个跳线,这样调试电源芯片的时候就不用怕烧DSP了。我这块板子一直调试都还比较顺利,没有遇到你这么多的问题,呵呵!不过最近麻烦的事又来了,SEED的USB仿真器找不到DSP,但是并口的却可以找到。不过用并口的仿真时程序可以正常下载、运行,但一用CCS的DEBUG->RESET CPU就会出问题。搞不懂这是怎么回事!!??有人遇到过吗??

使用特权

评论回复
15
lzy1980| | 2007-12-13 01:18 | 只看该作者

精彩,顶一个

使用特权

评论回复
16
ark338| | 2007-12-13 14:22 | 只看该作者

我也作c6000系列的东西,dm6446

我觉得其实最重要的是把开发板玩透了,再出原理图,最好自己画板,这样的话比较好,布局可以根据实际需要定,布线也比较合理,以后有什么问题自己弄的东西也比较容易找,布线的时候特别应该注意对照开发板,上面有西多细节东西可以参考的。
我是从seed买的ti原版的开发板,电路板作回来了就直接全部焊接上了,问题也不少。不过由于现在dsp arm 实际上都是模块化的布局的,只要电源、复位、时钟信号正常,系统就能够跑起来,之后可以在通过更多手段调试。分几次焊接是有道理的,不过相信楼主体会到了,又慢又累。我直接找了个外包的小作坊(本人在北京),几天就全都焊完了,BGA嘱咐一定要老师傅焊接(一片6446卖500,上面两个ddr2也是BGA的,一个要600),其他部分有些虚焊的也能检查出来,不过相比自己焊接所有的东西轻松多了(调试经验不多的同志们还是自己焊。。。要不精神可能会崩溃)~还有假元器件仅仅遇上了一个,其他的都还好。那个假货送去焊接前没什么,焊接后上面的字全部都被助焊剂洗掉了,也太假了点~

最后给大家解释解释TI的OSD。OSD是on-screen display的简称,5楼的说法是从应用上来看的,实际上是TI硬件提供了多个Framebuffer接口,普通的视频图像层叫做video层,一般支持yuv422 yuv420 rgb565 rgb666等各式,但是OSD层一般仅仅支持256色的RGB格式。通常原理上来说是把video层的东西放在一个framebuffe,OSD层的东西放在另外一个framebuffer中,然后通过配置寄存器设置透明度,在输出图像的时候就会直接得到已经将2个层合并后的图像,象素点的计算是纯硬件自动的,免去了软件计算的麻烦,很方便的设计~

使用特权

评论回复
17
tjsheep| | 2007-12-13 23:07 | 只看该作者

正如楼上几位所说,这个还是比较高级的东东,所以曲高和

人家一味吹捧也不好,可是批评也批不出来,讨论又没有内容,最后就是想提点问题也不知道哪儿问起,呵呵,不过的确是个好**,我也很好奇楼主怎么有那么快的速度搞定软件的?是一开始就有一部分代码了么?

使用特权

评论回复
18
ark338| | 2007-12-14 09:45 | 只看该作者

17楼:

通常的经验是买开发板,然后里面的软件基本上都是可以直接拿来用的。自己只需要根据自己的需要做个性化的修改和再开发。

使用特权

评论回复
19
zjz0319| | 2007-12-14 10:46 | 只看该作者

RE:

楼主的焊接方法我不敢恭维!旱一个模块调一个,有那个必要吗?那还不把人给整死,这中板子一板都拿外头找专业人员焊接,其实你在设计电源的时候在每路电源的输出端加一电感或者磁珠,先把板子都焊好,调试的时候把电感取下来,先把电源全部调通在把电感重新焊上不就成了吗?

使用特权

评论回复
20
chl00100|  楼主 | 2007-12-14 15:28 | 只看该作者

re

谢谢ark338大虾的回复,看来是位老手,学习,,,

re17楼:文中提过,开发板买回来后,我当时对DSP是白薄,所以就是按照使用手册玩开发板上的例程,自认C语言基础还凑合,参考几本教材,把几个例程运行一遍之后,半个月侯,对SCH,DSP/BIOS,视频驱动,OSD例程都有个大概的了解了,然后画SCH用了一个月,之后好像六月底开始写软件,主要是以OSD例程进行修改,基于DSP/BIOS,把原来的2个任务改成3个任务,接下来主要工作有ARM7上的鼠标驱动,ARM与DSP的IIC通信(本来想用MCBSP,没有搞定),DSP上用OSD功能做十字丝鼠标显示,类WINDOWS多级菜单,各种菜单下的功能实现(这个占最多时间),EEPROM驱动等,样机功能出来大概到9月初,这期间没有涉及数字图像算法处理,很遗憾,当然进程也比较快点,最近准备在上面加一个自动寻边功能,又要补课了,,,

re19楼:谢谢,你的方法也非常好,其实我说的按模块焊接调试,主要是针对做第一个样机时,出现短路的情况,这样做更容易找出问题所在,可能是我运气差,这个样机调试中碰到不下三次短路情况,有的是焊接所致,有的则是电容本身质量问题直接短路,每个人都有自己的习惯,适合的就是最好的,,,

PS:多说几句,工作一年半,一直在作技术,可能是在小公司的缘故吧,感觉市场开拓比技术更重要,一般的产品,稍微有点经验,再努力一点,技术上应该都可以实现它,,,,但市场(销售),就是一个完全不同的概念了,,,,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

307

帖子

0

粉丝