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

 
 
> 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
 
Start new topic
Ответов
ak_mnp
сообщение Sep 1 2011, 08:47
Сообщение #2





Группа: Новичок
Сообщений: 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
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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



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

 


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


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