IAR (что значат эти строчки?)
26.01.2013, 21:14
|
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
IAR (что значат эти строчки?)
Всем доброго времени. Ковыряю исходник на Иаре.
некоторые строчки непонятны. прошу объяснить что они значат.
#pragma object_attribute=__root
__eeprom byte _null[6] @ 0;
volatile const __flash dword uID_flash @ (FLASHEND-3) = 0x12345678;
непонятно ни первое ни второе ))).
|
|
|
|
26.01.2013, 22:51
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от Janush
|
Всем доброго времени. Ковыряю исходник на Иаре.
некоторые строчки непонятны. прошу объяснить что они значат.
#pragma object_attribute=__root
__eeprom byte _null[6] @ 0;
volatile const __flash dword uID_flash @ (FLASHEND-3) = 0x12345678;
непонятно ни первое ни второе ))).
|
Не лукавьте. Переводить на русский то, что есть в лучшем виде в хелпе? Так и скажите - переведите мне...В IAR мощнейший хелп. Но почему-то мало кто его читает. Сразу ищут хелперов.
__________________
С уважением,
Vic / ut1wpr
Последний раз редактировалось ut1wpr; 26.01.2013 в 22:54.
|
|
|
|
26.01.2013, 23:19
|
|
|
Частый гость
Регистрация: 09.11.2012
Сообщений: 46
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Согласен. Всегда терпеть не мог англицкий .
С переводом туго совсем получается.
*****
Description
A function or variable with the __root attribute is kept whether or not it is referenced from the rest of the application, provided its module is included. Program modules are always included and library modules are only included if needed.
Вот при такой писанине здравый смысл теряется.
---
Я бы так написал(даже промтом понятно будет)
---ensures that the function or variable is included in the object code even if unused
Но это я догадался что оно скорее значит.
|
|
|
|
27.01.2013, 13:59
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от ut1wpr
|
|
В IAR мощнейший хелп
|
Может я туплю, но вот примеров я там не нашел... В отличие от хелпа в CCS, где кусочки кода для конкретной функции или директивы.
Типа того:
|
Код:
|
stdout
#define stdout ‹pointer to FILE rvalue›
The macro yields a pointer to the object that controls the standard output stream |
Ни одного примера, как этим пользоваться, я не нашел. Т.е. как перенаправить stdout я нашел  . В инете. А вот как пользоваться вышеуказанным - нет.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
27.01.2013, 18:35
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от DK
|
Может я туплю, но вот примеров я там не нашел... В отличие от хелпа в CCS, где кусочки кода для конкретной функции или директивы.
Типа того:
|
Код:
|
stdout
#define stdout ‹pointer to FILE rvalue›
The macro yields a pointer to the object that controls the standard output stream |
Ни одного примера, как этим пользоваться, я не нашел. Т.е. как перенаправить stdout я нашел . В инете. А вот как пользоваться вышеуказанным - нет.
|
Вас ведь никто не принуждает пользоваться IAR-ом. Работайте в той среде, которая вам и доступнее и понятнее. С тем багажом, который уже накоплен. Все остальное - вопрос времени. И желания. Прошу без обид.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
27.01.2013, 19:59
|
|
|
Гражданин KAZUS.RUN
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от Janush
|
#pragma object_attribute=__root
__eeprom byte _null[6] @ 0;
|
Объявлен массив _null из 6 элементов. Расположен с 0 адреса во внутреннем EEPROM.
Скорее всего AVR.
|
Цитата:
|
|
volatile const __flash dword uID_flash @ (FLASHEND-3) = 0x12345678;
|
Объявлена константа uID_flash, расположенная в последних 4 байтах флэш памяти. Инициализированное значение 0x12345678.
Обычно так делают в бутлоадерах, для того, чтобы из бута и приложения обращаться к серийному номеру устр-ва либо его идентификатору. Это также позволяет прошивальщику менять этот серийный номер прямо в прошивке.
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо SasaVitebsk за это сообщение:
|
|
|
27.01.2013, 22:20
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от ut1wpr
|
|
без обид
|
Какие обиды? Просто я спросил, Вы ответили. А хелп в ИАРе (типа, мощнейший) не позволяет мне себя чувствовать себя комфортно. Ну да, я только начал с STM разбираться. Большей частью туплю. Из-за отсутствия понятного МНЕ хелпа. Вот, например, есть ли там встроенные функции для работы с таймерами и прочей периферией? То что я видел - народ юзает собственные макросы.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
27.01.2013, 23:17
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от DK
|
|
Какие обиды? Просто я спросил, Вы ответили. А хелп в ИАРе (типа, мощнейший) не позволяет мне себя чувствовать себя комфортно. Ну да, я только начал с STM разбираться. Большей частью туплю. Из-за отсутствия понятного МНЕ хелпа. Вот, например, есть ли там встроенные функции для работы с таймерами и прочей периферией? То что я видел - народ юзает собственные макросы.
|
Вообще-то хелп не должен иметь макросов. Макросы - весьма непереносимая вещь. Посему "народ" и пользует свои макросы, чтобы в своих проектах быть как-то унифицированнее, что ли.
Попробуйте посмотреть в сторону Стандартной библиотеки периферии от ST. Вам представится возможность писать программы более сжато в исходных кодах, но расплачиваться за это размером исполняемой части, да и временем выполнения. Не желаете - читайте PDF на МК, разбирайтесь с регистрами, и пишите на чистом Си, прямым обращением к ним.
Программа, написанная таким образом так или иначе потребует от вас более обширных комментариев. Ибо спустя некоторое время вы попросту забудете, что означает та или иная величина, и почему вам нужно ее "впихивать" именно в тот, а не иной регистр. И опять лезть в PDF.
Написание с применением библиотек хорошо читаемое и доступно к пониманию хоть через столетия.. 
Можете в свое удовольствие чередовать в теле программы и библиотечные функции и прямое обращение.
Вот пример инициализации прямо по регистрам:
|
Код:
|
void setup_ADC( void ){
ADC1-›CR1 = 0; //
ADC1-›SQR1 = 0; //
ADC1-›CR2 |= ADC_CR2_CAL; //запуск калибровки
while (!(ADC1-›CR2 & ADC_CR2_CAL)){}; //ждем окончания калибровки
ADC1-›CR2 = ADC_CR2_EXTSEL; //выбрать источником запуска разряд SWSTART
ADC1-›CR2 |= ADC_CR2_EXTTRIG; //разр. внешний запуск регулярного канала
ADC1-›CR2 |= ADC_CR2_ADON; //включить АЦП
} |
Этот текст породит максимально компактный код.
А вот с применением библиотечных функций:
// размещение сигналов управления по выводам порта энкодера
|
Код:
|
#define PH1_PIN GPIO_Pin_13
#define PH2_PIN GPIO_Pin_14
#define PRESS_PIN GPIO_Pin_15
#define ENC_PORT GPIOB
#define ENC_PH1 GPIO_ReadInputDataBit(ENC_PORT, PH1_PIN)
#define ENC_PH2 GPIO_ReadInputDataBit(ENC_PORT, PH2_PIN)
#define BTN GPIO_ReadInputDataBit(ENC_PORT, PRESS_PIN) |
У библиотечных функций есть еще одна особенность - то, что вы могли и забыть при работе с периферией, в них "все включено"  Возможность ошибок минимизирована.
Так что, искать готовые примеры, как вы это делали с AVR, это тупиковый путь. Все-таки лучше внимательно почитать, понять, а дальше будет намного легче. То, что я написал, здесь уже сотни раз повторялось. Никаких Америк. Причем говорилось это авторитетными и достойными подражания людьми. Но подражания не в смысле "кат-н-пейст" фрагментов их программ. Вдумывайтесь в каждую строку...
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
28.01.2013, 10:58
|
|
|
Гражданин KAZUS.RUN
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Сообщение от DK
|
|
Ни одного примера, как этим пользоваться, я не нашел.
|
Так а что вы хотите сделать, своими словами.
IAR здесь не причём. Наоборот, это найболее приближенный к стандарту вариант. Надо просто смысл понимать. Язык Си простой по своей идее. Для того чтобы перенаправить стандартный вывод, вам, по сути надо переписать стандартные примитивы. После чего вы можете пользоваться стандартным вводом/ выводом. Ну а если своим языком, то стандартный ввод/ вывод выводит символы по-моему в порт usart0. Как только вы пишете свои процедуры (с тем же именем), то они заменяют стандартные. Вот и всё. В принципе, таким образом вы можете подменить любую процедуру из используемой библиотеки.
|
|
|
|
28.01.2013, 22:21
|
|
|
Частый гость
Регистрация: 21.04.2010
Адрес: Makeevka
Сообщений: 25
Сказал спасибо: 25
Сказали Спасибо 10 раз(а) в 3 сообщении(ях)
|
Re: IAR (что значат эти строчки?)
Когда-то давненько делал перевод хелпа IAR 5_30 для AVR. Не помню всех форумов на которых просил проверить точность перевода, но проверить никто из опытных программистов не взялся, а может быть просто их в тот момент не было на форумах. Перевод был размещен на файлообменнике DepositFiles.
Сегодня зашел туда и был приятно удивлен, русифицированный Help еще там. Вот ссылка; http://depositfiles.com/folders/ZJ29CRLW2
Возможно кому-то чем-то поможет, но за точность перевода.... читай выше.
|
|
|
|
Эти 3 пользователя(ей) сказали Спасибо Ahatoly за это сообщение:
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:10.
|
|