Не удается прочитать SDRAM ядра TI OMAP5912 ARM с использованием JTAG

Я пытаюсь подключиться к устройству OMAP5912 с помощью эмулятора XDS560v2 TRAVELER JTAG с помощью Code Composer Studio 7. При подключении к устройству C55x с помощью Connect Target он успешно останавливается в произвольной точке ОЗУ. При использовании Connect Target на ядре ARM9 он всегда останавливается на 0xFFFF0000. Теперь, когда я смотрю на его регистры, все выглядит нормально, и я вижу, что LR размещается вокруг известного места прошивки на SDARM, например. 0x102B1AD4. Но! Когда я получаю доступ к браузеру памяти в Code Composer Studio 7 и смотрю на местоположение SDRAM, я вижу только следующую цепочку байтов «0x00009C46». Я пытался переключаться между памятью процессора и представлениями физической памяти, и ничего не помогает. Кто-нибудь знает, что здесь происходит? Спасибо.


person sobakaliza    schedule 05.01.2020    source источник


Ответы (1)


Вероятно, в Code Composer 7 была ошибка, поэтому я использовал свой собственный файл .gel на основе файл .gel, найденный на github, и это решило проблему. В Code Composer выберите «Новая целевая конфигурация», затем «Добавить STM SDX560V2 Traveler» или другое. Добавьте обход 8, добавьте ядро ​​​​arm9 и прикрепите этот файл .gel, и, наконец, добавьте ядро ​​​​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 );
}
person sobakaliza    schedule 29.04.2020
comment
Я думаю, вам следует опубликовать созданный вами файл .gel, чтобы ваш ответ был полезен другим читателям. Это очень полезно, если вы одновременно перепроверите, следует ли добавить к вопросу некоторые детали, чтобы показать, к какому источнику проблемы действительно относится ваш .gel-файл. - person HelpingHand; 05.05.2020
comment
Добавлен гель-файл. На самом деле, я не знаю, почему это работает с этими настройками .gel. Поэтому трудно понять настоящий источник проблемы. - person sobakaliza; 06.05.2020