Помогите пожалуйста разобраться с драйвером.
Есть у меня плата на базе процессора at91sam9g25 (http://armdevs.com/CORE%209G25.html)
На плате есть две флэш памяти (sst25vf032b) которые сидят на одной шине spi (cs0, cs1).
Стоит задача чтения/записи этих микросхем.
Увидел в исходниках ядра 3.6.9 есть уже готовый драйвер для нужных мне микросхем и содержится это в модуле linux-at91\drivers\mtd\devices\m25p80.с
Собрал этот модуль и запустил ( insmod m25p80). Появилось вот это
ls /sys/module/m25p80_my
coresize holders initstate refcnt taint
drivers initsize notes sections uevent
ls /sys/module/m25p80_my/drivers/spi:m25p80_my
bind module uevent unbind
Что делать дальше? Читал что надо связать драйвер с устройством только пока не понял как это сделать.
в общем случае:
1. прописываете ваши флеши в структурах в файле платы, потом в п/п инита борды прописываете вызов регистрации девайсов на spi
2. в конфиге ядра разрешаете spi, ваш флеш и mtd кухню
3. пересобираете ядро и модули (если есть)
4. грузите ядро и смотрите в лог
должна проинтится подсистема SPI и продетектится два ваших флеша..
далее в /dev должны появится mtdX (где X номера для флешей)
все - флеши доступны для работы..
Получилось поднять одну микросхему. Как отредактировать dts чтобы можно было по одному интерфейсу дёргая разными chip_select-ами работать с двумя микросхемами ? Прикрепляю мои dts файлы. Attachment file: uploads/forum/forum-5e3eKc1wgr-4428.zip
пальцем в небо - попробуйте добавить в этой структуре:
еще один чипселект в поле cs-gpios и добавить описание второго чипа начинающееся с m25p80@1..[/quote]
Спасибо !!! Помогло !!!
Вот моя структура
spi0: spi@f0000000 {
cs-gpios = <&pioA 14 0
&pioC 31 0>;
/*
* Only valid for Embest and Ronetix modules,
* Cogent modules use an at45 dataflash.
*/
m25p80@0 {
compatible = "sst,sst25vf032b";
spi-max-frequency = <50000000>;
reg = <0>;
};
m25p80@1 {
compatible = "sst,sst25vf032b";
spi-max-frequency = <50000000>;
reg = <1>;
};
}
Теперь у меня задача научиться писать/читать эти микросхемы из user-space кода . Можно ли как-то посекторно писать/читать эти микросхемы ? Я пока делаю read/write из консоли командой cat > /dev/mtd9 и cat > /dev/mtd10
мнэ.. смотря, что за задачи и какого уровня..
если просто что-то туда бинарное валить из скрипта, то достаточно утилиты "dd" с подходящими параметрами..
если более "тонкие" движения, то наверно надо поискать как из Си работать с флешом - вероятно тут помогут исходники mtd-utils
еще вариант - натянуть флешовую ФС, типа jffs/jffs2.. я не смотрел объем ваших флешек, но ubifs скорее всего не подойдет..