最新日志

发表于:2007-8-16 8:35:42
标签:无标签

0

STC单片机的优点

★加密性强,很难解密或破解,解密费用很高、国内能解密的人少,一般的仿制者望而退步.
★超强抗干扰:
1 、高抗静电(ESD保护)
2 、轻松过 2KV/4KV快速脉冲干扰(EFT 测试)
3 、宽电压,不怕电源抖动
4 、宽温度范围,-40℃~85℃
5 、I/O 口经过特殊处理
6 、单片机内部的电源供电系统经过特殊处理
7 、单片机内部的时钟电路经过特殊处理
8 、单片机内部的复位电路经过特殊处理
9 、单片机内部的看门狗电路经过特殊处理
★三大降低单片机时钟对外部电磁辐射的措施:
     ——出口欧美的有力保证
1 、禁止ALE输出;
2 、如选 6 时钟/机器周期,外部时钟频率可降一半;
3 、单片机时钟振荡器增益可设为 1/2Gain.
★超低功耗:
1 、掉电模式:典型功耗<0.1 μ A  
2 、空闲模式:典型功耗2mA
3 、正常工作模式:典型功耗4mA-7mA
4 、掉电模式可由外部中断唤醒,适用于电池
    供电系统,如水表、气表、便携设备等.
★在系统可编程,无需编程器,可远程升级
★可送 STC-ISP 下载编程器,1 万片/人/天
★可供应内部集成 MAX810 专用复位电路的单片机,
只有 D 版本才有内部集成专用复位电路,原复位电路可以保留,也可以不用,不用时 RESET 脚直接短到地
★STC单片机直接替换ATMEL,PHILIPS,Winbond产品
STC89C516RD+取代 P89C51RD2/RD+/RD,W78E516
STC89C516RD+取代 AT89C51RD2
STC89C58RD+取代 PHILIPS P89C51RC2/RC+/RC
STC89C58RD+取代 AT89C51RC2/RC,89C55
STC89C54RD+,取代 AT89C55,89S52/53,89S8252
STC89C54RD+,STC89C53RC取代 W78E54,W78E58


STC单片机程序破解:
STC单片机是由美国设计,国内宏晶公司贴牌生产的,这个芯片设计的时候就吸取51系列单片很容易被破解的教训,改进了加密机制.STC单片机出厂的时候就已经完全加密,用户程序是ISP/IAP机制写入,编程的时候是一边校验一边写,无法读出命令,这个增加了解密难度;STC空间分为:1、BOOTLOAD 2、应用代码 3、EEPROM ,我们解密主要是针对BOOTLOAD区破解,联后读出程序,最新版本的STC芯片去掉BOOTLOAD区;现在发现某些新版本的STC使用SST89E564的电路(也有可能是人物打抹重新LOGO).所以STC解密很难,目前我们可以解密如下:

STC89C51RC型STC单片机解密/破解
STC89C52RCC型STC单片机解密/破解
STC89C53RCC型STC单片机解密/破解
STC89C54RD+C型STC单片机解密/破解
STC89C58RD+C型STC单片机解密/破解
STC89C516RD+C型STC单片机解密/破解
STC89LE51RCC型STC单片机解密/破解
STC89LE52RCC型STC单片机解密/破解
STC89LE53RCC型STC单片机解密/破解
STC89LE54RD+C型STC单片机解密/破解
STC89LE58RD+C型STC单片机解密/破解
STC89LE516RD+C型STC单片机解密/破解
截至到2006.4.5号,除 STC89LE516RD+ STC89C516RD+成功率 60%以外,其他STC芯片解密几乎成功率100%
从2006.4.23日开始,所有STC单片机解密起步价格是1.2W,请解密者慎重考虑成本后再和我们联系,谢谢!
从2006.4.16日开始,诚招国内STC单片机解密(破解)代理商,具体要求是需要再我们这边做过1个STC解密的非上海客户,有一定的客户资源;我们将给代理商提供优惠的价格.
保证自芯片收到之日起一天内做好

点击此处查看原文 >>

系统分类: 汽车电子   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(1100)
发表于:2007-8-12 12:47:32
标签:无标签

0

基于arm+uClinux的嵌入式系统的开发(转贴)

 
前些日子基于arm+uClinux开发了一个网络监控系统,眼看项目马上要做完了,终于松了一口气,于是整理了一些笔记和心得想和大家针对这种开发模式进行一些探讨,希望对各位有所帮助。
按照我的开发过程想分以下几部分逐一介绍。
1.开发平台的选择和论证
2.开发环境的建立
3.一般程序的开发
4.Linux程序向ARM+uClinux平台的移植
5.剩下的问题
希望诸位多多补充自己的想法,以利于大家共同提高。
1. 开发平台的选择和论证
一个项目拿到手,如何选择开发平台(主要是指CPU和操作系统以及开发环境和工具)应该说至关重要,有时这不光影响进度,产品质量,可维护性等一般问题,甚至涉及到方案的可实现性。本人结合自己的网络监控系统简单归纳了一些对平台的考虑,还请各位补充。
从系统功能实现考虑:
(1) 是否有片上外设,专用指令或配套的软件模块直接实现系统功能要求。 感 觉这一条对很多人的决策影响很大
(2) 价格
这一点应通过CPU提供的资源综合考虑,它提供了多少有用的资源,多少没用的资源(那可都是银子呀!),还是那三个字,性价比,另一方面,是要抓主要矛盾,是不是有些特性是必须的,什么特性是用户需求里的亮点(就靠这些亮点往上抬价),这时该花的就得花了。
(3) 功耗
本系统对CPU功耗要求不高,但对移动设备,这一点可是致命,而且这一点不是仅针对CPU,所有几乎器件都要勒紧裤腰带运行。
(4) 处理速度
这项不用多说,大家都明白重要性,但具体算起来可是一门学问,一方面是自己需要多快的速度,如果加上非实时操作系统这事就不好控制,余量还是大点稳妥,另一方面,CPU指令周期多少,有没有流水,有没有并行,什么体系结构,有没有专用指令(看人家DSP多牛,干这事一绝),对外部存储器和外设的存取速度等等,哪一个慢了都叫瓶颈。
(5) 需要的硬件支持(如外部存储器,双电源等)
这算是杂项,但会增加额外的价格,系统体积等,不容忽视。
从开发者的角度考虑:
(1) 是否有足够的技术支持包括demo版及原理图,demo程序,操作系统和BSP,测试开发工具等。
(2) 自身条件;包括对项目开发周期的要求,开发人员对器件和开发模式的熟悉程度以及掌握的难易程度。
(3) 可用资源是否丰富(书籍,网络等)
以上三点主要考虑迅速开发出稳定的系统。
(4) 系统的可继承性,可移植性和可扩展性。
(5) 是否有现货。
(6) 方案提供商的素质。(包括技术水平和服务意识)。
根据以上考虑选择了s3c4510b(ARM7TDMI)+uClinux开发模式
(1) 以下是该平台对我的系统的满足情况:(和上面几点对应)
本监控系统硬件部分主要要求以下部分:
a.以太网接口 (s3c4510b自带网络控制器)
b.串口 (自带)
c.与数据采集芯片的接口(8位数据线,小于8位地址总线)。(自带)
本系统软件部分主要要求以下部分:
a. 硬件接口驱动程序 (uClinux提供串口和网络控制器驱动)
b. 网络协议栈支持(uClinux提供TCPIP,UDP等的协议栈)
c. 应用层程序(如果算上可以从linux移植的程序来看,那就太多了,我就用到了一个现成的)
(2) 本应用系统不是那种批量的东西,对价格要求不苛刻,而且这款CPU最便宜可以到55左右,可以接受。
(3) 本应用系统有固定电源,功耗要求不高。当然,据说ARM在节省功耗上很有特点。
(4) 本应用系统速度方面要满足两方面:1。串口:115200bps 2。网络速度 能到10Mbps就行,所以对系统速度要求也不高。这款ARM内部可以到50M。
(5) 系统对体积要求也不高,加片flash和RAM还是没问题(到目前为止感觉我的系统真是无欲无求!)
从开发者的角度考虑:
(1) 因为时间很紧(一个半月),所以支持越多越好。目前从开发商那里拿到了开发板,原理图,uClinux,相应驱动,bootloader,拿来就可以用了。软件硬件并行开发。(bootloader和网络控制器驱动没提供原码,比较可惜:-(
(2) 当时我对嵌入式系统的开发模式和ARM都是只有耳闻,linux接触过一个月左右。现在想起来有些后怕。
(3) 网上的资源,非常多。
提供一些我常用的。
::URL::http://www.uClinux.org/ uClinux的大本营。
::URL::http://www.ucdot.org/ 里面有些技术文章非常不错。
::URL::http://www.linuxdevices.com/
::URL::http://www.linuxeden.com/ 这是国产的linux站点。
uClinux-dev@uClinux.org 这是uClinux的邮件列表,回答问题的都是大牛,非常有帮助,记住把你的邮件设置成纯文本格式。 申请是在:
::URL::http://mailman.uClinux.org/mailman/listinfo/uClinux-dev web方式。
(4) 采用以上开发模式,软件的可维护性,可移植性和可扩展性都不错。
(5) 目前该CPU使用还是比较普遍,现货没问题。
(6) 方案提供商的素质吗……..还算可以吧:-)
根据以上考虑和目前的开发情况,这套方案还是比较令人满意。
今天先回家了,下回介绍具体开发步鄹吧。
2.开发环境的建立。
先说两句废话为和我以前一样对操作系统(尤其是嵌入式操作系统)迷惑的弟兄解释些概念。因为总是有人在问是不是一定要用操作系统,我的CPU能不能移植操作系统,可以移植什么操作系统,有了操作系统可不可以运行某些程序。
从我的个人经历来讲,这其实就是许多硬件出身的弟兄对操作系统这个东西有神秘感(和我一年前一样)。说白了,操作系统就是一段设计非常巧妙的程序,和你自己的程序从本质讲没有区别,于是,以上问题转为,我是不是一定要用这段程序,我的CPU能不能运行这段程序,可以跑什么样的程序。这个程序可以跑,调用这个程序接口的另一个程序能不能跑!
答案也就变得简单,操作系统对任何一个CPU都不是必须的(对嵌入式系统更是如此),你可以自己编些程序在没有操作系统的PC裸机上跑(BIOS就是这样的),像玩C51一样,(虽然奢侈的让人有些心痛),或者移植UCOS到上面。另一方面,现代操作系统大多需要一些硬件的支持,(像保护模式的实现),反过来说,高端CPU中专门有针对支持操作系统的体系结构,这样,许多操作系统的实现是挑剔硬件平台的。其实其它程序也一样,你编的程序使用的片上外设另一CPU上没有,那这段程序就无法移植了。这就是话粗理不粗。书归正传,还是聊聊ARM+uClinux开发模式下开发环境的建立(其实下面说到的东西不仅限于这种硬件平台和操作系统)
很久以前就在介绍嵌入式系统开发的书上见过“交叉编译环境”这词,当时觉得很玄,用了以后才知道,其实就是解决在谁的地盘上用谁的工具编谁的代码问题。
编译的最主要的工作就在将你的程序转化成运行该程序的CPU所能识别的机器代码,不同的CPU有相应的编译器,另一方面。编译器本身也是程序,当然也要在某一个CPU平台上运行。于是交叉编译的交叉点就在那个编译器本身是CPU1上的一个程序,却在为CPU2编译代码(整个一个吃里扒外!)。这么一想,以前用51和dsp的开发软件(大部分都是IDE-集成开发环境)开发程序时,都算是交叉编译啦。当然,假如在你的ARM系统上,操作系统已经正常运行,并且你的资源足够多,你可以把PC机上运行的ARM编译工具移植到ARM上,然后所有该系统的应用程序都直接在ARM系统上编译,这就不算交叉编译,但如果有条件这么作,程序的开发或者移植就方便多了,因为整个开发过程又回到在自己PC机上编应用程序的那种模式了,那就是在自己的地盘上用自己的编译器编自己的应用程序。
与不使用操作系统的开发模式不同(此处的操作系统尤其指提供了专门的接口函数库的操作系统,目前的UCOS就不算),在目标板(就是实现系统的板子)使用操作系统的开发模式下,交叉编译环境中还需要该对应该操作系统的库。比如uClinux提供的uClibc。此时,开发用的主机上不光要有目标板CPU所需的编译工具,还要有对应操作系统的库,又因为一般库文件还要在开发机上拿目标CPU的编译器重新编译一下,所以还要把操作系统的原码也放到开发机上。(唉,跟目标板没什么关系,却要帮它背这么多东西,真是上辈子欠它的!!)。
虽然操作系统的接口库至关重要,但大家似乎已经淡忘了它的存在。这些多是因为大家已经远离了刀耕火种的年代(需要告诉编译器需要的include路径,lib路径,以及lib的名称),集成的编译环境让我们编译链接的所有繁琐工作化作对BUILD按钮的潇洒一击。而且不论是windows环境,还是linux环境,都有环境变量去记录这些参数。。但尝试将/usr/lib目录改一个名字,你就会知道你不能无视他们的存在,因为操作系统的功能都是通过这些库来交给应用层程序使用的。当然如果你的系统不依靠任何操作系统,像最原始的那种完全自己实现所有代码,就只需要一个编译工具,少了这些罗嗦事。
以上的东西一般时候是没有必要仔细研究,但交叉环境下开发或移植比较大的程序时,你可能就需要了解编译器,链接器等开发工具的几乎所有重要参数。
我在开发时,主机完全使用的是linux,如果有条件,建议大家这样作,linux的使用没有想象的复杂(虽然我现在身边还要放一本关于linux使用的书籍),而且开发程序可以先在主机上调通,然后用交叉编译工具为目标系统重新编译一遍,可以这样做是因为主机是linux,目标系统跑uClinux,两个操作系统提供的应用程序接口几乎是一样的,所以程序几乎不用修改。
在我的系统上,建立基本的开发环境过程如下。
(1) 安装gnu开发工具链(是GNU开发的针对ARM CPU的一组编译开发程序(是linux程序)。包括arm-elf-gcc,arm-elf-ld等
(2) 将uClinux源代码源代码解压到相应路径下,按照编译内核的步鄹编译一遍(此时使用的编译工具已经是上面提到的ARM编译工具了,因为它要在ARM CPU上运行,另外,和编译linux内核一样,此时可以通过menuconfig来对内核提供的功能进行裁减
(3) 将库(uClibc)解压到相应路径下,用以上工具编译一遍。
这样最基本的环境就算搭建好了。
以上工作对于做过的人来说比较简单,这里介绍一下帮助没有使用或刚开始使用这种开发模式的弟兄们理清一下思路。
3.应用程序的开发
因为目标板上用uClinux,它提供的程序接口和linux下的基本一致,不一致的部分主要在于uClinux不支持MMU(应该说是uClinux是为不带MMU的cpu定制的),最明显的就是fork函数要用vfork函数替代,这也是编程时,感觉最不爽的一点(没办法,谁让咱们的CPU有生理缺陷)。另一个不易觉察的差异在于uClinux提供的库uClibc是经过裁减的。更适合于资源紧张的嵌入式系统(上回分解已经说了,应用程序很大一部分是在和库函数打交道,而且大家最终是链在一起,所以库函数大了,你的程序也小不了)。
于是基于这种开发模式的应用程序开发变成了linux下的程序开发。而且在实际中一般是编好了程序先在主机上拿主机平台上的编译器编译并且调试一下(linux下的编译器就是gcc了),当然前提是被调试的程序中需要的硬件条件主机具备,例如我的程序中有一段是针对串口的,于是先在主机编一个串口程序,调通以后拿目标板的编译器重新编译一下(如果看了上一章“交叉编译环境”,这里就不会晕了),下载到目标板上运行,一般来说就可以直接用了。
以上也是为什么我认为开发嵌入式linux程序主机应该选用 linux环境。对于以前没用过linux的人来说(比如我),开发程序前应该花3,4天时间熟悉linux环境,尤其是它的编辑器,用惯集成编译环境的人有时连编译器和编辑器的概念都模糊了,所以一般是直接进入集成编译环境,连写带编一气呵成,殊不知有些集成编译器提供的编辑器弱智的一塌胡涂,如果用熟了linux下的emacs,你就会发现他们之间的差距大概……要像我和盖茨那么大吧。所以编程序时应该选一款优秀的编辑器,linux下,我当然选 emacs,虽然刚看见它的感觉是外表丑陋,使用复杂。但只要多用多练,对提高效率很有帮助。(将你的程序用两个编辑器完成,一半是用emacs的,一半是不用emacs的,看看效果:-)
对具体的linux编程我就不板门弄斧了,需要提个醒的是咱硬件出身的人作软件应该养成良好的编程习惯,别让作软件的笑话咱。因为作了些网络应用,所以介绍一些网络编程时要用到的网站和书籍;
<>w.Richard.Stevens. 这可是linux网络编程的圣经级的书籍
::URL::http://www.fanqiang.com/a4/b7/ 适合于网络编程的入门。
还有IBM中国上关于linux的教程和文章,都是翻译过来的,有很多写非常不错。
其实类似的资源不计其数,遇到问题时应该先到google上狂搜一圈。
重点想说些关于编译器的东西,不了解它,在交叉编译环境下编译程序就寸步难行了,这无非是因为交叉编译环境下目标板编译器所处的寄人篱下的悲惨环境。想想在linux下将myprogram.c编译链接成应用程序myprogram,最简单的一句 gcc –o myprogram myprogram.c 就可以了。(其实在诸如VC下你也可以找到类似的命令,集成开发环境只不过替你来调用它了)。一切看起来天经地义。
但试着把/usr/include路径改一个名字(比如改成stupid_include),再这样编译一下,会发现程序中被< >引用的头文件(比如#include)都找不到了。因为编译器看见这样的头文件会到系统指定的路径下寻找,而这个路径是由环境变量保存的(linux和windows下都是这样的)。针对以上情况,不将路径名字改回去,但是给编译器加一个参数如下:
gcc –I/usr/stupid_include –o myprogram myprogram.c 会发现错误信息没了,一切又恢复了往日的宁静,顿时明白,不用环境变量,通过参数,同样可以将这些信息告诉编译器。 返回来说说你的目标编译器,虽然占用了人家的地盘,编译器,头文件,库文件,一个都不少,但你要编一个程序编译器照样发晕,因为没有环境变量告诉它自己需要的头文件和库文件在哪里。看来只有两种办法,一个是抢占了主机的环境变量改成自己的(整个儿一个土匪),或者在编译时加上必要参数(还是这样绅士一些),告诉编译器需要的文件的位置。(除此之外,还有其他一些参数也是如此)。
从源程序到可执行文件根据情况不同可能分好几步,一般每一步可能都会有一个应用程序实现,像gnu提供的arm开发工具链其实就是这么一组程序。提供从编译到链接到格式转化的全套服务。你可以用arm-elf-gcc命令一步到底直接产生可执行文件(其实也是在自己的任务完成后调用下一个程序),也可以每一步加上自己的参数,只作自己的事。
编译器的主要参数的使用下次将程序的移植时再讲。这里想说一下编译器产生应用程序的几个主要步鄹,讲这个问题的原因还是很多人无法区分诸如编译和链接,不用问,这一切还是IDE集成开发环境惹的祸。有人会说,IDE招你惹你了,你老贬它。其实不然,首先以上说的东西一般在IDE的project菜单下的option或build option中找到,只是一般不用管罢了。另一个方面,IDE就像是傻瓜照相机,很多工作他都帮你完成了,使用简单。但如果要做摄影师的话,你就少不了要对每一个细节都了解。其实编译程序也是一样。(你可以对优化,警告级,宏定义等诸多选项进行自己的选择)。以下是几个主要步鄹:(以下有些我也不确认,如发现问题,请及时纠正。
(1) 预编译。 主要工作就是处理所有#开头的,包括头文件。以前搞不清头文件和可执行文件有没有什么联系(因为总看见两个文件名字取一样的),现在知道,他们之间没有任何联系。在预编译结束后,头文件的使命就结束了。在下一次介绍不同平台程序移植时可以看到,预编译有时非常有用。
(2) 编译。编译应该是最主要的一步,就是将源文件生成CPU能识别的语言,一般是 后缀为.o的目标文件,应该说,此时的文件就已经可以执行了。当然这个时候外部函数等外部符号都没有引入,对于被编译程序来说,这些外部符号还只是留一个倩影,压根儿不知它在不在。你可以在你的程序里调用一个不存在的函数,甚至都不用声明,在编译阶段,很多编译器只是给个警告。只有在链接时才会报错。(呵呵,够弱智!)
(3) 链接:链接才是清帐的时候,以前在程序里用到的外部符号都要把真正的东西交出来。你可以指定需要连接在一起的目标文件,也可以告诉编译器库文件的名字和路径(指定方法下次讲)。编译器会去找,需要注意的是,库的指定需要注意顺序。首先,如果不同的库里有同名函数,并且该函数被调用,那么在前面的就被链接进去了,这一点对于头文件路径的指定也适用,如果你自己的头文件和系统头文件相同,并且你的头文件路径在系统头文件路径前面,你的头文件就会代替头文件。库文件是由相应的程序(linux下是ar命令)将需要被添加到库里的目标文件(该文件是编译阶段生成的)组织起来生成档案文件,同时可以建立一个检索,检索内容为所包含的目标文件中定义的符号。也就是说,库文件并不是必须的,但它为经常使用的目标文件中的函数提供了快速的检索机制。
以上就是主要的步鄹,当然除此之外,还有一些用于格式转换的工具等。不一一介绍。知道编译器的细节对于程序的开发和移植都是很有好处的。
程序开发过程中调试也是至关重要,因为可以先在主机上调试,所以可以使用linux下的gdb,(有点像dos 下的debug)。但是只是用到了皮毛,还有一个专用于宿主机模式的调试工具gdbserver,一直没时间研究,希望用过的大侠多发些文章铺路。
另外还会遇到如何作ramdisk,如何让系统启动自己的程序,这些都太linux了,没接触过linux的人会晕,为了大家的健康,就不讲了,遇到问题可以给我email,大家一起讨论。
4.不同平台间程序的移植--简单程序的移植
研究程序移植的那两周是最痛苦的两周,没有太多可以借鉴的东西,只能摸黑向前走,于是更加坚定决心要整理些东西给后来的弟兄。不过话说回来,各位弟兄别被我前面说的吓倒,只要搞清你要作什么,程序移植其实是比较简单的事情。
首先列出一些问题:
(1) X86上运行的程序能不能在51单片机上运行,为什么,有没有可能,如果可以,应该做哪些工作才可以实现。
(2) 相同CPU平台,DOS的程序为什么可以在windows下运行,能不能在linux下运行,为什么,作什么工作可能实现。
为什么可以移植程序,为什么要移植程序?
程序可以移植首先要感谢开发出高级语言的大牛们,记住,无论多么漂亮的代码经过编译以后都要变成CPU可以识别的机器语言,而几乎一千种CPU说着一千种语言。为保证大家有共同语言,规定一种高级语言――高级语言。每一个CPU派出自己的翻译――编译器。这个翻译精通两国语言,高级语言和自己的语言。(由此已经可以看出编译工具在程序移植中的重要性)。只要程序没有硬件上的约束,可以说这种沟通是无极限的,甚至于不同操作系统平台。(操作系统也是程序,也可以移植喽)举例:在x86的windows下用VC(或TC,BC)编一个c程序实现i=i+1,丝毫不改就可以用51的C编译器重新编译并在51单片机上运行。一次小型的移植就结束了。
可以移植已有的程序还要感谢开放源代码的弟兄,没有这些C文件和H文件让你重新编译一下,怎么在你的CPU上跑?其实不止这些,后面还会看见开源组织的牛人专为程序可移植性所作的专门的工作。
那么为什么要移植程序?
问这问题就像问地上有个钱包为什么要捡一样,答案不言而喻。现成的东西为什么不要。当然,移植程序可没有捡钱包那么简单,尤其是第一次,后面会说一些移植之前应该考虑的问题。(就像现在地上有个钱包也千万别上去就揣自己兜里,说不定就是套)。另一方面,你给我你写好的程序让我拿去用,我还要考虑一下,或许里头问题多的还不如自己写一个。我这里所说的可移植的程序应该是维护比较好,比较成熟的源代码(像我后面的所说的UCD-SNMP),目前的开放源代码运动决不仅仅是把自己的程序公开就行了,而是有了一套成熟完整的版本控制,BUG报告和PATCH提交流程。
这样的代码才有更大的使用价值。
什么时候可以考虑移植程序? 在基于嵌入式操作系统进行开发时,具有一定规模的程序都可以到网上查一查都没有成熟的源代码可用。前面已经说到,程序的移植最终只针对CPU,其实和操作系统没什么关系,但另一方面,因为代码中可能会使用一些库函数,这些库会包括C语言标准库和操作系统提供的API(应用程序接口)库。假设源代码中只包括C标准库,那么该程序就可以跨操作系统去移植。例如hello world程序中使用了printf,因为该函数是C标准函数,所以在X86上使用TC(BC或VC)可以直接编译运行,在ARM+uClinux平台下也一样,但如果程序中调用了vfork函数,那么只有 linux一脉相承的操作系统支持这种特殊服务了,在window或dos操作系统下无法直接编译该程序了。只能找该操作系统支持的类似的功能来实现。再进一步,硬件上的生理缺陷也会为移植带来麻烦,S3C4510B不支持MMU,在其上运行的uClinux也不提供和MMU有关的服务(其实 uClinux本身可以支持MMU),于是在移植前相关的函数(比如FORK)都要被替代掉(使用VFORK)。好在uClinux和linux提供的应用接口大部分还是相同的。所以这样的工作还可以承受。
由上可知,如果是在各种嵌入式linux(除了uClinux以外,还有好几种)平台上开发,那么针对该平台以及linux平台上的源代码都可以使用,但是要牢记他们之间的差异。在我的系统中需要实现网络监控,所以想使用snmp协议,该协议和http,ftp一样属于应用层的成熟协议,专用于网络管理。目前已经有一些针对该协议成熟的代码,最有名的是ucd-snmp,不光软件本身功能强大,可移植性也比较好,在linux,unix等平台上都可以移植,于是决定将它移植到ARM+uClinux平台上(别看现在说的这么轻松,当时接这活时都有点哆嗦)。
简单总结一下,移植应用程序的前提是有源代码,移植的关键工具是编译器,源代码中和硬件平台相关的东西越少越好(这里主要指使用了汇编,或做了针对自己平台的事,比如将指针指向特定地址然后操作),另一方面,如果该程序是基于某个操作系统(利用了操作系统提供的特殊服务,即API),要看自己的操作系统是否提供了相关服务。
下面简单列出一些我认为移植时需要考虑的问题:
(1) 自己的操作系统的特点以及在当前版本下支持的特性。
例如:uClinux不支持MMU,同样就无法支持相应的特性。
(2) 硬件资源。
因为嵌入式系统资源比较紧张,硬件资源考虑必须要周全:
(1) 软件存储空间的大小
这一般要等用目标编译器重新编译完以后可能才会知道,所以只能大概估算,但千万不要看这个程序在linux下只有几十k,就认为程序很小,这是因为linux下程序多时使用动态库,而在嵌入式系统中,很有可能是把用到的库都链接在一起,所以程序的尺寸会大大增加。
(2) 程序运行空间。.
(3) 硬件以及相应的驱动是否完备
以上工作应该尽量做,但有时事先无法把握,只能听天由命了(有没有搞错!!)

可能有人已经要晕菜了,振奋一下大家,如果找到了好的源代码(可移植性好),那么剩下的如要工作就是玩转你的编译器,只要你能顺利的把源代码用你的编译器重新编译一下。90%的工作就完成了(不是吗)
上回已经介绍了一些编译器方面的东西,下面针对我的ARM编译器的具体参数来讲解一些编译器主要参数的设置。
加入我已经有了hello.c,在x86的linux平台下编译链接一下。
gcc –c hello.c 产生.o
gcc –o hello hello.o 产生可执行文件,上回说过,主机编译器参数都有环境变量保存,所以看起来很简单。这里我故意分两个步鄹。
下面看一下用我的编译器编这个程序(心脏不好的先吃药)。
arm-elf-gcc -Iroot/uClibc/include -msoft-float -mcpu=arm7tdmi -fomit-frame-pointer -fsigned-char -mcpu=arm7tdmi -Os –Wall -DEMBED -D_uClinux_ -c hello.c
这只是编译,将参数逐一讲解。

Arm-elf-gcc 是gnu的arm编译工具
1)Include地址:参数:-I 值:root/uClibc/include(这是在主机上我的uClinux的头文件路径) 用法:-I root/uClibc/include

-I参数保证后面的头文件路径在搜索系统头文件路径前被搜索从而有可能替代系统的头文件,如果有多个这样的参数,则搜索的顺序是从左到右,然后是系统的头文件。
2)-m 是针对CPU的选项。
-mcpu=arm7tdmi 说明CPU类型
-msoft-float 产生包含浮点库的输出
-fsigned-char 让char类型有符号
-fomit-frame-pointer 对所有不需要帧指针的函数都不将其保存在寄存器中。
3) -Os –Wall
-Wall:所有警告都显示
Os:优化尺寸,该选项使能所有所有不增加尺寸的O2优化,并且进一步根据尺寸优化
4) = -DEMBED -D_uClinux_
-D: 将-Dmacro 后的macro定义为字符串1。

以下是链接:
arm-elf-ld -L/root/uClibc/lib -L/usr/local/gnu/arm-elf/lib -L/usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1 -elf2flt –o hello /root/uClibc/lib/crt0.o /usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1/crtbegin.o hello.o
/usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1/crtend.o -lc -lgcc –lc

其中
1) 链接工具: arm-elf-ld
2) -L指明需要链接的库的路径,用法和-I一样,自己的库的路径也可以在这里加入。 -L/root/uClibc/lib -L/usr/local/gnu/arm-elf/lib
-L/usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1
3) –o 后面紧跟生成的最终的文件名
4)/root/uClibc/lib/crt0.o /usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1/crtbegin.o OBJECTS.o
/usr/local/gnu/lib/gcc-lib/arm-elf/3.0.1/crtend.o
这是需要链接在一起的.o文件
5) -lc -lgcc –lc -l 后面紧跟的是需要链接的库的名字,一般库的名字是libxxx.a,使用时为-lxxx即可,不加lib和.a。还要注意位置,自己的库文件应该加在他的库前面。

编译通过后,移植就算完成了,对于比较小的源代码都可以这样,即先分析他的编译选项(用到了那些头文件,库文件等),然后用自己的编译器对照相应参数重新编译一下就行了。
当然这只是简单程序的移植,复杂案例在下一次讲吧。

点击此处查看原文 >>

系统分类: ARM   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(379)
发表于:2007-8-12 12:42:24
标签:无标签

0

自己动手打造嵌入式Linux软硬件开发环境(转贴)

Linux和uClinux
1991年8月,芬兰的一个学生在comp.os.minix新闻组贴上了以下这段话:
你好所有使用minix的人-我正在为386(486)AT做一个免费的操作系统(只是为了爱好,不会象gnu那样很大很专业. 这名学生就是Linus Torvalds, 而他所说的'爱好'就变成我们今天知道的Linux。
由于Linux的源代码公布在互联网上,可以免费得到,因此从一开始就吸引了世界各地的UNIX 行家为Linux 编写了大量的驱动程序和应用软件,在短短几年时间里,Linux 就发展成为一个相当完善的操作系统,而且Linux支持的硬件平台是所有操作系统中最多的,目前Linux支持硬件平台:Intel的IA64、Compaq的Alpha、Sun的Sparc/Sparc64、SGI的Mips、IBM的S396、ARM、PowerPC等。Linux更大的影响在于它正逐渐地应用于嵌入式设备,uClinux正是在这种氛围下产生的。uClinux就是Micro-Control-Linux,它也是一个开放源码的项目,uClinux的源代码和开发工具可以免费从http://www.uclinux.org上下载得到。
uClinux是专为那些没有MMU(内存管理单元)的嵌入式处理器开发的,和主流的Linux相比,uClinux有以下的特点:
1.简化了内核加载方式,uClinux的内核可以在Flash上直接运行:就是把uClinux的内核的可执行映象烧写到flash上,系统启动时从Flash的某个地址开始逐句执行;也可以加载到内存中运行:把内核的压缩文件存放在Flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。
2.采用了romfs文件系统作为root文件系统:这种文件系统相对于一般的ext2文件系统要求更少的空间,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,建立文件系统superblock需要更少的存储空间。Romfs文件系统不支持动态擦写,对于系统需要动态保存的数据采用RAM盘的方法处理,RAM盘采用ext2文件系统。
3.使用了Flat可执行文件格式:elf格式有很大的文件头,flat文件对文件头和一些段信息做了简化。
4.重写了应用程序库: uClibc对libc做了精简,uClinux对用户程序采用静态连接的形式。
uClinux的开发环境
www.uclinux.org为uClinux提供了GNU的交叉编译器,包括以下组件:Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;Binutils辅助工具,包括objdump、as、ld等;Gdb调试器。以在ARM7上开发uClinux为例:
1.获得uClinux-dist的源码www.uclinux.org上定期为新推出的Linux内核推出相应的源码包,最新的版本为Kernel-2.4.21,可以从http://www.uclinux.org/pub/uClinux/dist/ 上免费下载得到。这个源码包里包含了uCLinux-2.4.21、uClibc和已经移植到uClinux下的用户应用程序。下载完后,会得到一个uClinux-dist-20030522.tar.gz的文件,把它保存到/home目录下,然后执行:tar zxvf
uClinux-dist-20030522.tar.gz,当tar程序运行完毕后,在/home目录下会有一个/home/uClinux-dist的新目录,这个目录就是uClinux的源码根目录,里面有进行uClinux开发的所有的源代码。
2.获得ARM开发工www.uclinux.org提供uClinux源码的同时还提供相应的交叉编译工具。要在开发主机上
为ARM7目标系统编译uClinux,还需要从http://www.uclinux.org/pub/uClinux/arm-elf-tools/ 上下载ARM交叉编译器:arm-elf-tools-20030314.sh。得到这个文件以后,执行以下命令:sh arm-elf-tools-20030314.sh,这个命令会在开发主机上自动建立一个uClinux-ARM的交叉编译环境。键入arm-elf-gcc, 如果能看到下面的输出信息:
Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specsgcc version 2.95.3 20010315 (release)
(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches
from http://www.snapgear.com/)
表示uClinux-ARM的交叉编译环境已经建立起来了。
现在开发主机里已经有了uClinux的源代码和编译这些源代码的工具,也可以用make menuconfig, make等命令来编译uClinux和用户程序,为ARM目标板编译了一个内核映像文件,接下来要做得是需要一块ARM7的开发板来运行这个映像文件(关于如何编译uClinux和用户程序请www.uClinux.org上得相关文档)。
构建ARM7-uClinux开发板
uClinux只需要极少的硬件资源就可运行起来,以ARM7TDMI为例,只需要以下硬件:
1.CPU – Samsung S3C4510B
2.SDRAM 8M以上
3.一个简易的串口
4.2M Flash
5.一个以太网接口(可选)
目前各嵌入式微处理器的厂商在推出每款处理器的同时都会提供一个Demo板,供用户来测试微处理器的性
能。Samsung公司对S3C4510B处理器提供了一款SNDS100的Demo板。Demo板的原理图可以从Samsung公司的网站上免费下载,对这个原理图作一些修改,只保留上面列出的5个部分,去掉其他多余的部分。修改以后的原理图就是一个能够运行uClinux的ARM7目标板原理图,然后根据这个原理图去加工几张PCB板,焊上相应的元件,一块能运行uClinux的ARM7开发板就做成了(这款开发板相应得原理图、PCB图可以从http://www.dailzh.net上免费下载得到)。
慢着,虽然这块开发板已经焊接完成,但目前它只是一堆电子零件的简单组合,要在它上面跑uClinux,还需要相应的软件来管理这些硬件。
前面提到uClinux可以从Flash中直接运行,就是说可以将uClinux的映像文件直接烧写到Flash中,然后上
电,uClinux会从Flash中启动吗?是的,确实如此。现在要做的就是如何将uClinux的内核映像烧写到Flash中。用写入器将uClinux内核映像写入到Flash中,然后将Flash焊接到pcb板上或插到开发板的flash的插座上可以吗?当然可以,如果你有写入器的话。不过,很少有人手里能有这种写入器。我们需要的是一个廉价的Flash写入方案。用JTAG,S3C4510B上集成了一个JTAG,通过JTAG我们可以控制S3C4510B上所有管脚,这样可以通过向JTAG接口输入相应的指令和数据,用软件的方法在S3C4510B的数据、地址和控制总线上产生出Flash器件的读写操作时序,将uClinux的内核映像文件烧写到Flash中(关于S3C4510B的JTAG接口电缆的制作和下载烧写uClinux映像文件到Flash中的程序可执行文件和源代码请参阅http://www.dailzh.net上相关内容)。终于将uClinux的映像文件烧写到Flash中了,用一根串口电缆将ARM7开发板和开发主机的Com1口连接起来,从网上下载一个tip程序,执行这个命令:
tip –l /dev/ttyS0 –s 19200
等屏幕上显示 connected.以后,将ARM7开发板的电源接通。如果够幸运的话,你应该看到下面的信息:
>>Linux version 2.4.20-uc0 (root@dailzh) (gcc version 2.95.3
>>20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)
>>(uClinux XIP and shared lib patches from http://www.snapgear.com/)) 一 5月19 23:44:11 CST 2003
>>Processor: Samsung S3C4510B revision 6
>>Architecture: SNDS100
>>On node 0 totalpages: 4096
>>zone(0): 0 pages.
>>zone(1): 4096 pages.
>>zone(2): 0 pages.
>>Kernel command line: root="/dev/rom0"
>>Calibrating delay loop... 49.76 BogoMIPS

>>Command: cat /etc/motd
>>Welcome to uClinux.org
>>For further information check: http://www.uclinux.org/
>>\>
uClinux在ARM7目标板上已经运行起来了,键入熟悉的ls命令,看有什么输出。
通过JTAG接口烧写uClinux映像文件到Flash中速度太慢,调试uClinux内核非常不方便,有没有其他的方法?有,uClinux除了可以从Flash中直接运行外,还可以加载到内存中运行。我们来为ARM7开发板写一
个Bootloader,Bootloader的作用是初始化ARM7开发板,然后通过以太网接口将uClinux映像下载到内存中,然后从内存中运行uClinux。这种方法下载uClinux内核映像只需要10几秒,适合于开发阶段经常修改uClinux内核时使用(Bootloader for ARM7的源代码可以从http://www.dailzh.net 上下载得到)。调试完uClinux的内核以后,可以再通过JTAG接口烧写uClinux映像文件到Flash中,这样又可以直接从Flash中运行调试好的uClinux了。uClinux下用户程序的开发和调试现在ARM7开发板可以运行uClinux了,如何开发uClinux下的应用程序呢?和在普通计算机上开发Linux程序一样,首先编写应用程序的源代码,只不过编译的时候不能用gcc编译,需要用arm-elf-gcc编译。编译以后的可执行文件必须下载到ARM7开发板上才能运行,下载程序到目标板上可以通过在uClinux中启用tftpd程序,在开发主机端用tftpcmd 程序来下载,然后在uClinux的控制台窗口键入可执行文件名的方法来运行。如果想要应用程序在uClinux启动时自动运行,可以修改uClinux系统中/etc/rc文件的内容来来实现。如果要用gdb来调试用户程序,可以www.uclinux.org上的相关文档。

点击此处查看原文 >>

系统分类: ARM   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(827)
发表于:2007-8-11 12:28:22
标签:无标签

0

关于开发板的设计(转贴)

很多新手想学一个新的技术,比如FPGA/CPLD,单片机,ARM等等,首先都会想到要一个开发板。
很多人选择自己做,但是怎么做呢?这是一个问题。
其实很简单,找一些资料看看,什么资料?不会吧,问这个问题!当然是开发板的资料了,别人的资料拿过来看,看懂了吸收了就成了自己的了。
怎么找这样的资料?其实我以前回帖的时候也说过这个问题,多利用网络,或者是朋友。国外的产品一般都会免费提供原理图的,有的随着软件的安装或者网站上就有Demo板的原理图。还有就是通过google搜索(我不喜欢用baidu),关键字找,最好找国外的,因为我发现很多板子都是抄国外的创意(其实我也是如此)。还有一个办法,这个办法比较bt,我在自己的博客上面就申请了一个google的广告,然后我基本上和FPGA相关的文章都会出现那么一两个开发板的网站,然后就进去开始一顿狂找,结果用这个办法我找到很多很多原版的电路图。
拿到原理图了之后需要自己仔细的看,研究别人用的什么芯片,某个部分的电路是怎么设计的,为什么要这么设计,吃透了才开始做自己的。因为手上会收集不少这样的资料,所以还需要比对,看看相同的部分别人分别用了什么,比较一下每个有什么特点,有什么优势和劣势,然后选择好相关的电路。
通过这些工作,我觉得应该可以学到很多东西,也能学会找东西。这些工作里面可能看别人的设计需要费点心思,因为可能里面有的东西是你没有接触过的,但是通过分析和学习,你就明白了。
先别着急画图....等等我还有话说。
这个时候你应该考虑好了用什么芯片了,但是一定要先找找能不能买到这个芯片,市场价格等等,要不然板子作出来了买不到或者太贵就不划算了。有的片子可以换成不同厂家的兼容型号,封装也可能变化,但是价格可能差很多。
下面可以开始画原理图了。如果不会的话又可以多学一个技能了,很多原理图设计软件,看个人喜好吧。我就一直用protel,从99到dxp。原理图设计阶段不能仅仅是照搬,还有很多东西可以考虑一下创新的。另外,关于扩展的问题,想一下可能有的需要留给以后的应用,所以必须要考虑。如果留,留什么样的接口,是否方便等等。
原理图弄好之后就要开始做PCB了,软件也看自己,我就用protel,呵呵。这个工作需要有耐心和技巧,可能第一次比较困难,布多了就好了。我的总结——这个就是个力气活啊。布局很重要,要考虑好你的接口是否方便连接,片子之间的距离等等。因为有的板子可能连线很多,如果没有经验的话会一头雾水。还有就是有人用自动布线,估计布出来比较XXX(我反正不用那个,也不会,都是手动布线)。对了,忘了说一个比较重要的事情了,芯片的封装问题。有的芯片可以找到现成的库,但是有的没有,这个就要自己画了。最好的办法是查芯片的datasheet,里面都会有很详细的尺寸,应该不是很难懂的,学会一个就能做出第二个。其实做封装库都是有向导的,很方便,所以每次有人问我要什么芯片的封装库,我都会说让他自己画- -0 有的芯片的尺寸都是有一个范围,所以我建议最好是在原理图设计的时候,定下来了用什么芯片就买了,等到原理图画好,片子也就拿到手可以实测一下尺寸了。封装库这个东西是个积累,用的东西多了自己的库就多了,以后设计也就方便了。
回到正题,布线!其实你在参考别人电路的时候也需要保存一份板子的图片,这样就可以照猫画虎了,呵呵,可以“偷”嘛。其实原理图也可以通过板子的图片来偷的,嘿嘿!布线需要耐心,不要急躁啊。我曾经把一个四层板改成两层板,来回布线一个月,布了删,删了布,累死了,每天起早贪黑的弄,主要还是没有经验,现在估计也就一周搞定。
布线结束之后要仔细检查,软件也可以帮助你,至于布线的一些基本知识和中级知识高级知识我就不讲了,有很多书和资料可以看的,两层板玩玩的话我就不太讲究了,乱布。
另外,注意丝印层的字也要好好整理整理,乱七八糟的不利于美观。另外还可以打上自己的logo名字之类的,作出来之后会很有成就感di。
PCB做好之后就应该找个厂商帮你制版了,找个价格合适的、质量好的、信誉好的交上pcb文件就可以了,钱我一般是拿到板子之后再给。
等待……焦急的等待……
板子终于回来了,不要着急焊啊,先检查一下板子有没有问题,测试一下先。
然后开焊,又是体力活- -0 这个也是经验,焊多了之后水平就高些。至于贴片多引脚芯片的焊接,我发过一个文章,网址是http://www.5ifpga.com/article.asp?id=271  其实挺简单,焊一两个就会了。拆片我就不教了,那个东西说明你犯错误了:(  对了,焊之前一定要看清楚方向,焊错了可就麻烦大了啊。
焊好之后先别着急上电,好好检查一下,看看是否焊好,测试一下先。
一切ok,上电!运行个测试程序,pass!
恭喜你,你拥有了自己的开发板了,还是自己亲手制作的。
后话:其实自己制版如果只作一个成本比较高,最好能找几个人一起,但是有风险的,万一你做错了还得重新做,当心哦!所以要检查检查再检查。我刚开始就犯这个错误,有个板子投了三次板才最后做好,汗啊!
如果可能,网上有卖那种PCB的,成本比自己做低一些,而且都是别人测试通过使用的板子,质量没有问题,可以省很多力气和时间,但是就少学一些东西了,呵呵。(我不是在给自己打广告啊)
以上为本人半夜睡不着说的疯话,欢迎批评指正。同时欢迎做FPGA/CPLD,NIOS,ARM,DSP,MSP430的朋友和我多多交流。我的博客在我签名档里面有。

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(570)
发表于:2007-8-11 12:20:30
标签:无标签

0

ARM开发调试教程(转贴)

说明:本文是我学习ARM开发以来的一些经验总结,以自己设计的S3C44B0X板为例,给出我调试开发ARM开发板的一些最基础知识。我只是在自己的开发板调试过并且经验有限,有些知识只能做为参考,不一定准确,就算给大家一个“例程”吧,如果大家有不同意见,希望多多指正!

硬件篇
(一) 开发板的整体架构
我设计的开发板是在三星44B0 demo板的基础上,参考网络上相关的资料,加入我的思想开发的。以下是该开发板的整体架构:
(二) 开发板的焊接
贴片式元器件的拆卸、焊接宜选用200~280℃调温式尖头烙铁。
贴片式电阻器、电容器的基片大多采用陶瓷材料制作,这种材料受碰撞易破裂,因此在拆卸、焊接时应掌握控温、预热、轻触等技巧。
控温是指焊接温度应控制在200~250℃左右。
预热指将待焊接的元件先放在100℃左右的环境里预热1~2分钟,防止元件突然受热膨胀损坏。
轻触是指操作时烙铁头应先对印制板的焊点或导带加热,尽量不要碰到元件。
另外还要控制每次焊接时间在3秒钟左右,焊接完毕后让电路板在常温下自然冷却。
以上方法和技巧同样适用于贴片式晶体二、三极管的焊接。
贴片式集成电路的引脚数量多、间距窄、硬度小,如果焊接温度不当,极易造成引脚焊锡短路、虚焊或印制线路铜箔脱离印制板等故障。拆卸贴片式集成电路时,可将调温烙铁温度调至260℃左右,用烙铁头配合吸锡器将集成电路引脚焊锡全部吸除后,用尖嘴镊子轻轻插入集成电路底部,一边用烙铁加热,一边用镊子逐个轻轻提起集成电路引脚,使集成电路引脚逐渐与印制板脱离。用镊子提起集成电路时一定要随烙铁加热的部位同步进行,防止操之过急将线路板损坏。
换入新集成电路前要将原集成电路留下的焊锡全部清除,保证焊盘的平整清洁。然后将待焊集成电路引脚用细砂纸打磨清洁,均匀搪锡,再将待焊集成电路脚位对准印制板相应焊点,焊接时用手轻压在集成电路表面,防止集成电路移动,另一只手操作电烙铁蘸适量焊锡将集成电路四角的引脚与线路板焊接固定后,再次检查确认集成电路型号与方向,正确后正式焊接,将烙铁温度调节在250℃左右,一只手持烙铁给集成电路引脚加热,另一只手将焊锡丝送往加热引脚焊接,直至全部引脚加热焊接完毕,最后仔细检查和排除引脚短路和虚焊,待焊点自然冷却后,用毛刷蘸无水酒精再次清洁线路板和焊点,防止遗留焊渣。
检修模块电路板故障前,宜先用毛刷蘸无水酒精清理印制板,清除板上灰尘、焊渣等杂物,并观察原电路板是否存在虚焊或焊渣短路等现象,以及早发现故障点,节省检修时间。
一点点建议:建议您先焊接一些主要的器件,比如说S3C44B0﹑SST39VF160﹑HY57V641620﹑JTAG﹑复位电路﹑电源部分,这样您焊接好后,就可以进行FLASH的直接烧写,确定FLASH的功能是否正确。
(三) 开发板电源调试
焊接过后的电路板,很可能存在短路﹑虚焊的情况,如果你此时直接通入电源的话,很可能造成主芯片的发热和烧毁,我已经出现这样的情况了,焊接好电路后,直接通入电源,FLASH就开始发热,直到烫手…
此时一定不要轻举妄动,都花一点时间测试电源部分的正确。
比如测试S3C44B0的电源是否正确,包括+3.3V和+2.5V,如果不正确,立刻进行检测,看是否有错误的情况。应该接电源的脚分别如下:
接+3.3V的引脚:9脚﹑47脚﹑125脚
接+2.5V的引脚:138脚﹑109脚﹑62脚﹑34脚﹑21脚
如果测试完全正常,那么就要开始检测s3c44B0的电源地是否正确,正常情况下有如下引脚应该接地,如果没有接地的话,可以判断已经断路。应该接地的引脚如下:
应该接地的引脚:10脚﹑22脚﹑35脚﹑48脚﹑63脚﹑73脚﹑74脚﹑90脚﹑110脚﹑126脚﹑139脚﹑152脚
上述引脚有的并非地线,电路只有将该脚接地才可以工作。
(四) 开发板调试的第一步
呵呵,如果您的焊接方法没有问题,电源完全是好的,那么你就已经成功一半了。试通电一次,看电源指示灯是否亮了,电源只是灯亮度正常,那么你就已经成功了。如果你在调试过程中,发现电源指示灯很暗的话,估计是某些电路是短路了,赶快拔掉电源,看一下是否某些芯片发热或者已经冒烟了…
记住:有几个跳线一定要跳的,就是JP5﹑JP6﹑JP7一定要短路,如果不短路的话,你的所有电源都没有。JP1不短路﹑JP2短路﹑JP3短路,他们分别对应OM0﹑OM1﹑OM1
JP8短接2—3。确定是S3C44B0工作方式big mode 和little mode。
好了,如果全部正常的话,直接用JTAG调试板,连接好JTAG部分,启动WIN98,进入我给你的光盘,找到简单应用程序的目录。里面有一个程序,是直接烧写S3C44B0的FLASH的。在您烧写之前,查看JTAG连接是否正常,JTAG上的短路线是否已经短路,如果全部正常的话,直接进入烧写了。
在烧写之前有几个地方需要注意:
并口延长线分别连接PC机并行口和JTAG下载板,JTAG下载板通过扁平排线连接ARM板。
S3C44B0X有两个复位引脚,其中nRESET是CPU复位引脚,nTRST是JTAG单元复位引脚,一般的S3C44B0X系统都有一个跳线,用短路块将两个复位端连在一起,这样一按复位按键,两个复位引脚都复位了。而JTAG下载板上面也有一个跳线,这个跳线是JTAG单元复位引脚。
在烧写Flash的时候,PC机会通过JTAG下载板上的那个跳线来复位ARM板的JTAG单元,所以应该用短路块将JTAG下载板上的跳线短路,而ARM板上的跳线(连接nRESET和nTRST)的则不应该短路;
全部准备好了,现在可以烧写代码了!网上有一个叫Fluted.exe的程序,使用它就可以完成Flash烧写。这里面针对不同的CPU还需要不同的Bsd文件,不同的Flash芯片需要对Fcd文件进行相应的修改。S3C44B0X的BSD文件S3C44B0X.bsd可以在三星公司网站找到,适用于SST39VF160的fcd文件在网上搜索得到。
特别说明:这个烧写Flash的程序只能在Windows98系统下才能运行!不支持Windows2000、WindowsNT和WindowsXP,所有你需要切换到Windows98下面才能进行这项工作!
对于我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,将自己的目标代码model.bin与上面的三个文件放在同一个目录下面,运行Fluted.exe就可以进行Flash烧写了。
由于Fluted.exe要输入相应的配置参数,所以我干脆做了一个批处理文件f.bat:
FluteD a -f model.bin -v -s 0
这样运行这个批处理文件就可以开始烧写了,烧写界面如下:
如果你是自己设计ARM板,第一次烧写Flash,那么你可以检查一下系统:首先看看CPU的各种电压是否正常,可以看看系统时钟输入的波形,32768晶体的一个引脚上应该能看到32768的正弦波。如果是刚焊新的Flash,那么一般Flash里面数据都是0Xff,用示波器可以看到数据线都是高电平,地址线上面有规则的方波信号。你一按复位按键,方波立马消失变成低电平。
如果写入成功的话,WRITE &&VIRIFY成功的话,你已经成功了……
恭喜你了!!!
很可能由于电源高频干扰或者错误接地,或者SST39VF160两个地址线短路出现清除FLASH,能够写入FLASH,可是VERIFY出错的问题,我遇到的就是那个两个地址线短路的情况,结果写入都正确,可是VERIFY时错误了,
错误信息如下:verify missed at 0x11111 orianglal :0x20 jtag:0x45
如果您在开发自己的开发板的时候也出现类似情况,我这里给你提示了,呵呵
成功已经离你不远了……
SDT软件篇
已经有了自己的平台,那么怎么样知道你的硬件是否真的好了呢?唯一的办法就是用SDT进行调试硬件,我们正式开始我的下一篇—SDT软件篇。
(一) SDT软件的安装
点击SDT2.51安装程序中的setup.exe,出现如下安装界面:
接着出现如下画面:
然后出现拷贝文件过程如下:
安装完成时:
此处必须重新启动计算机,以使设置生效。
(二) 启动SDT2.51
安装完毕,点击程序组中的ARM Project Manager启动主程序,界面如下:
(三) 利用我提供的模板开始自己的项目
很多刚刚学习ARM的人往往会遇到这样一个问题:自己写了程序,编译也通过了,结果怎么也生成不了二进制格式的目标代码(*.bin)。如何生成目标代码需要参考SDT2.51安装文件夹pdf中的userguide.pdf,在它的392页有详细说明,教你怎么Converting ARM linker ELF output to binary ROM formats。
为了给大家带来方便,在我提供的小应程序中,可以将他保存为一个模板,操作如下
打开我提供的小应用程序的工程,点击菜单File下的Save As Template:
然后在弹出的窗口中随意选择一个目录下,新建一个自己的文件夹,随便取一个Project名称,确认即可在主程序上出现新Project界面。现在可以在刚才建立的文件夹下面编辑代码,包括汇编代码和C程序代码。注意汇编代码必不可少,它是用来进行系统初始化和C程序入口的,这些范例代码可以在三星网站去下载。
(四) 如何添加自己的源码
点击菜单Project下的Add File To Project……,在弹出的窗口中,浏览自己的Project文件夹下面的程序代码,将代码添加到创建的项目。这时依次点击rom、debug、Sources前面的十字架,就会看到自己刚才添加成功的代码,双击任何一个代码文件就可以打开它进行编辑:
说明:SDT2.51好象有一个bug,当你直接双击一个代码文件时,可能会出现非法错误。我的机器就是这样。希望各位当编写代码时用uedit,这样比较方便。
(五) 生成可以在FLASH中运行的代码
编辑代码大家都会了,那么如何将自己写的代码放在FLASH中,并直接运行呢?看过S3C44B0 DATASHEET的人或者知道计算机启动过程的人都会知道,BIOS是一个什么东西,
那么对于S3C44B0的启动也无非如此。你生成的代码必须存放在0x00000000为开始的FLASH中,这样当S3C44B0复位的时候,从这里取指令执行。
那么如何设置呢?如下:
点击ENTRY AND BASE,接着会出现如下对话框:
(六) 生成可在FLASH中运行的目标码
现在选择菜单build或者点击快捷图标就可以编译代码,点击Force build之后就生成了二进制目标代码(*.bin),这可以在项目文件夹下面找到。在主程序窗口下面的信息框可以看到编译的情况,包括警告和错误信息,最终代码生成的情况等等;
好了,生成了bin文件。下一步就可以进行写入FLASH里了。
(七) 写入可运行的目标码
激动人心的时刻就要到来了,如果你按照我的步骤一步一步走,离成功不远了!!
检测硬件是否正常(按照我上诉硬件篇中的步骤)。如果硬件准备就绪,写入目标码过程如下:
对于我的板子,使用SST39VF160,需要的S3C44B0X.bsd、default.fcd和Fluted.exe,将自己的目标代码model.bin与上面的三个文件放在同一个目录下面,运行Fluted.exe就可以进行Flash烧写了。
由于Fluted.exe要输入相应的配置参数,所以我干脆做了一个批处理文件f.bat:
FluteD a -f model.bin -v -s 0
这样运行这个批处理文件就可以开始烧写了,烧写界面如下:
这个程序首先打开fcd文件和bin文件,然后检查设备ID,如果ID错误的话程序会停止运行。这意味着你的硬件系统有问题,或者JTAG接线有错误等等。然后开始擦除FLASH里面的数据,根据Flash的大小擦除时间有长有短;擦除完毕就开始对Flash编程,将目标代码写进去。编程完毕开始校验,如果出错会给出提示信息的,告诉你在哪个地址区域出错,写进去的数据是什么,读出来的数据又是什么,只有校验完全成功才是烧写OK!
一般朋友易犯的错误:
有些朋友将目标代码定位在0X0C000000,结果烧写后校验也完全成功了,但复位之后板子却没有任何反应!这是因为写到SDRAM之后校验肯定也是对的,但复位之后程序是从0X00000000开始执行的,而不是从0X0C000000开始的,所有板子肯定没有反应了!
(八) 如何调试程序
各位朋友都知道,调试程序是在SDRAM中运行的,那么我们必须将自己编译好的程序放到SDRAM中,那么如何才能将程序放入SDRAM中呢?操作如下:
就我的板子而言,SDRAM的片选引脚接在nSCS0上面,它的地址从0X0C000000开始,所有要把目标程序定位在这里。
如前面所说步骤,先单击一下主程序窗口ROM下的Debug,然后点击菜单中的set,在弹出的窗口中选择点击Entry And Base,在Read-only下面的框里面输入0X0c000000(程序空间),在Read-write下面的框里面输入0X0c5f0000(这是数据空间),确认即可:
按照上述步骤,设置SDT2.51,然后别忘了重新编译。会生成AXF文件,这个文件就是我们要调试的程序了。
(九) 调试之前需要知道的……
SDT2.51支持软件仿真和硬件debug,默认是软件仿真,这个很简单,大家一看就会。关键的是硬件debug,它支持串口、并口和以太网仿真,串口和并口我不知道怎么玩。
我的板子是通过并口JTAG进行硬件调试的,但实际上却是通过以太网的。这里面有一个转换软件——JTAG.exe,它把发送到以太网的数据拦截下来,遵从JTAG协议,转换到并口上面,然后通过JTAG接口板,控制ARM板上面的CPU,进行硬件Debug。
JTAG.exe在王云飞的网页上面有下载,包括并口JTAG接口板的电路图,我就是照他的图纸做的板子。
需要说明一下:JTAG.exe只能在Win98下运行,Win2000下不行,所以如果你要进行硬件仿真的话,必须切换到Win98系统下面。这很不爽,哪位朋友找到能在Win2000下面跑的JTAG.exe的话,麻烦告诉我一声!当然如果只是进行程序编写、编译、软件仿真,SDT2.51在Win98、Win2000和WinXP都没有问题的!
双击JTAG.exe,它就在后台运行了。
(十) 开始仿真了……
使用这种方式仿真,还要进行一些设置才行。点击Debug菜单或者快捷图标,出现ARM Debugger程序窗口:
然后选择菜单Options下面的Config Debugger:
在Target Environment下面选择Remote_A,然后点击Configure:
选择Heartbeat,在Ethernet后面输入你的计算机IP地址并确认。这里面肯定要你机器上面装有网卡,而且IP地址要指定了,如果是自动分配IP的话,就不太方便了,每次都要查找自己机子的IP。
(十一) 装载目标码到板子…
如果是第一次设置Debugger,确认以后,系统就会自动装载代码到ARM板上,你也可以点击Reload图标重新转载代码。如果代码很大的话,时间会稍长一点,可能要几十秒,一般几秒就搞定,出现如下窗口:
出现了上面的这个画面才说明你装载成功了,如果出现与此完全不同的东西,或者莫名其妙的代码,你就要检查硬件了!
现在按F8就可以单步仿真了,你可以看到绿色的图标一步一步向下走。
如果出现以下几种情况的处理方法:
1)如果程序一单步就跑飞,可能就是硬件问题了,检查时钟电路,电源滤波是否良好?
2)初学者建议时钟倍频不用太高,如果时钟输入是10MHz的话,二倍频将主频定在20MHz,这样调试起来可能麻烦少一点。大家都知道频率高了会出现很多意想不到的情况。
汇编程序走完,就要进入C代码了,下面是从汇编到C的入口:
按F8就进入C代码仿真了,界面如下:

点击此处查看原文 >>

系统分类: ARM   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(878)
发表于:2007-8-11 11:56:03
标签:无标签

0

【图解教程】PROTEL的一般应用(转贴)

1、打开规则对话框

点击看大图

2、电气安全距离的设置

点击看大图

3、导线宽度的设置

点击看大图

4、制作单面板的设置

点击看大图

5、布线中线段拐角方式的设置

点击看大图

6、布线类型的选择

点击看大图

7、一些其他的设置

点击看大图

8、设置焊盘与覆铜间的距离

点击看大图

9、PCB做覆铜的具体操作

点击看大图

10、PCB补泪滴的具体操作

点击看大图

11、清除错误标志

点击看大图

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 无分类

评论(1) | 阅读(516)
发表于:2007-8-11 7:56:38
标签:无标签

0

【图解教程】贴片的焊接技术(转贴)

1涂助焊剂
使用免清洗助焊剂(膏状),均匀涂抹在焊盘上——可以多摸一点,没有关系的

点击看大图

2对角线定位
定位好芯片,点少量焊锡到尖烙铁上,定位对角线的管脚。这样就不会发生错位了。

点击看大图

3平口烙铁拉焊
使用平口烙铁,顺着一个方向烫芯片的管脚。注意力度均匀,速度适中,避免降芯片腿给弄歪了。另外注意先拉焊没有定位的两边,这样不会产生芯片错位。(在这一步也可以再涂抹一些助焊剂在芯片的管脚上面,更好焊)

点击看大图

4放大镜观察结果
焊完之后检查一下是否有没有焊好的或者是短路的地方,适当修补(如果技术够好,基本一次成功)

点击看大图

5酒精清洗电路板
用药棉或者化妆棉签擦拭电路板,主要是将助焊剂擦拭干净即可。

点击看大图

OK!!!!
整个过程不超过5分钟,很快就弄好了,简单吧:)

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(502)
发表于:2007-8-9 22:53:17
标签:无标签

3

表面贴片元件的手工焊接技巧

拉焊的一般操作

说明: 本文是参考《电子产品环境适应与可靠性》——电装工艺(贴片焊接)(挑战者 2003年8月著)一文和其他网友提供的焊接方法,同时结合自己的实践写出来的。我从网上学到很多东西,也很乐意把自己的一点经验拿出来和大家一起分享,如有不足之处请大虾们指点,多谢!一 工具
1 普通温控烙铁(最好带ESD保护)
2 酒精
3 脱脂棉
4 镊子
5 防静电腕带
6 焊锡丝
7 松香焊锡膏
8 放大镜
9 吸锡带(选用)
10 注射器(选用)
11 洗板水(选用)
12 硬毛刷(选用)
13 吹气球(选用)
14 胶水(选用)
说明:
1 电烙铁的烙铁头不一定要很尖的那种,但焊接的时候一定要将烙铁头擦干净再用。温控烙铁的焊台上有海绵,倒点水让海绵泡起来,供擦烙铁头用。
2 防静电腕带据挑战者的说法可以用优质导线代替。我的做法是: 将2米左右同轴电缆的两头剥皮露出里面的铜芯,铜芯长度约25厘米。剥皮的时候不要破坏同轴电缆的屏蔽铜线,将屏蔽铜线压扁可以代替吸锡带用!
3 买不到松香焊锡膏的话,也可以将固体松香溶解到酒精中代替。
6 焊锡丝不必很细,1.0mm的即可。以前以为焊锡丝要很细就买了0.5mm的,现在觉得用这种方法没有必要。
7 放大镜最小为4倍,头戴式和台式都可以,我用的是台式放大镜(里面带日光灯)。
8 吹气球的具体名字我不太清楚,我用的是带尖嘴的橡皮小球,用来使酒精快速蒸发。
二 操作步骤
1 将脱脂棉团成若干小团,大小比IC的体积略小。如果比芯片大了焊接的时候棉团会碍事。
2 用注射器抽取一管酒精,将脱脂棉用酒精浸泡,待用。
3 电路板不干净的话,先用洗板水洗净。将电路板焊接芯片的地方涂上一点点胶水,用于粘住芯片。
4 将自制的防静电导线戴到拿镊子的那只手腕上,另一端放于地上。用镊子(最好不要用手直接拿芯片)将芯片放到电路板上,目视将芯片的引脚和焊盘精确对准,目视难分辨时还可以放到放大镜下观察有没有对准。电烙铁上少量焊锡并定位芯片(不用考虑引脚粘连问题),定为两个点即可(注意:不是相邻的两个引脚)。
5 将适量的松香焊锡膏涂于引脚上,并将一个酒精棉球放于芯片上,使棉球与芯片的表面充分接触以利于芯片散热。
6 擦干净烙铁头并蘸一下松香使之容易上锡。给烙铁上锡,焊锡丝融化并粘在烙铁头上,直到融化的焊锡呈球状将要掉下来的时候停止上锡,此时,焊锡球的张力略大于自身重力。
7 将电路板倾斜放置,倾斜角度大于70度,小于90度,倾斜角度太小不利于焊锡球滚下。在芯片引脚未固定那边,用电烙铁拉动焊锡球沿芯片的引脚从上到下慢慢滚下,同时用镊子轻轻按酒精棉球,让芯片的核心保持散热;滚到头的时候将电烙铁提起,不让焊锡球粘到周围的焊盘上。至此,芯片的一边已经焊完,按照此方法在焊接其他的引脚。
8 用酒精棉球将电路板上有松香焊锡膏的地方擦干净,可以用硬毛刷蘸上酒精将芯片的引脚之间的松香刷干,可以用吹气球加速酒精蒸发。
9 放到放大镜下观察有没有虚焊和粘焊的,可以用镊子拨动引脚看有没有松动的(注意防静电,要带上防静电腕带)。其实熟练此方法后,焊接效果不亚于机器!(挑战者)
说明:
1 电路板倾斜靠在某个东西上,并不要让电路板滑动,不要用手拿着倾斜,不然的话就没有空手去按动酒精棉球了。
三 几种焊接方法的比较
1 点焊: 需要用比较尖的烙铁头对着每个引脚焊接,对电烙铁的要求较高,而且焊接速度慢,还有可能虚焊和粘焊。
2拖焊: 比点焊速度快,个人感觉焊接效果没有拉焊好,有时候引脚上的焊锡不均匀,而且可能会粘焊。
3 拉焊: 需要的工具都很一般,特别是电烙铁,在焊接过程中烙铁头并没有接触焊盘而是焊锡球。由于焊锡球的张力,各个引脚上的焊锡很均匀且不多,很美观!速度嘛,熟练以后相对拖焊要快一点。此方法可谓是一种简捷可靠而又廉价的焊接方法!
四  小结
根据实践,个人认为此方法很适合超密间距贴片元件的焊接。对于像SO这类引脚间距相对大一点的芯片,似乎引脚上会有点锯齿点,可能是我操作不熟练的缘故吧。我是先拿我的44B0开发板上MAX202-SO8做实验的,然后用此方法焊接了PDIUSBD12, HY29LV160, HY57V641620效果都很好。44B0芯片还没到啊。
该结束了,多多交流!
多谢各位啊!

表面贴片元件的手工焊接技巧

现在越来越多的电路板采用表面贴装元件,同传统的封装相比,它可以减少电路板的面积,易于大批量加工,布线密度高。贴片电阻和电容的引线电感大大减少,在高频电路中具有很大的优越性。表面贴装元件的不方便之处是不便于手工焊接。为此,本文以常见的PQFP封装芯片为例,介绍表面贴装元件的基本焊接方法。
一、所需的工具和材料
    焊接工具需要有25W的铜头小烙铁,有条件的可使用温度可调和带ESD保护的焊台,注意烙铁尖要细,顶部的宽度不能大于1mm。一把尖头镊子可以用来移动和固定芯片以及检查电路。还要准备细焊丝和助焊剂、异丙基酒精等。使用助焊剂的目的主要是增加焊锡的流动性,这样焊锡可以用烙铁牵引,并依靠表面张力的作用光滑地包裹在引脚和焊盘上。在焊接后用酒精清除板上的焊剂。
二、焊接方法
    1. 在焊接之前先在焊盘上涂上助焊剂,用烙铁处理一遍,以免焊盘镀锡不良或被氧化,造成不好焊,芯片则一般不需处理。
    2. 用镊子小心地将PQFP芯片放到PCB板上,注意不要损坏引脚。使其与焊盘对齐,要保证芯片的放置方向正确。把烙铁的温度调到300多摄氏度,将烙铁头尖沾上少量的焊锡,用工具向下按住已对准位置的芯片,在两个对角位置的引脚上加少量的焊剂,仍然向下按住芯片,焊接两个对角位置上的引脚,使芯片固定而不能移动。在焊完对角后重新检查芯片的位置是否对准。如有必要可进行调整或拆除并重新在PCB板上对准位置。
    3. 开始焊接所有的引脚时,应在烙铁尖上加上焊锡,将所有的引脚涂上焊剂使引脚保持湿润。用烙铁尖接触芯片每个引脚的末端,直到看见焊锡流入引脚。在焊接时要保持烙铁尖与被焊引脚并行,防止因焊锡过量发生搭接。
    4. 焊完所有的引脚后,用焊剂浸湿所有引脚以便清洗焊锡。在需要的地方吸掉多余的焊锡,以消除任何短路和搭接。最后用镊子检查是否有虚焊,检查完成后,从电路板上清除焊剂,将硬毛刷浸上酒精沿引脚方向仔细擦拭,直到焊剂消失为止。
    5。贴片阻容元件则相对容易焊一些,可以先在一个焊点上点上锡,然后放上元件的一头,用镊子夹住元件,焊上一头之后,再看看是否放正了;如果已放正,就再焊上另外一头。要真正掌握焊接技巧需要大量的实践

各路高手手工焊接贴片元件经验谈

[王为之]
我也是位新手,近来做过一些表贴电路,我觉得,一般的分立元件,当然谁都能焊好了,只要心细手稳,没总题的。关键是表贴的集成电路,例如64脚的MSP430系列,除了心细之外,还得有些好的工具,如一把好的烙铁(专用于焊表贴集成电路的),我用的只能说是还可以吧,120元一把。头儿细得像锥子一样。但长时间烧也不坏。贴片焊膏是必不可少的。如果想焊的更好些,更快些,
那么买 一台热风台就可以了,先拿小烙铁焊上两三个管脚,对准位置后,涂上焊膏,热风一吹,非常漂亮!但这种焊法,最后一定要拿放大镜,针尖,这两样工具一个一个管脚的检验,以防接触不良,我在这上面吃过好大的亏!
如果有一台热风台,就不会再因为焊坏板子而吃亏了,热风一吹,轻轻 一取就OK了,我过去焊坏好多板子,不是因为焊,而是因为取,引线太细,一取就完蛋了,有了热风台,就不会了。这玩意也不贵,300多就行了。
[duoduo]
这两年我手工焊过许多贴片,并不难,要细心,掌握方法。
对于50mil间距的贴片就不说了吧,很容易的。对于引脚间距细密的,首先在干净的焊盘上涂上一层焊锡膏,再用干净的恒温电烙铁往焊盘上薄薄一层焊锡,把元件放置上去对准,上锡固定好对角,然后随意挑一边用烙铁垂直引脚出线方向较缓滑过,同时稍用力下压元件这条边;然后就同样方法焊对边;然后就另外两边。最后检查,不好的地方重新焊过。
[mudfish]
1.焊贴片电阻电容
先在一个焊盘上上一点锡,用镊子夹住元件焊在这个焊盘上,如果不平可用镊子调整,最后可统一在另一个焊盘上上锡,完成焊接。
2.贴集成电路/连接器
精溶液做助焊剂。焊接前先用棉签沾上助焊剂涂抹在焊盘上,稍等一会,待酒精略微挥发一些后助焊剂会发粘,此时可将元件或连接器放好,略微压一下即可,注意一定要对正!然后用烙铁把对角线的两个管脚烫一下,即可固定元件,然后就一个脚一个脚地对付吧。也可以在烙铁头上稍微多上点锡,在元件的管脚上轻轻拉过。但是这样容易使管脚之间短路,不过也好解决,涂上些松香酒精溶液,趁酒精尚未挥发之际拿烙铁再烫一次就OK了(这回烙铁头可得弄干净了)。
都是俺自己干活的经验,呵呵,焊0.5mm间距的GSM Modem连接器都是一次成功!(当然一开始也交过一点学费哦)

点击此处查看原文 >>

系统分类: PCB&n