?? 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 + -