基于ARM9的开发板DIY笔记【1】_michael_新浪博客
    {zh0}的学习方法应该是兴趣,而最快的过程应该就是亲自动手,最近决定自己来亲手DIY一个基于ARM9的2410控制器的开发板,并在上面移植嵌入式Linux系统,并且尽量探索自己开的嵌入式系统课程的一些创新教法。暂且在这里做一个序,以后的后续帖子将依次记录下自己DIY的过程。
    (转帖自网上)2002.9月以前我是做龙珠的(DragonBall VZ)软件的,使用的是uClinux,因为一直使用公司的板子,也就是那块Motorola的ADS板。觉得上面的东西看起来不是很复杂,因此很想自己做一个龙珠的板子来玩uClinux,但是我不会使用任何一个画板的软件,最多也就会使用protel画画原理图之类的(现在想想,从原理图到PCB还是有挺多细节要注意的),后来在一个朋友的帮助下,我十分生疏的画了一个龙珠的简单的板子。不像学软件那样,买本书,有台电脑就差不多够了。制板是要掏钱的,我的薪金一直偏低,在女朋友的支持下,我终于拿去制板了,接下来就是买元件(十分简单但是又十分繁琐的一件事)。再接下来就是焊接了,大学时有个电子工艺实习,我学会了焊接电烙铁焊接直插元件,但是面对TQFP的144脚表贴元件,我还真不知道怎么下手。我又在网上结识了另外一个朋友,还到他们的实验室看了一下怎样焊表贴元件,觉得也不是很难嘛:),观摩回来我就自己试着焊接,{zh1}出来了,黑糊糊的一堆,反正是很难看的东西了。期间尝试使用锡浆,助焊剂,松香水之类的。不过我很幸运阿,这个板子可以跑uClinux。 
       再到2003春节的时候,(此时国内的arm7板已经发展起来了)我又重新做了一个龙珠的板子,这次参考了其他一些漂亮的板子,因此看起来比上次那个顺眼一点。还写了一个详细的文档,我的目的就是:卖。至少要把成本收回阿。我把做好的板子首先送给了一位朋友,他建议我做个arm9(2410)的板子,我就开始在三星网站找资料,不过我还是和深圳另外一个朋友一起合作把龙珠的板子整理了一下,写了几个简单的演示程序,准备卖几块。不过在arm7的势头下,DragonBall已经鲜为人知了,在龙珠上,我和深圳的朋友已经尽了{zd0}的努力,这件事上,深圳的朋友至少在钱的方面,帮助了我很多,在他身上,我还学到做事要认真、要有耐心、对用户负责的精神,从内心中,我一直都很感激他。后来接了一个龙珠的小项目,还有一些其他事,我就回到广州了,那是在今年6月底。 
     回到广州,女朋友刚刚动完一个手术,身体很虚弱,陪了她两周,然后就想在她家附近找类似机关单位的工作,亲戚帮忙介绍了几个,大部分都只是和负责人见面谈了谈,我就不想在那种单位呆了。因为我发现有的工作台连台电脑都没有,要不就是跟一群当地没有工作经验的大专毕业生在一起,和嵌入式丝毫没有关系,并且要十分注意脸色行事。有一家办公的环境还不错,刚刚上午说了要我帮他们搞个linux网站,下午就被派去施工安装网络插座了,说是领导安排要先在底层锻炼几个月再说。并且没有宿舍,三餐自己掏钱,工资不到2000,附近租房出奇的贵。折腾来折腾去,一个多月就进去了,结果什么都没搞成。这时接的那个项目催的又急,GF父母那边又相处的不是很好。干脆,我就在广州租了个房子呆下去了(想想一年来我寄居过、租过不到7平方米的地下室、四周阴暗又不通风的民房。。。这次租的是一房一厅,感觉还不错) 
到8月份的时候,我终于勉强把客户的那个龙珠板设计出来了。那是我{dy}次做四层板,总共做了8块,深圳的朋友当时给了我一些够用的龙珠芯片。当时正值沿海的热浪袭击,我又住在顶楼,天气热的要死,楼下就是一个超市,天天在做宣传促销活动,并且还是几个公司一起搞,结果几对大音箱互相争霸,主持人简直就是歇斯底里的喊,我还打电话到南方都市报投诉,但没有任何结果。我拿着电烙铁一边焊一边骂,谁知焊了{dy}块板,一点反应也没有,就焊第二块,又是没有反应,当时穿着短裤,融化的焊锡一不小心就掉到腿上,到现在还有个疤,我简直又气又急。看看剩下的芯片和板子,又仔细检查原理图和PCB,真是好郁闷啊!我就想,反正有8块板呢,我才焊了两块而已,不行就接着焊,于是终于在第四块板的时候跑起了uClinux,接下来的一个月就做相应的软件。这时我自己攒的钱已经花的差不多了,这么久没有去工作,心里很急啊!那时我几乎每周都去招聘会溜达一圈,期望能在广州找个自己喜欢的合适的工作。但是自从今年下半年以来,工作出奇的难找。我天天都在安慰自己,一定能找个好工作的。我女朋友也鼓励我要找个自己喜欢的工作。另外我接的项目要的钱也很少,只有几千块,向客户苦诉了一番,才又多给了2000。做完龙珠的几个软件(也就是几个简单的驱动程序和测试代码),我就拿到一些钱了,心里稍微安慰了一下。这时已经到了国庆节,arm7的板子在国内已经遍地开花了。我找和以前那个朋友又见面商量了一下,问他能不能帮我搞定2410的软件,于是过完国庆,就开始参考mizi设计arm9(2410)了。 
     到那时我已经好长时间没有工作了,也逐渐的适应了,大不了再跑去东莞或者深圳打工嘛。我今年25,感觉还不算老啊,年轻的资本就应该这样挥霍。从国庆开始,我在墙壁的四周写下10月份的目标:设计出2410的板子。于是,{dy}次做完一个4层电路板,我就开始{dy}次做6层板的设计了。我以前工作的时候,留意多认识一些搞硬件的朋友,这次设计6层板,不懂的地方我就打电话问,比如怎么做等长线,Buffer该怎么处理,要不要CPLD之类的。我以前是个小小的软件工程师,现在要做逐渐做个硬件工程师。因此很多地方就要虚心请教,我知道我还要交更多的朋友,拜更多的老师。设计这块2410的时候,对我这个急性子而言,太需要耐心了,于是我就租史泰龙的碟来看,每次不想坚持下去的时候,我就租张《Rocky》来看,也当休息一下:-)幸好我以前也没有看过,所以看完了我就不想睡觉了,接着画图。虽然恐怖片也比较刺激,但是我不敢深更半夜一个人看:((白天也不敢)。大部分我是晚上画图的,白天睡觉,因此这里实在是太吵了。实际上,我两周基本上画完了PCB,又用了一周修修补补,毕竟做一次6层板对我来说还是不小的金钱付出啊。 
     10月30号,我正式把PCB发送给制板厂了。8号拿到PCB,其中的8天,我又帮人设计了一个2层的龙珠板,可惜要到明年才能拿到设计费。等买完2410的元器件,我又接近弹尽粮绝了。这次不得已从朋友那个借了几千。对个人而言,买元器件其实是一个非常繁琐的事情。首先货源难寻,要在网上找,不停的打电话问(我租住的地方没法安装电话,也就没办法上网,每次买芯片话要跑回女朋友家);其次量少了,销售商一般都不理你,要么就把价格抬的奇高。有些元件还么货期,需要耐心的等。到了大概11月22号左右,我的元器件基本上凑齐了。BGA也焊接好了。我花了一个晚上焊接完了图片上那块板子。结果没有JTAG电缆,于是只能等第二天打电话问做硬件的朋友到哪里买,谁知他建议要我自己做,我又翻出mizi,找资料,当天下午就做好了。连上板子,十分庆幸的是竟然可以读到CPU的ID了。但是不能辨认到任何一个Flash,更谈不上烧写了。于是去掉buffer,采用直接连接的方式(也就是为什么板子上有那么多飞线了),这次可以辨认到nand flash,但依然不能烧写,试了N次,{zh1}郁闷至极。幸好第二天晚上有个朋友带了个笔记本过来问我一些龙珠的问题,我就接到他的笔记本上试着烧,这次竟然写入了,原来是我的主板并口有问题,我又连上串口,很顺利的就跑通了vivi,到现在为止,至少证明我的板子还是有点动静了。 
     我接着又试着烧写zImage(压缩的内核),结果使用minicom怎么也下载不了。我怀疑是不是我的电脑有问题,就转到win2000里用超级终端,这次又比较顺利,但是虽然写入到flash了,就是运行不了linux,接下来又是问朋友,在朋友的帮助下,linux终于起来了。同时,我也焊接了其他四块板子(BGA我只贴了5片),但是无论我怎样找原因,就是不能跑起其余的四块板子。我冒险把已经跑通的板子上的大部分元器件拆下来(cpu除外),和不能通的板子相互调换,结果还是不行,而那个好的板子照样可以跑。这些步骤,我断断续续持续了一周多了,现在依然困扰着我。我几乎每天晚上都在用两把烙铁拆芯片、焊接、飞线,用放大镜和万用表查找虚焊、短路,结果一无所获。 
     我做2410的目的想必大家也十分清楚,就是么做一个给大家玩的板子。大家都喜欢便宜的东西,殊不知对个人和小公司而言,为做一个嵌入式开发板,是多么的辛苦,上面很多情况我都是一笔带过,甚至有的都没有提及。我是全职在做这个东西的,而且我是个新手(想必做面对一款新的没有用过的CPU,每个人都是新手)。全职尚且需要这么多时间,更何况业余做开发板的了。业余里做板子没有更多的时间,打电话买芯片不方便。。。诸此种种,没有一份对嵌入式的一种真心的热情,很难说能有耐心坚持做下去。现在大家都喜欢免费开放的东西,可是就算是给你一个完善的原理图和一个正确的PCB文件,没有半年的时间,也是很难上手的。我认识的做类似开发板的,无不有一个难以忍受的经历,从发出PCB到制板厂那时起,就注定要走这一步。大致这个流程是这样的:找资料->做简单测试试验->设计原理图->做封装->设计PCB->制板->买元件->焊接->调试硬件->修正硬件->调试软件->写说明书->包装邮寄->技术支持。这其中有些过程看似很简单,但如果只有一个人来做的话,会不知不觉的花费很多的时间和精力。其中的每一个步骤,都不是个人和小公司所能耽误的起的。 
     首先这个过程中我没有使用示波器、仿真器、热风枪、恒温烙铁之类的东西,我从一开始学着搞硬件使用过多种烙铁,直到目前我仍然觉的自己的烙铁不太好用,虽然是90元进口的两把goot牌烙铁,但总觉得用起来不太爽,那把30W的尖头烙铁老是不沾锡,另一把45W的粗头烙铁温度太高了点,时间一长头就变黑了,反正是将就着用了。我用的焊锡膏,虽然有人说这东西会有一定的电导,但我觉得还是挺好用的,特别是拖焊时遗留的那一小堆焊锡,我有时就用这东西处理的,我用尖头烙铁像挖耳朵一样一点一点的把遗留在芯片腿脚见的焊锡给挖出来。当然有时我也用一下松香。我用的洗板水是一个朋友给的,现在只剩下一小口了,不知道是什么成分:) 
    有人问我使用的画图工具是什么,这也没什么可保留的,我一直使用的是Protel99SE,我在大学时学的是DOS版的Protel,学校是不教的,我那时看的书是一本好像叫什么“Protel3.31印刷电路板设计”这样一本书,到现在都觉得挺好的,那时主要是学会了画原理图,记得那时做自动控制试验,大家都手工画的图,我和有几个人用Protel打印的,感觉挺另类的。后来学Protel99,主要是看《Protel99SE电路板设计》,清华大学出版社,谢淑如等编著,后来也看过和买过其他一些Protel99SE的书,都觉得不如这本好(纯属个人观点)。我真正用Protel画板应该是在2002年10月份吧,画的是DragonBallVZ的两层板,当然我参考了别人的设计,首先是布局,然后是布线的规则。我一直听别人说Protel画板不如PowerPCB之类的好,比如PowerPCB里面可以进行总线布线、自动推挤等很好用的功能,几乎是学Protel的同时我也找PowerPCB的书来看,但学来学去,还是觉得Protel简单易用。直到现在我还没有学会PowerPCB,虽然我很想。首先不管画原理图还是画板,都要做封装这样类似的东西,PowerPCB的那一堆嵌套概念把我搞的稀里糊涂,像元件库中包含元件和封装,每个封装又对应很多元件什么的,绕来绕去,我都不知道怎么下手了,Protel相对简单多了,一个引脚随便你怎么定义,一条线随便你怎么画,有没有网络都可以画,都可以打孔等等。 
1.同步。在powerpcb中据说可以和powerlogic同步进行,protel99se中我感觉是同样的功能,就是当原理图中某些元件改动时,可以使用Design->Update PCB...反映到PCB中,在跳出的对话框中,选择Connectivty下拉列表中的Net Labels and PortsGlobal,去掉Classes框选中的两个Generate...选项。点Preview Changes先预览一下,如果没有什么错误那就Excute,如果有什么错误,那就按照提示进行修改,最常见的错误就是封装不对。 
2.选择元件。当把网络表正确导入PCB中后,要进行布局,像接VCC和GND这样的电容多的是,到底摆在哪里?当然是这个电容所属的那个模块附近。为了使一个模块的几个元件都放在一起,可以先原理图中选择这个模块的所有元件,然后使用Tools->SelectPCB Components就可以在PCB中一次性选择这些元件了,再把他们对齐、摆放等,每个模块都可以这样处理,这样就不用对照原理图一个一个地找了。 
5.铺铜。当布线完毕,在电路板各层进行铺铜是一个常见的操作,一般这是为了降低电磁干扰。不知道你使用PlacePolygonPlane还是PlaceSpiltPlane铺铜?我是这样操作的:在Design->Rules...对话框中,有个规则设定Rules选项卡,选择Rule Classes框选中的Clerarance Constraint,点Add..,弹出Clearnce Rule对话框,在Rules Scope对应的下拉列表中选择Object Kind,这时紧挨着的下面会出现很多要你框选的项目,在Polygons前打钩,再在右边的Rulsttributes中填入你想要的尺寸,我一般设置为0.6mm。点OK设置完毕,回到PCB,再点PlacePolygonPlane快捷按钮,在整个PCB板的外围画一圈,这样就可以很方便的铺铜了。 
6.等长。关于等长,也不是三言两语能说清的,我是自己摸索出来的,不知道别人是不是这样做的。先编辑好FromTo网络,形成一个类,再在规则设定中的高速布线规则中,对这个类进行规定添加和设置。这样,当布线完毕,可以使用Tools->EqualizeNet Lengths进行等长检查,如果和设置的值相差太大,那么就要更改相应的FromTo网络,其实蛇行布线是为了使等长更容易做一些。当然DRC检查也可以进行等长检查。 7.孔径和线宽。我设置的过孔孔径是(0.4mm, 0.2mm),线宽最小是0.127mm。不要问我制板厂以及制板费是哪一家和有多少,也不要问我在哪里焊接BGA:-) 
   调试板子的时候,在所有元件没有焊接之前,我一般先把电源模块焊上去,检查电压是否正常,以免电压不对时损坏元件。我没有可调稳压电源,为保险起见,我买了一个+5V(2A)输出的开关电源,就像变压器,25元。街头普通的那种变压器虽然标明是5V或者其他标准输出的,但是一般不要使用这种东西,可以用万用表测试一下,指针式的可以明显反应出电压的变化,一般先是高于5V,差的会达到15V,然后才慢慢回降到5V或者其他,我就因此烧过一个编程器:-( 
     原则上要是电源模块正常了,接下来是调试CPU是否正常。这时焊接的东西比较多,包括复位电路,和CPU周围的元件,晶振,JTAG,用灯等,但是因为我没有仿真器,因此我焊接的东西更多,一定要把Flash和SDRAM和串口等同时焊接上去,再仔细检查有没有短路和虚焊,使用mizi提供的烧写程序,把vivi写进去,然后接上电源,祈求上帝。。。如果没有输出,{zx0}检查的是电压是否正常,然后检查SDRAM有没有焊好,再不行就检查Flash,再不行。。。这就要有耐心和胆量了,嘿嘿。。。你不是手头有好几块板子吗?一个一个地焊好,然后祈求上帝。。。我的{dy}版设计算是比较幸运也比较倒霉,五块板上帝就给我一次机会:),其他板子我折腾了好久都没有找出原因。于是我下了很大的决心来做第二版,结果几乎每块板子基本系统都能正常运行。 
    另外也有人问我mizi是什么东西?其实是mizi出的一张光盘,里面包含了专门针对samsung s3c2410这款芯片移植好了的linux内核源代码,还包含编译器和烧写工具,以及一个图形界面系统QT等,并有详细的使用文档,这些东西都是在三星那个SMDK开发板上做出来的,当然里面包含了这块板子的原理图,我就是按个原理图来设计的,有很多都是韩文写的,我也看不懂,我只看英文的那个文档。 
    做2410的过程基本上就这些东西吧。有的朋友说做开发板没有什么前途,一个板子按照硬件成本算起来,也不过400-600元,现在国内这么多人做,人家价格一降,你能挣到什么东西?你看看现在内存忽然又上去了,还不如去炒炒芯片。我笑言:我不是生意人,也不是生意世家出身,做这个东西是因为里面有我喜欢的东西。我爸从小喜欢电子,我也从小喜欢电子的东西,我想他对我的期望也就是我能在电子设计上有所成就。我小时候在农村长大,没钱也没有地方去买那些电子元件,好几次回家他都对我说起他小时候用做饭的工具搭收音机的趣事,但他总是遗憾没读多少书,现在我的条件肯定比以前好的多了,我不想我的理想也去让我的下一代去实现。虽然我是自动控制专业的,但我的硬件设计知识都是工作后业余时间自己学的,我没有把自己的水平看的能有多高,也不想去比较什么,我为自己制定一个目标,尽力试着去实现,然后再设定下一个目标,{zh1}的目标是什么我现在也不清楚,我现在对下一个或者下两个还是比较清楚的,也有一定的计划。不管我曾经工作过的哪个公司都会有计划,要写周报甚至是日报,有的人觉得xx是官僚主义的象征或者是没有用的,我虽然也很惧怕写那些东西,但对一个公司来说那{jd1}是必要的,没有了计划,项目就失去了控制。谈到计划,其实几乎每个人心里都有个小算盘,作为一个技术开发人员,自己想要在某个方面有发展,我觉得写下目标和计划是很有必要的,随时跟目前的情况对比一下,就不至于时间无声无息的流逝去执行,因此我总是很清楚下一步该做什么。我毕业后两年多才开始学硬件设计,曾经有的朋友对我说学硬件要三、四年的时间,你还是算了吧,那时我也不懂也很惧怕要这么久的时间,现在我想其实这样的说法是不对的,你学到什么程度才算是学会?标准是什么?我以看到有个残疾人30多岁了才开始学单片机,我觉得很佩服也很怀疑,不知道他现在学的怎样,但肯德基是那位老人60多岁以后才建立的事实是真实的,而且就在你天天上班经过的地方。或许我们看了太多成功人士年轻的时候就有不同于常人的举动这样的例子了,才怀疑到底自己是不是那块料。我想只要有自己的目标和切合实际的计划以及有耐心执行下去,大部分事是可以做到的,当然没有一份对目标的热情也就可能没有那份耐心了。目前我只是调通了一个2410而已,或许我没有资格说这样的话,交流嘛,就当我是随便说说罢了,希望对你有所帮助,也希望大家说一说自己的故事。
已投稿到:
郑重声明:资讯 【基于ARM9的开发板DIY笔记【1】_michael_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——