Цитата(-=Sergei=- @ Jun 17 2008, 10:47)

Почитать спецификацию на AMBA AHB.
Почитать спецификации на ARM ядра и почитать про бит бандинг.
1. Запись всегда словом. Об этом надо сказать программисту, типа мол чувак, если ты хочешь поменять один бит, то будь добр, считай сначало содержимое регистра, измени бит который хочешь поменять и запиши все обратно на месте, это так называемый Read - Modify - Write цикл. Тут тоже есть хитрости, эелательно в этот регистр не выводить какие либо флаги, которые модифицируются по факту чтения или записи.
2. АРМ так же для упрошения и ускорения цикла Read - Modify - Write предлагает такой фокус как bit banding. Что это значит. Весь твой регистр закреплен например за адресом 0х10. Т.е. если ты записываешь в этот адрес значение, то оно будет зафиксировано в регистре. А для того что бы можифицировать только один бит, за каждым битом регистра закремпляется еще по одному адресу, например за битом 0 - 0х100, за 1 - 0х101, за 2 - 0х102 и так далее 31 - 0х120. Таким образом если происходит запись числа больше чем 0 в адрес 0х100, то бит 0 взведется, если число равное 0 то очистится. А остальные биты остануться не изменными. Если надо взвести бит 31, то по адресу 0х120 записываем 1, если очистить то 0.
Это кончно приводит к зачительному разростанию используемых адресов, но для АРМов с доступными гигабайтами ОЗУ и ПЗУ это в принципе в микроконтроллерах не проблема.
З.Ы. А от куда такой интерес к шине AMBA APB?
Ок, спасибо!
Мне тоже приходил в голову первый способ, но я решил, что он не корректный и думал есть иной вариант.
Второй вариант понятен с точки зрения программы, зная адрес каждого бита регистра , можно
легко установить или сбросить тот или иной бит. Но как это реализовать аппаратно. Ведь у нас есть только сигналы PSEL, PWRITE, PWDATA, PENABLE. Такая организация позволяет писать только словом. Даже если на мост приходит команда записать бит, как дальше идет сигнал? То есть, кроме тех 4 сигналов я могу на мост добавить еще несколько сигналов, которые позволят аппаратно реализовать поддержку команды работы с битом? Такие вопросы у меня возникли после прочтения ответа. До этого я просмотрел всю информацию по AMBA(скачал с сайта ARM), и изучил как строятся системы на ней. А вот в ядро ARM пока не влазил.
Откуда такой интерес? Все просто , у нашей фирмы заказ на периферийный блок, который взаимодействует с ядром ARM по APB. Так поставлена задача.
Вот еще вопрос: в спецификации на AMBA они не рекомендуют сажать регистры и периферические блоки на PCLK (APB), так как это приводит к резкому возрастанию потребляемой мощности. Почему такое ограничение именно на PCLK? Иной тактовый сигнал не вызовет скачка потребления? Запись в регистр я веду по фронту PENABLE.