AVR na Linuxie

background image

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

ł

background image

Mikrokontroler = CPU core +

Mikrokontroler = CPU core +

RAM/ROM + I/O

RAM/ROM + I/O

RAM: SRAM

ROM: EEPROM, Flash, ROM

I/O:

Magistrale:

pamięci zewnętrznej

RS-232 / 485

I

2

C

1-Wire

CAN

USB

SPI

Przetworniki:

ADC

DAC

komparatory napięcia

PWM

Układy nadzorujące:

watchdog (RTC)

liczniki (8 i 16 bitów)

kontrola napięcia
zasilania

background image

AVR ATmega

AVR ATmega

jednotaktowy, 8-io bitowy RISC
(128 instrukcji)

taktowanie: 0 – 16 MHz

8 – 128 kB Flash

0,5 – 4 kB EEPROM

1 – 4 kB SRAM

ochrona pamięci programu

magistrala pamięci
zewnętrznej (64 kB)

napięcia zasilania: 2,7 – 5,5 V

USART do 2Mbps

I

2

C

SPI

10 bitowy ADC

16 bitowy PWM

liczniki (8 i 16 bitów)

watchdog

wew. oscylator (8 Mhz)

programowanie “in-system”
(SPI lub JTAG)

background image

AVR ATmega

AVR ATmega

obudowy DIP, MLF i TQFP

ATmega8 (TQFP): 9x9x1 mm
Atmega128 (TQFP): 16x16x1 mm

wyprowadzenia 'wielofunkcyjne'

background image

AVR ATmega

AVR ATmega

background image

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

background image

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/

background image

AVR i Linux

AVR i Linux

Do-It-Yourself

kompilacja narzędzi ze źródeł lub instalacja gotowych
pakietów

brak centralnego repozytorium

brak integracji komponentów

oprogramowanie w rożnym 'stadium rozwoju'

“closed – hardware”

wymagana znajomość elektroniki

background image

Toolchain-HOWTO: binutils

Toolchain-HOWTO: binutils

wersja: 2.16.1

architektury: x86, x86_64

avr-objcopy

$ tar -xvjf binutils-2.16.1.tar.bz2
$ cd binutils-2.16.1
$ ./configure --target=avr --prefix=$HOME/AVR \

--disable-nls

$ make
$ make install

http://www.gnu.org/software/binutils/

background image

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/

background image

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

background image

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

background image

Toolchain-HOWTO: avr-libc

Toolchain-HOWTO: 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

http://www.nongnu.org/avr-libc/

background image

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óźnień

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 I

2

C

math.h, stdio.h, string.h, errno.h, ctype.h ...

background image

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

background image

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

background image

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'

background image

Kompilacja kodu źródłówego

Kompilacja kodu źró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

background image

Kompilacja kodu źródłowego

Kompilacja kodu źró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

background image

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

background image

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

background image

Prosty programator ISP

Prosty programator ISP

background image

Programowanie układów

Programowanie układów

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)

http://www.bsdhome.com/avrdude/

background image

'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/

background image

Nad czym obecnie pracuję

Nad czym obecnie pracuję

background image

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óźniejsze

background image

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:
Aktualizacja kart przy użyciu tunera na Linuxie i programu The Last Drakkar
Poradnik programowania procesorów AVR na przykładzie ATMEGA8
Ratowanie tunerów na linuxie
Kurs Asemblera na AVR, AVR Assembler
Uniwersalny tester elementów na AVR
Interpretacja treści Księgi jakości na wybranym przykładzie
Wykład 1, WPŁYW ŻYWIENIA NA ZDROWIE W RÓŻNYCH ETAPACH ŻYCIA CZŁOWIEKA
zróżnicowanie religijne na świecie
WPŁYW STRESU NA NADCIŚNIENIE TETNICZE
Prezentacja na seminarium
Bezpieczenstwo na lekcji wf
CZLOWIEK I CHOROBA – PODSTAWOWE REAKCJE NA
Uważajmy na drogach Prezentacja
Vol 14 Podst wiedza na temat przeg okr 1
System Warset na GPW w Warszawie
Leki wpływające na czynność skurczową macicy

więcej podobnych podstron