legioner1 0 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба Собственно есть такой вопрос, нужно во внешнюю память записывать конфигурациионые значения. как записать значениt в ячейку с адресом, например 0x8000 0100? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба Собственно есть такой вопрос, нужно во внешнюю память записывать конфигурациионые значения. как записать значениt в ячейку с адресом, например 0x8000 0100? * ((unsigned long *) 0x80000100) = value; Не забывать о выравнивании. Или описать структуру со множеством нужных полей и обращаться к ней struct confdata { unsigned long expirationdate; unsigned char color; }; ((struct confdata *) 0x80000100)->color = value; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба ((struct confdata *) 0x80000100)->color = value; Или описать extern переменную типа struct confdata, а в скрипте линкера задать ей конкретный адрес. Линкер может следить, чтобы в это место не попали другие переменные. В случае указателя придется думать об этом вручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 8 мая, 2009 Опубликовано 8 мая, 2009 · Жалоба Или описать extern переменную типа struct confdata, а в скрипте линкера задать ей конкретный адрес. Линкер может следить, чтобы в это место не попали другие переменные. В случае указателя придется думать об этом вручную. Но сначала нам придется процитировать здесь любимые места из описания того компилятора, которым пользуется топикстартер, чтобы ответить на вопрос - а как "в скрипте линкера задать ей конкретный адрес". Как я понял, линкеру обычно про external память ничего неизвестно - так что конфликна не будет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Если просто писать/читать память, то линкеру можно ничего и не говорить. А если надо память резервировать, да еще и не под одну структуру (массив или что еще) - то тогда линкер этому надо обучить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба * ((unsigned long *) 0x80000100) = value А на самом деле вместо unsigned long надо писать тип, который имеет VALUE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба А на самом деле ... На самом деле в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба На самом деле в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение. Увы, автор не поделился своими сокровенными мыслями, зачем ему эту нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Очень бывает нужно. К примеру, когда в даташите находишь адрес регистра, а в соотв. *.inc, который офигенных размеров искать как там обозвали этот регистр - ну долго. Плюешь на все и пишешь от руки. Быстро и удобно. Кроме того, мода людей присваивать ну очень длинные имена, которые ну никак не помогают - дурь. Цифра - наше всё. Букву оставим гуманитариям. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Очень бывает нужно. К примеру, когда в даташите находишь адрес регистра, а в соотв. *.inc, который офигенных размеров искать как там обозвали этот регистр - ну долго. Ctrl+F не работает? Кроме того, мода людей присваивать ну очень длинные имена, которые ну никак не помогают - дурь. Угу, дурь. Но никто не заставляет использовать хидеры производителя. Можно отредактировать или написать свои. Цифра - наше всё. Букву оставим гуманитариям. Очень неразумный подход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Ctrl+F не работает? Уже сточилась. Честно. Можно отредактировать или написать свои. Дешевле их не писать. А когда они готовые - грех не пользоваться. Но почему-то часть имен совпадает с даташитнымми, а часть - ну никак не совпадает. Присобачивают пару буковок и мучаешься гадать что именно искать. Очень неразумный подход. Если бы все поступали разумно, программисты и прочая были бы не нужны. Речь идет "о по-быстрому". Исключительно. Когда вот он адрес перед глазами, а превратить его в слово - это надо отыскать хидер, загрузить, отыскать, копи-пасте сделать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Дешевле их не писать. А когда они готовые - грех не пользоваться. Но почему-то часть имен совпадает с даташитнымми, а часть - ну никак не совпадает. Присобачивают пару буковок и мучаешься гадать что именно искать. Подобные проблемы мне встречались исключительно у Texas Instruments. Не о них речь? Написать хидер - не бог весть какая работа при минимальной автоматизации процесса. Речь идет "о по-быстрому". Исключительно. Когда вот он адрес перед глазами, а превратить его в слово - это надо отыскать хидер, загрузить, отыскать, копи-пасте сделать.... Беда в том, что сделанное "по-быстрому" таким навсегда и остается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DpInRock 0 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Чертов даташит от Атмел защищен и из него невозможно скопировать текст. Ваще, ё-мое. Как раз у Техаса я сам писал хидеры. И горя не знал. Но там меня никто никуда не торопил и рядом сидели монстры Си, которым бы я мог "по-быстрому" задать вопрос. У меня очень часты задачи не глобального характера, а сиюминутные, умирающие после первого удачного запуска. К примеру, сделать снимок какого-нибудь протокола обмена для дальнейшего разбора. Сделал - и забыл. Ровно на один раз. Неужели программу буквами на клавиатуре писать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба находишь адрес регистра.... Трм буквы RAM в моем посте видели? Тогда к чему о "регистрах"? И по любому обращение по магическим цифирям и к регистрам есть моветон. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 мая, 2009 Опубликовано 9 мая, 2009 · Жалоба Чертов даташит от Атмел защищен и из него невозможно скопировать текст. Ваще, ё-мое. Что-то я не припомню у них каких-то особо страшных несоответствий в названиях регистров между даташитом и хидерами. Идиотские префиксы не считаются. У меня очень часты задачи не глобального характера, а сиюминутные, умирающие после первого удачного запуска. К примеру, сделать снимок какого-нибудь протокола обмена для дальнейшего разбора. Сделал - и забыл. Ровно на один раз. Неужели программу буквами на клавиатуре писать? Да. ИМХО, лучше приучить себя всегда и все делать правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться