EDN首页   博客首页

最新日志

发表于:2008-9-1 22:46:10
标签:PCS,ATPCS  

2

PCS & ATPCS

本文来自网络,稍作整理。

什么是PCS,什么是ATPCS?
PCS即Procedure Call Standard(过程调用规范),ATPCS即ARM-THUMB procedure call standard。


PCS规定了应用程序的函数可以如何分开地写,分开地编译,最后将它们连接在一起,所以它实际上定义了一套有关过程(函数)调用者与被调用者之间的协议。PCS强制实现如下约定:调用函数如何传递参数(即压栈方法,以何种方式存放参数),被调用函数如何获取参数,以何种方式传递函数返回值。PCS的制订是一系列指标的“tradeoff(折衷)”(因为很大程度上涉及系统的一些性能),如会涉及生成代码的大小,调试功能的支持,函数调用上下文处理速度以及内存消耗。当然,通过编译器的支持可以让生成的代码有不同的特性,如gcc编译选项可以支持或不支持framepointer来支持深入调试功能或提高程序运行性能。

PCS是体系结构密切相关的,直接涉及编译器如何使用处理器提供的应用寄存器,如编译器使用什么寄存器作为栈指针,利用哪些寄存器作直接传参等。值得注意的是,没有谁规定说PCS是必须这样而不是那样的。它是应用相关的。任何一个操作系统和应用可以处于它自身的考虑定义自己的PCS。当然,如果那样,也必须有自己的编译器。而实际上,在一个处理器设计时,都会有某种假设,所以PCS某种程度上应该是一样的。

ATPCS是基于ARM指令集和THUMB指令集过程调用的规范。
寄存器的使用规则:
寄存器的使用必须满足下面的规则:
1. 子程序间通过寄存器R0 R3来传递参数,这时,寄存器R0R3可以记作A1-A4。被调用的子程序在返回前无需恢复寄存器R0-R3的内容。
2. 在子程序中,使用寄存器R4 R11来保存局部变量.这时,寄存器R4-R11可以记作V1-V8。如果在子程序中使用到了寄存器V1-V8中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作。在Thumb程序中,通常只能使用寄存器R4-R7来保存局部变量。
3. 寄存器R12用作子程序间scratch寄存器(用于保存SP,在函数返回时使用该寄存器出栈),记作ip。在子程序间的连接代码段中常有这种使用规则。
4. 寄存器R13用作数据栈指针,记作sp。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。
5. 寄存器R14称为连接寄存器,记作lr。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
6. 寄存器R15是程序计数器,记作pc。它不能用作其他用途。

点击此处查看原文 >>

系统分类: ARM   |    用户分类:    |    来源: 整理

评论(0) | 阅读(77)
发表于:2008-6-11 18:20:32
标签:SEP4020  UART  

1

关于SEP4020

        觉得这个芯片比S3C44B0强不少,而且比9200多一个液晶显示接口,定位还是不错的。东南大学做的,算是国产吧。当然,ARM720T的内核,只能买了。

        不过,芯片的用户手册确实不怎么样,看得我云里雾里的,难道是因为我很久没有看芯片的用户手册了?不可能吧。想用它来做一个小东东,先试试所有的功能吧,再不济,就算做个开发板也成啊。反正这个芯片也很便宜,45元左右就能够买到。

        今天画了一下SEP4020的原理图,发现一个地方,有点意思,如图:

        注意那个串口1的管脚排序与其他3个串口的区别,唉……为啥不按照同样的次序呢?真是搞不懂那些个做IC设计的,搞这么莫名其妙。害得我还担心了一下,真是郁闷,还好,芯片手册是对的,呵呵。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

评论(2) | 阅读(300)
发表于:2008-4-14 9:19:00
标签:无标签

0

哪款MCU的I/O速度快呢?

        在我所用过的MCU当中,LPC2101/02/03的IO口速度是最快的,可以达到70MHz左右的上升沿/下降沿。

         51内核的,恐怕是C8051吧?
         ATMEL的51,是12个时钟周期的,24MHz的主频下,只有2MHz的指令执行速度。
         DALLAS的51处理器的主频可以达到33MHz,而且大部分指令的执行速度位单时钟周期。

         像44B0,RM9200这样的ARM核的处理器,不好估算它们的IO操作速度。44B0的内核速度最高为66MHz,如此看来它的IO速度不会大概只有内核速度的一半。

          MSP430系列的主频并不高。AVR与PIC,我没有用过,没法比较。你既然都看到这里了,不妨发表一下你所用过的MCU的速度,非常感谢。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(243)
发表于:2008-4-10 16:45:39
标签:protel,布线屏幕  

1

让Protel99SE有更多的布线屏幕空间

        当使用Protel99 SE SP6设计电路板,且使用的是15寸液晶显示器时,让屏幕显示更多的布线面积就比较重要了。

        我认为:Status Bar是不必要的,所以在布线时,可以将其去掉。快捷键组合的次序为:V→S。重复一下,Status Bar便可以重新显示出来。接下来是:V→M。即是左侧的项目管理。V→B→M,去掉主工具栏,这里需要挑一下,因为有两个M,一个是Main Toolbar,一个是Component Placement。Command Status也是没有必要的。

 

        去掉这些暂时不需要的显示之后,可视的布线屏幕就多了,这样可以稍微提高一下效率。一般来说,在15寸的屏幕上使用Protel99 SE也还算将就,并不会让设计者觉得很局促。呵呵,上述方法也算是一点解决办法。另外,可以自动隐藏windows的任务栏。不过,当鼠标往屏幕底下移近时,会出现点小意外,任务栏出现了,于是操作系统又得重新刷新屏幕,可谓得不偿失,因此不如一开始就保留着windows的任务栏,反正这5mm左右的横条也不算占用很多的屏幕。还有,可以把电脑的主题修改成windonws的经典主题,而不是使用XP的主题,XP的主题有点显胖,不像WIN2000的经典主题那么干净利索。

        就这么多了,谁有更多的经验,拜托告诉一下我,谢谢了~

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 原创

评论(1) | 阅读(305)
发表于:2008-3-25 15:59:43
标签:水仙花数,C51  

1

C51与水仙花数

        昨天晚上看到了一段关于求水仙花数的C语言程序,其实我就是想知道100~999里面有几个水仙花数,然而在电脑里面又没有TC的编译器,不过,手头上刚好有个51的板子,于是,俺就用keil编译一下那段例程,下载到51里面,然后通过串口打印回来。哈,如果我没有记错的话,有4个。153,370,371,,后面那个我忘了,晚上回去再补上。

        唉,不知道现在还有多少人能用汇编折腾出这个程序,里面有a*a*a,应该算是比较麻烦了吧。晚上再详细说说,呵。

PS:一直没有时间来更新,算了,就这样吧。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(275)
发表于:2007-12-19 13:55:51
标签:岛屿  

1

两则引用

    看来“原创”、“转贴”跟“整理”之间的区分还是比较清晰的。通篇都是别人写的,当然是转贴。引用超过篇幅70%以上的,看来只能算是整理了。

    今天复习网络知识时,读到的一段话:

    在80年代,网络不断增长的原因之一是大家都意识到只有一台孤立的计算机构成的“孤岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。随着这样的发展,到了90年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义。于是,人们又把多个网络连在一起形成一个网络的网络,或称作互连网(internet)。一个互连网就是一组通过相同协议族互连在一起的网络。(来自《TCP/IP详解,卷1:协议》第一章:概述)

    然后想到下面这段话。这段话转引自海明威的《丧钟为谁而鸣》的第一页。

    谁都不是一座岛屿,自成一体;每个人都是那广袤大陆的一部分。如果海浪冲刷掉一个土块,欧洲就少了一点;如果一个海角,如果你朋友或你自己的庄园被冲掉,也是如此。任何人的死亡使我受到损失,因为我包孕在人类之中。所以别去打听丧钟为谁而鸣,它为你敲响。(约翰•堂恩)

    在这次联想里,岛屿是keyword。至此也不复有感慨,或许我还没有了解到这些话里面的更多奥秘。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 整理

评论(0) | 阅读(503)
发表于:2007-11-28 23:56:40
标签:三极管  PCB  

1

贴片三极管的封装排序

        可能有一小部分工程师在初次使用三极管时,遇到过封装上的问题。原因在于原理图管脚排序跟实际器件之间的不对应。或者是原理图的管脚排序弄错了,或是器件的封装搞错了,也可能是两样都错了。不过,倘若是两样都错,没准负负得正,一焊上就是好的。然而,问题只是给掩盖着而已,如果不是心知肚明的话,早晚还得出问题。

        先来个实物示意图,SOT-23的。
   

        “把三极管按贴装摆在桌面上,逆时针方向1,2,3脚,只有一个脚的那边的那个脚是第三脚,是集电极”。9012,9013,S8550,S8050都是这样的。

        再来看一下protel99自身所带的三极管器件图:
                      点击看大图
          很明显,使用9013时比较容易出现问题。而9012刚好是正确的,即使设计者并没有加以考虑,印制板加工回来了也不需要飞线或跳线,好东西。再顺便说一下价格,9012、9013贴片的,100个大概是8~10元。

          想了想,这个大概可以归到PCB分类里面。好了,点击“发布”,睡去也~~~

 

点击此处查看原文 >>

系统分类: PCB   |    用户分类:    |    来源: 原创

评论(2) | 阅读(2084)
发表于:2007-11-26 22:25:43
标签:复习  

2

重温美丽晚星

        重温美丽晚星,回归恬静,绵绵旧情。
                                   ——刘卓辉

    上面的一句来自张学友所唱的《绵绵旧情》,刘卓辉作词,好像是日本人作的曲。懒得搜了。

    今晚在家无事,居然翻出一本计算机等级考试教程来,叫《计算机系统组成及工作原理》,考四级用的。当年没有考,现在就更不用考了。不过既然翻了出来,不如再随便翻翻吧。虽然我用的只能算是MCU,不过好歹也用过ARM7、ARM9,就跟CPU占点光了,也就计算起来了。

    一不小心就翻到了介绍指令系统的。反正就两页,我觉得自己也还能有耐心把它看完,就看了下去。于是算是重温了一番。子曾经曰过:学而时习之,不亦说乎?那俺就没事偷着乐一下吧。

    “大概可分为5类。1:传送指令,2:算术运算指令,3:逻辑运算指令,4:程序控制指令,5:输入输出指令”。

    “程序控制指令又分为:1、无条件转移,2、有条件转移,3、转子程序,4、中断转移”。

    我有点想把51的、430的、ARM7的那些指令做个表格对比一下,可又觉得有点浪费时间,或许网上已经有了,查查去。还有个叫矩阵求逆的测运算速度的程序,也查查去。有工夫时,再好好玩玩ARM。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(425)
发表于:2007-11-11 20:37:22
标签:投票  

0

HotPower大叔看过来

    下面是俺前几分钟的截图,本来要发在你帖子的回复里面,然而EDN拆哪似乎没有还没有支持那个高级回复的功能。当然,它提供了,然而,却没有实现。

点击看大图


点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(606)
发表于:2007-11-10 22:18:36
标签:板级功能  

0

板级功能建造时

        中国长城止于中国的最北端。工程从东南和西南两头发端,伸展到这里相联结。这种分段修建
    的办法在东西两支劳动大军的内部也以小的规模加以实行。方法是:二十来个民工为一小队,每队
    担负修建约五百米长的一段,邻队则修建同样长度的一段与他们相接。但等到两段城墙接以后,并
    不是接着这一千米的城的末端继续施工,而是把这两队民工派到别的段去修筑城墙。使用这种方法
    当然就留下了许多缺口,它们是渐渐地才填补起来,有些甚至在长城已宣告峻工之后才补全。据说
    有一些缺口从来就没堵上,这当然只是种说法,它可能仅仅是围绕长成而产生的许许多多传说之一,
    由于工程范围之大,后是无法凭自己眼睛和尺度来验证这种说法的,至少对于个人来说是这样。
                                                    ——卡夫卡 《中国长城建造时》

    在一个电子系统内,我们常会听到系统级、板级、芯片级功能等提法。我觉得,这三者是个逆向包含的关系。系统级和板级都建立在芯片级的基础上(对数字电路来说,现在应该是这样的了。如果是模拟电路,另当别论)。

    例如一个小型的嵌入式系统,如果选对了MCU,那么板级功能就会更加容易实现。可以想像一下8031与C8051系列的区别。当然现在也很少看到有工程师使用8031了。但在一些老一点的教材上面会发现。那些教材一般还会提及74xx373这个8位锁存器。也不知道当时是不是没有573,真是让人纳闷与感慨啊。
    再看看现在那些集成了多种功能的MCU,不得不慨叹:现在的硬件工程师比以前的幸福多了。还有开发手段的进步,软件工程师也该偷着乐了。即使如此,在构建板级功能时,工程师还是会面临着许多难题。价格、开发周期是比较重要的因素。工程师们不得不从一开始就考虑到市场。谁说他们没有做市场的头脑呢?谁又能说他们只是实现产品功能的技术工具呢?

    还是回到板级功能上来,长城可以分段建造,功能当然也可以逐个测试逐个实现。即使每一个独立功能都经过严格测试,当它们合聚在一起时,问题仍然会出现。三个臭皮匠,一凑就凑出个诸葛亮;一个诸葛亮就够人烦心的,何况又凑出一个来。这都是缺口。堵了一个又出来一个,不把人折腾个精疲力竭,它们是不会罢休的。不过,折腾过之后,经验也就积累下来了。如果说能有什么好办法的话,那我只能认为是尽快试错,把错误都试验出来后,剩下的就是对的。但愿这剩下的东西能够满足系统的要求,阿门。

点击此处查看原文 >>

系统分类: 自由话题   |    用户分类:    |    来源: 原创

评论(0) | 阅读(625)
23下一页总共 , 当前 /