OpenOCD zaktualizowanie tak jak kompilator wcześniej.
Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda.
1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led
2. Zmiany w makefile:
Zaloguj się, aby zobaczyć kod
3. Rename i zmiany w linkerze:
Zaloguj się, aby zobaczyć kod
4. Zmiana plików do LPC na
stm32f0xx.h
system_stm32f0xx.h
5. Wstawienie przerobionej od STM32f4 tablicy wektorów:
Zaloguj się, aby zobaczyć kod
ciąg dalszy za kilka godzin
Chce podmienić pliki z folderu hdr oraz config gpio i main na poprzerabiane od przykładu stm32f1
Dodano po 3 [godziny] 59 [minuty]:
6. Zmiana plików w folderze HDR
hdr_gpio_masked_access.h
hdr_syscon.h
na
hdr_bitband.h
hdr_gpio.h (EDIT/ZMIANA --- GPIO f0 ma podobne z f4 a nie z f1
hdr_rcc.h
Wklejone bez zmian i mam małe pytanko czy bitband jest taki sam (po przejrzeniu dokumentacji organizacja pamieci w STM32F jest bardzo podobna ) I co z hdr_special_registers.h który użyć i czy trzeba przerabiać ??
7. Wstawienie przerobionego configa z STM32F1
Zaloguj się, aby zobaczyć kod
8.Wstawienie plików GPIO z f4 z f1 się nie nadaje bo tam GPIO są pod APB a tutaj jak i w f4 pod AHB
W gpio.h zmiana tylko includa na
Zaloguj się, aby zobaczyć kod
w gpio.c zmiana includa i zamiast AHB1 samo AHB wszędzie plus usunięcie nadmiarowych GPIO (E G H)
Zaloguj się, aby zobaczyć kod
9. No to main
Przerobiony od f4 który jest bardziej podobny do f0 od f4 (szczególnie jeśli chodzi o peryferia) Jednak flash wait states i pll_start wzięty od f1. W wait states przerobiona maksymalna wartośc na 1 a nie 2 a w pll start usunięty dzielnik na ahb (idzie tyle ile wyszło z plla)
Zaloguj się, aby zobaczyć kod
I to chyba wszystko z kodu co muszę przerobić. Mam nadzieje że ktoś mnie utwierdzi w przekonaniu i zrobię pierwszy build i wkleję wynik kompilacji( czekam z tym by nie narobić śmieci w projekcie. ) Co do openOCD wystarczy zmienić f4 na f0 w argumencie a w debugger config chyba tylko jak się nie mylę nazwę projektu. Ale tym się już będe głowił jak przejdzie kompilacja
Dodano po 15 [minuty]:
17:03:24 **** Incremental Build of configuration Default for project stm32f0_blink_led ****
make all
Assembling file: startup.S
arm-none-eabi-gcc -x assembler-with-cpp -c -mcpu=cortex-m0 -mthumb -g -ggdb3 -Wa,-amhls=out/startup.lst -MD -MP -MF out/startup.d -I. startup.S -o out/startup.o
Compiling file: gpio.c
arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/gpio.lst -MD -MP -MF out/gpio.d -I. gpio.c -o out/gpio.o
Compiling file: main.c
arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/main.lst -MD -MP -MF out/main.d -I. main.c -o out/main.o
Compiling file: vectors.c
arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -O0 -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wextra -std=gnu89 -g -ggdb3 -fverbose-asm -Wa,-ahlms=out/vectors.lst -MD -MP -MF out/vectors.d -I. vectors.c -o out/vectors.o
Linking target: out/stm32f0_blink_led.elf
arm-none-eabi-g++ -mcpu=cortex-m0 -mthumb -TSTM32F0x1_rom.ld -g -Wl,-Map=out/stm32f0_blink_led.map,--cref,--no-warn-mismatch -Wl,--gc-sections -nostartfiles out/startup.o out/gpio.o out/main.o out/vectors.o -o out/stm32f0_blink_led.elf
Creating extended listing: out/stm32f0_blink_led.lss
arm-none-eabi-objdump -S out/stm32f0_blink_led.elf > out/stm32f0_blink_led.lss
Creating memory dump: out/stm32f0_blink_led.dmp
arm-none-eabi-objdump -x --syms out/stm32f0_blink_led.elf > out/stm32f0_blink_led.dmp
Creating IHEX image: out/stm32f0_blink_led.hex
arm-none-eabi-objcopy -O ihex out/stm32f0_blink_led.elf out/stm32f0_blink_led.hex
Creating binary image: out/stm32f0_blink_led.bin
arm-none-eabi-objcopy -O binary out/stm32f0_blink_led.elf out/stm32f0_blink_led.bin
Size of modules:
arm-none-eabi-size -B -t --common out/startup.o out/gpio.o out/main.o out/vectors.o
text data bss dec hex filename
100 0 0 100 64 out/startup.o
376 0 0 376 178 out/gpio.o
344 0 0 344 158 out/main.o
160 0 0 160 a0 out/vectors.o
980 0 0 980 3d4 (TOTALS)
Size of target .elf file:
arm-none-eabi-size -B out/stm32f0_blink_led.elf
text data bss dec hex filename
1140 0 1024 2164 874 out/stm32f0_blink_led.elf
17:03:26 Build Finished (took 2s.104ms)
Dodano po 12 [minuty]:
Jest ok po prostu się nie odświeżyło z automatu mamy pliki out. Czas wgrać na płytkę.
Dodano po 18 [minuty]:
Sprawa wygląda tak program załadowany. Debuguje go prok po kroku. System init i gpioinit przechodzi nastpenie wchodzi do pllstart i zaraz po HSE_on wchodzi do default handler i w kolejnym kroku się wiesza i jest że nie może odczytać pamięci
Dodano po 38 [minuty]:
Kolejny problem nie działa bitband pomimo że cortex0 z tego co wiem też go obsługuje. Dodatkowo w pll start nie chce wyliczyć mul chyba nie da rady podzielić ulongów
Dodano po 21 [minuty]:
Znalazłem w ARM information centre rozwiązanie. Cortex M0 nie ma bitbandu. Ale jest
3.11. AHB bit-band wrapper for Cortex-M0 processor
The AHB bit-band wrapper, ahb_bitband.v, provides the bit-band functionality for the Cortex-M0 processor. Figure 3.19 shows the AHB bit-band wrapper module for the Cortex-M0 processor.
który emuluje bitbandy tylko jak go zaimplementować ??
Dodano po 13 [minuty]:
Pomyłka ten wrapper to tylko w Cortex-M System Design Kit a to chyba jest projektowanie fizyczne układu a nie programowe. Czyli musze cały bitbanding usunąc z projektu i tradycyjnie zmieniac rejestry
Dodano po 17 [minuty]:
EUREKA!!!! Działa wystarczyło wywalić bitbandy.
Poprzerabiam komentarze i myślę jutro lub pojutrze wstawię paczuszkę.