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 linuxieHakowanie Na Linuxie cz1(Hakowanie WEB)Hakowanie Na Linuxie cz2(Attack DDos)HTTP Netware Sieć Intranet na Linuxiezestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6PKC pytania na egzaminPrezentacja ekonomia instytucjonalna na MoodleSerwetka z ukośnymi kieszonkami na sztućceMUZYKA POP NA TLE ZJAWISKA KULTURY MASOWEJzabawki na choinkeLasy mieszane i bory na wydmach nadmorskichAnaliza?N Ocena dzialan na rzecz?zpieczenstwa energetycznego dostawy gazu listopad 09Sposob na wlasny pradwięcej podobnych podstron