ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- Вот Constantin24(1 знак., 15.09.2022 14:40, картинка)
- Отбой, это не баг. Компилятор считает, что адрес не может быть
нулевым, потому что нулевой указатель не может указывать ни на
какой объект, в том числе __CACHE_REGION_SIZE. Вот такая фигня. - SciFi(15.09.2022 15:30)
- 1) Можете пояснить более подробно(или ссылку на чтение), никак не
могу понять ваше объяснение: почему адрес не может быть нулевым? Constantin24(166 знак., 15.09.2022 16:04)
- В стандарте языка Си написано про нулевой указатель. Писать никому
не надо, они скажут "не баг, а фича" и будут правы с формальной
точки зрения, да и по сути, наверное, тоже. SciFi(304 знак., 15.09.2022 16:50)
- спасибо за инфу! - Constantin24(15.09.2022 17:28)
- В стандарте языка Си написано про нулевой указатель. Писать никому
не надо, они скажут "не баг, а фича" и будут правы с формальной
точки зрения, да и по сути, наверное, тоже. SciFi(304 знак., 15.09.2022 16:50)
- Пробовал и таким образом: Constantin24(249 знак., 15.09.2022 15:36)
- Ну да, volatile точно победит, потому что компилятор считает, что
содержимое такого объекта может измениться в любой момент. Был не
ноль, а потом стал ноль: SciFi(116 знак., 15.09.2022 15:39)
- что на счет uint32_t size = (uint32_t)&__CACHE_REGION_SIZE; - Constantin24(15.09.2022 15:44)
- Никак не пойму "физический смысл" интерпретации размера (size) как
адреса. Где-то тут ошибка. Или это перечень адресов, по которым
указаны размеры областей кэша? - Nikolay_Po(15.09.2022 17:19)
- Аналогично, все взято с примеров. Дело в то, что
__CACHE_REGION_SIZE указан в LinkerScript типа flash_debug.ld.
Чтобы получит ее значение нужно выполнить такие действия. - Constantin24(15.09.2022 17:27)
- Получайте напрямую, как целое. В конце концов, вы не адрес объекта
получаете, а размер. Единицы измерения - под вопросом, но, главное,
не нужно обращаться к параметру как к указателю. Нет для этого
никаких предпосылок. ПМСМ. - Nikolay_Po(15.09.2022 17:32)
- Вы не в теме. - SciFi(15.09.2022 17:33)
- представленный код от производителя - Constantin24(15.09.2022 17:33)
- Это не снимает моих вопросов. - Nikolay_Po(15.09.2022 18:54)
- Тема раскрыта в мануале >>> SciFi(1 знак., 15.09.2022 19:33, ссылка)
- Спасибо. Нарочно вас провоцировал, чтобы ткнули носом. Собственно,
из последнего примера: Nikolay_Po(779 знак., 15.09.2022 20:11)
- Там же есть пример "_foo = 1000". И дальше сами решайте, будет это адрес 1000 или 1000 попугаев. И то, и другое имеет право на жизнь. Ограничение "только адреса" придумали вы сами, вам и искать подтверждение этому. В своей практике передавал таким способом произвольные числа, полёт нормальный. - SciFi(15.09.2022 20:16)
- Спасибо. Нарочно вас провоцировал, чтобы ткнули носом. Собственно,
из последнего примера: Nikolay_Po(779 знак., 15.09.2022 20:11)
- Тема раскрыта в мануале >>> SciFi(1 знак., 15.09.2022 19:33, ссылка)
- Это не снимает моих вопросов. - Nikolay_Po(15.09.2022 18:54)
- Дык у них пример с подставой. Они тоже всего лишь люди. В качестве
костыляминимальной правки я бы сделал так, как указал выше: SciFi(1 знак., 15.09.2022 17:31, ссылка)
- Получайте напрямую, как целое. В конце концов, вы не адрес объекта
получаете, а размер. Единицы измерения - под вопросом, но, главное,
не нужно обращаться к параметру как к указателю. Нет для этого
никаких предпосылок. ПМСМ. - Nikolay_Po(15.09.2022 17:32)
- Аналогично, все взято с примеров. Дело в то, что
__CACHE_REGION_SIZE указан в LinkerScript типа flash_debug.ld.
Чтобы получит ее значение нужно выполнить такие действия. - Constantin24(15.09.2022 17:27)
- Если arr объявлен как массив (char arr[]), то "arr" и "&arr" — это одно и то же. - SciFi(15.09.2022 15:55)
- Никак не пойму "физический смысл" интерпретации размера (size) как
адреса. Где-то тут ошибка. Или это перечень адресов, по которым
указаны размеры областей кэша? - Nikolay_Po(15.09.2022 17:19)
- что на счет uint32_t size = (uint32_t)&__CACHE_REGION_SIZE; - Constantin24(15.09.2022 15:44)
- Ну да, volatile точно победит, потому что компилятор считает, что
содержимое такого объекта может измениться в любой момент. Был не
ноль, а потом стал ноль: SciFi(116 знак., 15.09.2022 15:39)
- 1) Можете пояснить более подробно(или ссылку на чтение), никак не
могу понять ваше объяснение: почему адрес не может быть нулевым? Constantin24(166 знак., 15.09.2022 16:04)
- Похоже на баг, godbolt показывает похожую фигню в версиях gcc 9+, в
версии gcc 8 вроде бы нормально >>> SciFi(1 знак., 15.09.2022 14:46, ссылка)
- спасибо, куда писать в таких ситуациях? - Constantin24(15.09.2022 14:49)
- Если это GNU Arm Embedded Toolchain, то сюда >>> SciFi(1 знак., 15.09.2022 15:24, ссылка)
- спасибо, куда писать в таких ситуациях? - Constantin24(15.09.2022 14:49)
- Отбой, это не баг. Компилятор считает, что адрес не может быть
нулевым, потому что нулевой указатель не может указывать ни на
какой объект, в том числе __CACHE_REGION_SIZE. Вот такая фигня. - SciFi(15.09.2022 15:30)
- Вот Constantin24(1 знак., 15.09.2022 14:40, картинка)