-
11. Data: 2015-03-25 20:31:57
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
> Pliki .o nie zawieraja *jeszcze* adresów.
Też już do tego doszedłem :)
> Napisz dokładnie do czego to potrzebujesz. Prawdopodobnie szukasz czegoś
> innego niż myślisz.
Chodzi o oszczędność pamięci ram oczywiście :)
Na początku programu muszę odwołać się do tych funkcji tzn przekazać je jako
parametr do innej funkcji bibliotecznej
i zapomnieć tzn zwolnić pamięć ram.
Ponieważ do atmegi mam podłączoną pamięć dataflash i mogę przesyłać na nią
pliki binarne i tekstowe to chciałbym:
- wygenerować plik z adresami funkcji po kompilacji
- załadować go na stałę do dataflash
- później przy każdym uruchomieniu programu zaalokować pamięć odczytać do
niej zawartość pliku z adresami przekazać do funkcji bibliotecznej i zwolnić
pamięć.
Paweł
-
12. Data: 2015-03-25 21:22:19
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Wed, 25 Mar 2015 20:24:42 +0100, "pawel" <p...@p...onet.pl>
wrote:
> A jak go wygenerować?
> Bo linker generuje mi tylko program wynikowy .bin.
A elf"a nie generuje? Spróbuj:
avr-objdump -tShd file.bin > dump
--
Marek
-
13. Data: 2015-03-25 21:29:19
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Wed, 25 Mar 2015 17:29:52 +0100, Sebastian
Biały<h...@p...onet.pl> wrote:
> Pliki .o nie zawieraja *jeszcze* adresów.
E tam nie zawierają, zawierają adresy jako absolutne lokalne offsety
obiektu ;)
objdump -tShd main.o |less
Disassembly of section .text:
00000000 <init_leds>:
void init_leds(void) {
ClrWdt();
0: 24030001 li v1,1
4: 3c020000 lui v0,0x0
8: ac430000 sw v1,0(v0)
Kto zgadnie architekturę ;)?
--
Marek
-
14. Data: 2015-03-25 21:35:28
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
> A elf"a nie generuje? Spróbuj:
Generuje. Ale to nie jest dla debugera?
> avr-objdump -tShd file.bin > dump
Niestety File format not recognized
Paweł
-
15. Data: 2015-03-25 21:35:32
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Wed, 25 Mar 2015 20:31:57 +0100, "pawel" <p...@p...onet.pl>
wrote:
> Chodzi o oszczędność pamięci ram oczywiście :)
> Na początku programu muszę odwołać się do tych funkcji tzn
przekazać je jako
> parametr do innej funkcji bibliotecznej
> i zapomnieć tzn zwolnić pamięć ram.
> Ponieważ do atmegi mam podłączoną pamięć dataflash i mogę przesyłać
na nią
> pliki binarne i tekstowe to chciałbym:
> - wygenerować plik z adresami funkcji po kompilacji
> - załadować go na stałę do dataflash
> - później przy każdym uruchomieniu programu zaalokować pamięć
odczytać do
> niej zawartość pliku z adresami przekazać do funkcji bibliotecznej
i zwolnić
> pamięć.
Chyba nie rozumiem. Próbujesz kod przechowywać w zew. flash a później
go ładować do ram i tam go uruchamiać?
Wydawało mi się, że atnega ma arch. harvard i ciężko będzie coś
takiego zrobić.
No chyba, że ma możliwość adresowania (uruchamiania) kodu z zew.
flasha poprzez dodatkowe piny typu external bus.
--
Marek
-
16. Data: 2015-03-25 21:45:28
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Wed, 25 Mar 2015 21:35:28 +0100, "pawel" <p...@p...onet.pl>
wrote:
> Niestety File format not recognized
Ten bin na pewno jest elfem?
--
Marek
-
17. Data: 2015-03-25 21:46:51
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
> Chyba nie rozumiem. Próbujesz kod przechowywać w zew. flash a później go
> ładować do ram i tam go uruchamiać?
Nic z tych rzeczy. Chcę pobrać tylko adresy funkcji zapisane w pliku
(wskaźniki). Jak mam wskaźnik do funkcji to przecież
mogę ją wykonać. Oczywiście są to wskaźniki do funkcji w pamięci programu :)
Paweł
-
18. Data: 2015-03-25 21:52:58
Temat: Re: avr-gcc adresy funkcji
Od: Marek <f...@f...com>
On Wed, 25 Mar 2015 21:46:51 +0100, "pawel" <p...@p...onet.pl>
wrote:
> Nic z tych rzeczy. Chcę pobrać tylko adresy funkcji zapisane w
pliku
> (wskaźniki). Jak mam wskaźnik do funkcji to przecież
> mogę ją wykonać. Oczywiście są to wskaźniki do funkcji w pamięci
programu :)
A wywołanie jej "normalnie" jest złe, bo...?
Czy czasem nie zaczynasz rozwiązywać problemy nie istniejące w innych
arch.? Czemu nie użyjesz mcu odpowiedniego do danego zadania?
--
Marek
-
19. Data: 2015-03-25 21:53:08
Temat: Re: avr-gcc adresy funkcji
Od: Sebastian Biały <h...@p...onet.pl>
On 2015-03-25 20:31, pawel wrote:
> Chodzi o oszczedno?ae pamieci ram oczywi?cie :)
> Na pocz?tku programu musze odwo?aae sie do tych funkcji tzn przekazaae je jako
> parametr do innej funkcji bibliotecznej
> i zapomnieae tzn zwolniae pamieae ram.
AVR mają harvarda i takie sztuczki sa kłopotliwe.
> Poniewa? do atmegi mam pod??czon? pamieae dataflash i moge przesy?aae na ni?
> pliki binarne i tekstowe to chcia?bym:
> - wygenerowaae plik z adresami funkcji po kompilacji
> - za?adowaae go na sta?e do dataflash
A dlaczego nie może być w Flash? Jeśli może, a boisz się że zajmie RAM w
czasie inicjacji zmiennych globalnych, to zainteresuj się skryptem
linkera i atrybutami sekcji. Przypuszczalnie jesteś w stanie taką
"tablicę adresów funkcji" w trywialny sposób sobie zrobić bezpośrednio
we flashu. Swoją drogą robi się tak tablicę wektorów przerwań w wielu
cpu napędzanych gcc.
-
20. Data: 2015-03-25 22:24:03
Temat: Re: avr-gcc adresy funkcji
Od: "pawel" <p...@p...onet.pl>
>
> Ten bin na pewno jest elfem?
>
Mam dwa pliki .bin i .elf.
Użyłem polecenia na pliku .elf i wypluło masę informacji trochę podobnych do
tych z pliku .map :)