Как обращаться к периферии ARM процессора в СИ коде?
Есть описание процессора на HDL языках. Я подключил свой модуль и не могу понять как к нему обращаться. Как выставлять значения на шину адреса и шину данных.
до меня дошла связь адреса, который я назначаю в описании, мультиплексор отмечает старшую часть и по ней уже ориентируется на остальные адреса, для выбранного блока
Этот способ тоже не всегда работает, если есть кэш данных. У процессора есть обычно ассемблеровские команды по записи в IO в обход кэша, для них делают макросы. Компилятор работу кэша не контролирует и volatile не помогает
У процессора есть обычно ассемблеровские команды по записи в IO в обход кэша, для них делают макросы.
Михаил, обычно нет. Обычно область памяти отмечается в MMU как некешируемая, после чего любая запись в эту область памяти идёт мимо кеша. Так, например, если заглянуть в код ядра linux, то для ARM мы увидим вот такое определение операции записи 32-битного значения в MMIO: