前传篇

虽然到现在为止我的arm9还没有做出来,目前只调通了一块。写这篇文章的目的,就是想和嵌入式爱好者做一个简单的交流。

2002.9月以前我是做龙珠的(dragonball vz)软件的,使用的是uclinux,因为一直使用公司的板子,也就是那块motorola的ads板。觉得上面的东西看起来不是很复杂,因此很想自己做一个龙珠的板子来玩uclinux,但是我不会使用任何一个画板的软件,最多也就会使用protel画画原理图之类的(现在想想,从原理图到pcb还是有挺多细节要注意的),后来在一个朋友的帮助下,我十分生疏的画了一个龙珠的简单的板子。不像学软件那样,买本书,有台电脑就差不多够了。制板是要掏钱的,我的薪金一直偏低,在女朋友的支持下,我终于拿去制板了,接下来就是买元件(十分简单但是又十分繁琐的一件事)。再接下来就是焊接了,大学时有个电子工艺实习,我学会了焊接电烙铁焊接直插元件,但是面对tqfp的144脚表贴元件,我还真不知道怎么下手。我又在网上结识了另外一个朋友,还到他们的实验室看了一下怎样焊表贴元件,觉得也不是很难嘛:),观摩回来我就自己试着焊接,最后出来了,黑糊糊的一堆,反正是很难看的东西了。期间尝试使用锡浆,助焊剂,松香水之类的。不过我很幸运阿,这个板子可以跑uclinux。
再到2003春节的时候,(此时国内的arm7板已经发展起来了)我又重新做了一个龙珠的板子,这次参考了其他一些漂亮的板子,因此看起来比上次那个顺眼一点。还写了一个详细的文档,我的目的就是:卖。至少要把成本收回阿。我把做好的板子首先送给了一位朋友,他建议我做个arm9(2410)的板子,我就开始在三星网站找资料,不过我还是和深圳另外一个朋友一起合作把龙珠的板子整理了一下,写了几个简单的演示程序,准备卖几块。不过在arm7的势头下,dragonball已经鲜为人知了,在龙珠上,我和深圳的朋友已经尽了最大的努力,这件事上,深圳的朋友至少在钱的方面,帮助了我很多,在他身上,我还学到做事要认真、要有耐心、对用户负责的精神,从内心中,我一直都很感激他。后来接了一个龙珠的小项目,还有一些其他事,我就回到广州了,那是在今年6月底。
回到广州,女朋友刚刚动完一个手术,身体很虚弱,陪了她两周,然后就想在她家附近找类似机关单位的工作,亲戚帮忙介绍了几个,大部分都只是和负责人见面谈了谈,我就不想在那种单位呆了。因为我发现有的工作台连台电脑都没有,要不就是跟一群当地没有工作经验的大专毕业生在一起,和嵌入式丝毫没有关系,并且要十分注意脸色行事。有一家办公的环境还不错,刚刚上午说了要我帮他们搞个linux网站,下午就被派去施工安装网络插座了,说是领导安排要先在底层锻炼几个月再说。并且没有宿舍,三餐自己掏钱,工资不到2000,附近租房出奇的贵。折腾来折腾去,一个多月就进去了,结果什么都没搞成。这时接的那个项目催的又急,gf父母那边又相处的不是很好。干脆,我就在广州租了个房子呆下去了(想想一年来我寄居过、租过不到7平方米的地下室、四周阴暗又不通风的民房。。。这次租的是一房一厅,感觉还不错)
到8月份的时候,我终于勉强把客户的那个龙珠板设计出来了。那是我第一次做四层板,总共做了8块,深圳的朋友当时给了我一些够用的龙珠芯片。当时正值沿海的热浪袭击,我又住在顶楼,天气热的要死,楼下就是一个超市,天天在做宣传促销活动,并且还是几个公司一起搞,结果几对大音箱互相争霸,主持人简直就是歇斯底里的喊,我还打电话到南方都市报投诉,但没有任何结果。我拿着电烙铁一边焊一边骂,谁知焊了第一块板,一点反应也没有,就焊第二块,又是没有反应,当时穿着短裤,融化的焊锡一不小心就掉到腿上,到现在还有个疤,我简直又气又急。看看剩下的芯片和板子,又仔细检查原理图和pcb,真是好郁闷啊!我就想,反正有8块板呢,我才焊了两块而已,不行就接着焊,于是终于在第四块板的时候跑起了uclinux,接下来的一个月就做相应的软件。这时我自己攒的钱已经花的差不多了,这么久没有去工作,心里很急啊!那时我几乎每周都去招聘会溜达一圈,期望能在广州找个自己喜欢的合适的工作。但是自从今年下半年以来,工作出奇的难找。我天天都在安慰自己,一定能找个好工作的。我女朋友也鼓励我要找个自己喜欢的工作。另外我接的项目要的钱也很少,只有几千块,向客户苦诉了一番,才又多给了2000。做完龙珠的几个软件(也就是几个简单的驱动程序和测试代码),我就拿到一些钱了,心里稍微安慰了一下。这时已经到了国庆节,arm7的板子在国内已经遍地开花了。我找和以前那个朋友又见面商量了一下,问他能不能帮我搞定2410的软件,于是过完国庆,就开始参考mizi设计arm9(2410)了。
到那时我已经好长时间没有工作了,也逐渐的适应了,大不了再跑去东莞或者深圳打工嘛。我今年25,感觉还不算老啊,年轻的资本就应该这样挥霍。从国庆开始,我在墙壁的四周写下10月份的目标:设计出2410的板子。于是,第一次做完一个4层电路板,我就开始第一次做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次,最后郁闷至极。幸好第二天晚上有个朋友带了个笔记本过来问我一些龙珠的问题,我就接到他的笔记本上试着烧,这次竟然写入了,原来是我的主板并口有问题,我又连上串口,很顺利的就跑通了vivi,到现在为止,至少证明我的板子还是有点动静了。
我接着又试着烧写zimage(压缩的内核),结果使用minicom怎么也下载不了。我怀疑是不是我的电脑有问题,就转到win2000里用超级终端,这次又比较顺利,但是虽然写入到flash了,就是运行不了linux,接下来又是问朋友,在朋友的帮助下,linux终于起来了。同时,我也焊接了其他四块板子(bga我只贴了5片),但是无论我怎样找原因,就是不能跑起其余的四块板子。我冒险把已经跑通的板子上的大部分元器件拆下来(cpu除外),和不能通的板子相互调换,结果还是不行,而那个好的板子照样可以跑。这些步骤,我断断续续持续了一周多了,现在依然困扰着我。我几乎每天晚上都在用两把烙铁拆芯片、焊接、飞线,用放大镜和万用表查找虚焊、短路,结果一无所获。
我做2410的目的想必大家也十分清楚,就是么做一个给大家玩的板子。大家都喜欢便宜的东西,殊不知对个人和小公司而言,为做一个嵌入式开发板,是多么的辛苦,上面很多情况我都是一笔带过,甚至有的都没有提及。我是全职在做这个东西的,而且我是个新手(想必做面对一款新的没有用过的cpu,每个人都是新手)。全职尚且需要这么多时间,更何况业余做开发板的了。业余里做板子没有更多的时间,打电话买芯片不方便。。。诸此种种,没有一份对嵌入式的一种真心的热情,很难说能有耐心坚持做下去。现在大家都喜欢免费开放的东西,可是就算是给你一个完善的原理图和一个正确的pcb文件,没有半年的时间,也是很难上手的。我认识的做类似开发板的,无不有一个难以忍受的经历,从发出pcb到制板厂那时起,就注定要走这一步。大致这个流程是这样的:找资料->做简单测试试验->设计原理图->做封装->设计pcb->制板->买元件->焊接->调试硬件->修正硬件->调试软件->写说明书->包装邮寄->技术支持。这其中有些过程看似很简单,但如果只有一个人来做的话,会不知不觉的花费很多的时间和精力。其中的每一个步骤,都不是个人和小公司所能耽误的起的。
这里面或许我是有一些抱怨,但我很高兴仍然能做自己喜欢的东西。欢迎大家和我多一些技术上的交流。我暂时没有太大的目标,只想调通其余的四块板子;-),或者你还是建议我重新做一个?谢谢!

硬件篇

今年春节总算可以安心的回家过年了,目前我做的5块新板都可以正常运行linux了。很多朋友问我我是怎样调试板子的,现在我把做板的过程大致给大家说一下,希望能对各位嵌入式爱好者有所帮助。

先从工具说起吧,俗话说:“工欲善其事,必先利其器”,但是因为我自己没有太多的资金买高级的工具,因此只能用土枪土炮来形容吧。
首先这个过程中我没有使用示波器、仿真器、热风枪、恒温烙铁之类的东西,我从一开始学着搞硬件使用过多种烙铁,直到目前我仍然觉的自己的烙铁不太好用,虽然是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而已,或许我没有资格说这样的话,交流嘛,就当我是随便说说罢了,希望对你有所帮助,也希望大家说一说自己的故事。

设计篇

我追求完美的人生,也追求完美的设计。

作为一名开发人员,在你的印象中,开发板是否只是呆在实验室里足不出户的一团电路板?拿起来总是“剪不断,理还乱”。。。 当你看到我手中拿的这块“便携式arm9”开发板,或许你就要改变 一下你的看法咯:-)

一直以来,我就想设计一块很“酷”的电路板,如今这个想法终于实现了。现在就谈谈我是如何做的 吧,希望对各位有志于有同样梦想的朋友有所帮助。

想必很多人对我的第一篇文章“前传篇”有所了解了吧,那篇文章中设计的那块板子无论样子还是 功能都只能用“丑陋的令人发呆”来形容。但爱因斯坦也有过做第一个小板凳的经历啊,哈哈。。没错,那是我设计的第一块arm9电路板,使用的是三星的s3c2410x,正是其中一块板的调试通过给了 我继续的信心,现在的这块是第三版,就是从那开始一步步发展来的。

(我不知道何时变得希望追求完美,但我对大学时看的一本好像名叫《硅谷狂夫》的传记的某些描述印象很深刻。那是讲述苹果电脑创始人steven jobs的传记,其中一个地方说道渥兹设计的电路 板不仅仅就是能work就行了,而且每条电路线设计的都很规整,就算从机壳里拿出来,看起来都很美观,那简直就是一件艺术品,因此我也一直梦想自己有能力雕刻一件这样的电路板。)

其实从第一版开始,我就考虑着该如何设计才能美观一些,但因为某些地方原理不对,只能“飞线” 解决拉。自从第二版设计完,经过很多测试之后,确定关键电路和各功能电路运行良好了,我就天 天想着怎样设计才能“既实用,又美观”,下面是我的一点分析。

从实用角度讲,作为开发板,应不依赖于其他任何接口板就能独立运行,而且接口方便(个人观点)。 因为2410的功能模块挺多的,所以板子要尽可能发挥出它的功能和性能,如usb host,usb slave, ad转换,lcd控制器,sd卡,实时时钟,spi控制器,三个串口,音频播放等等。在扩展接口上,鉴于第二版使用紧凑型扩展插座带来的不方便,第三版就选用了2.0mm间距的插针型接口。像一些比较 通用的功能接口(如serial1, usb host/slave, ethernet, audio, matrix keypad, sd card, jtag)就直接像电脑主板那样,使用相应的接插座把它们引出了;其他嵌入式密切相关或不太通用的一些接口(如ad input, gpio, spi, lcd, pwm,其他的串口,系统总线等)就使用插针的方式引出。
另外,我还参考了很多的开发板及产品相关的设计方案,特别地安排了这些接口的定义(主要):
1. 电源管理接口。2410是一款针对手持设备推出的芯片,电源管理相当重要。但凡做过手持产品开发的人,想必大都体会过电源管理的艰辛。实话实说,我本人没有这方面的设计经验,也不想 趟这摊子混水,因此就参考很多的电源管理方案设计了一个电源管理模块接口,至于怎样具体设计,那就让用户自己去选择实现吧:-)。或许没有做过的人认为电源管理很简单,如果你不相信,可以大 致这样说一下吧,假设一个产品需要实现开关机保持同样的界面和开关机环境,以及最低的系统功耗。为了实现这个功能,要有随时检测电压,控制电压,保存内存数据,恢复内存数据,还有lcd的 开关时间,背景光的调节,实时时钟等等这些硬件电路的实现,至于软件的实现,我想单开关机系统环境的保存就够你折腾了的吧。基于此:我设计了如下的电源接口(当然,这个接口最多也就实现 中级的电源管理):
+12v +—+ 1.8v
usb_5v +—+ 5v
vdd_rtc+—+ 3.3v
gnd +—+gnd
ioctl1 +—+ ioctl2
adin1 +—+ adin2
i2csda +—+ i2cscl
2. lcd接口。2410支持的lcd挺多的,stn的如黑白屏、灰度屏、 256色屏、4096色屏。 tft的 如1,2,4,8,16,24-bpp(bpp是每个象素由几个bit实现的意思)。因此板子的lcd接口相关引脚就多拉, 在此就不列拉,有翻译手册之嫌:p
3. spi口。这个就不是俺的首创拉,直接把cpu的的引脚引出来就是拉,具体也不罗列了,需要知道的是2410有2个spi。
4. gpio接口。其实这是个大杂烩,包括了2个ad输入(用户触摸屏),5个外部中断,2个pwm/timer, 4个触摸屏监控等等,当然有些口是可以复用的。
5. 矩阵键盘接口。既然板子上有键盘了,为何还要引出这个接口?这是因为某些人可能不喜欢上面的按键排列形状,或者不喜欢固定在板子上的按键,因此就可以使用这个接口设计自己的键盘了, 是不是很方便:-)
6. 总线接口。也许你以为板子上有个ide接口,那真的很遗憾了。遵循产品开发的“kiss”(keep it simple, stupid!)的原理,我只在上面留出了供用户扩展使用的总线接口,它包括16位data线, 25位地址线,还有一些总线控制线,像片选,读写,等待,复位等等,未知的扩展还需要您进一步的开拓啊。
有人说,设计电路不板“功能第一,美观第二,可制造性第三”。现在就交流一下我是怎样在美观方便如何设计的。
我不是学美术的,也没什么艺术细胞,看不懂“蒙那里沙的微笑”,因此现在我能做到的,或许你比我做的会更好。一个电路板的“可欣赏性”和布局关系密切,不要祈望任何一个eda软件能够给你一个满意的 布局,如果任何人打算使用自动布局,那结果可引用周星星的话“简直就是一坨shi”,这包含两个意思,一是它没什么用,二是它也不好看。所以你要手工安排元器件的位置,至少让它可以用吧,就像我早期设计的一些电路板。安排元器件的时 候有一把游标卡尺比较好,可以做到大致精确的测量,把需要固定位置的大部件先安排下,主要是插件之类的,然后是放置主要ic(cpu, sdram, 网卡,按键,扩展口之类的),其次是小部件的放置。布线的 时候还要作一些调整。或许讲这方面经验的地方挺多的,如21ic的电路板设计论坛,pcb技术网等等,所以我也就不多罗索了。
不知道别人设计电路板或者布局电路板的时候有没有创意这样的说法,为了让板子更方便使用,看起来更漂亮一些,我确实是参考了一些电子产品杂志,诸如《新潮电子》,《世界发明》,《数码》之 类的,里面通常介绍一些新鲜的玩意,如果你觉得在网上可以查到或者浏览到那些产品的信息,我也无话可说了,因为我一直以来上网不太方便,因此只能买些这样的杂志看看新鲜的电子玩意拉。不管我能不能上网, 《新潮电子》这本杂志去年和前年我几乎是每期必买的,我喜欢翻起来那种实实在在的感觉,而不是点一下看一看过几分钟就忘记了。现在的这类杂志大多都是彩色印刷,产 品图片的质量很好,而且不时还穿插一些漂亮mm的照片,真的可以带给人很多遐想啊:-),例如《世界发明》(2004第3期)第15页介绍psp(playstation掌上游戏机),设计的真是很简洁啊,按照面板的设计,我 设计的这个第三板如果加上用户自定义的按键(分为左右两边),中间再贴个屏,把四周围再修整一下,那样看起来还真有点像兄弟俩;再翻到98页那个epson p-1000数字相册,在右边加个数码键盘面板,左边贴 个屏,也可以做个demo拉;还有《通信技术》2004第2期的59页那个富士通-西门子pocket loox610掌上 电脑旁测的sd卡插座,我的第三板sd卡位置就是参考这个产品定下的,以及众多手持设备类产品的底层按 键位置设计。至于侧面的那些rj-45,com口,usb口,audio,侧面复位等等是看一些电脑城笔记本的侧面布排而来的。
可制造性咱就不说了,开发板这东西,市场小,没什么量,一般布局工整了,可制造性也就会好一些。
一个开发板,除了“实用,美观”还要考虑什么?
所谓开发板,就是用来作开发和学习用的板子。有人作开发给自己用,有人作开发给别人看。自家用就不必说太多了,就像找老婆的,吃饭时看着不会吐就行了;给别人用的就有点不妥了,特别是作个demo给 投资商看,投资商是玩资本的,懂技术的少,特别是在中国,很多是靠关系暴发起来的。你送个恐龙式的 “丑八怪”过去谈项目,那就不容易成了,你把它打扮一下,化化妆,或许就很容易谈成;关于这些我也没什 么经验,听朋友的讲的,瞎掰而已。
另外,对工程师或者开发人员来说,能让别人欣赏到你的设计,心中总是感到很欣慰,我作2410这块板子就考虑到了这一点:不仅仅让它成为实验室里的东西。因为它的确很小,而且可以独立运行,因此完全可以把 它带到室外在朋友面前炫耀一把,因为我们还没有在上面接一个调通的液晶屏,或许它看起来只是一块电路板而已,相信大多数外行的人看到会认为它是在太高深了,看不懂。呵呵,再等等吧,总有一天,我们会给它穿上 一件漂亮的外衣。到时您就可以把您设计的程序像照片浏览,无线上网等等好玩的东西与您的朋友分享了。

路漫漫其修远兮,吾将上下而求索…

做ARM的一些前后经历——转载的相关推荐

  1. 一个大学生的编程经历(转载)

    一个大学生的编程经历(转载) 新浪科技推出了"我的编程生涯"有奖征文,目的是让中国数千万的网民"聆听"中国软件人才的最真切的"声音".我们热 ...

  2. 做基础产品的体会【转载】

    原文地址:http://jm-blog.aliapp.com/?p=934 一个公司大了,总有部分人要去做一些通用的东西给大家用,我这里说的基础产品就是这类通用性质的东西,不一定高科技,但是一定很多人 ...

  3. 我在朝鲜做生意的一段经历(转贴震憾长文)

    神秘的国度 我生活在边陲城市丹东,从小在鸭绿江边长大.这里和朝鲜隔江相望,对岸就是朝鲜平安北道的首府新义州市.鸭绿江最宽的地方不过1000米,站在江畔,对岸的建筑.路上的车辆.行人都看的一清二楚.可毕 ...

  4. 微信营销这么做,你就成功了 转载

    时下最流行的营销工具是什么?毫无悬念,非微信莫属!做微信者众,懂营销者寡. 有人曾问我,微信应该怎么做? 我就问他了,你想要做什么呢? 他沉默了一会,说,你是专业的你怎么问起我了? 我就告诉他,你要什 ...

  5. 我在华为做Android外包的真实经历!吊打面试官系列!

    导语 本部分内容是关于Android进阶的一些知识总结,涉及到的知识点比较杂,不过都是面试中几乎常问的知识点,也是加分的点. 关于这部分内容,可能需要有一些具体的项目实践.在面试的过程中,结合具体自身 ...

  6. 一个初中生到程序员的辛酸经历(转载)

    今天在论坛上看到了一个兄台的帖子,很是鼓舞,但确实以发帖的形式写的,看起来不方便,所以便将零散的段落收集起来,发到自己的博客中,望兄台理解.原文如下: 前言:我将写下一个穷苦家庭的农村孩子的经历.我念 ...

  7. 转行做软件编程开发的经历

    对于现在毕业之后,大部分找不到合适的工作,转行到软件开发(大部分是JAVA)的人来说,分享下自己的经验 首先,描述一下自己,我是13年大连一个二本院校的毕业生,大学的专业是电子信息工程,输入弱电类,其 ...

  8. ARM服务器开箱测试【转载】

    公司购买了一台高密度ARM集群服务器,供应商为成都凌点科技有限公司,拿到后第一时间进行开箱测试. 1.MARS3000技术规格 MARS3000是一台高密度ARM集群服务器,采用刀片式结构,最多能支持 ...

  9. 请不要做浮躁的人!(转载自勉)

    1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么.当你自己想 出来再参考别人的提示,你就知道自己和别人思路的差异. 2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人 ...

最新文章

  1. Squid下Http头信息优先级
  2. POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
  3. 启动多个pid_西门子S7-300PLC实现PID控制
  4. 正则表达式中的小括号用法
  5. vscode跳转到指定行快捷键
  6. Web Service简洁版调用公开手机api
  7. 计算机系统时间无法更改,电脑时间不能修改|系统时间改不了 四个处理办法
  8. 面试官让我讲讲Java中的锁,我笑了
  9. mysql 学习笔记07日期相关函数01
  10. 《游戏编程入门 4th》笔记(1 / 14):Windows初步
  11. 工具资源系列之给虚拟机装个windows
  12. 基于最大正向匹配算法的中文分词
  13. C#弹出窗体、C#导出Excel、C#数据展示框、C#弹出框
  14. android ppsspp 存档位置,小鸡模拟器游戏存档在哪个文件夹
  15. php导出excel 繁体,php导出excel并解决乱码问题的方法介绍
  16. 简单的木马制作并且运用
  17. cadence ~ PCB排版 必要流程
  18. 学习日记 | 云计算 - 服务模型 - 三层架构(深度学习)
  19. 2023年最新微信记账小程序源码+简约大气
  20. 关于两个Myeclipse共存的问题,同时激活的问题

热门文章

  1. 网站开发-实用SQL语句大全
  2. 工具-安装redis和安装redis客户端
  3. matlab 蒙特卡洛法书籍,[转载]matlab的蒙特卡洛算法
  4. BadUsb----结合实例谈此类外设的风险
  5. Uncaught Error: Undefined constant “Ford“
  6. 无线服务器怎么开启,无线wifi路由器关了怎么开启
  7. R16 NR CDRX
  8. 为什么1个字节是8个比特?
  9. bes2300 tws配对_功耗仅4mA!BES恒玄推出TWS蓝牙耳机芯片BES2300
  10. oracle 11g 数据泵导出 19c导入