Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
Работа с модулем m25p80
rj45
Добавлено 17.06.2014 16:52
0
Сообщение: 1
rj45
0

Пункты: 432
Регистрация: 19.09.2011
Помогите пожалуйста разобраться с драйвером.
Есть у меня плата на базе процессора 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
Что делать дальше? Читал что надо связать драйвер с устройством только пока не понял как это сделать.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 17.06.2014 17:16 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
в общем случае:
1. прописываете ваши флеши в структурах в файле платы, потом в п/п инита борды прописываете вызов регистрации девайсов на spi
2. в конфиге ядра разрешаете spi, ваш флеш и mtd кухню
3. пересобираете ядро и модули (если есть)
4. грузите ядро и смотрите в лог
должна проинтится подсистема SPI и продетектится два ваших флеша..
далее в /dev должны появится mtdX (где X номера для флешей)
все - флеши доступны для работы..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rj45
Добавлено 17.06.2014 17:28 Сообщение: 3
rj45
0

Пункты: 432
Регистрация: 19.09.2011
А без пересборки ядра не обойтись? Хотелось бы для начала вручную как то связать модуль с mtd
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 17.06.2014 17:38 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
А без пересборки ядра не обойтись? Хотелось бы для начала вручную как то связать модуль с mtd

врядли..
как минимум, надо как-то указать что есть каналы SPI и там подключен определенный тип флеша..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rj45
Добавлено 17.06.2014 18:06 Сообщение: 5
rj45
0

Пункты: 432
Регистрация: 19.09.2011
спасибо. Тогда буду пересобирать ядро
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 17.06.2014 18:48 Сообщение: 6
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
спасибо. Тогда буду пересобирать ядро

угу.. у меня для imx6s прописано вот так:

Код
static struct flash_platform_data m25p40_spi_flash_data = {
.name = "spi_flash",
.parts = m25p40_partitions,
.nr_parts = ARRAY_SIZE(m25p40_partitions),
.type = "at25df641",
};

//static struct spi_board_info m25p40_spi0_board_info[] __initdata = {
static struct spi_board_info imx6_sabrelite_spi_devices[] __initdata = {
{
/* The modalias must be the same as spi device driver name */
.modalias = "m25p80",
.max_speed_hz = 20000000,
.bus_num = 3,
.chip_select = 0,
.platform_data = &m25p40_spi_flash_data,
},
};

вам видимо .type надо поправить и разобраться с номерами шин и чипселектами..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rj45
Добавлено 25.06.2014 18:25 Редактировалось 25.06.2014 18:30 Сообщение: 7
rj45
0

Пункты: 432
Регистрация: 19.09.2011
Получилось поднять одну микросхему. Как отредактировать dts чтобы можно было по одному интерфейсу дёргая разными chip_select-ами работать с двумя микросхемами ? Прикрепляю мои dts файлы.
Attachment file: uploads/forum/forum-5e3eKc1wgr-4428.zip
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.06.2014 00:12 Сообщение: 8
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Как отредактировать dts чтобы можно было по одному интерфейсу дёргая разными chip_select-ами работать с двумя микросхемами ?

пальцем в небо - попробуйте добавить в этой структуре:
Код
spi0: spi@f0000000 {
cs-gpios = <&pioA 14 0>;
/*
* Only valid for Embest and Ronetix modules,
* Cogent modules use an at45 dataflash.
*/
m25p80@0 {
/*compatible = "atmel,at25df321a";*/
*compatible = "sst,sst25vf032b";
spi-max-frequency = <50000000>;
reg = <0>;

еще один чипселект в поле cs-gpios и добавить описание второго чипа начинающееся с m25p80@1..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
rj45
Добавлено 26.06.2014 12:25 Редактировалось 26.06.2014 12:28 Сообщение: 9
rj45
0

Пункты: 432
Регистрация: 19.09.2011
Цитата
[quote]Как отредактировать dts чтобы можно было по одному интерфейсу дёргая разными chip_select-ами работать с двумя микросхемами ?

пальцем в небо - попробуйте добавить в этой структуре:
Код
spi0: spi@f0000000 {
cs-gpios = <&pioA 14 0>;
/*
* Only valid for Embest and Ronetix modules,
* Cogent modules use an at45 dataflash.
*/
m25p80@0 {
/*compatible = "atmel,at25df321a";*/
*compatible = "sst,sst25vf032b";
spi-max-frequency = <50000000>;
reg = <0>;

еще один чипселект в поле 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
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.06.2014 14:16 Сообщение: 10
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Теперь у меня задача научиться писать/читать эти микросхемы из user-space кода . Можно ли как-то посекторно писать/читать эти микросхемы ? Я пока делаю read/write из консоли командой cat > /dev/mtd9 и cat > /dev/mtd10

мнэ.. смотря, что за задачи и какого уровня..
если просто что-то туда бинарное валить из скрипта, то достаточно утилиты "dd" с подходящими параметрами..
если более "тонкие" движения, то наверно надо поискать как из Си работать с флешом - вероятно тут помогут исходники mtd-utils
еще вариант - натянуть флешовую ФС, типа jffs/jffs2.. я не смотрел объем ваших флешек, но ubifs скорее всего не подойдет..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux