-
Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!opal.futuro.pl!news.internetia.pl!ne
wsfeed.neostrada.pl!nemesis.news.neostrada.pl!atlantis.news.neostrada.pl!news.n
eostrada.pl!not-for-mail
From: SM <b...@k...com.pl>
Newsgroups: pl.misc.elektronika
Subject: Re: AVR32 - jak ruszyc z tym prockiem
Date: Fri, 13 Nov 2009 08:35:19 +0100
Organization: TP - http://www.tp.pl/
Lines: 127
Message-ID: <hdj2rp$m41$1@nemesis.news.neostrada.pl>
References: <hd1e7s$hqa$1@nemesis.news.neostrada.pl>
NNTP-Posting-Host: aafp111.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: nemesis.news.neostrada.pl 1258098361 22657 83.4.145.111 (13 Nov 2009
07:46:01 GMT)
X-Complaints-To: u...@n...neostrada.pl
NNTP-Posting-Date: Fri, 13 Nov 2009 07:46:01 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
In-Reply-To: <hd1e7s$hqa$1@nemesis.news.neostrada.pl>
Xref: news-archive.icm.edu.pl pl.misc.elektronika:575530
[ ukryj 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-17 Lublin => Programista Delphi <=
- 2025-10-16 Warszawa => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-10-16 Poznań => SAP HCR Consultant <=
- 2025-10-16 Warszawa => Junior Rekruter <=
- 2025-10-15 Z podwórka Roberta:(
- 2025-10-15 BNP Paribas likwiduje rachunki GOoptima
- 2025-10-15 "[...] w Łodzi kot Krzyś otrzymał zakaz przebywania w budynku [prokuratury - przyp. JMJ] [...] zwierzę podrapało jedną z prokuratorek."
- 2025-10-15 Zwłoki mężczyzny w łóżku wikarego. Biskup reaguje na tragedię
- 2025-10-15 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-10-15 nie klam w sieci
- 2025-10-15 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-10-15 Warszawa => C Programmer <=
- 2025-10-15 Zakrzewo => SAP HCM Consultant <=
- 2025-10-15 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-10-15 Warszawa => IT Recruiter <=