вторник, 24 января 2012 г.

TMS320С55xx - ошибка в загрузчике.

По результатам проектирования одного устройства на с5505 появилась следующая информация.

Во встроенном загрузчике данного процессора присутствует ошибка, приводящая к возможной неработоспособности загрузки процессора из NOR-flash. Поэтому рецепт, описанный здесь может не работать.

И так, первым устройством, из которого загрузчик процессоров TMS320C55xx пытается загрузиться, является NOR-flash с 16-битным интерфейсом данных (например, PC28F128P30TF65). Как следует из описания работы загрузчика, при старте он предполагает, что флэш находится в режиме чтения, читает из неё сигнатуру образа прошивки, а затем и весь образ прошивки.

Но оказалось, что перед началом чтения данных загрузчик записывает во флэш команду для ввода данной микросхемы в режим чтения данных. Этой командой является число 0x00ff по адресу 0x0000.

Однако, на самом деле, и это видно по сигналам на интерфейсе, записывается число 0x000f и это, судя по всему, банальная ошибка "копипасты". Это неправильная команда, и на разных микросхемах она может либо не влиять на работу флэш-памяти, либо приводить к входу флэш-памяти в режим чтения статуса, после чего загрузчик образ прошивки прочитать уже не может, и загрузка из NOR-flash становится невозможна.

На отладочной плате EVM5515 всё работает отлично, но при использовании немного другой модели NOR-flash загрузка перестает работать.

На текущий момент errata на с5505 датируются летом 2010 года. И это очень грустно...

На форуме Texas Instruments e2e коллега ruzz также разъясняет ситуацию. Со стороны TI никаких комментариев не последовало.

С горячим приветом индусским программистам.

4 комментария:

  1. Здравствуйте как с вами связаться? для того чтобы поговорить о TMS320

    ОтветитьУдалить
  2. Здравствуйте! А не встречался ли Вам где-нибудь исходный код загрузчика С5505/VC5515 ? Понимаю, что вероятность очень близка к 0, но все же :)

    ОтветитьУдалить
    Ответы
    1. Исходный код, скорее всего, написан на ассемблере.
      Если есть отладчик, в Code Composer Studio можно считать дамп памяти из ROM, где лежит загрузчик, потом его разбирать.
      Кстати, описанный в статье "глюк", как оказалось, на самом деле "фича": у разных флэш немного отличаются команды, а загрузчик рассчитан на набор команд Intel/Micron. В TI на этот вопрос не ответили, что как бы намекает на качество поддержки.

      Удалить
    2. По поводу дизасемблера - это понятно, но приятнее разбирать исходники с коментариями и именами переменных и меток))..просто у меня есть исходники загрузчиков для VC5416, VC5509A полностью, а для 5515 не удастся наверно где-нибудь утащить))..Про "фичу" спасибо, будем иметь в виду!

      Удалить