torik 0 3 октября, 2016 Опубликовано 3 октября, 2016 · Жалоба В регистр самодельного модуля записываем что-то вот так: IOWR(&uart->tx_csr->data, 0, X); В сигналтабе видим, что сигнал wren установился на один такт, адрес равен 1 (адресация словами). Все хорошо.\ Теперь тоже самое пробуем сделать через указатели, к примеру даже вот так: * (alt_u32 *)SUBSYSTEM_CPU_SUBSYSTEM_UART_MIK_AVS_TO_ASO_MIK_BASE = X; В сигналтабе видим, что сигнал wren установился на четыре такта, адрес меняется от 0 до 3. Какая-то ерунда. Вроде как ниос побайтно пытается этот регистр запихать. Как сделать, чтобы нормально через указатели было? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 3 октября, 2016 Опубликовано 3 октября, 2016 · Жалоба В регистр самодельного модуля записываем что-то вот так: IOWR(&uart->tx_csr->data, 0, X); В сигналтабе видим, что сигнал wren установился на один такт, адрес равен 1 (адресация словами). Все хорошо.\ Теперь тоже самое пробуем сделать через указатели, к примеру даже вот так: * (alt_u32 *)SUBSYSTEM_CPU_SUBSYSTEM_UART_MIK_AVS_TO_ASO_MIK_BASE = X; В сигналтабе видим, что сигнал wren установился на четыре такта, адрес меняется от 0 до 3. Какая-то ерунда. Вроде как ниос побайтно пытается этот регистр запихать. Как сделать, чтобы нормально через указатели было? по моему все правильно UART имеет байтовое адресное пространство, поэтому разбил запись 32битного на 4 байтовых попробуй так * (alt_u8 *)SUBSYSTEM_CPU_SUBSYSTEM_UART_MIK_AVS_TO_ASO_MIK_BASE = X; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 3 октября, 2016 Опубликовано 3 октября, 2016 · Жалоба Uart - это просто название. Там адресация word, а не symbol. И даже нет сигналов byteenable. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 3 октября, 2016 Опубликовано 3 октября, 2016 · Жалоба Uart - это просто название. Там адресация word, а не symbol. И даже нет сигналов byteenable. И даже нет сигналов byteenable, вот по этому и разбивает))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 3 октября, 2016 Опубликовано 3 октября, 2016 · Жалоба В другом проекте точно такой же код с теми же модулями работает так как надо. В текущем проекте отличие в том, что перед модулями стоит pipeline bridge. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба pipeline bridge не при чем оказался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба pipeline bridge не при чем оказался. может в кэшировании дело? я практически всегда добавляю к адресу 0x8000000, если работаю с IO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба Да, отключили кэш данных и все стало нормально. А если оставить кэш данных, то что надо сделать? Почему: я практически всегда добавляю к адресу 0x8000000, если работаю с IO ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба Да, отключили кэш данных и все стало нормально. Старший битик в адресе - указание ниосу работать в обход кэша. Но только если не включен MMU. Иначе вообще бардак. С периферией все же правильнее через iowr работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Timmy 1 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба IOWR нельзя ничем заменять, так как в Ниосе разные инструкции для записи в память и в порты ВВ(в этом случае отключается кэширование/буферизация). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 4 октября, 2016 Опубликовано 4 октября, 2016 · Жалоба Да, отключили кэш данных и все стало нормально. А если оставить кэш данных, то что надо сделать? Почему: ? https://www.altera.com/en_US/pdfs/literatur...pu_nii51015.pdf стр 6 Memory Access IO по определению кэширование не поддерживает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться