。、首先,請注意2407的架構,64K的程序,數據和I/O口獨立尋址,關于程序就是內置32K和 外擴32K,關于數據就是也同樣是內置32K和外擴32K,但數據區有一點區別:內置的32K有很多不 連續的非法區,就是說真正可以訪問的只有3K不到,并且是非連續分布的,那I/O口呢?!只是對自己本 身芯片已有的I/O口進行了控制罷了,比如A,B,C,D,E,F口而已,如果你要外擴也可,如果外擴 的話,如果和芯片本身的I/O口地址重疊的話(如A口,B口等等),那到底是對內先還是對外先(這個我 沒有做過實驗,但一般理解是對內優先了,如果你知道,望告之,謝謝。。 。、其次,是關于CMD文件,結構我就不說了,自己看了,找個例子就知道了,TI是對段編程的,也就 是說,第-部分說明了你可以使用的環境資源,比如程序區在哪兒,數據區在哪兒等等,如果你編寫了并不存 在的可以使用的資源,那當你下載或編程(請注意下載RAM和編程FLASH在我表達中的意思)的時候肯 定會出錯,還有常見的錯誤是用編程的地址卻在下載,那當然是不可行的了,數據是寫不進去的了,只有編程 才行(需要提醒的是,在下載和編程時地址時唯一的,和你后來到0000H中來運行還是8000H開始運 行,那是你后來程序與系統在下載和編程完之后才去做重定位或影射的事,因為沒有你先前的下載或編程,就 根本沒有或談不上后來的重定位或映射。 。、再次,是關于程序在RAM中運行的問題。如果你沒有注意硬件的信號,PS,DS,IS的話,那請 你注意了。。。在外擴的RAM中,往往將PS和DS都做為RAM的選通信號,這樣就是說對外擴的FLA SH和外擴數據區的操作其實都是對同個RAM的操作,還有可以通過對管腳MC的操控來選擇內部FLAS H還是外部RAM做為程序“FLASH”,其實說這么多是為了讓我們大家明白其中的機理,也就是說實際 8000H的程序區和8000H的數據區是重疊了,這樣就可以下載了。你只要在0000H的FLASH 中先寫入中斷向量表,我的是對應跳轉到8000H開始的單元中,這樣不論你的MC是0還是1,應該都沒 關系了,因為當你是0時,從FLASH中跳到8000H中,再跳進入程序,如是1時,則從8000H直 接跳進入程序(再說明一下,從FLASH角度8000H就是0000H,MC=1。從數據區的角度80 00H仍是8000H。雖然是同個RAM,PSH和DS都是片選指向同個RAM。
|