Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.193.45] |
|
Страницы: (18) « Первая ... 15 16 [17] 18 все ( Перейти к последнему сообщению ) |
Сообщ.
#241
,
|
|
|
Цитата trainer @ Не на байт, а на слово. Память программ при переходах адресуется пословно, младший бит адреса не указывается в коде команды и подразумевается равным 0. Ну или, если смотреть с другой стороны - адрес является порядковым номером 16-битного слова. Особенность архитектуры AVR. вы уж уточняйте о каком адресе идет речь, а то у авр-а много адресных пространств и для каждой свои правила организации и свои инструкции для доступа. Собственно речь идет об указателе инструкций |
Сообщ.
#242
,
|
|
|
А там вроде бы на русском языке написано "Память программ", "при переходах"
|
Сообщ.
#243
,
|
|
|
Цитата ir0407 @ IAR не генерит код(кроме области векторов) если в опциях не подключена никакая библиотека. А мне надо заставить компилятор генерить код без подключения библиотек. Исходников стандартных библиотек в моем IAR нет, только скомпилированные. Исходники библиотек обычно имеются у версий компилятора "professional". Но, насколько я помню, если библиотека указана, но ничего из неё не используется, то в исполнимые коды ничего из такой библиотеки не включается. И это не только у IAR. Что касается тонкостей адресации. Использование С/C++ - компилятора как раз и даёт возможность не обращать на эти самые тонкости никакого внимания. Не помню, чтобы мне это понадобилось за последние xxx лет. |
Сообщ.
#244
,
|
|
|
Цитата ЫукпШ @ Но, насколько я помню, если библиотека указана, но ничего из неё не используется, то в исполнимые коды ничего из такой библиотеки не включается. Да, ничего не включается, но все равно в дампе присутствует небольшой код инициализации библиотеки. А мне бы хотелось посмотреть где это находится, как сделано и если нужно изменить под свои нужды. Цитата ЫукпШ @ Использование С/C++ - компилятора как раз и даёт возможность не обращать на эти самые тонкости никакого внимания. Теперь это я уже понял. Просто надо хорошо знать и умело применять опции компилятора и линкера. Цитата ЫукпШ @ Не помню, чтобы мне это понадобилось за последние xxx лет. Столько не живут. |
Сообщ.
#245
,
|
|
|
Цитата ir0407 @ Да, ничего не включается, но все равно в дампе присутствует небольшой код инициализации библиотеки. А мне бы хотелось посмотреть где это находится, как сделано и если нужно изменить под свои нужды. Не знаю, не замечал. Может речь идёт о стартапе ? Его исходники обычно имеются. Поищи файл cstartup (.s90 ?). Что касается стандартных процедур, то линкер IAR имеет "удобную" логику работы, а именно: если некая процедура обнаружена в юзерной программе, в библиотеке она не разыскивается. Это значит, можно переопределить любую стандартную процедуру. Например, если реализовать собственную putchar тогда стандартный printf будет пользовать именно её. В результате можно выводить данные куда захочешь. |
Сообщ.
#246
,
|
|
|
О, как! Не густо же тут вопросов однако... И мой был последним аж два года назад. Ну что ж, попробуем продолжить, т.к. я так и не поборол тогда IAR-овский компилятор, вернулся к своему любимому асму. Потом времени не было этим заниматься, потом желания... И вот теперь и время появилось и желание, но воз пока и ныне там же.
Вопрос состоит в следующем. В качестве учебного эксперимента решил переписать под IAR свой асмовый модуль под USART. И снова сразу же наткнулся на какие-то сишные грабли при передаче парметра в функцию. Делаю вот так: #define SYS_CLK = 14745600UL #define USART_BAUD = 57600 #define BAUD_CONST (SYS_CLK / (16 * USART_BAUD) - 1) void InitUSART(unsigned int BaudConst); void main(void) { InitUSART(BAUD_CONST); //<-- Компилятор ругается на эту строку } void InitUSART(unsigned int BaudConst); { UBRRH = (unsigned char)BaudConst >> 8; UBRRL = (unsigned char)BaudConst; } При компиляции идет ругань на указанную строчку в виде текста "expected expression". При этом если в параметр функции подставить конкретное число все компилируется нормально, а вот с макроподстановкой BAUD_CONST не хочет. Подскажите плиз где я тут на грабли наступаю. Уже весь мануал по языку триста раз скурил, но по той скудной инфе что там есть никак не могу раздуплиться по работе с макросами. В чем мой косяк? |
Сообщ.
#247
,
|
|
|
Цитата ir0407 @ Естественно будет ругань. Убери символ = из макроопределений. Иначе у тебя после развертывания макросов получается ( = 14745600UL / (16 * = 57600) - 1) При компиляции идет ругань на указанную строчку в виде текста "expected expression". |
Сообщ.
#248
,
|
|
|
Гы... Ёкереный бабай... Точно! Вот что значит сила привычки. Спасибо большое.
|
Сообщ.
#249
,
|
|
|
Всю ветку прочитал.
Есть проект, написан в IAR. Напарник передаёт мне исходный код, у него компиляция выдаёт hex-файл размером в 96кб, а у меня копия такого же проекта выдаёт hex-файл размером в 146кб. Проверили настройки в Project - Options: - Debugger - Driver: ST-Link (для него делаем). - С/С++ compiler - Optimizations - Level: High. - Linker - Config - Linker Configuration File: Задали Override default (задана копия файла как и у напарника). Засада в том, что мой hex-файл размером в 146кб никак не подходит для прошивки прибора (прошивальщики что в IAR, что фирменный STM32 не могут прошить им, ругаясь на слишком большой размер - это факт). А hex-файл размером в 96кб, получаемый при компиляции у напарника, прекрасно подходит (но его надо отлаживать далее при приборе). Вобщем, надо выяснить причину, почему IAR выдаёт hex-файл повышенного размера. HELP. |
Сообщ.
#250
,
|
|
|
Если в настройках проекта все идентично - разница может быть из-за разных версий компиляторов и/или библиотек
|
Сообщ.
#251
,
|
|
|
trainer версии сравнили - у меня поновей, по мнению напарника это не должно влиять. Также обратил внимание, что у меня нет прав на запись в каталоге программы IAR, в каталоге Program Files. Пытаюсь получить права администратора - у нас на работе это не просто сделать.
|
Сообщ.
#252
,
|
|
|
Цитата VLeshka @ А зачем тебе нужны права туда? Также обратил внимание, что у меня нет прав на запись в каталоге программы IAR, в каталоге Program Files. |
Сообщ.
#253
,
|
|
|
trainer только предположение, что это влияет. Другой теории, куда надо идти, нет.
|
Сообщ.
#254
,
|
|
|
Аааа... Ну тогда переустанови Windows. Точно поможет.
runtime у вас, очевидно, разного размера. IAR, если я правильно помню, в map-файлах умеет выдавать размеры откомпилированных функций и объектов. Можно сравнить. |
Сообщ.
#255
,
|
|
|
trainer переустановка помогла бы, особенно с установкой прав админа для меня.
Вобщем, на одном и том же комьпютере, "до меня", под логином администратора всё было нормально. Под моим логином, гостя, как мной и описано. В итоге просто "перебазировался" с приборами на свой компьютер с моими администраторскими правами. |