мож я чето не понимаю, но мысль такая.
1. компилируется проектс опциями
-fprofile-generate -fprofile-arcs -fprofile-values и тд
2. в скомпирированный код добавляется профилировцик - поеэтому код будет значительно больше чем обычная сборка.
3. запускается процесс, за время работы накапливается профилировачная информация - сохраняется в файл с расширением gcda
4. опять запускается компиляция с опциями fprofile-correction
-fprofile-use -fbranch-probabilities -fprofile-values - уже используя статистику собранную профайлером из файла gcda.
вывод, как это провернуть на таргете с линуксом - понятно - главное чтоб в нем был интерфейс с возможностью записис вывода процесса куданить. а вот как на микроконтроллере это сделать - хрен его знает, мож под симулятором