hobgoblin 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба SDRAM начинается с логического адреса 0ха0000000. Значение CSCON0 = 0x3000FC, SDRCON = 0x80072710. Больше ничего настраивать не надо. Считал так же, как написано в мануале в разделе, посвященном SDRCON. Частота у меня 80 МГц, работаю без PLL напрямую от внешнего генератора. Данные не пропадали. В чем дело при загрузке во внутреннюю память, я не знаю - не пробовал так делать, так что лучше обращайтесь в Элвис. В приложенном файле исходники проекта для распаковки эльфа и его записи во флэш, и еще файл с настройками проекта. Поскольку МС24 при записи в 8-разрядную флэш не выставляет младшие биты адреса, ноги А0 и А1 шины адреса объединены у меня на плате с ногами LDAT0 и LDAT1 по ИЛИ, и при каждом выставлении нового адреса для записи во флэш приходится предварительно выполнять запись в регистр LDR0. Elf_unpack.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mandarin 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 (изменено) · Жалоба Проблема с программой прошивки, разрешилась следующим образом: В нерабочем варианте, из главной процедуры main вызывалась функция разбора эльф-объекта, после выделения секции для прошивки, из функции разбора вызывалась функция прошивки этой части во флэшь. Функция разбора эльф-объекта, функция прошивки флэшь и процедура main описаны в соответствующих с-файлах. В рабочем варианте,я просто скопировал текст разбора эльф-объекта в процедуру main, точно также из неё вызывал функцию прошивки. В архитектуре проекта ничего непоменял, ничего не удалял, все файлы собраны в техже адресах, загружаю файл в память по томуже адресу. Программа загрузчик и загружаемый файл друг на друга ненакладываются-проверял. Но почемуто всё заработало)) работаем дальше)) С ОЗУ вопрос пока нерешён. Я считал что подключеный к nCS0 ОЗУ,с описанными выше настройками (0x3000FC) CSCON0 должен начинаться с адреса 0х00000000, и обращался в этот адрес, и записывал в него и даже считывал-всё работает, когда писали в Элвис, там также всё подтвердиле, однако всё записанное в адрес 00000000, повторяется в адресе a0000000, и в 80000000 - это несовсем понятно. ЗЫ:надеюсь всё понятно написал )) Изменено 8 ноября, 2007 пользователем Mandarin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hobgoblin 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба С ОЗУ вопрос пока нерешён. Я считал что подключеный к nCS0 ОЗУ,с описанными выше настройками (0x3000FC) CSCON0 должен начинаться с адреса 0х00000000, и обращался в этот адрес, и записывал в него и даже считывал-всё работает, когда писали в Элвис, там также всё подтвердиле, однако всё записанное в адрес 00000000, повторяется в адресе a0000000, и в 80000000 - это несовсем понятно. ЗЫ:надеюсь всё понятно написал )) В CSCON указывается физический адрес (он действительно равен 00000000), а в программе я использовал виртуальный адрес A0000000, который в режиме Kernel как раз отображается в 00000000 (с виртуальным адресом 80000000 - та же история). Про это написано в разделе 2.5 мануала, который посвящен MMU. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться