Czy mial ktos z Was do czynienia z konfiguarcją hardware polegającą na
32-bitowym procku (Arm Cortex M4) obsługującym dwie zewnętrzne pamięci flash 16-bitowe (ST:M29W640GL)?Wydawałoby się, że zadanie trywialne, a jednak kostki nie chcą współpracować... :-)
Obie kostki pamięci mają wspólne sygnały Cs, Oe, We i A0..Axx a magistrala danych po połowie 0..15 i 16..31 przydzielona odpowiednio do 0..15 każdej kostki.
Procek ustawiony na 32bit i aby używał "address shift mode" (EMC Shift Control bit w SCS registrze jest 0) więc "nie wie" ze sa dwi kostki w żaden inny sposob jak tylko to, że zamiast do kasowania sektora wysylac 16-bitowo
0x00AA i 0x0055 a potem 0x0080 wysylam 32-bitowo 0x00AA00AA, 0x00550055 i 0x00800080.I do tego problem jest ze czasem to dziala a czasem nie dziala. Jak nie dziala to albo przy zmieniajacym sie bicie 2 jest ustawiony bit 5 (error) a czasem juz na samym koncu przy sprawdzeniu odczytu skasowanej lokacji jest jedna kostka skasowana a druga nieskasowana (na szynie jest np 0xFFFF0000).
Czy do takiej konfiguracji pamieci podchodzi sie jakos inaczej do kasowania/programowania? Ktos sie podzieli doswiadczeniem?