热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个简单的Arm开发板的制作过程

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

做一个简单的、自己学习用的arm开发板,不仅可以节约成本,还能享受其中的乐趣。今天我就将自己在制作嵌入式开发板过程中的一些经验和步骤讲给大家,希望对大家有所帮助!

本文tag:arm开发板 arm7 arm9 S3C2410核心板

一、原理图的设计

首先,你先要考虑自己打算做一个什么样的板,是为了完成某个项目,还是做个学习用的板。明确目的后,开始设计原理图。目前我们常用的ARM开发板多是三星的,也有PHILIPS的。这两大类芯片在网上可以找到很丰富的资源,包括原理图和测试程序,尤其是44B0的芯片,资料几乎是满网飞了。找一个芯片的原理图,在其基础上做些改动,使之更适合自己的实际应用。 ARM7的芯片使用起来会稍微简单些,毕竟其原理构造和普通的51单片机有些类似,不需要太费事就可以完成。 对于ARM9的,设计原理图会比较麻烦。建议采用核心板的方式,把ARM芯片和存储器放在一个小板上,然后再做底板,这样即使设计出了问题,也方便重新修改设计。

原理图方面我就不多罗嗦了,网上大把参照图,DOWN下来自己修改就可以了,确定原理图无误后,就需要开始布板了。

对于ARM7,速度比较低的那种(100M以下的),板只要布的合适就可以了,没有什么特别值得注意的地方,有些信号线上可能需要串上一些小电阻,做高频电阻匹配用。

对于ARM9的板,最少需要4层板。(如果双面能把线布下,双面板也可以的)。这里也许有人会问,4层板是否够用。我觉得是完全够的。我自己设计过一个S3C2410核心板,用4层板做,在200M下也能正常工作。 另外,我从网上下了个6层板的PCB,我把它改成了4层板,虽还没来得及调试,我估计工作起来也不是问题。为什么我这么说呢,因为看整个电路就可以大概知道一些,只要你布的板把电源和时钟处理的得当,其他逻辑信号线不是什么太大问题。当然了,前提是逻辑信号不能乱布。

这里需要说明一点,做4层板完全是为了自己学习用,因为做6层板的价格太高了,个人承担不起。但如果你是打算来做工业设备或实际项目,还是使用6层板吧,这样能够在硬件上起到一定的保障作用。

二、PCB加工

板布好之后,就要外发加工了。如果你是公司给你做板,那就不用开这个部分了。个人做板的可以继续看下去。

找厂家做板就有些技巧了。先说双面板的。双面板普通厂家都可以做,线距和ARM7芯片的引脚间距一样就可以了。宽一点更好。价格一般不会很贵,有200块RMB就足够做5个板来让你调试了。北京和深圳的行情好象不太一样。在深圳好象是需要收大概600块的工程费,然后是按面积算。北京则是直接按面积算,总价需要在100块上以上,不足100的按100来算。同时北京还可以自己来定做板方法,比如板上不加丝印、不镀金来降低价格。不管怎么说,只要耐心找,总能找到一家适合自己的厂家来做板。当然了,也有些厂家价格低,质量也会梢差一点,做好的板拿回来仔细检查,就不会影响到我们测试。我和另一个同学04年的时候,在北京用了150块钱做了3个板,没有丝印,没有铣边,仅仅镀了层锡。回来后自己把板处理一遍。检查出了一处短路(我们布的那个板,线条过细,线距也很小,这是到后来才知道的)。修理完后焊好的板工作很稳定。

再说多层板的。由于多层板一般多用于BGA封装的芯片,检查的时候就不容易检查,加上内层布线我们看不到,在选厂家的时候需要适当选一些可信的厂家,最好是能做飞针测试的厂家。做一个4层板的模费大概是在1000~2000, 个别厂家可能会要2000以上,但那种厂家是能保证给你的板绝对OK的,有的时候为了板的质量,也需要牺牲一点模费。一般,你付足模费钱后,厂家可以免费给你做几个样板,如果你想多要几个板,一定要提前跟厂家说,他们可能会多收一点钱,也可能不收钱。这样看你的谈判技巧了。因为他一次做一个板和一次做30个板的价格是一样的

做板方面需要注意的是,板拿回来后需要仔细检查,发现开短路的地方需要及时修理。所在地没有加工板的地方,可以考虑网上订做。他们做完后可以邮寄给你,价格方面需要自己去谈了。

三、元件的购买

购买元件很容易。当然了,你得找到合适的货源。北京的方面,在中关村就可以找到芯片。像电阻电容这样的元件也可以零售(100个一卖)。

深圳这边好一些的店面一般不零售。但这没关系,在华强多转转,慢慢的和店老板磨一磨,拿上一两百个元件还是没有问题的。

如果不能找到像北京、深圳这样有专门电子市场的地方,也不要放弃,可以考虑在网上找一找,有些地方是卖套件的,可以自己买一套来玩玩。价格不会差很远的。元件购买方面需要注意的是,不要卖到翻新件。

四、元件焊接

板拿回来后,就需要开始焊元件了,TQFP封装的芯片会比较好焊,焊盘上先上锡,然后一个脚一脚的焊上去就可以了。当然也可以采用拖焊的方法,总之,只要焊的牢靠就行了。

对于BGA焊接,可能会更简单一点。因为BGA焊接是外发加工的,自己最好不要焊。焊接GBA芯片最好是找那些修手机或是修笔记本电脑的厂家焊。就算他们没有专门焊接BGA的设备,凭他们的经验,也可以把芯片焊好。焊接BGA芯片的价格差距很大,价格大多在100块左右的。不过也有便宜的,我在华强找的一家,焊个S3C2410只要20块,成功率在90%以上,我在那里焊的几个板,没有一个有问题的。如果是批量生产,还是找比较好的加工厂做吧,毕竟少修电脑的厂家只是拿来给我们自己玩玩罢了。

焊接调试过程中有个小技巧,也算是一个注意点。板最好是焊一部分调试一部分。一般焊接调试的顺序是:电源->主芯片外围器件->主芯片->SRAM->FLASH->其他外设。按照这样的序调试焊接,优点在于能一步一步的排除问题点。假设,当你把主芯片,存储器都焊好,而且也调试可以工作了,再去焊你的电源,结果板上的电源部分出问题了,一个高压窜到了主芯片上,那后果不是很严重?

五、电源、主芯片的电路调试

焊好电源,把板上主芯片位置与电源相连的引脚测一遍,看看是不是需要的电压,这样做可以保证主芯片供电正常,使主芯片能够工作。

电源部分调试完成后,接下来是焊与主芯片相关的外围元件,如复位电路,时钟部分,JTAG接口部分,系统配置部分。这几个部分焊好后,再焊上主芯片,和主芯片一起调试。

主芯片焊好后,通过JTAG接口连接到电脑上,在电脑上用JTAG调试代理软件,就应该可以检查到板上的芯片了。如果不用代理软件,用ulink之类的东西也可以。不过个人觉得用代理软件最简单了。如果软件检查不到,则表示主芯片没有正常工作,或者JTAG部分没有工作,这个时候就需要详细检查各个部分了。一般来说,这个环节是整个调试工作中最重要的部分,主芯片如果不能工作,其他元件就不要再焊了,焊上也没有意义。这个环节容易出问题的就是复位电路工作不正常,主芯片某些引脚虚焊。主芯片的系统配置正确与否暂时不会影响到芯片是否工作,可以最后检查。

当电脑能够成功的检查到板上的芯片时,激动的心情也会随之而来。哈哈~~~

六、SRAM、FLASH的调试

接下来,需要调试的是SRAM。

为什么是先调试SRAM而不是先调试FLASH呢? 因为SRAM可以直接由ARM芯片来读写,只要信号线接的没错,系统设置没错,那SRAM一定会工作,除非你买到坏的SRAM。用JTAG接口将板和电脑连接,打开AXD的Command line和Memory watch,使用命令行来对芯片进行初始化。AXD中使用setmem命令对相关寄存器进行设置。如果不知道如何使用Command line,可以在命令行中输入help来查询。设置完寄存器后,后在Memory watch中修改对应地址单元的数据,就可以看到修改后的数据保存下来了。我用这个方法测试过LPC2214,4510,44B0,2410,都可以用这个方法来测试SRAM是否已经工作了。

当使用这种方法修改SRAM数据,需要注意的是,你所修改的地址,必须是位于SRAM地址范围内的,否则修改后不会得到正确的结果。如果发现修改后的数据不能得到你想要的数据,可能存在两个问题:1是电路板上数据线存在开短路。2是芯片的初始化设置不正确,导致存储器映射错误,修改好即可。

一般来说,SRAM如果能够顺利工作,则FLASH也可以顺利工作。焊好FLASH,使用FLASHPGM烧一个程序来实验一下。如果能顺利烧入,则表示FLASH可以正常工作。如果不能正常烧入程序,多半情况是焊接不够好,FLASH可能存在短路或者虚焊。这里需要知道一件事,FLASHPGM软件是利用SRAM来烧录FLASH的。它先将一段可以烧录FLASH的程序下载到SRAM中,运行这段小程序,然后再烧录FLASH,所以你提供给FLASHPGM的芯片初始化程序必须正确,这样才可能正常烧录FLASH,否则烧录肯定是失败的。

对于2410这种既挂NAND FLASH又挂NOR FLASH的芯片,调试起来也很容易。用FLASHPGM调试NOR FLASH,用三星提供的那个小烧录工具调试NAND FLASH。

调试到这里,说明你的板已经可以工作了。焊好串口部分电路,写上一段程序测试串口,调试串口部分。串口部分可以工作后,你的开发板就可以用了。当然,你的板上肯定还有其他东西,不要着急,一点一点的调试,总是可以调试完成的。整个板的调试过程中,越是靠前的步骤就越是难调,后面的外设相对好调一些。总的来说,只要你想办法,板是一定可以做成的,调试也可以很快完成。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
author-avatar
qqq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有