Перейти к содержанию
    

Размещение переменой по заданному адресу и ее значение после ресета

10 hours ago, jcxz said:

Вы же переменным в программе не задаёте абсолютных адресов, надеюсь?

Обычно нет. Но есть и в этом случае исключения. Одно из них лежит на поверхности. Им пользуются все. И вы тоже. Только забываете об этом, т.к. это сделано кем-то до вас, вы же просто пользуетесь этим не задумываясь, и всё работает.

Имеется ввиду адреса регистров управления ядром и периферией контроллера. Они расположены в адресном пространстве по строго заданным адресам. И в *.h-файле описания контроллера они определяются через указатели, приведением целого числа, равного базовому адресу периферийного устройства, к типу указателя на структуру этого устройства.

В итоге, если раскрыть все дефайны, получится конструкция типа:

// Обнуляем счётный регистр таймера:
// TIMER_TypeDef - псевдоним типа структуры таймера
// 0x40078000 - базовый адрес таймера
// CNT - счётный регистр таймера
((TIMER_TypeDef *) 0x40078000)->CNT=0;

 

Изменено пользователем Darth Vader

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, Darth Vader сказал:

Обычно нет. Но есть и в этом случае исключения. Одно из них лежит на поверхности. Им пользуются все. И вы тоже. Только забываете об этом, т.к. это сделано кем-то до вас, вы же просто пользуетесь этим не задумываясь, и всё работает.

Имеется ввиду адреса регистров управления ядром и периферией контроллера.

Отучайтесь говорить за других! Вы не знаете как сделано у других. И даром ясновидения, как видно, не обладаете.

Во-первых: это не "сделано кем-то до меня", структуры, описывающие периферию, я делаю всегда сам. Для каждого используемого МК.

Во-вторых: если Вы видите только один способ сделать что-то, то это не значит, что другие люди не видят иных способов сделать это. Описание периферии можно точно также натягивать на адресное пространство МК посредством командного файла линкёра. А можно и задавать абсолютные адреса для таких структур. Я делал и так и так - когда как мне было удобнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итог: настоящие джентльмены так не делают, но если очень надо - то можно.

На том вопрос о целесообразности размещения объектов в адресном пространстве по абсолютным адресам вручную предлагаю закрыть.

А то получается дискуссия типа:

- скажите, где можно купить вкусное пиво?

- не покупай его и не пей, оно вредно для здоровья.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут можно ещё добавить, что в загрузчике U-Boot, да и других, выполняющих инициализацию оборудования через отображённые в адресное пространство регистры подобный подход - совершенно нормальное явление.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...