Связанные сообщения
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- Версия 3. Дышит в железе. Выяснилось, что проц спотыкается на
чтении слова без выравнивания, отсюда ".align 2". SciFi(1627 знак., 10.03.2025 10:16)
- А можно map-файл этого дела глянуть? - VladislavS.(10.03.2025 10:54)
- Вот с небольшими исправлениями. Пока в железе не запускал, на днях
буду оживлять эту таракашку. SciFi(1567 знак., 09.03.2025 16:31)
- Не в качестве придирок, а на обсудить: VladislavS.(351 знак., 10.03.2025 10:19)
- С прерываниями только начал разбираться. Увидел "__enable_irq():
mstatus |= 0x88" и сделал так не глядя. По поводу HPE я уже и не
помню, когда мне нужно было выгадать 0,5 мкс на входе в обработчик
прерывания, и немного лишнего кода на сохранение/восстановление
регистров в стеке не напрягает. Так что пока склоняюсь к
официальному GCC. Забавный факт: китайский форк GCC даже не умеет
дизассемблировать свои XW инструкции (если не врут в интернетах). - SciFi(10.03.2025 10:33)
- да, совсем наверно не видят - это стандартная команда? Zikon(1 знак., 10.03.2025 11:21, картинка)
- Не умеет "то-сё" это будет вечная проблема зоопарка RISC-V. Вот, например, он даже CSR-инструкции через раз дизассемблирует: VladislavS.(278 знак., 10.03.2025 10:53, картинка, картинка)
- С прерываниями только начал разбираться. Увидел "__enable_irq():
mstatus |= 0x88" и сделал так не глядя. По поводу HPE я уже и не
помню, когда мне нужно было выгадать 0,5 мкс на входе в обработчик
прерывания, и немного лишнего кода на сохранение/восстановление
регистров в стеке не напрягает. Так что пока склоняюсь к
официальному GCC. Забавный факт: китайский форк GCC даже не умеет
дизассемблировать свои XW инструкции (если не врут в интернетах). - SciFi(10.03.2025 10:33)
- Не в качестве придирок, а на обсудить: VladislavS.(351 знак., 10.03.2025 10:19)
- Тянуть memcpy и memset в стартап стоит только если в основной
прошивке они тоже используются. Иначе обычный цикл экономней будет. - VladislavS.(09.03.2025 14:14)
- Разве memory и подобное не инлайнятся современными компиляторами? - AlexBi(09.03.2025 20:43)
- Поведение современных компиляторов непредсказуемо. Вот такое может
быть: VladislavS.(1 знак., 09.03.2025 21:43, картинка)
- Требую пояснительную бригаду! Можно вкратце, что тут не так? - Nikolay_Po(10.03.2025 10:56)
- Всё так. Компилятор сделал рабочий код. Но сделал это неоптимальным
способом. Более новые версии такой муйнёй не страдают. - VladislavS.(10.03.2025 12:05)
- Хотя нет, страдают. Только теперь с ключом -О3. VladislavS.(186 знак., 10.03.2025 12:30)
- Не-не. Это компилятор сообщает юзверю, глядящему в дизассемблер:
"не тем занимаешься!". И он таки прав :-) - SciFi(10.03.2025 12:06)
- Пусть тогда уж придумают ключ деоптимизации. - VladislavS.(10.03.2025 12:17)
- Я хоть и не программист, но вижу вызов функции memcpy в кусочке программы, где нет (не предусмотрено программистом) использования этой функции. - reZident(10.03.2025 11:43)
- ! - Zikon(10.03.2025 11:40)
- Всё так. Компилятор сделал рабочий код. Но сделал это неоптимальным
способом. Более новые версии такой муйнёй не страдают. - VladislavS.(10.03.2025 12:05)
- Требую пояснительную бригаду! Можно вкратце, что тут не так? - Nikolay_Po(10.03.2025 10:56)
- Поведение современных компиляторов непредсказуемо. Вот такое может
быть: VladislavS.(1 знак., 09.03.2025 21:43, картинка)
- Отмечу +. Спасибо. Недавно буквально спасли эти "двое из ларца" - шедевральный же эффект! :) Ликбезте далее - красивому пределов нет. :) - bnb62(09.03.2025 15:00)
- 64 байта. Не дай бог так оголодать. - SciFi(09.03.2025 14:18)
- Из таких мелочей состоит вся наша эмбеддерская жизнь. Да и V003
совсем не жирный чип. - VladislavS.(09.03.2025 14:31)
- Из недавних, минимум пять тендеров конкуренты фейерически проиграли мне (с разрывом более 20%) закладывая дикий оверкилл по серверам. Слышу знакомы нотки. - Cкpипaч(09.03.2025 15:02)
- Не-не, меру надо знать. Это за гранью. Впрочем, настоящие мущщины
кодят в хексе, и их никто не сможет остановить :-) - SciFi(09.03.2025 14:52)
- +1 за меру. Когда-то давно заоптимизировал одно устройство и очень
долго потом страдал, потому что резервов для решения возникающих
проблем не было, а они всё возращались в ремонт и возвращались.
После этого стараюсь сдерживаться. - AlexG(09.03.2025 17:08)
- Ну это же стартап, его один раз для всех последующих проектов можно
нормально написать. Оттуда же: VladislavS.(86 знак., 09.03.2025 17:13, картинка)
- Вы очень круты в Си/Си++, но осмелюсь указать на то, что директивой
volatile вы создали неоптимизируемую переменную(и пофиг на область
видимости), которой выделена память и которой явно задано значение.
И проверяется она каждый цикл, потому что "вдруг вы из прерывания
её поменяли?". Или в чём тут тонкость? - Dingo(11.03.2025 05:42)
- Функция с volatile не мной написана, но зачем могу объянить. Когда происходит исключение и управление передаётся в эту функцию - код в ней зацикливается. Так как переменная volatile, то оптимизатор её не выкинул и значение можно отладчиком изменить и выйти из этого цикла. Зачем и куда автор так и не объяснил, но код это позволяет. Не "вдруг из прерывания", а отладчиком. - VladislavS.(11.03.2025 06:56)
- Можно остановиться в отладчике и выйти из цикла, записав в
переменную значение 0. - SciFi(09.03.2025 18:18)
- Я так и предполагал ниже по тексту. А можно сценарий такого действия узнать? - VladislavS.(09.03.2025 18:24)
- А реально это было нужно? Если попал в исключение,как из этой
кроличьей норы выбраться обратно и продолжить работу? - Andreas(09.03.2025 18:23)
- Можно по шагам дойти до места (ну, почти), откуда улетело в
HardFault. Без регистрации и СМС. - SciFi(09.03.2025 20:21)
- Ну выяснилось, что SP испоганен из-за выхода за границу массива и PC не тот восстановился, поправил код и стартуешь заново. Смысл высчитывать реальное значение, подставлять его в SP править PC и пытаться продолжить. Не понимаю, что я не понимаю. - Andreas(09.03.2025 20:45)
- Как этому помогает возможность выйти из trap? - VladislavS.(09.03.2025 20:39)
- Можно по шагам дойти до места (ну, почти), откуда улетело в
HardFault. Без регистрации и СМС. - SciFi(09.03.2025 20:21)
- Если это не РТОС, то с десятой строки говнокода посылаю
всехнахер... :) - bnb62(09.03.2025 17:25)
- А что так? Две функции делают одно и то же. Одну нах, а другую нет? - VladislavS.(09.03.2025 17:31)
- Даже я вижу, что они делают не совсем одно и то же. Скорее даже -
совсем разное. - Toчкa oпopы(09.03.2025 17:41)
- Только не рассказывайте, что было задумано под отладкой руками
поменять w=0 и выйти из прерывания HardFault. Не верю! - VladislavS.(09.03.2025 17:46)
- Ну откуда мне знать, что было задумано? - Toчкa oпopы(09.03.2025 18:11)
- Что тогда имели в виду, говоря что они делают разное? - VladislavS.(09.03.2025 18:17)
- Одна ловушка - безвыходная. Из другой, теоретически, - можно выйти. Зачем - вопрос к разработчикам. - Toчкa oпopы(09.03.2025 22:17)
- Что тогда имели в виду, говоря что они делают разное? - VladislavS.(09.03.2025 18:17)
- Это печалит. Вы наверное программист? :) - bnb62(09.03.2025 17:51)
- На питончике дочке ДЗ пару раз помогал делать. - VladislavS.(09.03.2025 17:55)
- Дык вот, в отличии от прочих придуманных Систем мы, железячники,
имеем право и на софтовый, по тому же прерыванию hard-pizdec,
сделать перезапуск, а то и на углубленную схемотехнику в виде
"спящего алабая", абсолютный reset. А в случае отказа и на этом...
передать все функции резервному комплекту, второму из трех, пока
оправданных смыслом. :) Пишите код аккуратно! - bnb62(09.03.2025 18:11)
- Как этому помогает первая функция и мешает вторая? - VladislavS.(09.03.2025 18:14)
- На самом деле Танцору не мешают (если он с большой буквы умений).
На сей день сложился комплекс аппаратных возможностей камней
требуемых эмбеддерами для исполнения поставленных задач. Уровень
планки? А требуется теперь не только аппаратные = конвейерные
рутины, но и логгирование в очень мизерных квантах. И в этом
победят достойные. Наши - определенно. Но вот... шелухи бы
отковырять, как с репчатого лука, да и порезать надо... - bnb62(09.03.2025 18:44)
- Жёстко! Я уж думал ардуинку из стола достать и мигалку на ёлку
наконец сделать. А тут вон оно чё. - VladislavS.(09.03.2025 18:48)
- Когда на бывшей работе заказчик, он же директор, он же дизайнер
изделия потребовал сделать двадцать дискретов уставки при готовой
шкале десять, мотивируя идеей мигающего состояния светодиодов
половинных значений, я сделал не только ШИМированную анимацию
включения изделия, а и компенсацию нелинейности светимости
светодиодов при линейной ШИМ коммутации. Иначе неприятно гасли при
низких значениях синуса модуляции ШИМ. Получилось вполне красиво.
Но даже менеджеры не bnb62(121 знак., 09.03.2025 19:10 - 17.03.2025 16:59)
- Хотите сказать, что свет в кинотеатре не медленным выниманием вилки
из розетки плавно гасят? - VladislavS.(09.03.2025 19:49)
- Не, там сечением провода регулируют. При помощи пасатижей :) - Cкpипaч(09.03.2025 19:56)
- А я в тендер вместо сервака с RAID-дисками засунул ПЛК c архивом на
SD-карточке. И расчетами показал что ее с запасом хватит на
обещанные пять лет архива. - Cкpипaч(09.03.2025 19:18)
- Ты даже восхитится не успеешь за обещанные 5 лет RAID. Таких
проектантов надо IMHO "в поликлинику для опытов" - (с)Кот Матроскин
:). - bnb62(09.03.2025 19:27)
- А что не так? У меня есть SD-шки и с сильно большим uptime. Кроме
того, нет никаких религиозных запретов делать бэкап прямо на ходу.
Даже инкрементальный бэкап, каждые полчаса, можно запилить. - Cкpипaч(09.03.2025 19:55)
- Хе, хе... Но даже FRAM непригодна. Знаешь же "бобину" - катушку зажигания. Магнето-ли в бензопиле? Так вот, эффект Разрыва Среды, гораздо более нагляден и исполнен в социумах ... Напряжения порождают ток в сопротивлениях, конденсаторы и индукторы копят до поры лишь. И не дай бог разрыву несогдасности... Если на другом конце длинной линии отсутствует Терминатор (120R0), то там... может исчезнуть его причина. И совсем не про эту физику речь. Другую данность нельзя bnb62(42 знак., 17.03.2025 21:03)
- А что не так? У меня есть SD-шки и с сильно большим uptime. Кроме
того, нет никаких религиозных запретов делать бэкап прямо на ходу.
Даже инкрементальный бэкап, каждые полчаса, можно запилить. - Cкpипaч(09.03.2025 19:55)
- Ты даже восхитится не успеешь за обещанные 5 лет RAID. Таких
проектантов надо IMHO "в поликлинику для опытов" - (с)Кот Матроскин
:). - bnb62(09.03.2025 19:27)
- Хотите сказать, что свет в кинотеатре не медленным выниманием вилки
из розетки плавно гасят? - VladislavS.(09.03.2025 19:49)
- Когда на бывшей работе заказчик, он же директор, он же дизайнер
изделия потребовал сделать двадцать дискретов уставки при готовой
шкале десять, мотивируя идеей мигающего состояния светодиодов
половинных значений, я сделал не только ШИМированную анимацию
включения изделия, а и компенсацию нелинейности светимости
светодиодов при линейной ШИМ коммутации. Иначе неприятно гасли при
низких значениях синуса модуляции ШИМ. Получилось вполне красиво.
Но даже менеджеры не bnb62(121 знак., 09.03.2025 19:10 - 17.03.2025 16:59)
- Жёстко! Я уж думал ардуинку из стола достать и мигалку на ёлку
наконец сделать. А тут вон оно чё. - VladislavS.(09.03.2025 18:48)
- На самом деле Танцору не мешают (если он с большой буквы умений).
На сей день сложился комплекс аппаратных возможностей камней
требуемых эмбеддерами для исполнения поставленных задач. Уровень
планки? А требуется теперь не только аппаратные = конвейерные
рутины, но и логгирование в очень мизерных квантах. И в этом
победят достойные. Наши - определенно. Но вот... шелухи бы
отковырять, как с репчатого лука, да и порезать надо... - bnb62(09.03.2025 18:44)
- Как этому помогает первая функция и мешает вторая? - VladislavS.(09.03.2025 18:14)
- Дык вот, в отличии от прочих придуманных Систем мы, железячники,
имеем право и на софтовый, по тому же прерыванию hard-pizdec,
сделать перезапуск, а то и на углубленную схемотехнику в виде
"спящего алабая", абсолютный reset. А в случае отказа и на этом...
передать все функции резервному комплекту, второму из трех, пока
оправданных смыслом. :) Пишите код аккуратно! - bnb62(09.03.2025 18:11)
- На питончике дочке ДЗ пару раз помогал делать. - VladislavS.(09.03.2025 17:55)
- Ну откуда мне знать, что было задумано? - Toчкa oпopы(09.03.2025 18:11)
- Только не рассказывайте, что было задумано под отладкой руками
поменять w=0 и выйти из прерывания HardFault. Не верю! - VladislavS.(09.03.2025 17:46)
- Даже я вижу, что они делают не совсем одно и то же. Скорее даже -
совсем разное. - Toчкa oпopы(09.03.2025 17:41)
- А что так? Две функции делают одно и то же. Одну нах, а другую нет? - VladislavS.(09.03.2025 17:31)
- Вы очень круты в Си/Си++, но осмелюсь указать на то, что директивой
volatile вы создали неоптимизируемую переменную(и пофиг на область
видимости), которой выделена память и которой явно задано значение.
И проверяется она каждый цикл, потому что "вдруг вы из прерывания
её поменяли?". Или в чём тут тонкость? - Dingo(11.03.2025 05:42)
- Ну это же стартап, его один раз для всех последующих проектов можно
нормально написать. Оттуда же: VladislavS.(86 знак., 09.03.2025 17:13, картинка)
- +1 за меру. Когда-то давно заоптимизировал одно устройство и очень
долго потом страдал, потому что резервов для решения возникающих
проблем не было, а они всё возращались в ремонт и возвращались.
После этого стараюсь сдерживаться. - AlexG(09.03.2025 17:08)
- Из таких мелочей состоит вся наша эмбеддерская жизнь. Да и V003
совсем не жирный чип. - VladislavS.(09.03.2025 14:31)
- Разве memory и подобное не инлайнятся современными компиляторами? - AlexBi(09.03.2025 20:43)
- А где вызовы конструкторов глобальных экземпляров классов? Я вот
пользуюсь библиотечным _start, там все есть. Кроме инициализации
.text - но это как раз несложно самомму написать. - il-2(09.03.2025 09:42)
- мне плюсы без надобности, звыняйте - SciFi(09.03.2025 09:46)
- Версия 3. Дышит в железе. Выяснилось, что проц спотыкается на
чтении слова без выравнивания, отсюда ".align 2". SciFi(1627 знак., 10.03.2025 10:16)