Перейти к содержанию
    

Два вопроса по FatFS - смена диска и проверка состояния диска.

On 3/19/2021 at 6:04 PM, murmur said:

Как бороться с этой бедой?

Добавлю - если карта единожды извлечена, то потом,  даже если ее вставить,  SD_STATE=BSP_SD_GetCardState(); всегда выдает ошибку...

Всегда есть топорный способ.
Очистить все переменные программного модуля и освободить всю занятую им динамическую память. 
После чего все можно стартовать как после сброса.  
Чтобы все делать без напряга  в линкере назначить отдельную секцию  памяти для программного модуля.
И стирать используя границы секции. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, AlexandrY said:

Чтобы все делать без напряга ...

Это и без всяких секций можно сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, murmur сказал:

я стараюсь сделать дружественный для пользователя интерфейс. В окошке иконки двух носителей, хочется, чтобы отображалось состояние обоих, с изменением иконки. А состояния 3 - нет носителя, носитель есть и с ним не все в порядке, носитель есть и с ним все в порядке.

у меня к Вам вопрос - а если пользователь надумает вставить USB флешку, не вынимая при этом SD карту, как тогда поведет себя ваш алгоритм?

Если конкретно мой - работать будет с тем, что последнее вставлено. Ну коли уж так, то и делайте по правилам и до конца - если вставлена сд и усб, то и работать они должны одновременно, а то получается так, поставили мотор на каждое колесо, но провода подвели только к 2м, а вторые 2 - через рубильник, который должен кто-то включать, получается как-то не очень "дружественно", не так ли?)))

10 часов назад, murmur сказал:

За ваши советы по архитектуре спасибо, но я сделаю по своему.

Да лишь бы в радость, но надо стараться делать, как правильно, иначе потом, когда забудете, что тут понаписали и сколь костылей вставили - потом придется все заново писать... Хотя может это и к лучшему в данной ситуации.

9 часов назад, AlexandrY сказал:

Всегда есть топорный способ.

Тут как раз такой тс-ом и представлен, а ваш - это просто ужас....Тихий..

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, x893 said:

Это и без всяких секций можно сделать.

Что - это? Соревнуемся в телепатии? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, AlexandrY said:

Что - это? Соревнуемся в телепатии? :biggrin:

Я пока научился вызывать телефонный звонок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не буду создавать отдельную тему.

Похоже проблема с неким конфликтом памяти, ибо

GGcAWYWl.png?download=1&name=%D0%A1%D0%B

 

Такой вот мусор попадает в SDFatFS на этапе, когда инициализируется USB, еще ДО ТОГО, как к SDFatFS идет обращение.

Естественно, когда я потом пишу     if (f_mount(&SDFatFS,  (TCHAR const*)SDPath, 0) == FR_OK), то обращение идет не к SD карте, а куда-то на Марс....

Отследить, где происходит эта поломка брейкпоинтами не удалось, библиотека USB в HAL живет своей жизнью.

У меня такой вопрос - а можно ли как-то в отладчике KEIL  перехватить обращение к конкретной переменной? Чтоб программа останавливалась при изменении данной переменной и можно было бы отследить, где это произошло?

Я тупо поиском по тексту проекта прошлась - нигде нет обращения, кроме участка кода, который запскается значительно позднее.

Пока что ради эксперимента я завела политически нейтральную переменную DISK_FatFS и обращаюсь к дискам только через нее.  Но все же гложет тот факт, что в памяти какой-то барабашка завелся....

Изменено пользователем murmur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, xvr said:

Хм, а то, что адреса обоих структур у вас NULL - не смущает?

Просто неудачный этап для снятия скриншота выбрала. Когда появляется правильный адрес, то туда тоже попадает мусор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...