Отговори на тема  [ 28 мнения ]  Отиди на страница 1, 2  Следваща
STM f2 DMA 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение STM f2 DMA
Забатачих се с SDIO контролера и нещо не мога да включа на DMA вълна... То че имах бъгове имах, ама стигнах до някъде и не мога да разбера документацията ли е кофти или аз съм толкоз тъп :evil:

Значи пускам ДМА за SDIO и за удобство го пускам за всички командички дето четат данни. Не е само за при четене на сектори както в техните библиотеки. Демек дължината на трансфера може да е 8, 16 или повече байта... Но колкото и да се мъча не успявам да направя 8 байта трансфер.

Сега в SDIO-то казват че трансферите трябва да са 32-битови и по 4 в бърст, айде че трябва да е 32 бита е ясно, такова им е фифото, ама защо пък задължително 4 бърстта. То един бърст излиза 16 байта, пък има команди като ACMD51 дето са си 8 байта... То между другото и ДМА-то като му гледам документацията ако трансфера е 32 битов и трезхолда трябва да е фифо фул, демек и там изглежда като че ако правя 32 битов трябва да е по 16 байта.

Пробвах разни комбинации, общо взето резултатът е, че данните от SDIO-то винаги изчезват, дори да изключа DMA-то пак някъде изчезват в смисъл DCOUNT си стои нула и фифото като че ли е празно. Хайде да кажем че индикацията им нещо куца, понеже според прекъсванията изглежда като да е получило данните и всичко да е ОК.
От страна на ДМА-то обаче как си ъпдейтва регистрите напрово е пълна загадка. В смисъл аз пробвах всякакви комбинации с различни бърстове, с включено/изключено фифо на дма-то и т.н. И общо взето не винаги показва правилно. Има ситуации в които прави един 32-бито трансфер, а не го отразява. Има ситуации в които пък показва че е направило трансфер, а пък реално към паметта поне няма такъв. Изобщо пълна лудница.
Проблемът е че в нито една ситуация не мога да го накарам да направи трансфер на 8 байта, т.е. 2*32 бита... както и да го програмирам :?


Пет Окт 25, 2013 12:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
Не мога да ги разбера тия ST...

За DMA-то пишат:

Цитат:
Note: The Burst mode is allowed only when incremetation is enabled:
– When the PINC bit is at ‘0’, the PBURST bits should also be cleared to ‘00’


а в SDIO-то казват:

Цитат:
c) Program DMA2_Stream3 or DMA2_Stream6 Channel4 control register (memory
increment, not peripheral increment, peripheral and source width is word size).
d) Program DMA2_Stream3 or DMA2_Stream6 Channel4 to select the peripheral as
flow controller (set PFCTRL bit in DMA_S3CR or DMA_S6CR configuration
register).
e) Configure the incremental burst transfer to 4 beats (at least from peripheral side)
in DMA2_Stream3 or DMA2_Stream6 Channel4.


Пет Окт 25, 2013 12:27 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: STM f2 DMA
Здравей!
Темата за скапаното DMA2 на ST е обширна, но направо ти казвам няма да ти хареса (виж им ератата), особено като знам, че няма да се задоволиш с ограничаване броя използвани DMA канали.
Проблемите са решени едва в STM32F42xx и STM32F43xx. А STM32F2 серията направо са я изоставили, така, че там е загубена битка.
ето ти малко теми за размисъл:
https://my.st.com/public/STe2ecommuniti ... tviews=636

http://blog.frankvh.com/2012/01/13/stm3 ... nsactions/
https://my.st.com/public/STe2ecommuniti ... ?tags=SDIO


Пет Окт 25, 2013 2:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
Това с ератата го бях забравил... в случая не мисля че ме касае. Аз изобщо не мога да направя трансфер от 8 байта от SDIO чрез смотаното DMA...

Пък може и да има връзка, аз вече не знам как да им чета документацията на тия кретени... В ератата пише "When the DMA2 is managing AHB Peripherals (only peripherals embedding FIFOs) and also APB transfers in a concurrent way". Аз не ползвам все още нито една AHB периферия, съответно както и да превеждам AND-а не би трябвало да се отнася тая ситуация... От друга страна оня дето го открил бъга пише че ползва 2 APB (SDIO, ADC) и една AHB (DCMI) и ако пусне кои да е две имал проблеми..

Но както и да е, при мен си мисля че е друго...


Пет Окт 25, 2013 3:40 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: STM f2 DMA
Друго, друго, ти пълъпи на всички SDIO пиновете сложи ли? :)


Пет Окт 25, 2013 4:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
това пък защо? и каква връзка може да има с ДМА–то?


Пет Окт 25, 2013 4:16 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение Re: STM f2 DMA
Да речем, характерни особености на SDIO-то на STM-ките, иначе проблеми. :)


Пет Окт 25, 2013 4:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
ми имам на DAT0-2 и CMD, нямам на CLK щото предполага се че е push-pull а защо нямам на DAT3 не помня... може би щото картата трябва да има на тая линия, или съм го преписал отнякъде ;-)


Въпросът е, че проблемът ми е изцяло свързан с DMA. Поне така си мисля. За съжаление нещо не мога с brute force да им хвана логиката как правят заявките.

Примерно слагам PBURST = 0, което означава че DMA-то ще може да трансферира на една дума (32-бит) стига SDIO-то да направи заявка. Явно прави една заявка, защото първата дума се вижда, след което ДМА-то седи и чака, а пък SDIO-то показва че има данни във фифото си.

Слагам PBURST=4, което означава че ДМА-то би трябвало да изчете 4 думи наведнъж... Тъй като преди това съм програмирал картата на 8 байта (2 думи) няма откъде да дойдат 4 думи. Но въпреки всичко става някакъв трансфер, само дето пак не е наред. Тук зависи как съм програмирал мемори страната на ДМА-то.
Ако сложа MBURST=4 - дма-то показва че е направило 1 трансфер но реално го е направило само към собственото си фифо, в паметта няма нищо...
Слагам MBURST=0 и фифо трезхолд =1/4. В паметта виждам че е получена 1 дума. ДМА-то отново показва 1 трансфер и неговото фифо е празно. Но пък SDIO фифото не е празно, явно там е останала втората дума. Нямам абсолютно никакво обяснение защо след като PBURST=4 то прави само 1 дума трансфер и защо не прави втората...

С две думи не откривам никаква логика... или нещо тотално съм се омотал, или тия ST са направили голяма чудесия. Все пак си мисля че комуникацията с картата е ОК. Най-малкото както казах идва интеръпт че е получен блока с данни успешно и се предполага че CRC-то на данните е наред. Пък и самите данни са или в SDIO-то или в DMA-то, само дето не мога да ги накрам да дойдат при мен ;-)


Пет Окт 25, 2013 4:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
взе че тръгна ;-)

бях забравил да сетна флоу контрола да е от DMA-то а не от периферията. Иначе продължава да не зависи много-много от това как програмирам ДМА-то. Бачка и с burst 0 и 4, a пък ДМА-брояча става минус 2. Няма значение, важното е че данните стигат до паметта ми ;-)


Пет Окт 25, 2013 5:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: STM f2 DMA
Миро, разбра ли го всъщност как работи това DMA в BURST режим с FIFO?

Аз конкретно имам следния казус - трансфер по SPI двупосочно. И на RX и на TX съм пуснал DMA, като на приемния съм сложил прекъсване на TCIF. Ако разреша FIFO-то на DMA-то, това какво значи за приемния(RX) канал? Ако да кажем съм му сетнал трешолда на половинаta от размера, то докато не се запълни наполовина няма да прехвърли данни към паметта, така ли? А ако общия брой байтове зададен за трансфер е по-малък от половината фифо? Ще си седят вътре во-веки, без да получа прекъсване от TCIF ли?Чета, има механизъм за флъшване, ама той предполага, че вече съм сигнализиран някак си, а аз искам то (ДМА-то на приемния канал) да ме сигнализира през TCIF.

Като цяло при трансфер от паметта към периферията, FIFO-то ми се връзва логично в главата, ама от периферия към памет... никак.

Нещо глупаво ми се види, май аз не го разбирам като хората, а?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Последна промяна Цецо на Чет Ное 28, 2013 4:48 pm, променена общо 1 път



Чет Ное 28, 2013 4:14 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
Това, което разбрах е че тая логика с бърстовете и фифотата се променя, в зависимост от това кой командва парада.

Би трябвало да е валидна когато ДМА-то е мастера. Само че в случая с SDIO-то как ли не го мъчех, не стана... явно за да не артисват данни ония са го набъзикали и то правеше каквото си иска в ролята на мастер. Когато SDIO-то е мастер всичко бачка. Друг е въпросът че и докумантацията е... В SDIO те карат да програмираш DMA-то по начин, който противоричи на документацията на самото DMA.

Както и да е, за SPI го ползвам без бърст (single transfer) и не съм си играл повече... Не искам да те подведа как ще се държи...


Чет Ное 28, 2013 4:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: STM f2 DMA
А на SPI ползваш ли FIFO? Щото аз това дето не го разбирам е осоновно във FIFO логиката, BURSTA просто слага още кал в блатото.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Ное 28, 2013 4:49 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
да, ползвам го, демек сложил съм дисейбъл на дайрект мода...


Чет Ное 28, 2013 4:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Re: STM f2 DMA
Е добре де как работи FIFO-то в режим от периферия към памет? Нещо не мога да го вдена на хартия описано. Начи нагласям някакъв трешолд (да кажем равносилен на 8 байта). Нагласям го примерно за трансфер на 4 байта и го пускам. От периферията почват да влизат данни и се наместват във фифото. Ама те са 4 броя, остават си там, щото не стигат трешолда, демек не се флъшват към паметта. Кой ще ми сигнализира, че 4те байта трансфер са приключили?

Начи това би следвало да работи, ако брояча за трансфери е преди фифото. Тогава той ще ми дигне TCIF след 4тия, аз ще забраня ДМА канала и той ще се флъшне към паметта. Ама това пък би могло да предизвика конфликт, щото ако бързо пробвам да аксесвам данните, може още да ги няма в паметта. Тук би трябвало да сработи бърста и да зключи AHB шината към DMA-то докато не си изпразни фифото. Тъй ли?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Ное 28, 2013 5:03 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: STM f2 DMA
Не ми се ще много да говоря без детайлно да съм прочел и пробвал. Това е ST мамка му.... и само с гола логика как би трябвало да е - не става.


Все пак...

Като му кажеш да е бърст би трябвало да трансферира на бърстове (освен при флъшване ако се прави изключение)
Като му кажеш че тряба да работи с тресхолд, значи трябва да чака тресхолда. (освен при флъшване...)

Нещо ме гложди че нямаха автоматичен флъш, дамек като му кажеш 8 байта тресхолд, от страна на периферията ще почне да чете когато има място за поне 8. Да кажем както в примера ти изчита 4. От другата стана ако пак с тресхолд 8, ще чака... и тия 4 байта ще ти седят във фифото като прани гащи. То отде да знае че няма да има повече ;-)

Така си мисля... ама пак ти казвам че с ST мразя да спекулирам ;-)


Чет Ное 28, 2013 5:19 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 28 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни