-
11. Data: 2010-03-20 20:56:20
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: Sebastian Biały <h...@p...onet.pl>
cepu69 wrote:
> A ja standartowo polecam eCos'a :http://ecos.sourceware.org/
No własnie po zabawie z FreeRTOSem czas na nastepnego ;) Zastanawiam się
nad ecos-em jako bazą do mojej apliakcji. Jęlsi faktycznie da się go
okroić do samych driverow to może to być bardzo intertesujące.
-
12. Data: 2010-03-21 01:12:04
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: Adam Dybkowski <a...@4...pl>
W dniu 2010-03-19 09:15, Sebastian Biały pisze:
>> BTW: Tyle że w AT91SAM7 nie ma takiego wsparcia dla własnych
>> bootloaderów, jakie jest np. w AVRach. "Bootloader" w tym przypadku to
>> zwykły kawałek softu, który leży sobie na początku Flasha. A cały
>> normalny program musisz linkować odpowiednio dalej (np. od 32KB).
>
> To nie ma znaczenia gdzie będzie fizycznie flash ładowany, byle by można
> potem zmienić wektory przerwań.
Z tym nie ma problemu. W kodzie bootloadera wstawiasz standardowy skok
przez wektor ładowany z rejestru kontrolera przerwań:
0x18: ldr pc, [pc, #-3872] ; fffff100
0x1c: ldr pc, [pc, #-3872] ; fffff104
A potem konfigurujesz konkretny adres przerwania IRQ i FIQ w kontrolerze
przerwań. Po starcie właściwego systemu możesz zmienić adres i już.
Można też dla uproszczenia nie korzystać w bootloaderze w ogóle z
przerwań (nie jest to problemem przy prostym dostępie do UARTu i karty
SD) a na początku bootloadera wstawić na stałe rozkazy skoków o 32KB do
przodu - jeżeli przyjmiesz tyle miejsca na swój bootloader. Potem w
kodzie docelowej aplikacji zajmiesz się przerwaniami jak chcesz.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
13. Data: 2010-03-22 14:20:00
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: cepu69 <c...@t...pl>
Sebastian Biały wrote:
> cepu69 wrote:
>> A ja standartowo polecam eCos'a :http://ecos.sourceware.org/
>
> No własnie po zabawie z FreeRTOSem czas na nastepnego ;) Zastanawiam się
> nad ecos-em jako bazą do mojej apliakcji. Jęlsi faktycznie da się go
> okroić do samych driverow to może to być bardzo intertesujące.
Tak ale np. wsparcie dla FAT-a wymaga : dynamicznej alokacji pamieci itd.
Zalaczam plik konfiguracyjny (opis uzytych komponetow) bez kernela, z
dolaczonymi m.in. pakietami LIBC, FAT, MMC.
-
14. Data: 2010-04-07 22:37:00
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: voland <v...@g...com>
On 21 Mar, 03:12, Adam Dybkowski <a...@4...pl> wrote:
> W dniu 2010-03-19 09:15, Sebastian Biały pisze:
>
> >> BTW: Tyle że w AT91SAM7 nie ma takiego wsparcia dla własnych
> >> bootloaderów, jakie jest np. w AVRach. "Bootloader" w tym przypadku to
> >> zwykły kawałek softu, który leży sobie na początku Flasha. A cały
> >> normalny program musisz linkować odpowiednio dalej (np. od 32KB).
>
> > To nie ma znaczenia gdzie będzie fizycznie flash ładowany, byle by można
> > potem zmienić wektory przerwań.
>
> Z tym nie ma problemu. W kodzie bootloadera wstawiasz standardowy skok
> przez wektor ładowany z rejestru kontrolera przerwań:
> 0x18: ldr pc, [pc, #-3872] ; fffff100
> 0x1c: ldr pc, [pc, #-3872] ; fffff104
> A potem konfigurujesz konkretny adres przerwania IRQ i FIQ w kontrolerze
> przerwań. Po starcie właściwego systemu możesz zmienić adres i już.
>
> Można też dla uproszczenia nie korzystać w bootloaderze w ogóle z
> przerwań (nie jest to problemem przy prostym dostępie do UARTu i karty
> SD) a na początku bootloadera wstawić na stałe rozkazy skoków o 32KB do
> przodu - jeżeli przyjmiesz tyle miejsca na swój bootloader. Potem w
> kodzie docelowej aplikacji zajmiesz się przerwaniami jak chcesz.
>
> --
> Adam Dybkowski
> http://dybkowski.net/
>
> Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Przypadkiem sie natknąłem na ten wątek bo mam podobne problemy też z
at91sam7s128. Generalnie juz napisalem se taki bootloader i wyglada na
to ze dziala. flashuje se binarke do pamieci pod adres 0x109000, i
sciągam potem pamieć na twardy dysk i zawartość się zgadza, ale mam
inny problem mianowicie nie wiem jak skonfigurowac linker dla programu
który ma być wgrany pod ten adres, niby skonfigurowalem coś w pliku
flash.lds czyli zmieniłem adres pamieci flash i jej wielkość, wygląda
to mniej więcej tak:
MEMORY
{
sram (W!RX) : ORIGIN = 0x200000, LENGTH = 0x8000
flash (RX) : ORIGIN = 0x109000, LENGTH = 0x17000
}
No i jak kompiluje ten program z parametrem optymalizacji -s0 to niby
działa ale kiedy próbuje skompilować to zoptymalizowane to już się
wysypuje.
-
15. Data: 2010-04-07 23:34:26
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: Adam Dybkowski <a...@4...pl>
W dniu 2010-04-08 00:37, voland pisze:
> at91sam7s128. Generalnie juz napisalem se taki bootloader i wyglada na
> to ze dziala. flashuje se binarke do pamieci pod adres 0x109000, i
> sciągam potem pamieć na twardy dysk i zawartość się zgadza, ale mam
> inny problem mianowicie nie wiem jak skonfigurowac linker dla programu
> który ma być wgrany pod ten adres, niby skonfigurowalem coś w pliku
> flash.lds czyli zmieniłem adres pamieci flash i jej wielkość, wygląda
> to mniej więcej tak:
>
> MEMORY
> {
> sram (W!RX) : ORIGIN = 0x200000, LENGTH = 0x8000
> flash (RX) : ORIGIN = 0x109000, LENGTH = 0x17000
> }
>
> No i jak kompiluje ten program z parametrem optymalizacji -s0 to niby
> działa ale kiedy próbuje skompilować to zoptymalizowane to już się
> wysypuje.
Jeszcze raz napisz, tyle że jaśniej. Ustawienia linkera (w szczególności
mapa obszarów pamięci) nie wpływają na proces kompilacji przecież, są
używane dopiero podczas konsolidacji. Więc nie może się po prostu
wysypywać (napisz jaki błąd dokładnie wystąpił?) kompilacja z powodu
przestawienia adresu obszaru Flasha.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
16. Data: 2010-04-08 07:26:37
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: voland <v...@g...com>
On 8 Kwi, 01:34, Adam Dybkowski <a...@4...pl> wrote:
> W dniu 2010-04-08 00:37, voland pisze:
>
>
>
> > at91sam7s128. Generalnie juz napisalem se taki bootloader i wyglada na
> > to ze dziala. flashuje se binarke do pamieci pod adres 0x109000, i
> > sciągam potem pamieć na twardy dysk i zawartość się zgadza, ale mam
> > inny problem mianowicie nie wiem jak skonfigurowac linker dla programu
> > który ma być wgrany pod ten adres, niby skonfigurowalem coś w pliku
> > flash.lds czyli zmieniłem adres pamieci flash i jej wielkość, wygląda
> > to mniej więcej tak:
>
> > MEMORY
> > {
> > sram (W!RX) : ORIGIN = 0x200000, LENGTH = 0x8000
> > flash (RX) : ORIGIN = 0x109000, LENGTH = 0x17000
> > }
>
> > No i jak kompiluje ten program z parametrem optymalizacji -s0 to niby
> > działa ale kiedy próbuje skompilować to zoptymalizowane to już się
> > wysypuje.
>
> Jeszcze raz napisz, tyle że jaśniej. Ustawienia linkera (w szczególności
> mapa obszarów pamięci) nie wpływają na proces kompilacji przecież, są
> używane dopiero podczas konsolidacji. Więc nie może się po prostu
> wysypywać (napisz jaki błąd dokładnie wystąpił?) kompilacja z powodu
> przestawienia adresu obszaru Flasha.
>
> --
> Adam Dybkowski
> http://dybkowski.net/
>
> Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
No więc racja byłem zmęczony już wczoraj w nocy więc mogłem
nagmatwać.
chodzi o to że boot loader napisałem a teraz program ktory ma być
zaladowany przez bootloader chcę tak ustawić aby dzialal po
zaladowaniu go do pamięci pod wcześniej wspomniany adres. P zmianie
wcześniej wspomnianego pliku (flash.lds) program kompiluje się dobrze,
niezależnie od tego czy skompiluje sie go z parametrem -0s czy -O0 i
bootloader ładuje go do pamięci po czym wykonuje skok bezwarunkowy pod
adres tego programu i teraz jest dla mnie dziwne to ze program
niezoptymalizowany działa a zoptymalizowany nie.
-
17. Data: 2010-04-08 07:27:14
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: voland <v...@g...com>
On 8 Kwi, 01:34, Adam Dybkowski <a...@4...pl> wrote:
> W dniu 2010-04-08 00:37, voland pisze:
>
>
>
> > at91sam7s128. Generalnie juz napisalem se taki bootloader i wyglada na
> > to ze dziala. flashuje se binarke do pamieci pod adres 0x109000, i
> > sciągam potem pamieć na twardy dysk i zawartość się zgadza, ale mam
> > inny problem mianowicie nie wiem jak skonfigurowac linker dla programu
> > który ma być wgrany pod ten adres, niby skonfigurowalem coś w pliku
> > flash.lds czyli zmieniłem adres pamieci flash i jej wielkość, wygląda
> > to mniej więcej tak:
>
> > MEMORY
> > {
> > sram (W!RX) : ORIGIN = 0x200000, LENGTH = 0x8000
> > flash (RX) : ORIGIN = 0x109000, LENGTH = 0x17000
> > }
>
> > No i jak kompiluje ten program z parametrem optymalizacji -s0 to niby
> > działa ale kiedy próbuje skompilować to zoptymalizowane to już się
> > wysypuje.
>
> Jeszcze raz napisz, tyle że jaśniej. Ustawienia linkera (w szczególności
> mapa obszarów pamięci) nie wpływają na proces kompilacji przecież, są
> używane dopiero podczas konsolidacji. Więc nie może się po prostu
> wysypywać (napisz jaki błąd dokładnie wystąpił?) kompilacja z powodu
> przestawienia adresu obszaru Flasha.
>
> --
> Adam Dybkowski
> http://dybkowski.net/
>
> Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
No więc racja byłem zmęczony już wczoraj w nocy więc mogłem
nagmatwać.
chodzi o to że boot loader napisałem a teraz program ktory ma być
zaladowany przez bootloader chcę tak ustawić aby dzialal po
zaladowaniu go do pamięci pod wcześniej wspomniany adres. P zmianie
wcześniej wspomnianego pliku (flash.lds) program kompiluje się dobrze,
niezależnie od tego czy skompiluje sie go z parametrem -0s czy -O0 i
bootloader ładuje go do pamięci po czym wykonuje skok bezwarunkowy pod
adres tego programu i teraz jest dla mnie dziwne to ze program
niezoptymalizowany działa a zoptymalizowany nie.
-
18. Data: 2010-04-08 08:49:36
Temat: Re: Bootloader dla SAM7 z flashowaniem z karty SD
Od: voland <v...@g...com>
On 8 Kwi, 09:27, voland <v...@g...com> wrote:
> On 8 Kwi, 01:34, Adam Dybkowski <a...@4...pl> wrote:
>
>
>
> > W dniu 2010-04-08 00:37, voland pisze:
>
> > > at91sam7s128. Generalnie juz napisalem se taki bootloader i wyglada na
> > > to ze dziala. flashuje se binarke do pamieci pod adres 0x109000, i
> > > sciągam potem pamieć na twardy dysk i zawartość się zgadza, ale mam
> > > inny problem mianowicie nie wiem jak skonfigurowac linker dla programu
> > > który ma być wgrany pod ten adres, niby skonfigurowalem coś w pliku
> > > flash.lds czyli zmieniłem adres pamieci flash i jej wielkość, wygląda
> > > to mniej więcej tak:
>
> > > MEMORY
> > > {
> > > sram (W!RX) : ORIGIN = 0x200000, LENGTH = 0x8000
> > > flash (RX) : ORIGIN = 0x109000, LENGTH = 0x17000
> > > }
>
> > > No i jak kompiluje ten program z parametrem optymalizacji -s0 to niby
> > > działa ale kiedy próbuje skompilować to zoptymalizowane to już się
> > > wysypuje.
>
> > Jeszcze raz napisz, tyle że jaśniej. Ustawienia linkera (w szczególności
> > mapa obszarów pamięci) nie wpływają na proces kompilacji przecież, są
> > używane dopiero podczas konsolidacji. Więc nie może się po prostu
> > wysypywać (napisz jaki błąd dokładnie wystąpił?) kompilacja z powodu
> > przestawienia adresu obszaru Flasha.
>
> > --
> > Adam Dybkowski
> > http://dybkowski.net/
>
> > Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
>
> No więc racja byłem zmęczony już wczoraj w nocy więc mogłem
> nagmatwać.
> chodzi o to że boot loader napisałem a teraz program ktory ma być
> zaladowany przez bootloader chcę tak ustawić aby dzialal po
> zaladowaniu go do pamięci pod wcześniej wspomniany adres. P zmianie
> wcześniej wspomnianego pliku (flash.lds) program kompiluje się dobrze,
> niezależnie od tego czy skompiluje sie go z parametrem -0s czy -O0 i
> bootloader ładuje go do pamięci po czym wykonuje skok bezwarunkowy pod
> adres tego programu i teraz jest dla mnie dziwne to ze program
> niezoptymalizowany działa a zoptymalizowany nie.
Dobra no to działa. generalnie zarówno program bootloader jak i
program loadowany starały się remapować adres zerowy na pamięć sdram
( zaraz po wystartowaniu). i teraz ten który robił to jako drugi
zawieszał sie, poprostu w programie ładowanym usunołem linijke
BOARD_RemapRam(); i działa. Dlaczego to moze powodować wieszanie sie
procka to nie wiem, w dodatku dzieje się tak tylko w przypadku
zoptymalizowanego kodu. Poczytam dokumentacje aby dowiedzieć się
więcej na ten temat. Pozdrawiam.