做arm9(2410)前后的一些经历-硬件篇

做arm9(2410)前后的一些经历-硬件篇
做arm9(2410)前后的一些经历-硬件篇

做arm9(2410)前后的一些经历 - 硬件篇

今年春节总算可以安心的回家过年了,目前我做的5块新板都可以正常运行linux了。

很多朋友问我我是怎样调试板子的,现在我把做板的过程大致给大家说一下,希望能

对各位嵌入式爱好者有所帮助。

作者: capbily

日期:2004.1.6

QQ: 362532 MSN:capbily@https://www.360docs.net/doc/9b9123692.html,

个人主页: https://www.360docs.net/doc/9b9123692.html,,公司主页:https://www.360docs.net/doc/9b9123692.html,

先从工具说起吧,俗话说:“工欲善其事,必先利其器”,但是因为我自己没有太多的资金买高级的工具,因此只能用土枪土炮来形容吧。

首先这个过程中我没有使用示波器、仿真器、热风枪、恒温烙铁之类的东西,我从一开始学着搞硬件使用过多种烙铁,直到目前我仍然觉的自己的烙铁不太好用,虽然是90元进口的两把goot牌烙铁,但总觉得用起来不太爽,那把30W的尖头烙铁老是不沾锡,另一把45W的粗头烙铁温度太高了点,时间一长头就变黑了,反正是将就着用了。我用的焊锡膏,虽然有人说这东西会有一定的电导,但我觉得还是挺好用的,特别是拖焊时遗留的那一小堆焊锡,我有时就用这东西处理的,我用尖头烙铁像挖耳朵一样一点一点的把遗留在芯片腿脚见的焊锡给挖出来。当然有时我也用一下松香。我用的洗板水是一个朋友给的,现在只剩下一小口了,不知道是什么成分:)

其次我使用的测试工具主要是数字万用表,不到30元,算是比较低档的了。期间因为有时忘记关电,用掉了3节9V的电池。我主要用万用表来测试电压,短路,发光二极管等。

搞硬件的一般台面比较乱,我也不例外,我的桌面是一个八仙桌面,没有静电胶垫,焊接时就腾个地方铺张A4白纸。其他的都被镊子剪钳、料盒、烙铁、焊锡丝、板子、芯片等占领了。因为用的小元件比较多,我买了个蜂窝式的料盒,每个小格都盛放贴片元件,上面贴标签注名型号和封装,大的元件就放在抽屉式的料盒中。

硬件上大概就这些工具了。

有人问我使用的画图工具是什么,这也没什么可保留的,我一直使用的是Protel99SE,我在大学时学的是DOS版的Protel,学校是不教的,我那时看的书是一本好像叫什么“Protel3.31印刷电路板设计”这样一本书,到现在都觉得挺好的,那时主要是学会了画原理图,记得那时做自动控制试验,大家都手工画的图,我和有几个人用Protel打印的,感觉挺另类的。后来学Protel99,主要是看《Protel99SE电路板设计》,清华大学出版社,谢淑如等编著,后来也看过和买过其他一些Protel99SE的书,都觉得不如这本好(纯属个人观点)。我真正用Protel画板应该是在2002年10月份吧,画的是DragonBall VZ的两层板,当然我参考了别人的设计,首先是布局,然后是布线的规则。我一直听别人说Protel画板不如PowerPCB 之类的好,比如PowerPCB里面可以进行总线布线、自动推挤等很好用的功能,几乎是学Protel的同时我也找PowerPCB的书来看,但学来学去,还是觉得Protel简单易用。直到现在我还没有学会PowerPCB,虽然我很想。首先不管画原理图还是画板,都要做封装这样类似的东西,PowerPCB的那一堆嵌套概念把我搞的稀里糊涂,像元件库中包含元件和封装,每个封装又对应很多元件什么的,绕来绕去,我都不知道怎么下手了,Protel相对简单多了,一个引脚随便你怎么定义,一条线随便你怎么画,有没有网络都可以画,都可以打孔等等。我在这里并不是贬低某个软件不好用,可能是我的思维方式不同才造成这样的感觉吧。

有一些被别人称为技巧的功能介绍一下。

1.同步。在powerpcb中据说可以和powerlogic同步进行,protel99se中我感觉是同样的功能,就是当原理图中某些元件改动时,可以使用Design->Update PCB...反映到PCB中,在跳出的对话框中,选择Connectivty下拉列表中的Net Labels and Ports Global,去掉Classes框选中的两个Generate...选项。点Preview Changes先预览一下,如果没有什么错误那就Excute,如果有什么错误,那就按照提示进行修

改,最常见的错误就是封装不对。

2.选择元件。当把网络表正确导入PCB中后,要进行布局,像接VCC和GND这样的电容多的是,到底摆在哪里?当然是这个电容所属的那个模块附近。为了使一个模块的几个元件都放在一起,可以先原理图中选择这个模块的所有元件,然后使用Tools->Select PCB Components就可以在PCB中一次性选择这些元件了,再把他们对齐、摆放等,每个模块都可以这样处理,这样就不用对照原理图一个一个地找了。

3.文件压缩。或许当你安装Protel99SE以后,每次保存地文件都很大,文件多地时候有几十M。这时可以使用File菜单左边那个下拉箭头中的Design Utilties...,在对话框中的Perform Compact after closing design前打钩,以后每次保存文件就会比较小了。

4.封装库的制作。有时你用的某个元件封装在其他文件中也有,但是你只有那个文件的PCB,这时可以在那个文件中使用Design ->Make Library把那个PCB用到的所有封装都能提取出来生成一个库,这样你就能使用里面的库了。

5.铺铜。当布线完毕,在电路板各层进行铺铜是一个常见的操作,一般这是为了降低电磁干扰。不知道你使用PlacePolygonPlane还是PlaceSpiltPlane铺铜?我是这样操作的:在Design->Rules...对话框中,有个规则设定Rules选项卡,选择Rule Classes框选中的Clerarance Constraint,点Add..,弹出Clearnce Rule对话框,在Rules Scope对应的下拉列表中选择Object Kind,这时紧挨着的下面会出现很多要你框选的项目,在Polygons前打钩,再在右边的Ruls Attributes中填入你想要的尺寸,我一般设置为0.6mm。点OK设置完毕,回到PCB,再点PlacePolygonPlane快捷按钮,在整个PCB板的外围画一圈,这样就可以很方便的铺铜了。

6.等长。关于等长,也不是三言两语能说清的,我是自己摸索出来的,不知道别人是不是这样做的。先编辑好FromTo网络,形成一个类,再在规则设定中的高速布线规则中,对这个类进行规定添加和设置。这样,当布线完毕,可以使用Tools->Equalize Net Lengths进行等长检查,如果和设置的值相差太大,那么就要更改相应的FromTo网络,其实蛇行布线是为了使等长更容易做一些。当然DRC检查也可以进行等长检查。

7.孔径和线宽。我设置的过孔孔径是(0.4mm, 0.2mm),线宽最小是0.127mm。不要问我制板厂以及制板费是哪一家和有多少,也不要问我在哪里焊接BGA:-)

关于Protel暂时就说这些吧,其他的可以参考一些书籍和到论坛问问其他人,希望我的Protel经验不要对别人造成误导:-)

调试板子的时候,在所有元件没有焊接之前,我一般先把电源模块焊上去,检查电压是否正常,以免电压不对时损坏元件。我没有可调稳压电源,为保险起见,我买了一个+5V(2A)输出的开关电源,就像变压器,25元。街头普通的那种变压器虽然标明是5V或者其他标准输出的,但是一般不要使用这种东西,可以用万用表测试一下,指针式的可以明显反应出电压的变化,一般先是高于5V,差的会达到15V,然后才慢慢回降到5V或者其他,我就因此烧过一个编程器:-(

原则上要是电源模块正常了,接下来是调试CPU是否正常。这时焊接的东西比较多,包括复位电路,和CPU周围的元件,晶振,JTAG,用灯等,但是因为我没有仿真器,因此我焊接的东西更多,一定要把Flash 和SDRAM和串口等同时焊接上去,再仔细检查有没有短路和虚焊,使用mizi提供的烧写程序,把vivi写进去,然后接上电源,祈求上帝。。。如果没有输出,最先检查的是电压是否正常,然后检查SDRAM有没有焊好,再不行就检查Flash,再不行。。。这就要有耐心和胆量了,嘿嘿。。。你不是手头有好几块板子吗?一个一个地焊好,然后祈求上帝。。。我的第一版设计算是比较幸运也比较倒霉,五块板上帝就给我一次机会:),其他板子我折腾了好久都没有找出原因。于是我下了很大的决心来做第二版,结果几乎每块板子基本系统都能正常运行。

焊元件的时候一定要注意按照你自己设计的原理图进行焊接,不要想当然,由于某些原因,即使有经验的工程师也总是会出现没有按照原理图焊接的情况,只是在debug的时候才去对照原理图进行更改,并标记。当vivi能够出来,但是有时不能启动linux,我的经验是电源不够稳定。

另外也有人问我mizi是什么东西?其实是mizi出的一张光盘,里面包含了专门针对samsung s3c2410

这款芯片移植好了的linux内核源代码,还包含编译器和烧写工具,以及一个图形界面系统QT等,并有详细的使用文档,这些东西都是在三星那个SMDK开发板上做出来的,当然里面包含了这块板子的原理图,我就是按个原理图来设计的,有很多都是韩文写的,我也看不懂,我只看英文的那个文档。

没有JTAG仿真器怎么办?mizi中有介绍,我就是按照那个里面介绍的JTAG原理图做的JTAG电缆。使用它主要是用来烧写vivi的。我没有试过有没有单步调试功能。我烧写的vivi是mizi中已经编译好的,linux内核也是编译好的。文件系统我是自己做的,这个暂时不方便告知,只要linux能起来,板子的问题就应该不大了。

s3c2410 使用uclinux吗?nononononono!!! mizi中带了专门针对这块芯片的linux内核源代码,2410是带有MMU(内存管理单元)的微处理器,它所使用的linux应该和标准的linux更相近一些,但和uclinux 相差就比较远。

关于使用vivi下载zImage:我在linux下使用minicom的xmodem协议下载总是不成功,打开文件就出错,但在window2000下使用超级终端下载就很正常,I dont know why.

做2410的过程基本上就这些东西吧。有的朋友说做开发板没有什么前途,一个板子按照硬件成本算起来,也不过400-600元,现在国内这么多人做,人家价格一降,你能挣到什么东西?你看看现在内存忽然又上去了,还不如去炒炒芯片。我笑言:我不是生意人,也不是生意世家出身,做这个东西是因为里面有我喜欢的东西。我爸从小喜欢电子,我也从小喜欢电子的东西,我想他对我的期望也就是我能在电子设计上有所成就。我小时候在农村长大,没钱也没有地方去买那些电子元件,好几次回家他都对我说起他小时候用做饭的工具搭收音机的趣事,但他总是遗憾没读多少书,现在我的条件肯定比以前好的多了,我不想我的理想也去让我的下一代去实现。虽然我是自动控制专业的,但我的硬件设计知识都是工作后业余时间自己学的,我没有把自己的水平看的能有多高,也不想去比较什么,我为自己制定一个目标,尽力试着去实现,然后再设定下一个目标,最后的目标是什么我现在也不清楚,我现在对下一个或者下两个还是比较清楚的,也有一定的计划。不管我曾经工作过的哪个公司都会有计划,要写周报甚至是日报,有的人觉得完全是官僚主义的象征或者是没有用的,我虽然也很惧怕写那些东西,但对一个公司来说那绝对是必要的,没有了计划,项目就失去了控制。谈到计划,其实几乎每个人心里都有个小算盘,作为一个技术开发人员,自己想要在某个方面有发展,我觉得写下目标和计划是很有必要的,随时跟目前的情况对比一下,就不至于时间无声无息的流逝了,我从做龙珠的板子开始,就根据自己的能力制定进展计划,然后尽力按照这个计划去执行,因此我总是很清楚下一步该做什么。我毕业后两年多才开始学硬件设计,曾经有的朋友对我说学硬件要三、四年的时间,你还是算了吧,那时我也不懂也很惧怕要这么久的时间,现在我想其实这样的说法是不对的,你学到什么程度才算是学会?标准是什么?我以看到有个残疾人30多岁了才开始学单片机,我觉得很佩服也很怀疑,不知道他现在学的怎样,但肯德基是那位老人60多岁以后才建立的事实是真实的,而且就在你天天上班经过的地方。或许我们看了太多成功人士年轻的时候就有不同于常人的举动这样的例子了,才怀疑到底自己是不是那块料。我想只要有自己的目标和切合实际的计划以及有耐心执行下去,大部分事是可以做到的,当然没有一份对目标的热情也就可能没有那份耐心了。目前我只是调通了一个2410而已,或许我没有资格说这样的话,交流嘛,就当我是随便说说罢了,希望对你有所帮助,也希望大家说一说自己的故事。

相关主题
相关文档
最新文档