Paginação no MC9RS08KA2 (migrado)

Loser
Professor
Brazil
297 Posts Posted - 01/09/2006 : 09:01:38
--------------------------------------------------------------------------------
beleza
Pessoal estou começando com o KA2 da freescale e tenho algumas duvidas esse trecho de progra abaixo foi retirado do programa que veio junto com a EVB ( evoluation board)gravado no KA2
mov #HIGH_6_13(SOPT), PAGESEL
mov #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD PTA3) and RESET (PTA2) pins
mov #$30, PTADD ; Configures PTA4 and PTA5 as output
1º Pelo que eu entendi é preciso jogar o valor de 8 bits da pagina da memoria no PAGESEL , depois especificar o endereço no qual se quer gravar o valor de #$03 através de um valor de 6 bits ?
2º Esse procedimento é so para escrita ou para leitura tem que fazer ele tambem ?
3º Porque no trecho " mov #$30, PTADD " ele não precisou fazer o procedimento citado na primeira pergunta ?
4º Fora essas perguntas tem mais algum fator a se levar em consideração na paginação de memoria ?
5º Conforme o trecho abaixo , porque ele não usa paginação na memoria Flash principal ?
_Startup:
main:
bsr init
main_loop:
bclr PTA1,PTADD ; Configures PTA1 as input
mov #$05,time2 ; Sets timer delay (about 3 ms)
bsr delay
6º tipo ele escreve o programa sem indicar que pagina ele esta , ou sera que tem que indicar toda ves que eu exeder uma pagina .
Exemplo codigo pagina 1 endreço 1
codigo pagina 1 endreço 2
.
codigo pagina 1 endreço 64
indica pagina indica endereço
codigo pagina 2 endreço 1
codigo pagina 2 endreço 2
.
codigo pagina 2 endreço 64
Obs. estrutura de programação na Flash principal
LOSER
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 01/09/2006 : 10:23:10
--------------------------------------------------------------------------------
Olá Loser,
1- O sistema de paginação dos RS08 permite que você mapeie qualquer área da memória do chip para que ela seja visível na área da janela de paginação (endereço 0xC0 a 0xFF). Esta área pode ser acessada por instruções utilizando o modo de endereçamento direto, o que acelera muito o programa. O trecho de código que você postou faz isso, ele copia para o PAGESEL (o apontador da página), os 8 bits mais significativos do endereço do registrador SOPT. Isto faz com que a janela de paginação passe a apontar para o endereço 0x0200 a 0x023F.
A instrução mov #$03, MAP_ADDR_6(SOPT) irá copiar a constante imediata 3 para o endereço do SOPT dentro da janela de paginação.
2 - O procedimento funciona para leitura e escrita, já que a janela de paginação aponta diretamente para a área de memória que você escolheu.
3 - A instrução mov #$30, PTADD não fez nenhuma seleção de página porque o registrador PTADD está diretamente acessível ao modo direto (endereço 0x0011).
4 - Não sei, depende do que você tenha entendido ou não
5 - Não entendi a questão.
6 - Acho que você está confundindo as coisas. A paginação serve para acesso à memória. No caso dos desvios, o modo de endereçamento estendido já inclui todos os bits necessários para especificar o endereço de destino.
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Loser
Professor
Brazil
297 Posts Posted - 01/09/2006 : 11:34:10
--------------------------------------------------------------------------------
Beleza
Fabio valeu pela ajuda , so para confirmar devido a arquitetura do MCU é impossivel executar a instrução " MOV #%00110000,PTAPE " e por esse motivo ue tenho que executar
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
essa minha afirmação está correta ?
Abaixo o programa "helo word" do MCU , aperta a tecla o led acende solta a tecla o led apaga
; export symbols
XDEF _Startup, main
; we export both '_Startup' and 'main' as symbols. Either can
; be referenced in the linker .prm file or from C/C++ later on
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
;*******************************************************************************************
; Delay Routine
; This subroutine performs a specified delay.
;*******************************************************************************************
delay:
clr counter
clr counter2
bra loop
inc_counter:
inc counter
loop:
lda counter
mov #HIGH_6_13(time), PAGESEL
cmp MAP_ADDR_6(time)
blo inc_counter
clr counter
inc counter2
lda counter2
cmp time2
blo inc_counter
rts
;*******************************************************************************************
; Peripheral Initialization
;*******************************************************************************************
init:
;CONFIGURES PORT CONTROL
MOV #%00000000,PTAD
MOV #%00000011,PTADD
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
MOV #HIGH_6_13(PTAPUD),PAGESEL
MOV #%00000000,MAP_ADDR_6(PTAPUD)
MOV #HIGH_6_13(PTASE),PAGESEL
MOV #%00111011,MAP_ADDR_6(PTASE)
;CONFIGURES KBI CONTROL
BCLR KBISC_KBIE,KBISC
MOV #%00000000,KBIES
MOV #%00110000,KBIPE
BSET KBISC_KBACK,KBISC
BSET KBISC_KBIE,KBISC
;CONFIGURES SYSTEM CONTROL
MODE: EQU 0 ; MODE=0 Background Mode, MODE=1 Run Mode
IFNE MODE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$01, MAP_ADDR_6(SOPT) ; Disables COP and enables RESET (PTA2) pin
ELSE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD (PTA3) and RESET (PTA2) pins
ENDIF
;CONFIGURES CLOCK (FEI Operation Mode)
MOV #HIGH_6_13(NV_ICSTRM),PAGESEL
LDA MAP_ADDR_6(NV_ICSTRM)
STA ICSTRM ; Sets trimming value
CLR ICSC1 ; Selects FLL as clock source and disables it in stop mode
CLR ICSC2 ; ICSOUT = DCO output frequency
wait_clock:
BRSET CLKST,ICSSC,wait_clock ; Waits until FLL is engaged
RTS
;*******************************************************************************************
; Entry Point
;*******************************************************************************************
_Startup:
main:
BSR init
main_loop:
BRSET PTAD_PTAD5,PTAD,ON_LED
BCLR PTAD_PTAD1,PTAD
BRA main_loop
ON_LED: BSET PTAD_PTAD1,PTAD
BRA main_loop
Obrigado mais uma vez pela ajuda
Falou
LOSER
Edited by - loser on 01/09/2006 11:36:03
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 01/09/2006 : 12:24:36
--------------------------------------------------------------------------------
Exatamente Loser,
Você só pode acessar posições de memória localizadas fora da página direta utilizando o sistema de paginação.
Até +
Fábio
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Professor
Brazil
297 Posts Posted - 01/09/2006 : 09:01:38
--------------------------------------------------------------------------------
beleza
Pessoal estou começando com o KA2 da freescale e tenho algumas duvidas esse trecho de progra abaixo foi retirado do programa que veio junto com a EVB ( evoluation board)gravado no KA2
mov #HIGH_6_13(SOPT), PAGESEL
mov #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD PTA3) and RESET (PTA2) pins
mov #$30, PTADD ; Configures PTA4 and PTA5 as output
1º Pelo que eu entendi é preciso jogar o valor de 8 bits da pagina da memoria no PAGESEL , depois especificar o endereço no qual se quer gravar o valor de #$03 através de um valor de 6 bits ?
2º Esse procedimento é so para escrita ou para leitura tem que fazer ele tambem ?
3º Porque no trecho " mov #$30, PTADD " ele não precisou fazer o procedimento citado na primeira pergunta ?
4º Fora essas perguntas tem mais algum fator a se levar em consideração na paginação de memoria ?
5º Conforme o trecho abaixo , porque ele não usa paginação na memoria Flash principal ?
_Startup:
main:
bsr init
main_loop:
bclr PTA1,PTADD ; Configures PTA1 as input
mov #$05,time2 ; Sets timer delay (about 3 ms)
bsr delay
6º tipo ele escreve o programa sem indicar que pagina ele esta , ou sera que tem que indicar toda ves que eu exeder uma pagina .
Exemplo codigo pagina 1 endreço 1
codigo pagina 1 endreço 2
.
codigo pagina 1 endreço 64
indica pagina indica endereço
codigo pagina 2 endreço 1
codigo pagina 2 endreço 2
.
codigo pagina 2 endreço 64
Obs. estrutura de programação na Flash principal
LOSER
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 01/09/2006 : 10:23:10
--------------------------------------------------------------------------------
Olá Loser,
1- O sistema de paginação dos RS08 permite que você mapeie qualquer área da memória do chip para que ela seja visível na área da janela de paginação (endereço 0xC0 a 0xFF). Esta área pode ser acessada por instruções utilizando o modo de endereçamento direto, o que acelera muito o programa. O trecho de código que você postou faz isso, ele copia para o PAGESEL (o apontador da página), os 8 bits mais significativos do endereço do registrador SOPT. Isto faz com que a janela de paginação passe a apontar para o endereço 0x0200 a 0x023F.
A instrução mov #$03, MAP_ADDR_6(SOPT) irá copiar a constante imediata 3 para o endereço do SOPT dentro da janela de paginação.
2 - O procedimento funciona para leitura e escrita, já que a janela de paginação aponta diretamente para a área de memória que você escolheu.
3 - A instrução mov #$30, PTADD não fez nenhuma seleção de página porque o registrador PTADD está diretamente acessível ao modo direto (endereço 0x0011).
4 - Não sei, depende do que você tenha entendido ou não

5 - Não entendi a questão.
6 - Acho que você está confundindo as coisas. A paginação serve para acesso à memória. No caso dos desvios, o modo de endereçamento estendido já inclui todos os bits necessários para especificar o endereço de destino.
Até +
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br
Loser
Professor
Brazil
297 Posts Posted - 01/09/2006 : 11:34:10
--------------------------------------------------------------------------------
Beleza
Fabio valeu pela ajuda , so para confirmar devido a arquitetura do MCU é impossivel executar a instrução " MOV #%00110000,PTAPE " e por esse motivo ue tenho que executar
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
essa minha afirmação está correta ?
Abaixo o programa "helo word" do MCU , aperta a tecla o led acende solta a tecla o led apaga
; export symbols
XDEF _Startup, main
; we export both '_Startup' and 'main' as symbols. Either can
; be referenced in the linker .prm file or from C/C++ later on
; Include derivative-specific definitions
INCLUDE 'derivative.inc'
;*******************************************************************************************
; Delay Routine
; This subroutine performs a specified delay.
;*******************************************************************************************
delay:
clr counter
clr counter2
bra loop
inc_counter:
inc counter
loop:
lda counter
mov #HIGH_6_13(time), PAGESEL
cmp MAP_ADDR_6(time)
blo inc_counter
clr counter
inc counter2
lda counter2
cmp time2
blo inc_counter
rts
;*******************************************************************************************
; Peripheral Initialization
;*******************************************************************************************
init:
;CONFIGURES PORT CONTROL
MOV #%00000000,PTAD
MOV #%00000011,PTADD
MOV #HIGH_6_13(PTAPE),PAGESEL
MOV #%00110000,MAP_ADDR_6(PTAPE)
MOV #HIGH_6_13(PTAPUD),PAGESEL
MOV #%00000000,MAP_ADDR_6(PTAPUD)
MOV #HIGH_6_13(PTASE),PAGESEL
MOV #%00111011,MAP_ADDR_6(PTASE)
;CONFIGURES KBI CONTROL
BCLR KBISC_KBIE,KBISC
MOV #%00000000,KBIES
MOV #%00110000,KBIPE
BSET KBISC_KBACK,KBISC
BSET KBISC_KBIE,KBISC
;CONFIGURES SYSTEM CONTROL
MODE: EQU 0 ; MODE=0 Background Mode, MODE=1 Run Mode
IFNE MODE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$01, MAP_ADDR_6(SOPT) ; Disables COP and enables RESET (PTA2) pin
ELSE
MOV #HIGH_6_13(SOPT), PAGESEL
MOV #$03, MAP_ADDR_6(SOPT) ; Disables COP and enables BKGD (PTA3) and RESET (PTA2) pins
ENDIF
;CONFIGURES CLOCK (FEI Operation Mode)
MOV #HIGH_6_13(NV_ICSTRM),PAGESEL
LDA MAP_ADDR_6(NV_ICSTRM)
STA ICSTRM ; Sets trimming value
CLR ICSC1 ; Selects FLL as clock source and disables it in stop mode
CLR ICSC2 ; ICSOUT = DCO output frequency
wait_clock:
BRSET CLKST,ICSSC,wait_clock ; Waits until FLL is engaged
RTS
;*******************************************************************************************
; Entry Point
;*******************************************************************************************
_Startup:
main:
BSR init
main_loop:
BRSET PTAD_PTAD5,PTAD,ON_LED
BCLR PTAD_PTAD1,PTAD
BRA main_loop
ON_LED: BSET PTAD_PTAD1,PTAD
BRA main_loop
Obrigado mais uma vez pela ajuda
Falou
LOSER
Edited by - loser on 01/09/2006 11:36:03
Fabio Pereira
Conselheiro
Brazil
2205 Posts Posted - 01/09/2006 : 12:24:36
--------------------------------------------------------------------------------
Exatamente Loser,
Você só pode acessar posições de memória localizadas fora da página direta utilizando o sistema de paginação.
Até +
Fábio
Fábio Pereira
ScTec - Automação e Projetos Especiais
www.sctec.com.br