Got a little demo going
This commit is contained in:
parent
a81fa0cb82
commit
0e5306387e
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,3 +7,4 @@ cmake-build-debug/*
|
||||
.idea/*
|
||||
*/build/**
|
||||
*/_build/**
|
||||
*.o
|
||||
|
16
final_project/sd_reader/.vscode/tasks.json
vendored
Normal file
16
final_project/sd_reader/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "make",
|
||||
"type": "shell",
|
||||
"command": "make",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -15,7 +15,7 @@
|
||||
#include "partition.h"
|
||||
#include "sd_raw.h"
|
||||
#include "sd_raw_config.h"
|
||||
#include "uart.h"
|
||||
#include "lcd.h"
|
||||
|
||||
#define DEBUG 1
|
||||
|
||||
@ -205,41 +205,20 @@
|
||||
* - sd-reader_config.h
|
||||
*/
|
||||
|
||||
static uint8_t read_line(char* buffer, uint8_t buffer_length);
|
||||
static uint32_t strtolong(const char* str);
|
||||
static uint8_t find_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name, struct fat_dir_entry_struct* dir_entry);
|
||||
static struct fat_file_struct* open_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name);
|
||||
static uint8_t print_disk_info(const struct fat_fs_struct* fs);
|
||||
|
||||
int main()
|
||||
{
|
||||
lcd_init(LCD_DISP_ON);
|
||||
|
||||
/* we will just use ordinary idle mode */
|
||||
set_sleep_mode(SLEEP_MODE_IDLE);
|
||||
|
||||
/* setup uart */
|
||||
uart_init();
|
||||
|
||||
while(1)
|
||||
{
|
||||
/* setup sd card slot */
|
||||
if(!sd_raw_init())
|
||||
{
|
||||
#if DEBUG
|
||||
uart_puts_p(PSTR("MMC/SD initialization failed\n"));
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
/* open first partition */
|
||||
struct partition_struct* partition = partition_open(sd_raw_read,
|
||||
sd_raw_read_interval,
|
||||
#if SD_RAW_WRITE_SUPPORT
|
||||
sd_raw_write,
|
||||
sd_raw_write_interval,
|
||||
#else
|
||||
0,
|
||||
0,
|
||||
#endif
|
||||
0
|
||||
);
|
||||
|
||||
@ -250,417 +229,31 @@ int main()
|
||||
*/
|
||||
partition = partition_open(sd_raw_read,
|
||||
sd_raw_read_interval,
|
||||
#if SD_RAW_WRITE_SUPPORT
|
||||
sd_raw_write,
|
||||
sd_raw_write_interval,
|
||||
#else
|
||||
0,
|
||||
0,
|
||||
#endif
|
||||
-1
|
||||
);
|
||||
if(!partition)
|
||||
{
|
||||
#if DEBUG
|
||||
uart_puts_p(PSTR("opening partition failed\n"));
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* open file system */
|
||||
struct fat_fs_struct* fs = fat_open(partition);
|
||||
if(!fs)
|
||||
{
|
||||
#if DEBUG
|
||||
uart_puts_p(PSTR("opening filesystem failed\n"));
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
/* open root directory */
|
||||
struct fat_dir_entry_struct directory;
|
||||
fat_get_dir_entry_of_path(fs, "/", &directory);
|
||||
|
||||
struct fat_dir_struct* dd = fat_open_dir(fs, &directory);
|
||||
if(!dd)
|
||||
{
|
||||
#if DEBUG
|
||||
uart_puts_p(PSTR("opening root directory failed\n"));
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
/* print some card information as a boot message */
|
||||
print_disk_info(fs);
|
||||
|
||||
/* provide a simple shell */
|
||||
char buffer[24];
|
||||
while(1)
|
||||
{
|
||||
/* print prompt */
|
||||
uart_putc('>');
|
||||
uart_putc(' ');
|
||||
|
||||
/* read command */
|
||||
char* command = buffer;
|
||||
if(read_line(command, sizeof(buffer)) < 1)
|
||||
continue;
|
||||
|
||||
/* execute command */
|
||||
if(strcmp_P(command, PSTR("init")) == 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("cd "), 3) == 0)
|
||||
{
|
||||
command += 3;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
/* change directory */
|
||||
struct fat_dir_entry_struct subdir_entry;
|
||||
if(find_file_in_dir(fs, dd, command, &subdir_entry))
|
||||
{
|
||||
struct fat_dir_struct* dd_new = fat_open_dir(fs, &subdir_entry);
|
||||
if(dd_new)
|
||||
{
|
||||
fat_close_dir(dd);
|
||||
dd = dd_new;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
uart_puts_p(PSTR("directory not found: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
else if(strcmp_P(command, PSTR("ls")) == 0)
|
||||
{
|
||||
/* print directory listing */
|
||||
// Print out all files/directories in top level
|
||||
while (1) {
|
||||
struct fat_dir_entry_struct dir_entry;
|
||||
while(fat_read_dir(dd, &dir_entry))
|
||||
{
|
||||
uint8_t spaces = sizeof(dir_entry.long_name) - strlen(dir_entry.long_name) + 4;
|
||||
|
||||
uart_puts(dir_entry.long_name);
|
||||
uart_putc(dir_entry.attributes & FAT_ATTRIB_DIR ? '/' : ' ');
|
||||
while(spaces--)
|
||||
uart_putc(' ');
|
||||
uart_putdw_dec(dir_entry.file_size);
|
||||
uart_putc('\n');
|
||||
}
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("cat "), 4) == 0)
|
||||
{
|
||||
command += 4;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
/* search file in current directory and open it */
|
||||
struct fat_file_struct* fd = open_file_in_dir(fs, dd, command);
|
||||
if(!fd)
|
||||
{
|
||||
uart_puts_p(PSTR("error opening "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
continue;
|
||||
}
|
||||
|
||||
/* print file contents */
|
||||
uint8_t buffer[8];
|
||||
uint32_t offset = 0;
|
||||
intptr_t count;
|
||||
while((count = fat_read_file(fd, buffer, sizeof(buffer))) > 0)
|
||||
{
|
||||
uart_putdw_hex(offset);
|
||||
uart_putc(':');
|
||||
for(intptr_t i = 0; i < count; ++i)
|
||||
{
|
||||
uart_putc(' ');
|
||||
uart_putc_hex(buffer[i]);
|
||||
}
|
||||
uart_putc('\n');
|
||||
offset += 8;
|
||||
}
|
||||
|
||||
fat_close_file(fd);
|
||||
}
|
||||
else if(strcmp_P(command, PSTR("disk")) == 0)
|
||||
{
|
||||
if(!print_disk_info(fs))
|
||||
uart_puts_p(PSTR("error reading disk info\n"));
|
||||
}
|
||||
#if FAT_WRITE_SUPPORT
|
||||
else if(strncmp_P(command, PSTR("rm "), 3) == 0)
|
||||
{
|
||||
command += 3;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
struct fat_dir_entry_struct file_entry;
|
||||
if(find_file_in_dir(fs, dd, command, &file_entry))
|
||||
{
|
||||
if(fat_delete_file(fs, &file_entry))
|
||||
continue;
|
||||
}
|
||||
|
||||
uart_puts_p(PSTR("error deleting file: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("touch "), 6) == 0)
|
||||
{
|
||||
command += 6;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
struct fat_dir_entry_struct file_entry;
|
||||
if(!fat_create_file(dd, command, &file_entry))
|
||||
{
|
||||
uart_puts_p(PSTR("error creating file: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("mv "), 3) == 0)
|
||||
{
|
||||
command += 3;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
char* target = command;
|
||||
while(*target != ' ' && *target != '\0')
|
||||
++target;
|
||||
|
||||
if(*target == ' ')
|
||||
*target++ = '\0';
|
||||
else
|
||||
continue;
|
||||
|
||||
struct fat_dir_entry_struct file_entry;
|
||||
if(find_file_in_dir(fs, dd, command, &file_entry))
|
||||
{
|
||||
if(fat_move_file(fs, &file_entry, dd, target))
|
||||
continue;
|
||||
}
|
||||
|
||||
uart_puts_p(PSTR("error moving file: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("write "), 6) == 0)
|
||||
{
|
||||
command += 6;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
char* offset_value = command;
|
||||
while(*offset_value != ' ' && *offset_value != '\0')
|
||||
++offset_value;
|
||||
|
||||
if(*offset_value == ' ')
|
||||
*offset_value++ = '\0';
|
||||
else
|
||||
continue;
|
||||
|
||||
/* search file in current directory and open it */
|
||||
struct fat_file_struct* fd = open_file_in_dir(fs, dd, command);
|
||||
if(!fd)
|
||||
{
|
||||
uart_puts_p(PSTR("error opening "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
continue;
|
||||
}
|
||||
|
||||
int32_t offset = strtolong(offset_value);
|
||||
if(!fat_seek_file(fd, &offset, FAT_SEEK_SET))
|
||||
{
|
||||
uart_puts_p(PSTR("error seeking on "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
|
||||
fat_close_file(fd);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* read text from the shell and write it to the file */
|
||||
uint8_t data_len;
|
||||
while(1)
|
||||
{
|
||||
/* give a different prompt */
|
||||
uart_putc('<');
|
||||
uart_putc(' ');
|
||||
|
||||
/* read one line of text */
|
||||
data_len = read_line(buffer, sizeof(buffer));
|
||||
if(!data_len)
|
||||
break;
|
||||
|
||||
/* write text to file */
|
||||
if(fat_write_file(fd, (uint8_t*) buffer, data_len) != data_len)
|
||||
{
|
||||
uart_puts_p(PSTR("error writing to file\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fat_close_file(fd);
|
||||
}
|
||||
else if(strncmp_P(command, PSTR("mkdir "), 6) == 0)
|
||||
{
|
||||
command += 6;
|
||||
if(command[0] == '\0')
|
||||
continue;
|
||||
|
||||
struct fat_dir_entry_struct dir_entry;
|
||||
if(!fat_create_dir(dd, command, &dir_entry))
|
||||
{
|
||||
uart_puts_p(PSTR("error creating directory: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if SD_RAW_WRITE_BUFFERING
|
||||
else if(strcmp_P(command, PSTR("sync")) == 0)
|
||||
{
|
||||
if(!sd_raw_sync())
|
||||
uart_puts_p(PSTR("error syncing disk\n"));
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
uart_puts_p(PSTR("unknown command: "));
|
||||
uart_puts(command);
|
||||
uart_putc('\n');
|
||||
}
|
||||
}
|
||||
|
||||
/* close directory */
|
||||
fat_close_dir(dd);
|
||||
|
||||
/* close file system */
|
||||
fat_close(fs);
|
||||
|
||||
/* close partition */
|
||||
partition_close(partition);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t read_line(char* buffer, uint8_t buffer_length)
|
||||
{
|
||||
memset(buffer, 0, buffer_length);
|
||||
|
||||
uint8_t read_length = 0;
|
||||
while(read_length < buffer_length - 1)
|
||||
{
|
||||
uint8_t c = uart_getc();
|
||||
|
||||
if(c == 0x08 || c == 0x7f)
|
||||
{
|
||||
if(read_length < 1)
|
||||
continue;
|
||||
|
||||
--read_length;
|
||||
buffer[read_length] = '\0';
|
||||
|
||||
uart_putc(0x08);
|
||||
uart_putc(' ');
|
||||
uart_putc(0x08);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
uart_putc(c);
|
||||
|
||||
if(c == '\n')
|
||||
{
|
||||
buffer[read_length] = '\0';
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer[read_length] = c;
|
||||
++read_length;
|
||||
}
|
||||
}
|
||||
|
||||
return read_length;
|
||||
}
|
||||
|
||||
uint32_t strtolong(const char* str)
|
||||
{
|
||||
uint32_t l = 0;
|
||||
while(*str >= '0' && *str <= '9')
|
||||
l = l * 10 + (*str++ - '0');
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
uint8_t find_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name, struct fat_dir_entry_struct* dir_entry)
|
||||
{
|
||||
while(fat_read_dir(dd, dir_entry))
|
||||
{
|
||||
if(strcmp(dir_entry->long_name, name) == 0)
|
||||
{
|
||||
fat_reset_dir(dd);
|
||||
return 1;
|
||||
while(fat_read_dir(dd, &dir_entry)) {
|
||||
// print out directory entry name
|
||||
lcd_clrscr();
|
||||
lcd_gotoxy(0,0);
|
||||
lcd_puts(dir_entry.long_name);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct fat_file_struct* open_file_in_dir(struct fat_fs_struct* fs, struct fat_dir_struct* dd, const char* name)
|
||||
{
|
||||
struct fat_dir_entry_struct file_entry;
|
||||
if(!find_file_in_dir(fs, dd, name, &file_entry))
|
||||
return 0;
|
||||
|
||||
return fat_open_file(fs, &file_entry);
|
||||
}
|
||||
|
||||
uint8_t print_disk_info(const struct fat_fs_struct* fs)
|
||||
{
|
||||
if(!fs)
|
||||
return 0;
|
||||
|
||||
struct sd_raw_info disk_info;
|
||||
if(!sd_raw_get_info(&disk_info))
|
||||
return 0;
|
||||
|
||||
uart_puts_p(PSTR("manuf: 0x")); uart_putc_hex(disk_info.manufacturer); uart_putc('\n');
|
||||
uart_puts_p(PSTR("oem: ")); uart_puts((char*) disk_info.oem); uart_putc('\n');
|
||||
uart_puts_p(PSTR("prod: ")); uart_puts((char*) disk_info.product); uart_putc('\n');
|
||||
uart_puts_p(PSTR("rev: ")); uart_putc_hex(disk_info.revision); uart_putc('\n');
|
||||
uart_puts_p(PSTR("serial: 0x")); uart_putdw_hex(disk_info.serial); uart_putc('\n');
|
||||
uart_puts_p(PSTR("date: ")); uart_putw_dec(disk_info.manufacturing_month); uart_putc('/');
|
||||
uart_putw_dec(disk_info.manufacturing_year); uart_putc('\n');
|
||||
uart_puts_p(PSTR("size: ")); uart_putdw_dec(disk_info.capacity / 1024 / 1024); uart_puts_p(PSTR("MB\n"));
|
||||
uart_puts_p(PSTR("copy: ")); uart_putw_dec(disk_info.flag_copy); uart_putc('\n');
|
||||
uart_puts_p(PSTR("wr.pr.: ")); uart_putw_dec(disk_info.flag_write_protect_temp); uart_putc('/');
|
||||
uart_putw_dec(disk_info.flag_write_protect); uart_putc('\n');
|
||||
uart_puts_p(PSTR("format: ")); uart_putw_dec(disk_info.format); uart_putc('\n');
|
||||
uart_puts_p(PSTR("free: ")); uart_putdw_dec(fat_get_fs_free(fs)); uart_putc('/');
|
||||
uart_putdw_dec(fat_get_fs_size(fs)); uart_putc('\n');
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#if FAT_DATETIME_SUPPORT
|
||||
void get_datetime(uint16_t* year, uint8_t* month, uint8_t* day, uint8_t* hour, uint8_t* min, uint8_t* sec)
|
||||
{
|
||||
*year = 2007;
|
||||
*month = 1;
|
||||
*day = 1;
|
||||
*hour = 0;
|
||||
*min = 0;
|
||||
*sec = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -3,11 +3,9 @@ Archive member included to satisfy reference by file (symbol)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
fat.o (__mulsi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
uart.o (__udivmodhi4)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
fat.o (__divmodhi4)
|
||||
fat.o (__udivmodhi4)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
uart.o (__udivmodsi4)
|
||||
fat.o (__udivmodsi4)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o (exit)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
@ -16,28 +14,34 @@ Archive member included to satisfy reference by file (symbol)
|
||||
fat.o (__do_copy_data)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
partition.o (__do_clear_bss)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
fat.o (__umulhisi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
uart.o (__muluhisi3)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
||||
main.o (strcmp_P)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
||||
main.o (strncmp_P)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
||||
sd_raw.o (memcpy)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
||||
fat.o (memset)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) (__muluhisi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
fat.o (__muldi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) (__muldi3_6)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
fat.o (__umulsidi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
sd_raw.o (__ashldi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
sd_raw.o (__lshrdi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
sd_raw.o (__adddi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
fat.o (__adddi3_s8)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
sd_raw.o (__subdi3)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
fat.o (__cmpdi2)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
fat.o (__cmpdi2_s8)
|
||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
/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(strchr.o)
|
||||
fat.o (strchr)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
||||
fat.o (strcmp)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
fat.o (strncmp)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
||||
fat.o (strncpy)
|
||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.o)
|
||||
fat.o (strrchr)
|
||||
|
||||
Memory Configuration
|
||||
|
||||
@ -57,8 +61,8 @@ Address of section .data set to 0x800100
|
||||
LOAD /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
LOAD partition.o
|
||||
LOAD sd_raw.o
|
||||
LOAD uart.o
|
||||
LOAD byteordering.o
|
||||
LOAD lcd.o
|
||||
LOAD fat.o
|
||||
LOAD main.o
|
||||
START GROUP
|
||||
@ -165,7 +169,7 @@ END GROUP
|
||||
.rela.plt
|
||||
*(.rela.plt)
|
||||
|
||||
.text 0x0000000000000000 0x3574
|
||||
.text 0x0000000000000000 0x2502
|
||||
*(.vectors)
|
||||
.vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
0x0000000000000000 __vectors
|
||||
@ -183,36 +187,35 @@ END GROUP
|
||||
*libprintf_flt.a:*(.progmem.data)
|
||||
*libc.a:*(.progmem.data)
|
||||
*(.progmem*)
|
||||
.progmem.data 0x0000000000000086 0x20c main.o
|
||||
0x0000000000000292 . = ALIGN (0x2)
|
||||
0x0000000000000086 . = ALIGN (0x2)
|
||||
*(.jumptables)
|
||||
*(.jumptables*)
|
||||
*(.lowtext)
|
||||
*(.lowtext*)
|
||||
0x0000000000000292 __ctors_start = .
|
||||
0x0000000000000086 __ctors_start = .
|
||||
*(.ctors)
|
||||
0x0000000000000292 __ctors_end = .
|
||||
0x0000000000000292 __dtors_start = .
|
||||
0x0000000000000086 __ctors_end = .
|
||||
0x0000000000000086 __dtors_start = .
|
||||
*(.dtors)
|
||||
0x0000000000000292 __dtors_end = .
|
||||
0x0000000000000086 __dtors_end = .
|
||||
SORT(*)(.ctors)
|
||||
SORT(*)(.dtors)
|
||||
*(.init0)
|
||||
.init0 0x0000000000000292 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
0x0000000000000292 __init
|
||||
.init0 0x0000000000000086 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
0x0000000000000086 __init
|
||||
*(.init0)
|
||||
*(.init1)
|
||||
*(.init1)
|
||||
*(.init2)
|
||||
.init2 0x0000000000000292 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
.init2 0x0000000000000086 0xc /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
*(.init2)
|
||||
*(.init3)
|
||||
*(.init3)
|
||||
*(.init4)
|
||||
.init4 0x000000000000029e 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x000000000000029e __do_copy_data
|
||||
.init4 0x00000000000002b4 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000002b4 __do_clear_bss
|
||||
.init4 0x0000000000000092 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x0000000000000092 __do_copy_data
|
||||
.init4 0x00000000000000a8 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000000a8 __do_clear_bss
|
||||
*(.init4)
|
||||
*(.init5)
|
||||
*(.init5)
|
||||
@ -223,279 +226,378 @@ END GROUP
|
||||
*(.init8)
|
||||
*(.init8)
|
||||
*(.init9)
|
||||
.init9 0x00000000000002c4 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
.init9 0x00000000000000b8 0x8 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
*(.init9)
|
||||
*(.text)
|
||||
.text 0x00000000000002cc 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
0x00000000000002cc __vector_22
|
||||
0x00000000000002cc __vector_1
|
||||
0x00000000000002cc __vector_24
|
||||
0x00000000000002cc __vector_12
|
||||
0x00000000000002cc __bad_interrupt
|
||||
0x00000000000002cc __vector_6
|
||||
0x00000000000002cc __vector_3
|
||||
0x00000000000002cc __vector_23
|
||||
0x00000000000002cc __vector_25
|
||||
0x00000000000002cc __vector_11
|
||||
0x00000000000002cc __vector_13
|
||||
0x00000000000002cc __vector_17
|
||||
0x00000000000002cc __vector_19
|
||||
0x00000000000002cc __vector_7
|
||||
0x00000000000002cc __vector_5
|
||||
0x00000000000002cc __vector_4
|
||||
0x00000000000002cc __vector_9
|
||||
0x00000000000002cc __vector_2
|
||||
0x00000000000002cc __vector_21
|
||||
0x00000000000002cc __vector_15
|
||||
0x00000000000002cc __vector_8
|
||||
0x00000000000002cc __vector_14
|
||||
0x00000000000002cc __vector_10
|
||||
0x00000000000002cc __vector_16
|
||||
0x00000000000002cc __vector_20
|
||||
.text 0x00000000000002d0 0x126 partition.o
|
||||
0x00000000000002d0 partition_open
|
||||
0x00000000000003e6 partition_close
|
||||
.text 0x00000000000003f6 0x7de sd_raw.o
|
||||
0x0000000000000484 sd_raw_available
|
||||
0x0000000000000490 sd_raw_locked
|
||||
0x000000000000049e sd_raw_sync
|
||||
0x00000000000004d2 sd_raw_read
|
||||
0x0000000000000602 sd_raw_init
|
||||
0x0000000000000714 sd_raw_read_interval
|
||||
0x00000000000007ba sd_raw_write
|
||||
0x0000000000000930 sd_raw_write_interval
|
||||
0x00000000000009d8 sd_raw_get_info
|
||||
.text 0x0000000000000bd4 0x224 uart.o
|
||||
0x0000000000000bd4 uart_init
|
||||
0x0000000000000bec uart_putc
|
||||
0x0000000000000c0a uart_putc_hex
|
||||
0x0000000000000c34 uart_putw_hex
|
||||
0x0000000000000c46 uart_putdw_hex
|
||||
0x0000000000000c66 uart_putw_dec
|
||||
0x0000000000000cde uart_putdw_dec
|
||||
0x0000000000000d96 uart_puts
|
||||
0x0000000000000dae uart_puts_p
|
||||
0x0000000000000dcc uart_getc
|
||||
0x0000000000000df6 __vector_18
|
||||
.text 0x0000000000000df8 0x28 byteordering.o
|
||||
0x0000000000000df8 read16
|
||||
0x0000000000000e00 read32
|
||||
0x0000000000000e0c write16
|
||||
0x0000000000000e14 write32
|
||||
.text 0x0000000000000e20 0x1dd4 fat.o
|
||||
0x00000000000018da fat_open
|
||||
0x0000000000001bec fat_close
|
||||
0x0000000000001bf8 fat_open_file
|
||||
0x0000000000001c58 fat_close_file
|
||||
0x0000000000001c64 fat_read_file
|
||||
0x0000000000001e6e fat_write_file
|
||||
0x00000000000020f6 fat_resize_file
|
||||
0x00000000000022de fat_seek_file
|
||||
0x0000000000002380 fat_open_dir
|
||||
0x00000000000023e8 fat_close_dir
|
||||
0x00000000000023f4 fat_reset_dir
|
||||
0x000000000000240e fat_read_dir
|
||||
0x000000000000259c fat_get_dir_entry_of_path
|
||||
0x00000000000026ae fat_create_file
|
||||
0x000000000000275c fat_delete_file
|
||||
0x0000000000002848 fat_move_file
|
||||
0x0000000000002934 fat_create_dir
|
||||
0x0000000000002aa2 fat_get_fs_size
|
||||
0x0000000000002ad6 fat_get_fs_free
|
||||
.text 0x0000000000002bf4 0x23a main.o
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.o)
|
||||
0x0000000000002e2e . = ALIGN (0x2)
|
||||
.text 0x00000000000000c0 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
0x00000000000000c0 __vector_22
|
||||
0x00000000000000c0 __vector_1
|
||||
0x00000000000000c0 __vector_24
|
||||
0x00000000000000c0 __vector_12
|
||||
0x00000000000000c0 __bad_interrupt
|
||||
0x00000000000000c0 __vector_6
|
||||
0x00000000000000c0 __vector_3
|
||||
0x00000000000000c0 __vector_23
|
||||
0x00000000000000c0 __vector_25
|
||||
0x00000000000000c0 __vector_11
|
||||
0x00000000000000c0 __vector_13
|
||||
0x00000000000000c0 __vector_17
|
||||
0x00000000000000c0 __vector_19
|
||||
0x00000000000000c0 __vector_7
|
||||
0x00000000000000c0 __vector_5
|
||||
0x00000000000000c0 __vector_4
|
||||
0x00000000000000c0 __vector_9
|
||||
0x00000000000000c0 __vector_2
|
||||
0x00000000000000c0 __vector_21
|
||||
0x00000000000000c0 __vector_15
|
||||
0x00000000000000c0 __vector_8
|
||||
0x00000000000000c0 __vector_14
|
||||
0x00000000000000c0 __vector_10
|
||||
0x00000000000000c0 __vector_16
|
||||
0x00000000000000c0 __vector_18
|
||||
0x00000000000000c0 __vector_20
|
||||
.text 0x00000000000000c4 0x144 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 0x1f8 lcd.o
|
||||
0x0000000000000b6a lcd_command
|
||||
0x0000000000000b7c lcd_data
|
||||
0x0000000000000b8e lcd_gotoxy
|
||||
0x0000000000000b9c lcd_getxy
|
||||
0x0000000000000ba4 lcd_clrscr
|
||||
0x0000000000000baa lcd_home
|
||||
0x0000000000000bb0 lcd_putc
|
||||
0x0000000000000bd8 lcd_puts
|
||||
0x0000000000000bf0 lcd_puts_p
|
||||
0x0000000000000c0e lcd_init
|
||||
.text 0x0000000000000c90 0x14fa fat.o
|
||||
0x000000000000115a fat_open
|
||||
0x0000000000001610 fat_close
|
||||
0x000000000000161c fat_open_file
|
||||
0x0000000000001698 fat_close_file
|
||||
0x00000000000016a4 fat_read_file
|
||||
0x0000000000001a76 fat_seek_file
|
||||
0x0000000000001b06 fat_open_dir
|
||||
0x0000000000001b76 fat_close_dir
|
||||
0x0000000000001b82 fat_reset_dir
|
||||
0x0000000000001ba4 fat_read_dir
|
||||
0x0000000000001e6e fat_get_dir_entry_of_path
|
||||
0x0000000000001f80 fat_get_fs_size
|
||||
0x0000000000001fee fat_get_fs_free
|
||||
.text 0x000000000000218a 0x0 main.o
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
0x000000000000218a . = ALIGN (0x2)
|
||||
*(.text.*)
|
||||
.text.startup 0x0000000000002e2e 0x588 main.o
|
||||
0x0000000000002e2e main
|
||||
.text.startup 0x000000000000218a 0x9a main.o
|
||||
0x000000000000218a main
|
||||
.text.libgcc.mul
|
||||
0x00000000000033b6 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x00000000000033b6 __mulsi3
|
||||
0x0000000000002224 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002224 __mulsi3
|
||||
.text.libgcc.div
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc 0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc 0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.text.libgcc.mul
|
||||
0x00000000000033d6 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x0000000000002244 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.div
|
||||
0x00000000000033d6 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x00000000000033d6 __udivmodhi4
|
||||
.text.libgcc 0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x0000000000002244 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x0000000000002244 __udivmodhi4
|
||||
.text.libgcc 0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.text.libgcc.mul
|
||||
0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.div
|
||||
0x00000000000033fe 0x28 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000033fe __divmodhi4
|
||||
0x00000000000033fe _div
|
||||
.text.libgcc 0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x000000000000226c 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x000000000000226c __udivmodsi4
|
||||
.text.libgcc 0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000003426 0x44 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x0000000000003426 __udivmodsi4
|
||||
.text.libgcc 0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc 0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.prologue
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.builtins
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.fmul
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.fixed
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc.mul
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc.div
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.text.libgcc 0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc 0x00000000000022b0 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022b0 __tablejump2__
|
||||
.text.libgcc.prologue
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc.builtins
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc.fmul
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc.fixed
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc.mul
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.div
|
||||
0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.text.libgcc 0x000000000000346a 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x000000000000346a __tablejump2__
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc 0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.text.libgcc 0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc 0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022bc 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x00000000000022bc __muluhisi3
|
||||
.text.libgcc.div
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.text.libgcc 0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc 0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000003476 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000003476 __umulhisi3
|
||||
0x00000000000022d2 0xa0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
0x00000000000022d2 __muldi3
|
||||
.text.libgcc.div
|
||||
0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc 0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc 0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000003494 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000003494 __muluhisi3
|
||||
0x0000000000002372 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
0x0000000000002372 __muldi3_6
|
||||
.text.libgcc.div
|
||||
0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.text.libgcc 0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc 0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000002384 0x56 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
0x0000000000002384 __umulsidi3
|
||||
0x0000000000002386 __umulsidi3_helper
|
||||
.text.libgcc.div
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc 0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.text.libgcc.mul
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc.div
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc 0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000023da 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000023da 0x32 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
0x00000000000023da __ashldi3
|
||||
.text.libgcc.fmul
|
||||
0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.text.libgcc.mul
|
||||
0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc.div
|
||||
0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc 0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x000000000000240c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x000000000000240c 0x3c /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
0x000000000000240c __ashrdi3
|
||||
0x0000000000002410 __lshrdi3
|
||||
.text.libgcc.fmul
|
||||
0x0000000000002448 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000002448 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000002448 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000002448 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc 0x0000000000002448 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
0x0000000000002448 __adddi3
|
||||
.text.libgcc.prologue
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.text.libgcc.mul
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc.div
|
||||
0x000000000000245a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc 0x000000000000245a 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
0x000000000000245a __adddi3_s8
|
||||
.text.libgcc.prologue
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000002472 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc 0x0000000000002472 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
0x0000000000002472 __subdi3
|
||||
.text.libgcc.prologue
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000002484 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc 0x0000000000002484 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
0x0000000000002484 __cmpdi2
|
||||
.text.libgcc.prologue
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc.builtins
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc.fmul
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc.fixed
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.text.libgcc.mul
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc.div
|
||||
0x0000000000002496 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc 0x0000000000002496 0x18 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
0x0000000000002496 __cmpdi2_s8
|
||||
.text.libgcc.prologue
|
||||
0x00000000000024ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000024ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000024ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000024ae 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.text.libgcc.mul
|
||||
0x00000000000024ae 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
0x00000000000024ae __umulhisi3
|
||||
.text.libgcc.div
|
||||
0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc 0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc.prologue
|
||||
0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc.builtins
|
||||
0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc.fmul
|
||||
0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.libgcc.fixed
|
||||
0x00000000000024cc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.text.avr-libc
|
||||
0x00000000000034aa 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
||||
0x00000000000034aa strcmp_P
|
||||
0x00000000000024cc 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
0x00000000000024cc strchr
|
||||
.text.avr-libc
|
||||
0x00000000000034bc 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
||||
0x00000000000034bc strncmp_P
|
||||
.text.avr-libc
|
||||
0x00000000000034d8 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
||||
0x00000000000034d8 memcpy
|
||||
.text.avr-libc
|
||||
0x00000000000034ea 0xe /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
||||
0x00000000000034ea memset
|
||||
.text.avr-libc
|
||||
0x00000000000034f8 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
0x00000000000034f8 strchr
|
||||
.text.avr-libc
|
||||
0x000000000000350e 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
||||
0x000000000000350e strcmp
|
||||
.text.avr-libc
|
||||
0x0000000000003520 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
0x0000000000003520 strncmp
|
||||
.text.avr-libc
|
||||
0x000000000000353c 0x1e /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
||||
0x000000000000353c strncpy
|
||||
.text.avr-libc
|
||||
0x000000000000355a 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.o)
|
||||
0x000000000000355a strrchr
|
||||
0x0000000000003570 . = ALIGN (0x2)
|
||||
0x00000000000024e2 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
0x00000000000024e2 strncmp
|
||||
0x00000000000024fe . = ALIGN (0x2)
|
||||
*(.fini9)
|
||||
.fini9 0x0000000000003570 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x0000000000003570 exit
|
||||
0x0000000000003570 _exit
|
||||
.fini9 0x00000000000024fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
0x00000000000024fe exit
|
||||
0x00000000000024fe _exit
|
||||
*(.fini9)
|
||||
*(.fini8)
|
||||
*(.fini8)
|
||||
@ -514,39 +616,41 @@ END GROUP
|
||||
*(.fini1)
|
||||
*(.fini1)
|
||||
*(.fini0)
|
||||
.fini0 0x0000000000003570 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.fini0 0x00000000000024fe 0x4 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
*(.fini0)
|
||||
0x0000000000003574 _etext = .
|
||||
0x0000000000002502 _etext = .
|
||||
|
||||
.data 0x0000000000800100 0x10 load address 0x0000000000003574
|
||||
.data 0x0000000000800100 0x10 load address 0x0000000000002502
|
||||
0x0000000000800100 PROVIDE (__data_start, .)
|
||||
*(.data)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
.data 0x0000000000800100 0x0 partition.o
|
||||
.data 0x0000000000800100 0x0 sd_raw.o
|
||||
.data 0x0000000000800100 0x0 uart.o
|
||||
.data 0x0000000000800100 0x0 byteordering.o
|
||||
.data 0x0000000000800100 0x0 lcd.o
|
||||
.data 0x0000000000800100 0x0 fat.o
|
||||
.data 0x0000000000800100 0x0 main.o
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.o)
|
||||
*(.data*)
|
||||
*(.rodata)
|
||||
.rodata 0x0000000000800100 0xd fat.o
|
||||
@ -559,46 +663,48 @@ END GROUP
|
||||
0x0000000000800110 _edata = .
|
||||
0x0000000000800110 PROVIDE (__data_end, .)
|
||||
|
||||
.bss 0x0000000000800110 0x2c8
|
||||
.bss 0x0000000000800110 0xf5
|
||||
0x0000000000800110 PROVIDE (__bss_start, .)
|
||||
*(.bss)
|
||||
.bss 0x0000000000800110 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||
.bss 0x0000000000800110 0x11 partition.o
|
||||
.bss 0x0000000000800121 0x206 sd_raw.o
|
||||
.bss 0x0000000000800327 0x0 uart.o
|
||||
.bss 0x0000000000800327 0x0 byteordering.o
|
||||
.bss 0x0000000000800327 0xb1 fat.o
|
||||
.bss 0x00000000008003d8 0x0 main.o
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.o)
|
||||
.bss 0x0000000000800121 0x1 sd_raw.o
|
||||
.bss 0x0000000000800122 0x0 byteordering.o
|
||||
.bss 0x0000000000800122 0x0 lcd.o
|
||||
.bss 0x0000000000800122 0xe3 fat.o
|
||||
.bss 0x0000000000800205 0x0 main.o
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3_s8.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
0x00000000008003d8 PROVIDE (__bss_end, .)
|
||||
0x0000000000003574 __data_load_start = LOADADDR (.data)
|
||||
0x0000000000003584 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
0x0000000000800205 PROVIDE (__bss_end, .)
|
||||
0x0000000000002502 __data_load_start = LOADADDR (.data)
|
||||
0x0000000000002512 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||
|
||||
.noinit 0x00000000008003d8 0x0
|
||||
.noinit 0x0000000000800205 0x0
|
||||
[!provide] PROVIDE (__noinit_start, .)
|
||||
*(.noinit*)
|
||||
[!provide] PROVIDE (__noinit_end, .)
|
||||
0x00000000008003d8 _end = .
|
||||
0x0000000000800205 _end = .
|
||||
[!provide] PROVIDE (__heap_start, .)
|
||||
|
||||
.eeprom 0x0000000000810000 0x0
|
||||
@ -620,23 +726,23 @@ END GROUP
|
||||
.user_signatures
|
||||
*(.user_signatures*)
|
||||
|
||||
.stab 0x0000000000000000 0x67bc
|
||||
.stab 0x0000000000000000 0x4b3c
|
||||
*(.stab)
|
||||
.stab 0x0000000000000000 0x6e4 partition.o
|
||||
.stab 0x00000000000006e4 0x1350 sd_raw.o
|
||||
0x1500 (size before relaxing)
|
||||
.stab 0x0000000000001a34 0xa20 uart.o
|
||||
0xbf4 (size before relaxing)
|
||||
.stab 0x0000000000002454 0x414 byteordering.o
|
||||
.stab 0x00000000000006e4 0x129c sd_raw.o
|
||||
0x144c (size before relaxing)
|
||||
.stab 0x0000000000001980 0x414 byteordering.o
|
||||
0x594 (size before relaxing)
|
||||
.stab 0x0000000000002868 0x2fdc fat.o
|
||||
0x31f8 (size before relaxing)
|
||||
.stab 0x0000000000005844 0xf78 main.o
|
||||
0x1200 (size before relaxing)
|
||||
.stab 0x0000000000001d94 0xe34 lcd.o
|
||||
0x1008 (size before relaxing)
|
||||
.stab 0x0000000000002bc8 0x1b0c fat.o
|
||||
0x1d28 (size before relaxing)
|
||||
.stab 0x00000000000046d4 0x468 main.o
|
||||
0x6fc (size before relaxing)
|
||||
|
||||
.stabstr 0x0000000000000000 0x2a7b
|
||||
.stabstr 0x0000000000000000 0x2390
|
||||
*(.stabstr)
|
||||
.stabstr 0x0000000000000000 0x2a7b partition.o
|
||||
.stabstr 0x0000000000000000 0x2390 partition.o
|
||||
|
||||
.stab.excl
|
||||
*(.stab.excl)
|
||||
@ -655,8 +761,8 @@ END GROUP
|
||||
.comment 0x0000000000000000 0x11 partition.o
|
||||
0x12 (size before relaxing)
|
||||
.comment 0x0000000000000011 0x12 sd_raw.o
|
||||
.comment 0x0000000000000011 0x12 uart.o
|
||||
.comment 0x0000000000000011 0x12 byteordering.o
|
||||
.comment 0x0000000000000011 0x12 lcd.o
|
||||
.comment 0x0000000000000011 0x12 fat.o
|
||||
.comment 0x0000000000000011 0x12 main.o
|
||||
|
||||
|
Binary file not shown.
@ -34,7 +34,7 @@ extern "C"
|
||||
*
|
||||
* Set to 1 to enable MMC/SD write support, set to 0 to disable it.
|
||||
*/
|
||||
#define SD_RAW_WRITE_SUPPORT 1
|
||||
#define SD_RAW_WRITE_SUPPORT 0
|
||||
|
||||
/**
|
||||
* \ingroup sd_raw_config
|
||||
@ -65,7 +65,7 @@ extern "C"
|
||||
* Set to 1 to support so-called SDHC memory cards, i.e. SD
|
||||
* cards with more than 2 gigabytes of memory.
|
||||
*/
|
||||
#define SD_RAW_SDHC 0
|
||||
#define SD_RAW_SDHC 1
|
||||
|
||||
/**
|
||||
* @}
|
||||
|
@ -1,198 +0,0 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006-2012 by Roland Riegel <feedback@roland-riegel.de>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <avr/io.h>
|
||||
#include <avr/pgmspace.h>
|
||||
#include <avr/sfr_defs.h>
|
||||
#include <avr/sleep.h>
|
||||
|
||||
#include "uart.h"
|
||||
|
||||
/* some mcus have multiple uarts */
|
||||
#ifdef UDR0
|
||||
#define UBRRH UBRR0H
|
||||
#define UBRRL UBRR0L
|
||||
#define UDR UDR0
|
||||
|
||||
#define UCSRA UCSR0A
|
||||
#define UDRE UDRE0
|
||||
#define RXC RXC0
|
||||
|
||||
#define UCSRB UCSR0B
|
||||
#define RXEN RXEN0
|
||||
#define TXEN TXEN0
|
||||
#define RXCIE RXCIE0
|
||||
|
||||
#define UCSRC UCSR0C
|
||||
#define URSEL
|
||||
#define UCSZ0 UCSZ00
|
||||
#define UCSZ1 UCSZ01
|
||||
#define UCSRC_SELECT 0
|
||||
#else
|
||||
#define UCSRC_SELECT (1 << URSEL)
|
||||
#endif
|
||||
|
||||
#ifndef USART_RXC_vect
|
||||
#if defined(UART0_RX_vect)
|
||||
#define USART_RXC_vect UART0_RX_vect
|
||||
#elif defined(UART_RX_vect)
|
||||
#define USART_RXC_vect UART_RX_vect
|
||||
#elif defined(USART0_RX_vect)
|
||||
#define USART_RXC_vect USART0_RX_vect
|
||||
#elif defined(USART_RX_vect)
|
||||
#define USART_RXC_vect USART_RX_vect
|
||||
#elif defined(USART0_RXC_vect)
|
||||
#define USART_RXC_vect USART0_RXC_vect
|
||||
#elif defined(USART_RXC_vect)
|
||||
#define USART_RXC_vect USART_RXC_vect
|
||||
#else
|
||||
#error "Uart receive complete interrupt not defined!"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define BAUD 9600UL
|
||||
#define UBRRVAL (F_CPU/(BAUD*16)-1)
|
||||
#define USE_SLEEP 1
|
||||
|
||||
void uart_init()
|
||||
{
|
||||
/* set baud rate */
|
||||
UBRRH = UBRRVAL >> 8;
|
||||
UBRRL = UBRRVAL & 0xff;
|
||||
/* set frame format: 8 bit, no parity, 1 bit */
|
||||
UCSRC = UCSRC_SELECT | (1 << UCSZ1) | (1 << UCSZ0);
|
||||
/* enable serial receiver and transmitter */
|
||||
#if !USE_SLEEP
|
||||
UCSRB = (1 << RXEN) | (1 << TXEN);
|
||||
#else
|
||||
UCSRB = (1 << RXEN) | (1 << TXEN) | (1 << RXCIE);
|
||||
#endif
|
||||
}
|
||||
|
||||
void uart_putc(uint8_t c)
|
||||
{
|
||||
if(c == '\n')
|
||||
uart_putc('\r');
|
||||
|
||||
/* wait until transmit buffer is empty */
|
||||
while(!(UCSRA & (1 << UDRE)));
|
||||
|
||||
/* send next byte */
|
||||
UDR = c;
|
||||
}
|
||||
|
||||
void uart_putc_hex(uint8_t b)
|
||||
{
|
||||
/* upper nibble */
|
||||
if((b >> 4) < 0x0a)
|
||||
uart_putc((b >> 4) + '0');
|
||||
else
|
||||
uart_putc((b >> 4) - 0x0a + 'a');
|
||||
|
||||
/* lower nibble */
|
||||
if((b & 0x0f) < 0x0a)
|
||||
uart_putc((b & 0x0f) + '0');
|
||||
else
|
||||
uart_putc((b & 0x0f) - 0x0a + 'a');
|
||||
}
|
||||
|
||||
void uart_putw_hex(uint16_t w)
|
||||
{
|
||||
uart_putc_hex((uint8_t) (w >> 8));
|
||||
uart_putc_hex((uint8_t) (w & 0xff));
|
||||
}
|
||||
|
||||
void uart_putdw_hex(uint32_t dw)
|
||||
{
|
||||
uart_putw_hex((uint16_t) (dw >> 16));
|
||||
uart_putw_hex((uint16_t) (dw & 0xffff));
|
||||
}
|
||||
|
||||
void uart_putw_dec(uint16_t w)
|
||||
{
|
||||
uint16_t num = 10000;
|
||||
uint8_t started = 0;
|
||||
|
||||
while(num > 0)
|
||||
{
|
||||
uint8_t b = w / num;
|
||||
if(b > 0 || started || num == 1)
|
||||
{
|
||||
uart_putc('0' + b);
|
||||
started = 1;
|
||||
}
|
||||
w -= b * num;
|
||||
|
||||
num /= 10;
|
||||
}
|
||||
}
|
||||
|
||||
void uart_putdw_dec(uint32_t dw)
|
||||
{
|
||||
uint32_t num = 1000000000;
|
||||
uint8_t started = 0;
|
||||
|
||||
while(num > 0)
|
||||
{
|
||||
uint8_t b = dw / num;
|
||||
if(b > 0 || started || num == 1)
|
||||
{
|
||||
uart_putc('0' + b);
|
||||
started = 1;
|
||||
}
|
||||
dw -= b * num;
|
||||
|
||||
num /= 10;
|
||||
}
|
||||
}
|
||||
|
||||
void uart_puts(const char* str)
|
||||
{
|
||||
while(*str)
|
||||
uart_putc(*str++);
|
||||
}
|
||||
|
||||
void uart_puts_p(PGM_P str)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
uint8_t b = pgm_read_byte_near(str++);
|
||||
if(!b)
|
||||
break;
|
||||
|
||||
uart_putc(b);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t uart_getc()
|
||||
{
|
||||
/* wait until receive buffer is full */
|
||||
#if USE_SLEEP
|
||||
uint8_t sreg = SREG;
|
||||
sei();
|
||||
|
||||
while(!(UCSRA & (1 << RXC)))
|
||||
sleep_mode();
|
||||
|
||||
SREG = sreg;
|
||||
#else
|
||||
while(!(UCSRA & (1 << RXC)));
|
||||
#endif
|
||||
|
||||
uint8_t b = UDR;
|
||||
if(b == '\r')
|
||||
b = '\n';
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
EMPTY_INTERRUPT(USART_RXC_vect)
|
||||
|
@ -1,42 +0,0 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2006-2012 by Roland Riegel <feedback@roland-riegel.de>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef UART_H
|
||||
#define UART_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <avr/pgmspace.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
void uart_init();
|
||||
|
||||
void uart_putc(uint8_t c);
|
||||
|
||||
void uart_putc_hex(uint8_t b);
|
||||
void uart_putw_hex(uint16_t w);
|
||||
void uart_putdw_hex(uint32_t dw);
|
||||
|
||||
void uart_putw_dec(uint16_t w);
|
||||
void uart_putdw_dec(uint32_t dw);
|
||||
|
||||
void uart_puts(const char* str);
|
||||
void uart_puts_p(PGM_P str);
|
||||
|
||||
uint8_t uart_getc();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user