inventor 0 26 декабря, 2016 Опубликовано 26 декабря, 2016 · Жалоба Делаю простую програмку в ARM-linux для платки SAMA5d3-xplained смысл в том, что я хочу открыть файловую систему /sys/class/gpio, настроить GPIO на выходы и подавать на выход GPIO по желанию 0 или 1 написал функцию, которая инициализирует 8 выводов и устанавливает их в 1 однако при попытке запустить, получаю segmentation fault начал разбираться, понял, что проблема в том, что надо как то инициализировать стек вот так не работает: /** * Инициализация селекторов: все в 1-цу. Канал не выбран. * ПИНы нумеруются с 137 для PE9 до 144 для PE16 */ int sel_init(void) { int fd, i; char str_pin[8]; char str_dir[64]; char str_val[64]; int res = -1; do { /* echo pin# > /sys/class/gpio/export - открываем только для записи */ for (i = PIN_START; i < PIN_STOP; i++) { sprintf(str_pin, "%d", i); /* Номер пина */ sprintf(str_dir, "/sys/class/gpio/gpio%d/direction", i); /* направление пина */ sprintf(str_val, "/sys/class/gpio/gpio%d/value", i); /* Значение на выходе: 0 или 1 */ printf("INFO: pin%d\n", i); ***** а вот так - работает /** * Инициализация селекторов: все в 1-цу. Канал не выбран. * ПИНы нумеруются с 137 для PE9 до 144 для PE16 */ int sel_init(void) { int fd, i; static char str_pin[8]; static char str_dir[64]; static char str_val[64]; int res = -1; проблема даже возникает в том случае, когда я даже не вызываю функцию sel_init() - похоже она просто размещается в памяти и портит память как это исправить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться