- IAR 8051 10.10.1 глючный компилятор (int и long типы, printf) для Cypress CY7C68013A sladkoejka(1955 знак., 29.06.2018 11:55 - 02.07.2018 18:42, MCU, полностью)
- Всем привет, подниму тему. kuzulis(1697 знак., 18.10.2019 14:29)
- Ну так чо, вышел пак с исправлениями? На прошлый твой багрепорт они за 2 дня обернулись :) - Codavr(07.07.2018 11:06, ссылка)
- А что скажет уважаемый KEIL? - seryy(03.07.2018 15:16)
- Корректный код генерируется в обоих случаях Bill(2501 знак., 03.07.2018 08:04 - 08:12)
- Обнаружил интересное различие в коде который не работает и коде, который работает. Вот сам код примера: sladkoejka(2434 знак., 05.07.2018 13:49 - 14:00)
- Удивительно что он вообще такой добрый, ваш оптимизатор. Ну кто же счетчик в delay делает не volatile? - Petrovich(05.07.2018 13:57,
)
- а зачем его volatile делать, если это локальная переменная и никто кроме локального кода её менять не может? sladkoejka(427 знак., 05.07.2018 14:06 - 14:11)
- без volatile оптимизатор без проблем может выкинут цикл - 0men(05.07.2018 14:36)
- Volatile более сложный объект, чем кажется. Впрочем, большинство здешних обитателей его освоило - Petrovich(05.07.2018 14:15,
)
- в чём сложность? Кстати, проверил под симулятором. Оба варианта (с INC R6 и без него) работают одинаково и дают абсолютно одинаковую задержку. Что с volatile, что без. Но с volatile задержка в 2.28 раза больше. При этом вариант, где код начинается sladkoejka(79 знак., 05.07.2018 14:42)
- Вот по этоой статье учились поколения :) Petrovich(58 знак., 05.07.2018 14:50,
)
- Ничего нового в этой статье нет. Насчет использования volatile в циклах - это очень неудачный совет. Лучше использовать какое-либо полезное действие в теле цикла (например NOP). И вот почему. sladkoejka(1041 знак., 05.07.2018 15:02 - 15:06)
- Сравнивайте Bill(3498 знак., 05.07.2018 16:24)
- Что сравнивать? В вашем примере ошибка - вы закоментили вызов __no_operation(). Без этого вызова цикл должен быть удалён. То, что с volatile не удаляет - это результат плохой оптимизации. Мозгов у компилятора не хватает чтобы отследить, что sladkoejka(667 знак., 05.07.2018 17:19)
- Я не о зависаниях. Я - о недостаточной "сообразительности" компилятора. - Bill(05.07.2018 18:04)
- "То, что с volatile не удаляет - это результат плохой оптимизации" 0men(471 знак., 05.07.2018 17:36)
- Прочитайте вашу цитату из стандарта внимательнее. В ней речь идёт об "объекте, который может быть модифицирован". В случае-же с локальной переменной volatile, никто её модифицировать не может, время её жизни ограничено временем выполнения функции. sladkoejka(420 знак., 05.07.2018 18:09 - 18:13)
- Вы не до конца перевели фразу. 0men(320 знак., 05.07.2018 18:21)
- Это фантазии, ничего подобного там не написано. Вы что-то прочитали между строк? - SciFi(05.07.2018 18:11)
- это не фантазии, а то что написано в стандарте. Читайте внимательнее, вы видите "may be modified in ways unknown to the implementation or have other unknown side effects"? Локальная переменная ограничена областью видимости по стандарту и никому sladkoejka(248 знак., 05.07.2018 18:23)
- Тогда было бы написано так: "An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects. When that is the case, any expression referring to such an object shall be SciFi(131 знак., 05.07.2018 18:27)
- Тем не менее, компиляторы удаляют код volatile указателей на не volatile данные, которые были удалены оптимизатором. И такое поведение признано соответствующим стандарту. Однако в вашей интерпретации такое удаление недопустимо, т.к. указатель sladkoejka(24 знак., 05.07.2018 18:50)
- Ссылку в студию. Если от объекта берётся адрес, и он реально используется, не надо удалять такой объект. - SciFi(05.07.2018 19:41)
- Вам лень открыть компилятор и попробовать? Почему я должен это делать за вас? sladkoejka(121 знак., 06.07.2018 15:03)
- Нещитово. Приведение к типу volatile - это совсем не создание объекта типа volatile. Попробуйте так: int x = 123; int *volatile y = &x; y = y; - SciFi(06.07.2018 15:11)
- Попробовал - результат тот-же самый, компилятор полностью удаляет код, вместе с объектом указателя, помеченного как volatile. См. скриншот. Дальнейшие изыскания предлагаю проводить самостоятельно. sladkoejka(06.07.2018 15:21)
- Вы попробовали не тот код, который я написал. Зачем так делать? Ну и, согласно информации по ссылке, это таки вражеский компилятор. SciFi(726 знак., 06.07.2018 15:36, ссылка)
- В вашем примере происходит модификация данных помеченных как volatile. Компилятор в этом случае не может быть уверен, что эту модификацию данных никто не увидит и она ни на что не повлияет. Поэтому код удалять не будет. sladkoejka(06.07.2018 15:48 - 15:53)
- Как пример, чтение внешней памяти может использоваться для сброса сторожа - замешивается на дешифраторе адрес и строб RD, а с выхода получаем сигнал сброса. Если указатель на volatile, то компилятор не должен оптимизировать обращение. Хотя Vit(261 знак., 06.07.2018 16:24)
- тут тоже согласен, для контроллеров это критично, поэтому даже чтение через volatile указатель удалять не стоит. Однако если volatile помечена локальная переменная, не являющаяся указателем, то её можно удалять. Т.к. хранится локальная переменная sladkoejka(95 знак., 06.07.2018 18:14)
- тут тоже согласен, для контроллеров это критично, поэтому даже чтение через volatile указатель удалять не стоит. Однако если volatile помечена локальная переменная, не являющаяся указателем, то её можно удалять. Т.к. хранится локальная переменная sladkoejka(95 знак., 06.07.2018 18:14)
- Дык в этом весь смысл и есть - отключается оптимизация обращения к данным помеченным как volatile, если же к ним обращения нет, то код вполне может выпиливаться. - =AlexD=(06.07.2018 16:01)
- Вот в другом компиляторе ничего не удаляется даже в вашем первом примере Bhg2(31 знак., 06.07.2018 15:26, ссылка)
- читайте до конца - или иметь другие неизвестные побочные эффекты - 0men(05.07.2018 18:25)
- локальная переменная доступна только внутри тела функции и только на время её выполнения. Если эта функция ничего не делает и никак не влияет на данные доступные другому коду, её можно спокойно удалять вместе со всеми volatile локальными sladkoejka(174 знак., 05.07.2018 18:32)
- фраза про побочные эффекты означает, что разработчик лучше знает, что делать компилятору. Компилятору нужно ничего не трогать. Стандарт об этом прямо говорит. Все ваши разделение на локальные и глобальные это только ваши фантазии, в стандарте 0men(22 знак., 05.07.2018 18:46)
- не нужно ничего выдумывать. Логика стандарта проста. Если объект никому не доступен, его можно удалять для оптимизации, т.к. это никак не повлияет на поведение системы. volatile действует только на данные, которые могут быть кому-то потенциально sladkoejka(65 знак., 05.07.2018 18:56)
- Это ты просто рафинированный программист, который тупо смотрит на код, и делает какие-то свои выводы, исходя из абстрактной вычислительной системы в вакууме. В реальной жизни у микропроцессора есть всякие там шины памяти, кеши, ПДП и пр. вещи, =AlexD=(486 знак., 06.07.2018 08:23 - 08:48)
- А чё спорить-то, сделайте иначе бомж(178 знак., 05.07.2018 22:49)
- Интересное вышло обсуждение. Ранее не задумывался, но мне близка позиция Сладкоежки. Эффект от исполнения кода наступает лишь в двух случаях: Nikolay_Po(1136 знак., 05.07.2018 22:11)
- логика стандарта совсем иная - если переменная имеет квалификатор volatile, то действия с этой переменной не подлежат оптимизации и должны быть представлены кодом как есть. Ни каких слов про доступнай, область видимости и жизни в стандарте нет - 0men(05.07.2018 19:00)
- компилятор НИКОГДА не удалит цикл с volatile переменной. Более того, он никогда не соптимизирует такой цикл - 0men(05.07.2018 15:18)
- Ну уж нет. Если он удалит переменную volatile, то это будет вражеский компилятор (хотя всякие бывают, конечно). Но тут __no_operation() убирает необходимость в volatile, потому что __no_operation() "вызывает побочные эффекты", т.е. не может быть SciFi(72 знак., 05.07.2018 15:06)
- while( n-- > 0 )!!! тоже самое, но без мутотени... while(n--) - seryy(05.07.2018 13:56)
- только размещается этот "корректный код" по некорректным адерсам (в таблицу векторов). Вследствии чего при заливке в реальный девайс такой "корректный код" глючит или вообще не работает. (как повезет, если LJMP неудачно ляжет в таблицу векторов, sladkoejka(24 знак., 03.07.2018 10:10)
- В начале 2000-х я нашел баг в ихнем компилере. Настрочил багрепорт, Codavr(188 знак., 30.06.2018 16:31 - 01.07.2018 13:19)
- Ну так посмотрите сгенерированный код. Какие проблемы? - Bill(01.07.2018 06:55)
- 1. Проверить в настройках проекта какой именно printf formatter выбран. Мелкий может не понимать %i (не уверен, но не удивлюсь). LightElf(77 знак., 30.06.2018 11:57)
- 1. a55ku(446 знак., 29.06.2018 14:06,
)
- Красная площадь? Зарядье? Нет, не слышал, и слышать не хочу --> - MBedder(12.09.2019 10:28 - 10:38, zen, ссылка, картинка, полностью)
- Интересная инфографика DVV(96 знак., 17.10.2019 17:03, Off, полностью)
- Вопрос физикам-очкарикам. Очки-хамелеоны с диоптриями, хранились в футляре несколько лет, в результате потемнели и не реагируют на свет. Как востановить свойства? Интернет не помогает, тк. засран рекламой. Нутром чую, надо либо нагреть, либо Иван(40 знак., 19.10.2019 09:57,
, Off, полностью)
- сегодня был на чипэкспо на пресне, выставка обмельчала (реально стало что-то вроде РАДЭЛ в Питере :(, но несмотря на это, сходил не зря. А именно Adept(4301 знак., 17.10.2019 20:17 - 21:26, Off, полностью)
- Кудесники из мордокниги запилили новый вид оптимизации - "пост-линк". Оптимизируют работу с железным кешем. "BOLT is a post-link optimizer developed to speed up large applications. It achieves the improvements by optimizing application's code ig_z(275 знак., 21.10.2019 00:05, dao, ссылка, полностью)
- Паяльники в библиотеке - Крок(18.10.2019 21:41 - 21:49, Off, ссылка, полностью)
- "Современный метод измерения импульсной характеристики и нелинейных искажений." (измерение импульсной характеристики и нелинейных искажений с помощью гармонического сигнала экспоненциально изменяющейся частоты. Точка опоры(1296 знак., 18.10.2019 20:44, dao, ссылка, полностью)
- Брексит опять того. Напомнило анекдот: "Англичанин уходит, не прощаясь. Еврей прощается, но не уходит..." - SciFi(19.10.2019 17:15, Off, полностью)
- Понадобилось сколхозить схемку на макетке. Просто стабильный источник напряжения с переключением между двумя уровнями. OPA171, опорник 2,5В на +, 2 триммера в обратную связь и два тумблера (коммутируют триммеры сверху и снизу). Работает. Но при SciFi(292 знак., 19.10.2019 19:19, SCH, полностью)
- Подскажите аналог DFL-8080UWC4/DFL-10080UWC4 или кто производит яркий светодиод(многокристальный) белого цвета свечения 8/10мм, 120град линза, 15-25Лм 150мА макс.? - Make_Pic(18.10.2019 14:36 - 19.10.2019 13:04, SCH, полностью)
- Совсем не в тему, но мало ли. Никто не имел дело с покупкой-продажей старых монет, типа такого : scorpion(367 знак., 14.10.2019 22:21, Off, полностью)
- вот этот сайт сообщали? - Лагунов(19.10.2019 19:13, ссылка)
- По более старым монетам - ИМХО, не стоит связываться. Похоже, китайцы наладили чеканку всего подряд. Держал в руках пару-тройку интересных экземпляров - одна монета была за год, в который, по справочникам, такие не чеканились вообще и с явно AlexG(197 знак., 19.10.2019 11:03)
- Ещё информация => - Bill(16.10.2019 05:19, ссылка)
- Невероятно харизматичный автор, претендующий на образовательный уровень курса истории монет. Но что-т сдулся. - bnb62(15.10.2019 16:29, ссылка)
- Нужно смотреть спецфорумы типа sovmint.ru или misyachniy(84 знак., 15.10.2019 08:30, ссылка)
- Есть хорошая фраза: "Тот, кто спрашивает сколько стОит, не может купить яхту". Случайные люди такие сделки не проворачивают, а для любителей есть вполне легальные точки в Москве с очень разумными ценами. - Крок(15.10.2019 00:34)
- "Чешуйки" - монеты времен Ивана Грозного меньше 500 руб. цена. Причем монета серебряная! - _volkanaft(14.10.2019 23:13,
)
- Вот с одного форума. Цены совсем другие, конечно, но все-таки Это_Я(14.10.2019 22:54)
- Перечитай анекдот про неуловимого Джо. Вопрос в спросе, а не в цене предложения. - Evgeny_CD(14.10.2019 22:41)
- Бредятина какая-то. Стёб, не иначе. - SciFi(14.10.2019 22:30)
- чем бы бесконтактно измерить расстояние в помещении? До 2-х метров, с точностью ~ 5мм и за время не более 30мс? Лазерная рулетка работает слишком медленно. ToF сенсоры не дают такой точности. Есть другие идеи (желательно, оптические)? - Sylvan(11.10.2019 12:16, SCH, полностью)
- камрады, всем большое спасибо. Я сделал вывод что прям готового решения по моему ТЗ нет, но есть очень близкое, что можно сделать на базе лазерной рулетки. - Sylvan(16.10.2019 12:32, ссылка)
- Учу пользоваться поиском на Сахаре. Очень дорого! -> --> На этом сайте есть совсем простые модели задешево. По точности не дотягивают, но удобнее рулетки. + два чипа от ST. Это совсем дешевый вариант. Evgeny_CD(15.10.2019 19:19 - 19:22, ссылка, ссылка)
- Вы хотите чуда от китайца, скатерть-самобранку, или щуку из проруби?:) Кто-же самостоятельно, в гараже, как Стив Джобс... отечественное творить будет? bnb62(382 знак., 15.10.2019 19:02, ссылка)
- Первую ссылку сам использовал Prokop(283 знак., 15.10.2019 18:13, ссылка)
- чем звук не устраивает? LordN(19 знак., 11.10.2019 19:10)
- Есть специализированные лазерные трекеры. - misyachniy(11.10.2019 12:34, ссылка)
- Месяц-два назад Терра в рассылках рекламировала СВЧ прибор и в качестве рекламы дальномер на нём. - Крок(11.10.2019 12:23)
- Крик души, мля. Решил оскоромиться и заюзать кубический куб с целью быстренько пошевелить моторчиком, не морща моск глубинной теорией. Скачал куба
нот, баса, альта, две скрипки, всякие либы, Motor Control SDK. Настроил, сгенерировал проект, LightElf(323 знак., 16.10.2019 18:32, ARM, полностью)
- Если-таки победишь, то напиши пожалуйста здесь же, как всё решилось. IMHO, труд сделает из индусов человека... а может и наоборот:) - bnb62(18.10.2019 21:27)
- Возможно, что вам стоило взять более свежую версию. Скажем, SetupSTM32CubeMX-5.4.0 только что позавчера вышел. Т.е. не пользоваться старыми версиями тех времен, когда софт для F3 выходил отдельно. Тем паче, что exti появился относительно недавно Ксения(31 знак., 16.10.2019 22:28)
- Оно и стоит. И ST Motor Control SDK 5.4.1. SDK рекомендует использовать STM32Cube_FW_F3_V1.10.0, но с ним не собирается из-за отсутствия файлов EXTI. Ежели использовать следующую версию STM32Cube_FW_F3_V1.11.0 - то куча неопределенных дефайнов. LightElf(106 знак., 17.10.2019 12:45)
- В таком случае вина лежит на не Кубе, а на авторах этого SDK. Здесь HAL выступает в качестве операционной системы, предоставляющей приложениям свои функции API. От версии к версии HAL расширяется и модифицируется. Скажем, в версии 1.10.0 exti еще Ксения(857 знак., 17.10.2019 20:40 - 21:08)
- Ну, то есть, индусы-погромисты из ST, писавшие Motor Control SDK, не знакомы с индусами-погромистами ST, писавшими куб. Это, конечно, многое объясняет. И лишний раз укрепляет во мнении, что проще один раз написать самому, чем использовать это LightElf(45 знак., 18.10.2019 08:24)
- Я так понял, к этому кубу впору судебную инстанцию пристёгивать. Чтобы разбиралась, кто виноват :-) SciFi(59 знак., 17.10.2019 20:42)
- В последнее время в области разработки ПО создалась ситуация, когда выгодней производить и выпускать ИМИТАЦИЮ, которая по факту не работает. В процесс вовлечены все, от рядовых программистов (которые говорят, мол нам же зарплату платят -- а за fk0(1985 знак., 17.10.2019 13:09)
- Ладно, если просто не собирается. Есть моменты похуже. evgeniy1294(339 знак., 17.10.2019 13:04 - 13:07)
- Как думаешь, почему у меня свой hal? - evgeniy1294(16.10.2019 18:44)
- Nikolay_Po будь осторожен ;-) misyachniy(116 знак., 19.10.2019 18:02, Tech, ссылка)