Понятно, сделаю неснолько конфигов... А вот сами драйверы думаю все же вынести из registers но без шаманства с симлинками, просто их всех поместить в drivers.
Так получится только один раз собрать библиотеки, а драйвера собирать из главного мейка.
Смотри на мэйн, а там вместо главного цикла serialgate_mainloop(); Из чего можно догадаться, что используется библиотека для уарта. Для слейва еще нет кода, т.к. у меня нет необходимости...
Добавлено спустя 4 минуты 29 секунд: Нужно поправить драйвера, чтобы они использовали gate_register_allocate()
В описании драйвера не надо хранить все номера регистров - достаточно начального номера и количества регистров
Добавлено спустя 3 минуты 44 секунды: Соответственно gate_gregister_allocate() надо переписать - чтобы он драйвер запрашивал для себя n регистров, а ядро возвращало начальный номер
Как-то не ясно как это работает. Я себе представляю так:
Мы в главной процедуре по идее должны зарегистрировать в ядре: 1. Все драйверы - на нужные адреса; 2. Источник команд (i2c-slave-receiver или serial-gate);
После чего надо включить источник команд и драйверы.
Оно примерно так работает или нет?
Добавлено спустя 1 минуту 18 секунд:
blindman писал(а):чтобы он драйвер запрашивал для себя n регистров, а ядро возвращало начальный номер
Неее, думаю лучше явно их размещать, просто ядро должно проверять, что пересекаются эти интервалы.
Чтобы лишний раз не двигать драйверы, а то не все будут через интроспекцию их адреса получать.
Не лучше.Драйвер будет думать, что его регистры нумеруются с нуля - проще добавить новые регистры не затрагивая прочие драйвера. Ядро через интроспекцию будет выдавать реальные номера. Получать через интроспекцию будут все. В приказном порядке
Убрать, добавить, убрать регистры, добавить регистры - что угодно. Не думая, а не занят ли уже регистр который мы хотим использовать. Меньше возможностей для ошибок, проще сборка.
Сдвинет. Потому я и говорю - интроспекцию использовать в приказном порядке
Добавлено спустя 2 минуты 21 секунду: Если делать так, что можно не использовать интроспекцию, а ориентироваться на фиксированные регистры - смысла в такой интроспекции немного
Не-не-не, нафиг интроспекцию в приказном порядке зачем людям жизнь усложнять сразу? А что нам мешает сохранять адреса? Ну сделать так, что можно желаемый адрес при регистрации передать - это то мы можем?
Если будет 50 драйверов - есть шанс что они займут все доступные номера, да еще и не хватит. А вот шансов, что все эти драйвера будут собраны в 1 девайсе - немного. Лучше сразу сделать так, что бы избежать проблем, чем потом все ломать и в итоге сделать именно так.