Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Решил слегка погрызть Keil. Вопрос у меня по компоновщику. В голове в основном каша, при чем не вареная, но постараюсь задать более-менее осмысленный вопрос.
Есть некая функция foo,постоянно вызывается в основном цикле, надо ее разместить в некой другой области памяти. Функция ничего полезного не делает, изучаю компоновщик. Спойлер
Program Size: Code=684 RO-data=272 RW-data=0 ZI-data=1640
МАП файл говорит что
Код:
foo 0x08001001 Thumb Code 20 foo.o(ZZZ)
Вроде где-то там где надо, опять непонятно почему нечетное значение. Однако если поглядеть HEX, в этой области ничего нет. Если запустить прошивку, прога уходит в исключение где-то на этапе выполнения стартапа.
Если написать вот такой scatter Спойлер
Код:
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
Мап файл пишет тоже самое, по крайней мере про размещение foo. Компиллится чуток с другими цифирями
Код:
Program Size: Code=656 RO-data=256 RW-data=0 ZI-data=1640
Но в этом случае код уже работает, функция на самом деле лежит где надо (0x08001000), проверил в дебаге и поглядел HEX. Оптимизация в обоих случаях выключена.
Почитал Хелп как смог:), форумы буржуйские, но к сожалению знания аглицкого бедные для четкого понимания написанного. Русского по компоновщику кейла, можно сказать, ничего не нашел. Теперь попробую задать вопрос, боюсь что очень колхозно и вряд ли с правильными терминами, пока можно сказать ничего не понял. В первом скаттере есть регион LR_IROM1, в нем три как бы подрегиона(не знаю как правильно назвать) ER_IROM1,ER_IROM2, RW_IRAM1.. В ER_IROM2 определена секция ZZZ. Но не хрена не работает так. А если я эту секцию указываю таком же в подрегионе, но уже в отдельном новом регионе, то тогда работает.
1. Я хоть приблизительно на верном пути с пониманием линковщика Кейла с регионами и "подрегионами"? 2. В чем разница между скаттерами?
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Тоже в своё время разобраться толком не получилось. Поэтому чтобы не наплодить странных ошибок воспользовался меню проекта Target и прописал адрес секции IROM2.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Ладно. Тему запостил. Может кто будет разбираться чего дополнит. В целом на будущий проект скорее всего я с компоновщиком разберусь худо-бедно, так как хоть точно и не понял что сделал, но удалось удачно разместить и функцию и данные в требуемую область памяти. При том что как и отдельно, так и целый объектный файл, без ворнингов.
Я что Keil то изучаю. Есть задумка на новый проект. До этого в Кокосе сидел. Хоть его все и хаят, но не такой он уж и ужасный. Как то все баги Кокоса оказались моими , кроме двух мелочей (может конечно еще что есть). Запускается долго, да, но потом робит хорошо. Keil уже пару раз зависал за теже пару дней (не ломанный), Кокос тоже пару раз, но за больше чем год. Я бы на нем и остался, но проект то Кокосовский заглох давно и не развивается.
Еще вопрос по Keil. В окне watch переменным отображаются только значение и тип, но без адреса. Как то можно это настроить? Что то я не видел, хотя поди где-то это перед носом как всегда.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Вернулся я к KEIL, после паузы.
Вопрос теперь у меня про русские буквы. Установил некую лечилку, стал понимать русскую клаву. Но пишет хрен знает в какой кодировке, вот например русская копипаста из Кейла
Цитата:
Ïðèâåò èç Êåéëà
В кейле то нормально отображается.
С помощью онлайн сервисов смог этот текст увидеть нормально. При том что один сервис написал что была кодировка W-1252, другой ISO8859-1 .
Попробовал отобразить этот текст в NotePad++ в этих кодировках, он быстро и весело перевел кракозябры в иероглифы. Ладно, типа хрен с ним, если понадобится выдернуть из кейла кирилицу вроде на сайтах можно сделать.
А вот попытался из кокоса как-то вставить куски кода, ну никак не могу подобрать код. Там вроде как UTF, а во что перекодировать то???
---------- З.Ы. Возможно я ничего не понимаю в колбасных обрезках, но пока что-то Кейл меня слегка подбешивает.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
По-ходу он все-таки не умеет, настроек я таких не нашел или слепой я просто.
Неопытный. Решается за 7 минут: а) Видим в настройках, что генерация HEX - это опция, значит основной target - нечто другое. б) Находим это нечто другое (.axf) и по сигнатуре ELF в начале файла и массе отладочной информации смекаем, что это не для образа, а для отладчика. ц) Соображаем, что требуемая манипуляция - дело скорее тулчейна, чем самой ИДЕ - бежим к нему в папочку и обнаруживаем там то, что и надеялись обнаружить - fromelf.exe. д) запускаем его в консоли - осознаём свою победищу, кричим ура, настраиваем вызов в user послебилд примерно так:
Добавлено after 14 minutes 40 seconds: Надо будет потом еще попробовать как сгенерится, если прошивка будет не сначала, пустое место перед прошивкой чем забъет. Но это мелочь, так, потом попробую.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Радикально не рекомендую разбираться с кейловским синтаксисом, это corner-case. Выучте и больше нигде не применете. Иное дело GNU ld, его скипты везде (кроме винды конечно же). В целом - концепция едина, но отличается реализация и всякие мелочи http://www.slac.stanford.edu/comp/unix/ ... ripts.html Но всё же GNU ld куда больше распространен и ответы на свои вопросы вы найдете на stackoverflow, а с кейлом. скорее всего придется всё самому
PS: сама по себе IDE не важна, важен toolchain. Кокос использует gcc, кейл - свою проприретарщину
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
arkhnchul писал(а):
http://www.keil.com/support/docs/3878.htm
Не все так просто. Это то я пробовал. Нюанс в том, что если переключить кодировку в UTF или Russian Win, действительно копипаста нормально работает. Но перестает понимать русскую клаву, переключаешь в ansi, клава работает, ранее вставленная русская копипаста окракозябривается.
Возможно я сделал ошибку при установке. Я качал с рутрекера, там был где-то пост , что русский понимать не будет и надо установить лечилку клавы. Я увидел что это действительно так (не пооигравшись с кодировками) и ее установил, а может зря.
Потом попробую снести и заново установлю без лечилки клавы, отпишусь по этому поводу.
Shapa писал(а):
Но всё же GNU ld куда больше распространен и ответы на свои вопросы вы найдете на stackoverflow, а с кейлом. скорее всего придется всё самому
Соглашусь за GNU, скрипты линкера интуитивно понятные, может не все сразу понятно, но достаточно, даже методом осмысленного тыка уговорить линкер сделать то что хочешь. На Кеил много хорошего слышал, на первые впечатления пока стараюсь не смотреть, бывают обманчивые.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Не все так просто. Это то я пробовал. Нюанс в том, что если переключить кодировку в UTF или Russian Win, действительно копипаста нормально работает. Но перестает понимать русскую клаву, переключаешь в ansi, клава работает, ранее вставленная русская копипаста окракозябривается
странно. Вот только поставил в виртуалку скачанный с офсайта mdk, выставил кодировку в utf8 - все работает, и ввод и копипаста. Винда, случаем, не XP еще?)
Да можно и в эту сторону глянуть, на все времени не хватает сразу
кстати, как-то упустил момент - в этом году ST то ли купили, то ли как-то договорились с Atollic, и TrueStudio для stm32 стал свободным. Тот же допиленный из коробки eclipse плюс gcc.
Последний раз редактировалось arkhnchul Вт май 15, 2018 16:57:22, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения