реклама на сайте
подробности

 
 
> Как указать размер стека и кучи в Makefile
inventor
сообщение Dec 26 2016, 12:56
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Делаю простую програмку в 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() -
похоже она просто размещается в памяти и портит память
как это исправить?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 01:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016