реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> запись значений в память по определенному адресу, как?
legioner1
сообщение May 8 2009, 05:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 20-11-08
Пользователь №: 41 795



Собственно есть такой вопрос, нужно во внешнюю память записывать конфигурациионые значения.
как записать значениt в ячейку с адресом, например 0x8000 0100?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 8 2009, 05:53
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(legioner1 @ May 8 2009, 09:11) *
Собственно есть такой вопрос, нужно во внешнюю память записывать конфигурациионые значения.
как записать значениt в ячейку с адресом, например 0x8000 0100?



Код
* ((unsigned long *) 0x80000100) = value;

Не забывать о выравнивании.

Или описать структуру со множеством нужных полей и обращаться к ней

Код
struct confdata {
unsigned long expirationdate;
unsigned char color;
};

((struct confdata *) 0x80000100)->color = value;
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 8 2009, 07:31
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Genadi Zawidowski @ May 8 2009, 08:53) *
Код
((struct confdata *) 0x80000100)->color = value;
Или описать extern переменную типа struct confdata, а в скрипте линкера задать ей конкретный адрес. Линкер может следить, чтобы в это место не попали другие переменные. В случае указателя придется думать об этом вручную.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 8 2009, 20:56
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Сергей Борщ @ May 8 2009, 11:31) *
Или описать extern переменную типа struct confdata, а в скрипте линкера задать ей конкретный адрес. Линкер может следить, чтобы в это место не попали другие переменные. В случае указателя придется думать об этом вручную.

Но сначала нам придется процитировать здесь любимые места из описания того компилятора, которым пользуется топикстартер, чтобы ответить на вопрос - а как "в скрипте линкера задать ей конкретный адрес".
Как я понял, линкеру обычно про external память ничего неизвестно - так что конфликна не будет...
Go to the top of the page
 
+Quote Post
sergeeff
сообщение May 9 2009, 00:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Если просто писать/читать память, то линкеру можно ничего и не говорить. А если надо память резервировать, да еще и не под одну структуру (массив или что еще) - то тогда линкер этому надо обучить.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 9 2009, 14:55
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
* ((unsigned long *) 0x80000100) = value

А на самом деле вместо unsigned long надо писать тип, который имеет VALUE.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 9 2009, 17:25
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DpInRock @ May 9 2009, 17:55) *
А на самом деле ...

На самом деле в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sergeeff
сообщение May 9 2009, 18:07
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(zltigo @ May 9 2009, 20:25) *
На самом деле в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение.


Увы, автор не поделился своими сокровенными мыслями, зачем ему эту нужно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 9 2009, 19:06
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Очень бывает нужно. К примеру, когда в даташите находишь адрес регистра, а в соотв. *.inc, который офигенных размеров искать как там обозвали этот регистр - ну долго. Плюешь на все и пишешь от руки. Быстро и удобно.
Кроме того, мода людей присваивать ну очень длинные имена, которые ну никак не помогают - дурь.

Цифра - наше всё. Букву оставим гуманитариям.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 9 2009, 19:18
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ May 9 2009, 23:06) *
Очень бывает нужно. К примеру, когда в даташите находишь адрес регистра, а в соотв. *.inc, который офигенных размеров искать как там обозвали этот регистр - ну долго.

Ctrl+F не работает?

Цитата(DpInRock @ May 9 2009, 23:06) *
Кроме того, мода людей присваивать ну очень длинные имена, которые ну никак не помогают - дурь.

Угу, дурь. Но никто не заставляет использовать хидеры производителя. Можно отредактировать или написать свои.

Цитата(DpInRock @ May 9 2009, 23:06) *
Цифра - наше всё. Букву оставим гуманитариям.

Очень неразумный подход.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 9 2009, 19:52
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Ctrl+F не работает?

Уже сточилась. Честно.
Цитата
Можно отредактировать или написать свои.

Дешевле их не писать. А когда они готовые - грех не пользоваться. Но почему-то часть имен совпадает с даташитнымми, а часть - ну никак не совпадает. Присобачивают пару буковок и мучаешься гадать что именно искать.
Цитата
Очень неразумный подход.

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

Речь идет "о по-быстрому". Исключительно. Когда вот он адрес перед глазами, а превратить его в слово - это надо отыскать хидер, загрузить, отыскать, копи-пасте сделать....


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 9 2009, 20:00
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ May 9 2009, 23:52) *
Дешевле их не писать. А когда они готовые - грех не пользоваться. Но почему-то часть имен совпадает с даташитнымми, а часть - ну никак не совпадает. Присобачивают пару буковок и мучаешься гадать что именно искать.

Подобные проблемы мне встречались исключительно у Texas Instruments. Не о них речь?
Написать хидер - не бог весть какая работа при минимальной автоматизации процесса.

Цитата(DpInRock @ May 9 2009, 23:52) *
Речь идет "о по-быстрому". Исключительно. Когда вот он адрес перед глазами, а превратить его в слово - это надо отыскать хидер, загрузить, отыскать, копи-пасте сделать....

Беда в том, что сделанное "по-быстрому" таким навсегда и остается.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение May 9 2009, 20:31
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Чертов даташит от Атмел защищен и из него невозможно скопировать текст. Ваще, ё-мое.
Как раз у Техаса я сам писал хидеры. И горя не знал. Но там меня никто никуда не торопил и рядом сидели монстры Си, которым бы я мог "по-быстрому" задать вопрос.

У меня очень часты задачи не глобального характера, а сиюминутные, умирающие после первого удачного запуска. К примеру, сделать снимок какого-нибудь протокола обмена для дальнейшего разбора. Сделал - и забыл. Ровно на один раз. Неужели программу буквами на клавиатуре писать?


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
zltigo
сообщение May 9 2009, 20:39
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DpInRock @ May 9 2009, 22:06) *
находишь адрес регистра....

Трм буквы RAM в моем посте видели? Тогда к чему о "регистрах"? И по любому обращение по магическим цифирям и к регистрам есть моветон.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 9 2009, 20:41
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DpInRock @ May 10 2009, 00:31) *
Чертов даташит от Атмел защищен и из него невозможно скопировать текст. Ваще, ё-мое.

Что-то я не припомню у них каких-то особо страшных несоответствий в названиях регистров между даташитом и хидерами. Идиотские префиксы не считаются.

Цитата(DpInRock @ May 10 2009, 00:31) *
У меня очень часты задачи не глобального характера, а сиюминутные, умирающие после первого удачного запуска. К примеру, сделать снимок какого-нибудь протокола обмена для дальнейшего разбора. Сделал - и забыл. Ровно на один раз. Неужели программу буквами на клавиатуре писать?

Да. ИМХО, лучше приучить себя всегда и все делать правильно.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 05:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01512 секунд с 7
ELECTRONIX ©2004-2016