5 votos

¿Cómo saber a depurador de CCS donde empezar?

Estoy empezando con el MSP430 y Code Composer Studio (CCS).

Quiero hacer un pure-proyecto de instalación. Por el momento, tengo un "hola mundo", programa que no hace nada, pero la luz de un LED en el MSP430F5529 Launchpad.

Sin embargo, cuando ejecuto este programa en el depurador, la ejecución comienza en la dirección 0x0000 en lugar de en mi punto de acceso designado, llamado RESET (0 x 10000). Puedo ver que el PC está acordado inicialmente a 0x0000. Si yo manualmente en la ventana de inspección para RESTABLECER, el programa se ejecuta como se esperaba.

He declarado RESTABLECER a ser global, y he puesto la opción del vinculador para hacer RESTABLECER el punto de entrada.

Supongo que tengo un problema con el depurador de configuración o el (inicio)del cargador, pero podría estar totalmente en el camino equivocado.

            .cdecls C,LIST,"msp430.h"       ; Include device header file
    ;-------------------------------------------------------------------------------
            .text                           ; Assemble into program memory
            .retain                         ; Override ELF conditional linking
                                            ; and retain current section
            .retainrefs                     ; Additionally retain any sections
                                            ; that have references to current
                                            ; section
;-------------------------------------------------------------------------------
            .global RESET
RESET       mov.w   #__STACK_END,SP         ; Initialize stackpointer
StopWDT     mov.w   #WDTPW|WDTHOLD,&WDTCTL  ; Stop watchdog timer

;-------------------------------------------------------------------------------
                                            ; Main loop here
            bis.b #01h, &P1DIR
            bis.b #01h, &P1OUT
;-------------------------------------------------------------------------------
;           Stack Pointer definition
;-------------------------------------------------------------------------------
            .global __STACK_END
            .sect   .stack

;-------------------------------------------------------------------------------
;           Interrupt Vectors
;-------------------------------------------------------------------------------
            .sect   ".reset"                ; MSP430 RESET Vector
            .short  RESET

2voto

Stefan Arentz Puntos 151

No he programado un MSP430 en la asamblea, pero parece que el programa de punto de entrada no está escrito a la dirección 0xFFFE:

Contador de programa (PC) se carga con el código de arranque de la dirección y el código de inicio de ejecución comienza a las que dirección. Véase la Sección 1.9 para obtener más información sobre el código de arranque. Tras la finalización de la bota código, el PC se carga con la dirección contenida en el SYSRSTIV restablecer ubicación (0FFFEh).

Así que a partir de su descripción, está utilizando --entry_point= global_symbol como una opción para configurar el punto de entrada. Realmente no veo por qué no iba a funcionar, has comprobado el real enlazador de llamada si la opción se aplica?

Así que otra opción sería la de escribir a la dirección de 0xFFFE el valor de su dirección de inicio. O, al menos, comprobar en el hexagonal de la imagen ¿qué valor se obtiene escrito allí.

Acabo de encontrar esto:

MEMORY
{
    MEM : origin = 0x0200, length = 0xFDFD
    RESET : origin = 0xFFFE, length = 0x0002
}
SECTIONS
{
    .text : {} > MEM
    .const : {} > MEM
    .data : {} > MEM
    .bss : {} > MEM
    .reset : > RESET
    .cinit : {} > MEM ;cflag option only
    .pinit : {} > MEM ;cflag option only
}

como la ubicación predeterminada. Así que tal vez, porque también llamado etiqueta de RESTABLECER el enlazador se confunde en alguna manera? Tal vez el nombre de su punto de entrada de forma diferente, como INICIO o ENTRADA. Pero esto también da una pista de cómo obtener la dirección real donde usted lo desee. Solo tiene que definir un 16 bits constante para ser colocado en el .restablecimiento de la sección.

Es curioso cómo los diferentes TI ensamblador es de la IAR uno, con el que estoy un poco más familiar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X