-
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
- stara idea nowe hardware
- Dzwonek gong z transformatorem
- espnow przerywa na jeziorze?
- 8080
- Portowanie CP/M
- radyjko
- Re: Basen i chłodzenie w w wentylacji mechanicznej
- Akumulatory VRLA
- ładowarka zmarła
- Podstawa bezpiecznikowa jako rozłącznik DC
- Napięcie akumulatora wyłączające UPS / jakie nowe akumulatory do UPS?
- nawigacja satelitarna
- SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- Głośnik piezoelektryczny
- Mala autonomiczna kamera monitoringu
Najnowsze wątki
- 2024-07-17 Lublin => Full Stack Java Developer <=
- 2024-07-17 Lublin => Java Full Stack Developer (+Angular) <=
- 2024-07-17 Turek => IT Project Manager (experience with C#) <=
- 2024-07-17 Warszawa => Mobile React Native Developer <=
- 2024-07-05 eSIM na czym polega
- 2024-07-15 Roaming poza unią
- 2024-07-16 Jak tanio dzwonic do Wielkiej Brytani?
- 2024-07-16 Dzień bez ICE
- 2024-07-15 Spalinówki płoną doszczętnie
- 2024-07-15 Pojemność akumulatora
- 2024-07-15 Elektryk8i dalej płoną.
- 2024-07-15 Motodziennik #284 NOWY MG HS z hybrydą oraz wraca FORD CAPRI (jako SUV)
- 2024-07-14 [FILM] SAMOCHODY ELEKTRYCZNE DO WIELKIE ŚCIEMA? TYLKO FAKTY!
- 2024-07-14 Znieczulica w narodzie
- 2024-07-13 Protect Your PC with IObit Malware Fighter Pro 11.3.0.1346 Multilingual