Делаю простую програмку в ARM-linux для платки SAMA5d3-xplained
смысл в том, что я хочу открыть файловую систему /sys/class/gpio,
настроить GPIO на выходы и подавать на выход GPIO по желанию 0 или 1
написал функцию, которая инициализирует 8 выводов и устанавливает их в 1
однако при попытке запустить, получаю segmentation fault
начал разбираться, понял, что проблема в том, что надо как то инициализировать стек
вот так не работает:
CODE

/**
* Инициализация селекторов: все в 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);

*****


а вот так - работает

CODE
/**
* Инициализация селекторов: все в 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() -
похоже она просто размещается в памяти и портит память
как это исправить?