• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение Работа модуля с SD картой

JustACat

Moderator
Команда форума
Discriminator, Andy Korg, ребята, а не может быть, что это подразумевается именно режим, где ESP выступает в роли ведомого устройства по SPI? А не режим, когда ESP с SD карты что-то грузит...
Просто тут недавно проскакивали дрова на Linux для использования ESP в качестве WiFi как раз вроде по SPI (хотя может вру).
Раздел "ESP8266EX SPI-Slave Mode" в том же доке...
Там скудненько, но описано как раз, что при этом ESP получает прошивку с хоста - то есть с ведущего устройства...
 

pvvx

Активный участник сообщества
@Andy Korg - Понял как оно, в ROM-BIOS:
Код:
main:  
    addi            a1, a1, 0xF0
    s32i.n          a12, a1, 4
    s32i.n          a13, a1, 8
    s32i            a0, a1, 0
    call0           uartAttach
    movi.n          a2, 0
    call0           Uart_Init
    call0           ets_install_uart_printf
    l32r            a12, a_0x60000200
    memw
    l32i            a0, a12, 0x118 ; 0x60000318
    extui           a0, a0, 16, 3
    beqi            a0, 6, _main_bm06
    memw
    l32i            a3, a12, 0x118 ; 0x60000318
    extui           a3, a3, 16, 3
    addi            a3, a3, -7
    beqz            a3, _main_bm07
    memw
    l32i            a4, a12, 0x118 ; 0x60000318
    extui           a4, a4, 16, 3
    addi            a4, a4, -4
    beqz            a4, _main_bm04
    memw
    l32i            a5, a12, 0x118
    extui           a5, a5, 16, 3
    bnei            a5, 5, _main_bm00_03
    movi            a2, 3
    call0           sip_init_attach
    j               _main_bm00_03
_main_bm06:                            
    movi            a2, 0
    call0           sip_init_attach
_main_bm07:                            
    movi.n          a2, 1
    call0           sip_init_attach
    j               _main_bm00_03
_main_bm04:                            
    movi.n          a2, 2
    call0           sip_init_attach
    j               _main_bm00_03
_main_bm00_03: 
    call0           rtc_get_reset_reason
    mov.n           a4, a2
 .....
Т.е. при состоянии битов пинов 4, 5, 6, 7 включается инициализация интерфейса sip (sip_init_attach()).
 

Discriminator

New member
А ведь и правда, кажись где-то на esp8266.com про этот режим читал. Вот только счас не найду хоть убей.
Я пока только это нашел: http://www.esp8266.com/viewtopic.php?f=6&t=1982

Но интересно вот что:
I removed the 25Q40 from one of my modules and attached an SD card socket (4bit mode, D0-D3, CMD, CLK) to the module.

If I set my serial port to 76800 I can see the boot messages:
- if there is no SD card in the socket, the bootloader reports bootmode 7,0 and in the next line "waiting for host"
- if I insert an SD card bootmode changes to 7,2
First digit (7) seems OK, (all lines (GPIO15, GPIO2, GPIO0) are '1'). I did not find anything about the second digit.
 

Andy Korg

Moderator
Команда форума
Последнее редактирование:

Discriminator

New member
Сейчас ремонтирую планшет 7". Там прошивка лежит на 4Гб T-Flash и все работает, в проце только загрузчик.
Возвращаясь к этому вопросу - у меня был планшетик на Freescale-вском камушке. Тоже использовалась только SD карта. Там примерно такой формат записи был на SD:
  • 0 сектор с таблицей разделов
  • u-boot
  • Linux kernel
  • сами разделы
 

pvvx

Активный участник сообщества
Код:
 ets Jan  8 2013,rst cause:2, boot mode:(7,6)

waiting for host
Но это не sip.
 

pvvx

Активный участник сообщества
У нас на сайте давно уже лежит это
Смотрите внизу таблицу
ESP8266 Pin Strapping
угу - там особенно понятно, что:
0- Remapping - это включение RX/TX на GPIO7/8 :)
Наверно по RS-TTL и грузится c SD :))
------
Пока не понятно какие там, в ROM-BIOS 4 типа инициализации sip?
Там устанавливаются неописанные нигде даже мельком регистры...
----
Все пути после вывода надписи "waiting for host" идут на "call0 UartDwnLdProc".
 
Последнее редактирование:

pet

Member
Всем алоха! что в итоге то получается? мастер или ведомый?
Я вот решил поподробней понять как и зачем spi выведен.... и совсем запутался!
подключаю к есп 12-f модуль микроSD по этому SPI, и всё! скетч не зальёшь!(на ардуино ide)
говорит нет синхронизации!)
 

af1283

New member
Дабы не плодить близких по содержанию тем!
Существует вот такой проект:
ESP8266 + SD/MMC + FAT16/32 Demo

И всё бы хорошо, но он у меня не работает. Конкретнее - чтение принятого байта по SPI всегда возвращает 0xFF, не смотря на то, что SD-карта исправно шлёт ожидание инициалиации(0х01). Пожалуйста, попробуйте этот проект сами и расскажите, работает ли он у вас. Также прошу помощи в работе SPI, т.к. хотелось бы все-таки понять, как правильно с ним работать в полнодуплексном режиме.
 

pvvx

Активный участник сообщества
Дабы не плодить близких по содержанию тем!
Существует вот такой проект:
ESP8266 + SD/MMC + FAT16/32 Demo

И всё бы хорошо, но он у меня не работает. Конкретнее - чтение принятого байта по SPI всегда возвращает 0xFF, не смотря на то, что SD-карта исправно шлёт ожидание инициалиации(0х01). Пожалуйста, попробуйте этот проект сами и расскажите, работает ли он у вас. Также прошу помощи в работе SPI, т.к. хотелось бы все-таки понять, как правильно с ним работать в полнодуплексном режиме.
Указанный проект не на 5-ть линий данных к SD. Это же ужасный тормоз - скорость будет ниже чем прием-передача по WiFi - нет смысла в нем ковыряться.
Может проще подключить SD к RTL871x – модуль стоит одинаково, полноценный аппаратный SDIOH контролер в него встроен, ПО, исходники, полная документация к контроллеру есть и всё работает и в среде СИ и RtlDuino с реальными трансферами за 8 мегабайт в сек...
 
Последнее редактирование:

af1283

New member
Указанный проект не на 5-ть линий данных к SD. Это же ужасный тормоз - скорость будет ниже чем прием-передача по WiFi - нет смысла в нем ковыряться.
Может проще подключить SD к RTL871x – модуль стоит одинаково, полноценный аппаратный SDIOH контролер в него встроен, ПО, исходники, полная документация к контроллеру есть и всё работает и в среде СИ и RtlDuino с реальными трансферами за 8 мегабайт в сек...
Я с вашими доводами согласен, но RTL871x у меня нет, а ESP есть. Сейчас попробовал ардуиновский код, что-то и там инициализация не проходит. Может ноге на ESPшке кабздык...
 

af1283

New member
Не думаю. Скорее всего что-то в коде.
Понимаете, очень странная ситуация. Выдача по SPI идёт как по маслу, чтение за редчайшим исключением возвращает FF. Проверял на осциллографе 3 дня, перелопатил 2 версии библиотеки SPI (за одно восхитился логикой работы SPI от Espressif), теперь вот взял скетчи для Arduino IDE. Результат отрицательный. С Arduino всё тоже самое, что и до этого - высылается команда на переход в режим SPI(0x 40 00 00 95), затем sd-карта даёт добро в виде сигнала R1(0x01), а дальнейшей последовательности инициализации sd уже нет.
 

pvvx

Активный участник сообщества
Понимаете, очень странная ситуация. Выдача по SPI идёт как по маслу, чтение за редчайшим исключением возвращает FF. Проверял на осциллографе 3 дня, перелопатил 2 версии библиотеки SPI (за одно восхитился логикой работы SPI от Espressif), теперь вот взял скетчи для Arduino IDE. Результат отрицательный. С Arduino всё тоже самое, что и до этого - высылается команда на переход в режим SPI(0x 40 00 00 95), затем sd-карта даёт добро в виде сигнала R1(0x01), а дальнейшей последовательности инициализации sd уже нет.
Т.е. вы хотите задействовать QSPI (4-х битный SPI)? C SD это сложно - там временные параметры очень критичны...
 
Сверху Снизу