[email protected] @databasescaling19/03/2013 oshug #24 2 / 56 [email protected] @databasescaling writing...
TRANSCRIPT
![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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/38.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/44.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/45.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/46.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/47.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/48.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/49.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/50.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/51.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/52.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/53.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/54.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/55.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/56.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/57.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/58.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/59.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/60.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/61.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042310/5ed853366664347bbe0925d4/html5/thumbnails/62.jpg)
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