AVR na Linuxie


Linux jako platforma
Linux jako platforma
programistyczna dla
programistyczna dla
mikrokontrolerów AVR
mikrokontrolerów AVR
Konrad Miciński
Koło Naukowe Elektroników
Wydział Elektryczny
Politechnika Białostocka
styczeń 2006
I don't like this, but ...
Copyright by Konrad Miciński
Białystok 2006
Mikrokontroler = CPU core +
Mikrokontroler = CPU core +
RAM/ROM + I/O
RAM/ROM + I/O
"'
Przetworniki:

RAM: SRAM
'
ADC

ROM: EEPROM, Flash, ROM
'
DAC

I/O:
'
komparatory napięcia
"'
Magistrale:
'
PWM
'
pamięci zewnętrznej
"'
Układy nadzorujące:
'
RS-232 / 485
'
' watchdog (RTC)
I2C
'
'
liczniki (8 i 16 bitów)
1-Wire
'
'
kontrola napięcia
CAN
zasilania
'
USB
'
SPI
AVR ATmega
AVR ATmega


jednotaktowy, 8-io bitowy RISC
USART do 2Mbps
(128 instrukcji)

I2C

taktowanie: 0  16 MHz

SPI

8  128 kB Flash

10 bitowy ADC

0,5  4 kB EEPROM

16 bitowy PWM

1  4 kB SRAM

liczniki (8 i 16 bitów)

ochrona pamięci programu

watchdog

magistrala pamięci

wew. oscylator (8 Mhz)
zewnętrznej (64 kB)

programowanie  in-system

napięcia zasilania: 2,7  5,5 V
(SPI lub JTAG)
AVR ATmega
AVR ATmega

obudowy DIP, MLF i TQFP
ATmega8 (TQFP): 9x9x1 mm
Atmega128 (TQFP): 16x16x1 mm

wyprowadzenia 'wielofunkcyjne'
AVR ATmega
AVR ATmega
Jak to robi konkurencja
Jak to robi konkurencja

IDE:
"'
Atmel AVRStudio (asm, C)
"'
Bascom (BASIC)
"'
IAR Embedded Workbench (asm, C, C++)
"'
CodeVision AVR (asm, C)
"'
WinAVR (asm, C, C++)
"'
AvrSide (asm, C)

Emulatory:
"'
AVRStudio
"'
Visual Micro Lab
WinAVR
WinAVR
"'
Open Source
"'
AVR-GCC
"'
quasi-IDE
"'
'generator' Makefile-a
"'
łatwa integracja z
AVRStudio i AvrSide
"'
2006-01-25 <-> 2005-02-14
http://winavr.sourceforge.net/
AVR i Linux
AVR i Linux
Do-It-Yourself
"'
kompilacja narzędzi ze zródeł lub instalacja gotowych
pakietów
"'
brak centralnego repozytorium
"'
brak integracji komponentów
"'
oprogramowanie w rożnym 'stadium rozwoju'
"'
 closed  hardware
"'
wymagana znajomość elektroniki
Toolchain-HOWTO: binutils
Toolchain-HOWTO: binutils
$ tar -xvjf binutils-2.16.1.tar.bz2
$ cd binutils-2.16.1
$ ./configure --target=avr --prefix=$HOME/AVR \
--disable-nls
$ make
$ make install
"'
wersja: 2.16.1
"'
architektury: x86, x86_64
"'
avr-objcopy
http://www.gnu.org/software/binutils/
Toolchain-HOWTO: GCC-3.4.5
Toolchain-HOWTO: GCC-3.4.5
$ export PATH=$PATH:$HOME/AVR/bin
$ tar -xvjf gcc-3.4.5.tar.bz2
$ cd gcc-3.4.5
$ ./configure --target=avr --disable-nls \
--enable-languages=c \
--prefix=$HOME/AVR
$ make
$ make install
"'
architektury: x86, x86_64
"'
avr-gcc
http://gcc.gnu.org/
Toolchain-HOWTO: GCC-4.1.0
Toolchain-HOWTO: GCC-4.1.0
$ export PATH=$PATH:$HOME/AVR/bin
$ tar -xvjf gcc-4.1.0.tar.bz2
$ cd gcc-4.1.0
$ mkdir _GCC ; cd _GCC
$ ../configure --target=avr --disable-nls\
--enable-languages=c \
--disable-libssp \
--prefix=$HOME/AVR
$ make
$ make install
Opcje dla mikrokontrolerów AVR
Opcje dla mikrokontrolerów AVR

-mmcu=mcu - wybór układu

-minit-stack=N - adres początku stosu

-mno-interrupts - wyłącza obsługę
przerwań

-mtiny-stack - minimalizacja rozmiaru
stosu

-mint8 - zmiana wielkości typów
Toolchain-HOWTO: avr-libc
Toolchain-HOWTO: avr-libc
http://www.nongnu.org/avr-libc/
Autorzy:
"'
Marek Michałkiewicz
"'
Joerg Wunsch
avr-libc != glibc --target=avr
$ tar -xvjf avr-libc-1.4.3.tar.bz2
$ cd avr-libc-1.4.3
$ ./configure --prefix=$HOME/AVR --host=avr
$ make
$ make install
avr-libc  co jest w środku
avr-libc  co jest w środku

ioxxxx.h - adresy portów mikrokontrolera xxxx (np. iom128)

interrupt.h  obsługa przerwań

delay.h  generacja opóznień

sleep.h  wykorzystanie trybów 'uśpienia'

wdt.h  obsługa watchdoga

crc16.h  obliczanie 16 bitowej CRC

boot.h  obsługa bootloadera

parity.h  wyliczanie bitu parzystości

twi.h  obsługa I2C

math.h, stdio.h, string.h, errno.h, ctype.h ...
Toolchain-HOWTO: GDB
Toolchain-HOWTO: GDB
$ tar -xvjf gdb-6.4.tar.bz2
$ cd gdb-6.4
$ ./configure --target=avr --prefix=$HOME/AVR
$ make
$ make install
"'
wersja: 6.4
"'
architektury: x86, x86_64
"'
avr-gdb
http://www.gnu.org/software/gdb/gdb.html
Biblioteki dodatkowe
Biblioteki dodatkowe

Procyon AVRlib (http://hubbard.engr.scu.edu/avr/avrlib/)
"'
linia komend (terminal VT100)
"'
FAT16/32 (ro)
"'
moduły obsługi dla wbudowanych układów I/O
"'
obsługa tekstowych i graficznych LCD
"'
obsługa kart MMC/SD
"'
sterowniki do kart sieciowych (RTL8129)
"'
stos sieciowy (ARP, IP, ICMP, UDP, DHCP)

biblioteki na 'specjalne okazje'
"'
http://www.ulrichradig.de/site/atmel/avr_mmcsd/index.htm
Integracja narzędzi
Integracja narzędzi
Do-It-Yourself
"'
brak IDE
"'
próby rozwiązania problemu:
"'
podanie ścieżki dostępu do kompilatora
(emacs, jed ...)
"'
integracja 'w terminalu'
Kompilacja kodu zródłówego
Kompilacja kodu zródłówego
Kompilacja ręczna
$ avr-gcc -mmcu=atmega8 -Os -g \
-o test.out test.c
$ avr-objcopy -j .text \
-O ihex test.out test.hex
$ avr-objcopy -j .eeprom \
-O ihex test.out test-ee.hex
Kompilacja kodu zródłowego
Kompilacja kodu zródłowego
Kompilacja 'automatyczna' z wykorzystaniem GNU make
CC=avr-gcc
OBJCOPY=avr-objcopy
CFLAGS=-g -Os -mmcu=atmega8
test.hex : test.out
$(OBJCOPY) -j .text -O ihex test.out test.hex
test.out : test.c
$(CC) $(CFAGS) -o test.out test.c
Programatory
Programatory

programowanie in-system:
"'
SPI
"'
JTAG
"'
bootloader

programowanie poza systemem
"'
programatory równoległe
"'
układy emulatorów / debugerów (STK500)

problem  closed-hardware

konstrukcje własne programistów
Prosty programator ISP
Prosty programator ISP

komunikacja przez port równoległy (SPP)

bufor 74HC244

oprogramowanie
dla MS Windows
http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html
Prosty programator ISP
Prosty programator ISP
Programowanie układów
Programowanie układów
http://www.bsdhome.com/avrdude/

AVRDUDE
"'
kasowanie pamięci Flash i EEPROM
"'
ustawianie bitów konfiguracyjnych
"'
programowanie z wykorzystaniem portu równoległego
"'
programowanie przez interfejs RS232 i USB
"'
obsługa JTAG i emulatorów sprzętowych

Programowanie z poziomu 'maszyn wirtualnych'
(Vmware, bochs, qemu)
'Nietypowe' zastosowania
'Nietypowe' zastosowania

'klastry' obliczeniowe
"'
mini sieć z wykorzystaniem RS232

Websewery
"'
systemy RTOS z kompletnym stosem TCP/IP
http://www.ethernut.de/

Systemy operacyjne
"'
RTOS
"'
Contiki :) http://www.sics.se/~adam/contiki/
Nad czym obecnie pracuję
Nad czym obecnie pracuję
Warto przeczytać
Warto przeczytać

Atmel Application Notes for 8-bit AVR
http://www.atmel.com/dyn/products/app_notes.asp?family_id=607

Rafeeq Ur Rehman, Christopher Paul:  The Linux
Development Platform , Prentice Hall

Rich Neswold:  A GNU Development Enviroment for the
AVR Microcontroller

Rafał Baranowski:  Mikrokontrolery AVR Atmega w
praktyce , BTC

Jerzy Szczesiul:  AVR-GCC: kompilator C dla
mikrokontrolerów AVR , EP 3/2005 i pózniejsze
Dziękuję za uwagę
Dziękuję za uwagę
i zapraszam na show
i zapraszam na show
This document was written with Open Source programs.


Wyszukiwarka

Podobne podstrony:
praca dyplomowa serwer internetowy na linuxie
Hakowanie Na Linuxie cz1(Hakowanie WEB)
Hakowanie Na Linuxie cz2(Attack DDos)
HTTP Netware Sieć Intranet na Linuxie
zestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6
PKC pytania na egzamin
Prezentacja ekonomia instytucjonalna na Moodle
Serwetka z ukośnymi kieszonkami na sztućce
MUZYKA POP NA TLE ZJAWISKA KULTURY MASOWEJ
zabawki na choinke
Lasy mieszane i bory na wydmach nadmorskich
Analiza?N Ocena dzialan na rzecz?zpieczenstwa energetycznego dostawy gazu listopad 09
Sposob na wlasny prad

więcej podobnych podstron