|
|
  |
Шаманить с указателями, или union |
|
|
|
Oct 17 2012, 18:48
|

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

|
Попросил убрать из "Программирования" есть две области в ARM968E-S в первой висит 16-битный супресс USB, во второй - NOR Flash Читается/пишется в первую область только по/из фиксированным адресам Во вторую - и так, и с инкрементом оптимизация компилятора в Time и O3 Шины. 1-я с супрессом - 16бит, 2-я - 32 бит Что-то фигню наблюдаю Первая область объявлена как Код #define FX2_FIFO2 (*(volatile unsigned int *)(FX2_BASE_ADDR + (0x00UL<<2))) #define FX2_FIFO4 (*(volatile unsigned int *)(FX2_BASE_ADDR + (0x02UL<<2))) вторая - также через volatile, но в своем диапазоне Доступ к памяти осцилл показывает и, судя по тестам, точно как и надо А вот данные - не пойми чего Для пересылки и сокращения доступа к той и другой области памяти попробовал сделать union с тремя полями - U16, U16 и U32 Например, чтение из первой области - в две U16 подряд, потом из U32 - в другую область запись Шаманство  Не работает
|
|
|
|
|
Oct 18 2012, 10:58
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(toweroff @ Oct 18 2012, 14:25)  Да еще кейл глючит, не хочет отлаживаться не то что с J-Link, но и со своим ULINK2  Оптимизацию не забыли убрать в ноль? А вообще я давно printf обхожусь.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Oct 18 2012, 11:19
|

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

|
Цитата(Lotor @ Oct 18 2012, 14:58)  Оптимизацию не забыли убрать в ноль? А вообще я давно printf обхожусь. и в 0, и в 3 - никакой разницы а по поводу printf - на плате нет других каналов связи с внешним миром, к сожалению. Только вот супресс, который не работает  Вот что обнаружил. Запись в супресс происходит 2 раза. Непонятно почему, но SEMC выдает /CS, а потом два сигнала записи, потом убирает /CS Так вот длительности /WR нормальные, как я их и установил, но вот интервал между ними - 32нс, что для супресса маловато. Сейчас попробую поиграть с этим
|
|
|
|
|
Oct 19 2012, 18:32
|

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

|
Чисто практический вопрос по C (может, в нем дело?) В первой функции есть обращение к памяти, где необходимо обращение каждый раз, когда используется по тому же адресу, генерить сигналя внешнего доступа (/OE, /CS, /WR) Указатель объявляю как Код volatile unsigned int *mem; во второй функции может приниматься любой указатель (как правило, тот же mem, но и буфер во внутренней пямяти, которые не-volatile) оттуда осуществляется доступ по к этому указателю, так и к другой внешней памяти строго по фиксированным адресам, но память unsigned short Чудес не бывает и Дед Мороз тоже не скоро придет Девайс то работает, то нет Как правильно компилятору объявить функции (точнее - типы параметров)? Хотя LDR присутствуют после компиляции, но вот с глюками отладчика не могу выяснить где неполадки с указателями
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|