Próbuję połączyć się z urządzeniem OMAP5912 przy użyciu Emulator JTAG Traveller XDS560V2 Korzystanie z Code Composer Studio 7. Podczas podłączania do urządzenia C55X za pomocą celu Connect pomyślnie zatrzymuje się w dowolnym punkcie pamięci RAM. Podczas korzystania z Connect Cel na rdzeniu Arm9 zawsze zatrzymuje się na 0xFFF0000. Teraz, kiedy patrzę na jego rejestry, wszystko wydaje się dobrze i widzę, że LR jest umieszczony wokół znanej lokalizacji oprogramowania układowego na Sdarmowi e.g. 0x102b1ad4. Ale! Po uzyskaniu dostępu do przeglądarki pamięci Code Composer Studio 7 i spójrz na lokalizację SDRAM, widzę tylko następujący łańcuch bajtów "0x00009C46". Próbowałem przełączyć między pamięcią procesora i widoki pamięci fizycznej i nic nie pomaga. Ktoś wie, co się tutaj dzieje? Dziękuję Ci.

1
sobakaliza 5 styczeń 2020, 17:58

1 odpowiedź

Najlepsza odpowiedź

Prawdopodobnie był błąd w kompozytorze kodu 7, więc użyłem mojego własnego pliku /oMap1030/osk5912.gel "Rel =" NOFollow NorfErr "> A.gel znaleziony na GitHub i rozwiązał problem. W kompozytorze kodu wybierz "Nowa konfiguracja docelowa", a następnie dodaj podróżnik STM SDX560V2 lub inaczej. Dodaj obejście 8, dodaj rdzeń Arm9 i dołącz ten plik .gel i wreszcie dodaj rdzeń C55xx.

StartUp()
{ }

OnTargetConnect()
{
    disable_watchdog_timer( );
    add_breakpoints();
}

OnHalt()
{
    // Add here your stuff
    GEL_TextOut("R0 %x R1 %x\n",,,,,R0, R1);
    GEL_MemorySave(0xCAFEBABE, 0, 96, "/tmp/memdump.bin",8,0);
    GEL_Go();
}

add_breakpoints()
{
    // Add here your breakpoint
    GEL_BreakPtAdd(0xCAFEBABE);
}

disable_watchdog_timer( )
{
    #define WD_CNTL_TIMER           *( unsigned short* )0xFFFEC800
    #define WD_LOAD_TIM             *( unsigned short* )0xFFFEC804
    #define WD_TIMER_MODE           *( unsigned short* )0xFFFEC808
    #define WDT_WWPS                *( unsigned int* )0xFFFEB034
    #define WDT_WSPR                *( unsigned int* )0xFFFEB048

    WD_TIMER_MODE = 0x00F5;         // Disable Watchdog Timer
    WD_TIMER_MODE = 0x00A0;

    WDT_WSPR = 0xAAAA;              // Disable 32KHz Watchdog
    while ( WDT_WWPS & 0x0010 );
    WDT_WSPR = 0x5555;
    while ( WDT_WWPS & 0x0010 );
}
1
sobakaliza 6 maj 2020, 07:58