Darth Vader 0 18 октября, 2018 Опубликовано 18 октября, 2018 (изменено) · Жалоба 10 hours ago, jcxz said: Вы же переменным в программе не задаёте абсолютных адресов, надеюсь? Обычно нет. Но есть и в этом случае исключения. Одно из них лежит на поверхности. Им пользуются все. И вы тоже. Только забываете об этом, т.к. это сделано кем-то до вас, вы же просто пользуетесь этим не задумываясь, и всё работает. Имеется ввиду адреса регистров управления ядром и периферией контроллера. Они расположены в адресном пространстве по строго заданным адресам. И в *.h-файле описания контроллера они определяются через указатели, приведением целого числа, равного базовому адресу периферийного устройства, к типу указателя на структуру этого устройства. В итоге, если раскрыть все дефайны, получится конструкция типа: // Обнуляем счётный регистр таймера: // TIMER_TypeDef - псевдоним типа структуры таймера // 0x40078000 - базовый адрес таймера // CNT - счётный регистр таймера ((TIMER_TypeDef *) 0x40078000)->CNT=0; Изменено 19 октября, 2018 пользователем Darth Vader Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 19 октября, 2018 Опубликовано 19 октября, 2018 · Жалоба 19 часов назад, Darth Vader сказал: Обычно нет. Но есть и в этом случае исключения. Одно из них лежит на поверхности. Им пользуются все. И вы тоже. Только забываете об этом, т.к. это сделано кем-то до вас, вы же просто пользуетесь этим не задумываясь, и всё работает. Имеется ввиду адреса регистров управления ядром и периферией контроллера. Отучайтесь говорить за других! Вы не знаете как сделано у других. И даром ясновидения, как видно, не обладаете. Во-первых: это не "сделано кем-то до меня", структуры, описывающие периферию, я делаю всегда сам. Для каждого используемого МК. Во-вторых: если Вы видите только один способ сделать что-то, то это не значит, что другие люди не видят иных способов сделать это. Описание периферии можно точно также натягивать на адресное пространство МК посредством командного файла линкёра. А можно и задавать абсолютные адреса для таких структур. Я делал и так и так - когда как мне было удобнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 20 октября, 2018 Опубликовано 20 октября, 2018 · Жалоба Итог: настоящие джентльмены так не делают, но если очень надо - то можно. На том вопрос о целесообразности размещения объектов в адресном пространстве по абсолютным адресам вручную предлагаю закрыть. А то получается дискуссия типа: - скажите, где можно купить вкусное пиво? - не покупай его и не пей, оно вредно для здоровья. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgK 1 20 октября, 2018 Опубликовано 20 октября, 2018 · Жалоба Тут можно ещё добавить, что в загрузчике U-Boot, да и других, выполняющих инициализацию оборудования через отображённые в адресное пространство регистры подобный подход - совершенно нормальное явление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться