-
Data: 2017-02-10 17:47:47
Temat: Re: programowanie i kasowanie dwu kostek flash na jednej magistrali
Od: Piotr Dmochowski <i...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2017-02-10 o 15:55, Pszemol pisze:
> Piotr Dmochowski <i...@p...onet.pl> wrote:
>> W dniu 2017-02-08 o 20:31, Pszemol pisze:
>>>
>>> Zerknij proszę jeszcze raz na deklarację wskaźnika pStatus oraz zmiennych
>>> Status1 i Status2.
>>> To są obiekty 32-bitowe a więc obie kostki pamięci odpowiedzialne są za ich
>>> zapis.
>>>
>>
>> while(Status1 = *pStatus, Status2 = *pStatus, (Status1 ^ Status2) & (1
>> << 2))
>> Przepraszam że zawracam głowę, ale jaki jest sens robienia XOR na
>> zmiennych pobierających wartość z tego samego adresu?
>> Tam (praktycznie) zawsze będzie false, chyba że procesor akurat trafi na
>> zmianę statusu drugiej kostki między jednym a drugim odczytem *pStatus,
>> ale z takim szczęściem to lepiej kupony wypełniać niż babrać się w kodzie ;)
>>
>
> Piotrze, świetne pytanie.
> Bo to jest ciekawy fragment procesu kasowania pamieci flash i zapisu do
> niej.
>
> Taka pamięć ma wewnątrz sterownik ktory kontroluje te procesy niejako z
> wewnątrz kostki. Obsługujesz go przez wspólną magistralę danych i adresów -
> scalak pracuje w dwu trybach: odczyt danych (wtedy działa jak klasyczny
> ROM) oraz kasowanie/zapis: wtedy uzyskujesz dostep do wewnetrznego
> sterownika umówioną sekwencję bajtôw w roli "sezamie otwórz się!" I wtedy
> możesz wydawać sterownikowi polecenia kasowania/zapisu konkretnych
> lokalizacji pamięci... A sterownik informuje Cie o postepie operacji
> kasowania i o błedach ustawiajac stan bitow szyny danych. Miedzy innymi
> zmienia on stan bitu D6 gdy operacja jest wciaz w toku. Stad w kodzie dwa
> kolejne odczyty i stad użycie sugestii "volatile" do kompilatora aby tych
> dwu odczytów nie "zoptymalizowal" myslac ze są bez sensu, tak jak Ty
> pomyślałes :-))
Widziałem deklarację z volatile, więc wiem że powinny być 2 odczyty.
Zastanawia mnie jaki jest sens odczytania danych z jednego adresu i
zrobienie na nich XORa. Jeżeli między jednym a drugim odczytem nie
będzie zmiany to wynik będzie zerowy i program nie wejdzie do pętli -
takie jest moje rozumowanie. Może w praktyce jakoś to działa, ale
zastanawiam się jaki jest margines błędu w takim rozwiązaniu.
Jak najbardziej rozumiem pobranie jednego statusu i sprawdzenie D6, bez
XOR to nie pójdzie?
Ja bym dał w pętli odczyt statusu i sprawdzenie D6. Wyjście z pętli
jeżeli D6 ma odpowiednią wartość lub liczba sprawdzeń przekroczyła np.
100 (i sygnalizacja błędu przekroczonego czasu trwania operacji).
Chyba że czegoś nie ogarniam i ten odczyt z pamięci ma jakieś dodatkowe
skutki i może spowodować zmianę odczytanej wartości, ale bez takiej
wiedzy nie do końca mi się to składa w całość.
Tak przy okazji pokazywania kodu - myślę że nawet po jednym zdaniu
komentarza przed kawałkiem kodu byłoby dobra zachętą do analizowania
przez grupowiczów, a i koledzy w pracy pewnie tez docenią jak będą
chcieli coś pozmieniać :)
--
Pozdrawiam
Piotrek
Następne wpisy z tego wątku
- 10.02.17 17:54 J.F.
- 10.02.17 19:43 Piotr Dmochowski
- 10.02.17 20:05 J.F.
- 10.02.17 20:19 Piotr Dmochowski
- 10.02.17 20:28 J.F.
- 10.02.17 21:06 Pszemol
- 10.02.17 21:06 Pszemol
- 10.02.17 21:19 Pszemol
Najnowsze wątki z tej grupy
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
- Czemu rozwaliło celę?
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
- Totaliztyczny obowiązek naprawy maszyn i urządzeń
- Niby uziom ale nie
Najnowsze wątki
- 2025-05-03 gazowe kuchnie są znacznie bardziej szkodliwe dla zdrowia, niż dotychczas sądzono
- 2025-05-03 Czyli jednak elektryki są TANIE i powszechnie dostępne dla obywateli
- 2025-05-03 Elektryki do Morskiego Oka do utylizacji
- 2025-05-03 Crash testy na publicznej drodze - 4 BMW zderzone
- 2025-05-03 pojebane Google
- 2025-05-03 Brednie w wiki - hasło Dehomag
- 2025-05-03 gazowe kuchnie są znacznie bardziej szkodliwe dla zdrowia, niż dotychczas sądzono
- 2025-05-03 Chiny => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu <
- 2025-05-03 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-05-03 Warszawa => Frontend Developer (Angular13+) <=
- 2025-05-02 Gliwice => Business Development Manager - Network and Network Security
- 2025-05-02 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-05-02 Polska => Senior Key Account Manager <=
- 2025-05-02 Warszawa => Senior Programmer C <=
- 2025-05-02 Gdańsk => Team Lead Data Engineer (Snowflake) <=