Перейти к содержанию
    

Здравствуйте!

 

Прошу помощи, совета в разрешении нижеприведённого вопроса.

 

Собрал отладочную плату на базе TMS320C6722, установил CCS3.3 с последним обновлением, написал простейшую программку (мигать лампочкой), подключил эмулятор, в GEL файле сконфигурировал необходимый порт, написал функцию для мырганья лампочки (GEL). Мырганье лампочки посредством GEL функции работает Отлично. А когда загружаю Си-ую программку, скомпилированную без ошибок и замечаний, ничего не работает, даже в main-функцию не заходит. После старта в _init00 выполняются какие-то ассемблерные команды, уходит по адресу 0x00001DDC и зацикливается.

Вопрос:

Как это побороть? может быть секции неправильно распределены или настройки компилятора специальные нужны (сейчас Target Version C67x+)? cmd файл брал sprc203 - patch.cmd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После старта в _init00 выполняются какие-то ассемблерные команды, уходит по адресу 0x00001DDC и зацикливается.

Чем заливаете то? Похоже у вас просто не залилась ваша программа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заливаю программу в RAM проца (в cmd все секции в ней определены) через JTAG (File->Load program). :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заливаю программу в RAM проца (в cmd все секции в ней определены) через JTAG (File->Load program). :unsure:

Этто понятно, вопрос а залилась ли она? Проверьте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При загрузке никаких предупреждений о ошибках не было, а в options->Customize->Program/Project/CIO стоит галочка в "Perform verification duringProgram Load". Я думаю, если что не так, CCS сообщил бы мне или нет?

А может на это как-нибудь влиять встроенный в ROM загрузчик проца, у меня он сейчас в режиме загрузки с внешней flash?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При загрузке никаких предупреждений о ошибках не было, а в options->Customize->Program/Project/CIO стоит галочка в "Perform verification duringProgram Load". Я думаю, если что не так, CCS сообщил бы мне или нет?

Сам недавно с таким столкнулся, не всегда сообщает оказывается. Какой у вас эмулятор, чем шьете то?

А может на это как-нибудь влиять встроенный в ROM загрузчик проца, у меня он сейчас в режиме загрузки с внешней flash?

Нет не влияет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эмулятор - копия Wintech TDS510USB от Evodbg.com (X510 ), драйвера те же. Нареканий по поводу эмулятора пока не было, пишет читает в регистры и память без проблем, через GEL макет работает (пока мыргает лампочкой).

Си-ый файл дезассемблируется. В регистре PC пробовал непосредственно задавать адрес main ф-ии - появляются возможность пошаговой отладки в Си, но к результату это не приводит всё равно сваливается в 0x00001DDC.

Попробую переустановить CCS.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эмулятор - копия Wintech TDS510USB от Evodbg.com (X510 ), драйвера те же. Нареканий по поводу эмулятора пока не было, пишет читает в регистры и память без проблем, через GEL макет работает (пока мыргает лампочкой).

Попробую переустановить CCS.

Кхмм есть подозрение, что виноват эмулятор ваш... Попробуйте с камушкем другой серии проделать тоже самое. Ну и код давайте пакажите чё там делаете то, вдруг перемудрили?

 

P.S.

Мой SAU510 заработал с С672x тока после общения с техподдержкой ;) хотя с С64x работал прекрасно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#define PFUNC0 0x44000010
#define PDIR0  0x44000014
#define PDOUT0 0x44000018
#define PDSET0 0x4400001C
#define PDCLR0 0x44000020

void main ()
{
    int i;
               
              /* AXR08*/
    *(int *)PFUNC0 |= 1<<8;    // GPIO 
    
    *(int *)PDIR0 |= 1<<8;    // Output 
    
    while(1)
    {
        *(int *)PDOUT0 |= 1<<8; // Up 

        for(i=0;i<10000;i++);
    
        *(int *)PDOUT0 &= ~(1<<8); // Down 

        for(i=0;i<10000;i++);
    }
}

 

Кстати, для проверки пробовал поменять распределение секций с RAM на SDRAM, а EMIF в GEL не стал настраивать. Так CCS поругался, что не может туда загрузить, думаю это показательно для проверки "Perform verification duringProgram Load".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Main это конечно очень позновательно и увлекательно. Но интереснее посмотреть ваш .gel и .cmd

Лучше файликом не нада всё постить.

Изменено пользователем talus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В архиве используемые gel и cmd

123.rar

Ну вот и ответ, теперь "засинхронизируйте" ваши файлы .gel и .cmd по части выделения памяти. Оъем памяти у вас выделен неверно, а как там компилятор раскидал только одному ему известно!

 

P.S. вот это конкретно будет доcтаточно отредактировать

GEL_MapAdd(0x10000000, 0, 0x00020000, 1, 1); // Internal RAM Page 0 128kBytes(C6722)

IRAM_BOOT:       o = 10000000h   l = 00001000h
IRAM_BIOS:       o = 10001000h   l = 00000B00h 
IRAM_RESERVED:   o = 10001B00h   l = 00000100h /* Reserved only if using ROMed applications */
IRAM:            o = 10001C00h   l = 0003E400h /*объем не 256кБ а 128 у вас соответственно 1E400*/

Изменено пользователем talus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно не верный объём памяти. Недоглядел :blush:

Спасибо talus за поддержку :excl: , но всё равно не работает - ничего не изменилось. :wacko:

Также стартует с c_int00, затем идёт куча ассемблерных команд, main-функция дезассемблируется. Debug ->Go Main уходит на какой-то странный адрес не далеко от c_int00 (команд 10-20), все выполняется, значения в регистрах меняются... в конце-концов уходит на 0x00001DDC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-l applySystemPatch.obj

-l c672xSystemPatchV2_00_00.lib

 

Насколько помню, в ридми к патчу говорится, что тут надо прописывать полный путь до файла.

Может в этом дело?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

-l applySystemPatch.obj

-l c672xSystemPatchV2_00_00.lib

 

Насколько помню, в ридми к патчу говорится, что тут надо прописывать полный путь до файла.

Может в этом дело?

 

Вроде как с последними обновлениями CCS достаточна просто добавить их в проектъ, но попробовать стоит. Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...