EDN首页   博客首页

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
用户分类: 杂七与杂八
标签: PCS,ATPCS
来源: 整理
发表评论 阅读全文(69) | 回复(0)

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的速度,非常感谢。

系统分类: 单片机
用户分类: 杂七与杂八
标签: 无标签
来源: 原创
发表评论 阅读全文(240) | 回复(0)

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
用户分类: 杂七与杂八
标签: protel,布线屏幕
来源: 原创
发表评论 阅读全文(302) | 回复(1)

1

关于投票
贴片三极管的封装排序

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

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

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

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

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

 

系统分类: PCB
用户分类: 杂七与杂八
标签: 三极管 PCB
来源: 原创
发表评论 阅读全文(2064) | 回复(2)

1

关于投票
使用数字电位器的一点经验

        以前使用过型号为X9241的数字电位器,下面俺就来说说当时在使用过程中遇到的一些问题。

        首先是电位器阻值的选择,接着就是抽头的数量。一般来说有32、64、128、256抽头的。可以这样来类比一下:256抽头的电位器就相当于8位精度的DAC。32抽头的当然就对应着5位精度的DAC(有5位精度的DAC吗?反正我至今没有见过,即使有,俺大概也用不上)。至于在什么场合使用数字电位器,或者是DAC,这是个有趣的问题,也是个值得思考的问题。我对这两者的使用都不是很多,所以现在也总结不出有参考价值的经验。

        数字电位器的接口一般是IIC的,芯片内部有默认的地址,也有的没有。如果有的话,那IIC总线就只能挂上一颗这样的芯片,除非它还有片选控制引脚。

        关于精度。例如10k的阻值,32抽头,如果用在0~+5V范围内调整,精度确实不怎样。但用来控制二极管的发光,总还是可以的。另外,还可以考虑在抽头上并联或者串联固定阻值的电阻。数字电位器本身也可以串联并联,这样,还是有手段来满足系统所需要的精度,而又不增加多少硬件成本。

系统分类: 单片机
用户分类: 杂七与杂八
标签: 数字电位器
来源: 原创
发表评论 阅读全文(625) | 回复(0)

1

关于投票
使用液晶模块的两点经验
    用过3款液晶之后,积累了点经验,故记下来供大家参考,也请大家多多指教。
    一款是RT1602。这款液晶很便宜,20元以下,绿色背光。它是字符型的。里面有常用的字符,如英文字母、常用符号等。没有中文,而且它不是点阵型的,所以也不能做字库点阵。它的图片如下:
        点击看大图
        点击看大图
    其它两款,在机子里没有图片。一款是HY12232,点阵的,两行。
    还有一款是LCM16032,有中文字库的。

    先说说尺寸,第一款可以安装到1U的机箱里面。用作简单的面板。其它两款,尺寸大了,装不进去。所以,如果是为1U机箱选液晶面板的话,就得注意了。不过 现在应该有12232系列的能够装进去。以前好像青云科技有,但是没有背光,现在不知道停产了没有。没有背光,让人感觉很不好。

    说到背光,不妨提一下关于其供电的电路设计。建议使用一个三极管来控制其背光电源的输入。一个SOT23封装的三极管,再加上两个电阻,还有单片机的一个 I/O。这样的话,当用户按下面板按钮时,背光才工作,当按钮有一段时间没有动作了,就断开背光电源。虽然会占用单片机的timer,但显得智能些。
    这几款液晶的背光并不怎么耗电,在它们的电路板就有限流电阻,所以用三极管来控制其供电,不会有问题。

    还有一个叫“显示偏压”输入的引脚,就是要加个对地电阻的意思。有些人在这里喜欢用个电位器来调节,我认为没有必要。放一个电阻就可以。顶多就换两次,就 能看见效果了。从4.7k~6.8k,大概就可以了。电阻才1分钱,而且也不占地方。现在一般都用0805的。电位器得1块,普通的。呵呵,使用此类液晶 模块的,多半不是什么高速或者高档的场合吧。

    至于它们的接口与编程,我觉得还是较为简单的。厂家都会提供一个51的例子,汇编和C的两种都有。原理图一般也是51的例子。我用过之后的心得就是上面那两点,大家有其他的使用经验,不妨留个言什么的。好了,千万别飘过啊~
系统分类: 单片机
用户分类: 杂七与杂八
标签: 液晶 MCU
来源: 原创
发表评论 阅读全文(1345) | 回复(3)

0

关于投票
关于flashpgm
    使用这个软件来烧录arm板上的flash,是比较方便的,而且在开发前期,也是必需的。当然还有别的烧录软件。关于flashpgm,网上都有不少的帖子。我下面只说一下让我感到很郁闷的一个低级错误。我在一台IBM的笔记本上使用不了它,原因就是没有设置好LPT1的地址。在台式机上,BIOS里面一般会默认LPT1的端口地址为0x378。而我手上用的那台大黑(现在的IBM笔记本一般被称为小黑,而带有并口的IBM笔记本,比较壮实,所以叫大黑),居然是0x3BC,怪不得找到target。在并口上都没有信号发出来。

    然而,word软件打印文档是可以的。所以一直没有注意到这个端口地址的问题。因为在操作系统里面看那个硬件管理,里面也是0x378的地址。谁想到在BIOS里面居然不是。真是让我哭笑不得,唉……这能怪谁呢,难道可以怪flashpgm吗?人家可是免费供你使用的。只能怪自己粗心了。低级、太低级了,不知道以后还得犯多少类似的低级错误。
系统分类: ARM
用户分类: 杂七与杂八
标签: arm flashpgm
来源: 原创
发表评论 阅读全文(676) | 回复(0)

0

关于投票
Adobe Reader的更新
    我现在用的是Adobe Reader 7.0.9,觉得功能已经很多了。这几天以来,它不断地跳出对话框,说有8.0出来了,问俺要不要更新。跳一次到也罢了。没想到,每天连接上网后,打开它时,就跳对话框。倘若我没有接网线,如果打开着Reader,天晓得它会怎么去工作,它会主动关掉自动更新这个功能吗?还是会不时地尝试着连接网络呢?如果是后者,那间隔时间会是多长呢?这些动作,自然会占用CPU的处理时间。但它是在后台运行的,一般而言,用户不太会留意。

    所以我把它的 编辑->首选项->更新->不要自动检查关键更新 选上。终于,整个世界又安静了一点。
    不过,老陶曾经曰过:结庐在人境,而无车马喧。问君何能尔?心远地自偏。然而CPU毕竟还不是人心,它只能接受人心强加它的东西,然后按照强加者的意愿行事。例如,一些病毒软件编写者,就给CPU强加上一些无用的或者是入侵窃取性质的代码段。于是CPU就不亦忙乎起来了。
系统分类: 自由话题
用户分类: 杂七与杂八
标签: 无标签
来源: 原创
发表评论 阅读全文(418) | 回复(0)

0

关于投票
Protel 99SE也要初始化
点击看大图
如上图,去掉红圈里面的那个勾勾,就可以使用系统字体了,也就是说字体变小了。不然的话,效果如下图:
点击看大图
主要是看了 PROTEL小经验二则!!!这个帖子,发现里面居然是大字体,所以就弄了这个帖子上来说说,也算一点经验吧。我在那个帖子里面的回复也拷贝过来吧。

我用的是在Tenting上打勾,加工出来的就有阻焊层了。
可以在文件上看到效果的,使用“L”键,出来对话界面,选上面的Top Solder及Bottom Solder,就是阻焊层的效果。

没有必要用override那种方式。那一般用在多去掉一下阻焊。默认的是4mil。为什么要多去掉一下阻焊呢?恐怕跟安装有关系。可以更良好的接触。

至于去掉孔中的铜环,确如上面所说的去操作。只是有些加工厂会给你加上,即使你设置了。我就碰到过。不知道为什么。

另外还有些类似win里面设置用户及密码的东东,就不多说了。想必很多人都知道。
系统分类: PCB
用户分类: 杂七与杂八
标签: protel使用
来源: 原创
发表评论 阅读全文(394) | 回复(0)
总共 , 当前 /