Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 lis 2024, o 17:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 21 sty 2016, o 10:59 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Cześć.

Uparłem się by somodzielnie napisać bootloader dla ATmega644.

Z przyswajaniem teorii znalezionej w nocie:
http://www.atmel.com/images/doc1644.pdf

jestem już na finiszu.

Postanowiłem napisać najprostszy "pre bootloader", który zapisze mi pierwsze 100 stron flash-a wartościami odpowiadającymi danej stronie.

Prawie się udało, tyle, że strony zapisywane są do połowy, tzn, zostaje zapisane pierwsze 128 bajtów, pozostałe zostają czyste (FF).

Obrazek

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Widzę, że strona się kasuje, a zapisuje się tak na prawdę zaledwie 128 bajtów (dla 128 słów powinno się zapisać 256 bajtów). Prawdopodobnie tu coś źle robię:

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Hmm... Do r0 ładuję pierwszy bajt słowa, do r1 ładuję drugi bajt słowa. czynność powtarzam 128 razy. 128 rozy po 2 bajty, następnie zapisuję stronę do flash. Kurcze powinno działać, a nie działa... (działa częściowo - zapisuje się pierwsze 128 bajtów).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sty 2016, o 13:32 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Bufor strony ładowany zgodnie z opisem...

Obrazek

Nie mam pojęcia w czym rzecz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sty 2016, o 10:45 
Offline
Użytkownik

Dołączył(a): 18 sty 2015
Posty: 170
Pomógł: 0

Temat rozwiązany. Działo się tak, gdyż, przy adresowaniu słowa należy pamiętać o tym, że bit Z0 rejestru Z jest ignorowany. Oznacza to, że przed wpisaniem adresu (numeru) słowa na stronie do rejestru R30 (rejestr Z składa się z rejestrów R31:R30) należy tą wartość przesunąć o jedną pozycję w lewo. Wówczas bit Z0 zawrze będzie przyjmował wartość zero, a adres słowa zostanie ustawiony na bitach Z1...Z7. I wtedy wszystko działa prawidłowo :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO