реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> M52233DEMO почему не хочет программироваться?
Ndf
сообщение Oct 13 2009, 13:42
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 22-08-07
Пользователь №: 29 977



Здравствйте, целый день борюсь с Evalbord M52233DEMO (Freescale)... подскажите как можно записать во внутреннюю флэш проца программу из среды CodeWarrier. Не понятно почему то не работает BDM, подключил USB кабель, обнаружился девайс, дрова встали, дальше делаю так - запускаю IDE CodeWarrier 5.9.0, Tools->Hardware Diagnostic->Configuration там выбираю свой проц MCF52233, перехожу на вкладку Read/write, выбираю read и далее Access target... после этого получаю сообщение: ColdFire P&E Protocol Adapter : An error occurred while trying to read memory...
Flash программер соответственно ругается такими же словами. Сама плата работает, при включении выдает в СОМ1 лог инициализации ethernet. Так почему же сей чудный девайс не хочет программироваться? Подскажите плз кто знает.. unsure.gif
Go to the top of the page
 
+Quote Post
Ndf
сообщение Oct 16 2009, 12:35
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 22-08-07
Пользователь №: 29 977



Мда...неужели никто не знает? Первое что удевило, так это то, что старт кит дали бесплатно, в нагрузку так сказать... ну че, достаю из коробки красивый dvd диск,вставляю... упс, он оказ не читается! Звоню в поддержку дарителям, грю диск не читается!???...в ответ - хм у нас такого нету. В общем послали меня в Питер, но у них такого диска тоже нет, потому его заказали у производителя и сказали подождать недельку. Раз такие дела, пока решил скачать Codewarrier_7.1, ну и почитать DS на проц. Для начала Качнул 350Мб IDE и 160М патч к нему, установил... первое впечаление, что софт писался судентами,весьма унылый внешний интерфейс, некоторые заголовки меню противоречат его содержимому, например пункт меню Project Inspector открывает пустое окошко, а пункта закрыть проект я не нашел вовсе. Меню Project->Set Default target по идее должно предложить на выбор список контроллеров для которого будет создан загрузочный код, но там оказалоь три странных пункта, которые вызвали у меня глубокие раздумья: console_internal ram, internal ram, internal flash... Ладно, переходим к плате.. Coldfire, оказывается не такой уж и холодный, если подключить Eth кабель к розетке то проц начинает греться, так что палец удержать трудно, про элементы БДМ вообще молчу, можно воду кипятить, розетка RJ45 с внешним трансформатором - зачем? BDM порт с 26 выводами тоже настораживает, нафига стока выводов?... Вот такие вот впечатления smile.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 29 2009, 15:10
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ndf @ Oct 16 2009, 15:35) *
... Вот такие вот впечатления smile.gif

С успехом использую MCF52233, общее впечатление положительное. Нравится плод работы мотороловских инженеров. Документацию читать приятно.
А теперь по пунктам.
1) "Диск не читается". А зачем он нужен? В интернете всё есть.
2) "Codewarrior". У меня аллергия на этот софт. Бестолковый, тормознутый. И самое главное - компилятор генерит отвратительный код. Использую софт от Green Hills, который можно найти на местном фтп. Компилятор там великолепный. Прикрутил внешнюю IDE (родная IDE несерьёзная), написал Makefile. Одно ограничение: этот софт старый, поэтому в MCF5223x поддерживается только одна аппаратная точка останова. Но меня это не сильно сдерживает.
3) "Coldfire, оказывается не такой уж и холодный". Да, он прожорливый. В принципе потребление встроенного Ethernet PHY такое, какого следует ожидать. Но и без PHY процессор кушает неплохо (около 100 мА). Однако эти 100 мА погоды не сделают с учётом того же PHY.
4) "BDM порт с 26 выводами". На своих платах ставлю разъём на 6 контактов. Для отладки хватает.
Go to the top of the page
 
+Quote Post
Ndf
сообщение Nov 10 2009, 10:38
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 22-08-07
Пользователь №: 29 977



Цитата(scifi @ Oct 29 2009, 18:10) *
С успехом использую MCF52233, общее впечатление положительное. Нравится плод работы мотороловских инженеров. Документацию читать приятно...
Давненько здесь не был...,радует что у вас есть положительные впечатления и у меня теперь есть надежда разобраться smile.gif. Тогда задам такой вопрос - с IDE все понятно, объясните мне по простому как прошить flash этого девайса на пальцах!? Для этого скачал и установил CF Flasher 3.1.10, прочитал скудный help к нему. Дальше: Target Config - выбираю мою плату M52233DEMO, в окне конфига BDM выбираю PE_USB_ML, так как у меня usb шнурок подключен к плате, жму ОК и дальше Program... че бы я там не делал, на все один ответ Cud not initialize BDM device. Может перемычку какую секретную надо замкнуть? Или БДМ который на плате нужен только для отладки? И еще... после беглого просмотра DS на MCF52233, я понял что их flash совместима с SST флешью и якобы может быть запрограмирована через SPI интерфейс. Если не затруднит объясните как же по простому залить во внутреннюю флэш проца бинарник?
PS: От безысходности купил эвал борд на AT91SAM7X с ethernet на борту и без проблем зашил свой софт во флэш уже через час...
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 10 2009, 14:07
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



У меня отладочный адаптер LPT. Но, возможно, суть от этого не меняется. Использую CF Flasher. Хитрость такая: жму "Program" и приблизительно через 1 секунду включаю питание платы. Поймать момент не всегда получается с первого раза. Моя версия такая: успеваю попасть в промежуток около 0,3 секунды, в течение которого мой супервизор держит ресет. Вероятно, во время ресета CF Flasher может подключиться. Если программа в прошивке начала выполняться, то она делает что-то такое, что мешает CF Flasher. Косвенно эту версию подтверждает тот факт, что без супервизора мне этот момент поймать так и не удалось.
Go to the top of the page
 
+Quote Post
Ndf
сообщение Nov 11 2009, 06:02
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 22-08-07
Пользователь №: 29 977



C утра запустил CF Flasher, нажимаю "програм" и с разными задержками втыкаю USB шнур - фиг, с кнопкой reset и перемычкой питания тоже фиг - настырная прога выдает всегда одно и тоже. Заметил в поле BDM Configuration есть кнопка Configure с подозрительным содержанием: USB port=1..10 Speed=1..10000 у меня оба параметра равны 1, это чего это такое??? Па-ма-ги-тееее..... crying.gif
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 11 2009, 06:53
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Может Вам стоит собрать LPT BDM адаптер? Я свой собрал из куска макетной платы и нескольких D-триггеров. Схему можно взять здесь:
COBRA Connect BDM Interface
Я эту схему для своих целей упростил: со стороны МК на отладочный порт выведены только сигналы BKPT, DSCLK, DSI, DSO, ALLPST. RESET не выведен. Также на отладочный разъём выведены GND и +3.3V. То есть всего 7 контактов (чуть раньше я говорил про 6 контактов - ошибся). Обратите внимание: сигнал ALLPST - это логическое "И" от 4-х сигналов PST0..PST3 (то есть из схемы уходит элемент лог. "И" с 4 входами). Из компонент требуется только 4 D-триггера и один резистор на линию CPU_CLK (последовательно, несколько десятков Ом). D-триггеры желательно брать из серии 74LVC, чтобы обеспечить правильное согласование уровней 3.3V и 5V. Хотя при некотором везении параллельный порт будет работать с сигналами 3.3V и без согласования - но это уже на свой страх и риск.
Собранный таким образом адаптер у меня работает при тактовой процессора 80 МГц (MCF52259). Это несколько удивительно, поскольку собрано довольно неряшливо. Длину кабеля от адаптера до микроконтроллера надо ограничить 10-15 см, иначе возникают проблемы.
Go to the top of the page
 
+Quote Post
Ndf
сообщение Nov 11 2009, 11:52
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 22-08-07
Пользователь №: 29 977



Цитата(scifi @ Nov 11 2009, 09:53) *
Я эту схему для своих целей упростил: со стороны МК на отладочный порт выведены только сигналы BKPT, DSCLK, DSI, DSO, ALLPST. RESET не выведен. Также на отладочный разъём выведены GND и +3.3V. То есть всего 7 контактов ...

Надо попробовать, только не понятно куда подключается у вас ALLPST - к четырем соединенным вместе выводам PST0..PST3 или только на PST0? И потом для защелкивания D-триггеров нужен сигнал CPU_CLK со стороны BDM,стало быть сигналов то всего 8. правда если использовать обычный буфер не тактируемый то будет 7.
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 11 2009, 17:56
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Ndf @ Nov 11 2009, 14:52) *
Надо попробовать, только не понятно куда подключается у вас ALLPST - к четырем соединенным вместе выводам PST0..PST3 или только на PST0? И потом для защелкивания D-триггеров нужен сигнал CPU_CLK со стороны BDM,стало быть сигналов то всего 8. правда если использовать обычный буфер не тактируемый то будет 7.

Точно, сигналов 8. Хотелось уменьшить их число, вот и невольно выдавал желаемое за действительное. Или просто в начале посчитал сигналы без учёта GND и +3.3V.
У меня МК MCF52233CAF60 имеет ножку ALLPST. Если у других МК из этого семейства такой ножки нет, то, вероятно, придётся на BDM адаптере ставить логическое "И" на 4 входа.
Go to the top of the page
 
+Quote Post
ak_mnp
сообщение Sep 1 2011, 08:47
Сообщение #10





Группа: Новичок
Сообщений: 2
Регистрация: 6-08-10
Пользователь №: 58 786



Добрый день!
scifi, я понимаю у Вас богатый опыт работы с MCF52233. Не могли бы вы подсказать как правильно сделать копирование функций работы с Flash памятью из ROM в RAM при старте микроконтроллера?

Спасибо!
Go to the top of the page
 
+Quote Post
scifi
сообщение Sep 1 2011, 09:59
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(ak_mnp @ Sep 1 2011, 12:47) *
как правильно сделать копирование функций работы с Flash памятью из ROM в RAM при старте микроконтроллера?

Это зависит сильно от компилятора/линкера. Помню, у яровского компилятора для ARM была фича __ramfunc, то есть там всё это само делалось.
В общем случае нужно сгенерить код, не привязанный к адресам в ПЗУ, то есть либо привязанный к адресам в ОЗУ (где он и должен выполняться), либо вообще позиционно-независимый код (PIC - position-independent code). Потом нужно сделать процедуру копирования из ПЗУ в ОЗУ, которая при это как-то должна узнать размещение и размер этого кода в ПЗУ. Очевидно, что все эти шаги требуют нестандартную поддержку со стороны компилятора/линкера. Например, не всякий компилятор умеет делать PIC код.
Если функция небольшая, то можно вбить её машинный код в статический массив и вызывать его. Преимущество - работает на любом компиляторе. Вот пример для STM8:
Код
/*
void
block_write(uint8_t *src, uint8_t *dst)
{
        int8_t i;
        FLASH_CR2 = 0x10;
        FLASH_NCR2 = 0xEF;
        for (i = 64; i > 0; i--)
        {
                *dst++ = *src++;
        }
}
*/

static uint8_t __near block_write_code[] = {
        0x35, 0x10, 0x50, 0x5B, /* MOV FLASH_CR2, #0x10  */
        0x35, 0xEF, 0x50, 0x5C, /* MOV FLASH_NCR2, #0xDF */
        0x35, 0x40, 0x00, 0x00, /* MOV ?b0, #0x40        */
        0xF6,             /* loop: LD A, (X)             */
        0x90, 0xF7,             /* LD (Y), A             */
        0x5C,                   /* INCW X                */
        0x90, 0x5C,             /* INCW Y                */
        0xB6, 0x00,             /* LD A, ?b0             */
        0x4A,                   /* DEC A                 */
        0xB7, 0x00,             /* LD ?b0, A             */
        0x26, 0xF3,             /* JRNE loop             */
        0x81,                   /* RET                   */
};

static void (*const block_write)(uint8_t *src, uint8_t *dst) = (void (*)(uint8_t *src, uint8_t *dst))block_write_code;


Ну вот, написал опус и только потом заметил, для чего всё это затевается. На самом деле в MCF5223x код, работающий с флэш, можно вызывать прямо из флэш. Я, собственно, так и делаю. Есть несколько проектов, где флэш интенсивно используется (эмуляция EEPROM). Уже несколько лет - полёт нормальный.
Go to the top of the page
 
+Quote Post
ak_mnp
сообщение Sep 2 2011, 09:20
Сообщение #12





Группа: Новичок
Сообщений: 2
Регистрация: 6-08-10
Пользователь №: 58 786



scifi, спасибо! Попробовал записывать FLASH без копирования кода в RAM - действительно работает!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 21:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016