Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 26.03.2013, 23:40  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от Frensis777 Посмотреть сообщение
для записи/чтения 1 байта будет тратиться весь сектор. При записи/чтении очередного байта будет использоваться уже следующий сектор. В итоге, большие части секторов останутся незанятыми информацией
глупость
речь идет о последовательности операций - чтение сектора-модификация байта-запись сектора. при необходимости записи еще одного байта и свободном пространстве в данном секторе повторяется цикл для байта с адресом+1.
умные люди используют "образ" сектора в озу и издеваются над ним, производя запись посекторно
Реклама:
jump вне форума  
Непрочитано 27.03.2013, 00:07  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от Frensis777;611136Я такого не говорил. Я говорил [B
побайтный[/B]:
Безусловно я оговорился. Побайтные операции.
Цитата:
сектор?
Разве это не блок?
Сектор, блок, страница - какая разница, как назовете. Важен размер.
Цитата:
Но разве это будет рационально, когда стоит задача записи информации побайтно?
Механизм записи во флеш отличается от записи в статическую память. Время записи значительно дольше времени чтения. Принимая во внимание, что время записи одного байта сравнимо со временем записи одной страницы, выводы о рациональности сделайте сами. Чем больше размер страницы, тем выше будет скорость записи в целом. Время же записи определяется классом карты. Класс 2 намного медленнее, скажем, класса 6. А класс 10 - вообще супер! И цены на них как показатель скорости.
Цитата:
Т.е. правильно ли я понял, что используя данные функции, приведенные мною в 1 посте, для записи/чтения 1 байта будет тратиться весь сектор.
Вы с механизмом хеширования знакомы? Вы читаете за раз страницу. Извлекаете из нее нужный вам байт. Принимая во внимание последовательное расположение байтов, незачем делать повторное чтение того же сектора. Читаете следующий байт из уже сосчитанного буфера. Контролируя его границу. Организация размещения байтов при сохранении вам подвластна. Незачем их разбрасывать без нужны по всему адресному пространству. Это нужно в других случаях, которые у вас пока не возникали.
Цитата:
При записи/чтении очередного байта будет использоваться уже следующий сектор.
Зачем?!! Очередной байт уже среди 512 сосчитанных!
Цитата:
В итоге, большие части секторов останутся незанятыми информацией.
Это ваша информация. И это вы ее размещаете в карте. Как разместите, так и будет. Обычно делают так. Заполняют некий буфер в ОЗУ 512-ю байтами, потом закидывают буфер в карту, стартует процесс записи, а в это время пишется в другой буфер. Процесс без разрыва во времени. Если же времени много, то можно и прерываться. Все зависит от ваших условий.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.03.2013, 10:29  
Valentin44
Частый гость
 
Регистрация: 20.01.2012
Сообщений: 16
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Valentin44 на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

А подскажите, при включении поддержки карты, используется много ОЗУ. Если ли уже в выделенном ОЗУ 512 байт для сектора который читается?
Мне надо записывать поток данных, для этого я делаю два буфера по 312 байт (больше нет ОЗУ), и пока один наполняется - второй сохранаю на карту.
И все бы хорошо, но катастрофически не хватает памяти для других задач (МК мега128 заменить мегу невозможно).
Вот и интересно, можно ли как-то оптимизировать задачу, что бы высвободить ОЗУ.
Уменьшать буфера не могу, если сделать на 32 байта меньше - уже не успеваю их сохранять.
Valentin44 вне форума  
Непрочитано 27.03.2013, 11:48  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от Valentin44 Посмотреть сообщение
А подскажите, при включении поддержки карты, используется много ОЗУ. Если ли уже в выделенном ОЗУ 512 байт для сектора который читается?
Мне надо записывать поток данных, для этого я делаю два буфера по 312 байт (больше нет ОЗУ), и пока один наполняется - второй сохранаю на карту.
И все бы хорошо, но катастрофически не хватает памяти для других задач (МК мега128 заменить мегу невозможно).
Вот и интересно, можно ли как-то оптимизировать задачу, что бы высвободить ОЗУ.
Уменьшать буфера не могу, если сделать на 32 байта меньше - уже не успеваю их сохранять.
Если разговор о CV only - я пас. Не люблю, когда что-то там за меня распределяет. Вот потом и выясняй, где там что и каких размеров. ПОчти как у Васика..
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.03.2013, 12:56  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от Frensis777 Посмотреть сообщение
Разве это не блок?
Имелся ввиду блок конечно, чтобы не путать с сектором, который на дисках, он был назван "сектор карты". Блок, блок...

Сообщение от Frensis777 Посмотреть сообщение
Где, в каких источниках можно ознакомиться с описанием и применением низкоуровневых операций(не FAT) для выполнения действий с вычисления адресации и т.п?
Вычисление адресации нафик не нужно, если нет планов работать с этой картой, как с FAT-диском. То есть, если карта будет использоваться только в том устройстве, о котором сейчас речь, то можно вести запись, например, начиная со второго физического блока, а в первом хранить информацию о том, сколько данных было записано. Получится самодельная, предельно упрощенная ФС с одним файлом. Вообще говоря, можно даже извернуться на первое время и работать так с картой, несущей на себе ФС, правда - с некоторой подготовкой. Нужно отформатировать карту и создать на ней файл с размером, равным всему объему ФС на карте. После этого нужно вычислить номер блока карты, на который приходится начало файла, и возможно - смещение внутри блока (если он больше 512 байт, то первый сектор файла может не совпасть с началом блока) и использовать полученные координаты в программе для м/к. Только тут размер записанных данных лучше хранить в начале файла, чтобы не портить данные ФС.
Правда, я бы всё же рекомендовал не отказываться от работы с ФС на карте - неразумно это, так как лишает возможности прямого и ничем не замутнённого обмена файлами с другими устройствами. Карты с FAT понимают все или почти компьютеры - зачем лишать себя такой свободы?
В CodeVision, библиотека работы с SD/FAT - цельнотянутая от Chan'а, поэтому именно там и следует искать ответ на все вопросы, касающиеся работы с картой и с ФС.
В частности, чтобы писать и читать побайтно, достаточно пользоваться не низкоуровневыми функциями работы с картой, а функциями чтения из файла / записи в файл:
Код:
FRESULT f_read (
  FIL* fp,     /* [IN] File object */
  void* buff,  /* [OUT] Buffer to store read data */
  UINT btr,    /* [IN] Number of bytes to read */
  UINT* br     /* [OUT] Number of bytes read */
);
FRESULT f_write (
  FIL* fp,          /* [IN] Pointer to the file object structure */
  const void* buff, /* [IN] Pointer to the data to be written */
  UINT btw,         /* [IN] Number of bytes to write */
  UINT* bw          /* [OUT] Pointer to the variable to return number of bytes written */
);
При этом ФС сама определит момент перехода через границу сектора и запишет/считает нужный сектор прозрачно для пользователя.

Сообщение от Valentin44 Посмотреть сообщение
А подскажите, при включении поддержки карты, используется много ОЗУ. Если ли уже в выделенном ОЗУ 512 байт для сектора который читается?
Да, свой буфер у библиотеки есть. Смотрите в первоисточник, в частности, там есть раскладка ресурсов в разных конфигурациях.

Обоим: у Чана есть готовые примеры использования его либы, работают с полпинка. Рекомендую начать с них:

__________________
There's always more than one way to skin a cat.
tempora вне форума  
Сказали "Спасибо" tempora
kollega (28.03.2013)
Непрочитано 27.03.2013, 13:11  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от tempora Посмотреть сообщение
В частности, чтобы писать и читать побайтно, достаточно пользоваться не низкоуровневыми функциями работы с картой, а функциями чтения из файла / записи в файл:
Приведенные ниже две функции есть часть файловой системы. В любом случае они вызывают функции более низких уровней, не избавляют от механизма кеширования сектора (чтение-модификация-запись), лишь делая его невидимым для "программера". И лишний раз дают основание думать, что в карту пишется одиночный байт.
В споры о том, нужно ли знать низкоуровневые процедуры (отягощающие светлый разум кодописателя) не вступаю. Имею твердое убеждение, что надо. Оно незыблимо.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.03.2013, 13:30  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от ut1wpr Посмотреть сообщение
они вызывают функции более низких уровней, не избавляют от механизма кеширования сектора
Кого-то может и не избавляют, а программиста именно избавляют, так как ему не нужно писать соответствующий код самостоятельно. В чём, собственно, и состоит смысл библиотек функций, классов и т.д.
Понимать что творится в библиотеках, разумеется, нужно, а вот писать всё это самому, невзирая на наличие библиотек - чаще всего не нужно.
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 27.03.2013, 13:57  
j-Roger
Гражданин KAZUS.RU
 
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 716
Сказал спасибо: 363
Сказали Спасибо 797 раз(а) в 371 сообщении(ях)
j-Roger на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Valentin44,
Что-то катастрофически отожрало все ОЗУ... Windows for AVR?..
Atmega128 вроде как поддерживает "...up to 64Kbytes Optional External Memory Space", если уж не хватает внутренних 4КБайт ОЗУ для 1-2 буферов по 512 байт.

в постах ув. ut1wpr (без обид) так и читается между строк "Пиши на АСМе". Впрочем, тогда при поддержке карты у атмеги еще останется 70% ОЗУ, которого так катастрофически не хватает для других задач.
j-Roger вне форума  
Непрочитано 27.03.2013, 14:02  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от tempora Посмотреть сообщение
Понимать что творится в библиотеках, разумеется, нужно, а вот писать всё это самому, невзирая на наличие библиотек - чаще всего не нужно.
Как после сказанного новичку поступить? Забить на разборку библиотек? Поверить автору библиотек "на слово", что вся его писанина универсальна и устроит в любой ситуации? Как потом отследить ошибки библиотеки? Что за программист получится, который зависит от библиотек?
Вы же сами только что сказали, что
Цитата:
Понимать что творится в библиотеках, разумеется, нужно
. Как их "понимать", если вы пользуетесь вызовом готовых функций? Вот вы порекомендовали функцию побайтового обмена с картой. А что за этим стоит? Ведь ТС теперь будет утверждать, что это возможно, мол "авторитеты" подтвердили. А о том, как реально все происходит, ему и невдомек. И что "ковыряя" по байтику он все равно будет тратить время на чтение-запись-чтение сектора. Сколько байтиков - столько тройных обращений. Для изменения размера сектора в карте есть отдельная команда в ее системе команд. Но насколько я помню, в современных картах она введена лишь для совместимости... Сколько я ни пытался размер менять, карта все равно работала только с 512. Сейчас уже трудно найти старые MMC с малыми объемами. В них эта функция еще жила в каком-то усеченном варианте. Но, повторяю, все мои карты возвращали положительный результат приема этой команды, но толку ноль. 512 и только. А вот 1024 - это пожалуйста.
Ладно. ТС-у наверное надоело, он ждет готовых примеров, побыстрее их вставить в свой код. У вас есть? У меня нету. Я уже давно из под IAR-a не вылазю, а там немного по иному, нежели в CV.
Наверное, мне давно пора заткнуться, тот кто хотел меня услышать, давно услышал.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 27.03.2013, 14:49  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Вопросы по SD-Card in CodeVisionAVR

Сообщение от ut1wpr Посмотреть сообщение
Как их "понимать", если вы пользуетесь вызовом готовых функций? Вот вы порекомендовали функцию побайтового обмена с картой. А что за этим стоит?
Ну, это Вы погорячились. Я вовсе не даю рекомендаций, не изучать предмет, в чём, кстати, легко убедиться, не уходя далеко из этого топика - я дал четыре ссылки на страницы Чана, на которых есть все необходимые пояснения, ссылки на стандарты SD от Sundisk и на FAT-FS от M$, исходники библиотек и примеров её использования:
Сообщение от tempora Посмотреть сообщение
... библиотека работы с SD/FAT - ... от Chan'а, ... именно там и следует искать ответ на все вопросы, касающиеся работы с картой и с ФС.
... Смотрите в первоисточник, в частности, там есть раскладка ресурсов в разных конфигурациях.
... примеры использования его либы, ... Рекомендую начать с них:
Что будет "ТС теперь утверждать" зависит от того, насколько тщательно он изучит эти материалы.

В сложных предметах, начинать с самого низа малопродуктивно, поскольку, если не получить сначала общее представление о карте предметной области, с разделением на подобласти, то уложить получаемые при таком обучении знания будет некуда - получится бессистемный набор, даже не знаний - сведений.
Писать все самостоятельно нельзя - времени не хватит. Если бы каждый учитель говорил - "пусть мои ученики изучат всё, что изучал я", - то мы до сего дня изучали бы только как добывать огонь трением, как выделывать шкуры уриной и тому подобное (см. вариант (a) на схеме). Человечество использует другую методу, в которой знания предыдущих поколений передаются последующим в систематизированном, сокращенном виде (да и не все знания-то), на рисунке - это перекрывающиеся части прямоугольников варианта (b):
Ньютон говорил (не дословно) - "наши открытия мы делаем, стоя на плечах гигантов".

Насколько должны перекрываться эти объемы знаний разных поколений - вопрос, не имеющий общего, единого на все случаи ответа, и решаемый отдельно в каждом конкретном случае. Решая его, необходимо понимать, что исполнение всего на практике (например - самостоятельное написание кода, уже имеющегося в библиотеке) процедура дорогостоящая и далеко не всегда приводящая к пониманию лучшему, чем то, что даёт хорошее изучение "кода библиотек".
Не буду зарекаться, что моё мнение "незыблемо", но чтобы его изменить понадобятся весьма основательные аргументы.
_______________________________________
Upd:
Сообщение от Valentin44 Посмотреть сообщение
катастрофически не хватает памяти для других задач (МК мега128
Сообщение от j-Roger Посмотреть сообщение
Что-то катастрофически отожрало все ОЗУ...?
Кстати, наверняка всё ОЗУ растрачено на строковые литералы.
Рекомендую перенести их в память программ, и всё наладится.
_______________________________________
Upd2:
Сообщение от ut1wpr Посмотреть сообщение
Я уже давно из под IAR-a не вылазю, а там немного по иному, нежели в CV.
Я тоже наIARиваю, однако, разницы в использовании библиотек Чана не заметил. В чём она заключается?
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 27.03.2013 в 15:07.
tempora вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LPC2468+SD card Segriv Микроконтроллеры, АЦП, память и т.д 9 07.11.2011 12:47
Ассемблерная вставка в CodeVisionAVR вопросы E_C_C Микроконтроллеры, АЦП, память и т.д 4 29.06.2011 17:14
SD-card -Dreamer- Микроконтроллеры, АЦП, память и т.д 10 15.05.2010 20:21
IDE card reader ILLLYA Микроконтроллеры, АЦП, память и т.д 1 14.04.2007 16:52
Разъем по MultiMedia Card Дима Микроконтроллеры, АЦП, память и т.д 1 16.07.2003 18:06


Часовой пояс GMT +4, время: 05:48.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot