全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1070
推到 Plurk!
推到 Facebook!

關於單晶片換頁問題

答題得分者是:
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-15 17:38:18 IP:218.171.xxx.xxx 未訂閱
各位請問 對於一些需要換頁的單晶片,在寫程式碼的時候該怎 麼處理換頁問題,難道需要一邊寫,一邊用人工方式 計算程式的長度然後在適當位置加入換頁指令嗎? 謝謝

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-15 19:19:11 IP:211.22.xxx.xxx 未訂閱
它一定會有換頁的指令支援.以DSP為例,它有一個DP暫存器,紀錄現在的記憶體 頁面.當我們要動到非現在DP暫存器所紀錄的記憶體頁面時,便要改變DP暫存器 之值.DSP便提供了LDP的指令,以供改變記憶體的頁面.當我們要動到第2頁的記 憶體時,只須先下LDP #2的指令便可.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-15 20:16:23 IP:218.171.xxx.xxx 未訂閱
那假設一單晶片有2頁各有1k的容量 而程式有1.5k的長度,這樣在寫程式時要怎麼知道 在程式的哪一個地方加上換頁指令呢 謝謝

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-15 20:40:01 IP:220.134.xxx.xxx 未訂閱
在設變數時就會知道了.假使不知道,組譯完成要模擬時也可以知道位址.知道位址就知道在第幾頁了. P.S:通常program memory與 data memory會分開.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-15 22:17:27 IP:210.66.xxx.xxx 未訂閱
我的 cypress cy7c63743 是由 cyasm 來處理 ^_^ 聽說它會自己幫我切。 只是它的 page 跟ADDN所問的PAGE可能不太一樣就是了。^_^

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-16 23:07:38 IP:220.134.xxx.xxx 未訂閱
通常須要換頁的都會有記憶體配置檔.告訴你多少到多少在那一頁.而寫程式也可以事先規劃你的記憶體,這樣一看檔就知道在那一頁了.    P.S:請問你是用那一顆MCU有這個問題?它的datasheet應該會有相關說明才對    addn兄:Sorry,在回你的問題時不小心按到修改.發現時已弄不回來,抱歉!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-17 19:14:09 IP:218.171.xxx.xxx 未訂閱
引言: 通常須要換頁的都會有記憶體配置檔.告訴你多少到多少在那一頁.而寫程式也可以事先規劃你的記憶體,這樣一看檔就知道在那一頁了. P.S:請問你是用那一顆MCU有這個問題?它的datasheet應該會有相關說明才對 addn兄:Sorry,在回你的問題時不小心按到修改.發現時已弄不回來,抱歉! < face="Verdana, Arial, Helvetica"> 沒關西啦 因為我之前只用過8051, 而最近在研究義隆的EM78567,它會有換頁的問題 我看書上有介紹到由第一頁JMP,CALL到第二頁 的方法,但沒有講到程式大於一頁時,程式要如何延伸 到第二頁 至於 記憶體配置檔 ,由於我沒用過,還是不懂, 可以再詳細介紹一下嗎 謝謝

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-18 01:07:38 IP:220.134.xxx.xxx 未訂閱
稍微看過EM78567的Datasheet,它的換頁指令就叫page. Ex: PAGE @1 -->換至page1 而一些暫存器位址.頁數,裡頭都有寫.你再仔細的看過一遍應該就懂了.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-18 01:22:26 IP:220.134.xxx.xxx 未訂閱
而有記憶體配置的,以DSP為例.在程式中會連結記憶體配置檔.其內容如下所示:(礙於篇幅,只舉一些做代表)    
;---------------------------------------------------------------------------
; C2xx core registers (LDP #0000h, 0000h~007Fh)
;---------------------------------------------------------------------------
IMR                .set      0004h     ; Int Mask Register
GREG               .set      0005h     ; Global memory allocation reg
IFR                .set      0006h     ; Int Flag Register
;---------------------------------------------------------------------------
; System Module Registers (LDP #00E0h, 7000h~707Fh)
;---------------------------------------------------------------------------
SYSCR              .set     07018h     ;System Module Control Register
SYSSR              .set     0701Ah     ;System Module Status Register
DIN                .set     0701Ch     ;Device Identification Register
SYSIVR             .set     0701Eh     ;System Interrupt Vector Register
XINT1_CNTL         .set     07070h     ;Int1 (type A) Control reg
NMI_CNTL           .set     07072h     ;Non maskable Int (type A)
XINT2_CNTL         .set     07074h     ;Int2 (type C) Control reg
;---------------------------------------------------------------------------
; Event Manager (EV) - EV Base Address=7400h (LDP #00E8h, 7400h~747Fh)
;---------------------------------------------------------------------------
EV_BASE     .set      7400h          ; Event Manager Base Address
GPTCON      .set      00h   EV_BASE  ; General Timer Controls
T1CNT       .set      01h   EV_BASE  ; T1 Counter Register
T1CMP       .set      02h   EV_BASE  ; T1 Compare Register
T1PER       .set      03h   EV_BASE  ; T1 Period Register
T1CON       .set      04h   EV_BASE  ; T1 Control Register
T2CNT       .set      05h   EV_BASE  ; T2 Counter Register
;---------------------------------------------------------------------------
; Digital I/O (LDP #01FFh, FF80h~FFFFh)
;---------------------------------------------------------------------------
WSGR               .set     0FFFFh     ;Wait State Generator Register
DSP的換頁指令叫LDP,而其配置是128個為1頁.因此0000h~007Fh在page0,7000h~707Fh在page224(即E0h).以此類推.因此一看,算一下就知道在第幾頁.當下一步要變換的位址與現在位址的page不符就必須變換page.
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
addn
高階會員


發表:64
回覆:221
積分:202
註冊:2005-03-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-18 20:08:56 IP:218.171.xxx.xxx 未訂閱
那我再把spec詳讀一下 謝謝各位大大
系統時間:2024-05-18 0:40:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!