-
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
- Jaka ładowarka sieciowa do Iphona?
- Taśma izolacyjna do prac elektrycznych
- Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Re: Recenzja 3.1A ;) w 6 gniazdach...
- Wkrętarki, wiertarki...
- Zasilacz impulsowy 12V 10A, coś godnego uwagi jako zamiennik akumulatora wkrętarki
- Mouser - koszt wysyłki
- [OT] Jak wycinac ksztalt w piance lub styropianie?
- FV--> ciepła woda w kranie
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
Najnowsze wątki
- 2025-07-03 ROG
- 2025-07-03 OZE dały Polsce więcej prądu niż elektrownie węglowe
- 2025-07-03 Dlaczego nikt nie powiadamia służb!
- 2025-07-02 Jaka ładowarka sieciowa do Iphona?
- 2025-07-02 ,,The Plot to Get RFK" (,,Spisek, by pozbyć się RFK")
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Rozkaz 16-2025: 2025-06-19 Apelacja Do Wyroku Sądu Rej. w Sprawie IVRNs 295-23
- 2025-07-02 Rozkaz 17-2025: O Zaprzestaniu Zaciągania Kredytów
- 2025-07-02 Inżynierowie... inżynierzy...
- 2025-07-02 Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- 2025-07-02 Kto potrafi sprawdzić aku BMW 48V 10Ah Li-Ion do mini hybrydy, czy sprawny ?
- 2025-07-02 Warszawa => Senior IT Recruitment Consultant <=
- 2025-07-02 Gdańsk => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-07-02 Warszawa => IT Hardware Specialist - Wsparcie i Konfiguracja <=
- 2025-07-02 Warszawa => Inżynier oprogramowania .Net <=