ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
17 июля
44943
P_Igorek (25.11.2005 10:31, просмотров: 452)
AT91RM9200 Шутки GCC или 16 разрядный доступ к 16 разрядной шине? Доброго время суток. Есть плата на AT91RM9200 и 16 разрядное устройство подключенное через чипселект 6 как статическая память. Если писать туда 32 разрядное слово, /*(int *)BASE_ADDR = (int)value;/ то на диаграме видим один чипселект и два сигнала записи, а на шине данных два 16 битных слова. Что полностью соотвецтвует диаграмам от Атмела. Если же писать 16 битное слово /*(short *)BASE_ADDR = (short)value;/ то на диаграме видим 2 чипселекта и 2 сигнала записи, а на шине данных наблюдаем сначала младший байт (а старших и младших адресах) , а затем старший байт. Что полностью НЕ СООТВЕТСТВУЕТ диаграмам от Атмела. В ядре по этому поводу сказано: /* * Generic virtual read/write. Note that we don't support half-word * read/writes. We define __arch_*[bl] here, and leave __arch_*w * to the architecture specific code. */ Байт пишется так как и положено байту. Вопрос: Что делать для того что бы вывести одно и только одно 16 разрядное слово на 16 разрядную шину данных в соответсвии с диаграмами в дата шите. Так происходит и из под Linux и в загркзчике. Настройки шины: AT91C_SMC2_WSEN | AT91C_SMC2_DBW_16 | AT91C_SMC2_BAT | (10 & AT91C_SMC2_NWS) | ((7 << 8) & AT91C_SMC2_TDF ) | ((7 << 24) & AT91C_SMC2_RWSETUP) | ((7 << 29) & AT91C_SMC2_RWHOLD) );