|
|
  |
Непонятно читается внешняя память, Симулятор ОК, железка - нет |
|
|
|
Feb 19 2009, 09:22
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Плата - отладочная SK-MLPC2478 (стоит реальный 78, а не 68, как в первых версиях было)
На EMC висит static memory и dataflash. Я их сдул, чтобы не мешались - буду подключать свою память.
Пока просто гоняю по большому счету "чистый" проц, дабы оценить производительность и отладиться. Итак. Пытаюсь читать внешнюю static memory. По идее, все входы D0-D31 притянуты pull-up к VCC и должно читаться оттуда 0xFFFFFFFF. В симуляторе заполняю память с 0x80000000 FF-ами, все зер гуд, читается именно то, что надо.
Заливаю прошивку. Опа! Читаю 0xFFFF. И хоть что делай... Такое ощущение, что старшие D16-D31 посажены на 0, но на плате они просто идут от проца к разъемам (типа для подключения своей перефирии), то есть фактически просто "висят".
EMCStaticConfig[3..0] отконфигурены все как 32-разрядная шина
Отсюда вопрос - что я упустил? Возможно, какая-то есть тонкость, которую я просто не знаю ввиду очень недолговременного опыта работы с LPC2478?
|
|
|
|
|
Feb 19 2009, 11:05
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Свершилось чудо  Дело было в непроиниченном PINSEL7. Когда указал нужную конфигурацию все заработало. Странно, но подключенный стартап LPC2400.s не содержал ни одного упоминания о PINSEL7, равно как и о PINSEL4, от которого мне нужно /CS2 и /CS3 Но теперь столкнулся с новой проблемой - читать-то старшие разряды теперь читает, но значение я получаю 0xEfffffff, то есть бит D[28] в нуле... PINMODE все в 0, то есть Pull-up Enabled, функция нормальная (01 - D[28]), на плате коротышей нет... Похоже, опять засада
|
|
|
|
|
Feb 20 2009, 09:48
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Продолжение Марлезонского балета... starterkitЦитата Загляните в схему, этот пин так же отведен для возможности аппаратного управления потоком (для определения готовности ответной стороны) RS232, отпаяйте пин 9 DA3, а лучше и 10 пин тоже, потому как ваши данные на полной скорости пойдут мусором на CTS ... В схеме сигнал называется MP_5 (по номеру ноги), все подобные сигналы, которые никуда не подключены и функционала не несут, так называются. Отсюда я и сделал вывод, что нога "висит" в воздухе. Однако, MP_5 и MP_11, которые есть D[28] и D[29], реализуют в данной плате возможность hardware flow control и заведены на CTS и RTS. Поэтому-то мою как бы "висящую" ногу активно прижимали к нулю. Так что проблема решена, не наступайте на грабли
|
|
|
|
|
Feb 20 2009, 22:59
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Что уж темы плодить - напишу сюда. Проблема записи в область памяти 0x80000000 - 0x83FFFFFF. Чтение происходит корректно, все сигналы (CS[3..0], /OE) генерятся. Запись не производится - то есть команда просто проскакивает, осциллограф ничего не ловит (в режиме однократного срабатывания триггера). Не отменяя триггера пробую читать - все корректно отображается. В свете предыдущих моих постов - с разводкой все в порядке, никто ничего никуда не притягивает и коротышей на плате нет  В чем может быть дело? Может где-то задаются регионы "read only"? Но тогда бы в какое-нибудь исключение вылетел бы... Отлаживаюсь через MT-Link
|
|
|
|
|
Aug 28 2009, 09:23
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(argentum @ Aug 25 2009, 09:26)  Прошу прощения, но про какие PINMODE и pull-up вы говорите? Разве контролер внешней памяти (EMC) не самостоятельно организует инициализацию ног? так вроде ж за _функцию_ пина отвечает PINSELx, там-то и прописывается, куда, собственно, в недрах камня пин подключен в данный момент PINMODEx же расписывает, что подключено к самоу пину - пуллап (по дефолту), пуллдаун или ничего Но тоже не все пины можно так конфигурить - все зависит от альтернативных интерфейсов, реализуемых на этих пинах: Цитата Remark: Pins P0.27 and P0.28 are dedicated I2C open drain pins without pull-up/down. Pins P0.29, P0.30, P0.31 are USB specific pins without configurable pull-up or pull-down resistors.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|