diff --git a/final_project/sd_reader/Makefile b/final_project/sd_reader/Makefile index f9c5d2b..bcfd475 100644 --- a/final_project/sd_reader/Makefile +++ b/final_project/sd_reader/Makefile @@ -16,7 +16,7 @@ OBJCOPY := avr-objcopy SIZE := avr-size -A DOXYGEN := doxygen -CFLAGS := -Werror -Wall -pedantic -mmcu=$(MCU) -std=c99 -g -Os -DF_CPU=$(MCU_FREQ) +CFLAGS := -Werror -Wall -pedantic -mmcu=$(MCU) -std=c99 -g -O3 -DF_CPU=$(MCU_FREQ) all: $(HEX) diff --git a/final_project/sd_reader/main.c b/final_project/sd_reader/main.c index 101c523..cc71de1 100644 --- a/final_project/sd_reader/main.c +++ b/final_project/sd_reader/main.c @@ -11,6 +11,8 @@ #define DEBUG 1 +const char* DATA_CHUNK_ID = "data"; + /* ---- Control Flow Variables ---- */ // Commands uint8_t cmd_depth = 0; @@ -22,7 +24,9 @@ uint16_t song_buf[2][SONG_BUF_LEN]; //! Buffers to play song from uint8_t song_position; //! where we are in the buffers bool song_buf_select; //! which buffer we're using bool song_selected; //! Flag to say we just selected the song, read data in -int8_t song_selection = -1; //! ID of selected song +int8_t song_selection = -1; //! ID of selected song +uint32_t song_len; +uint32_t song_read_position; typedef struct { @@ -155,9 +159,55 @@ int main() if (song_position > 128 || song_selected) { // Select opposite buffer bool read_song_buf = !song_buf_select; + + // Need to get past the metadata + if (song_selected) { + // Seek beginning of file + fat_seek_file(songs[song_selection].fd, 0, FAT_SEEK_SET); + + // Iterate until we get the data + bool is_data = false; + ck_hdr_t header; + while (!is_data) { + fat_read_file(songs[song_selection].fd, + (uint8_t* ) &header, sizeof(ck_hdr_t)); + + // Ghetto strcmp + for (uint8_t i = 0; i < 4; i++) { + if (DATA_CHUNK_ID[i] == header.ckID[i]) { + is_data = true; + } else { + break; + } + } + + // If this is metadata, skip the chunk + int32_t* offset = NULL; + *offset = header.cksize; + if (!is_data) { + fat_seek_file(songs[song_selection].fd, + offset, FAT_SEEK_CUR); + } + } + + // We are now at the actual data + // divide by two to get uint16 + song_len = header.cksize / 2; + song_read_position = 0; + } + + // hit end of song, no more to read + if (song_read_position == song_len) { + song_read_position = 0; + TIFR0 &= ~(1 << OCF0A); + return 0; + } + + // Read in file // 512 bytes to read, 256 samples fat_read_file(songs[song_selection].fd, (uint8_t*) song_buf[read_song_buf], 512); + song_read_position += 256; // If we selected the song, make sure we start playing from the right buffer if (song_selected) { diff --git a/final_project/sd_reader/main.h b/final_project/sd_reader/main.h index 57cbfa9..9540d36 100644 --- a/final_project/sd_reader/main.h +++ b/final_project/sd_reader/main.h @@ -14,6 +14,7 @@ #include "fifo.h" #include "comms.h" #include "periph.h" +#include "wav.h" #define MAX_SONG_NUM 9 #define SONG_BUF_LEN 256 // NO MORE THAN 256!!! diff --git a/final_project/sd_reader/sd-reader.map b/final_project/sd_reader/sd-reader.map index 000f7ca..abdd481 100644 --- a/final_project/sd_reader/sd-reader.map +++ b/final_project/sd_reader/sd-reader.map @@ -40,10 +40,10 @@ Archive member included to satisfy reference by file (symbol) /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) (__umulhisi3) /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) main.o (malloc) +/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o) + main.o (memcpy) /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) fat.o (strchr) -/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcpy.o) - main.o (strcpy) /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) fat.o (strncmp) @@ -54,7 +54,11 @@ cmd_state 0x1 main.o song_buf 0x400 main.o song_buf_select 0x1 main.o __brkval 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) +song_len 0x4 main.o +ck_fmt_t 0x2a periph.o +song_read_position 0x4 main.o song_selected 0x1 main.o +ck_master_t 0x4 periph.o songs 0x24 main.o song_position 0x1 main.o __flp 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) @@ -186,7 +190,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x0000000000000000 0x2884 +.text 0x0000000000000000 0x3948 *(.vectors) .vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o 0x0000000000000000 __vectors @@ -271,356 +275,356 @@ END GROUP 0x00000000000000c0 __vector_10 0x00000000000000c0 __vector_16 0x00000000000000c0 __vector_20 - .text 0x00000000000000c4 0x144 partition.o + .text 0x00000000000000c4 0x16e partition.o 0x00000000000000c4 partition_open - 0x00000000000001f8 partition_close - .text 0x0000000000000208 0x868 sd_raw.o - 0x0000000000000296 sd_raw_available - 0x00000000000002a2 sd_raw_init - 0x0000000000000420 sd_raw_locked - 0x000000000000042e sd_raw_read - 0x00000000000005ae sd_raw_read_interval - 0x000000000000080c sd_raw_get_info - .text 0x0000000000000a70 0x28 byteordering.o - 0x0000000000000a70 read16 - 0x0000000000000a78 read32 - 0x0000000000000a84 write16 - 0x0000000000000a8c write32 - .text 0x0000000000000a98 0x120 periph.o - 0x0000000000000a98 __vector_18 - 0x0000000000000ae8 __vector_14 - 0x0000000000000b76 gpio_init - 0x0000000000000b8a timer_init - 0x0000000000000b98 usart_init - .text 0x0000000000000bb8 0x14fa fat.o - 0x0000000000001082 fat_open - 0x0000000000001538 fat_close - 0x0000000000001544 fat_open_file - 0x00000000000015c0 fat_close_file - 0x00000000000015cc fat_read_file - 0x000000000000199e fat_seek_file - 0x0000000000001a2e fat_open_dir - 0x0000000000001a9e fat_close_dir - 0x0000000000001aaa fat_reset_dir - 0x0000000000001acc fat_read_dir - 0x0000000000001d96 fat_get_dir_entry_of_path - 0x0000000000001ea8 fat_get_fs_size - 0x0000000000001f16 fat_get_fs_free - .text 0x00000000000020b2 0x0 main.o - .text 0x00000000000020b2 0xb6 fifo.o - 0x00000000000020b2 fifo_init - 0x00000000000020c4 fifo_pop - 0x0000000000002118 fifo_push - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcpy.o) - .text 0x0000000000002168 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) - 0x0000000000002168 . = ALIGN (0x2) + 0x0000000000000222 partition_close + .text 0x0000000000000232 0xb18 sd_raw.o + 0x00000000000003cc sd_raw_init + 0x00000000000005b6 sd_raw_available + 0x00000000000005c2 sd_raw_locked + 0x00000000000005d0 sd_raw_read + 0x000000000000079e sd_raw_read_interval + 0x0000000000000aae sd_raw_get_info + .text 0x0000000000000d4a 0x28 byteordering.o + 0x0000000000000d4a read16 + 0x0000000000000d52 read32 + 0x0000000000000d5e write16 + 0x0000000000000d66 write32 + .text 0x0000000000000d72 0x120 periph.o + 0x0000000000000d72 __vector_18 + 0x0000000000000dc2 __vector_14 + 0x0000000000000e50 gpio_init + 0x0000000000000e64 timer_init + 0x0000000000000e72 usart_init + .text 0x0000000000000e92 0x20e8 fat.o + 0x00000000000016ee fat_open + 0x0000000000001bec fat_close + 0x0000000000001bf8 fat_get_dir_entry_of_path + 0x00000000000022ca fat_open_file + 0x0000000000002346 fat_close_file + 0x0000000000002352 fat_read_file + 0x0000000000002730 fat_seek_file + 0x00000000000027fa fat_open_dir + 0x000000000000286e fat_close_dir + 0x000000000000287a fat_read_dir + 0x0000000000002d10 fat_reset_dir + 0x0000000000002d32 fat_get_fs_size + 0x0000000000002d9a fat_get_fs_free + .text 0x0000000000002f7a 0x0 main.o + .text 0x0000000000002f7a 0xbe fifo.o + 0x0000000000002f7a fifo_init + 0x0000000000002f8c fifo_pop + 0x0000000000002fe4 fifo_push + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) + .text 0x0000000000003038 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x0000000000003038 . = ALIGN (0x2) *(.text.*) - .text.startup 0x0000000000002168 0x1ee main.o - 0x0000000000002168 main + .text.startup 0x0000000000003038 0x3de main.o + 0x0000000000003038 main .text.libgcc.mul - 0x0000000000002356 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - 0x0000000000002356 __mulsi3 + 0x0000000000003416 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003416 __mulsi3 .text.libgcc.div - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - .text.libgcc 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + .text.libgcc 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) .text.libgcc.prologue - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) .text.libgcc.builtins - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) .text.libgcc.fmul - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) .text.libgcc.fixed - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) .text.libgcc.mul - 0x0000000000002376 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000003436 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.div - 0x0000000000002376 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) - 0x0000000000002376 __udivmodhi4 - .text.libgcc 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000003436 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x0000000000003436 __udivmodhi4 + .text.libgcc 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.prologue - 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.builtins - 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.fmul - 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.fixed - 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) .text.libgcc.mul - 0x000000000000239e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000345e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.div - 0x000000000000239e 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) - 0x000000000000239e __udivmodsi4 - .text.libgcc 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000345e 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x000000000000345e __udivmodsi4 + .text.libgcc 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.prologue - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.builtins - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.fmul - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.fixed - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) .text.libgcc.mul - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.div - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - .text.libgcc 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.prologue - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.builtins - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.fmul - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.fixed - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) .text.libgcc.mul - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) .text.libgcc.div - 0x00000000000023e2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - .text.libgcc 0x00000000000023e2 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - 0x00000000000023e2 __tablejump2__ + 0x00000000000034a2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + .text.libgcc 0x00000000000034a2 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034a2 __tablejump2__ .text.libgcc.prologue - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) .text.libgcc.builtins - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) .text.libgcc.fmul - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) .text.libgcc.fixed - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) .text.libgcc.mul - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.div - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) - .text.libgcc 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.prologue - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.builtins - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.fmul - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.fixed - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) .text.libgcc.mul - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.div - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) - .text.libgcc 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.prologue - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.builtins - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.fmul - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.fixed - 0x00000000000023ee 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + 0x00000000000034ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) .text.libgcc.mul - 0x00000000000023ee 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - 0x00000000000023ee __muluhisi3 + 0x00000000000034ae 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034ae __muluhisi3 .text.libgcc.div - 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - .text.libgcc 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + .text.libgcc 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.prologue - 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.builtins - 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.fmul - 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.fixed - 0x0000000000002404 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + 0x00000000000034c4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) .text.libgcc.mul - 0x0000000000002404 0xa0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) - 0x0000000000002404 __muldi3 + 0x00000000000034c4 0xa0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x00000000000034c4 __muldi3 .text.libgcc.div - 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) - .text.libgcc 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + .text.libgcc 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) .text.libgcc.prologue - 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) .text.libgcc.builtins - 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) .text.libgcc.fmul - 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) .text.libgcc.fixed - 0x00000000000024a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + 0x0000000000003564 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) .text.libgcc.mul - 0x00000000000024a4 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) - 0x00000000000024a4 __muldi3_6 + 0x0000000000003564 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003564 __muldi3_6 .text.libgcc.div - 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) - .text.libgcc 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + .text.libgcc 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) .text.libgcc.prologue - 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) .text.libgcc.builtins - 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) .text.libgcc.fmul - 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) .text.libgcc.fixed - 0x00000000000024b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + 0x0000000000003576 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) .text.libgcc.mul - 0x00000000000024b6 0x56 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) - 0x00000000000024b6 __umulsidi3 - 0x00000000000024b8 __umulsidi3_helper + 0x0000000000003576 0x56 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x0000000000003576 __umulsidi3 + 0x0000000000003578 __umulsidi3_helper .text.libgcc.div - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) - .text.libgcc 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + .text.libgcc 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) .text.libgcc.prologue - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) .text.libgcc.builtins - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) .text.libgcc.fmul - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) .text.libgcc.fixed - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) .text.libgcc.mul - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) .text.libgcc.div - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) - .text.libgcc 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + .text.libgcc 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) .text.libgcc.prologue - 0x000000000000250c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) .text.libgcc.builtins - 0x000000000000250c 0x32 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) - 0x000000000000250c __ashldi3 + 0x00000000000035cc 0x32 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035cc __ashldi3 .text.libgcc.fmul - 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) .text.libgcc.fixed - 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) .text.libgcc.mul - 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) .text.libgcc.div - 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) - .text.libgcc 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + .text.libgcc 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) .text.libgcc.prologue - 0x000000000000253e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x00000000000035fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) .text.libgcc.builtins - 0x000000000000253e 0x3c /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) - 0x000000000000253e __ashrdi3 - 0x0000000000002542 __lshrdi3 + 0x00000000000035fe 0x3c /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x00000000000035fe __ashrdi3 + 0x0000000000003602 __lshrdi3 .text.libgcc.fmul - 0x000000000000257a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x000000000000363a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) .text.libgcc.fixed - 0x000000000000257a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + 0x000000000000363a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) .text.libgcc.mul - 0x000000000000257a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000363a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) .text.libgcc.div - 0x000000000000257a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) - .text.libgcc 0x000000000000257a 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) - 0x000000000000257a __adddi3 + 0x000000000000363a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + .text.libgcc 0x000000000000363a 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000363a __adddi3 .text.libgcc.prologue - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) .text.libgcc.builtins - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) .text.libgcc.fmul - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) .text.libgcc.fixed - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) .text.libgcc.mul - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) .text.libgcc.div - 0x000000000000258c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) - .text.libgcc 0x000000000000258c 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) - 0x000000000000258c __adddi3_s8 + 0x000000000000364c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + .text.libgcc 0x000000000000364c 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x000000000000364c __adddi3_s8 .text.libgcc.prologue - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) .text.libgcc.builtins - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) .text.libgcc.fmul - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) .text.libgcc.fixed - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) .text.libgcc.mul - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) .text.libgcc.div - 0x00000000000025a4 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) - .text.libgcc 0x00000000000025a4 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) - 0x00000000000025a4 __subdi3 + 0x0000000000003664 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + .text.libgcc 0x0000000000003664 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003664 __subdi3 .text.libgcc.prologue - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) .text.libgcc.builtins - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) .text.libgcc.fmul - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) .text.libgcc.fixed - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) .text.libgcc.mul - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) .text.libgcc.div - 0x00000000000025b6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) - .text.libgcc 0x00000000000025b6 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) - 0x00000000000025b6 __cmpdi2 + 0x0000000000003676 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + .text.libgcc 0x0000000000003676 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003676 __cmpdi2 .text.libgcc.prologue - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) .text.libgcc.builtins - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) .text.libgcc.fmul - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) .text.libgcc.fixed - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) .text.libgcc.mul - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) .text.libgcc.div - 0x00000000000025c8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) - .text.libgcc 0x00000000000025c8 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) - 0x00000000000025c8 __cmpdi2_s8 + 0x0000000000003688 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + .text.libgcc 0x0000000000003688 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x0000000000003688 __cmpdi2_s8 .text.libgcc.prologue - 0x00000000000025e0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x00000000000036a0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) .text.libgcc.builtins - 0x00000000000025e0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x00000000000036a0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) .text.libgcc.fmul - 0x00000000000025e0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x00000000000036a0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) .text.libgcc.fixed - 0x00000000000025e0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + 0x00000000000036a0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) .text.libgcc.mul - 0x00000000000025e0 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - 0x00000000000025e0 __umulhisi3 + 0x00000000000036a0 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036a0 __umulhisi3 .text.libgcc.div - 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - .text.libgcc 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + .text.libgcc 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.prologue - 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.builtins - 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.fmul - 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) .text.libgcc.fixed - 0x00000000000025fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + 0x00000000000036be 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) .text.avr-libc - 0x00000000000025fe 0x242 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) - 0x00000000000025fe malloc - 0x000000000000272e free + 0x00000000000036be 0x242 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) + 0x00000000000036be malloc + 0x00000000000037ee free .text.avr-libc - 0x0000000000002840 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) - 0x0000000000002840 strchr + 0x0000000000003900 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x0000000000003900 memcpy .text.avr-libc - 0x0000000000002856 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcpy.o) - 0x0000000000002856 strcpy + 0x0000000000003912 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) + 0x0000000000003912 strchr .text.avr-libc - 0x0000000000002864 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) - 0x0000000000002864 strncmp - 0x0000000000002880 . = ALIGN (0x2) + 0x0000000000003928 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x0000000000003928 strncmp + 0x0000000000003944 . = ALIGN (0x2) *(.fini9) - .fini9 0x0000000000002880 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - 0x0000000000002880 exit - 0x0000000000002880 _exit + .fini9 0x0000000000003944 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + 0x0000000000003944 exit + 0x0000000000003944 _exit *(.fini9) *(.fini8) *(.fini8) @@ -639,11 +643,11 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x0000000000002880 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .fini0 0x0000000000003944 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) *(.fini0) - 0x0000000000002884 _etext = . + 0x0000000000003948 _etext = . -.data 0x0000000000800100 0x16 load address 0x0000000000002884 +.data 0x0000000000800100 0x1e load address 0x0000000000003948 0x0000000000800100 PROVIDE (__data_start, .) *(.data) .data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o @@ -652,103 +656,110 @@ END GROUP .data 0x0000000000800100 0x0 byteordering.o .data 0x0000000000800100 0x0 periph.o .data 0x0000000000800100 0x0 fat.o - .data 0x0000000000800100 0x1 main.o + .data 0x0000000000800100 0x3 main.o 0x0000000000800100 song_selection - .data 0x0000000000800101 0x0 fifo.o - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) - .data 0x0000000000800101 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - .data 0x0000000000800101 0x6 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) - 0x0000000000800101 __malloc_heap_end - 0x0000000000800103 __malloc_heap_start - 0x0000000000800105 __malloc_margin - .data 0x0000000000800107 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) - .data 0x0000000000800107 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcpy.o) - .data 0x0000000000800107 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x0000000000800101 DATA_CHUNK_ID + .data 0x0000000000800103 0x0 fifo.o + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + .data 0x0000000000800103 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + .data 0x0000000000800103 0x6 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) + 0x0000000000800103 __malloc_heap_end + 0x0000000000800105 __malloc_heap_start + 0x0000000000800107 __malloc_margin + .data 0x0000000000800109 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o) + .data 0x0000000000800109 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) + .data 0x0000000000800109 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) *(.data*) *(.rodata) - .rodata 0x0000000000800107 0xd fat.o + .rodata 0x0000000000800109 0xd fat.o *(.rodata*) .rodata.str1.1 - 0x0000000000800114 0x2 main.o + 0x0000000000800116 0x7 main.o *(.gnu.linkonce.d*) - 0x0000000000800116 . = ALIGN (0x2) - 0x0000000000800116 _edata = . - 0x0000000000800116 PROVIDE (__data_end, .) + 0x000000000080011e . = ALIGN (0x2) + *fill* 0x000000000080011d 0x1 + 0x000000000080011e _edata = . + 0x000000000080011e PROVIDE (__data_end, .) -.bss 0x0000000000800116 0x53c - 0x0000000000800116 PROVIDE (__bss_start, .) +.bss 0x000000000080011e 0x572 + 0x000000000080011e PROVIDE (__bss_start, .) *(.bss) - .bss 0x0000000000800116 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o - .bss 0x0000000000800116 0x11 partition.o - .bss 0x0000000000800127 0x1 sd_raw.o - .bss 0x0000000000800128 0x0 byteordering.o - .bss 0x0000000000800128 0x0 periph.o - .bss 0x0000000000800128 0xe3 fat.o - .bss 0x000000000080020b 0x1 main.o - 0x000000000080020b cmd_depth - .bss 0x000000000080020c 0x1a fifo.o - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcpy.o) - .bss 0x0000000000800226 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) + .bss 0x000000000080011e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega328p.o + .bss 0x000000000080011e 0x11 partition.o + .bss 0x000000000080012f 0x1 sd_raw.o + .bss 0x0000000000800130 0x0 byteordering.o + .bss 0x0000000000800130 0x0 periph.o + .bss 0x0000000000800130 0xe3 fat.o + .bss 0x0000000000800213 0x1 main.o + 0x0000000000800213 cmd_depth + .bss 0x0000000000800214 0x1a fifo.o + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o) + .bss 0x000000000080022e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o) *(.bss*) *(COMMON) - COMMON 0x0000000000800226 0x428 main.o - 0x0000000000800226 cmd_state - 0x0000000000800227 song_buf - 0x0000000000800627 song_buf_select - 0x0000000000800628 song_selected - 0x0000000000800629 songs - 0x000000000080064d song_position - COMMON 0x000000000080064e 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) - 0x000000000080064e __brkval - 0x0000000000800650 __flp - 0x0000000000800652 PROVIDE (__bss_end, .) - 0x0000000000002884 __data_load_start = LOADADDR (.data) - 0x000000000000289a __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x000000000080022e 0x2e periph.o + 0x000000000080022e ck_fmt_t + 0x0000000000800258 ck_master_t + COMMON 0x000000000080025c 0x430 main.o + 0x000000000080025c cmd_state + 0x000000000080025d song_buf + 0x000000000080065d song_buf_select + 0x000000000080065e song_len + 0x0000000000800662 song_read_position + 0x0000000000800666 song_selected + 0x0000000000800667 songs + 0x000000000080068b song_position + COMMON 0x000000000080068c 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(malloc.o) + 0x000000000080068c __brkval + 0x000000000080068e __flp + 0x0000000000800690 PROVIDE (__bss_end, .) + 0x0000000000003948 __data_load_start = LOADADDR (.data) + 0x0000000000003966 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x0000000000800652 0x0 +.noinit 0x0000000000800690 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x0000000000800652 _end = . - 0x0000000000800652 PROVIDE (__heap_start, .) + 0x0000000000800690 _end = . + 0x0000000000800690 PROVIDE (__heap_start, .) .eeprom 0x0000000000810000 0x0 *(.eeprom*) @@ -769,25 +780,25 @@ END GROUP .user_signatures *(.user_signatures*) -.stab 0x0000000000000000 0x4ab8 +.stab 0x0000000000000000 0x5ff4 *(.stab) - .stab 0x0000000000000000 0x6e4 partition.o - .stab 0x00000000000006e4 0x129c sd_raw.o - 0x144c (size before relaxing) - .stab 0x0000000000001980 0x414 byteordering.o + .stab 0x0000000000000000 0x720 partition.o + .stab 0x0000000000000720 0x1980 sd_raw.o + 0x1b30 (size before relaxing) + .stab 0x00000000000020a0 0x414 byteordering.o 0x594 (size before relaxing) - .stab 0x0000000000001d94 0x69c periph.o - 0x8f4 (size before relaxing) - .stab 0x0000000000002430 0x1adc fat.o - 0x1d28 (size before relaxing) - .stab 0x0000000000003f0c 0x750 main.o - 0xab0 (size before relaxing) - .stab 0x000000000000465c 0x45c fifo.o - 0x5f4 (size before relaxing) + .stab 0x00000000000024b4 0x75c periph.o + 0x9b4 (size before relaxing) + .stab 0x0000000000002c10 0x25f8 fat.o + 0x2844 (size before relaxing) + .stab 0x0000000000005208 0x978 main.o + 0xd5c (size before relaxing) + .stab 0x0000000000005b80 0x474 fifo.o + 0x60c (size before relaxing) -.stabstr 0x0000000000000000 0x2638 +.stabstr 0x0000000000000000 0x2c10 *(.stabstr) - .stabstr 0x0000000000000000 0x2638 partition.o + .stabstr 0x0000000000000000 0x2c10 partition.o .stab.excl *(.stab.excl) diff --git a/final_project/sd_reader/sd-reader.out b/final_project/sd_reader/sd-reader.out index c550b5b..45cd484 100755 Binary files a/final_project/sd_reader/sd-reader.out and b/final_project/sd_reader/sd-reader.out differ diff --git a/final_project/sd_reader/wav.h b/final_project/sd_reader/wav.h index 1d7bbf9..add32a6 100644 --- a/final_project/sd_reader/wav.h +++ b/final_project/sd_reader/wav.h @@ -5,7 +5,7 @@ /** @brief Struct to contain chunk header information */ typedef struct { - uint32_t ckID; //! Chunk type + char ckID[4]; //! Chunk type uint32_t cksize; //! Size of chunk in bytes } ck_hdr_t; @@ -26,7 +26,7 @@ typedef enum { /** @brief Struct to hold fmt chunk data */ struct { - struct data { + struct { uint16_t wFormatTag; //! Type of data format. uint16_t nChannels; //! Number of channels uint32_t nSamplesPerSec; //! Sample rate @@ -36,8 +36,8 @@ struct { uint16_t cbSize; //! Size of fmt type extension. Only valid if chunk size is 18 or 40. uint16_t wValidBitsPerSample; //! Number of valid bits per sample. Only valid if chunk size is 40 uint32_t dwChannelMask; //! Speaker position mask. Only valid if chunk size is 40 - uint8_t[16] SubFormat; //! GUID for data format. Only vaid if chunk size is 40 - }; + uint8_t SubFormat[16]; //! GUID for data format. Only vaid if chunk size is 40 + } data; ck_fmt_ext_t type; } ck_fmt_t;