Stuff is happening
This commit is contained in:
parent
fa8cc80206
commit
958073b19b
@ -9,7 +9,8 @@
|
|||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
"files.associations": {
|
"files.associations": {
|
||||||
"io.h": "c"
|
"io.h": "c",
|
||||||
|
"interrupt.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,7 +16,7 @@ OBJCOPY := avr-objcopy
|
|||||||
SIZE := avr-size -A
|
SIZE := avr-size -A
|
||||||
DOXYGEN := doxygen
|
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)
|
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 "main.h"
|
||||||
#include "lcd.h"
|
|
||||||
|
|
||||||
#define USART_BAUDRATE 9600 //! USART baudrate, change this to set it.
|
/* ---- Global Flags ---- */
|
||||||
#define UBRR_VALUE (((F_CPU/(USART_BAUDRATE*16UL)))-1)
|
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
|
/** @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
|
UCSRC = (1 << UCSZ1) | (1 << UCSZ0); // fire-up USART
|
||||||
|
|
||||||
|
|
||||||
|
// Enable RX complete interrupt
|
||||||
UCSRB |= (1 << RXCIE);
|
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() {
|
int main() {
|
||||||
|
// Scratch variables
|
||||||
|
uint8_t incoming_cmd = 0;
|
||||||
|
|
||||||
|
fifo_init();
|
||||||
|
gpio_init();
|
||||||
usart_init();
|
usart_init();
|
||||||
|
|
||||||
lcd_clrscr();
|
lcd_clrscr();
|
||||||
@ -25,6 +107,28 @@ int main() {
|
|||||||
|
|
||||||
// Main loop
|
// Main loop
|
||||||
while (1) {
|
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/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/../../../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
|
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 lcd.o
|
||||||
LOAD comms.o
|
LOAD comms.o
|
||||||
LOAD main.o
|
LOAD main.o
|
||||||
|
LOAD fifo.o
|
||||||
START GROUP
|
START GROUP
|
||||||
LOAD /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a
|
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
|
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
|
||||||
*(.rela.plt)
|
*(.rela.plt)
|
||||||
|
|
||||||
.text 0x0000000000000000 0x1fa
|
.text 0x0000000000000000 0x65a
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
.vectors 0x0000000000000000 0x2a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
.vectors 0x0000000000000000 0x2a /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
0x0000000000000000 __vectors
|
0x0000000000000000 __vectors
|
||||||
@ -166,6 +180,10 @@ END GROUP
|
|||||||
*(.init3)
|
*(.init3)
|
||||||
*(.init3)
|
*(.init3)
|
||||||
*(.init4)
|
*(.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)
|
*(.init4)
|
||||||
*(.init5)
|
*(.init5)
|
||||||
*(.init5)
|
*(.init5)
|
||||||
@ -176,67 +194,111 @@ END GROUP
|
|||||||
*(.init8)
|
*(.init8)
|
||||||
*(.init8)
|
*(.init8)
|
||||||
*(.init9)
|
*(.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)
|
*(.init9)
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x0000000000000036 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
.text 0x000000000000005c 0x2 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
0x0000000000000036 __vector_1
|
0x000000000000005c __vector_1
|
||||||
0x0000000000000036 __vector_12
|
0x000000000000005c __vector_12
|
||||||
0x0000000000000036 __bad_interrupt
|
0x000000000000005c __bad_interrupt
|
||||||
0x0000000000000036 __vector_6
|
0x000000000000005c __vector_6
|
||||||
0x0000000000000036 __vector_3
|
0x000000000000005c __vector_3
|
||||||
0x0000000000000036 __vector_11
|
0x000000000000005c __vector_11
|
||||||
0x0000000000000036 __vector_13
|
0x000000000000005c __vector_13
|
||||||
0x0000000000000036 __vector_17
|
0x000000000000005c __vector_17
|
||||||
0x0000000000000036 __vector_19
|
0x000000000000005c __vector_19
|
||||||
0x0000000000000036 __vector_7
|
0x000000000000005c __vector_5
|
||||||
0x0000000000000036 __vector_5
|
0x000000000000005c __vector_4
|
||||||
0x0000000000000036 __vector_4
|
0x000000000000005c __vector_9
|
||||||
0x0000000000000036 __vector_9
|
0x000000000000005c __vector_2
|
||||||
0x0000000000000036 __vector_2
|
0x000000000000005c __vector_15
|
||||||
0x0000000000000036 __vector_15
|
0x000000000000005c __vector_8
|
||||||
0x0000000000000036 __vector_8
|
0x000000000000005c __vector_14
|
||||||
0x0000000000000036 __vector_14
|
0x000000000000005c __vector_10
|
||||||
0x0000000000000036 __vector_10
|
0x000000000000005c __vector_16
|
||||||
0x0000000000000036 __vector_16
|
0x000000000000005c __vector_18
|
||||||
0x0000000000000036 __vector_18
|
0x000000000000005c __vector_20
|
||||||
0x0000000000000036 __vector_20
|
.text 0x000000000000005e 0x1b8 lcd.o
|
||||||
.text 0x0000000000000038 0x1b8 lcd.o
|
0x0000000000000128 lcd_command
|
||||||
0x0000000000000102 lcd_command
|
0x0000000000000136 lcd_data
|
||||||
0x0000000000000110 lcd_data
|
0x0000000000000144 lcd_gotoxy
|
||||||
0x000000000000011e lcd_gotoxy
|
0x0000000000000150 lcd_getxy
|
||||||
0x000000000000012a lcd_getxy
|
0x0000000000000156 lcd_clrscr
|
||||||
0x0000000000000130 lcd_clrscr
|
0x000000000000015a lcd_home
|
||||||
0x0000000000000134 lcd_home
|
0x000000000000015e lcd_putc
|
||||||
0x0000000000000138 lcd_putc
|
0x0000000000000180 lcd_puts
|
||||||
0x000000000000015a lcd_puts
|
0x0000000000000196 lcd_puts_p
|
||||||
0x0000000000000170 lcd_puts_p
|
0x00000000000001b2 lcd_init
|
||||||
0x000000000000018c lcd_init
|
.text 0x0000000000000216 0x0 comms.o
|
||||||
.text 0x00000000000001f0 0x0 comms.o
|
.text 0x0000000000000216 0xe4 main.o
|
||||||
.text 0x00000000000001f0 0x0 main.o
|
0x0000000000000216 add_song
|
||||||
.text 0x00000000000001f0 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
0x000000000000025e clear_songs
|
||||||
0x00000000000001f0 . = ALIGN (0x2)
|
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.*)
|
||||||
.text.startup 0x00000000000001f0 0x6 main.o
|
.text.startup 0x00000000000003b0 0x64 main.o
|
||||||
0x00000000000001f0 main
|
0x00000000000003b0 main
|
||||||
.text.libgcc.mul
|
.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
|
.text.libgcc.div
|
||||||
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 0x00000000000001f6 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
|
.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
|
.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
|
.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
|
.text.libgcc.fixed
|
||||||
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)
|
||||||
0x00000000000001f6 . = ALIGN (0x2)
|
.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)
|
||||||
.fini9 0x00000000000001f6 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
.fini9 0x0000000000000656 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.o)
|
||||||
0x00000000000001f6 exit
|
0x0000000000000656 exit
|
||||||
0x00000000000001f6 _exit
|
0x0000000000000656 _exit
|
||||||
*(.fini9)
|
*(.fini9)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
@ -255,46 +317,66 @@ END GROUP
|
|||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini0)
|
*(.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)
|
*(.fini0)
|
||||||
0x00000000000001fa _etext = .
|
0x000000000000065a _etext = .
|
||||||
|
|
||||||
.data 0x0000000000800060 0x0 load address 0x00000000000001fa
|
.data 0x0000000000800060 0x1a load address 0x000000000000065a
|
||||||
[!provide] PROVIDE (__data_start, .)
|
0x0000000000800060 PROVIDE (__data_start, .)
|
||||||
*(.data)
|
*(.data)
|
||||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
.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 lcd.o
|
||||||
.data 0x0000000000800060 0x0 comms.o
|
.data 0x0000000000800060 0x0 comms.o
|
||||||
.data 0x0000000000800060 0x0 main.o
|
.data 0x0000000000800060 0x4 main.o
|
||||||
.data 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.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*)
|
*(.data*)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata*)
|
*(.rodata*)
|
||||||
|
.rodata.str1.1
|
||||||
|
0x000000000080006a 0x10 main.o
|
||||||
*(.gnu.linkonce.d*)
|
*(.gnu.linkonce.d*)
|
||||||
0x0000000000800060 . = ALIGN (0x2)
|
0x000000000080007a . = ALIGN (0x2)
|
||||||
0x0000000000800060 _edata = .
|
0x000000000080007a _edata = .
|
||||||
[!provide] PROVIDE (__data_end, .)
|
0x000000000080007a PROVIDE (__data_end, .)
|
||||||
|
|
||||||
.bss 0x0000000000800060 0x0
|
.bss 0x000000000080007a 0x5d
|
||||||
[!provide] PROVIDE (__bss_start, .)
|
0x000000000080007a PROVIDE (__bss_start, .)
|
||||||
*(.bss)
|
*(.bss)
|
||||||
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
.bss 0x000000000080007a 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr25/tiny-stack/crtattiny2313a.o
|
||||||
.bss 0x0000000000800060 0x0 lcd.o
|
.bss 0x000000000080007a 0x0 lcd.o
|
||||||
.bss 0x0000000000800060 0x0 comms.o
|
.bss 0x000000000080007a 0x0 comms.o
|
||||||
.bss 0x0000000000800060 0x0 main.o
|
.bss 0x000000000080007a 0x0 main.o
|
||||||
.bss 0x0000000000800060 0x0 /usr/lib/gcc/avr/5.4.0/avr25/tiny-stack/libgcc.a(_exit.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*)
|
*(.bss*)
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
[!provide] PROVIDE (__bss_end, .)
|
COMMON 0x00000000008000b2 0x21 main.o
|
||||||
0x00000000000001fa __data_load_start = LOADADDR (.data)
|
0x00000000008000b2 songs
|
||||||
0x00000000000001fa __data_load_end = (__data_load_start + SIZEOF (.data))
|
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, .)
|
[!provide] PROVIDE (__noinit_start, .)
|
||||||
*(.noinit*)
|
*(.noinit*)
|
||||||
[!provide] PROVIDE (__noinit_end, .)
|
[!provide] PROVIDE (__noinit_end, .)
|
||||||
0x0000000000800060 _end = .
|
0x00000000008000d7 _end = .
|
||||||
[!provide] PROVIDE (__heap_start, .)
|
0x00000000008000d7 PROVIDE (__heap_start, .)
|
||||||
|
|
||||||
.eeprom 0x0000000000810000 0x0
|
.eeprom 0x0000000000810000 0x0
|
||||||
*(.eeprom*)
|
*(.eeprom*)
|
||||||
@ -315,17 +397,19 @@ END GROUP
|
|||||||
.user_signatures
|
.user_signatures
|
||||||
*(.user_signatures*)
|
*(.user_signatures*)
|
||||||
|
|
||||||
.stab 0x0000000000000000 0x1638
|
.stab 0x0000000000000000 0x1efc
|
||||||
*(.stab)
|
*(.stab)
|
||||||
.stab 0x0000000000000000 0x1008 lcd.o
|
.stab 0x0000000000000000 0x1008 lcd.o
|
||||||
.stab 0x0000000000001008 0x30c comms.o
|
.stab 0x0000000000001008 0x30c comms.o
|
||||||
0x4e0 (size before relaxing)
|
0x4e0 (size before relaxing)
|
||||||
.stab 0x0000000000001314 0x324 main.o
|
.stab 0x0000000000001314 0x78c main.o
|
||||||
0x510 (size before relaxing)
|
0x978 (size before relaxing)
|
||||||
|
.stab 0x0000000000001aa0 0x45c fifo.o
|
||||||
|
0x5f4 (size before relaxing)
|
||||||
|
|
||||||
.stabstr 0x0000000000000000 0xf6f
|
.stabstr 0x0000000000000000 0x12b5
|
||||||
*(.stabstr)
|
*(.stabstr)
|
||||||
.stabstr 0x0000000000000000 0xf6f lcd.o
|
.stabstr 0x0000000000000000 0x12b5 lcd.o
|
||||||
|
|
||||||
.stab.excl
|
.stab.excl
|
||||||
*(.stab.excl)
|
*(.stab.excl)
|
||||||
@ -345,6 +429,8 @@ END GROUP
|
|||||||
0x12 (size before relaxing)
|
0x12 (size before relaxing)
|
||||||
.comment 0x0000000000000011 0x12 comms.o
|
.comment 0x0000000000000011 0x12 comms.o
|
||||||
.comment 0x0000000000000011 0x12 main.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
|
.note.gnu.avr.deviceinfo
|
||||||
0x0000000000000000 0x40
|
0x0000000000000000 0x40
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user