Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
1

FATFS и HardFault

22.07.2015, 16:51. Просмотров 3141. Ответов 1
Метки нет (Все метки)

Доброго времени суток!

Играюсь с LPC1769 (ARM M3). точнее прикручиваю Fat_FS. В процессе возникла проблемма с вылетом в Hord_Fault.
Возникает он из-за обращения в кусок памяти отмеченный в ДШ как "reserved". Происходит это из-за того что в
недрах ff.c появляется указатель на переменную типа FATFS которая какбэ лежит за пределами доступного диапазона адресов... вот:
картинка

Как можно порешать эту заковыку?

Как это происходит:

Хочу прочить что лежит в корне флешки: f_opendir, f_readdir( read - кручу в цикле пока не появится имя элемента равное "\0").
Когда в корне 1 файл все ок, но стоит кинуть больше как происходит вылет в Hord_Fault.

Тыкался шагами по программе в Jtag, обнаружил что выход за границы памяти довольно часто происходят.
Это я что-то не так пишу/настраиваю или это у многих возникает?

Юзаю либу от Morsh 9, 2015. в среде LPCXpresso.
Чтение и запись в файлы и создание файлов вроде ок-норм работают, что говорит о правильности работы функций работы с флешкой.
Проблема возникла именно при работе с папками:
кусок кода
Код
         LCD_Clear();

res = f_getcwd(FF_BUFFER, 120);               //__Определение активной дирректории
if(res != FR_OK)
{
MEMORY_MODE = 1;
return;
}

res = f_opendir(&FOLDER, DNAME);               //__Открытие активной дирректории
if(res != FR_OK)
{
MEMORY_MODE = 1;
return;
}

do
{
res = f_readdir(&FOLDER, &FINFO);        //__Чтение директории
if(res != FR_OK)
{
MEMORY_MODE = 1;
return;
}

LCD_Send_string(FINFO.fname);            //__Вывожу прочтенное имя на дисплей
temp += Str_len(FINFO.fname);             //__Увеличиваю переменную на длину имени файла (для контроля длинны записи на дисплей).
if((temp + 1)>20)                                //__Если уже "карй" дисплея то перехожу на другую строку и обнуляю temp.
{
temp = 0;
i++;
LCD_Goto_XY(0,i);
}
else
{   LCD_Send_sym( );                     //__Если "карй" дисплея еще не достигнут то вывожу пробел.
}

}
while(FINFO.fname[0] != \0);               //__Чтение дирректории до тех пор пока не найду все обьекты в ней.

MEMORY_MODE = 3;
briok;
Код далек от идела, оно и не надо это просто для того чтобы потестить все функции фатки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2015, 16:51
Ответы с готовыми решениями:

STM32F103C8 FATFS SPI EEPROM. Hardfault при вызове f_close
Доброго времени суток. Пытаюсь развернуть FATFS на мегабитной SPI EEPROM. Столкнулся с проблемой...

Отладка HardFault
С праздником, коллеги! Иногда у меня выскакивает HordFault. Где и почему? Ответ на этот вопрос...

STLink HardFault LR = 0xfffffff9
Народ, нужна помощь. Уже месяц периодически возвращаюсь к этому. Устройство на stm32f030f4p6. Благо...

Указатель на FLASH отправляет в HardFault
Всем привет. Понадобилось сохранять данные во Ftosh. Сделал uint32_t *p = (__IO uint32_t...

1
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 270
26.07.2015, 13:32 2
Вопрос решен. Допустил грубую ошибку в функции чтения, которая привела к выходам за пределы памяти.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2015, 13:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

[РЕШЕНО] STM32F4 HardFault и CooCox
Добрый вечер! Как найти причину HordFault в STM32F4? Среда отладки CooCox

STM32F103 + PL2303 падает в HardFault
Я считаю, что PL2303 и прочие от Лукавого и нужно их остерегаться. Короче, я счастливый...

stm32f0 bootloader - HardFault после __enable_irq
Пишу свой boottooder для контроллера stm32f030rc в среде разработки IAR. Основное приложение...

[Решено] bootloader, jump to application, hardfault
Доброго времени суток. Знаю, что подобное уже обсуждалось, однако то, что я вычитал, мне не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.