Created
February 9, 2011 19:51
-
-
Save blalor/819142 to your computer and use it in GitHub Desktop.
attempts to determine the total amount of flash in a given device
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -e | |
| MCU="$1" | |
| cat <<-'EOF' > foo.c | |
| #include <avr/pgmspace.h> | |
| unsigned char mydata[64][16] PROGMEM = | |
| { | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| {0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x11,0x12,0x13,0x14,0x15,0x16}, | |
| }; | |
| int main(int argc, char** argv) { | |
| int i; | |
| char x; | |
| // totally invalid code; need to keep the compiler from optimizing away the data! | |
| for (i = 0; i < 64; i++) { | |
| x = mydata[i]; | |
| } | |
| return 0; | |
| } | |
| EOF | |
| avr-gcc -c -g -w -ffunction-sections -fdata-sections -mmcu=${MCU} foo.c -ofoo.o | |
| avr-gcc -Wl,--gc-sections -mmcu=${MCU} -ofoo.elf foo.o | |
| avr-size --mcu=${MCU} --format=avr foo.elf | sed -e 's#[()%]##g' | awk '/^Program:/ {print (($2*100) / $4)/1024}' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment