最新日志

发表于:2007-12-13 10:34:52
标签:无标签

0

元器件技术:谈贴片式集成电路的拆焊(zz)


技术分类: 模拟设计  | 2007-12-11

  在业余条件下拆焊贴片式集成电路是件比较困难的事,笔者在维修实践中总结了一套拆焊贴片式集成电路的方法,介绍给大家,供同行参考。

  1拆贴片式集成电路

  用挑引脚的方法拆贴片式集成电路,太麻烦,费时费力,稍有不慎即有可能损坏焊盘,给焊接集成电路时造成困难。笔者拆贴片式集成电路时使用的是塑 料焊枪,利用其吹出的高温热风将焊锡融化。我用的是浙江温州产700瓦电子调温式,电子市场有卖,市价80元左右。拆集成电路时先将板子从机器中拆出,将 集成电路引脚涂上松香水,然后将焊枪通电,温度开到最大,右手拿焊枪对准集成电路的引脚快速移动,使各个引脚轮流加热,左手拿尖头镊子夹住集成电路的某个 引脚,当焊锡完全融化后,左手迅速将集成电路提起,放在早准备好的酒精中散热,以备误判后再利用。

  2清理焊盘

  集成电路拆下后,焊盘上还有许多残锡,会给重焊集成电路造成困难,必须清理干净。用吸锡绳沁上松香,将残锡吸掉。吸时一定要注意,吸锡绳的移动方向要顺着焊盘的走向,不要横移,否则极易损坏焊盘。残锡清理完后,用脱脂棉蘸酒精将残余松香清理干净。

  3焊接

  贴片式集成电路的特点是引脚细,焊盘薄,选用


合适的电烙铁和焊锡丝是焊接成功的关键。笔者用的是广州黄花电子电 器厂生产的35瓦内热式长寿命烙铁,烙铁头尖细且不氧化,加热后蘸一下松香,烙铁头非常光亮,适合贴片元件的焊接。电子市场有卖,大约二十几元。焊锡丝我 用的是08毫米`含锡量为65%的不知名的含松香焊锡丝(日文,看不懂)。这种焊锡丝粗细合适,含锡量适中。焊锡丝太粗不易焊接,含锡量太低影响焊接效 果。

  焊接时先将集成电路的引脚涂上松香水,然后将集成电路引脚与印板上的焊盘位置准确定位。将四角焊牢,再检查一遍确认集成电路的每一个引脚都正 确与自己的焊盘位置相对应。然后将主板竖起(需别人帮忙),左手拿焊锡丝,右手拿烙铁,烙铁与主板成35度角,从集成电路右边最上一脚焊起,烙铁与焊锡丝 一起向下移动,利用流动的热锡将引脚与焊盘焊牢。从最上个引脚移到最下个引脚期间,若有两个引脚或多个引脚焊连在一起,重复以上动作,利用松香的表面张力 使相邻两脚分开。焊接完一面后,甩掉残锡,蘸一下松香清洁烙铁头,使之保持光洁。转动主板,再重复以上动作,将所有引脚焊完。若有个别引脚还焊在一起,可 用吸锡绳吸开,在分别补焊。用酒精清洗集成电路各引脚上的残余松香,烘干或自然风干后,整个拆焊工作结速。

  注意事项:

  烙铁焊接下滑时用力一定要轻,主要是利用重力使热焊锡流动来焊接。太用力容易将引脚弄弯,造成麻烦。

  另外,焊接时流动的焊锡容易掉在板子上,焊接完毕后要仔细检查清理残锡,防止通电后造成损失。

  初练这种焊接方法时建议大家用VCD机的主板练习(如三星802主板),这种板上的集成电路在主板的背面,周围没有分立元件,不会影响烙铁焊接 过程中的移动,而解码板上的贴片式集成电路与分立元件在同一面,会影响烙铁的移动,给焊接造成不便。焊接这样的板时,可先将碍事的分立元件先拆除,将集成 电路拆焊完后再将分立元件复原。

  这种方法一般只须练习3—5次即可熟练掌握。熟练掌握后,焊后的集成电路与原厂焊接的没有什么区别。这种方法简单易学,省时省力效率高.

点击此处查看原文 >>

系统分类: 模拟技术   |    用户分类: 无分类    |    来源: 无分类

评论(0) | 阅读(277)
发表于:2007-12-5 15:25:04
标签:无标签

0

申请样片

1。http://www.analog.com/
如果你是首次登陆,请注册,在网页最下面,有Registration一项,点击进入
按要求注册,注意信箱一定要正确,它要发确认信件,成功后,用你注册的信箱登陆,然后修改个人资料。
我从AD已经申请过多次了,每次都很快就寄给我了,最快3~4天左右。

2。http://www.maxim-ic.com.cn/samples/
通常情况下,一次最多提供三种型号的样片,每种型号提供2片。
一般是北京发货过来,有的时候会申请不到。

3。http://www.ti.com.cn/buy/sample
最多提供 8 种不同型号的器件样片。有些朋友说不能够申请了。我以前每次
申请都可以,后来不行了。我问了TI公司,他们回答是必须用公司的信箱注册
并申请才可以,免费的信箱(如hotmail,263,163....)等是不行的。
只要你有在公司的个人信箱,就可以了。

4。http://www.national.com/pf/master.html
查找你要的芯片,后面有个sample得,点击进入即可。

5。http://www.linear.com.cn/index.jsp
主页上左边有申请样片图标。不过也得要注册以下。到时候可能会打电话给你核对地址,所以请填写电话。

 

6. http://sample.microchip.com/Default.aspx?testCookies=true

上microchip网站提交您的申请,申请结束前,它问你,样片从哪里出货,选microchip direct!

microchip direct的国内样片目前全部委托上海的立奇国际贸易(上海)有限公司(http://www.infortech.net.cn)出货的,您可以等它或主动与它联系,最终获得样片。申请的样片大约在20---30天内到您手中。或直接找代理商申请。

 


1.(推荐) 我申请后10天就收到15片(5种*3片)样品
    先注册   https://ti-pass.ext.ti.com/cgi-bin/reg/reg0e.pl?cck=1<=myti&URI=https://my.ti.com
   再申请http://www.ti.com.cn/buy/sample/

2 (推荐) 申请了两次都收到了,公司的同事申请了好几次都收到了
   http://www.maxim-ic.com.cn/sample.htm

3 申请已收到mail 告知样片已发出,快递的号码也告诉我了,应该有了
    就是五种芯片都只给了一片,有点小气.
  http://sample.microchip.com/

1、铁电存储器(未见量的限制,据说最多有人申请了100片,不知真假.)
介绍:铁电存储器(FRAM)产品将ROM的非易失性数据存储特性和RAM的无限次读写、高速读写以及低功耗等优势结合在一起。FRAM产品包括各种接口和多种密度,像工业标准的串行和并行接口,工业标准的封装类型,以及4Kbit、6Kbit、64Kbit、256Kbit和1Mbit等密度。
申请地址:http://www.huazhoucn.com/mianfei.aspx
申请注意:填写好企业、姓名等内容,不然可能收不到。当然可以多几个人申请,嘿嘿

2、VK系列UART(一次最多2片)
介绍:维肯公司主要提供集成电路,射频电子标签读卡模块,医疗电子产品,汽车电子产品等在类的电子产品和整体解决方案。
申请地址:http://www.vkic.com/usermanage/login.asp
申请注意:属企业级的申请,要填正确公司、姓名、联系方式。

3、ADI公司(最多索取3种产品,每种2片)
介绍:ADI含几乎所有的模拟器件产品。
申请地址:http://www.analog.com/intl/china/orderSamples/

4、Maxim公司(最多索取3种产品,每种2片)
介绍:Maxim公司免费提供Maxim/Dallas样品,以方便您评估测试其性能之用。
申请地址:http://www.maxim-ic.com.cn/samples/
申请注意:需填写该表格中的“最终产品”和“预计年用量” 两项内容

5、Microchip Technology Inc(最多索取5种,每种1片)
介绍:单片机和模拟半导体供应商
申请地址:http://sample.microchip.com/Default.aspx?testCookies=true
申请注意:时间较长,2个星期

6、TI((最多提供 8 种不同型号的器件样片) )
介绍:模拟和 DSP 技术
申请地址:http://focus.ti.com.cn/cn/general/docs/gencontent.tsp?contentId=29859&DCMP=TI-cn_Home_Tracking&HQS=v?OT+home_b_samples
申请注意:在申请前组织下运用

7、成都国腾
介绍:IC接口类、IC电源类、IC存储类、IC消费类、IC其它产品、IP类、IC通讯类
申请地址:http://www.gticc.com/cn/khfw-ypsq1.htm

8、南京沁恒
介绍:涵盖电子电路、单片机和DSP、可编程器件、计算机硬件体系构架、计算机BIOS和系统软件
申请地址:http://www.wch.cn/technique/index2.asp
申请注意:客户需自付快递运费

9、飞思卡尔
申请地址:http://www.freescale.com/webapp/sps/site/homepage.jsp?nodeId=010984007869597059286929489

10、美国微芯科技公司
介绍:以太网控制器
申请地址:http://www.skyhic.com/

11、北天星
介绍:ATMEL、RAMTRON、ALLIANCE、TAISOL、ATCHIP、UTC、ESI、VIMICRO、Philips、MXIC、ST等原厂的各种芯片样品
申请地址:http://www.po-star.com

http://www.mcu-memory.comcom/sample.asp

12、深圳市英蓓特信息技术有限公司
介绍:嵌入式开发
申请地址:http://www.embed.com.cn/yangpian/index.asp?company_id=5089
注意:邮资自付

13、润金法
介绍:单片机
申请地址:http://www.ic365.com.cn/asp/apply.asp
注意:向企业,个人有些困难

14、双龙电子
介绍:SUNSHINE(编程器)、HILO(编程器/仿真器)、MICROTEK(仿真器)、ADVANTECH(编程器)、LEAP(编程器)、XELTEK(编程器)、

ENPLAS(Seckt)、3M(Socket)、CHIPTOOL(Socket)、ATMEL AVR(仿真器)
申请地址:http://www.sl.com.cn/

15、杭州利尔达科技
介绍:TI、ROHM、SIPEX、CATALYST、RAINSUN 等诸多国际著名半导体产品
申请地址:http://www.lierda.com/

16、泰仁发
介绍:单片机
申请地址:http://www.tairenfa.com/apply.htm

17、丹特公司
介绍:功率转换和电力存储系统
申请地址:http://www.dionics-usa.com/sample_req_form.htm

点击此处查看原文 >>

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

评论(0) | 阅读(406)
发表于:2007-12-2 22:35:41
标签:无标签

0

网络资源

电子类经典书籍汇总

《CMOS 模拟集成电路设计(第二版)》

著者: (美)艾伦等著
作译者: 冯军等译
ISBN号: 7-121-00641-3
出版日期: 2005-03

出版社:电子工业出版社

模拟集成电路的分析与设计(第4版)(影印版)

作 者: Paul R.Gray

装 桢:

精装

开 本:

16开

原 名:

Analysis and Design of Analog Integrated Gircuits,Fourth Edition

出版社:

高等教育出版社
出版日期: 2003-01-01
ISBN:

704013043

 

射频微电子(英文影印版)

作 者: [美]Behzad Razavi

装 桢:

精装

开 本:

16开

出版社:

清华大学出版社
出版日期: 2003-12-01
ISBN: 730207522

《高速数字设计》

著者: (美)约翰逊等著
作译者: 沈立等译
ISBN号: 7-5053-9909-8
出版日期: 2004-05

出版社:电子工业出版社

《数字电路简明教程》

著者: 美Robert D. Thom
作译者: 马爱文等译
ISBN号: 7-5053-7645-4/TN.1603
出版日期: 2003-08

出版社:电子工业出版社

C程序设计(第三版)

ISBN:7302108536
定价:26元
印次:3-4
装帧:平装
出版日期:2005-7-1

出版社:清华大学出版社

《信号与系统(第二版)(英文版)》

作译者: [美]Alan V.Oppenheim
ISBN号: 7-5053-7846-5/TN.1644
出版日期: 2003-01

出版社:电子工业出版社

模拟电子技术基础(第3版)

作者:童诗白、华成英

书号:7-04-009147-X

页数:664

出版日期:2002-02-28

出版社:高等教育出版社

《产品设计中的 EMC 技术(第三版)》

著者: (英)威廉姆斯著
作译者: 李迪等译
ISBN号: 7-5053-9809-1
出版日期: 2004-06

出版社:电子工业出版社

模电三剑客:

1、Behzad Razavi , "Design of Analog CMOS Integrated Circuit"
2、Phillip E.Allen , Douglas R.Holberg , "CMOS Analog Circuit Design (Second Edition)"
3、Paul R.Gray , "Analysis and Design of Analog Integrated Circuits"

ic前端几本经典书籍:

No.1  Writing Testbenches, Functional Verification of HDL Models            
         by Janick Bergeron                   

本书主要以HDL(verilog/vhdl)为例,详细讲述了在IC    Priciples of Verifiable RTL Design, 2nd Ed.     
            by Lionel Bening & Harry Foster     
比较早的介绍有关RTL A Practical Guide for Designing, Synthesizing, and Simulating  ASICs and FPGAs  using VHDL or Verilog    
(HDL Chip Design)    by Douglas J. Smith

最为经典的讲述VHDL以及Verilog 设计的宝典书籍!设计范例涵盖很多设计中经常用的设计模块,堪称IC设计的 "词典",   Advanced ASIC Chip Synthesis  Using Synopsys Design Compiler and PrimeTime
            by Himanshu Bhatnagar CONEXANT, Newport Beach, CA, USA

迄今为止唯一的一本针对主流IC设计平台工具,synopsys design compiler
以及primetime的设计流程 进行具体指导的宝典!参考本书你可以很快就可
以对RTLdesign flow 以及static timing analysis有很深的理解,设计功力
也会增加那么一点点了, 当然还需要你勤加练习!

No.5   Reuse Methodology Manual for System-on-a-Chip Designs Third Edition
         Edited by Michael Keating  Synopsys, Inc., Mountain View, CA, USA
         Pierre电子系统中的躁声抑制与衰减技术>   EMC for product designer>        

模拟电子技术基础(第三版)    童诗白 华成英                高等教育出版社
数字设计原理与实践(原书第3版)    John   机械工业出版社
 数字电子技术基础            阎石                         高等教育出版社
C语言程序设计                   谭浩强                       清华大学出版社
  C++ 程序设计教程            钱能 董灵平 张敏霞           清华大学出版社
数据结构       数据结构(C语言版)         严蔚敏 吴伟民                清华大学出版社
操作系统——内核与设计原理(第四版)    William Stallings               电子工业出版社
PCB高速数字设计                Howard 电子工业出版社
PCB电磁兼容技术—设计实践   顾海洲 马双武                清华大学出版社
信号与系统     信号与系统(第二版)          Alan              

信号与系统(第二版)上、册  郑君里 应启珩 杨为理         高等教育出版社
数字信号处理   数字信号处理——理论、算法与实现(第二版)    胡广书      清华大学出版社

电子网集锦


1 电子设计技术[简体]全球最大电子业信息网Cahners与国内业界权威的中国电子报共建。


2 21ic中国电子网[简体]电子方面的专业网站。


3 中国消费类电子产品设计[简体]有关家电产品设计,信息家电,网络家电等。


4 电子科技网[简体]全面介绍电子行业的一个综合性站点,内容丰富。


5 中国电子材料网[简体]信息产业基础产品及材料。


6 PCB信息网[简体]内容包括电子CAD,PCB材料,PCB生产工艺,设备,SMT组装。


7 电子工程师论坛[简体]及时的业界消息,活跃的思想碰撞。


8 jdhome[简体]diyer入门世界,初等电子电路介绍,五班联系点,窃听设备。


9 96-98国家高技术研究发展计划信息技术领域光电子主题[简体]介绍研制光纤通信、光计算与光互连等最新成果。


10 中国电工网[简体]中国电工行业的门户类网站,提供电工新闻、企业产品数据库等信息。


11 中国电气科技网[简体]电气、电器、电力、电气产品方面的综合门户网站。


12 EDA中国论坛 & 高速数字电路PCB设计[简体]最新的电子设计自动化软件资讯,使用手册,高速数字电路PCB设计。


13 电子空间[简体]电子技术、电子元件、无线电、发烧友、火腿、电子图书等应有尽有。


14 电子工程专辑[简体]提供电子工程产业要闻、技术趋势以及技术文章和应用指南。


15 电子在线[简体]家电维修资料维修技术,无线电技术资料,电路图,电子网站链接等。


16 电子设计论坛[简体]电子设计的核心动力—电子设计自动化论坛。


17 电子电气专业资讯网[简体]业内新闻新品、器件资料查询、专家咨询、技术讨论区、人才职位信息。


18 电子爱好者[简体]电子技术应用、推广专业网站。


19 无线电与电子技术[简体]介绍无线电与电子技术。


20 全球电子元件 Datasheet Locator[英文]免费的电子工程工具,可以从全球电子元件制造商中定位产品数据表。


21 电子学指南/The Scots Guide to Electronics[英文]覆盖了电子学,物理学的相关领域,信息技术。


22 大大电子网[简体]提供电子方面的咨询与服务,有电子设计,移动通信,手机。


23 电子制作[简体]电子制作网站,主要有:单片机、话筒、保安报警、玩具、收录放音响。


24 步行者电子园地[简体]有关电子元器件、基本概念、电路原理、EMC、DSP、家庭影院等方面的内容。


25 pecker的家[简体]一个关于电子的个人网站。


26 美国国家电子编码网络节点[英文]包括特殊电路板的介绍、制造工艺和方法。


27 电子参考[英文]介绍如何识别电阻色标,电容及简称。


28 Hegna Electronics AS[英文]开关控制装置,中压开关核相器,带接点输出等。


29 电子产品制造指南[英文]内容包括电子产品指南,并具备功能查找功能。


30 DIGIKEY网上电子产品专营[英文]网上专营电子产品,产品有很大的可选性。


31 电子工程程度测验[英文]位于美国斯坦福大学,内容包括对电子学工程师的能力测验。


32 EDTN电子设计、技术、新闻网[英文]内容包括电子类的新闻与信息,电子元件及电子元件设计等。


33 电子快递[英文]网上销售电子元件与设备专线。


34 JAMECO[英文]内容包括电子元件和计算机产品的介绍。


35 Dwin电子城[简体]电子综合技术与电脑技术。


36 电子设计工作室[简体]电子设计,PROTEL电路设计软件介绍,EDA软件应用等。


37 电子产品设计园地[简体]包含电子产品设计技术交流,单片机技术,太阳能光伏技术。


38 康为电子[简体]电子信息、电子技术、实用制作、微机通讯、技术论坛等内容。


39 电子玩家[简体]介绍卫星和卫星电视的一般知识,应用,最新技术。


40 多为电子[简体]几个朋友组成的电子工作室,尝试异地合作的可能,欢迎您的加入。


41 电子设计服务网站[简体]电子设计服务、咨询,设计信息交流。


42 电子空间之家[简体]介绍电子知识和电子技术。


43 青岛电子网[简体]以电子显示屏、网络技术、卫星定位系统等高新技术为主的网站。


44 电气之家[简体]一个电工的个人主页,介绍一些关于电力、电子方面的情况。


45 EDA交流[简体]主要提供EDA软件的使用经验交流及软件下载。


46 国强电子[简体]电子管功放、集成功放、音箱的设计制作,元件邮购。


47 逆变电焊机[简体]交流逆变焊机的有关电力电子技术,及本人的科研动态。


48 电子电气工程师协会IEEE(The Institute of Electrical and Electronics Engineers)[英文]电子工程协会相关信息的查询,10千兆以太网标准的指定组织.


49 电子设计EDA解决方案-EDA2000系列[简体]提供免费EDA电子设计软件,电子相关资料。


50 小胖主页-IC世界[简体]Verilog hdl,CPU设计,集成电路设计,疯狂英语,恩雅。


51 电子爱好者天地[简体]专业电子电路开发,PCB印刷板设计。


52 Protel使用导航[简体]提供丰富的电路设计知识。


53 泥土天空[简体]个人集成电路研究和复旦大学电子工程系微电子设计研究室的主页。


54 欧洲电路协会[英文]是电子与电路爱好者的服务站,内容丰富,更新及时。


55 电路中心[英文]内容包括各种电路的相关档案。


56电路分析软件[英文]介绍一个用于电路分析的软件包,该软件包具有大量有用的功能。


57 电子元器件世界网[简体]包含国内最多的电子元器件,集成电路,电阻,电容,仪器仪表信息。


58 ICDIY 次世代晶片设计网[简体]IC设计工具网络化,提供在线的设计、学习及经验交流的环境。

 

点击此处查看原文 >>

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

评论(4) | 阅读(352)
发表于:2006-12-25 13:09:01
标签:无标签

1

关于ARM处理器Remap的理解(抄的)

关于ARM处理器Remap的理解 (抄的)
0.什么是Remap

我的理解是:在ROM从0x0用几句指令引导系统之后,把RAM映射到0x0就是Remap。

1.Remap的作用

当ARM处理器上电或者Reset之后,处理器从0x0取指。因此,必须保证系统上电时,0x0处有指令可以执行。所以,上电的时候,0x0地址处必定是ROM或者Flash(NOR)。 但是,为了加快启动的速度,也方便可以更改异常向量表,加快中断响应速度,往往把异常向量表映射到更快、更宽(32bit/16bit)的RAM中。但是异常向量表的开始地址是由ARM架构决定的,必须位于0x0处,因此,必须把RAM映射到0x0。

 2.Remap的配置

Remap的实现和ARM处理器的实现相关。 1)如果处理器有专门的寄存器可以完成Remap。那么Remap是通过Remap寄存器的相应bit置1完成的。如Atmel AT91xx 2)如果处理器没有专门的寄存器,但是memory的bank控制寄存器可以用来配置bank的起始地址,那么只要把RAM的起始地址编程为0x0,也可以完成remap。如samsung s3c4510 3)如果上面两种机制都没有,那么Remap就不要做了。因为处理器实现决定了SDRAM对应的bank地址是不能改变的。如Samsung S3c2410. 3.Remap配置前后要做的工作 Remap前后,不同之处就是RAM的位置变了。为了达到Remap的目的,就是加快启动的速度和异常处理速度,一定要初始化异常堆栈和建立异常向量表的。 4.如果象2410那样不能Remap的话怎么办? 2410不是不能Remap吗?为了加快启动速度,可以这样做 1)使用它的NAND boot模式。为什么NAND boot会比较快,那是因为2410里面有块小石头——“SteppingStone”,一块4KB SRAM,它是映射在0x0的。启动程序会自动被copy到这个石头里面。自然异常向量的入口放到这个地方,一样可以达到比NOR boot快的启动、异常响应速度。 2)如果你对NOR Boot情有独衷,那么你只好把你的异常向量的入口copy到SDRAM里面,实现所谓的High Vector 我个人认为,如果中断向量放在rom中的0x0位置,就用不着remap,但是无法再更改中断向量,如果放在ram或其他的存储器中,那么就应该用的remap,因为在系统复位后,对系统环境的初始化是从中断向量中的中断reset开始的,而系统运行必须是从rom的0x0开始的,因此应该利用remap把放中断向量的初始地址映射到rom的0x0处,以使程序进行正确的初始化.这样既可以初始化,有可以使程序运行的快一些,因为毕竟rom的速度是比较慢的.

以上是个人理解,如有错误请大家指正!!!

点击此处查看原文 >>

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

评论(7) | 阅读(1287)
发表于:2006-12-25 2:39:44
标签:无标签

1

基于ARM的嵌入式系统Bootloader启动流程分析

基于ARM的嵌入式系统Bootloader启动流程分析
作者:万永波 张根宝 田泽 杨峰 来源:微计算机信息

 

摘要:讲述了基于ARM处理器的嵌入式系统在上电启动后应用程序或操作系统运行前,对处理器及其内部功能模块进行初始化的过程,并结合经过实际验证的代码详细的分析了S3C44B0 Bootloader的运行过程。
关键字:ARM 嵌入式系统 Bootloader

一. 引言:
       对于PC机,其开机后的初始化处理器配置、硬件初始化等操作是由BIOS(Basic Input /Output System)完成的,但对于嵌入式系统来说,出于经济性、价格方面的考虑一般不配置BIOS,因此我们必须自行编写完成这些工作的程序,这就是所需要的开机程序。而在嵌入式系统中,通常并没有像 BIOS 那样的固件程序,启动时用于完成初始化操作的这段代码被称为Bootloader程序,因此整个系统的加载启动任务就完全由Bootloader 来完成。简单地说,通过这段程序,可以初始化硬件设备、建立内存空间的映射图(有的CPU没有内存映射功能如S3C44B0),从而将系统的软硬件环境设定在一个合适的状态,以便为最终调用操作系统内核、运行用户应用程序准备好正确的环境。Bootloader依赖于实际的硬件和应用环境,因此要为嵌入式系统建立一个通用、标准的Bootloader是非常困难的。Bootloader也依赖于具体的嵌入式板级设备的配置,这也就是说,对于两块不同的嵌入式主板而言,即使它们是基于同一 CPU 而构建,要想让运行在一块板子上的 Bootloader 程序也能运行在另一块板子上,通常都需要修改 Bootloader 的源程序。

二. 启动流程
       系统加电复位后,几乎所有的 CPU都从由复位地址上取指令。比如,基于 ARM7TDMI内核的CPU在复位时通常都从地址 0x00000000处取它的第一条指令。而以微处理器为核心的嵌入式系统通常都有某种类型的固态存储设备(比如EEPROM、FLASH等)被映射到这个预先设置好的地址上。因此在系统加电复位后,处理器将首先执行存放在复位地址处的程序。通过集成开发环境可以将Bootloader定位在复位地址开始的存储空间内,因此Bootloader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,比如功能简单仅包括应用程序的系统,但在系统启动时都必须执行Bootloader,为系统运行准备好软硬件运行环境。
       系统的启动通常有两种方式,一种是可以直接从Flash启动,另一种是可以将压缩的内存映像文件从Flash(为节省Flash资源、提高速度)中复制、解压到RAM,再从RAM启动。当电源打开时,一般的系统会去执行ROM(应用较多的是Flash)里面的启动代码。这些代码是用汇编语言编写的,其主要作用在于初始化CPU和板上的必备硬件如内存、中断控制器等。有时候用户还必须根据自己板子的硬件资源情况做适当的调整与修改。
       系统启动代码完成基本软硬件环境初始化后,对于有操作系统的情况下,启动操作系统、启动内存管理、任务调度、加载驱动程序等,最后执行应用程序或等待用户命令;对于没有操作系统的系统直接执行应用程序或等待用户命令。
       启动代码是用来初始化电路以及用来为高级语言写的软件做好运行前准备的一小段汇编语言,在商业实时操作系统中,启动代码部分一般被称为板级支持包,英文缩写为BSP。它的主要功能就是:电路初始化和为高级语言编写的软件运行做准备。系统启动流程如图1所示,主要的过程如下:

300)this.width=300" align="absMiddle" border="0">
    1. 启动代码的第一步是设置中断和异常向量。
    2. 完成系统启动所必须的最小配置,某些处理器芯片包含一个或几个全局寄存器,这些寄存器必须在系统启动的最初进行配置。
    3. 设置看门狗,用户设计的部分外围电路如果必须在系统启动时初始化,就可以放在这一步。
    4. 配置系统所使用的存储器,包括Flash,SRAM和DRAM等,并为他们分配地址空间。如果系统使用了DRAM或其它外设,就需要设置相关的寄存器,以确定其刷新频率,数据总线宽度等信息,初始化存储器系统。有些芯片可通过寄存器编程初始化存储器系统,而对于较复杂系统通常集成有MMU来管理内存空间。
    5. 为处理器的每个工作模式设置栈指针,ARM处理器有多种工作模式,每种工作模式都需要设置单独的栈空间。
    6. 变量初始化,这里的变量指的是在软件中定义的已经赋好初值的全局变量,启动过程中需要将这部分变量从只读区域,也就是Flash拷贝到读写区域中,因为这部分变量的值在软件运行时有可能重新赋值。还有一种变量不需要处理,就是已经赋好初值的静态全局变量,这部分变量在软件运行过程中不会改变,因此可以直接固化在只读的Flash或EEPROM中。
    7. 数据区准备,对于软件中所有未赋初值的全局变量,启动过程中需要将这部分变量所在区域全部清零。
    8. 最后一步是调用高级语言入口函数,比如main函数等。

三. 程序分析
    下面根据实际经过测试的代码详细讲述系统的启动过程。
    .text      /*将此操作符开始的代码编译到代码段或代码段子段中*/
    /* 集成开发环境(IDE)可以通过链接脚本文件将下面的语句定位在零起始地址,系统上电后CPU从此处开始执行*/
    ENTRY:
        b ResetHandler   /*跳至ResetHandler,此句被定位在零起始地址*/
/*除用户模式外的其他6种模式称为特权模式。特权操作模式主要处理异常和监控调用(有时称为软件中断),它们可以自由的访问系统资源和改变模式。特权模式中除系统模式以外的5种模式又称为异常模式,下面的代码用于出现异常时CPU就会根据以下的语句自动跳转到对应的异常处理程序处*/


    b HandlerUndef        /* handlerUndef         */
    b HandlerSWI         /* SWI interrupt handler  */
    b HandlerPabort       /* handlerPAbort        */
    b HandlerDabort       /* handlerDAbort       */
    b .                   /* handlerReserved      */
    b HandlerIRQ
    b HandlerFIQ
… ...
… ...
ResetHandler:  /*上电后跳转到此处开始执行*/
    Ldr r0,=WTCON  /*禁止看门狗*/
    ldr     r1,=0x0
    str     r1,[r0]
    ldr     r0,=INTMSK    /*屏蔽所有中断请求 */
    ldr     r1,=0x07ffffff
    str     r1,[r0]


 /*设置时钟控制寄存器*/
    ldr  r0,=LOCKTIME
    ldr  r1,=0xfff
    str  r1,[r0]
.if PLLONSTART
 ldr  r0,=PLLCON   /* 设置PLL */
 ldr  r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV) /*Fin=8MHz,Fout=64MHz*/
 str  r1,[r0]
.endif
    ldr     r0,=CLKCON 
    ldr     r1,=0x7ff8      /*所有单元时钟允许*/
    str     r1,[r0]
/*为BDMA设置复位值*/
    ldr     r0,=BDIDES0
    ldr     r1,=0x40000000     /* BDIDESn 复位值应为 0x40000000 */
    str     r1,[r0]
    ldr     r0,=BDIDES1
    ldr     r1,=0x40000000     /* BDIDESn 复位值应为 0x40000000 */
str     r1,[r0]


        /*设置存储器控制寄存器,存储器的配置数据都存储在SMRDATA为起始地址的数据表中,下面的代码可以一次将预先配置好的初始化数据存入与存储器控制器相关的13个寄存器,这些寄存器则是以0x01c80000为起始地址的13个连续的32位寄存器*/


    ldr     r0,=SMRDATA
    ldmia   r0,{r1-r13}
    ldr     r0,=0x01c80000    /* BWSCON存储控制寄存器地址 */
    stmia   r0,{r1-r13}
/*初始化堆栈*/
/* CPU复位后是处于管理模式下的,所以首先要初始化管理模式下的堆栈寄存器*/
    ldr     sp, =SVCStack


       /*由于处理器的每种运行模式都要有自己独立的物理堆栈寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行*/
       bl     InitStacks   /*跳转至其它堆栈初始化程序并返回*/


 /*设置IRQ中断处理*/
       /*44B0有两种中断模式:一种是没有中断向量表;一种是使用了中断向量表,使用中断向量表只能是IRQ方式。当使用中断向量表的时候,中断发生时由S3C44B0的中断控制器根据中断向量表,利用硬件方式自动跳转到相应的中断处理服务程序所在的位置;不使用中断向量表时按下面的代码,利用软件方式跳转而进行中断处理,因为S3C44B0有30个中断源,所以需要程序判断以确定调用那个中断服务程序*/


    ldr     r0,=HandleIRQ /*如果在0x18和0x1c地址处无“subs pc,lr,#4”*/
    ldr     r1,=IsrIRQ  /*为了中断正常返回这些语句是必须的 */
    str     r1,[r0]


        /*拷贝读写区域数据/数据区准备,将系统需要读写的数据和变量从ROM拷贝到RAM里。 Image_RO_Limit、Image_RW_Base、Image_ZI_Base等这些符号还会在另外的链接脚本文件中出现,这些符号是用来定位程序各个段的参考信息。集成开发环境在编译链接的时候会根据我们编写的程序,把它们转换成用来对各个段定位的地址信息*/


    LDR     r0, =Image_RO_Limit /*取只读数据区域地址指针*/
    LDR     r1, =Image_RW_Base /*准备执行拷贝操作*/
    LDR     r3, =Image_ZI_Base
     CMP     r0, r1       /*检查是否相同*/
    BEQ     F1        /*相同则跳过拷贝操作*/
F0:
    CMP     r1, r3    /*执行拷贝操作*/
    LDRCC   r2, [r0], #4
    STRCC   r2, [r1], #4
    BCC     F0
F1:
    LDR     r1, =Image_ZI_Base /*零数据准备区起始地址*/
    MOV     r2, #0
F2:
    CMP     r3, r1       /*执行数据区清零*/
    STRCC   r2, [r3], #4
    BCC     F2

 MRS r0, CPSR
 BIC r0, r0, #NOINT     /*中断请求允许*/
 MSR CPSR_cxsf, r0
/* 跳转到C入口程序 */
    BL Main
    B.

四. 总结:
       启动过程中的初始化程序就是初始化CPU内部各个关键的寄存器、配置外围硬件电路相关寄存器、建立中断向量表等,然后跳转到一般由高级语言编写的主函数的应用程序代码去执行,这样就可以利用高级语言来编写完成系统设计所要求的各种功能。初始化的过程对大多数初学者来说,比较难理解的是中断的处理和一些少见的操作符号,这些符号多是一些宏定义或系统用于在内存空间中对各个段的定位标识符号。掌握了S3C44B0的启动代码之后,对系统功能程序设计会起到很大的帮助,是进行下一步程序设计的基础。

五. 参考文献:
1. 田泽.嵌入式系统开发与应用.北京.北京航空航天大学出版社.2005
2. 田泽.嵌入式系统开发与应用实验教程.北京.北京航空航天大学出版社.2004
3. 深圳英蓓特信息技术有限公司.Embest ARM实验教学系统用户手册.Version 2.01.2003
4. SAMSUNG公司.S3C44B0_datasheet.pdf.

点击此处查看原文 >>

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

评论(1) | 阅读(981)
发表于:2006-12-25 2:26:30
标签:无标签

1

ARM启动代码设计参考

(转贴)ARM启动代码设计参考

基于ARM的芯片多数为复杂的片上系统,这种复杂系统里的多数硬件模块都是可配置的,需要由软件来设置其需要的工作状态。因此在用户的应用程序之前,需要由专门的一段代码来完成对系统的初始化。由于这类代码直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。一般通用的内容包括:
中断向量表
初始化存储器系统
初始化堆栈
初始化有特殊要求的断口,设备
初始化用户程序执行环境
改变处理器模式
呼叫主应用程序
1. 中断向量表
ARM要求中断向量表必须放置在从0地址开始,连续8X4字节的空间内。
每当一个中断发生以后,ARM处理器便强制把PC指针置为向量表中对应中断类型的地址值。因为每个中断只占据向量表中1个字的存储空间,只能放置一条ARM指令,使程序跳转到存储器的其他地方,再执行中断处理。
中断向量表的程序实现通常如下表示:
AREA Boot ,CODE, READONLY
ENTRY
B    ResetHandler
B    UndefHandler
B    SWIHandler
B    PreAbortHandler
B    DataAbortHandler
B
B    IRQHandler
B    FIQHandler
其中关键字ENTRY是指定编译器保留这段代码,因为编译器可能会认为这是一段亢余代码而加以优化。链接的时候要确保这段代码被链接在0地址处,并且作为整个程序的入口。
2. 初始化存储器系统
(1)存储器类型和时序配置
通常Flash和SRAM同属于静态存储器类型,可以合用同一个存储器端口;而DRAM因为有动态刷新和地址线复用等特性,通常配有专用的存储器端口。
存储器端口的接口时序优化是非常重要的,这会影响到整个系统的性能。因为一般系统运行的速度瓶颈都存在于存储器访问,所以存储器访问时序应尽可能的快;而同时又要考虑到由此带来的稳定性问题。
(2)存储器地址分布
一种典型的情况是启动ROM的地址重映射。
3. 初始化堆栈
因为ARM有7种执行状态,每一种状态的堆栈指针寄存器(SP)都是独立的。因此,对程序中需要用到的每一种模式都要给SP定义一个堆栈地址。方法是改变状态寄存器内的状态位,使处理器切换到不同的状态,让后给SP赋值。注意:不要切换到User模式进行User模式的堆栈设置,因为进入User模式后就不能再操作CPSR回到别的模式了,可能会对接下去的程序执行造成影响。
这是一段堆栈初始化的代码示例,其中只定义了三种模式的SP指针:
MRS   R0,CPSR
BIC    R0,R0,#MODEMASK  安全起见,屏蔽模式位以外的其他位
ORR   R1,R0,#IRQMODE
MSR   CPSR_cxfs,R1
LDR   SP,=UndefStack

ORR   R1,R0,#FIQMODE
MSR   CPSR_cxsf,R1
LDR   SP,=FIQStack

ORR   R1,R0,#SVCMODE
MSR   CPSR_cxsf,R1
LDR   SP,=SVCStack
4. 初始化有特殊要求的端口,设备
5. 初始化应用程序执行环境
映像一开始总是存储在ROM/Flash里面的,其RO部分即可以在ROM/Flash里面执行,也可以转移到速度更快的RAM中执行;而RW和ZI这两部分是必须转移到可写的RAM里去。所谓应用程序执行环境的初始化,就是完成必要的从ROM到RAM的数据传输和内容清零。
下面是在ADS下,一种常用存储器模型的直接实现:
LDR    r0,=|Image$$RO$$Limit|      得到RW数据源的起始地址
LDR    r1,=|Image$$RW$$Base|      RW区在RAM里的执行区起始地址
LDR    r2,=|Image$$ZI$$Base|        ZI区在RAM里面的起始地址
CMP    r0,r1                      比较它们是否相等
      BEQ    %F1
0     CMP    r1,r3
      LDRCC  r2,[r0],#4
      STRCC  r2,[r1],#4
      BCC    %B0
1     LDR    r1,=|Image$$ZI$$Limit|
      MOV   r2,#0
2     CMP    r3,r1
      STRCC  r2,[r3],#4
      BCC    %B2
程序实现了RW数据的拷贝和ZI区域的清零功能。其中引用到的4个符号是由链接器第一输出的。
|Image$$RO$$Limit|:表示RO区末地址后面的地址,即RW数据源的起始地址
|Image$$RW$$Base|:RW区在RAM里的执行区起始地址,也就是编译器选项RW_Base指定的地址
|Image$$ZI$$Base|:ZI区在RAM里面的起始地址
|Image$$ZI$$Limit|:ZI区在RAM里面的结束地址后面的一个地址
程序先把ROM里|Image$$RO$$Limt|开始的RW初始数据拷贝到RAM里面|Image$$RW$$Base|开始的地址,当RAM这边的目标地址到达|Image$$ZI$$Base|后就表示RW区的结束和ZI区的开始,接下去就对这片ZI区进行清零操作,直到遇到结束地址|Image$$ZI$$Limit|
6. 改变处理器模式
因为在初始化过程中,许多操作需要在特权模式下才能进行(比如对CPSR的修改),所以要特别注意不能过早的进入用户模式。
内核级的中断使能也可以考虑在这一步进行。如果系统中另外存在一个专门的中断控制器,这么做总是安全的。
7. 呼叫主应用程序
当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序。最简单的一种情况是:
IMPORT main
B      main
直接从启动代码跳转到应用程序的主函数入口,当然主函数名字可以由用户随便定义。
在ARM ADS环境中,还另外提供了一套系统级的呼叫机制。
IMPORT __main
B     __main
__main()是编译系统提供的一个函数,负责完成库函数的初始化和初始化应用程序执行环境,最后自动跳转到main()函数。

点击此处查看原文 >>

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

评论(0) | 阅读(696)
发表于:2006-12-25 1:47:44
标签:无标签

0

AT91RMM9200的PIO使用与设置

发贴心情 [原创]AT91RMM9200的PIO使用与设置

AT91RM9200管理PA,PB,PC,PD四个PIO,每个PIO都可以被设置工作在GPIO或者外设I/O状态下,但是要注意,要使能某个引脚的GPIO功能时,不能和该引脚的外设I/O功能发生冲突,只能使其工作在一个特定的状态下。


1。配置PIO工作在GPIO模式


以PB0为例,如果要使其工作在GPIO模式,则首先要使能PIO控制器,设置:


*(AT91C_PIOB_PER)=0x1;


然后或者把PB0作为输出,或者作为输入。如果作为输出口,设置:


*(AT91C_PIOB_OER)=0x1;


向使能为输出口的PB0写入一个数,设置:


*(AT91C_PIOB_SODR)=0x1;//写入1


*(AT91C_PIOB_CODR)=0x1;//写入 0


如果要把PB0作为输入口,则配置:


*(AT91C_PMC_PCER)|=0x1 << AT91C_ID_PIOB;//Enable PIOB MCK


*(AT91C_PIOB_ODR)=0x1; //Enable PB0 Input
很多用户忽略了上面的设置,结果读不到口的状态,如果使能了外设时钟,则读端口


状态设置:


int status;


status=*(AT91C_PIOB_PDSR)&0x01;


status反映了当前PB0口的电平,即status=0或1;


以上的过程就是如何配置一个I/O口作为通用I/O来使用。


2。配置PIO工作在外设I/O模式


仍以PB0为例,如果要使PB0工作在外设A模式或者B模式下,首先要禁止PIO控制器,设置:


*(AT91C_PIOB_PDR)=0x1;


如果要设置PB0为A功能,即TF0,则设置:


*(AT91C_PIOB_ASR)=0x1;


如果要设置PB0为B功能,即RTS3,则设置:


*(AT91C_PIOB_BSR)=0x1;


这时,PB0就不再受PIO控制器的管理而工作在外设引脚模式下了。


必须指出:AT91RM9200的所有外设引脚在使用之前必须进行步骤2的设置,否则该引脚无法使用。

点击此处查看原文 >>

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

评论(0) | 阅读(644)
发表于:2006-12-25 0:53:27
标签:无标签

0

AT91RM9200的启动过程

9200的启动过程
AT91RM9200的启动过程


系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤:


1.              PLL SETUP


设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率。


2.              相应模式下的堆栈设置


3.              检测主时钟源(Main oscillator)


4.              中断控制器(AIC)的设置


5.              C 变量的初始化


6.              跳到主函数


完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中未找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。


总的说来,笔者以为9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。

点击此处查看原文 >>

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

评论(0) | 阅读(1260)
发表于:2006-12-25 0:30:25
标签:无标签

0

评论(0) | 阅读(509)
发表于:2006-12-25 0:20:31
标签:无标签

0

学习arm的网站

ouravr的ourarm : http://www.ouravr.net/bbs/bbs_list.jsp?bbs_id=1032&bbs_page_no=6 

超前科技:http://www.mcu123.net/bbs/index.asp?boardid=28 

ARM开发网:http://www.okarm.com/index.asp?boardid=2 

IC开发网:http://www.icdev.com.cn/bbs/board.aspx?boardid=5 

IAR EWARM:http://www.iar.com 

H-JTAG的官方网站:http://twentyone.blogchina.com/ H-JTAG属于调试代理软件,软件做的那是相当好,我个人特别佩服。在这个网站上能学到不少东西。

新加坡的一家卖板网站:http://www.embeddedhub.com/cn/(中文的只是主页)描述:The main mission of EmbeddedHub is to supply a wide range of low cost embedded system development Hardware and Software tools to those who are willing to learn the arts of embedded system while keeping the cost under control.

Keil的官方更新下载网站:www.keil.com/update

www.mcuzone.com的书籍整理得不错,推荐下载。

点击此处查看原文 >>

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

评论(0) |