Общие принципы организации ПДП. Режим ПДП является самым скоростным способом обмена, который реализуется с помощью специальных аппаратных средств – контроллеров ПДП без использования программного обеспечения. Для осуществления режима ПДП контроллер должен выполнить ряд последовательных операций (рис. 3.38):
Циклы ПДП
выполняются с последовательно
расположенными ячейками памяти,
поэтому контроллер ПДП должен иметь
счетчик адреса ОЗУ. Число циклов ПДП
определяется специальным счетчиком.
Управление обменом осуществляется
специальной логической схемой,
формирующей в зависимости от типа обмена
пары управляющих сигналов:
(циклы чтения),
(циклы записи). Из изложенного следует,
что контроллер ПДП по запросу должен
взять на себя управление системными
шинами и выполнять совмещенные циклы
чтения/вывода или записи/ввода до тех
пор, пока содержимое счетчика циклов
ПДП не будет равно нулю. На рис. 3.38
показана структурная схема МПС с
контроллером ПДП.
Контроллер ПДП К1810ВТ37 используется в составе МПС, выполненных на базе МПК К580, К1810, К1821, для реализации прямого доступа к памяти по четырем независимым каналам с положительным или отрицательным приращением адреса со скоростью до 1.6 Мбайт/с. КПДП позволяет реализовать передачу память – память, имея широкие возможности программного управления и каскадирования. Каждый канал может выполнить до 64К циклов ПДП и имеет возможность автоматической инициализации, т. е. повторения циклов ПДП с теми же параметрами.
Назначение выводов КПДП (рис. 3.39).
CLK – вход для подключения тактового генератора F CLK =3 МГц.
–выбор кристалла.
разрешает работу КПДП.
RESET – сброс. Сигнал высокого уровня переводит КПДП в исходное состояние, устанавливая в нуль регистры команд, условий, временного хранения, а также устанавливая в единицу все разряды маски.
READY – готовность. Входной сигнал, используемый для синхронизации работы КПДП с медленнодействующими устройствами.
HLDA – подтверждение захвата. Входной сигнал, используемый ЦП для сообщения КПДП о возможности выполнения циклов ПДП.
DREQ 3 – DREQ 0 – входы запросов на ПДП от внешних устройств. Полярность запросов задается программно. Сигналы на этих входах должны удерживаться до прихода сигнала DACK. В исходном состоянии приоритет запросов естественный, DREQ0 имеет наивысший приоритет.
DB 7 – DB 0 – двунаправленная шина данных с буфером, имеющим z-состояние. В циклах ПДП на эти линии выдается восемь старших разрядов адресного кода, которые необходимо «защелкнуть» на внешнем регистре сигналом ADSTB. В режиме работы с ЦП по этим линиям осуществляется прием/передача данных.
–чтение; как вход используется ЦП для чтения содержимого внутренних регистров КПДП; как выход в режиме ПДП разрешает выдачу данных из внешних устройств.
–запись; как вход используется ЦП для загрузки данных в регистры КПДП; как выход в режиме ПДП разрешает запись данных в регистры внешних устройств.
–окончание
процесса. Вход/выход, используемый для
указания окончания процесса передачи
данных в режиме ПДП. Подавая на этот
вход сигнал низкого уровня, можно
прекратить передачу данных. После
завершения передачи данных по одному
из каналов на выходе устанавливается
сигнал
.
По этому сигналу (внешнему или внутреннему)
снимается запрос, и обслуживание
прекращается. Если установлен режим
автоинициализации, то происходит
загрузка рабочих регистров данного
канала содержимым базовых регистров,
а разряды регистра маски не меняются.
В режимах без автоинициализации разряды
маски и разряд ТС в слове-состоянии
устанавливаются в соответствии с
состоянием обслуженного канала. При
передаче память – память вывод
ориентирован на выход, и по окончании
счета на этом выходе формируется
сигнал. Если вывод
не используется, то он должен быть
подключен через резистор к шине
питания (+5 В) для предотвращения
формирования ложных сигналов окончания
процесса.
А3 – А0 – адресные входы/выходы. Используются как входные в режиме работы с ЦП и для адресации к каналам и регистрам каналов КПДП. В режиме ПДП являются выходами, по которым передаются четыре младших разряда адреса ОЗУ.
А7 – А4 – адресные выходы, на которые в режиме ПДП передаются соответствующие разряды адреса ОЗУ. В режиме работы с ЦП переходят в z-состояние.
HRQ – выход запроса захвата шин. Запрос к ЦП для перехода в режим ПДП.
DACK 3 – DACK 0 – подтверждение ПДП. Выходные линии, на которые выдаются сообщения для ВУ о возможности выполнения циклов ПДП. Полярность сигнала задается программно. После сигнала RESET на выходах DACK устанавливается нуль.
AEN – разрешение адреса. AEN=1 устанавливается на время выдачи восьми старших разрядов адреса ОЗУ на линии DB7 – DB0.
ADSTB – строб адреса. Выход, на котором формируется импульс (строб), осуществляющий запись старших разрядов (А15 – А8) адреса ОЗУ с шин DB7 – DB0 во внешний буферный регистр.
–чтение из памяти. Выход, используемый в режиме ПДП для управления операцией чтения из памяти.
–запись в память. Выход, используемый в режиме ПДП для управления операцией записи в память.
U cc – шина питания (+5 В).
GND – общий.
Структура КПДП (см. рис. 3.39). Контроллер включает четыре канала, каждый из которых состоит из четырех 16-разрядных регистров.
Регистр текущего
адреса
CAR
хранит текущий адрес ячейки памяти при
выполнении цикла ПДП. После
выполнения цикла ПДП содержимое этого
регистра увеличивается или уменьшается
на единицу. Оно может быть прочитано
или загружено с помощью двух команд
ввода – вывода. Содержимое CAR
может быть обновлено по сигналу
,
если запрограммирован режим
автоинициализации.
Регистр
циклов ПДП
CWR
хранит число слов, предназначенных для
передачи. При загрузке этого регистра
необходимо помнить, что загружаемая
константа должна быть на единицу больше
числа слов, необходимых для передачи.
При выполнении циклов ПДП регистр
работает в режиме вычитающего счетчика.
Разряд TC
регистра состояния устанавливается
в единицу при переходе из нулевого
состояния в состояние FFFFH.
Чтение и запись содержимого регистра
осуществляется двумя последовательно
выполняемыми командами ввода – вывода.
Содержимое CWR
может быть обновлено при автоинициализации
по сигналу
либо в регистре сохраняется значениеFFFFH.
Регистр хранения базового адреса BAR и регистр хранения базового числа циклов ПДП WCR хранят базовые значения адреса и числа циклов ПДП, участвуют в автоинициализации. При начальной загрузке контроллера ПДП исходными параметрами происходит одновременная запись в регистры CAR, BAR, CWR и WCR. В процессе выполнения циклов ПДП содержимое BAR и WCR не изменяется. Прочитать состояние этих регистров невозможно.
Кроме того, каждый канал имеет 6-разрядный регистр режима MR , определяющий режим его работы. При загрузке этого регистра в младших разрядах D1, D0 указывается код номера канала. Назначение разрядов MR показано на рис. 3.40.
С помощью разрядов D2, D3 задается один из типов передачи – чтение, запись, проверка. Эти разряды могут принимать любые значения при D6D7=11. Разряд D4 определяет режим автозагрузки. Если D4=1, то при условии автозагрузки CAR и CWR загружаются параметрами BAR и WCR соответственно. Разряд D5 определяет режим изменения CAR. Если D5=0, после каждого цикла ПДП происходит увеличение содержимого CAR; если D5=1, то происходит уменьшение. Разряды D6, D7 определяют режимы работы канала – передачу по запросу, одиночную передачу, блочную передачу, контроллер в режиме каскадирования.
Контроллер ПДП включает три функциональных блока, которые выполняют функции управления. Буфер шины данных служит для согласования работы контроллера с ЦП. Некоторые сигналы, обеспечивающие эти функции, используются для управления передачей данных в циклах ПДП. Блок управления контроллером при передаче память – память включает один 8-разрядный регистр TR временного хранения данных, обеспечивающий хранение байта в цикле передачи память – память на время изменения адреса.
Последнее загруженное в этот регистр слово сохраняется там до поступления сигнала RESET. Блок управления режимом ПДП вырабатывает необходимые сигналы управления при передаче данных в циклах ПДП. Включает два 8-разрядных и два 4-разрядных регистра.
Регистр
команд
CR
определяет основные параметры работы
канала. Загрузка CR
осуществляется командой вывода от ЦП,
а сброс – по сигналу RESET
или команде общего сброса. Назначение
разрядов регистра показано на рис. 3.41.
Разряды D0,
D1
используются для задания режимов работы
каналов 0 и 1 в режиме память – память.
Разряд D2
инициализирует контроллер для выполнения
ПДП, разряд D3
определяет режим выполнения циклов
ПДП. Если D3=1,
циклы ПДП выполняются с пропуском одного
такта при изменении адреса в пределах
младшего байта. Разряд D4
устанавливает режим приоритетов.
Если D4=1,
запросу обслуженного канала присваивается
наинизший приоритет – режим вращения
приоритета. Разряд D5
устанавливает режим удлиненного цикла
записи. Если D5=1,
сигналы
вырабатываются с двойной длительностью.
РазрядамиD6,
D7
программируются уровни запросов на ПДП
(DREQ)
и сигналов подтверждения ПДП (DACK).
Регистр
условий
SR
.
Разряды D3
– D0
этого регистра устанавливаются аппаратно
при возникновении сигнала ТС, т. е. после
окончания циклов ПДП или по внешнему
сигналу
.
Эти разряды сбрасываются (устанавливаются
в нуль) сигналомRESET
и после выполнения команды чтения
содержимого этого регистра. Разряды D4
– D7
устанавливаются программно при
необходимости обслуживания по
соответствующему каналу. Назначение
разрядов SR
показано на рис. 3.42.
Регистр
запросов
RR
.
Контроллер может обслуживать запросы
на ПДП, формируемые как аппаратно –
по входам DREQ,
так и программно – по состоянию разрядов
(регистров) запросов RR.
Каждый разряд этого регистра соответствует
запросу по одному из каналов. Разряды
этого регистра не маскируются и
устанавливаются раздельно программно
или сигналами TC
и
.
Программная установка этих разрядов
осуществляется командой, формат которой
представлен на рис. 3.43. Сброс всех
разрядовRR
осуществляется сигналом RESET.
Для обработки программного запроса
контроллер должен быть запрограммирован
в режиме блочной передачи.
Регистр маски
MASK
,
с помощью которого могут быть замаскированы
сигналы DREQ
каждого канала. Разряды MASK
могут быть установлены специальной
командой одновременно (рис. 3.44) или
раздельно (рис. 3.45). Кроме того, если
канал не запрограммирован на режим
автозагрузки, после появления сигнала
соответствующий разряд регистра
устанавливается в единицу. Все разрядыMASK
устанавливаются в нули сигналом
RESET
либо командой CMR
(Clear
Mask
Register).
Режим работы ПДП. Контроллер ПДП может работать в двух основных режимах: с ЦП и выполнения циклов ПДП. В режиме работы с ЦП контроллер воспринимается им как внешнее устройство, а после загрузки управляющих слов переходит в пассивное состояние S1. В этом состоянии контроллер находится до тех пор, пока на вход одного из каналов не поступит запрос на ПДП DREQ или этот запрос не будет выставлен программно от ЦП. Обнаружив запрос на ПДП, контроллер переходит в состояние S0 и выставляет сигнал запроса на захват системной шины HRQ, ожидая от ЦП сигнала подтверждения захвата HLDA.При получении сигнала HLDA контроллер начинает выполнять циклы ПДП.
Различают четыре рабочих состояния при выполнении этих циклов: S1 – S4. Если при выполнении циклов ПДП на вход READY подать нуль, контроллер между тактами S2/S3 и S4 выполняет такты ожидания SW. Состояние SW характеризуется активностью линий передачи данных. При передаче информации в режиме память – память необходимо выполнить два полных цикла чтения и записи, поэтому для передачи одного слова контроллер выполняет два цикла ПДП по четыре такта в каждом: S11 – S14 для чтения из памяти и S21 – S24 для записи в память.
Временная диаграмма работы контроллера в циклах ПДП представлена на рис. 3.46. В пассивном состоянии происходит опрос входов запросов на ПДП и возможно взаимодействие с ЦП при помощи обычных команд ввода – вывода. Так как взаимодействие с ЦП КПДП чаще осуществляет словом из двух байтов, то для правильного их выбора контроллер использует внутренний триггер, указывающий на операцию с младшим или старшим байтом слова. Этот триггер сбрасывается сигналом RESET или командой общего сброса, указывая на операцию с младшим байтом. После выполнения операции с младшим байтом он устанавливается в единицу, указывая старший байт.
Контроллер может быть запрограммирован для выполнения следующих четырех режимов работы ПДП. В режиме одиночной передачи осуществляется передача одного байта, при этом содержимое счетчика циклов ПДП (CWR) уменьшается, а содержимое адресного регистра (CAR) уменьшается или увеличивается на единицу. Бит окончания передачи (TC) в регистре условий устанавливается в единицу, когда содержимое CWR примет значение FFFFH. Вход DREQ должен поддерживаться в активном состоянии до прихода сигнала DACK. Если DREQ остается активным и после передачи одного байта, сигнал HRQ снимается, а новый цикл передачи возможен с приходом очередного сигнала HLDA.
В режиме
блочной передачи
циклы ПДП осуществляются до момента
установления бита TC
в регистре условий, т. е. когда счетчик
циклов ПДП CWR
примет значение FFFFH
или передача остановится по внешнему
сигналу
.
Циклы передачи могут быть возобновлены,
если канал был запрограммирован на
автоинициализацию.
В режиме
передачи по требованию
циклы
ПДП продолжаются до тех пор, пока не
установится разряд TC
в регистре условий либо не придет сигнал
,
либо не снимется сигналDREQ.
В этом режиме
передача может осуществляться, пока
внешнее устройство не закончит передачу
информации. Автоинициализацию в этом
режиме можно осуществлять после окончания
передачи сигналом
,
внешним или вырабатываемым по признакуTC.
Режим передачи память–память позволяет осуществлять перемещение блоков информации в поле оперативной памяти. Для реализации этого режима используются параметры каналов 0 и 1. Передача инициализируется программно установкой DREQ в канале 0. После прихода сигнала HLDA=1 контроллер за четыре такта считывает данные из ячейки памяти с адресом из регистра CAR канала 0 и записывает их в регистр временного хранения TR, а затем за четыре такта записывает эти данные в ячейку памяти с адресом из CAR канала 1. Когда содержимое регистра циклов ПДП CWR примет значение FFFFH, установится разряд TC и передача закончится. Канал 0 может быть запрограммирован на передачу информации без изменения адреса, что позволяет заполнить ячейки блока ОЗУ константой.
Типы передачи
ПДП.
Во всех
режимах ПДП возможны три основных типа
передачи. Запись
данных
–
осуществляется
передача
данных от внешнего устройства к ОЗУ.
Контроллер в этом случае активизирует
сигналы
.Чтение данных
– осуществляется
передача данных от ОЗУ к внешнему
устройству, активизируются сигналы
.
В случаепроверки
или псевдопередачи
контроллер выполняет действия такие
же, как в цикле чтения/записи, но сигналы
управления не вырабатываются. В этом
случае сигнал READY
не воспринимается. Кроме того, контроллер
может быть запрограммирован для
выполнения дополнительных функций.
Автоинициализация
осуществляется,
если установлен соответствующий разряд
в регистре условий, и по сигналу
.
При автоинициализации содержимое
базовых регистровBAR
и WCR
загружается в регистры текущих значений
CAR
и CWR.
Разряды маски при этом не меняются.
После автоинициализации контроллер
готов к работе и возобновляет действие
с приходом очередного сигнала DREQ.
Для автоинициализации обоих каналов
в режиме память–память регистры циклов
ПДП CWR
должны программироваться идентично.
Контроллер может быть запрограммирован для обслуживания каналов с жестко заданными приоритетами либо с их циклическим изменением . При жестко заданном приоритете наивысший приоритет устанавливается за каналом с меньшим номером. При циклическом изменении самый низкий приоритет присваивается каналу после его обслуживания. Это позволяет обслужить все каналы поочередно.
Таблица 3.3
Операция |
|||||
Чтение регистра состояния |
|||||
Запись в регистр команд управления |
|||||
Запись в регистр запросов |
|||||
Установка всех разрядов маски |
|||||
Запись в регистр режима |
|||||
Установка режима ввода младшего байта |
|||||
Чтение регистра временного хранения |
|||||
Общий сброс |
|||||
Сброс всех разрядов маски |
|||||
Установка разряда маски |
Программирование контроллера. Программирование контроллера осуществляется от ЦП командами ввода–вывода и возможно только в пассивном состоянии или при наличии на входе HLDA напряжения низкого уровня, если даже присутствует сигнал HRQ. Начальную инициализацию контроллера необходимо осуществить сразу же после включения напряжения питания по всем каналам (если даже они не используются), загружая команды и константы. Адреса внутренних регистров контроллера определяются кодом на выводах А3–А0. В табл.3.3 показаны коды на А3–А0, соответствующие выполняемым командам ЦП, а в табл.3.4 – коды на А3–А0, соответствующие адресам регистров КПДП.
Таблица 3.4
Операция |
|||||
Чтение содержимого CAR канала 0 |
|||||
Чтение содержимого CWR канала 0 |
|||||
Чтение содержимого CAR канала 1 |
|||||
Чтение содержимого CWR канала 1 |
|||||
Чтение содержимого CAR канала 2 |
|||||
Чтение содержимого CWR канала 2 |
|||||
Чтение содержимого CAR канала 3 |
|||||
Чтение содержимого CWR канала 3 |
Подключение контроллера к системной шине (рис. 3.47). Восемь старших разрядов адреса выдаются на ШД и должны быть записаны сигналом ADSTB во внешний регистр. Линия AEN используется для того, чтобы разряды адреса остались действующими на ША в течение трех тактовых периодов цикла ПДП. Линии А7 – А0 подключаются непосредственно к ША. Сигналы MEMR, MEMW, IOR, IOW управляют в циклах ПДП соответственно ОЗУ и буфером ВУ.
Каскадирование КПДП . Примером каскадного использования КПДП может быть IBM PC/AT, в котором к шине адреса со смещением на 1 байт подключили второй 8237А (рис. 3.48). Его 16-битные регистры адреса способны управлять линиями адреса А16 – А1 (младший байт А0 всегда 0). Таким образом, второй КПДП обеспечивает передачу по два байта. Вторая микросхема 8237А подключена как ведущая и создает три 16-битных канала ПДП.
Вопросы и задания
3.37. В каких режимах работают КПДП и его функции в системе?
Определите программно-доступные регистры и их адресацию.
Составьте схему подключения К1810ВТ37 к шинам адреса и данных МПС.
Составьте программу инициализации контроллера для блочного обмена по одному каналу.
Поясните реализацию режима ПДП на ВТ37.
Поясните адресацию к регистрам КПДП при программировании.
Как формируется 16-битный адрес КПДП при управлении обменом?
Поясните предоставление ПДП по запросам с ведомого КПДП.
Какие приоритеты запросов поддерживает 8237 (ВТ37)?
В какой последовательности необходимо производить загрузку регистров контроллера при его программировании?
Обычно промышленный контроллер состоит из: центрального процессора, сетевых интерфейсов, модулей памяти и различных устройств ввода-вывода.
В состав процессорного модуля ПЛК входят следующие комплектующие: микропроцессор или ЦПУ (центральное процессорное устройство), часы реального времени, запоминающие устройства и watchdog.
К основным характеристикам микропроцессора относятся: тактовая частота, разрядность, поддержка портов для различных устройств ввода-вывода, архитектура, параметры работоспособности при определенных температурных диапазонах, выполнение операций с плавающей точкой, уровень потребляемой мощности.
Показатели производительности микропроцессоров с одинаковой архитектурой пропорциональны тактовой частоте. В большинстве контроллеров применяются микропроцессоры реализованные на RISC (Reduced Instruction Set Computing) архитектуре, которые имеют сокращенное количество команд. В этом случае микропроцессор использует определенное число команд, обладающих одинаковой длиной, и множество регистров. Благодаря сокращенному набору команд можно создавать компиляторы с большими показателями эффективности, а так же конвейер процессора, который за один такт может выдать результат выполнения действий одной из команд.
Промышленным контроллерам, имеющим дело с интенсивной математической обработкой данных, необходим математический сопроцессор (вспомогательный процессор, выполняющий операции с плавающей точкой) или же использование сигнальных процессоров, выполняющих математические операции на протяжении одного такта. Благодаря сигнальным процессорам достигается серьезное ускорение выполнения операций свертки или быстрого преобразования Фурье.
Емкость памяти характеризуется количеством переменных, которые можно обработать за время функционирования ПЛК. Время доступа к памяти микропроцессора - один из наиболее существенных показателей, способных ограничить быстродействие. Из-за этого происходит деление памяти на уровни иерархии, с учетом частоты и скорости использования, имеющихся в ней данных Иерархия памяти – это еще один существенный показатель архитектуры процессора, позволяющий снизить уровень возможного отрицательного воздействия медленной памяти на скорость работы микропроцессора.
Основные типы памяти промышленных контроллеров (ПЛК):
- ПЗУ – постоянное запоминающее устройство;
- ОЗУ – оперативное запоминающее устройство;
- Набор регистров.
Набор регистров - самые быстродействующие элементы памяти, так как их использует АЛУ (арифметико-логическое устройство) для выполнения простейших команд процессора. ПЗУ применяется как место хранения информации, которая редко подвергается изменению – операционная система, загрузчик, драйверы устройств, либо исполняемый модуль какой-либо программы. ОЗУ хранит в себе непосредственно данные подвергающиеся многократному изменению в период работы контроллера. К примеру, информация о проведении диагностики, отображаемые на дисплее переменные, значения тегов, промежуточные вычисления, выводимые на графики данные. В роли ПЗУ (ROM - Read Only Memory), как правило, выступает перепрограммируемая электрически стираемая память (EEPROM - Electrically Erasable Programmable ROM). Кстати, флеш-память по сути - разновидность EEPROM. Принцип действия её заключается в хранении определенного заряда в конденсаторе, который образован подложкой МОП-транзистора и плавающим затвором. Главная особенность флеш памяти – её абсолютная энергонезависимость, т.е. возможность сохранения данных при отсутствии питания. Обновление данных во флеш-памяти происходит не отдельно взятыми ячейками, а за счет применения больших блоков. Все ПЗУ обладают большим недостатком - низким уровенем быстродействия.
Количество циклов ввода информации во флеш-память ограничено всего несколькими десятками тысяч раз. Современными микропроцессорами в качестве ОЗУ применяется статическая память (SRAM - Static Random Access Memory), динамическая память (DRAM- Dynamic Random Access Memory), и синхронная динамическая память (SDRAM - Synchronous DRAM). Выполнение SRAM происходит на триггерах, которые способны хранить информацию неограниченно долгое время при условии наличия питания. Динамическая память промышленного контроллера сохраняет принадлежащие ей данные на конденсаторах, из-за чего требуется периодическая перезарядка конденсаторов. Основным недостатком триггерной памяти является высокий уровень стоимости и отношения цены к емкости. Это связано с тем, что на одном кристалле помещается относительно небольшое число триггеров. К достоинствам можно отнести высокий уровень быстродействия, исчисляемый гигагерцами, в то время как конденсаторная память не может преодолеть планку в несколько сотен герц. Все виды оперативной памяти отличаются тем, что при отсутствии питания все имеющаяся в них информация не сохраняется. Именно поэтому в некоторых типах ПЛК используется батарейное питание, позволяющее сохранить работоспособность системы при условии кратковременного прерывания питания системы.
В модульных и моноблочных промышленных контроллерах используется параллельная шина, позволяющая обмениваться информацией с модулями ввода-вывода, благодаря чему быстродействие опроса значительно выше в сравнении с последовательной шиной. Виды параллельных шин: VME, PCI, ISA, CXM, ComactPCI, PC/104. Последовательная же шина, например RS-485 необходима для подключения удаленных модулей ввода-вывода.
В наши дни в цивилизованном мире вы с трудом найдёте человека, который никогда бы не пользовался компьютером и не имел представление о том, что это такое. Поэтому, вместо того чтобы в очередной раз рассказывать обо всем известных частях этой сложной системы, мы расскажем вам о чём-то, что вы ещё не знаете. Мы обсудим и дадим небольшую характеристику контроллерам памяти, без которых работа компьютера была бы невозможна. Если вы хотите вникнуть в систему работы вашего персонального компьютера или ноутбука, то вы обязательно должны знать это. И так, давайте обсудим сегодня, что же такое контроллеры памяти.
Задача, которая стоит перед контроллерами памяти компьютера является очень важной для работы компьютера. Контроллер памяти – это чип, который расположен на материнской плате или на центральном процессоре. Главной функцией, которую выполняет этот крохотный чип, является управление потоками данных, как входящих, так и исходящих. Второстепенной функцией контроллера памяти является увеличение потенциала и работоспособности системы, а так же равномерное и правильное размещение информации в памяти, которое доступно благодаря новым разработкам в области новых технологий.
Размещение контроллера памяти в компьютере зависит от определённых моделей материнских плат и центральных процессоров. В некоторых компьютерах дизайнеры поместили этот чип на северном параллельном присоединении материнской платы, в то время как в других компьютерах они размещены на центральном процессоре типа «die». Те системы, которые рассчитаны на установку контроллера в материнской плате, имеют большое количество новых различных физических гнёзд. Оперативная память, которая используется в компьютерах такого типа, так же имеют новый современный дизайн.
Главная цель использования контроллера памяти в компьютере заключается в том, чтобы система могла считывать и записывать изменения в оперативной памяти, а также обновлять её при каждой загрузке. Это происходит благодаря тому, что контроллер памяти посылает электрические заряды, которые в свою очередь, являются сигналами для выполнения тех или иных действий. Не углубляясь в техническую терминологию, мы можем утвердить тот факт, что контроллеры памяти являются одной из самых важных деталей в компьютере, позволяющих использовать оперативную память, и без которой его работа была бы невозможной.
Контроллеры памяти бывают разных типов. Они различаются на:
- контроллеры памяти с двойной скоростью передачи данных (DDR);
- полностью буферизованные контроллеры памяти (FB);
- двуканальные контроллеры (DC).
Функции, которые могут выполнять контроллеры памяти разных типов, отличаются друг от друга. Например, контроллеры памяти с двойной скоростью передачи данных используются, чтобы передавать данные, в зависимости от увеличения или уменьшения темпа часов памяти. В то время как в двуканальной памяти используется два контроллера памяти параллельно друг от друга. Это позволяет компьютеру увеличить быстродействие системы, создавая больше каналов, но, несмотря на трудности, которые возникают в результате использования кучи проводов, данная система работает довольно эффективно. Однако возникают трудности при создании новых каналов, поэтому данный вид контроллера памяти не безупречен.
Полностью буферизованные контроллеры памяти с другой стороны отличаются от остальных типов контроллеров памяти. В данной технологии используется серийные каналы передачи данных, которые нужны для связи с материнской платой и непохожие на остальные системы схемы оперативной памяти RAM. Преимущество данного типа контроллеров заключается в том, что полностью буферизованные контроллеры памяти уменьшают количество проводов, которые используются в материнской плате, и что позволяет уменьшить затраченное на выполнение задачи время.
Как вы уже убедились, контроллеры памяти очень нужны для стабильной работы компьютера, и разные типы используются для разных целей. Цены на линейки памяти варьируются от очень высоких до очень низких, что зависит от типа и функций, которые выполняет тот или иной контроллер памяти.
Иногда при разработке устройства возникает потребность сохранять какие-либо данные в энергонезависимую память. В таких случаях обычно используют внутреннюю EEPROM микроконтроллера. Если её недостаточно, то как правило применяются внешние микросхемы EEPROM из серии 24lxx. Микросхемы этой серии очень популярны. Чаще всего их можно встретить в старых мобильных телефонах, некоторых материнских платах, картриджах от принтеров да еще много где. Цена данных микросхем тоже очень привлекательная. Например 24LC16 у нас стоит 11 рублей.
Данная микросхема выпускается в различных корпусах, самые популярные из которых это DIP и SOIC. Микросхема имеет следующую распиновку:
Как видите выводов совсем немного. Итак попробуем разобраться для что к чему.
A0, A1, A2
— в данной микросхеме не используются. Их можно подсоединить к земле или к плюсу питания. В некоторых других микросхемах серии 24lxx, этими выводами можно задавать адрес микросхемы, для того чтобы можно было подсоединить на одну шину i2c аж сразу 8 микрух памяти.
Vss
— земля.
SDA
— линия данных
SCL
— линия тактовых импульсов
WP
— Защита от записи. Когда на данном выводе логический 0, то запись в память разрешена. Если подать логическую единицу, то возможно только чтение из памяти.
Vcc
— питание микросхемы. Согласно даташиту питается она напряжением от 2.5 вольта до 5.5 вольта.
Подключение к контроллеру.
Подключить память к МК очень просто. Из обвязки потребуются только пара резисторов сопротивлением около 4.7 кОм.
Программное обеспечение
Для работы с памятью была разработана библиотека реализующая следующие функции:
i2c_init — настраивает скорость тактовых импульсов идущих по линии SCL.
Микросхема 24LC16 поддерживает частоту до 400 кГц. Рассчитать частоту можно так:
CPU Clock frequency — частота на которой работает микроконтроллер
TWBR — число записанное в одноименный регистр.
TWPS — предделитель. Значения предделителя задаются битами TWPS1 и TWPS0 в регистре TWSR
Для контроллера Atmega 32 справедлива такая таблица:
i2c_start — отсылает стартовую посылку
i2c_stop — отсылает стоповую посылку
i2c_send — отсылает байт
i2c_recive — принимает байт
i2c_recive_last — принимает последний байт. Отличие от предыдущей функции состоит в том, что когда байт принят, микроконтроллер не отсылает бит подтверждения. Если при приёме последнего байта использовать i2c_recive то линия SDA останется прижатой к земле.
Запись данных в микросхему памяти
Записывать данные можно как в произвольном порядке так и постранично. Поскольку на шине i2c могут быть сразу несколько устройств, то для того чтобы обратится к какому либо устройству нужно знать его семибитный адрес. Адрес микросхемы 24LC16 в двоичном виде выглядит так:
Биты A,B,C служат для выбора блока памяти. Блоков памяти в микросхеме 8 штук по 256 байт каждый. Соответственно биты ABC принимают значения от 000 до 111.
Для того чтоб записать в микросхему байт нужно выполнить следующую последовательность действий:
- Инициализировать интерфейс i2c
- Отослать стартовую посылку
- Отослать адрес микросхемы+адрес блока памяти
- Отослать адрес ячейки памяти в которую будет производится запись
- Отослать байт данных
- Отослать стоповую посылку
Пример: Нужно записать байт 0xFA по адресу 0x101 .
rcall i2c_init
rcall i2c_start
ldi temp,0b 1010
001
0
//Адрес микросхемы где:
//
1010
- адрес микросхемы
//
001
- адрес блока памяти (Ячейка 0x101 принадлежит блоку 1)
//
0
rcall i2c_send
ldi temp,1 //Адрес ячейки памяти. (блок 1, ячейка 1)
rcall i2c_send
ldi temp,0xFA //Загружаем в регистр байт который нужно записать
rcall i2c_send //Записываем байт
rcall i2c_stop
Записывать данные в память можно не только побайтно но и постранично. Размер страницы — 16 байт. Постараничная запись подразумевает следующее: Отправляем адрес нулевого байта нужной страницы и после этого 16 раз отправляем нужные данные. Счётчик адреса будет увеличивать на единицу автоматически. Если отправить данные в 17-й раз, то будет перезаписан нулевой байт, если отправить байт 18-й раз, то он затрет байт номер 1 итд.
Пример : Требуется записать первую страницу блока 0.
rcall i2c_init //Инициализируем интерфейс i2c
rcall i2c_start // Отправляем стартовую посылку
ldi temp,0b 1010
000
0
//Адрес микросхемы где:
//
1010
- адрес микросхемы
//
000
- адрес блока памяти (нас интересует нулевой блок)
//
0
- бит чтения/записи. 0 - запись, 1 - чтение
rcall i2c_send
ldi temp,16 //Адрес первой страницы
rcall i2c_send
ldi temp,0x01 //Загружаем в регистр байт номер 0
rcall i2c_send //Записываем байт
ldi temp,0x02 //Загружаем в регистр байт номер 1
rcall i2c_send //Записываем байт
/// тут пишем остальные байты.....
ldi temp,0x0E //Загружаем в регистр байт номер 14
rcall i2c_send //Записываем байт
ldi temp,0x0F //Загружаем в регистр байт номер 15
rcall i2c_send //Записываем байт
rcall i2c_stop //Отправляем стоповую посылку
Чтение данных из микросхемы
С записью вроде разобрались, теперь приступим к чтению. Чтобы прочитать байт нужно сделать следующее:
- Инициализировать интерфейс i2c (если он не инициализировался ранее)
- Отправить стартовую посылку
- Отправить адрес микросхемы и адрес блока памяти откуда будем читать
- Отправить адрес ячейки памяти
- Отправить стартовую посылку повторно
- Отправить адрес микросхемы и адрес блока памяти с битом «чтение»
- Получить байт
- Отправить стоповую посылку
rcall i2c_init //Инициализируем интерфейс i2c
rcall i2c_start // Отправляем стартовую посылку
ldi temp,0b1010
011
0
//Адрес микросхемы + адрес 3-го блока памяти.
//Бит чтение/запись по прежнему 0 !
rcall i2c_send
ldi temp,0x41 //Адрес ячейки памяти
rcall i2c_send
rcall i2c_start //Повторная отправка стартовой посылки
ldi temp,0b1010
011
1
//Адрес микросхемы+адрес блока памяти+бит чтения/записи стал 1
rcall i2c_send //теперь можно читать данные
rcall i2c_recive_last //Читаем байт. Первый и последний.
rcall i2c_stop //Отправляем стоповую посылку
Чтение может производится последовательно байт за байтом, т.е. просто вызывать i2c_recive столько сколько нужно. Команду увеличения адреса на единицу посылать не нужно. Переключать адреса блоков при последовательном чтении так же не нужно. Т.е. можно взять и разом прочитать всю микросхему без всяких проблем.
Библиотека для работы с i2c разрабатывалась и была испытана на микроконтроллере Atmega32. Я думаю что она будет работать на многих других контроллерах без каких либо изменений. Естественно в контроллере должна быть аппаратная поддержка i2c или как его еще называют TWI. Конечно реализовать i2c можно и программно, но я не стал заморачиваться да и не было нужды. Демонстрационный пример представляет собой программу которая записывает по первым 16 адресам байты от 0 до 15, а после записи выводит их в порт A. Наблюдать как это работает можно не только в живую но и в Proteus’е.
Ну и напоследок прикладываю осциллограмму:
Вот так выглядит шина i2c глазами моего :-)
Все вопросы и предложения жду в комментариях.
В основе любой flash-памяти лежит кристалл кремния, на котором сформированы не совсем обычные полевые транзисторы. У такого транзистора есть два изолированных затвора: управляющий (control) и плавающий (floating). Последний способен удерживать электроны, то есть заряд. В ячейке, как и у любого полевого транзистора, есть сток и исток (рис. 4.1). В процессе записи на управляющий затвор подается положительное напряжение и часть электронов, движущихся от стока к истоку, отклоняется к плавающему затвору. Некоторые из электронов преодолевают слой изолятора и проникают (диффундируют) в плавающий затвор. В нем они могут оставаться в течение многих лет.
Концентрация электронов в области плавающего затвора определяет одно из двух устойчивых состояний транзистора - ячейки памяти. В первом, исходном, состоянии количество электронов на плавающем затворе мало, а пороговое напряжение открытия транзистора относительно невысоко (логическая единица). Когда на плавающий затвор занесено достаточное количество электронов, транзистор оказывается во втором устойчивом состоянии. Напряжение открытия его резко увеличивается, что соответствует логическому нулю. При считывании измеряется
Рис. 4.1. Ячейка flash-памяти
пороговое напряжение, которое нужно подать на сток для открытия транзистора. Для удаления информации на управляющий затвор кратковременно подается отрицательное напряжение, и электроны с плавающего затвора диффундируют обратно на исток. Транзистор вновь переходит в состояние логической единицы и остается в нем, пока не будет произведена очередная запись. Примечательно, что во flash-памяти один транзистор хранит один бит информации - он и является ячейкой. Весь процесс «запоминания» основан на диффузии электронов в полупроводнике. Отсюда следуют два не очень оптимистичных вывода.
Время хранения заряда очень велико и измеряется годами, но все же ограничено. Законы термодинамики и диффузии гласят, что концентрация электронов в разных областях рано или поздно выровняется.
По той же причине ограничено количество циклов записи-перезаписи: от ста тысяч до нескольких миллионов. Со временем неизбежно происходит деградация самого материала и р-п-переходов. Например, карты Kingston Compact Flash рассчитаны на 300 ООО циклов перезаписи. Transcend Compact Flash - на
1 ООО ООО, а flash-диск Transcend 32 Gb USB – всего на 100 ООО.
Существуют две архитектуры flash-памяти. Они отличаются способом обращения к ячейкам и, соответственно, организацией внутренних проводников.
Память NOR (ИЛИ-НЕ) позволяет обращаться к ячейкам по одной. К каждой ячейке подходит отдельный проводник. Адресное пространство NOR-памяти позволяет работать с отдельными байтами или словами (каждое слово содержит
2 байта). Такая архитектура накладывает серьезные ограничения на максимальный объем памяти на единице площади кристалла. Память NOR сегодня используется лишь в микросхемах BIOS и других ПЗУ малой емкости, например в сотовых телефонах.
В памяти архитектуры NAND (И-НЕ) каждая ячейка оказывается на пересечении «линии бит» и «линии слов». Ячейки группируются в небольшие блоки по аналогии с кластером жесткого диска. И считывание, и запись осуществляются лишь целыми блоками или строками. Все современные съемные носители построены на памяти NAND.
Крупнейшими производителями NAND-чипов являются компании Intel, Micron Technology, Sony и Samsung. Ассортимент выпускаемых чипов довольно велик, а обновление его происходит несколько раз в год.
Контроллеры
Для управления чтением и записью служит контроллер памяти. В настоящее время контроллер всегда выполняется в виде отдельного элемента (это либо микросхема одного из стандартных форм-факторов, либо бескорпусный чип, встраиваемый в карту памяти), хотя ведутся работы по интеграции контроллера непосредственно в кристалл flash-памяти.
Контроллеры разрабатываются и выпускаются под совершенно определенные микросхемы flash-памяти. Способ адресации ячеек конструктивно заложен в контроллере. Данные при записи в микросхему flash-памяти располагаются определенным способом, меняющимся от модели к модели. Производители эти тонкости держат в секрете и, по всей видимости, раскрывать не планируют. Очевидно, микропрограмм контроллеров создается значительно больше, чем самих моделей контроллеров. Микропрограмма контроллера (прошивка) и таблица трансляции адресов (транслятор) записываются в служебную область flash-памяти. Именно эту область контроллер начинает считывать сразу после подачи на него питания. Кроме собственно адресации ячеек, контроллер выполняет ряд других функций: функции контроля bad-секторов, коррекции ошибок (ЕСС - error check and correct) и равномерности износа ячеек (wear leveling).
Технологической нормой при изготовлении микросхем памяти считается наличие в них в среднем до 2 % нерабочих ячеек. Со временем их количество может увеличиваться, поэтому, как и в винчестерах, во flash-памяти предусмотрен резервный объем. Если появляется дефектный сектор, контроллер в процессе форматирования или записи подменяет его адрес в таблице размещения файлов адресом сектора из резервной области. Коррекция осуществляется контроллером, но реализуется на уровне файловой системы конкретного носителя.
Из-за ограниченного ресурса ячеек (порядка нескольких миллионов циклов чтения/ записи для каждой) в контроллер заложена функция учета равномерности износа. Чтобы запись информации осуществлялась равномерно, свободное пространство условно разбивается на участки, и для каждого из них учитывается количество операций записи. Статистика циклов заносится в скрытую служебную область памяти, и за этими сведениями контроллер периодически обращается к ней. На адресацию это не влияет.
Конструкция flash-диска USB
Несмотря на разнообразие корпусов, все flash-диски USB устроены одинаково. Если половинки корпуса соединены защелками, они обычно легко разъединяются. Водонепроницаемые или ультрамодные корпусы приходится вскрывать разрушающими методами, например разрезать.
На плате внутри flash-диска USB (рис. 4.2) обязательно присутствуют две микросхемы: чип памяти и контроллер. На обеих нанесена заводская маркировка. Иногда плата несет два чипа flash-памяти, которые работают в паре. Обвязка микросхем состоит из нескольких резисторов и диодов, стабилизатора питания и кварцевого резонатора. В последнее время стабилизатор все чаще встраивается непосредственно в контроллер и количество навесных элементов сокращается до минимума. Кроме того, на плате могут находиться светодиодный индикатор и миниатюрный переключатель для защиты от записи.
Рис. 4.2. Устройство flash-диска
Разъем USB припаян непосредственно к плате. Места пайки контактов во многих моделях являются довольно уязвимыми, поскольку на них приходится механическая нагрузка при подключении и отключении устройства.
Виды и конструкция карт памяти
Многие компании время от времени предлагали пользователям разные конструкции карт памяти. За редкими исключениями все они несовместимы между собой по количеству и расположению контактов и электрическим характеристикам, Flash-карты бывают двух типов: с параллельным (parallel) и последовательным (serial) интерфейсом.
В табл. 4.1 перечислены 12 основных типов карт памяти, которые встречаются в настоящее время. Внутри каждого типа существуют свои дополнительные разновидности, с учетом которых можно говорить о существовании почти 40 видов карт.
Таблица 4.1. Типы карт памяти
Тип карты памяти |
Габаритные размеры (мм) |
Максимальная конструктивная |
Интерфейс |
CompactFlash (CF) |
Параллельный 50 контактов |
||
Последовательный 9 контактов |
|||
MultiMedia Card (ММС) |
Последовательный 7 контактов |
||
Последовательный 7 контактов |
|||
Highspeed ММС |
Последовательный 13 контактов |
||
Последовательный 10 контактов |
|||
Memory Stick PRO |
Последовательный 10 контактов |
||
Memory Stick Duo |
Последовательный 10 контактов |
||
SmartMedia (SSFDC) |
Параллельный 22 контакта |
||
Параллельный 22 контакта |
|||
Последовательный 8 контактов |
Карты ММС могут работать в двух режимах: ММС (MultiMedia Card) и SPI (Serial Peripheral Interface). Режим SPI является частью протокола ММС и используется идя коммуникации с каналом SPI в микроконтроллерах компании Motorola и некоторых других производителей.
В слот для карты SD (Secure Digital) можно вставить карту ММС (MultiMedia Card), но не наоборот. В контроллер карты SD заложено аппаратное шифрование данных, а сама память снабжена специальной областью, в которой хранится ключ шифрования. Сделано это для того, чтобы препятствовать нелегальному копированию музыкальных записей, для хранения и продажи которых и задумывался такой носитель. На карте сделан переключатель защиты от записи (write protection switch).
Карты CompactFlash (CF) легко можно вставить в разъем PCMCIA Туре II. Несмотря на то что у PCMCIA 68 контактов, а у CF - только 50, конструкция карт CompactFlash обеспечивает полную совместимость и обладает всеми функциональными возможностями формата PCMCIA-AT А.
Все карты памяти Memory Stick (стандарт корпорации Sony) относительно совместимы между собой. Стандартом теоретически предусмотрен объем карты памяти до 2 Тбайт, хотя в реальности емкость достигает единиц гигабайт.
Карты SmartMedia практически вышли из употребления, их можно встретить только в очень старых цифровых камерах. Примечательно, что это был единственный стандарт, в котором контроллер находился не внутри карты, а в устройстве считывания.
Конструкция карт памяти неразборная - это непригодное для ремонта устройство. Бескорпусные микросхемы вместе с выводами залиты в компаунд и все вместе спрессованы в пластиковую оболочку. Добраться до кристалла можно лишь путем вскрытия устройства, но при этом почти неизбежно повреждение проводников.
Устройства считывания
Для считывания flash-диска USB достаточно обычного порта USB: компьютер видит подобные устройства как стандартный съемный диск благодаря их контроллеру. Контроллеры всех карт памяти обращены к компьютеру последовательными или параллельными интерфейсами - контактами на карте. Для каждого из этих интерфейсов нужен соответствующий переходник - дополнительный контроллер, согласующий данный интерфейс со стандартным портом USB.
Кард-ридер - устройство, состоящее из одного или нескольких подобных контроллеров, преобразователя питания и разъемов для разных карт памяти (рис. 4.3). Питание осуществляется от источника +5 В через кабель USB.
Рис. 4.3. Кард-ридер
Чаще всего встречаются «комбайны», рассчитанные на несколько типов карт: от 6 до 40. Слотов в кард-ридере гораздо меньше, так как каждое гнездо используется для нескольких типов карт, близких по размерам и расположению контактов. По своим характеристикам разные модели практически равноценны, а различаются, главным образом, количеством поддерживаемых типов карт и конструкцией.
Логическая организация
Прежде чем перейти к файловым системам flash-накопителей, нужно вспомнить об архитектуре NAND. В этой часто используемой памяти и чтение, и запись, и удаление информации происходят лишь блоками.
На жестких и гибких дисках величина блока составляет 512 байтов, не считая 59 служебных байтов, которые видны только контроллеру винчестера. Все файловые системы создавались именно с учетом этих значений. Проблема в том, что во flash-памяти величина блока стирания, за редким исключением, не совпадает с величиной стандартного дискового сектора в 512 байтов и обычно составляет 4,8 и даже 64 Кбайт. С другой стороны, для обеспечения совместимости блок чтения/записи должен совпадать с величиной дискового сектора.
Для этого блок стирания разбивается на несколько блоков чтения/записи с размером 512 байтов. На практике блок чуть больше: кроме 512 байтов для данных, в нем еще есть «хвост» (Tail) длиной 16 байтов для служебной информации о самом блоке. Физически расположение и количество блоков чтения/записи ничем не ограничены. Единственное ограничение - блок чтения/записи не должен пересекать границу блока стирания, так как он не может принадлежать двум разным блокам стирания.
Блоки чтения/записи делятся на три типа: действительные, недействительные и дефектные. Блоки, которые содержат записанные данные и принадлежат какому-либо файлу, являются действительными. Использованные блоки с устаревшей информацией считаются недействительными и подлежат очистке. Категорию дефектных составляют блоки, не поддающиеся записи и стиранию.
Еще одна особенность flash-памяти состоит в том, что запись информации возможна только на предварительно очищенное от предыдущей информации пространство. Когда необходимо записать информацию, микропрограмма контроллера должна решить, какие недействительные блоки нужно перед этим стереть. В большей части микропрограмм вопрос удаления недействительных блоков решается простейшим способом: как только определенная часть емкости flash-диска оказывается заполнена информацией, автоматически запускается механизм очистки недействительных блоков.
Для увеличения срока службы памяти используется технология управления износом (wear-leveling control), которая продлевает жизненный цикл кристалла памяти за счет равномерного распределения циклов записи/стирания блоков памяти. Побочный эффект - выход из строя одного блока памяти - не сказывается на работе остальных блоков памяти того же кристалла. Неподвижные блоки принадлежат файлам, которые долго или вообще никогда не изменялись и не перемещались. Наличие неподвижных блоков данных приводит к тому, что оставшаяся часть ячеек подвергается усиленному износу и быстрее расходует свой ресурс. Микропрограмма учитывает такие блоки и по мере необходимости перемещает их содержимое в другие ячейки.
Файловые системы flash-дисков и карт памяти, на первый взгляд, хорошо знакомы пользователям по жестким и гибким дискам. Это FAT16, реже FAT32: именно так предлагает отформатировать диск операционная система Windows. Стандартными средствами Windows ХР и Windows 7 диск можно отформатировать и в систему NTFS! Для этого нужно предварительно зайти в Диспетчер устройств и в окне свойств подключенного flash-диска на вкладке Политика выбрать значение Оптимизация для быстрого выполнения. Специальные программы от производителей, например HP USB Disk Storage Format Tool, позволяют форматировать flash-диски в NTFS и без таких усилий.
Однако внешнее сходство файловых систем твердотельных накопителей и обычных винчестеров обманчиво. Файловая система flash-памяти (Flash File System, FFS) лишь эмулирует обычный дисковый накопитель и состоит из блоков управления и блока инициализации. На самом деле об истинном расположении и адресации блоков памяти знает только контроллер flash-диска или карты памяти.
Это очень существенно при разных способах восстановления содержимого микросхемы flash-памяти. При считывании микросхемы памяти через ее «родной» контроллер в файле образа оказывается последовательность блоков в порядке их номеров или смещений. В начале находятся заголовок и таблица файловой системы. Если же считывание производится на программаторе, в начальных блоках дампа расположена служебная информация, а блоки с данными перемешаны почти беспорядочно. При этом служебная информация вряд ли будет полезна, поскольку она всецело зависит от модели контроллера и его прошивки - правильную последовательность блоков приходится составлять с большим трудом.
Некоторые фотоаппараты работают только с файловой системой RAW Способ записи фотографий на носитель с такой файловой системой, а также особенности форматирования самой карты зависят от модели аппарата и даже прошивки той или иной модели. Этот формат не стандартизирован и имеет много разновидностей. Обычно данные с таких карт могут восстановить лишь сервисные программы от изготовителя фотокамеры, а в качестве кард-ридера желательно использовать сам фотоаппарат.
Рис. 4.4. Окно форматирования flash-диска в Windows Vista SPl
Нововведением является файловая система exFAT (Extended FAT - расширенная FAT). Поддержка этой специально разработанной для flash-дисков файловой системы впервые появилась в Windows Embedded СЕ 6.0. С exFAT работают Windows Vista Service Pack 1 и Windows 7 (рис. 4.4).
Назначение новой файловой системы - постепенная замена FAT и FAT32 на flash-накопителях. В ней заложены некоторые черты, которые ранее были присущи только файловой системе NTFS:
Преодолено ограничение в размере файла в 4 Гбайт: теоретически лимит составляет 2^ байтов (16 эксабайтов);
Улучшено распределение свободного места за счет введения битовой карты свободного места, что уменьшает фрагментацию диска;
Снят лимит на количество файлов в одной директории;
Введена поддержка списка прав доступа.
Насколько скоро эта файловая система станет нормой для flash-накопителей, покажет время. Видимо, это произойдет не раньше, чем на операционную систему Windows 7 перейдет подавляющее большинство пользователей.