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

 
 
> void const *argument, Что это?
ViKo
сообщение Jan 6 2014, 19:06
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В Keil CMSIS-RTOS RTX в параметрах задач указано:
Код
void job1 (void const *arg)

Что это, зачем? Писал, не задумываясь. Теперь хочу просветиться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Jan 15 2014, 13:49
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Очень плотно использовал IAR для AVR в конце девяностых (незабвенная версия 1.40) и до середины нулевых, в т.ч. и лицензионные. Никогда объекты, квалифицированные как const, не попадали там во флешь и не могли попасть ни при каких обстоятельствах (вендор компилятора, версия компилятора, фаза луны и прочее). Этот результат жёстко определяется двумя обстоятельствами: 1. требованиями языков C/C++; 2. Архитектурой МК AVR.

1. Языки C/C++ без расширений не поддерживают никаких адресных пространств, кроме одного, т.е. все объекты программы "живут" в одной и тоже памяти, в едином адресном пространстве. Как физически эта память выполнена - это уже дело пятое, но адресное пространство должно быть одно. Соответственно, константные объекты могут жить только в этой памяти, т.е. в той же самой, что и все остальные объекты. В частности, к ним на равных правах применяются те же правила взятия адресов, адресной арифметики и т.д.

2. Архитектура МК AVR предусматривает раздельные адресные пространства для памяти данных и памяти программ. Память данных - ОЗУ, память программ - ПЗУ (флешь). Для того, чтобы разместить объект во флеши, его приходится совать в память программ, т.е. в другое адресное пространство. Для этого производитель компилятора IAR предусмотрел расширение языка ключевым словом __flash.

Объекты, квалифицированные ключевым словом const, никак не могут попасть в память программ. Если нужно засунуть объект во флешь, то приходится его размещать в памяти программ, но это уже не const объект, а __flash. Вот если бы у МК AVR ещё был сегмент памяти данных, выполненный в виде флеши, то тогда было бы возможно размещать во флеши (именно в этой флеши, а не во флеши памяти программ) константные объекты. Но таких МК, как помню, не было и, вроде, до сих пор нет.

У AVR, кстати, не два, а целых три адресных пространства - ещё есть EEPROM, сюда применимы все вышеприведённые рассуждения.

Таким образом, константные объекты у МК AVR могут жить только в памяти данных и это ОЗУ. Не нужно никаких экспериментов, чтобы прийти к этому выводу. Объекты, размещённые в других адресных пространствах - __flash, __eerpom, живут сами по себе и не могут напрямую использоваться, например, для операций адресной арифметики, производимой над обычными объектами.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   void const *argument   Jan 6 2014, 19:06
- - megajohn   ну к примеру у вас на контроллере два UART и в од...   Jan 6 2014, 19:57
|- - ViKo   Цитата(megajohn @ Jan 6 2014, 22:57) то е...   Jan 6 2014, 20:35
- - kosyak©   Вот зачем оно конст...?   Jan 6 2014, 20:14
|- - megajohn   если оно будет на стеке, то по моменту запуска сам...   Jan 6 2014, 20:18
- - kosyak©   тогда уж task_start( mb_task, ..., (void const*)...   Jan 6 2014, 20:40
- - GetSmart   Вообще-то компилятор должен "съедать" эт...   Jan 6 2014, 23:38
|- - ViKo   Цитата(GetSmart @ Jan 7 2014, 02:38) Кака...   Jan 7 2014, 08:50
||- - GetSmart   Цитата(ViKo @ Jan 7 2014, 14:50) Возможно...   Jan 7 2014, 10:08
|||- - ViKo   Цитата(GetSmart @ Jan 7 2014, 13:08) Чем ...   Jan 7 2014, 10:18
|||- - GetSmart   Цитата(ViKo @ Jan 7 2014, 16:18) Led9_id ...   Jan 7 2014, 10:38
||||- - ViKo   Цитата(GetSmart @ Jan 7 2014, 13:29) Пред...   Jan 7 2014, 10:42
|||- - GetSmart   Цитата(ViKo @ Jan 7 2014, 16:18) Тем, что...   Jan 8 2014, 06:38
|||- - ViKo   Цитата(GetSmart @ Jan 8 2014, 09:38) А (v...   Jan 8 2014, 09:21
|||- - Сергей Борщ   Цитата(ViKo @ Jan 8 2014, 11:21) Мое мнен...   Jan 8 2014, 10:51
|||- - GetSmart   Цитата(ViKo @ Jan 8 2014, 15:21) Проверьт...   Jan 8 2014, 10:56
|||- - ViKo   Цитата(GetSmart @ Jan 8 2014, 13:56) Кейл...   Jan 8 2014, 11:10
|||- - Сергей Борщ   Цитата(ViKo @ Jan 8 2014, 13:10) На uin...   Jan 8 2014, 18:11
|||- - ViKo   Цитата(Сергей Борщ @ Jan 8 2014, 21:11) Е...   Jan 8 2014, 18:30
|||- - Сергей Борщ   Цитата(ViKo @ Jan 8 2014, 20:30) Почему ж...   Jan 9 2014, 01:29
||- - GetSmart   Цитата(ViKo @ Jan 7 2014, 14:50) В C можн...   Jan 10 2014, 11:45
||- - ViKo   Цитата(GetSmart @ Jan 10 2014, 14:45) Ну ...   Jan 10 2014, 11:59
||- - GetSmart   Цитата(ViKo @ Jan 10 2014, 17:59) Как это...   Jan 10 2014, 12:07
||- - ViKo   Цитата(GetSmart @ Jan 10 2014, 15:07) Ещё...   Jan 10 2014, 14:13
|- - megajohn   Цитата(GetSmart @ Jan 7 2014, 03:38) Квал...   Jan 7 2014, 10:20
- - Tarbal   В процессорах с Гарвардской архитектурой AVR, PIC,...   Jan 9 2014, 02:47
|- - Сергей Борщ   Цитата(Tarbal @ Jan 9 2014, 04:47) В проц...   Jan 9 2014, 07:28
||- - Herz   Цитата(Сергей Борщ @ Jan 9 2014, 09:28) А...   Jan 9 2014, 08:11
|||- - Сергей Борщ   Цитата(Herz @ Jan 9 2014, 10:11) А каким ...   Jan 9 2014, 12:19
|||- - ViKo   Цитата(Сергей Борщ @ Jan 9 2014, 15:19) Я...   Jan 9 2014, 12:24
|||- - Сергей Борщ   Цитата(ViKo @ Jan 9 2014, 14:24) Да, с ло...   Jan 9 2014, 12:44
||- - ViKo   Цитата(Сергей Борщ @ Jan 9 2014, 10:28) А...   Jan 9 2014, 08:16
||- - Tarbal   Цитата(Сергей Борщ @ Jan 9 2014, 10:28) Н...   Jan 9 2014, 18:55
|- - GetSmart   Цитата(Tarbal @ Jan 9 2014, 08:47) В проц...   Jan 10 2014, 19:22
- - andrewlekar   При чём тут static вообще? На ARMах const в опреде...   Jan 9 2014, 10:17
- - XVR   Использование ключевых слов static и/или const для...   Jan 9 2014, 10:20
|- - ViKo   Цитата(XVR @ Jan 9 2014, 13:20) Поэтом, п...   Jan 9 2014, 10:36
- - andrewlekar   Цитатадля каких именно компиляторов Ни для каких. ...   Jan 9 2014, 10:27
- - andrewlekar   Что, вашему компилятору не хватает ума разместить ...   Jan 9 2014, 10:40
- - andrewlekar   Что вы этим гениальным кодом хотите проверить? В c...   Jan 10 2014, 05:29
|- - Tarbal   Цитата(andrewlekar @ Jan 10 2014, 08:29) ...   Jan 10 2014, 14:22
- - редактор   Цитатато надо было указать квалификатор __flash. О...   Jan 10 2014, 08:04
|- - andrew_b   Цитата(редактор @ Jan 10 2014, 12:04) con...   Jan 10 2014, 08:54
- - ViKo   Удостоверился в Кейл для глобальных переменных: - ...   Jan 10 2014, 09:45
|- - Сергей Борщ   Цитата(ViKo @ Jan 10 2014, 11:45) Удостов...   Jan 10 2014, 11:05
- - andrewlekar   ЦитатаУ кого есть IAR AVR? ЦитатаДля процессора с ...   Jan 10 2014, 17:30
|- - Tarbal   Цитата(andrewlekar @ Jan 10 2014, 21:30) ...   Jan 10 2014, 22:35
- - andrewlekar   ЦитатаНичего не понял. Может попробуете еще раз вы...   Jan 11 2014, 06:32
|- - Tarbal   Цитата(andrewlekar @ Jan 11 2014, 10:32) ...   Jan 11 2014, 18:22
|- - Сергей Борщ   Цитата(Tarbal @ Jan 11 2014, 20:22) Я вам...   Jan 11 2014, 19:33
|- - Tarbal   Цитата(Сергей Борщ @ Jan 11 2014, 22:33) ...   Jan 13 2014, 12:28
- - Tarbal   Вот документ. На странице 5 есть информация о разм...   Jan 14 2014, 13:10
|- - demiurg_spb   Цитата(Tarbal @ Jan 14 2014, 17:10) Вот д...   Jan 14 2014, 15:42
||- - Tarbal   Цитата(demiurg_spb @ Jan 14 2014, 19:42) ...   Jan 14 2014, 16:09
||- - demiurg_spb   Цитата(Tarbal @ Jan 14 2014, 20:09) Прост...   Jan 14 2014, 16:34
||- - Tarbal   Цитата(demiurg_spb @ Jan 14 2014, 20:34) ...   Jan 14 2014, 18:46
||- - Сергей Борщ   Цитата(Tarbal @ Jan 14 2014, 20:46) О ста...   Jan 15 2014, 07:37
|- - Сергей Борщ   Цитата(Tarbal @ Jan 14 2014, 15:10) Вот д...   Jan 14 2014, 18:09
- - andrewlekar   Ну вот я собрал ваш код при помощи IAR AVR 5.3. Во...   Jan 15 2014, 04:53
|- - Tarbal   Цитата(andrewlekar @ Jan 15 2014, 08:53) ...   Jan 15 2014, 13:13
|- - Сергей Борщ   Цитата(Tarbal @ Jan 15 2014, 15:13) И как...   Jan 15 2014, 15:23
- - Tarbal   Цитата(dxp @ Jan 15 2014, 17:49) Очень пл...   Jan 16 2014, 23:40


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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 03:23
Рейтинг@Mail.ru


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