| Author |
Message
|
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#211
24 Jul 2011 09:15 Re: Przykładowe projekty dla ARMów |
|
|
|
W braku tablicy wektorów (;
Przykładowy projekt pojawiłby się bardzo chętnie, tyle że nie mam niczego z takim układem - może pożyczysz jakąś małą makietkę na kilka dni? <:
W każdym razie proponowałbym postąpić zupełnie inaczej. Weź projekt dla STM32 - w nim jest najmniej do zmiany:
1. w skrypcie linkera ustawiasz inne adresy i rozmiary pamięci
2. w tablicy wektorów zmieniasz odpowiednio nazwy odpowiednich przerwań, usuwasz niewystępujące itd. (można się tu wspomóc tablicą dla lpc1114, wiele przerwań będzie identycznych)
3. w pliku main zmieniasz oczywiście kod inicjalizacyjny (; (uwaga j.w. - można częściowo skorzystać z kodu dla lpc1114)
W makefile i startupie nie zmieniasz nic - nie ma potrzeby.
4\/3!!
|
|
| Back to top |
|
 |
LordBlick Poziom 23

Joined: 31 Aug 2004 Posts: 3685 Location: Słupsk
|
#212
25 Jul 2011 09:52 Re: Przykładowe projekty dla ARMów |
|
|
|
| Longos wrote: |
| Czy jest nadzieja, że pojawi się podobny do LPC1117 projekt dotyczący LPC1759 ? Próbuje zgodnie z helpem w CMSIS NXP stworzyć make i skrypt linkera |
W LPCXpresso przykładów na migające diodki jest pełno dla każdego procesora wraz z Eclipse i skryptami linkera...
http://lpcxpresso.code-red-tech.com/LPCXpresso/
W wersji na Linux jest to katalog /usr/local/lpcxpresso_4.0.5_113/lpcxpresso/Examples/NXP
|
|
| Back to top |
|
 |
Google

|
#
25 Jul 2011 09:52 |
|
|
|
|
|
| Back to top |
|
 |
Longos Poziom 11

Joined: 27 Apr 2003 Posts: 60 Location: Opalenica
|
#213
25 Jul 2011 13:20 Re: Przykładowe projekty dla ARMów |
|
|
|
Skrypty linkera porozbijane są na trzy różne pliki, a makefile ma w sobie jakieś powiązania z plikami konkretnego projektu... Oj, trzyba było pozostać przy 8-bitowcach ;(
|
|
| Back to top |
|
 |
gaskoin Poziom 22

Joined: 02 Jun 2010 Posts: 2182 Location: Bytom
|
#214
25 Jul 2011 19:39 Re: Przykładowe projekty dla ARMów |
|
|
|
Trza było skleić to wszystko do kupy tak, żeby pliki były jak najbardziej uniwersalne.
|
|
| Back to top |
|
 |
markosik20 Poziom 22

Joined: 27 Mar 2003 Posts: 2032 Location: Będzin
|
#215
25 Jul 2011 23:23 Re: Przykładowe projekty dla ARMów |
|
|
|
| Longos wrote: |
| Skrypty linkera porozbijane są na trzy różne pliki, a makefile ma w sobie jakieś powiązania z plikami konkretnego projektu... Oj, trzyba było pozostać przy 8-bitowcach ;( |
Bo LPCExpresso posiada plugin (podobnie jak plugin AVR) do automatycznej generacji makefila oraz skryptów linkera. Niestety plugin jest "toporny" i stworzony tak żeby za dużo w nim nie można było poustawiać. Mnie nie udało się zmusić go do pracy z zewnętrznym kompilatorem (albo się nie da albo za mało wytrwały jestem :D ) i plugin uparcie chciał korzystać z kompilatora dostarczonego przez Code Red.
|
|
| Back to top |
|
 |
LordBlick Poziom 23

Joined: 31 Aug 2004 Posts: 3685 Location: Słupsk
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#217
26 Jul 2011 08:12 Re: Przykładowe projekty dla ARMów |
|
|
|
Plugin do automatycznej generacji Makefile jest dostępny normalny (GNU ARM Eclipse Plugin), a automatyczne generowanie skryptów linkera nie ma sensu... Jeśli ma się przykład dla danej architektury (czyli np dla Cortex-Mx), to naprawdę wystarczy w nim zmienić kilka cyferek, bo jedyne czym się różnią te skrypty to rozmiary i adresy pamięci (w obrębie jednej rodziny, np. STM32, tylko rozmiarami).
4\/3!!
|
|
| Back to top |
|
 |
Co_pat Poziom 13

Joined: 15 Oct 2007 Posts: 144 Location: Włocławek
|
#218
09 Sep 2011 21:12 Re: Przykładowe projekty dla ARMów |
|
|
|
Witam serdecznie!
Od dwóch dni walczę z LPC2148.
Eclipse skonfigurowałem wg artykułu Freddiego i dzięki temu poszło trochę z górki. Jako pierwszy projekt oczywiście od Freddiego lpc2103_blink_led-1.2.0-100415 w którym zmieniłem tylko następujące fragmenty:
Plik rom.ld:
__user_system_stack_size = 0x00000400; __fiq_stack_size = 0x00000004; __irq_stack_size = 0x0000100; __supervisor_stack_size = 0x00000004; __abort_stack_size = 0x00000020; __undefined_stack_size = 0x00000040; MEMORY { rom (rx) : org = 0x00000000, len = 512k ram (rwx) : org = 0x40000000, len = 32k }
Ale czy to wszystko i poprawnie?
Oczywiście program działał na LPC2148 ale wraz z powiększeniem kodu zaczynały się pojawiać problemy. Na początku okazało się, że wielkości stosów należało zmienić, a właściwie zadeklarować ( takie jak wyżej ). Teraz mam problem z operacjami na zmiennych typu float. Przykładowo takie operacje zwracają zero:
float a; int d; a = 1.234; d = (signed int)a*10.0;
Przeczytałem, że to może dotyczyć braku bibliotek? Czy to chodzi o libgcc.a i libm.a; w jaki sposób dołączyć je do linkowania. Na forum znalazłem, że należy je dodać w makefile, ale nie bardzo wiem jak?
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#219
10 Sep 2011 13:35 Re: Przykładowe projekty dla ARMów |
|
|
|
Co do stosów, to proponuję wpisywanie wartości podzielnych przez 8. Jeśli nie korzystasz z przerwań i innych dziwnych trybów, to rozmiar pozostałych stosów może być równy zero.
W jaki sposób stwierdzasz, że wynik jest zero? Bibliotek nie trzeba dołączać ręcznie, kompilator sam sobie z tym radzi. Jak chcesz go wspomóc koniecznie, to do zmiennej LIBS (czy jakos tak) w Makefile dopisz "-lm"
4\/3!!
|
|
| Back to top |
|
 |
Co_pat Poziom 13

Joined: 15 Oct 2007 Posts: 144 Location: Włocławek
|
#220
10 Sep 2011 14:09 Re: Przykładowe projekty dla ARMów |
|
|
|
| Freddie Chopin wrote: |
| Co do stosów, to proponuję wpisywanie wartości podzielnych przez 8. Jeśli nie korzystasz z przerwań i innych dziwnych trybów, to rozmiar pozostałych stosów może być równy zero. |
Właśnie dziś przeczytałem o tym w innym temacie. Właściwie jak na razie używam tylko wektoryzowanych przerwań, a wielkości stosów abort,irq i undef ustawiłem wg user maual.
| Freddie Chopin wrote: |
| W jaki sposób stwierdzasz, że wynik jest zero? |
np. mnożę zmienną float przez 10, rzutuję na int i wysyłam przez uart za pomocą itoa ( też Twojego autorstwa :-) ) Zdarzyło mi się też, że po mnożeniu przez 10 czy 100 wynik był jakby bez części po przecinku ( np. 2.345 * 100 = 200 ).
|
|
| Back to top |
|
 |
gaskoin Poziom 22

Joined: 02 Jun 2010 Posts: 2182 Location: Bytom
|
#221
10 Sep 2011 14:28 Re: Przykładowe projekty dla ARMów |
|
|
|
Nic dziwnego skoro rzutowanie ma wyższy priorytet niż mnożenie to :
(int)2.433444 * 100 = 2 * 100
co innego
(int)(2.58684 * 100)
|
|
| Back to top |
|
 |
Co_pat Poziom 13

Joined: 15 Oct 2007 Posts: 144 Location: Włocławek
|
#222
10 Sep 2011 14:48 Re: Przykładowe projekty dla ARMów |
|
|
|
| gaskoin wrote: |
Nic dziwnego skoro rzutowanie ma wyższy priorytet niż mnożenie to :
Kod C - [rozwiń]
(int)2.433444 * 100 = 2 * 100 |
Dzięki gaskoin nie wiedziałem, że rzutowanie ma wyższy priorytet.
Funkcje matematyczne typu atan() również już działają :)
Mój problem uważam za rozwiązany. Dziękuję Freddie Chopin i gaskoin.
|
|
| Back to top |
|
 |
PietrekDer Poziom 13

Joined: 01 Apr 2005 Posts: 135 Location: Chrzanów
|
#223
20 Nov 2011 14:12 Re: Przykładowe projekty dla ARMów |
|
|
|
Witam
Hmm, walczę od jakiegoś czasu z uruchomieniem toolchaina Eclipse + CodeSourcery itd dla STM32 (dokładnie STM32F107VCT) i mam pewien problem. Przejrzałem kilka różnych projektów, w których podpatrywałem pliki skryptowe linkera (*.ld) jak i pliki makefile. Na razie kompiluje mi się gdy przykładowo zrobię plik main.c z takim kodem:
void main() { while(1) {} } void SystemInit( void ) { }
Funkcja SystemInit jest wymagana, ponieważ projekt chcę oprzeć na bibliotekach dostarczonych przez ST (STM32F10x_StdPeriph_Lib_V3.5.0) a tam, plik startup odwołuje się właśnie do funkcji SystemInit.
Mój plik makefile wygląda tak (dla jednego pliku main.c):
# Project name PROJECT_NAME=simple OUT_DIR=obj CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy OBJDUMP=arm-none-eabi-size NM = arm-none-eabi-nm LDSCRIPT=stm32F107vct.ld # should use --gc-sections but the debugger does not seem to be able to cope with the option. LINKER_FLAGS=-nostartfiles -Xlinker -o$(PROJECT_NAME).axf -Xlinker -M -Xlinker -Map=$(PROJECT_NAME).map -Xlinker --no-gc-sections DEBUG=-ggdb OPTIM=-O0 CFLAGS=$(DEBUG) \ $(OPTIM) \ -T$(LDSCRIPT) \ -I . \ -D STM32F10X_CL \ -D USE_STDPERIPH_DRIVER \ -D VECT_TAB_FLASH \ -D GCC_ARMCM3 \ -D STACK_LWIP_130 \ -D inline= \ -D PACK_STRUCT_END=__attribute\(\(packed\)\) \ -D ALIGN_STRUCT_END=__attribute\(\(aligned\(4\)\)\) \ -mthumb \ -mcpu=cortex-m3 \ -ffunction-sections \ -fdata-sections SOURCE= main.c \ LIBS= OBJS = $(SOURCE:.c=.o) all: $(PROJECT_NAME).bin $(PROJECT_NAME).bin : $(PROJECT_NAME).axf $(OBJCOPY) $(PROJECT_NAME).axf -O binary $(PROJECT_NAME).bin $(PROJECT_NAME).axf : $(OBJS) startup_stm32f10x_cl.o Makefile $(CC) $(CFLAGS) $(OBJS) startup_stm32f10x_cl.o $(LIBS) $(LINKER_FLAGS) $(OBJS) : %.o : %.c Makefile $(CC) -c $(CFLAGS) $< -o $@ startup_stm32f10x_cl.o : startup_stm32f10x_cl.s Makefile $(CC) -c $(CFLAGS) -O1 startup_stm32f10x_cl.s -o startup_stm32f10x_cl.o clean : cs-rm $(OBJS) cs-rm startup_stm32f10x_cl.o cs-rm $(PROJECT_NAME).axf log : $(PROJECT_NAME).axf $(NM) -n $(PROJECT_NAME).axf > $(PROJECT_NAME)SymbolTable.txt $(OBJDUMP) $(PROJECT_NAME).axf > $(PROJECT_NAME)MemoryListing.txt
Natomiast mój plik skryptu linkera stm32f107vct.ld ma następującą zawartość:
/* Program Entry, set to mark it as "used" and avoid gc */ ENTRY(Reset_Handler) /* Memory Spaces Definitions */ MEMORY { RAM (RWX) : ORIGIN = 0x20000000, LENGTH = 64K FLASH (RX) : ORIGIN = 0x08000000, LENGTH = 256K EXTSRAM (RWX) : ORIGIN = 0x00000000, LENGTH = 0 EEMUL (RWX) : ORIGIN = 0x00000000, LENGTH = 0 FLASHB1 (RX) : ORIGIN = 0x00000000, LENGTH = 0 EXTMEMB0 (RX) : ORIGIN = 0x00000000, LENGTH = 0 EXTMEMB1 (RX) : ORIGIN = 0x00000000, LENGTH = 0 EXTMEMB2 (RX) : ORIGIN = 0x00000000, LENGTH = 0 EXTMEMB3 (RX) : ORIGIN = 0x00000000, LENGTH = 0 } /* higher address of the user mode stack */ _estack = ORIGIN(RAM)+LENGTH(RAM); /* start of the two 1kByte pages used by EEprom emulation at end of flash */ _seemul = ORIGIN(EEMUL); /* There will be a link error if there is not this amount of RAM free at the end. */ _Minimum_Stack_Size = 0x100 ; /* Check valid alignment for VTOR */ ASSERT(ORIGIN(FLASH) == ALIGN(ORIGIN(FLASH), 0x80), "Start of memory region flash not aligned for startup vector table"); /* Sections Definitions */ SECTIONS { /* the program code is stored in the .text section, which goes to Flash */ .text : { . = ALIGN(0x80); /* PM0056, Rev.1 (4/2009), 4.3.3 */ _isr_vectorsflash_offs = . - 0x08000000; KEEP(*(.isr_vectorsflash)) . = ALIGN(4); *(.text) /* code */ *(.text.*) /* remaining code (-ffunction-sections)*/ *(.stub .gnu.linkonce.t.*) *(.rodata .rodata.* .gnu.linkonce.r.*) /* read-only data (constants) */ *(.glue_7 .glue_7t) /* redundant for thumb2 ?! */ . = ALIGN(4); _etext = .; /* This is used by the startup in order to initialize the .data secion */ _sidata = _etext; } >FLASH /* This is the initialized data section The program executes knowing that the data is in the RAM but the loader puts the initial values in the FLASH (inidata). It is one task of the startup to copy the initial values from FLASH to RAM. */ .data : AT ( _sidata ) { . = .; . = ALIGN(4); /* This is used by the startup in order to initialize the .data section */ _sdata = . ; . = ALIGN(0x80); _isr_vectorsram_offs = . - 0x20000000; KEEP(*(.isr_vectorsram)) . = ALIGN(4); *(.ramfunc*) . = ALIGN(4); *(.data .data.* .gnu.linkonce.d.*) . = ALIGN(4); /* This is used by the startup in order to initialize the .data section */ _edata = . ; } >RAM /* This is the uninitialized data section */ .bss (NOLOAD): { . = ALIGN(4); /* This is used by the startup in order to initialize the .bss section */ _sbss = .; *(.bss .bss.*) *(COMMON) . = ALIGN(4); /* This is used by the startup in order to initialize the .bss section */ _ebss = . ; } >RAM PROVIDE ( end = _ebss ); PROVIDE ( _end = _ebss ); /* This is the user stack section This is just to check that there is enough RAM left for the User mode stack It should generate an error if it's full. */ ._usrstack (NOLOAD): { . = ALIGN(4); _susrstack = . ; . = . + _Minimum_Stack_Size ; . = ALIGN(4); _eusrstack = . ; } >RAM /* this is the FLASH Bank1 */ /* the C or assembly source must explicitly place the code or data there using the "section" attribute */ .b1text : { *(.b1text) /* remaining code */ *(.b1rodata) /* read-only data (constants) */ *(.b1rodata*) } >FLASHB1 /* this is the EXTMEM */ /* the C or assembly source must explicitly place the code or data there using the "section" attribute */ /* EXTMEM Bank0 */ .eb0text : { *(.eb0text) /* remaining code */ *(.eb0rodata) /* read-only data (constants) */ *(.eb0rodata*) } >EXTMEMB0 /* EXTMEM Bank1 */ .eb1text : { *(.eb1text) /* remaining code */ *(.eb1rodata) /* read-only data (constants) */ *(.eb1rodata*) } >EXTMEMB1 /* EXTMEM Bank2 */ .eb2text : { *(.eb2text) /* remaining code */ *(.eb2rodata) /* read-only data (constants) */ *(.eb2rodata*) } >EXTMEMB2 /* EXTMEM Bank0 */ .eb3text : { *(.eb3text) /* remaining code */ *(.eb3rodata) /* read-only data (constants) */ *(.eb3rodata*) } >EXTMEMB3 /* after that it's only debugging information. */ /* remove the debugging information from the standard libraries */ /* DISCARD : { libc.a ( * ) libm.a ( * ) libgcc.a ( * ) } */ /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) } .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) } } /* mthomas: from the STM example - moved here for now to keep it as reference, not used in the project (useful anyway?)*/ /* default stack size(s). These are used by the startup in order to allocate stacks for the different modes. */ __Stack_Size = 1024 ; PROVIDE ( _Stack_Size = __Stack_Size ) ; __Stack_Init = _estack - __Stack_Size ; /*"PROVIDE" allows to easily override these values from an object file or the commmand line.*/ PROVIDE ( _Stack_Init = __Stack_Init ) ;
(kod dla każdego pliku dałem w poście na C, żeby lepiej było czytać)
To że się kompiluje ok to jedno, ale myślę też że ustawienia w plikach są poprawne, jak np adresy pamięci SRAM czy FLASH w pliku *.ld
Jak chcę pododawać pliki CMSIS, biblioteczne do projektu to robię odpowiednie wpisy w makefile, we właściwościach projektu musiałem zlinkować także katalog include z CodeSourcery ( inaczej nie wiedział co to np uint16_t :] ).
I przy kompilacji mam dziwny błąd, wiem co oznacza, ale też jego lokalizacja jest dziwna, i nie wiem gdzie jest zdefiniowane, że procesor jest w trybie ARM :| Jest też jakiś problem ze skompilowaniem pliku stm32f10x_it, ale przecież tam nie ma żadnego konkretnego kodu, tylko puste funkcje będące uchwytami do przerwań :|
Jakby co, mogę też wrzucić mój przykładowy projekt z już zmodyfikowanym plikiem makefile dla bibliotek i CMSISa.
Z góry dziękuję za pomoc.
|
|
| Back to top |
|
 |
Google

|
#
20 Nov 2011 14:12 |
|
|
|
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#224
20 Nov 2011 14:36 Re: Przykładowe projekty dla ARMów |
|
|
|
Tylko co ma wspólnego Twój projekt z moimi przykładami? Przecież nie mają wspólnej nawet jednej linijki...
4\/3!!
|
|
| Back to top |
|
 |
Google

|
#
20 Nov 2011 14:36 |
|
|
|
|
|
| Back to top |
|
 |
PietrekDer Poziom 13

Joined: 01 Apr 2005 Posts: 135 Location: Chrzanów
|
#225
20 Nov 2011 15:27 Re: Przykładowe projekty dla ARMów |
|
|
|
Hmm, temat brzmi "przykładowe projekty dla armów" więc pomyślałem że tutaj umieszczę post z opisem mojego problemu. A miałem na myśli przykładowy projekt który bazuje na plikach dostarczonych ze standardową biblioteką od ST. Nie chciałem zakładać nowego tematu, skoro już takowy istnieje.
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#226
20 Nov 2011 15:52 Re: Przykładowe projekty dla ARMów |
|
|
|
Wystarczyło przeczytać pierwszy post i wiedziałbyś o czym jest ten temat, no ale po co - lepiej od razu maznąć nowego posta.
4\/3!!
|
|
| Back to top |
|
 |
PietrekDer Poziom 13

Joined: 01 Apr 2005 Posts: 135 Location: Chrzanów
|
#227
20 Nov 2011 16:30 Re: Przykładowe projekty dla ARMów |
|
|
|
Nie rozumiem o co się tak czepiasz i na jakiej podstawie sugerujesz, że gdy pojawił się problem od razu poleciałem na forum maznąć nowego posta. Czytałem cały temat (8 stron) od początku, a także różne inne tematy linkowane tutaj. Jednak początkowo głównie traktuje się tutaj o projektach na LPC2xxx. Przewijały się różne problemy, z makefilami, z plikami *.ld itp. Szukałem w sieci różnych innych przykładowych projektów, aby najpierw samemu poznać temat i spróbować rozwiązać problem.
Przepraszam bardzo, ale mogłeś nazwać temat "Przykładowe projekty dla ARMów Freddiego Chopina" jeśli tak bardzo razi Cię dyskusja o innym projekcie niż Twój. Chciałem tylko prosić o pomoc dlatego nie rozumiem Twojego ataku na mnie.
Ale przepraszam jeśli wszedłem w paradę ze swoim problemem do tego tematu :|
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#228
20 Nov 2011 16:59 Re: Przykładowe projekty dla ARMów |
|
|
|
Nawet nie musiałeś czytać tych kilku stron, wystarczyło przeczytać pierwszego posta, byle do końca. Przeczytałbyś tam m.in. to:
| Freddie Chopin wrote: |
| Wszelkie uwagi dotyczące tych kodów, jak i paczki z GNU Coreutils, wrzucajcie tutaj... |
Podkreśliłem Ci istotne słowo.
Masz swój problem, załóż więc sobie temat - nikt Ci nie broni, pewnie nawet ułatwisz życie chętnym do pomocy, bo nie będą musieli otwierać wątku na 8 stron.
4\/3!!
|
|
| Back to top |
|
 |
PietrekDer Poziom 13

Joined: 01 Apr 2005 Posts: 135 Location: Chrzanów
|
#229
20 Nov 2011 17:18 Re: Przykładowe projekty dla ARMów |
|
|
|
Hmm, czytać czytałem, tylko sam chyba zrozumiesz, że po przeczytaniu 8 stron postu i jeszcze kilku innych można zapomnieć o tym, co zacytowałeś. Dlatego tutaj przyznam Ci rację, mój błąd, zapomniałem że napisałeś iż dyskusja tyczy tych konkretnych przykładowych projektów. Chciałem dobrze, nie rzucać nowym tematem o przykładowym projekcie. Ale na razie nie będę zakładał nowego tematu, dostałem od użytkownika jakiś przykładowy projekt w Eclipse i znalazłem w sieci jeszcze jakieś materiały, dlatego jeszcze z tym powalczę sam :)
Pozdrawiam :)
|
|
| Back to top |
|
 |
atom1477 Poziom 25

Joined: 14 Jul 2005 Posts: 6595
|
#230
20 Nov 2011 19:25 Re: Przykładowe projekty dla ARMów |
|
|
|
| Freddie Chopin wrote: |
| Wszelkie uwagi dotyczące tych kodów, jak i paczki z GNU Coreutils, wrzucajcie tutaj... |
Na moje oko to nie zabrania wrzucania uwag z innych kodów tutaj.
Sugerje jedynie żeby nie wrzucać uwag do Twoich kodów gdzie indziej :D
PS. Nie mówię że racja nie jest po Twojej stronie tylko że akurat ten cytat który przedstawiłeś o tym nie świadczy. Żeby świadczył musiał by być zbudowany co najmniej tak:
"Tutaj wrzucajcie wszelkie uwagi dotyczące tych kodów, jak i paczki z GNU Coreutils, ..."
|
|
| Back to top |
|
 |
danrok Poziom 13

Joined: 15 Feb 2009 Posts: 124 Location: Zabrze
|
#231
20 Nov 2011 21:59 Re: Przykładowe projekty dla ARMów |
|
|
|
| atom1477 wrote: |
Na moje oko to nie zabrania wrzucania uwag z innych kodów tutaj.
Sugerje jedynie żeby nie wrzucać uwag do Twoich kodów gdzie indziej :D
PS. Nie mówię że racja nie jest po Twojej stronie tylko że akurat ten cytat który przedstawiłeś o tym nie świadczy. Żeby świadczył musiał by być zbudowany co najmniej tak:
"Tutaj wrzucajcie wszelkie uwagi dotyczące tych kodów, jak i paczki z GNU Coreutils, ..." |
a jak na moje oko, Twój poprawiony też o tym nie świadczy :D raczej powinno być: "Tutaj wrzucajcie wszelkie uwagi dotyczące tylko tych kodów, jak i paczki z ...." :D ale trochę offtop się zrobił :)
|
|
| Back to top |
|
 |
atom1477 Poziom 25

Joined: 14 Jul 2005 Posts: 6595
|
#232
20 Nov 2011 23:39 Re: Przykładowe projekty dla ARMów |
|
|
|
No nie ale mój ma poprawną formę jeżeli chodzi o nakierowanie co powinno być w tym wątku (czyli całkowicie nie nakazuje/zabrania ale przynajmniej nakierowuje) :D
|
|
| Back to top |
|
 |
ziajek00 Poziom 9

Joined: 21 May 2005 Posts: 33 Location: Zamość/Lublin/Warszawa
|
#233
24 Nov 2011 11:07 Re: Przykładowe projekty dla ARMów |
|
|
|
Skoro linker się nie zajmuje ustawieniem LSB tablicy wektorów, to chciałbym zapytać się jak to się dzieje?
Zasugerowałem się informacjami na tej stronie http://pygmy.utoh.org/riscy/cortex/led-stm32.html wprawdzie autor, tylko podejrzewa ;)
pzdr.
|
|
| Back to top |
|
 |
Google

|
#
24 Nov 2011 11:07 |
|
|
|
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#234
24 Nov 2011 11:24 Re: Przykładowe projekty dla ARMów |
|
|
|
Zajmuje się tym linker (na spółkę z kompilatorem oczywiście), ale nie sam skrypt linkera (jak napisałeś w pewnym temacie).
4\/3!!
|
|
| Back to top |
|
 |
ziajek00 Poziom 9

Joined: 21 May 2005 Posts: 33 Location: Zamość/Lublin/Warszawa
|
#235
24 Nov 2011 13:32 Re: Przykładowe projekty dla ARMów |
|
|
|
Czy chodzi o atrybut interrupt?
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#236
24 Nov 2011 14:17 Re: Przykładowe projekty dla ARMów |
|
|
|
Nope [; Chodzi o skompilowanie i zlinkowanie projektu z atrybutem -mthumb i ustawionym odpowiednim -mcpu=... .
4\/3!!
|
|
| Back to top |
|
 |
ziajek00 Poziom 9

Joined: 21 May 2005 Posts: 33 Location: Zamość/Lublin/Warszawa
|
#237
24 Nov 2011 15:43 Re: Przykładowe projekty dla ARMów |
|
|
|
Ok, tak myślałem, ale zbiło mnie z tropu to: http://pygmy.utoh.org/riscy/cortex/led-stm32.html w kontekscie tego co jest w manualu: mianowicie w pliku jest dyrektywa .thumb, jednak bez podciągnięcia wektora o 1 nie działa. Pokombinuję trochę i dopiero będę się pytał :)
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#238
24 Nov 2011 15:54 Re: Przykładowe projekty dla ARMów |
|
|
|
Dyrektywa .thumb jest dla assemblera. W końcu w przypadku C możesz zdecydować czy ma to być thumb, ARM, czy może kod na dowolną istniejącą platformę, tak w wypadku konkretnej funkcji w assemblerze raczej nie ma wyboru - ona musi być w konkretnym "języku", który dodatkowo podajesz wyżej, bo jednak pewne instrukcje są wspólne tekstowo (mov, ldr, str, b, ...), ale jednak da się je zakodować na wiele sposobów w zależności od "języka".
Niemniej jednak nigdy nie należy ręcznie dodawać jedynek do tablicy wektorów...
4\/3!!
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#239
10 Jan 2012 13:34 Re: Przykładowe projekty dla ARMów |
|
|
|
Po półtora roku ciszy postanowiłem w końcu odświeżyć nieco przykładowe projekty dla mikrokontrolerów z rdzeniem ARM. Sam nie wiem czemu nie zabrałem się za to wcześniej... Od czasu ostatniej aktualizacji kilka szczegółów konfiguracyjnych w Eclipse uległo zmianie, więc aktualizacja byłą jak najbardziej wskazana (;
Przy okazji do zestawu dołącza jeden nowy przykład przeznaczony dla układów STM32 Connectivity Line - STM32F105x i STM32F107x. Ponieważ w układach tych system zegara jest dużo bardziej rozbudowanych (żeby nie powiedzieć "dziwny") niż w "normalnych" STM32 to funkcja obliczająca cztery parametry (dwa dzielniki i dwa mnożniki) dla dwóch PLLi jest nieco... przydługawa (; No ale za to sama ustawia najwyższą osiągalną częstotliwość przy danym rezonatorze kwarcowym.
Główne zmiany to właśnie dostosowanie projektów do nowej wersji OpenOCD (0.5.0), Eclipse (Indigo SR1) i wtyczki GDB Hardware Debugging (7.0.0.201109151620). Poza tym w projektach dla STM32 dodałem funkcje do konfiguracji trybu pinów GPIO. "Widocznych" zmian jest mało, więc nastąpiła zmiana wersji tylko z 1.2.0 na 1.2.1.
Przykłady cieszą się niesłabnącą popularnością, przy czym najpopularniejszy z nich - stm32_blink_led - pobrany został już prawie 5000 razy! Tak więc zapraszam do pobierania zaktualizowanych wersji z mojej strony ( www.freddiechopin.info ) z działu Download > ARM > Przykłady.
P.S. Tak wiem - strona nie działała przez 2 dni, ale już jest (i miejmy nadzieję, że będzie) OK (;
4\/3!!
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7288 Location: Zawiercie
|
#240
15 Mar 2012 19:56 Re: Przykładowe projekty dla ARMów |
|
|
|
Hi!
"Robi się" przykład dla STM32F4 - czy ktoś podobnie jak ja uważa, że CCM RAM to idealna lokalizacja dla stosu i generalnie tylko dla niego? Jedyne "wady" tego obszaru to brak możliwości wykonywania z niej kodu (chyba) i brak możliwości dostępu DMA - wydaje się więc, że to całkiem dobre miejsce na stos - raczej nikt rozważny nie będzie wykonywał instrukcji ze stosu i dostęp DMA do stosu chyba tez nie jest koniecznie potrzebny...
Czy może przykłady powinny być max proste i żadnych kosmosów tego typu nie powinno w nich być?
4\/3!!
|
|
| Back to top |
|
 |