QNX 6 BSP для процессорных модулей Fastwel В состав BSP входит:- примеры файлов построения образа QNX для загрузки с встроенного флэш-диска для плат CPC108, CPC150 и CPC502
- драйвер флэш-памяти, поддерживающий работу со сбойными блоками и адаптированная утилита etfsctl
- два варианта первичного загрузчика IPL для загрузки плат Fastwel с напаянного NAND флэш-диска: с и без PNP заголовком
- примеры скриптов, использующихся для перепрошивки флэш-памяти
- аудидрайвер для контроллера AMD CS5536
- утилита nand_check для проверки напаянной флэш-памяти на сбойные блоки и форматирования
Требования:Для работы c BSP требуется инструментальная система с установленным QNX 6.4.1 и средствами разработки.
Для загрузки из напаянной флэш-памяти необходимо, чтобы на процессорном модуле была установлена поддерживающая загрузку QNX версия BIOS.Установка и сборка:Распакуйте архив с BSP:
# mkdir bsp-nto641-fastwel
# cd ./bsp-nto641-fastwel
# unzip ../bsp-nto641-fastwel-1.2.0-20100412-bin.zipДля подготовки BSP к работе и сборки образов выполните команду:
# makeПримеры файлов построения образа QNX и скриптов для перепрошивки напаянной флэш-памяти находятся в директорию
images. Отредактируйте наиболее подходящий Вам файл построения и скрипт.
Например, для Fastwel CPC502 это будут файлы
cpc502.build и
reflash_cpc502.
Пересоберите образ QNX
# cd ./images/
# make cpc502Полученный образ QNX совмещенный с IPL -
ipl-ifs-cpc502.bin необходимо записать в напаянную флэш-память с помощью утилиты
etfsctl, входящей в состав BSP, через параметр -L. Процессорный модуль должен быть загружена в QNX 6.4.1. Загрузка может производиться с любого доступного альтернативного носителя - флоппи-диск, жесткий диск, CompactFlash, сеть.
В состав BSP входят примеры для создания загружаемого из флэш-памяти образа для плат CPC108 и CPC502. Однако, они могут быть легко адаптированы для требуемого оборудования. Например, скрипт для перепрошивки CPC103 (CPU686e):
#! /bin/sh
# Скрипт для создания загрузочного флэш-диска на плате Fastwel CPU686e.
# Драйвер fs-etfs-samsung512 и утилита etfsctl запускаются из текущего каталога.
# Каталог ./cpu686e_root/ содержит файлы необходимые для загрузки QNX6.
# ipl-cpu686e_ext - IPL для платы CPU686e. cpu686e.ifs - образ ОС, собранный с помощью mkifs.
set -v
slay -f fs-etfs-samsung512
rm -f cpu686e.img
# Запустить драйвер с возможностью "сырой" записи в раздел /dev/etfs1 размером 1000 Кб.
# Это значение (1000 Кб) может быть изменено и должно учитываться при всех последующих запусках драйвера, в т.ч. в образе ОС.
# Размер задаваемый в опции драйвера -Draw=1000 должен соответствовать размеру раздела /dev/etfs1.
# Опция -Draw= нужна только для Fastwel CPU686e и только на этапе записи образа, в дальнейшем драйвер должен запускаться без неё.
./fs-etfs-samsung512 -r 1000 -Draw=1000
waitfor /dev/etfs1
# Записать образ cpu686e.img. Должен состоять из последовательно идущих IPL и образа ОС *.ifs
cat ipl-fastwel cpu686e.ifs > cpu686e.img
./etfsctl -d /dev/etfs1 -e -W ./cpu686e.img
# Перезапустить драйвер и отформатировать раздел /dev/etfs2 с созданием файловой системы
slay -f fs-etfs-samsung512
./fs-etfs-samsung512 -r 1000
waitfor /dev/etfs2
etfsctl -d /dev/etfs2 -S -f -c
# Скопировать необходимые для загрузки QNX6 файлы на флэш-диск. По умолчанию раздел /dev/etfs2 монтируется в /fs/etfs/
cp -VR ../cpu686e_root/* /fs/etfs/
Процессорный модуль CPC150 работает с флэш-памятью через IDE контроллер, поэтому специализированный драйвер флэш-памяти и загрузчик не нужны.
Описание драйверов и утилит, поставляемых в составе BSP Fastwel--
fs-etfs-samsung512 [опции]
Драйвер fs-etfs-samsung512 обеспечивает работу с памятью Samsung NAND Flash, установленной на процессорные модули компании Fastwel, на основе файловой системы ETFS.
При старте драйвера создаются два устройства:
/dev/etfs1 - сырой раздел для хранения образа ОС (размер раздела задается параметром -r при старте драйвера)
/dev/etfs2 - раздел для файловой системы, основанной на транзакциях (ETFS)
Опции fs-etfs-samsung512:
-a Обновлять время доступа.
-b priority Выполнять фоновый сбор мусора на приоритете priority. По умолчанию: 8
-c nclusters Установить размер кэша. По умолчанию: 64 кластера.
-C 0|1|2 Убрать проверки/исправление ошибок. 0 - без crc и ecc проверок, 1 - с проверкой crc без ecc, 2 - с crc проверкой и ecc исправлением ошибок. По умолчанию: 2.
-e Стирать файловую систему при запуске.
-f numfiles Установить максимальное колличество файлов. По умолчанию: 4096. Максимум: 32767.
-F num Дефрагментировать если средний размер экстента меньше чем num кластеров.
-m mountpoint Установить точку монтирования. По умолчанию: /fs/etfs.
-o numattr Установить количество кэшируемых атрибутов. По умолчанию: 16
-r kbytes Установить размер раздела /dev/etfs1 в килобайтах. По умолчанию: 0.
-R reserve Установить процент резервируемой памяти. По умолчанию: 5%.
-s num Установить количество резервных блоков. По умолчанию: 4.
-S Использовать быстрый метод подсчета контрольной суммы вместо CRC.
-t sec Установить временной интервал для фоновых операций. По умолчанию: 5.
-v Уровень отладочных сообщений. С каждым v возрастает подробность.
-V Проверять данные чтением после каждой записи.
-W erasediff Установить уровень выравнивания изнашиваемости. По умолчанию: 50.
-x nextents Кэшировать заданное количество экстента. По умолчанию: 8.
-D driver_options Передать опции драйверу. Наберите -Duse для получения списка опций.
-D raw=num Записывать num первых Кб без заполнения spare области. Опция необходима для записи образа ОС в /dev/etfs1 для плат Fastwel CPU686, CPC108 и т.п.
Дополнительные опции драйвера и задание геометрии для работы с неподдерживаемыми чипами памяти:
Дополнительные опции задаются драйверу через параметр -D [дополнительные опции]:
-D use,nandid=id,nodelay,raw=Kb,delay=delay_ratio
use Описание опций
nandid=XX Использовать заданный идентификатор флэш-памяти (NAND ID) (например 0x73 для KM29U128T на CPC303)
raw=XXX Записывать данные в сыром виде, не записывая информацию от транзакциях, в область памяти до указанного значения.
Эта опция необходима для загрузки из флэш-памяти на некоторых платах.
Одновременно с этой опцией необходимо задавать драйверу опцию -r с аналогичным значением!
delay=XX Увеличить задержку при операциях с памятью на указанное количество мс.
geometry=XXX.XX.XX.XXXX Использовать указанную геометрию чипа памяти.
Строка должна состоять из цифровых значений, разделённых символом '.' :
Размер страницы (page, cluster) в байтах
Размер spare области (page spare area) в байтах
Количество страниц в блоке
Количество блоков
Например, 512.16.32.4096 для K9F1208U0B CPC108
32_bits Использовать 32х битную адресацию. Необходимо для некоторых плат (CPC108).
Другими словами, драйвер fs-etfs-samsung512 поддерживает задание геометрии через опцию -D geometry=XXX.XX.XX.XXXX
Где последовательно идёт через точку: размер страницы в байтах, размер spare области, количество страниц в блоке, количество блоков в устройстве.
Например, если чип K9F1208U0B с CPC108 не поддерживался-бы драйвером, то работать с ним можно было-бы так:
fs-etfs-samsung512 -v -r 3000 -m / -Dgeometry=512.16.32.4096,32_bits
Особенности использования:
Опция "-r kbytes" драйвера fs-etfs-samsung512 устанавливает размер раздела /dev/etfs1, предназначенного для образа в Килобайтах. Это значение должно указываться при всех последующих запусках драйвера, в т.ч. в образе ОС. Имеет смысл делать раздел несколько больше образа, тогда при изменениях образа в большую сторону не придется изменять файловую систему раздела /dev/etfs2.
Опция "-D raw=num" используется для записи файлов в сыром виде без заполнения spare области флэш-памяти и нужна только на этапе записи образа в раздел /dev/etfs1 например на платах CPU686e, CPC108 и т.п. (BIOS платы при каждом запуске с включенным флэш-диском производит его проверку и если spare области будут заполнены служебной информацией драйвера выведется сообщение об ошибке.) Для платы CPC502 задавать эту опцию не обязательно.
Размер, задаваемый в опции драйвера "-D raw= num", должен соответствовать размеру раздела /dev/etfs1 или быть большим. При работе с /dev/etfs2 опция -Draw категорически не нужна, т.е. после записи образа в /dev/etfs1 требуется перезапустить драйвер без опции -D raw=num.
Образ, записываемый в /dev/etfs1, должен состоять из последовательно идущих IPL и образа ОС, созданного с помощью mkifs.
Раздел ETFS по-умолчанию имеет точку монтирования /fs/etfs (изменяется опцией -m драйвера).
При загрузки QNX из флэш-памяти в файле построения образа ОС необходимо указать:
fs-etfs-samsung512 -r 3000 -m /
Драйвер зарезервирует 3000 Кб для раздела с образом и подмонтирует раздел с файловой системой в /.
Примеры перепрошивки флэш-памяти памяти можно найти в скриптах, поставляемых вместе с BSP.
--
etfsctl -d раздел [опции]
Утилита etfsctl используется для управления etfs разделами.
etfsctl, поставляемая в составе BSP отличается от штатной etfsctl наличием опции -L, позволяющей записывать образ в сыром виде. Использовать опцию -L требуется только на этапе записи образа в раздел /dev/etfs1. В отличии от стандартной опции записи -W, опции -L не требуется выравнивания записываемого образа до размера кратного размеру блока устройства и не передается служебная информация файловой системы ETFS, что необходимо для записи файла в "сыром" виде.
Все остальные опции не изменены и оставлены в первоначальном виде.
Опцией -d задается требуемый раздел:
/dev/etfs1 для загрузочного образа и /dev/etfs2 для файловой системы.
Например, для записи образа ipl-ifs-cpc108.bin на очищенный раздел dev/etfs1:
# etfsctl -d /dev/etfs1 -e -L ./ipl-ifs-cpc108.bin
Для форматирования раздела /dev/etfs2:
# etfsctl -d /dev/etfs2 -S -f -c
Опции etfsctl:
-c Возобновить операции с файловой системой.
-d device Указать используемой устройство (/dev/etfs1, /dev/etfs2).
-D Выполнить дефрагментацию.
-e Стереть все блоки на заданном устройстве.
-f Стереть и форматировать, с созданием файловой системы, заданное устройство.
-i Вывести информацию о разделе.
-r file Считать данные из устройства и сохранить в файле в виде транакций.
-R file Тоже, что и -r, но не пропускать чистые блоки.
-s Остановить файловую систему.
-S Тоже, что и -s, но дождаться завершения.
-w file Записать транзакции из файла в устройство.
-W file Тоже, что и -w, но не пропускать чисты блоки.
-L file Записать образ в сыром виде
--
nand_check [опции]
Консольная утилита QNX проверки напаянной NAND флэш-памяти плат Fastwel
Опции:
-s Проверить наличие чипа памяти
-f Затереть флэш-память
-c Проверить флэш-память на сбойные блоки
-v Подробный (Verbose) режим
Пример запуска:
nand_check -v -s -cПроверить наличие поддерживаемой флэш-памяти в системе и произвести проверки на сбойные блоки
nand_check -fЗатереть всю флэш-память
--
Ссылка на загрузку BSP