62
OSHUG #24 1 / 56 19/03/2013 [email protected] @databasescaling Wednesday, 18 th April 2013

[email protected] @databasescaling19/03/2013 OSHUG #24 2 / 56 [email protected] @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 1 / 5619/03/2013

[email protected]@databasescaling

Wednesday, 18th April 2013

Page 2: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 2 / 5619/03/2013

[email protected]@databasescaling

Writing C For Constrained Systems

Wednesday, 18th April 2013

Page 3: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 3 / 5619/03/2013

[email protected]@databasescaling

Writing C For Constrained Systems

A Morse Code Beacon

Wednesday, 18th April 2013

Page 4: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 4 / 5619/03/2013

http://thestateofme.files.wordpress.com/2011/09/morse.png

­­ ... .­­. ....­ ...­­ ­­­­­

Page 5: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 5 / 5619/03/2013

TI Launchpad

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

Page 6: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 6 / 5619/03/2013

TI Launchpad

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Page 7: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 7 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers

Page 8: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 8 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers8 Channel 10-bit ADC

Page 9: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 9 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers8 Channel 10-bit ADCComparator

Page 10: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 10 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers8 Channel 10-bit ADCComparatorI2C, SPI, UART

Page 11: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 11 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers8 Channel 10-bit ADCComparatorI2C, SPI, UARTGeneral Purpose I/O

Page 12: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 12 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

$4.30

Timers8 Channel 10-bit ADCComparatorI2C, SPI, UARTGeneral Purpose I/OCapacitive Sense I/O Ports

Page 13: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 13 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

Page 14: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 14 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

16 MHz

16 KB Flash

256 Bytes RAM

Page 15: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 15 / 5619/03/2013

MSP430

http://processors.wiki.ti.com/images/thumb/a/ad/LaunchPad_wireframe.PNG/300px-LaunchPad_wireframe.PNG

16 MHz

16 KB Flash

256 Bytes RAM

16 MHz

16 KB Flash

512 Bytes RAM

Page 16: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 16 / 5619/03/2013

C

http://archive.computerhistory.org/resources/still-image/DEC/PDP-8/dec.boy_at_teletype.c1965.102627494.lg.jpg

Page 17: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 17 / 5619/03/2013

Arduino Uno

http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg

Page 18: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 18 / 5619/03/2013

ATMega 328

http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg

16 MHz

32 KB Flash

2 KB RAM

1 KB EEPROM

Page 19: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 19 / 5619/03/2013

Arduino Mega 2560

http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg

16 MHz

32 KB Flash

2 KB RAM

1 KB EEPROM

http://arduino.cc/en/uploads/Main/ArduinoMega2560_R3_Front_450px.jpg

Page 20: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 20 / 5619/03/2013

Arduino Mega 2560

http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg

16 MHz

32 KB Flash

2 KB RAM

1 KB EEPROM

http://arduino.cc/en/uploads/Main/ArduinoMega2560_R3_Front_450px.jpg

16 MHz

256 KB Flash

8 KB RAM

4 KB EEPROM

Page 21: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 21 / 5619/03/2013

AT Tiny 2313

http://www.sklep.semics.pl/bilder/Attiny.2313v-10su.jpg

Page 22: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 22 / 5619/03/2013

AT Tiny 2313

http://www.sklep.semics.pl/bilder/Attiny.2313v-10su.jpg

20 MHz

2 KB Flash

128 Bytes RAM

128 Bytes EEPROM

Page 23: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 23 / 5619/03/2013

C

http://cm.bell-labs.com/cm/cs/who/dmr/kd14.jpg

Page 24: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 24 / 5619/03/2013

http://thestateofme.files.wordpress.com/2011/09/morse.png

­­ ... .­­. ....­ ...­­ ­­­­­

Page 25: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 25 / 5619/03/2013

http://thestateofme.files.wordpress.com/2011/09/morse.png

­­ ... .­­. ....­ ...­­ ­­­­­

16 MHz 16 KB Flash 256 Bytes RAM

Page 26: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 26 / 5619/03/2013

main.c

//****************************************************************// Based on MSP430F20xx Demo - Software Toggle P1.0//// Description; Sends characters by morse// ACLK = n/a, MCLK = SMCLK = default DCO//// MSP430F20xx// -----------------// /|\| XIN|-// | | |// --|RST XOUT|-// | |// | P1.0|-->LED//// Chris Swan// September 2011//****************************************************************

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 27: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 27 / 5619/03/2013

Examples

Page 28: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 28 / 5619/03/2013

main.c

void dot(void){ P1OUT = 0x01; // LED on

shortpause();

P1OUT = 0x00; // LED off

shortpause();}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 29: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 29 / 5619/03/2013

main.c

void dash(void){

P1OUT = 0x01; // LED on

shortpause(); // dash is three times longer than dot shortpause(); shortpause();

P1OUT = 0x00; // LED off

shortpause();}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 30: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 30 / 5619/03/2013

main.c

void shortpause(void){ volatile unsigned int i;

i = 25000; // Delay do (i--); while (i != 0);}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 31: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 31 / 5619/03/2013

Page 32: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 32 / 5619/03/2013

main.c

void tap_A(void){ dot(); dash(); shortbreak();}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

∙−

Page 33: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 33 / 5619/03/2013

main.c

void tap_A(void){ dot(); dash(); shortbreak();}

void tap_B(void){ dash(); dot(); dot(); dot(); shortbreak();}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

−∙∙∙

Page 34: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 34 / 5619/03/2013

main.c

void tap_A(void){ dot(); dash(); shortbreak();}

void tap_B(void){ dash(); dot(); dot(); dot(); shortbreak();}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

void tap_C(void){ dash(); dot(); dash(); dot(); shortbreak();}

−∙−∙

Page 35: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 35 / 5619/03/2013

- .... . / --.- ..- .. -.-. -.- / -... .-. --

void main(void){

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timerP1DIR |= 0x01; // Set P1.0 to output direction

for (;;){

tap_T();tap_H();tap_E();longbreak();tap_Q();tap_U();tap_I();tap_C();tap_K();

longbreak();tap_B();tap_R();tap_O();tap_W();tap_N();longbreak();

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 36: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 36 / 5619/03/2013

Page 37: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 37 / 5619/03/2013

$ gcc -c main.c

Page 38: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 38 / 5619/03/2013

TEXT

http://nullprogram.com/img/pngarch/bin-ls.png

Page 39: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 39 / 5619/03/2013

TEXT

void tap_A(void){ dot(); dash(); shortbreak();}

Page 40: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 40 / 5619/03/2013

DATA

http://www.plantation-productions.com/Webster/www.artofasm.com/AoAExtra/HLAStrs-2.gifhttp://www.csse.monash.edu.au/~damian/Idioms/Topics/01.1.Array/html/ArrayInternals.gif

http://www.tutorialspoint.com/images/string_representation.jpg

Page 41: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 41 / 5619/03/2013

DATA

char prompt[] = “WELCOME> “;

char greeting[] = “Hello World!“;

byte command[] = { start_byte, cmd_type, cmd_id, serial_number, data_length_1, data_length_2, data_byte_1, data_byte_2, ., end_byte };

Page 42: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 42 / 5619/03/2013

BSS

http://commons.esipfed.org/sites/all/modules/contrib/media_gallery/images/empty_gallery.png

Page 43: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 43 / 5619/03/2013

BSS

char input_buffer[20];

char flag;

Page 44: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 44 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

Page 45: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 45 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

There are 12 section headers, starting at offset 0x938:

Section Headers:

[Nr] Name

Type Address Offset Link

Size EntSize Info Align

Flags

Page 46: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 46 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

There are 12 section headers, starting at offset 0x938:

Section Headers:

[Nr] Name

Type Address Offset Link

Size EntSize Info Align

Flags

Page 47: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 47 / 5619/03/2013

Page 48: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 48 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 1] .text

PROGBITS 0000000000000000 0000000000000040 0

000000000000045d 0000000000000000 0 4

[0000000000000006]: ALLOC, EXEC

Page 49: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 49 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 1] .text

PROGBITS 0000000000000000 0000000000000040 0

000000000000045d 0000000000000000 0 4

[0000000000000006]: ALLOC, EXEC

Page 50: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 50 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 1] .text

PROGBITS 0000000000000000 0000000000000040 0

000000000000045d 0000000000000000 0 4

[0000000000000006]: ALLOC, EXEC

1,117 Bytes

Page 51: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 51 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 3] .data

PROGBITS 0000000000000000 00000000000004a0 0

0000000000000000 0000000000000000 0 4

[0000000000000003]: WRITE, ALLOC

Page 52: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 52 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 3] .data

PROGBITS 0000000000000000 00000000000004a0 0

0000000000000000 0000000000000000 0 4

[0000000000000003]: WRITE, ALLOC

Page 53: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 53 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 4] .bss

NOBITS 0000000000000000 00000000000004a0 0

0000000000000000 0000000000000000 0 4

[0000000000000003]: WRITE, ALLOC

Page 54: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 54 / 5619/03/2013

$ gcc -c main.c

$ readelf -t main.o

[ 4] .bss

NOBITS 0000000000000000 00000000000004a0 0

0000000000000000 0000000000000000 0 4

[0000000000000003]: WRITE, ALLOC

Page 55: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 55 / 5619/03/2013

ex1 ex2 ex3 ex40

500

1000

1500

2000

2500

Example

.da

ta /

Byt

es

Page 56: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 56 / 5619/03/2013

● How do we fit this into an AT Tiny?● Benchmark the tap_* procedures only● Put the message in RAM● Put the message in EEPROM

Page 57: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 57 / 5619/03/2013

?

Page 58: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 58 / 5619/03/2013

Page 59: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 59 / 5619/03/2013

Arduino Due

http://arduino.cc/en/uploads/Main/ArduinoDue_Front_450px.jpg

The Due has a 32-bit ARM core that can outperform typical 8-bit microcontroller boards. The most significant differences are:

A 32-bit core, that allows operations on 4 bytes wide data within a single CPU clock. (for more information look int type page).

CPU Clock at 84Mhz.

96 KBytes of SRAM.

512 KBytes of Flash memory for code.

a DMA controller, that can relieve the CPU from doing memory intensive tasks.

Page 60: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 60 / 5619/03/2013

main.c

void longbreak(void){

shortbreak();shortbreak();

}

https://github.com/cpswan/TI-LaunchPad/blob/master/morse/main.c

Page 61: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 61 / 5619/03/2013

● Ex1: text: 0x33c, data: 0xf0, bss 0x8● Ex2: text: 60c, data: 0x10, bss: 0x8● Ex3: text: 35c data: 2c, bss: 0x4● Ex4: text: 0x4fc data: 0x10 bss: 0x8

Page 62: andyjpb@ashurst.eu.org @databasescaling19/03/2013 OSHUG #24 2 / 56 a@jpb.li @databasescaling Writing C For Constrained Systems Wednesday, 18th April 2013

OSHUG #24 62 / 5619/03/2013

● Ex1.o: text: 0x187, data: 0xd0 + 0x270, rodata: 9c, bs: 0

● Ex2.o: text: 0x462, data: 0 bss: 0● Ex3.o: text: 0x1b2, data: 1a,rodata: 2c,

bss: 0● Ex4.o: text: 0x34c, data: 0, rodata 208 +

588 bss:0