|
stm32 и FatFs от Chan |
|
|
|
Mar 30 2017, 02:04
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797

|
Здравствуйте, Уважаемые коллеги. Снова нуждаюсь в Ваших подсказках. Наконец-то подключил файловую систему от Чана и решил её опробовать. Версия R0.11 от 02-02-2015. Пробую открыть файл и дописать в его конец данные: Код f_open(&MyFile, "stm32.txt", FA_WRITE | FA_OPEN_ALWAYS); f_lseek(&MyFile, f_size(&MyFile)); f_write(&MyFile, wtext, strlen((char *)wtext), &wbytes); По описанию, FA_OPEN_ALWAYS должна открывать файл, если он есть и создавать если его нет. Код выполняется, но: - если такой файл уже есть, то очень быстро, менее 1с. - если файла нет, то f_open и f_lseek срабатывают быстро, а вот f_write - долго, примерно минута. файл с данными появляются. С чем это может быть связано? Куда "копать"? _FS_NORTC пробовал (время не организовывал). портирование от Domen Puncer, немного переделал. Спасибо.
|
|
|
|
|
 |
Ответов
(45 - 59)
|
Oct 17 2017, 09:58
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Цитата(jcxz @ Oct 17 2017, 15:45)  А какова природа этих данных? Что это? Для чего нужно столько гиг? Просто интересно.... И если действительно нужно по несколько гиг в день, то может реально лучше использовать SSD или HDD? Фрам всего 512К, однако обновляться они могут по сотне и более раз на дню. На карту эти данные ВООБЩЕ не скидываются, только логи внешних воздействий. Чтобы представить аналогию: Загоняете машину в сервис. В лог пишется заказ-наряд - Иванов И.И. такого то числа, в такое то время загнал свой пепелац, с жалобами, что в машине что-то стучит, назад не едет, и не включается радио Радонеж. Мастер приемщий такой-то и прочая сопуствующая инфа, типа погода нелетная, слоны идут на север. Передают машину сервис-менам, и они уже детально пишут во FRAM - заменя ремня ГРМ, роликов натяжителя, регулировки такие-то, замена радиоприемника и еще сотня другая различных технчиеских штук, которые полностью и детально описывают что делают и происходит, включая видео-запись всего процесса ремонта, хотя самому Иванову на это пофиг, ему важно знать когда забрать и сколько заплатить. А теперь представим что таких Ивановых в день приходит пара тысяч, вместимость автосервиса(FRAM) десять тысяч и не все Ивановы сразу забирают авто, а некоторые так вообще забывают, и висят они во FRAM мертвым грузом, пока эвакуатор не увезет на штрафстоянку. Затем в сервисе отключается свет, ИБП отрубается, и когда включается, оказывается что не все менеджеры успели сохранить открытый заказ наряд(лог), сервисмены сделали часть работ, но не успели внести изменения в сервис-лист(FRAM). Под вечер приходит Иванов, забирать своё авто, а ему не могут внятно сказать что сделали, что не успели, и где вообще его авто, т.к. не успела сохраниться позиция рабочей станции. Иванов грустит, затем злится, и звонит руководителю, а тот нам, мол почему такая херня. Иванову#2 повезло больше, свет не отрубался, менеджеры выставили счет, на основе реально проведенного списка работ (FRAM), закрыли заказ наряд (лог), однако тот отчего-то топчет ножкой и возмущается "чойтадорога". Ему на фирменном бланке с печатями и подписями выкладывают детальную секундно/поминутную отчетность по работам(FRAM), видео на котором чумазые работяги снимали колесо вместо 1 часа все 4, т.к. Иванов#2 не дал секретку. Иванов не верит, просит показать видео с другой камеры, и показания свидетелей (резервная копия FRAM). И такую информацию ему предоставляют. Иванов возмущается, но платит, т.к. против фактов не попрешь. В какой-то момент менеджеры начинают думать - а давайте сделаем историю обслуживания каждого авто (вспоминаем про проходимость в количественных значениях). Директор, пожимая плечами говорит - а чего нет, вон вам комната(СД карта), делайте картотеку. Менеджеры радостно начинают таскать туда всю инфу об авто (вспоминаем про максимальную детализацию, включая видео). Приходится нанимать еще столько же менеджеров просто на доставку всей кипы бумаг, да и комната стремительно заполняется. Когда комната заполняется, приходится всю старую инфу просто выкидывать. Директор говорит - нафиг такое счастье, вся станция только и делает что таскает бумаги, храните только текущую инфу с рабочей станции, а при поступлении нового авто затирайте поверх. В это время ген-дир всей сети, попивая кофеек на карибах, решает глянуть, как там дела в одном из его отделений. Заходит на страничку (FTP/HTTP), смотрит краткую инфу(логи), т.к. он не отличит карбюратор от кардана и дальше довольно нежится на лазурном бережке. P.S. Прошу прощения за стиль, у дочки день рожденья)
|
|
|
|
|
Oct 17 2017, 18:55
|
Гуру
     
Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588

|
Цитата(Hold @ Oct 17 2017, 09:58)  Фрам всего 512К, однако обновляться они могут по сотне и более раз на дню. На карту эти данные ВООБЩЕ не скидываются, только логи внешних воздействий. вы должны записывать всё, что есть данные после утверждения документов заказчиком, да, некоторые данные можно удалить но лучше перевести в weak, чтобы удалить не сразу, но при недостатке места в порядке очереди
Сообщение отредактировал Огурцов - Oct 17 2017, 18:56
|
|
|
|
|
Oct 18 2017, 02:20
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Цитата(jcxz @ Oct 18 2017, 00:04)  Всё описанное - это функции компа (сервера) этой СТО. И решается очень просто. Причём тут ваше устройство? Или вы такой сервер пытаетесь на STM32 реализовать? Но зачем???  Не воспринимайте всё буквально) просто есть кучка важных данных, которые надо хранить, возможно несколько месяцев, но в некоторых случаях они могут часто перезаписываться вновь поступаемыми данными. Что бы вы выбрали в качестве энергонезависимого надежного носителя для часто обновляемых данных? Фрамка подходит как нельзя лучше. Вечный ресурс, мгновенная запись на скорости клока, побайтовый доступ.
|
|
|
|
|
Oct 18 2017, 11:38
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Ставить серьезные диски ради 512К (по факту их там около 490к) данных?) Нет никакого зоопарка. На FRAM рабочие данные, на FLASH - резервная копия, на SD - логи. Всё в меру.
|
|
|
|
|
Oct 18 2017, 13:14
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Hold @ Oct 18 2017, 14:38)  Ставить серьезные диски ради 512К (по факту их там около 490к) данных?) Нет никакого зоопарка. На FRAM рабочие данные, на FLASH - резервная копия, на SD - логи. Всё в меру. Ну тут, как говорят, хозяин-барин, но если уж так, то зачем буферировать-то все это - "SDRAM не бесконечна, 64 Мбайта на всё. Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, память GUI, куча lwIP и виртуальный диск в FatFs (помимо карточки)."??? Там и так крутится кэш(зеркало на чтение) AT45DB641 - особенно это, гда по вашим словам - резервная копия, или во т это "виртуальный диск в FatFs ", тоже непонятная шняга  Получается какой-то дисковый маниакализм, аля RAID5 в квадрате
Сообщение отредактировал mantech - Oct 18 2017, 13:17
|
|
|
|
|
Oct 18 2017, 16:52
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Кэши(зеркало) удобнее читать чем тянуть байты из AT45. Проц меньше нагружается да и скорость чтения выше. Можно и без них, просто всё будет помедленнее, заметно медленнее. Если sdram позволяет, отчего нет? Хотел сделать кэш еще и на запись, но не стал, хотя тоже ничего сложного. FRAM читается чуть медленнее ( клок максимум 40мгц, spi настроен на 22.5мгц), но там и объемы меньше. Библиотечка из 4х микрух делает единое адресное пространство в 512к, удобно работать. Виртуальный диск это просто область памяти в sdram отформатированной в Fat32 на случай отказа карты памяти, чтобы спасти хотя бы часть логов. Написано много, однако реализация простая и логичная. Диск в sdram делается вообще за 5 минут : объявляется буфер нужного размера в sdram и функции чтения записи, хоть через memcpy.
Сообщение отредактировал Hold - Oct 18 2017, 17:10
|
|
|
|
|
Oct 18 2017, 17:08
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(Hold @ Oct 18 2017, 19:52)  Кэши удобнее читать чем тянуть байты из AT45. Проц меньше нагружается да и скорость чтения выше. Виртуальный диск это просто область памяти в sdram отформатированной в Fat32 на случай отказа карты памяти. Написано много, однако реализация простая и логичная. Диск в sdram делается вообще за 5 минут : объявляется буфер нужного размера в sdram и функции чтения записи, хоть через memcpy. Это я в курсе, что РАМ диск проще простого, у самого такой в системе, но не для копий, а для быстрой загрузки картинок. Я писал про то, зачем делать в памяти буферизацию того, что у вас там в АТ45 й находится, по вашим словам там резервная копия, предполагается, что читаться она должна только в случае нештатной ситуации, а при нормальной работе туда только что-то редко когда записывается, или я что-то не так понимаю в понятии "резервная копия"??
|
|
|
|
|
Oct 18 2017, 17:15
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Эти самые резервные копии через фтп верхнее ПО раз в сутки сливает себе. Там же прошивка, которую также можно закачать/ прочитать. В общем чтение присутствует. Я понимаю ваш скепсис, я и сам, иногда оглядываясь, думаю - зачем так всё усложнять. Я привык рассчитывать на самые фиговые ситуации которые могут произойти. Всё что может отказать, когда нибудь откажет, невероятная ситуация, для которой должно сложиться вместе 100 разных факторов когда-нибудь обязательно произойдет.
Сообщение отредактировал Hold - Oct 18 2017, 17:24
|
|
|
|
|
Oct 18 2017, 17:41
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Сливаются копии FRAM а не прошивка. Но да, прошивку тоже можно слить, хотя штатно это не делается, т.к. как вы сказали - смысла нет, она не меняется. Бэкап fram хранится на случай ошибок fram и отсутствия связи с ПО компа, либо глюком ПО компа, чтобы восстановить работоспособность, откатиться на рабочую версию данных. Если ПО есть, то уже при серсисе вручную можно выбрать точку отката.
Сообщение отредактировал Hold - Oct 18 2017, 17:43
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|