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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 31.07.2011, 18:32  
sersne
Прописка
 
Регистрация: 09.11.2009
Сообщений: 193
Сказал спасибо: 47
Сказали Спасибо 58 раз(а) в 26 сообщении(ях)
sersne на пути к лучшему
По умолчанию Re: SD/MMC на AVR

MBR (Master Boot Record - основной сектор загрузки).

Расположен в нулевом секторе (цилиндр 0, сторона 0, сектор 1). На каждом жестком диске имеется в одном экземпляре и содержит в себе много интересного. По смещению 0H (далее для простоты все смещения будут в шестнадцатиричной системе) находится сам загрузчик. Его задача - обнаружить активный раздел и загрузить его Boot-сектор в память по адресу 0000:7С00. Далее, по смещению 1BE находится Partition Table (именно в ней загрузчик и ищет активный раздел). По смещению 1FE (последние два байта сектора) находится сигнатура 55AA H, обозначающая загрузочный сектор. Вся дорожка с MBR считается служебной и информация туда не записывается.

Partition Table - таблица разделов.

Живет в одном секторе с MBR по смещению 1BE. Размер PT - 64 байта (на описание одного раздела отводится 16 байт, так что максимум описывается 4 раздела). Для каждого раздела указано, загрузочный (активный) ли он (первый байт описания: 80 H - активный, 0H - нет), адрес начала раздела (в цилиндрах, головках и секторах), код системы, адрес конца раздела, логический адрес начала раздела (в секторах) и количество секторов в разделе. Посмотреть все это в удобоваримом виде можно при помощи бессмертной и незаменимой программы Diskedit в режиме as partition table. Как правило, на большинстве дисков имеется один или два раздела: Primary DOS и (если есть) Extended DOS. PT создается программой FDISK при разбивке винчестера на разделы.

Primary DOS Partition (основной раздел)

- тяжелое наследие старых версий DOS. Сохранился со времен, когда DOS понимал только один раздел. Не может быть больше 2 Гб (под FAT 16). Совпадает с первым логическим диском на винчестере. Только Primary Partition может быть загрузочной. Создается программой FDISK.

Extended DOS Partition (расширенный раздел)

- способ обойти ограничение на размер раздела 2 Гб. Внутри расширенного раздела можно создавать отдельные логические диски. Если посмотреть в PT адрес расширенного раздела и потом при помощи Diskedit перейти на этот адрес, то обнаружится сектор, по своей структуре напоминающий PT. Состоит он из двух элементов: первый описывает текущий раздел (Extended DOS), второй - следующий логический диск (если он есть). По указанному адресу снова обнаружится такая же таблица, а в ней адрес следующего логического диска (опять же, если он существует). В конце сектора имеется все та же сигнатура 55AA H, по которой его можно найти на диске (все в том же Diskedit’е). Вся остальная дорожка, как и в случае MBR - пустая. Создается программой FDISK.

Boot Sector (загрузочный сектор).

Собственно говоря, загрузочный сектор. Boot sector находится в начале каждого логического диска (первый сектор следующей дорожки после PT). В начале сектора находится команда Jmp - переход на начало кода загрузчика. По смещению 3 находится поле длиной 8 байт, содержащее название и версию OS - при загрузке не используется. Далее, по смещению 0B расположен блок из 19 байт, описывающий логические параметры диска (штука, весьма полезная в хозяйстве) - число байт в секторе (для DOS - 512), число секторов в кластере, число резервных секторов (то есть число секторов от начала диска до первой копии FAT - обычно один), число копий FAT (две), формат FAT в текстовом виде (FAT12, FAT16 или FAT32), размер корневого каталога (считается в записях по 32 байта), общее число секторов на диске, тип носителя (совпадает с первым байтом FAT) и число секторов в FAT. Опять же, всю эту информацию в понятном виде выводит Diskedit в режиме as Boot sector. По смещению 2B находится метка тома (длиной 11 байт). По смещению 3E расположен сам начальный загрузчик. Его задача - проверить первый сектор корневого каталога на наличие файлов IO.SYS и MSDOS.SYS и, обнаружив их, загрузить начало IO.SYS по адресу 0000:0700 H и передать ему управление. В последних двух байтах сектора записана привычная сигнатура 55AAH. Создается при форматировании.

FAT (File Allocation Table - таблица размещения файлов).

FAT расположен непосредственно за загрузочным сектором и представляет собой цепной список, предназначенный для поиска файла на диске. В зависимости от типа (FAT12, FAT16 или FAT32), имеет разную структуру. Но в самом примитивном виде идея следующая - каждый элемент FAT соответствует одному кластеру на диске. В корневом каталоге находится ссылка на первый кластер, занимаемый файлом. В FAT ищем этот кластер и смотрим, что в нем записано. Варианты следующие: кластер свободен, зарезервировано, дефектный, конец цепочки или номер следующего кластера в файле. Файл считывается до тех пор, пока не встретится код конца цепочки. В DOS (и его прямом наследнике - Windows) используется две копии FAT - для надежности. Обе копии должны быть идентичны (на диске они расположены друг за другом). Первый байт FAT скрывает в себе дескриптор носителя (F8 H для жесткого диска). Следующие несколько байт описывают тип FAT. За ними идет сама таблица. Создается при форматировании.

Root Directory (корневой каталог).

Идет сразу за второй копией FAT. Имеется на каждом диске. Практически это тот самый список файлов и директорий, который вы видите, открывая диск в Explorer’е или Far’е. Корневой каталог состоит из 32 байтных элементов (на самом деле, с появлением длинных имен файлов для каждого файла отводится несколько таких элементов). В них содержатся имя файла, расширение, атрибуты, дата и время создания, размер файла и номер первого кластера. Корневой каталог создается при форматировании.
Реклама:
sersne вне форума  
Эти 2 пользователя(ей) сказали Спасибо sersne за это сообщение:
MasterM12 (05.08.2011), pasha_anik (23.01.2013)
Непрочитано 01.08.2011, 12:42  
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
Восклицание Re: SD/MMC на AVR

вот у меня теперь никакого доверия к протеусу совсем нету. в нем все заработало. думал "ай, проверю ка я на железе!", так и опробую только сделанную мной плату 32 меги. дисплей работает, меню есть. а карточка не хочет инициализироваться. отключил дисплей(может я порт SPI для дисплея настроил и как то повлияло на карточку) и мигаю светодиодами - если хорошо -зеленый, ошибка - красный. так вот результат:
Код:
disk_initialize(0); - красный светодиод - ошибка
res = f_mount(0,&fat); - зеленый - я думаю логично, даже если карточка мертвая, результат ноль;
res = f_opendir(&dir, path); - красный!!!!
в чем проблема еще не разобрался
Дмитриус вне форума  
Непрочитано 01.08.2011, 13:59  
leon013
Временная регистрация
 
Регистрация: 10.10.2008
Сообщений: 97
Сказал спасибо: 22
Сказали Спасибо 39 раз(а) в 19 сообщении(ях)
leon013 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Я так полагаю что и дисплей и карточка висят на одном аппаратном SPI, у меня так же, и тоже все работает криво, мне кажется что карточка не принимает никакой "игры" с чипселектом пока не прочитается 512 баит.... Нужно пробовать варианты.
По поводу моего вопроса - идея такая - на отформатированной Виндой карточке MBR нет (это везде указывают) и поэтому сразу начинается PBR, НО при создании образа прога (в моем случае UltraISO) СОЗДАЕТ!! MBR и соответственно сдвигает все остальное . Проверил руками - и в образе и на реальном железе нахожу корневой каталог как надо.....
leon013 вне форума  
Непрочитано 01.08.2011, 16:43  
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
Восклицание Re: SD/MMC на AVR

да, висят на одном SPI. поэтому и втыкнул светодиоды, чтоб не переключаться с карточки на дисплей. результата не дало. вот в сообщениях ранее увидел инициализацию SPI -
Код:
SPCR=0x52; SPSR=0x00;
- это верно?
ато у меня так:
Код:
SPCR=0x50;
SPSR=0x01;
- раз и карточка и дисплей могут работать на одном аппаратном SPI, значит для карточки подходит режим как у меня настроено
Дмитриус вне форума  
Непрочитано 01.08.2011, 18:39  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Не факт...
Делал так... После запуска МК тактовую SPI на максимум, инициализируем дисплей, сбрасываем тактовую SPI до 125кГц (на 250кГц не все карточки проходили инициализацию), проводим инит карточки... После того как карточка заинитилась выставляем тактовую SPI на максимум... После этого оба девайса крутятся на максимальной скорости... Не забываем рулить CS'ом девайсов...
st_1 вне форума  
Сказали "Спасибо" st_1
Дмитриус (01.08.2011)
Непрочитано 01.08.2011, 21:52  
leon013
Временная регистрация
 
Регистрация: 10.10.2008
Сообщений: 97
Сказал спасибо: 22
Сказали Спасибо 39 раз(а) в 19 сообщении(ях)
leon013 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Тогда у меня встречный вопрос:если представить что я читаю что то с карты и сразу передаю в дисплей, то что произойдет если я считав некий баит выставлю чипселект карты в единицу, затем отправлю байт в дисплей, затем чипселект карты в 0 и..... дальше чтение возобновится в пределах одного блока в 512 байт???
leon013 вне форума  
Непрочитано 01.08.2011, 23:07  
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от st_1 Посмотреть сообщение
После запуска МК тактовую SPI на максимум, инициализируем дисплей, сбрасываем тактовую SPI до 125кГц
данная операция предусмотрена в библах мистера Чена? или это вы из своего опыта,
st_1 ?
Дмитриус вне форума  
Непрочитано 01.08.2011, 23:09  
Дмитриус
Частый гость
 
Регистрация: 21.07.2010
Сообщений: 36
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Дмитриус на пути к лучшему
По умолчанию Re: SD/MMC на AVR

p.s - рылся я в библах кодвижена, а там краказяблы(особенно в ff)... это у них типа метод такой скрывания исходников? вроде на их сайте написано что лицензия фрии и можно даже в коммерческих целях юзать
Дмитриус вне форума  
Непрочитано 01.08.2011, 23:29  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от Дмитриус Посмотреть сообщение
данная операция предусмотрена в библах мистера Чена? или это вы из своего опыта,
st_1 ?
В библах Чена есть только низкая скорость SPI до и полная скорость после инициализации SD... но есть... Библа же и не подозревает о вашем дисплее...
Просто... смысл инита дисплея на низкой скорости???
st_1 вне форума  
Сказали "Спасибо" st_1
Дмитриус (01.08.2011)
Непрочитано 01.08.2011, 23:47  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: SD/MMC на AVR

Сообщение от leon013 Посмотреть сообщение
я читаю что то с карты и сразу передаю в дисплей, то что произойдет если я считав некий баит выставлю чипселект карты в единицу, затем отправлю байт в дисплей, затем чипселект карты в 0 и..... дальше чтение возобновится в пределах одного блока в 512 байт???
А зачем??? Забили буфер с карты, выставили CS SD, выплюнули на дисплей, и т.д. ... пока файл не закончится...
st_1 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
AVR JTAGICE MKII - проблемы firmware... Luxurious AVR 25 20.10.2014 10:50
БИНС на AVR grisha109 Микроконтроллеры, АЦП, память и т.д 30 15.06.2011 16:08


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


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