📄 00000000.htm
字号:
标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 12:34:42 2001) <br /> <br /> <br />原来中断处理主要是因为程序跳转引起的总线信号变化而使得系统不稳定呀! <br />那么你的所说的没有中断的顺序执行就是按存储器地址由低到高的一个指令一个指令 <br />地运行罗?这样好像是不错哦。 <br />不过当程序运行到最高地址时,是不是就停着了?还有如果程序里有for呀,if呀等等 <br />类似的需要跳转的语句时是不是也容易造成程序跑飞呀?那我们是不是应该尽量避免 <br />这些语句呀?不过如果没有这些语句好像程序很难编呀,大侠你是怎么解决的呀? <br /> <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 为了搞清楚这个问题,我曾经把图书馆里所有相关的书籍,都翻了个编,然后把 </i><br />∶<i> 手头上ADC的光盘中的所有应用资料与之相关的部分,都看了一遍。EMC问题可以 </i><br />∶<i> 说是电路里最复杂的问题,虽然我一直都在这个问题上不断收集资料,但是仍然 </i><br />∶<i> 不敢说就对这个问题有很好的理解,只能说入了一点门吧。 </i><br />∶<i> 可能普通人很难想象,你的电路板放到一个大电动机旁边,平常工作的很好,但是 </i><br />∶<i> 在大电动机启动瞬间,或者电磁继电器阵列开启瞬间,你的电路板总线上全是1, </i><br />∶<i> 还有,如果你使用地址线的低位,做地址选通,你可能经常访问不了你的外设, </i><br />∶<i> 因为经常这些位在随机翻动。 </i><br />∶<i> 其实原因很简单,Ldi/dt,一个小的电感,任何导线,或者说电路中的任何东西都 </i><br />∶<i> 有电感,而i=q/t=cu/t,di/dt=cdu/dt,任何电路中的东西都有电容,自己有节 </i><br />∶<i> 电容,寄生电容,耦合电容,对其他东西有分布电容,或各种各样的杂散电容, </i><br />∶<i> ................... </i><br /> <br />-- <br />===================================================================== <br />新域名启动: <br /> 英文版:<a href="http://www.cfly.org">http://www.cfly.org</a> <br /> 中文版:<a href="http://wangyunfei.yeah.net">http://wangyunfei.yeah.net</a> <br /> <br /> ARM (32位RISC) + RTEMS (完全FREE的军用操作系统), <br /> <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 203.93.105.209] <br />发信人: psun (sam), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 12:47:24 2001) <br /> <br />你说系统的抗干扰性能,这没错,但是不是就那么绝对, <br />比如用嵌入式操作系统,系统的抗干扰性能就不好,不用就好, <br />如果真象你说的那么严重的话,即使程序是顺序执行的, <br />读指令还是会读错吧,读写数据还是会出错吧,那我们大家什么都不用搞了, <br />EMC问题不是这么就可以解决的。 <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 为了搞清楚这个问题,我曾经把图书馆里所有相关的书籍,都翻了个编,然后把 </i><br />∶<i> 手头上ADC的光盘中的所有应用资料与之相关的部分,都看了一遍。EMC问题可以 </i><br />∶<i> 说是电路里最复杂的问题,虽然我一直都在这个问题上不断收集资料,但是仍然 </i><br />∶<i> 不敢说就对这个问题有很好的理解,只能说入了一点门吧。 </i><br />∶<i> 可能普通人很难想象,你的电路板放到一个大电动机旁边,平常工作的很好,但是 </i><br />∶<i> 在大电动机启动瞬间,或者电磁继电器阵列开启瞬间,你的电路板总线上全是1, </i><br />∶<i> 还有,如果你使用地址线的低位,做地址选通,你可能经常访问不了你的外设, </i><br />∶<i> 因为经常这些位在随机翻动。 </i><br />∶<i> 其实原因很简单,Ldi/dt,一个小的电感,任何导线,或者说电路中的任何东西都 </i><br />∶<i> 有电感,而i=q/t=cu/t,di/dt=cdu/dt,任何电路中的东西都有电容,自己有节 </i><br />∶<i> 电容,寄生电容,耦合电容,对其他东西有分布电容,或各种各样的杂散电容, </i><br />∶<i> ................... </i><br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 203.93.105.209] <br />发信人: click (click), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 12:55:11 2001) <br /> <br /> <br /> 其实在cpu的实现中,中断和普通的branch,jump指令并没有什么区别, <br /> <br /> 都只是改变一下次的取指地址,然后设置某些特殊寄存器,在一个同步 <br /> <br /> cpu中,所有的寄存器改变都是由时钟同步的,在沿触发之前都必须有 <br /> <br /> 一定的setup稳定时间的。因此我想没有你所说的积存器突然翻转的问题, <br /> <br /> 除非你的电路本身就不符合cpu的时序要求。 <br /> <br />【 在 hongchen (kissing-fire) 的大作中提到: 】 <br />∶<i> 为了搞清楚这个问题,我曾经把图书馆里所有相关的书籍,都翻了个编,然后把 </i><br />∶<i> 手头上ADC的光盘中的所有应用资料与之相关的部分,都看了一遍。EMC问题可以 </i><br />∶<i> 说是电路里最复杂的问题,虽然我一直都在这个问题上不断收集资料,但是仍然 </i><br />∶<i> 不敢说就对这个问题有很好的理解,只能说入了一点门吧。 </i><br />∶<i> 可能普通人很难想象,你的电路板放到一个大电动机旁边,平常工作的很好,但是 </i><br />∶<i> 在大电动机启动瞬间,或者电磁继电器阵列开启瞬间,你的电路板总线上全是1, </i><br />∶<i> 还有,如果你使用地址线的低位,做地址选通,你可能经常访问不了你的外设, </i><br />∶<i> 因为经常这些位在随机翻动。 </i><br />∶<i> 其实原因很简单,Ldi/dt,一个小的电感,任何导线,或者说电路中的任何东西都 </i><br />∶<i> 有电感,而i=q/t=cu/t,di/dt=cdu/dt,任何电路中的东西都有电容,自己有节 </i><br />∶<i> 电容,寄生电容,耦合电容,对其他东西有分布电容,或各种各样的杂散电容, </i><br />∶<i> ................... </i><br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.156.181] <br />发信人: hongchen (kissing-fire), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 19:32:55 2001) <br /> <br /> <br />【 在 wangyyff (郁闷的大面瓜) 的大作中提到: 】 <br />∶<i> 原来中断处理主要是因为程序跳转引起的总线信号变化而使得系统不稳定呀! </i><br />∶<i> 那么你的所说的没有中断的顺序执行就是按存储器地址由低到高的一个指令一个指令 </i><br />∶<i> 地运行罗?这样好像是不错哦。 </i><br />∶<i> 不过当程序运行到最高地址时,是不是就停着了?还有如果程序里有for呀,if呀等等 </i><br />∶<i> 类似的需要跳转的语句时是不是也容易造成程序跑飞呀?那我们是不是应该尽量避免 </i><br />∶<i> 这些语句呀?不过如果没有这些语句好像程序很难编呀,大侠你是怎么解决的呀? </i><br />我当然不是说所有需要跳转的指令都不可以用,我觉得你有点钻牛角尖。 <br />中断这种方式CPU到底是怎么取指的,CPU芯片内部电流怎么流的,我也不知道,但是可以 <br />肯定的是,中断方式取指与平常的跳转肯定不是一样的。一定会在芯片内部产生不同于 <br />平常程序指针只是简单的增加所产生的电磁波,而且此时由于节电容和各种杂散电容导致 <br />的IO电流变化,肯定不同于普通的跳转。 <br />我曾经用一个很简单的程序去试过。查询方式就是比中断方式稳定。 <br />我在前一篇文章里也曾经说过,如果你只是做民用的东西,你不必在意。 <br /> <br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.132] <br />发信人: hongchen (kissing-fire), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 19:43:02 2001) <br /> <br /> <br />【 在 psun (sam) 的大作中提到: 】 <br />∶<i> 你说系统的抗干扰性能,这没错,但是不是就那么绝对, </i><br />∶<i> 比如用嵌入式操作系统,系统的抗干扰性能就不好,不用就好, </i><br />我不是说不用就好,也没有说用就好,什么问题都不是绝对的,而且对于民用 <br />的东西,追求的是界面的个性化以及美观,即便经常死机,你也能忍受。Windows <br />老死机,你不也经常在用吗?也没有见你去用linux吧! <br />∶<i> 如果真象你说的那么严重的话,即使程序是顺序执行的, </i><br />∶<i> 读指令还是会读错吧,读写数据还是会出错吧,那我们大家什么都不用搞了, </i><br />但是二者出错的概率会是一样的,那你怎么解释使用嵌入式操作系统的监护仪 <br />在医院倒一次闸的时候,一次死机18台呢?而另一家医院用的是一个根本不使用 <br />嵌入式系统的单片机系统的监护仪,却200台很少坏,也很少死机。 <br />∶<i> EMC问题不是这么就可以解决的。 </i><br />EMC问题当然不是这样就可以解决的,EMC问题是一个综合问题,所以在我的新系统 <br />里,即便使用Vxworks,也还是会使用工控里最老土的方法,来提高系统的稳定性。 <br />但是不可否认的是,使用顺序执行的程序,同时辅以外部的监控,可以有效地保证 <br />程序不跑飞,而且即便跑飞,也可以迅速回到上一个程序块。 <br />我再举一个实际的例子。如果你的程序ROM没有用满,你怎么办? <br />日本的一个仪器的做法,是将程序分片,在片间加上判断语句,如果程序是跑飞的, <br />可以根据引导自动返回最近的程序块,整个程序依据顺序执行而分成若干片。 <br />人们都说,汇编语言是不可以结构化的,可是任何语言都可以结构化编程,关键在于 <br />你会不会动脑筋。 <br /> <br />-- <br /> <br />※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.60.132] <br />发信人: hongchen (kissing-fire), 信区: Embedded <br />标 题: Re: 又一道嵌入试题! <br />发信站: BBS 水木清华站 (Mon Nov 12 19:48:57 2001) <br /> <br /> <br />【 在 click (click) 的大作中提到: 】 <br />∶<i> 其实在cpu的实现中,中断和普通的branch,jump指令并没有什么区别, </i><br />∶<i> 都只是改变一下次的取指地址,然后设置某些特殊寄存器,在一个同步 </i><br />∶<i> cpu中,所有的寄存器改变都是由时钟同步的,在沿触发之前都必须有 </i><br />∶<i> 一定的setup稳定时间的。因此我想没有你所说的积存器突然翻转的问题, </i><br />∶<i> 除非你的电路本身就不符合cpu的时序要求。 </i><br />我不这么认为,在VHDL语言中,用FPGA实现CPU的功能,如北大和中科院的做法, <br />那实现的只是CPU的功能,而不是真正的CPU,真正CPU的内部,在中断、取指和跳转, <br />以及
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -