-
- "при статик работает".. значит - делается - POV(06.07.2025 21:38)
- получается массив пакованных структур - Vit(06.07.2025 21:46)
- не, всё там норм. никакой упаковки POV(1 знак., 06.07.2025 21:49, картинка)
- Коль структура так упорно применяется без выравнивания, то может
стоит попробовать временно вместо uint8_t num применить int num? - reZident(06.07.2025 23:03)
- мне тоже uint8_t по середине структуры не нравится, либо ее в
uint32_t либо в самый конец структуры. - Oman(07.07.2025 10:25)
- Я бы тоже постеснялся бы куда-попало совать uint8_t. Но у ТС проблема вылазит на нулевом элементе массива. Выравнивать массив уже предлагалось, но... - Vit(07.07.2025 11:15)
- робот говорит, что выравнивается POV(1 знак., 07.07.2025 10:53, картинка)
- Стопе! Это вообще не в ту степь! Проблема не в данных, а в
вовзращаемом указателе. Пофиг что в массиве хранится. - POV(06.07.2025 23:05)
- Покажите уже ассемблер, выдаваемый компилятором, особенно начало
TMR2_GLOBAL_IRQHandler, так будет понятнее - AlexBi(07.07.2025 08:44)
- Роботу скормил ассемблер. Возвращаются данные через r0, и вроде всё
верно. Но есть у робота подозрение что компилятор косячнул -
неверно смещения по элементами массива считает, хотя сам же
выравнивание и добавил. - POV(07.07.2025 11:02)
- Смотри, ты так последние мозги растеряешь - как робот скажет, так и сделаешь. Без успеха... - Nikolay_Po(07.07.2025 11:10)
- Это тот же робот, который вырезал аппендикс не с той стороны? :-) SciFi(1 знак., 07.07.2025 11:08, картинка)
- Роботу скормил ассемблер. Возвращаются данные через r0, и вроде всё
верно. Но есть у робота подозрение что компилятор косячнул -
неверно смещения по элементами массива считает, хотя сам же
выравнивание и добавил. - POV(07.07.2025 11:02)
- Кстати, меня несколько напрягают умолчания в if, где логическая операция отрицания (!) применяется к переменной, имеющей тип указателя. Я не настолько знаю язык, чтобы спрогнозировать, а не заменит ли
компилятор обращение к переменной указателя со значением NULL на
обращение к какой-то "левой" переменной, имеющей такое же значение
NULL? Вам ведь уже предлагали расписать эту операцию явным образом,
без умолчаний по автоматическому преобразованию типов данных. - reZident(06.07.2025 23:48)
- это нормально для всех вариантов СИ с мохнатых годов - POV(07.07.2025 00:04)
- "Блажен кто верует". Проверить-то ведь не долго. - reZident(07.07.2025 00:07)
- десятки проектов говорят, что "норм" - POV(07.07.2025 00:12)
- "Блажен кто верует". Проверить-то ведь не долго. - reZident(07.07.2025 00:07)
- это нормально для всех вариантов СИ с мохнатых годов - POV(07.07.2025 00:04)
- Доступ к элеентам разной размерности в невыровненной структуре может приносить чудные чудеса. Например, запись в байтовую num при нативной 32-разрядной системе портить 2-3 байта соседних элементов-указателей. - reZident(06.07.2025 23:11)
- для начала можно в map-файле поискать адрес массива для каждого случая - Vit(06.07.2025 23:11)
- Покажите уже ассемблер, выдаваемый компилятором, особенно начало
TMR2_GLOBAL_IRQHandler, так будет понятнее - AlexBi(07.07.2025 08:44)
- мне тоже uint8_t по середине структуры не нравится, либо ее в
uint32_t либо в самый конец структуры. - Oman(07.07.2025 10:25)
- а можно в занулении массива поставить просто нолик? - Vit(06.07.2025 22:00)
- Блин, пошагово всё идет как надо. Всего один элемент tasks
инилизирован. Указатель на него и возвращется. - POV(06.07.2025 22:11)
- Включи LTO и смотри предупреждения. Обычно, включение макс. оптимизации, даёт подсказки в виде предупреждений компилятора. - Nikolay_Po(07.07.2025 08:17)
- где-то ненулевое значение в поле timer заносится? из варианта с
continue получается, что таки заносится (иначе был бы переход на
проверку условия в for). не догоняю по этой логике нафига поле
num... но если по-шагово видно, то стОит после точки останова ещё
шажок сделать. можно и барьер __DSB() перед if влупить - Vit(06.07.2025 22:33)
- static решает? значит намудрил компилятор, я не вижу иного... POV(67 знак., 06.07.2025 22:36)
- Блин, пошагово всё идет как надо. Всего один элемент tasks
инилизирован. Указатель на него и возвращется. - POV(06.07.2025 22:11)
- Коль структура так упорно применяется без выравнивания, то может
стоит попробовать временно вместо uint8_t num применить int num? - reZident(06.07.2025 23:03)
- не, всё там норм. никакой упаковки POV(1 знак., 06.07.2025 21:49, картинка)
- получается массив пакованных структур - Vit(06.07.2025 21:46)
- "при статик работает".. значит - делается - POV(06.07.2025 21:38)