makc 58 4 hours ago Posted 4 hours ago · Report post 37 минут назад, ericN сказал: Может какой-нибудь директивой сказать компилятору, чтоб он не оптимизировал и сделал то, что от него просят? Ни как не могу заставить компилятор пройти по циклу 4 раза! Попробуйте скомпилировать модуль с отключенной оптимизацией (опция -O0). Quote Share this post Link to post Share on other sites More sharing options...
ericN 1 3 hours ago Posted 3 hours ago · Report post В 21.03.2023 в 14:15, makc сказал: Попробуйте скомпилировать модуль с отключенной оптимизацией (опция -O0). помогло. добавил #pragma GCC optimize("O0") static int ch423_probe(struct i2c_client *client) { Тело for стало выполняться как положено 4 раза. Quote Share this post Link to post Share on other sites More sharing options...
makc 58 1 hour ago Posted 1 hour ago · Report post 1 час назад, ericN сказал: помогло. добавил #pragma GCC optimize("O0") static int ch423_probe(struct i2c_client *client) { Тело for стало выполняться как положено 4 раза. Какая у вас версия компилятора, который творит такой беспредел? Quote Share this post Link to post Share on other sites More sharing options...
ericN 1 1 hour ago Posted 1 hour ago · Report post вообще собираю на хосте с помощью buildroot. в опциях билрута стоит версия 10. этим же buildroot-ом собрал кросскомпилятор для хоста. кросскомпилятор выдает следующее Цитата ~/tools/arm-rez2-linux-gnueabihf_sdk-buildroot/bin/arm-linux-gcc --version arm-linux-gcc.br_real (Buildroot 2021.11-1126-gfeb9185fc1-dirty) 10.3.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. думаю, что этим же gcc собирается ядро. ps удалил лишние printk, несколько раз собрал с прагмой O0 и без неё. результат подтвердился. с прагмой O0 цикл выполняется 4 раза, без неё - 5 раз. Quote Share this post Link to post Share on other sites More sharing options...