Stuff is happening
This commit is contained in:
parent
fa8cc80206
commit
958073b19b
@ -9,7 +9,8 @@
|
||||
],
|
||||
"settings": {
|
||||
"files.associations": {
|
||||
"io.h": "c"
|
||||
"io.h": "c",
|
||||
"interrupt.h": "c"
|
||||
}
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@ OBJCOPY := avr-objcopy
|
||||
SIZE := avr-size -A
|
||||
DOXYGEN := doxygen
|
||||
|
||||
CFLAGS := -Wall -pedantic -mmcu=$(MCU) -std=c99 -g -Os -DF_CPU=$(MCU_FREQ)
|
||||
CFLAGS := -Werror -Wall -pedantic -mmcu=$(MCU) -std=c99 -g -Os -DF_CPU=$(MCU_FREQ)
|
||||
|
||||
all: $(HEX)
|
||||
|
||||
|
52
final_project/lcd_disp/fifo.c
Normal file
52
final_project/lcd_disp/fifo.c
Normal file
@ -0,0 +1,52 @@
|
||||
#include "fifo.h"
|
||||
|
||||
static struct {
|
||||
FIFO_TYPE buffer[FIFO_LEN];
|
||||
uint16_t rd_ptr;
|
||||
uint16_t wr_ptr;
|
||||
uint16_t entries;
|
||||
} fifo;
|
||||
|
||||
void fifo_init() {
|
||||
fifo.rd_ptr = 0;
|
||||
fifo.wr_ptr = 0;
|
||||
fifo.entries = 0;
|
||||
}
|
||||
|
||||
fifo_err_t fifo_pop(FIFO_TYPE* dest) {
|
||||
// FIFO is empty, nothing to return!
|
||||
if (fifo.entries == 0) {
|
||||
return FIFO_EMPTY;
|
||||
}
|
||||
|
||||
// Entries in FIFO, pop
|
||||
*dest = fifo.buffer[fifo.rd_ptr];
|
||||
fifo.rd_ptr++;
|
||||
fifo.entries--;
|
||||
|
||||
// Ensure pointers don't overflow!
|
||||
if (fifo.rd_ptr == FIFO_LEN) {
|
||||
fifo.rd_ptr = 0;
|
||||
}
|
||||
|
||||
return FIFO_SUCCESS;
|
||||
}
|
||||
|
||||
fifo_err_t fifo_push(FIFO_TYPE src) {
|
||||
// FIFO is full, don't store anything
|
||||
if (fifo.entries == FIFO_LEN) {
|
||||
return FIFO_FULL;
|
||||
}
|
||||
|
||||
// FIFO has space, write
|
||||
fifo.buffer[fifo.wr_ptr] = src;
|
||||
fifo.wr_ptr++;
|
||||
fifo.entries++;
|
||||
|
||||
// Ensure pointers don't overflow!
|
||||
if (fifo.wr_ptr == FIFO_LEN) {
|
||||
fifo.wr_ptr = 0;
|
||||
}
|
||||
|
||||
return FIFO_SUCCESS;
|
||||
}
|
36
final_project/lcd_disp/fifo.h
Normal file
36
final_project/lcd_disp/fifo.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef FIFO_H_
|
||||
#define FIFO_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef enum {
|
||||
FIFO_SUCCESS,
|
||||
FIFO_FULL,
|
||||
FIFO_EMPTY
|
||||
} fifo_err_t;
|
||||
|
||||
#define FIFO_LEN 50
|
||||
#define FIFO_TYPE uint8_t
|
||||
|
||||
/** @brief Initialises FIFO
|
||||
*
|
||||
* This MUST be called before any other fifo_* functions are called.
|
||||
* Unless memory is initialised to 0. Then it's fine I guess.
|
||||
*/
|
||||
void fifo_init();
|
||||
|
||||
/** @brief Pops most recent addition off of FIFO buffer.
|
||||
*
|
||||
* @retval FIFO_SUCCESS Successfully read data from FIFO
|
||||
* @retval FIFO_EMPTY Buffer was empty, no data read
|
||||
*/
|
||||
fifo_err_t fifo_pop(FIFO_TYPE* dest);
|
||||
|
||||
/** @brief Pushes entry onto FIFO buffer.
|
||||
*
|
||||
* @retval FIFO_SUCCESS successfully wrote data to FIFO buffer
|
||||
* @retval FIFO_FULL buffer, was full, no data written
|
||||
*/
|
||||
fifo_err_t fifo_push(FIFO_TYPE src);
|
||||
|
||||
#endif
|
@ -1,8 +1,66 @@
|
||||
#include <avr/io.h>
|
||||
#include "lcd.h"
|
||||
#include "main.h"
|
||||
|
||||
#define USART_BAUDRATE 9600 //! USART baudrate, change this to set it.
|
||||
#define UBRR_VALUE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
|
||||
/* ---- Global Flags ---- */
|
||||
int16_t display_song = -1; //! ID of the song currently being displayed, -1 if song list is not initialised
|
||||
int16_t selected_song = -1; //! ID of the selected song. -1 if no song is selected.
|
||||
|
||||
struct {
|
||||
char* names[MAX_SONGS];
|
||||
uint8_t num_songs;
|
||||
} songs;
|
||||
|
||||
/** @brief Adds song to list of songs
|
||||
*
|
||||
* Allocates a new piece of memory for the name.
|
||||
*/
|
||||
void add_song(char* name) {
|
||||
// Error out on too many songs
|
||||
if (songs.num_songs == MAX_SONGS) {
|
||||
lcd_gotoxy(0,0);
|
||||
lcd_puts("Too many songs!");
|
||||
while(1);
|
||||
}
|
||||
|
||||
// Allocate memory to store name, and increase number
|
||||
uint8_t name_len = strlen(name);
|
||||
songs.names[songs.num_songs] = malloc(name_len);
|
||||
songs.num_songs++;
|
||||
}
|
||||
|
||||
/** @brief Clears list of songs
|
||||
*
|
||||
* Frees all memory used for name storage
|
||||
*/
|
||||
void clear_songs() {
|
||||
// Free all memory
|
||||
for (uint8_t i = 0; i < songs.num_songs; i++) {
|
||||
free(songs.names[i]);
|
||||
}
|
||||
|
||||
songs.num_songs = 0;
|
||||
}
|
||||
|
||||
/** @brief Handles incoming Serial commands from the main player.
|
||||
*/
|
||||
ISR(USART_RX_vect) {
|
||||
cli();
|
||||
// Push incoming data to FIFO
|
||||
fifo_push(UDR);
|
||||
sei();
|
||||
}
|
||||
|
||||
/** @brief Sets up various GPIO functions
|
||||
*/
|
||||
void gpio_init() {
|
||||
// Initialise button pins as inputs
|
||||
BUTTONS_DDR &= ~(1 << BUTTONS_LEFT_PIN) &
|
||||
~(1 << BUTTONS_RIGHT_PIN) &
|
||||
~(1 << BUTTONS_PLAYPAUSE_PIN);
|
||||
// Turn on button pullups
|
||||
BUTTONS_PORT |= (1 << BUTTONS_LEFT_PIN) |
|
||||
(1 << BUTTONS_RIGHT_PIN) |
|
||||
(1 << BUTTONS_PLAYPAUSE_PIN);
|
||||
}
|
||||
|
||||
/** @brief Sets up USART for TX and RX with a baud rate of USART_BAUDRATE
|
||||
*/
|
||||
@ -14,10 +72,34 @@ void usart_init() {
|
||||
UCSRC = (1 << UCSZ1) | (1 << UCSZ0); // fire-up USART
|
||||
|
||||
|
||||
// Enable RX complete interrupt
|
||||
UCSRB |= (1 << RXCIE);
|
||||
}
|
||||
|
||||
void handle_left_press() {
|
||||
|
||||
|
||||
}
|
||||
|
||||
void handle_right_press() {
|
||||
|
||||
}
|
||||
|
||||
// TODO NOT DONE
|
||||
void handle_playpause_press() {
|
||||
// If no song selected, select the correct one.
|
||||
if (selected_song == -1) {
|
||||
comms_select_file(display_song);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main() {
|
||||
// Scratch variables
|
||||
uint8_t incoming_cmd = 0;
|
||||
|
||||
fifo_init();
|
||||
gpio_init();
|
||||
usart_init();
|
||||
|
||||
lcd_clrscr();
|
||||
@ -25,6 +107,28 @@ int main() {
|
||||
|
||||
// Main loop
|
||||
while (1) {
|
||||
// Handle incoming messages
|
||||
if (fifo_pop(&incoming_cmd) == FIFO_SUCCESS) {
|
||||
|
||||
}
|
||||
|
||||
// Handle "left" button press
|
||||
if (BUTTONS_PORT & (1 << BUTTONS_LEFT_PIN)) {
|
||||
handle_left_press();
|
||||
_delay_ms(100); // Delay to debounce
|
||||
}
|
||||
|
||||
// Handle "right" button press
|
||||
if (BUTTONS_PORT & (1 << BUTTONS_LEFT_PIN)) {
|
||||
handle_left_press();
|
||||
_delay_ms(100); // Delay to debounce
|
||||
}
|
||||
|
||||
// Handle play/pause button press
|
||||
if (BUTTONS_PORT & (1 << BUTTONS_LEFT_PIN)) {
|
||||
handle_left_press();
|
||||
_delay_ms(100); // Delay to debounce
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
26
final_project/lcd_disp/main.h
Normal file
26
final_project/lcd_disp/main.h
Normal file
@ -0,0 +1,26 @@
|
||||
#ifndef MAIN_H_
|
||||
#define MAIN_H_
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
#include "lcd.h"
|
||||
#include "fifo.h"
|
||||
#include "comms.h"
|
||||
|
||||
#define USART_BAUDRATE 9600 //! USART baudrate, change this to set it.
|
||||
#define UBRR_VALUE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
|
||||
|
||||
#define MAX_SONGS 16
|
||||
|
||||
#define BUTTONS_DDR DDRD
|
||||
#define BUTTONS_PORT PORTD
|
||||
#define BUTTONS_LEFT_PIN PORTD2
|
||||
#define BUTTONS_RIGHT_PIN PORTD3
|
||||
#define BUTTONS_PLAYPAUSE_PIN PORTD4
|
||||
|
||||
#endif
|
@ -2,6 +2,19 @@ Archive member included to satisfy reference by file (symbol)
|
||||
|
||||
/usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o (exit)
|
||||
/usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
main.o (__do_copy_data)
|
||||
/usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
main.o (__do_clear_bss)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
main.o (malloc)
|
||||
|
||||
Allocating common symbols
|
||||
Common symbol size file
|
||||
|
||||
__brkval 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
songs 0x21 main.o
|
||||
__flp 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
|
||||
Memory Configuration
|
||||
|
||||
@ -21,6 +34,7 @@ LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
LOAD lcd.o
|
||||
LOAD comms.o
|
||||
LOAD main.o
|
||||
LOAD fifo.o
|
||||
START GROUP
|
||||
LOAD /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a
|
||||
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libm.a
|
||||
@ -125,7 +139,7 @@ END GROUP
|
||||
.rela.plt
|
||||
*(.rela.plt)
|
||||
|
||||
.text 0x0000000000000000 0x1fa
|
||||
.text 0x0000000000000000 0x65a
|
||||
*(.vectors)
|
||||
.vectors 0x0000000000000000 0x2a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
0x0000000000000000 __vectors
|
||||
@ -166,6 +180,10 @@ END GROUP
|
||||
*(.init3)
|
||||
*(.init3)
|
||||
*(.init4)
|
||||
.init4 0x0000000000000032 0x16 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
0x0000000000000032 __do_copy_data
|
||||
.init4 0x0000000000000048 0x10 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
0x0000000000000048 __do_clear_bss
|
||||
*(.init4)
|
||||
*(.init5)
|
||||
*(.init5)
|
||||
@ -176,67 +194,111 @@ END GROUP
|
||||
*(.init8)
|
||||
*(.init8)
|
||||
*(.init9)
|
||||
.init9 0x0000000000000032 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
.init9 0x0000000000000058 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
*(.init9)
|
||||
*(.text)
|
||||
.text 0x0000000000000036 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
0x0000000000000036 __vector_1
|
||||
0x0000000000000036 __vector_12
|
||||
0x0000000000000036 __bad_interrupt
|
||||
0x0000000000000036 __vector_6
|
||||
0x0000000000000036 __vector_3
|
||||
0x0000000000000036 __vector_11
|
||||
0x0000000000000036 __vector_13
|
||||
0x0000000000000036 __vector_17
|
||||
0x0000000000000036 __vector_19
|
||||
0x0000000000000036 __vector_7
|
||||
0x0000000000000036 __vector_5
|
||||
0x0000000000000036 __vector_4
|
||||
0x0000000000000036 __vector_9
|
||||
0x0000000000000036 __vector_2
|
||||
0x0000000000000036 __vector_15
|
||||
0x0000000000000036 __vector_8
|
||||
0x0000000000000036 __vector_14
|
||||
0x0000000000000036 __vector_10
|
||||
0x0000000000000036 __vector_16
|
||||
0x0000000000000036 __vector_18
|
||||
0x0000000000000036 __vector_20
|
||||
.text 0x0000000000000038 0x1b8 lcd.o
|
||||
0x0000000000000102 lcd_command
|
||||
0x0000000000000110 lcd_data
|
||||
0x000000000000011e lcd_gotoxy
|
||||
0x000000000000012a lcd_getxy
|
||||
0x0000000000000130 lcd_clrscr
|
||||
0x0000000000000134 lcd_home
|
||||
0x0000000000000138 lcd_putc
|
||||
0x000000000000015a lcd_puts
|
||||
0x0000000000000170 lcd_puts_p
|
||||
0x000000000000018c lcd_init
|
||||
.text 0x00000000000001f0 0x0 comms.o
|
||||
.text 0x00000000000001f0 0x0 main.o
|
||||
.text 0x00000000000001f0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x00000000000001f0 . = ALIGN (0x2)
|
||||
.text 0x000000000000005c 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
0x000000000000005c __vector_1
|
||||
0x000000000000005c __vector_12
|
||||
0x000000000000005c __bad_interrupt
|
||||
0x000000000000005c __vector_6
|
||||
0x000000000000005c __vector_3
|
||||
0x000000000000005c __vector_11
|
||||
0x000000000000005c __vector_13
|
||||
0x000000000000005c __vector_17
|
||||
0x000000000000005c __vector_19
|
||||
0x000000000000005c __vector_5
|
||||
0x000000000000005c __vector_4
|
||||
0x000000000000005c __vector_9
|
||||
0x000000000000005c __vector_2
|
||||
0x000000000000005c __vector_15
|
||||
0x000000000000005c __vector_8
|
||||
0x000000000000005c __vector_14
|
||||
0x000000000000005c __vector_10
|
||||
0x000000000000005c __vector_16
|
||||
0x000000000000005c __vector_18
|
||||
0x000000000000005c __vector_20
|
||||
.text 0x000000000000005e 0x1b8 lcd.o
|
||||
0x0000000000000128 lcd_command
|
||||
0x0000000000000136 lcd_data
|
||||
0x0000000000000144 lcd_gotoxy
|
||||
0x0000000000000150 lcd_getxy
|
||||
0x0000000000000156 lcd_clrscr
|
||||
0x000000000000015a lcd_home
|
||||
0x000000000000015e lcd_putc
|
||||
0x0000000000000180 lcd_puts
|
||||
0x0000000000000196 lcd_puts_p
|
||||
0x00000000000001b2 lcd_init
|
||||
.text 0x0000000000000216 0x0 comms.o
|
||||
.text 0x0000000000000216 0xe4 main.o
|
||||
0x0000000000000216 add_song
|
||||
0x000000000000025e clear_songs
|
||||
0x0000000000000288 __vector_7
|
||||
0x00000000000002d4 gpio_init
|
||||
0x00000000000002e2 usart_init
|
||||
0x00000000000002f4 handle_left_press
|
||||
0x00000000000002f6 handle_right_press
|
||||
0x00000000000002f8 handle_playpause_press
|
||||
.text 0x00000000000002fa 0xb6 fifo.o
|
||||
0x00000000000002fa fifo_init
|
||||
0x000000000000030c fifo_pop
|
||||
0x0000000000000360 fifo_push
|
||||
.text 0x00000000000003b0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text 0x00000000000003b0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text 0x00000000000003b0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text 0x00000000000003b0 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
0x00000000000003b0 . = ALIGN (0x2)
|
||||
*(.text.*)
|
||||
.text.startup 0x00000000000001f0 0x6 main.o
|
||||
0x00000000000001f0 main
|
||||
.text.startup 0x00000000000003b0 0x64 main.o
|
||||
0x00000000000003b0 main
|
||||
.text.libgcc.mul
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.div
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc 0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc 0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x00000000000001f6 . = ALIGN (0x2)
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc 0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc 0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000000414 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.text.avr-libc
|
||||
0x0000000000000414 0x242 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
0x0000000000000414 malloc
|
||||
0x0000000000000544 free
|
||||
0x0000000000000656 . = ALIGN (0x2)
|
||||
*(.fini9)
|
||||
.fini9 0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x00000000000001f6 exit
|
||||
0x00000000000001f6 _exit
|
||||
.fini9 0x0000000000000656 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
0x0000000000000656 exit
|
||||
0x0000000000000656 _exit
|
||||
*(.fini9)
|
||||
*(.fini8)
|
||||
*(.fini8)
|
||||
@ -255,46 +317,66 @@ END GROUP
|
||||
*(.fini1)
|
||||
*(.fini1)
|
||||
*(.fini0)
|
||||
.fini0 0x00000000000001f6 0x4 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.fini0 0x0000000000000656 0x4 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
*(.fini0)
|
||||
0x00000000000001fa _etext = .
|
||||
0x000000000000065a _etext = .
|
||||
|
||||
.data 0x0000000000800060 0x0 load address 0x00000000000001fa
|
||||
[!provide] PROVIDE (__data_start, .)
|
||||
.data 0x0000000000800060 0x1a load address 0x000000000000065a
|
||||
0x0000000000800060 PROVIDE (__data_start, .)
|
||||
*(.data)
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
.data 0x0000000000800060 0x0 lcd.o
|
||||
.data 0x0000000000800060 0x0 comms.o
|
||||
.data 0x0000000000800060 0x0 main.o
|
||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.data 0x0000000000800060 0x4 main.o
|
||||
0x0000000000800060 selected_song
|
||||
0x0000000000800062 display_song
|
||||
.data 0x0000000000800064 0x0 fifo.o
|
||||
.data 0x0000000000800064 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.data 0x0000000000800064 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.data 0x0000000000800064 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.data 0x0000000000800064 0x6 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
0x0000000000800064 __malloc_heap_end
|
||||
0x0000000000800066 __malloc_heap_start
|
||||
0x0000000000800068 __malloc_margin
|
||||
*(.data*)
|
||||
*(.rodata)
|
||||
*(.rodata*)
|
||||
.rodata.str1.1
|
||||
0x000000000080006a 0x10 main.o
|
||||
*(.gnu.linkonce.d*)
|
||||
0x0000000000800060 . = ALIGN (0x2)
|
||||
0x0000000000800060 _edata = .
|
||||
[!provide] PROVIDE (__data_end, .)
|
||||
0x000000000080007a . = ALIGN (0x2)
|
||||
0x000000000080007a _edata = .
|
||||
0x000000000080007a PROVIDE (__data_end, .)
|
||||
|
||||
.bss 0x0000000000800060 0x0
|
||||
[!provide] PROVIDE (__bss_start, .)
|
||||
.bss 0x000000000080007a 0x5d
|
||||
0x000000000080007a PROVIDE (__bss_start, .)
|
||||
*(.bss)
|
||||
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
.bss 0x0000000000800060 0x0 lcd.o
|
||||
.bss 0x0000000000800060 0x0 comms.o
|
||||
.bss 0x0000000000800060 0x0 main.o
|
||||
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.bss 0x000000000080007a 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||
.bss 0x000000000080007a 0x0 lcd.o
|
||||
.bss 0x000000000080007a 0x0 comms.o
|
||||
.bss 0x000000000080007a 0x0 main.o
|
||||
.bss 0x000000000080007a 0x38 fifo.o
|
||||
.bss 0x00000000008000b2 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||
.bss 0x00000000008000b2 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_copy_data.o)
|
||||
.bss 0x00000000008000b2 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_clear_bss.o)
|
||||
.bss 0x00000000008000b2 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
[!provide] PROVIDE (__bss_end, .)
|
||||
0x00000000000001fa __data_load_start = LOADADDR (.data)
|
||||
0x00000000000001fa __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
COMMON 0x00000000008000b2 0x21 main.o
|
||||
0x00000000008000b2 songs
|
||||
COMMON 0x00000000008000d3 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
0x00000000008000d3 __brkval
|
||||
0x00000000008000d5 __flp
|
||||
0x00000000008000d7 PROVIDE (__bss_end, .)
|
||||
0x000000000000065a __data_load_start = LOADADDR (.data)
|
||||
0x0000000000000674 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
|
||||
.noinit 0x0000000000800060 0x0
|
||||
.noinit 0x00000000008000d7 0x0
|
||||
[!provide] PROVIDE (__noinit_start, .)
|
||||
*(.noinit*)
|
||||
[!provide] PROVIDE (__noinit_end, .)
|
||||
0x0000000000800060 _end = .
|
||||
[!provide] PROVIDE (__heap_start, .)
|
||||
0x00000000008000d7 _end = .
|
||||
0x00000000008000d7 PROVIDE (__heap_start, .)
|
||||
|
||||
.eeprom 0x0000000000810000 0x0
|
||||
*(.eeprom*)
|
||||
@ -315,17 +397,19 @@ END GROUP
|
||||
.user_signatures
|
||||
*(.user_signatures*)
|
||||
|
||||
.stab 0x0000000000000000 0x1638
|
||||
.stab 0x0000000000000000 0x1efc
|
||||
*(.stab)
|
||||
.stab 0x0000000000000000 0x1008 lcd.o
|
||||
.stab 0x0000000000001008 0x30c comms.o
|
||||
0x4e0 (size before relaxing)
|
||||
.stab 0x0000000000001314 0x324 main.o
|
||||
0x510 (size before relaxing)
|
||||
.stab 0x0000000000001314 0x78c main.o
|
||||
0x978 (size before relaxing)
|
||||
.stab 0x0000000000001aa0 0x45c fifo.o
|
||||
0x5f4 (size before relaxing)
|
||||
|
||||
.stabstr 0x0000000000000000 0xf6f
|
||||
.stabstr 0x0000000000000000 0x12b5
|
||||
*(.stabstr)
|
||||
.stabstr 0x0000000000000000 0xf6f lcd.o
|
||||
.stabstr 0x0000000000000000 0x12b5 lcd.o
|
||||
|
||||
.stab.excl
|
||||
*(.stab.excl)
|
||||
@ -345,6 +429,8 @@ END GROUP
|
||||
0x12 (size before relaxing)
|
||||
.comment 0x0000000000000011 0x12 comms.o
|
||||
.comment 0x0000000000000011 0x12 main.o
|
||||
.comment 0x0000000000000011 0x12 fifo.o
|
||||
.comment 0x0000000000000011 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/libc.a(malloc.o)
|
||||
|
||||
.note.gnu.avr.deviceinfo
|
||||
0x0000000000000000 0x40
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user