-
Data: 2009-11-13 07:35:19
Temat: Re: AVR32 - jak ruszyc z tym prockiem
Od: SM <b...@k...com.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Znowu trochę posiedziałem nad prockiem.
Ale masakra.
Chyba z żadnym prockiem nie miałem tyle
kombinowania (chociażby ze samą strukturą
programu że asembler i linker poprawnie
przygotowali dane do ładowania do procka).
Skonfigurowałem procka, ruszyłem przerwania
na timerze.
Wszystko lekko rąbnięte przez sam fakt, że
Atmel dał flash od adresu 0x80000000 a to
w integer jest liczba ujemna! Asembler
głupieje przy bezpośrednim ustawieniu
sekcji org na ten adres, bo dla niego to
liczba ujemna i stwierdza że kompilacja
odbywa się w ujemną stronę. Trzeba więc
robić offset w linkerze. Ale tu kolejny
zgrzyt bo stałe zdefiniowane jako różnica
adresów wychodzą wtedy Linkerowi błędnie
(np. offset autoprzerwania względem EVBA).
Ostatecznie rozwiązałem to tak:
//
====================================================
=======================
// Start of data memory.
//
====================================================
=======================
.section .bss, "", @nobits
.org 0
stack_beg:
.skip 256
stack_end:
//
====================================================
=======================
// Start of program memory.
//
====================================================
=======================
.section .text, "ax", @progbits
.global _start
_start:
.incbin "isp.bin" // original bootloader saved from flash memory
//
====================================================
=======================
// Ints vectors.
//
====================================================
=======================
StartEVBA:
program_begin:
rjmp program_start
rjmp Int0Handler
rjmp Int1Handler
rjmp Int2Handler
rjmp Int3Handler
.equ Int0Offset, 4 >> 1
.equ Int1Offset, 8 >> 1
.equ Int2Offset, 12 >> 1
.equ Int3Offset, 16 >> 1
//
====================================================
=======================
// Timer 0 interrupt.
//
====================================================
=======================
Int0Handler:
// reset int flag
mov.w r8, TC0_BASE
ld.w r9, r8[TC_SR]
// change PA3 pin
mov.w r8, LBM_BASE
mov r9, (1 << 3)
st.w r8[LBM_OVR0T], r9
// int exit
rete
//
====================================================
=======================
// Program start.
//
====================================================
=======================
program_start:
// --- stack
mov.w sp, stack_end
****************************************************
************************
i ustawiam:
// set EVBA pointer
mov.w r0, StartEVBA
mtsr SYSREG_EVBA, r0
// set autovector offset for group 14
mov.w r0, INTC_BASE
mov.w r1, Int0Offset
st.w r0[INTC_IPR0 + 4*14], r1
i oczywiście wszystko działa, ale ile musiałem czasu stracić
żeby coś tak prostego zrobić.
Nie mogli dać flasha od 0x40000000. Przeciez mieliby wtedy 1GB
na rozbudowę RAM i 1GB (minus rejestry) na FLASH.
SM
Następne wpisy z tego wątku
- 19.11.09 07:41 SM
- 20.11.09 22:42 Adam Dybkowski
- 21.11.09 03:55 SM
- 21.11.09 03:58 SM
- 24.11.09 18:41 Artur M. Piwko
- 25.11.09 04:45 SM
Najnowsze wątki z tej grupy
- Zasilanie własnych konstrukcji przez PoE
- Jak działa domofon?
- Co oni mierzą miernikiem
- 40 lat OrCAD-a
- Multimetr z bluetooth
- Ciekawa mapka z BTS-ami
- Lampy uliczne LED z kubkiem
- Pęczniejące LiPo
- wyłącznik ścienny
- "Wybitna" inteligencja AI
- test stereo
- Bluetooth stereo
- W USA budują pierwszą komercyjną elektrownię fuzji jądrowej
- Weryfikacja myjki ultradźwiękowej
- zasieg radaru
Najnowsze wątki
- 2025-10-14 Żurkotura uczy: Starannie dobieraj miejsca popełnienia "grupy czynów" bo ci sąd wybiorą [UE-poseł Braun]
- 2025-10-14 Karalność kibiców z RP3 za okrzyki "jak Tusk opisał" na meczu na wyjeździe [Kowno/Litwa]
- 2025-10-13 Reżim Talibów w Afganistanie zakazał kobietom: pracy w większości zawodów, studiowania, nauki w szkołach średnich i podstawowych!!!
- 2025-10-13 Państwowy Zamek Królewski w Warszawie wyegzekwował państwowy indeks ksiąg zakazanych?
- 2025-10-13 Podpierdolone ziemiaki
- 2025-10-13 Android na wirtualnej maszynie
- 2025-10-13 Pytanie prawne: Czym Bąkiewicz przekroczył karalność Sikorskiego za "Czas dorżnąć watachy"?
- 2025-10-13 Poznań => Dyspozytor Międzynarodowy <=
- 2025-10-13 Czy poseł Sterczewski (KO) przekroczył PRAWO? [min. KosiMysz (PSL)/Śp. sierżant]
- 2025-10-13 Warszawa => Engineering Manager <=
- 2025-10-13 Białystok => Delphi Programmer <=
- 2025-10-13 Warszawa => Senior Microsoft Dynamics 365 Business Central Konsultant
- 2025-10-13 Wpłaty anonimowe nie są darowizną
- 2025-10-12 Zasilanie własnych konstrukcji przez PoE
- 2025-10-12 Komunistyczna Partia Polski ciągle niezdelegalizowana (dzięki Żurkowi/Tuskowi) [TK]