Cortex M7 MPU a DMA

Josef Štengl ok1ced na nagano.cz
Středa Únor 13 16:18:29 CET 2019


Zakázat cache a bufferování je funkčně nejbezpečnějí a pokud to nebude fungovat je problém jinde, to jest pravda :-)

On 13. 02. 19 15:52, Jaroslav Buchta wrote:
> No musim nejak potlacit cache v oblastech pameti, kde pouzivamDMA, nebo je tam LCD atp. Takze to resim pres MPU coz je 
> IMHO nejelegantnejsi varianta reseni.
> write allocate zrejme znamena, ze se alokuje cache pri zapisu a vlastni zapis do pameti se neprovede vubec.
> 
> Zkousel jsem ruzne varianty konfiguraci a je to asi OK.  Nejlepsi zrejme je zakazat cache vseho v techto oblastech, stejne 
> to ctu nebo zapisuju procesorem jenom jednou u DMA prenosu
> 
> 
> Dne 13.02.2019 v 15:09 Josef Štengl napsal(a):
>> Co má co společného nastavení přístupu k paměti a DMA, kromě toho že ji DMA používá? No nechme toho.
>>
>> Pokud si správně pamatuji (když tak mě prosím opravte), tak shareable znamená, jestli je sdílená paměť více procesory. 
>> Tudíž u single CPU systému nastavit nulu a neřešit :-)
>>
>> Jestli myslíte cache CPU, tak to je úplně jiná věc než ostatní buffery u periférií. Prakticky když máte vypnuté 
>> bufferování, tak operace zápisu může být dokončena až po té, co je proveden zápis procesorem; prostě to déle trvá a CPU 
>> nečeká na dokončení, pokud další instrukce nepracuje s tím samým zařízením. Jednoduše: s B=1 můžou být operace čtení a 
>> zápisu rychlejší s pohledu procesoru, ale nemusí nutně souhlasit s aktuálním stavem zařízení, ne, že by to bylo chybné, 
>> ale aktuální stav může být poněkud opožděn od okamžiku začátku čtení / ukončení zápisu procesorem. Ve většině případů to 
>> opravdu nevadí. Nabývá významu (z hlediska rychlosti) u asynchronních sběrnic.
>>
>> Jen si nepamatuji, co znamená write allocate, ale to vás nezajímalo. :-)
>>
>>
>>
>> On 13. 02. 19 10:32, Jaroslav Buchta wrote:
>>> Jsem z toho trosku jelen, jak nastavit MPU pro cteni ze SRAM -> DMA, napr. vysilani UART a pro zapis DMA -> SRAM, 
>>> funkcni stav mam ale abych zbytecne neomezoval cache. Pro ethernet jsem to vzal podle prikladu a taky mi nastaveni neni 
>>> uplne jasne. (tabulka z PM v priloze)
>>>
>>> Descriptory v SRAM D2: TEX=0, C=0, B=1, S=0    - proc neni B=0, pro typ Device pisou, ze zapis muze byt bufferovan, to 
>>> nevadi?
>>>
>>> The different ordering requirements for Device and Strongly-ordered memory mean that the memory system can buffer a 
>>> write to Device memory, but must not buffer a write to Strongly-ordered memory.
>>>
>>>
>>> Rx Buffery jsou v defaultnim regionu ve SRAM D2, nemuze byt problem aktivni cache pro cteni?
>>>
>>> Tx Buffery maji TEX=0, C=1, B=0, S=0 - tady je to asi OK, zadna cache pro zapis, jen nevim, proc je S=0
>>>
>>> No a pro vlastni DMA prenosy jsem to nastavil:
>>>
>>> DMA->SRAM D2: TEX=0, C=1, B=0, S=0
>>>
>>> SRAM D2->DMA: TEX=0, C=0, B=1, S=0
>>>
>>> Je to OK?
>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list