Программирование DSP Flash Programmer для DataFlash AT45DBxxx Sat, February 23 2019  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Flash Programmer для DataFlash AT45DBxxx Печать
Добавил(а) microsin   

Еще один драйвер Flash Programmer для среды IDE VisualDSP++ [1], но на этот раз для поддержки программирования микросхем последовательной памяти Atmel DataFlash серии AT45DB.

За основу был взят драйвер для микросхем Serial Flash M25P16 для компании Micron, исходный код которого поставлялся вместе с VisualDSP++ 5.0 (находится в каталоге Blackfin\lib\src\drivers\flash\M25P16\). Основные возможности драйвера:

1. Поддерживаются микросхемы DataFlash AT45DB021B, AT45DB041B, AT45DB081B, AT45DB161B, AT45DB321B, AT45DB642 (см. таблицу). Количество секторов и их размер определяются не константами, а вычисляются на основе идентификатора ID, прочитанного из регистра состояния микросхемы.

Микросхема ID Организация памяти Емкость
AT45DB021B 2 1024 страницы по 264 байта (16 секторов по 32 страницы) 256 килобайт
AT45DB041B 3 2048 страниц по 264 байта (16 секторов по 64 страницы) 512 килобайт
AT45DB081B 4 4096 страниц по 264 байта (16 секторов по 128 страниц) 1 мегабайта
AT45DB161B 5 4096 страниц по 528 байт (16 секторов по 256 страниц) 2 мегабайта
AT45DB321B 6 8192 страниц по 528 байт (32 сектора по 256 страниц) 4 мегабайта
AT45DB642 7 8192 страниц по 1056 байт (64 сектора по 256 страниц) 8 мегабайт

Примечание: поскольку в микросхеме DataFlash очень много довольно мелких страниц, и нет физического деления на секторы, в драйвере реализовано логическое деление всей памяти на секторы, в каждом из которых находится определенное количество страниц. Секторов может быть от 16 до 64, в зависимости от емкости микросхемы. Благодаря логическому делению на секторы удалось сохранить поддержку карты адресов в стандартной куче и ускорить операции стирания, осуществляемые по командам API Flash Programmer.

2. Запись и чтение осуществляется блоками размером страницы, с использованием внутреннего буфера микросхемы.

3. Для упрощения кода удалена поддержка записи и чтения данных с интервалом (величина параметра Stride может быть только равной 1).

4. Для отладки добавлена возможность вывода сообщений в порт UART0 (макрос umsg).

Микросхема DataFlash подключается к порту SPI0, чтобы можно было осуществлять с неё загрузку процессора. Драйвер тестировался на микросхеме AT45DB161B [4] и процессоре ADSP-BF538F. Схема подключения к процессору:

ADSP BF538 SPI FLASH AT45DB161

Чтобы исполняемый код мог загружаться, на входы BMODE0 и BMODE1 процессора нужно подать лог. 1 [2, 3]. Для формирования загружаемого образа в свойствах проекта нужно выбрать 8-битный файл загрузчика, формат может быть HEX или двоичный:

ADSP BF538 SPI FLASH M25P80 loader file format

Код из DataFlash грузится заметно медленнее, чем из Parallel Flash. Двоичный файл размером 32 килобайта загружается примерно за секунду.

[Что еще можно улучшить в драйвере]

1. Разобраться с задержками. Либо выкинуть их совсем, либо пересчитать их в реальные интервалы времени на основе тактовой частоты процессора. Это должно ускорить работу драйвера.

2. Вернуть поддержку интервалов адреса (stride) при работе с памятью.

3. Задействовать схему обмена данными с использованием двух буферов.

Исходный код и исполняемый DXE-файл драйвера можно скачать по ссылке [5].

[Ссылки]

1. VisualDSP API программирования FLASH для процессоров Blackfin.
2. Как происходит загрузка ADSP-BF533 Blackfin.
3. Blackfin: утилита elfloader.exe.
4. AT45DB161B: 16 мегабит DataFlash.
5. 190124FlashProgrammer-AT45DB.zip - исходный код и исполняемый файл драйвера (Debug\FlashDriver_AT45DBxxx.dxe).

 

Добавить комментарий


Защитный код
Обновить

Top of Page