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/*
|
.idea/*
|
||||||
*/build/**
|
*/build/**
|
||||||
*/_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 "partition.h"
|
||||||
#include "sd_raw.h"
|
#include "sd_raw.h"
|
||||||
#include "sd_raw_config.h"
|
#include "sd_raw_config.h"
|
||||||
#include "uart.h"
|
#include "lcd.h"
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
|
|
||||||
@ -205,462 +205,55 @@
|
|||||||
* - sd-reader_config.h
|
* - 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 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()
|
int main()
|
||||||
{
|
{
|
||||||
|
lcd_init(LCD_DISP_ON);
|
||||||
|
|
||||||
/* we will just use ordinary idle mode */
|
/* we will just use ordinary idle mode */
|
||||||
set_sleep_mode(SLEEP_MODE_IDLE);
|
set_sleep_mode(SLEEP_MODE_IDLE);
|
||||||
|
|
||||||
/* setup uart */
|
/* open first partition */
|
||||||
uart_init();
|
struct partition_struct* partition = partition_open(sd_raw_read,
|
||||||
|
sd_raw_read_interval,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
while(1)
|
if(!partition)
|
||||||
{
|
{
|
||||||
/* setup sd card slot */
|
/* If the partition did not open, assume the storage device
|
||||||
if(!sd_raw_init())
|
* is a "superfloppy", i.e. has no MBR.
|
||||||
{
|
*/
|
||||||
#if DEBUG
|
partition = partition_open(sd_raw_read,
|
||||||
uart_puts_p(PSTR("MMC/SD initialization failed\n"));
|
sd_raw_read_interval,
|
||||||
#endif
|
0,
|
||||||
continue;
|
0,
|
||||||
|
-1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open file system */
|
||||||
|
struct fat_fs_struct* fs = fat_open(partition);
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
|
||||||
|
// Print out all files/directories in top level
|
||||||
|
while (1) {
|
||||||
|
struct fat_dir_entry_struct dir_entry;
|
||||||
|
while(fat_read_dir(dd, &dir_entry)) {
|
||||||
|
// print out directory entry name
|
||||||
|
lcd_clrscr();
|
||||||
|
lcd_gotoxy(0,0);
|
||||||
|
lcd_puts(dir_entry.long_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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
|
|
||||||
);
|
|
||||||
|
|
||||||
if(!partition)
|
|
||||||
{
|
|
||||||
/* If the partition did not open, assume the storage device
|
|
||||||
* is a "superfloppy", i.e. has no MBR.
|
|
||||||
*/
|
|
||||||
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 */
|
|
||||||
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;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||||
fat.o (__mulsi3)
|
fat.o (__mulsi3)
|
||||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||||
uart.o (__udivmodhi4)
|
fat.o (__udivmodhi4)
|
||||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
|
||||||
fat.o (__divmodhi4)
|
|
||||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
/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/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/../../../avr/lib/avr5/crtatmega168.o (exit)
|
||||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
/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)
|
fat.o (__do_copy_data)
|
||||||
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||||
partition.o (__do_clear_bss)
|
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)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||||
uart.o (__muluhisi3)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o) (__muluhisi3)
|
||||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||||
main.o (strcmp_P)
|
fat.o (__muldi3)
|
||||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||||
main.o (strncmp_P)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o) (__muldi3_6)
|
||||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||||
sd_raw.o (memcpy)
|
fat.o (__umulsidi3)
|
||||||
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
/usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||||
fat.o (memset)
|
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)
|
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||||
fat.o (strchr)
|
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)
|
/usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||||
fat.o (strncmp)
|
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
|
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 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
LOAD partition.o
|
LOAD partition.o
|
||||||
LOAD sd_raw.o
|
LOAD sd_raw.o
|
||||||
LOAD uart.o
|
|
||||||
LOAD byteordering.o
|
LOAD byteordering.o
|
||||||
|
LOAD lcd.o
|
||||||
LOAD fat.o
|
LOAD fat.o
|
||||||
LOAD main.o
|
LOAD main.o
|
||||||
START GROUP
|
START GROUP
|
||||||
@ -165,7 +169,7 @@ END GROUP
|
|||||||
.rela.plt
|
.rela.plt
|
||||||
*(.rela.plt)
|
*(.rela.plt)
|
||||||
|
|
||||||
.text 0x0000000000000000 0x3574
|
.text 0x0000000000000000 0x2502
|
||||||
*(.vectors)
|
*(.vectors)
|
||||||
.vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
.vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
0x0000000000000000 __vectors
|
0x0000000000000000 __vectors
|
||||||
@ -183,36 +187,35 @@ END GROUP
|
|||||||
*libprintf_flt.a:*(.progmem.data)
|
*libprintf_flt.a:*(.progmem.data)
|
||||||
*libc.a:*(.progmem.data)
|
*libc.a:*(.progmem.data)
|
||||||
*(.progmem*)
|
*(.progmem*)
|
||||||
.progmem.data 0x0000000000000086 0x20c main.o
|
0x0000000000000086 . = ALIGN (0x2)
|
||||||
0x0000000000000292 . = ALIGN (0x2)
|
|
||||||
*(.jumptables)
|
*(.jumptables)
|
||||||
*(.jumptables*)
|
*(.jumptables*)
|
||||||
*(.lowtext)
|
*(.lowtext)
|
||||||
*(.lowtext*)
|
*(.lowtext*)
|
||||||
0x0000000000000292 __ctors_start = .
|
0x0000000000000086 __ctors_start = .
|
||||||
*(.ctors)
|
*(.ctors)
|
||||||
0x0000000000000292 __ctors_end = .
|
0x0000000000000086 __ctors_end = .
|
||||||
0x0000000000000292 __dtors_start = .
|
0x0000000000000086 __dtors_start = .
|
||||||
*(.dtors)
|
*(.dtors)
|
||||||
0x0000000000000292 __dtors_end = .
|
0x0000000000000086 __dtors_end = .
|
||||||
SORT(*)(.ctors)
|
SORT(*)(.ctors)
|
||||||
SORT(*)(.dtors)
|
SORT(*)(.dtors)
|
||||||
*(.init0)
|
*(.init0)
|
||||||
.init0 0x0000000000000292 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
.init0 0x0000000000000086 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
0x0000000000000292 __init
|
0x0000000000000086 __init
|
||||||
*(.init0)
|
*(.init0)
|
||||||
*(.init1)
|
*(.init1)
|
||||||
*(.init1)
|
*(.init1)
|
||||||
*(.init2)
|
*(.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)
|
*(.init2)
|
||||||
*(.init3)
|
*(.init3)
|
||||||
*(.init3)
|
*(.init3)
|
||||||
*(.init4)
|
*(.init4)
|
||||||
.init4 0x000000000000029e 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
.init4 0x0000000000000092 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||||
0x000000000000029e __do_copy_data
|
0x0000000000000092 __do_copy_data
|
||||||
.init4 0x00000000000002b4 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
.init4 0x00000000000000a8 0x10 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||||
0x00000000000002b4 __do_clear_bss
|
0x00000000000000a8 __do_clear_bss
|
||||||
*(.init4)
|
*(.init4)
|
||||||
*(.init5)
|
*(.init5)
|
||||||
*(.init5)
|
*(.init5)
|
||||||
@ -223,279 +226,378 @@ END GROUP
|
|||||||
*(.init8)
|
*(.init8)
|
||||||
*(.init8)
|
*(.init8)
|
||||||
*(.init9)
|
*(.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)
|
*(.init9)
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x00000000000002cc 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
.text 0x00000000000000c0 0x4 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
0x00000000000002cc __vector_22
|
0x00000000000000c0 __vector_22
|
||||||
0x00000000000002cc __vector_1
|
0x00000000000000c0 __vector_1
|
||||||
0x00000000000002cc __vector_24
|
0x00000000000000c0 __vector_24
|
||||||
0x00000000000002cc __vector_12
|
0x00000000000000c0 __vector_12
|
||||||
0x00000000000002cc __bad_interrupt
|
0x00000000000000c0 __bad_interrupt
|
||||||
0x00000000000002cc __vector_6
|
0x00000000000000c0 __vector_6
|
||||||
0x00000000000002cc __vector_3
|
0x00000000000000c0 __vector_3
|
||||||
0x00000000000002cc __vector_23
|
0x00000000000000c0 __vector_23
|
||||||
0x00000000000002cc __vector_25
|
0x00000000000000c0 __vector_25
|
||||||
0x00000000000002cc __vector_11
|
0x00000000000000c0 __vector_11
|
||||||
0x00000000000002cc __vector_13
|
0x00000000000000c0 __vector_13
|
||||||
0x00000000000002cc __vector_17
|
0x00000000000000c0 __vector_17
|
||||||
0x00000000000002cc __vector_19
|
0x00000000000000c0 __vector_19
|
||||||
0x00000000000002cc __vector_7
|
0x00000000000000c0 __vector_7
|
||||||
0x00000000000002cc __vector_5
|
0x00000000000000c0 __vector_5
|
||||||
0x00000000000002cc __vector_4
|
0x00000000000000c0 __vector_4
|
||||||
0x00000000000002cc __vector_9
|
0x00000000000000c0 __vector_9
|
||||||
0x00000000000002cc __vector_2
|
0x00000000000000c0 __vector_2
|
||||||
0x00000000000002cc __vector_21
|
0x00000000000000c0 __vector_21
|
||||||
0x00000000000002cc __vector_15
|
0x00000000000000c0 __vector_15
|
||||||
0x00000000000002cc __vector_8
|
0x00000000000000c0 __vector_8
|
||||||
0x00000000000002cc __vector_14
|
0x00000000000000c0 __vector_14
|
||||||
0x00000000000002cc __vector_10
|
0x00000000000000c0 __vector_10
|
||||||
0x00000000000002cc __vector_16
|
0x00000000000000c0 __vector_16
|
||||||
0x00000000000002cc __vector_20
|
0x00000000000000c0 __vector_18
|
||||||
.text 0x00000000000002d0 0x126 partition.o
|
0x00000000000000c0 __vector_20
|
||||||
0x00000000000002d0 partition_open
|
.text 0x00000000000000c4 0x144 partition.o
|
||||||
0x00000000000003e6 partition_close
|
0x00000000000000c4 partition_open
|
||||||
.text 0x00000000000003f6 0x7de sd_raw.o
|
0x00000000000001f8 partition_close
|
||||||
0x0000000000000484 sd_raw_available
|
.text 0x0000000000000208 0x868 sd_raw.o
|
||||||
0x0000000000000490 sd_raw_locked
|
0x0000000000000296 sd_raw_available
|
||||||
0x000000000000049e sd_raw_sync
|
0x00000000000002a2 sd_raw_init
|
||||||
0x00000000000004d2 sd_raw_read
|
0x0000000000000420 sd_raw_locked
|
||||||
0x0000000000000602 sd_raw_init
|
0x000000000000042e sd_raw_read
|
||||||
0x0000000000000714 sd_raw_read_interval
|
0x00000000000005ae sd_raw_read_interval
|
||||||
0x00000000000007ba sd_raw_write
|
0x000000000000080c sd_raw_get_info
|
||||||
0x0000000000000930 sd_raw_write_interval
|
.text 0x0000000000000a70 0x28 byteordering.o
|
||||||
0x00000000000009d8 sd_raw_get_info
|
0x0000000000000a70 read16
|
||||||
.text 0x0000000000000bd4 0x224 uart.o
|
0x0000000000000a78 read32
|
||||||
0x0000000000000bd4 uart_init
|
0x0000000000000a84 write16
|
||||||
0x0000000000000bec uart_putc
|
0x0000000000000a8c write32
|
||||||
0x0000000000000c0a uart_putc_hex
|
.text 0x0000000000000a98 0x1f8 lcd.o
|
||||||
0x0000000000000c34 uart_putw_hex
|
0x0000000000000b6a lcd_command
|
||||||
0x0000000000000c46 uart_putdw_hex
|
0x0000000000000b7c lcd_data
|
||||||
0x0000000000000c66 uart_putw_dec
|
0x0000000000000b8e lcd_gotoxy
|
||||||
0x0000000000000cde uart_putdw_dec
|
0x0000000000000b9c lcd_getxy
|
||||||
0x0000000000000d96 uart_puts
|
0x0000000000000ba4 lcd_clrscr
|
||||||
0x0000000000000dae uart_puts_p
|
0x0000000000000baa lcd_home
|
||||||
0x0000000000000dcc uart_getc
|
0x0000000000000bb0 lcd_putc
|
||||||
0x0000000000000df6 __vector_18
|
0x0000000000000bd8 lcd_puts
|
||||||
.text 0x0000000000000df8 0x28 byteordering.o
|
0x0000000000000bf0 lcd_puts_p
|
||||||
0x0000000000000df8 read16
|
0x0000000000000c0e lcd_init
|
||||||
0x0000000000000e00 read32
|
.text 0x0000000000000c90 0x14fa fat.o
|
||||||
0x0000000000000e0c write16
|
0x000000000000115a fat_open
|
||||||
0x0000000000000e14 write32
|
0x0000000000001610 fat_close
|
||||||
.text 0x0000000000000e20 0x1dd4 fat.o
|
0x000000000000161c fat_open_file
|
||||||
0x00000000000018da fat_open
|
0x0000000000001698 fat_close_file
|
||||||
0x0000000000001bec fat_close
|
0x00000000000016a4 fat_read_file
|
||||||
0x0000000000001bf8 fat_open_file
|
0x0000000000001a76 fat_seek_file
|
||||||
0x0000000000001c58 fat_close_file
|
0x0000000000001b06 fat_open_dir
|
||||||
0x0000000000001c64 fat_read_file
|
0x0000000000001b76 fat_close_dir
|
||||||
0x0000000000001e6e fat_write_file
|
0x0000000000001b82 fat_reset_dir
|
||||||
0x00000000000020f6 fat_resize_file
|
0x0000000000001ba4 fat_read_dir
|
||||||
0x00000000000022de fat_seek_file
|
0x0000000000001e6e fat_get_dir_entry_of_path
|
||||||
0x0000000000002380 fat_open_dir
|
0x0000000000001f80 fat_get_fs_size
|
||||||
0x00000000000023e8 fat_close_dir
|
0x0000000000001fee fat_get_fs_free
|
||||||
0x00000000000023f4 fat_reset_dir
|
.text 0x000000000000218a 0x0 main.o
|
||||||
0x000000000000240e fat_read_dir
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||||
0x000000000000259c fat_get_dir_entry_of_path
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||||
0x00000000000026ae fat_create_file
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||||
0x000000000000275c fat_delete_file
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||||
0x0000000000002848 fat_move_file
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||||
0x0000000000002934 fat_create_dir
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||||
0x0000000000002aa2 fat_get_fs_size
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
||||||
0x0000000000002ad6 fat_get_fs_free
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||||
.text 0x0000000000002bf4 0x23a main.o
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||||
.text 0x0000000000002e2e 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(_muldi3_6.o)
|
||||||
.text 0x0000000000002e2e 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(_umulsidi3.o)
|
||||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||||
.text 0x0000000000002e2e 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(_ashrdi3.o)
|
||||||
.text 0x0000000000002e2e 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(_adddi3.o)
|
||||||
.text 0x0000000000002e2e 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(_adddi3_s8.o)
|
||||||
.text 0x0000000000002e2e 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(_subdi3.o)
|
||||||
.text 0x0000000000002e2e 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(_cmpdi2.o)
|
||||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
.text 0x000000000000218a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||||
.text 0x0000000000002e2e 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(_umulhisi3.o)
|
||||||
.text 0x0000000000002e2e 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
.text 0x000000000000218a 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(strncmp_P.o)
|
.text 0x000000000000218a 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(memcpy.o)
|
0x000000000000218a . = ALIGN (0x2)
|
||||||
.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.*)
|
*(.text.*)
|
||||||
.text.startup 0x0000000000002e2e 0x588 main.o
|
.text.startup 0x000000000000218a 0x9a main.o
|
||||||
0x0000000000002e2e main
|
0x000000000000218a main
|
||||||
.text.libgcc.mul
|
.text.libgcc.mul
|
||||||
0x00000000000033b6 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
0x0000000000002224 0x20 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_mulsi3.o)
|
||||||
0x00000000000033b6 __mulsi3
|
0x0000000000002224 __mulsi3
|
||||||
.text.libgcc.div
|
.text.libgcc.div
|
||||||
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 0x00000000000033d6 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
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
0x00000000000033d6 0x28 /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)
|
||||||
0x00000000000033d6 __udivmodhi4
|
0x0000000000002244 __udivmodhi4
|
||||||
.text.libgcc 0x00000000000033fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
.text.libgcc 0x000000000000226c 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodhi4.o)
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
0x00000000000033fe 0x28 /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)
|
||||||
0x00000000000033fe __divmodhi4
|
0x000000000000226c __udivmodsi4
|
||||||
0x00000000000033fe _div
|
.text.libgcc 0x00000000000022b0 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_udivmodsi4.o)
|
||||||
.text.libgcc 0x0000000000003426 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
0x0000000000003426 0x44 /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)
|
||||||
0x0000000000003426 __udivmodsi4
|
.text.libgcc 0x00000000000022b0 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(_udivmodsi4.o)
|
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
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 0x000000000000346a 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
.text.libgcc 0x00000000000022b0 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
||||||
|
0x00000000000022b0 __tablejump2__
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
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 0x000000000000346a 0xc /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_tablejump2.o)
|
.text.libgcc 0x00000000000022bc 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_copy_data.o)
|
||||||
0x000000000000346a __tablejump2__
|
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
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 0x0000000000003476 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(_clear_bss.o)
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.div
|
||||||
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 0x0000000000003476 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_clear_bss.o)
|
.text.libgcc 0x00000000000022d2 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.mul
|
||||||
0x0000000000003476 0x1e /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
0x00000000000022d2 0xa0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||||
0x0000000000003476 __umulhisi3
|
0x00000000000022d2 __muldi3
|
||||||
.text.libgcc.div
|
.text.libgcc.div
|
||||||
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 0x0000000000003494 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
.text.libgcc 0x0000000000002372 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.text.libgcc.mul
|
||||||
0x0000000000003494 0x16 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
0x0000000000002372 0x12 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||||
0x0000000000003494 __muluhisi3
|
0x0000000000002372 __muldi3_6
|
||||||
.text.libgcc.div
|
.text.libgcc.div
|
||||||
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 0x00000000000034aa 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
.text.libgcc 0x0000000000002384 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3_6.o)
|
||||||
.text.libgcc.prologue
|
.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
|
.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
|
.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
|
.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
|
.text.avr-libc
|
||||||
0x00000000000034aa 0x12 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
0x00000000000024cc 0x16 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strchr.o)
|
||||||
0x00000000000034aa strcmp_P
|
0x00000000000024cc strchr
|
||||||
.text.avr-libc
|
.text.avr-libc
|
||||||
0x00000000000034bc 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
0x00000000000024e2 0x1c /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
||||||
0x00000000000034bc strncmp_P
|
0x00000000000024e2 strncmp
|
||||||
.text.avr-libc
|
0x00000000000024fe . = ALIGN (0x2)
|
||||||
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)
|
|
||||||
*(.fini9)
|
*(.fini9)
|
||||||
.fini9 0x0000000000003570 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
.fini9 0x00000000000024fe 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_exit.o)
|
||||||
0x0000000000003570 exit
|
0x00000000000024fe exit
|
||||||
0x0000000000003570 _exit
|
0x00000000000024fe _exit
|
||||||
*(.fini9)
|
*(.fini9)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
*(.fini8)
|
*(.fini8)
|
||||||
@ -514,39 +616,41 @@ END GROUP
|
|||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini1)
|
*(.fini1)
|
||||||
*(.fini0)
|
*(.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)
|
*(.fini0)
|
||||||
0x0000000000003574 _etext = .
|
0x0000000000002502 _etext = .
|
||||||
|
|
||||||
.data 0x0000000000800100 0x10 load address 0x0000000000003574
|
.data 0x0000000000800100 0x10 load address 0x0000000000002502
|
||||||
0x0000000000800100 PROVIDE (__data_start, .)
|
0x0000000000800100 PROVIDE (__data_start, .)
|
||||||
*(.data)
|
*(.data)
|
||||||
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
.data 0x0000000000800100 0x0 partition.o
|
.data 0x0000000000800100 0x0 partition.o
|
||||||
.data 0x0000000000800100 0x0 sd_raw.o
|
.data 0x0000000000800100 0x0 sd_raw.o
|
||||||
.data 0x0000000000800100 0x0 uart.o
|
|
||||||
.data 0x0000000000800100 0x0 byteordering.o
|
.data 0x0000000000800100 0x0 byteordering.o
|
||||||
|
.data 0x0000000000800100 0x0 lcd.o
|
||||||
.data 0x0000000000800100 0x0 fat.o
|
.data 0x0000000000800100 0x0 fat.o
|
||||||
.data 0x0000000000800100 0x0 main.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(_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(_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(_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(_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(_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(_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(_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/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/avr5/libgcc.a(_muldi3.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/avr5/libgcc.a(_muldi3_6.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/avr5/libgcc.a(_umulsidi3.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(_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(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(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*)
|
*(.data*)
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
.rodata 0x0000000000800100 0xd fat.o
|
.rodata 0x0000000000800100 0xd fat.o
|
||||||
@ -559,46 +663,48 @@ END GROUP
|
|||||||
0x0000000000800110 _edata = .
|
0x0000000000800110 _edata = .
|
||||||
0x0000000000800110 PROVIDE (__data_end, .)
|
0x0000000000800110 PROVIDE (__data_end, .)
|
||||||
|
|
||||||
.bss 0x0000000000800110 0x2c8
|
.bss 0x0000000000800110 0xf5
|
||||||
0x0000000000800110 PROVIDE (__bss_start, .)
|
0x0000000000800110 PROVIDE (__bss_start, .)
|
||||||
*(.bss)
|
*(.bss)
|
||||||
.bss 0x0000000000800110 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
.bss 0x0000000000800110 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/crtatmega168.o
|
||||||
.bss 0x0000000000800110 0x11 partition.o
|
.bss 0x0000000000800110 0x11 partition.o
|
||||||
.bss 0x0000000000800121 0x206 sd_raw.o
|
.bss 0x0000000000800121 0x1 sd_raw.o
|
||||||
.bss 0x0000000000800327 0x0 uart.o
|
.bss 0x0000000000800122 0x0 byteordering.o
|
||||||
.bss 0x0000000000800327 0x0 byteordering.o
|
.bss 0x0000000000800122 0x0 lcd.o
|
||||||
.bss 0x0000000000800327 0xb1 fat.o
|
.bss 0x0000000000800122 0xe3 fat.o
|
||||||
.bss 0x00000000008003d8 0x0 main.o
|
.bss 0x0000000000800205 0x0 main.o
|
||||||
.bss 0x00000000008003d8 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(_mulsi3.o)
|
||||||
.bss 0x00000000008003d8 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(_udivmodhi4.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_divmodhi4.o)
|
.bss 0x0000000000800205 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(_udivmodsi4.o)
|
.bss 0x0000000000800205 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(_exit.o)
|
.bss 0x0000000000800205 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(_tablejump2.o)
|
.bss 0x0000000000800205 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(_copy_data.o)
|
.bss 0x0000000000800205 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(_clear_bss.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muluhisi3.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulhisi3.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_muldi3.o)
|
||||||
.bss 0x00000000008003d8 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_6.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp_P.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_umulsidi3.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp_P.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashldi3.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memcpy.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_ashrdi3.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(memset.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_adddi3.o)
|
||||||
.bss 0x00000000008003d8 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/avr5/libgcc.a(_adddi3_s8.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strcmp.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_subdi3.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncmp.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strncpy.o)
|
.bss 0x0000000000800205 0x0 /usr/lib/gcc/avr/5.4.0/avr5/libgcc.a(_cmpdi2_s8.o)
|
||||||
.bss 0x00000000008003d8 0x0 /usr/lib/gcc/avr/5.4.0/../../../avr/lib/avr5/libc.a(strrchr.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*)
|
*(.bss*)
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
0x00000000008003d8 PROVIDE (__bss_end, .)
|
0x0000000000800205 PROVIDE (__bss_end, .)
|
||||||
0x0000000000003574 __data_load_start = LOADADDR (.data)
|
0x0000000000002502 __data_load_start = LOADADDR (.data)
|
||||||
0x0000000000003584 __data_load_end = (__data_load_start + SIZEOF (.data))
|
0x0000000000002512 __data_load_end = (__data_load_start + SIZEOF (.data))
|
||||||
|
|
||||||
.noinit 0x00000000008003d8 0x0
|
.noinit 0x0000000000800205 0x0
|
||||||
[!provide] PROVIDE (__noinit_start, .)
|
[!provide] PROVIDE (__noinit_start, .)
|
||||||
*(.noinit*)
|
*(.noinit*)
|
||||||
[!provide] PROVIDE (__noinit_end, .)
|
[!provide] PROVIDE (__noinit_end, .)
|
||||||
0x00000000008003d8 _end = .
|
0x0000000000800205 _end = .
|
||||||
[!provide] PROVIDE (__heap_start, .)
|
[!provide] PROVIDE (__heap_start, .)
|
||||||
|
|
||||||
.eeprom 0x0000000000810000 0x0
|
.eeprom 0x0000000000810000 0x0
|
||||||
@ -620,23 +726,23 @@ END GROUP
|
|||||||
.user_signatures
|
.user_signatures
|
||||||
*(.user_signatures*)
|
*(.user_signatures*)
|
||||||
|
|
||||||
.stab 0x0000000000000000 0x67bc
|
.stab 0x0000000000000000 0x4b3c
|
||||||
*(.stab)
|
*(.stab)
|
||||||
.stab 0x0000000000000000 0x6e4 partition.o
|
.stab 0x0000000000000000 0x6e4 partition.o
|
||||||
.stab 0x00000000000006e4 0x1350 sd_raw.o
|
.stab 0x00000000000006e4 0x129c sd_raw.o
|
||||||
0x1500 (size before relaxing)
|
0x144c (size before relaxing)
|
||||||
.stab 0x0000000000001a34 0xa20 uart.o
|
.stab 0x0000000000001980 0x414 byteordering.o
|
||||||
0xbf4 (size before relaxing)
|
|
||||||
.stab 0x0000000000002454 0x414 byteordering.o
|
|
||||||
0x594 (size before relaxing)
|
0x594 (size before relaxing)
|
||||||
.stab 0x0000000000002868 0x2fdc fat.o
|
.stab 0x0000000000001d94 0xe34 lcd.o
|
||||||
0x31f8 (size before relaxing)
|
0x1008 (size before relaxing)
|
||||||
.stab 0x0000000000005844 0xf78 main.o
|
.stab 0x0000000000002bc8 0x1b0c fat.o
|
||||||
0x1200 (size before relaxing)
|
0x1d28 (size before relaxing)
|
||||||
|
.stab 0x00000000000046d4 0x468 main.o
|
||||||
|
0x6fc (size before relaxing)
|
||||||
|
|
||||||
.stabstr 0x0000000000000000 0x2a7b
|
.stabstr 0x0000000000000000 0x2390
|
||||||
*(.stabstr)
|
*(.stabstr)
|
||||||
.stabstr 0x0000000000000000 0x2a7b partition.o
|
.stabstr 0x0000000000000000 0x2390 partition.o
|
||||||
|
|
||||||
.stab.excl
|
.stab.excl
|
||||||
*(.stab.excl)
|
*(.stab.excl)
|
||||||
@ -655,8 +761,8 @@ END GROUP
|
|||||||
.comment 0x0000000000000000 0x11 partition.o
|
.comment 0x0000000000000000 0x11 partition.o
|
||||||
0x12 (size before relaxing)
|
0x12 (size before relaxing)
|
||||||
.comment 0x0000000000000011 0x12 sd_raw.o
|
.comment 0x0000000000000011 0x12 sd_raw.o
|
||||||
.comment 0x0000000000000011 0x12 uart.o
|
|
||||||
.comment 0x0000000000000011 0x12 byteordering.o
|
.comment 0x0000000000000011 0x12 byteordering.o
|
||||||
|
.comment 0x0000000000000011 0x12 lcd.o
|
||||||
.comment 0x0000000000000011 0x12 fat.o
|
.comment 0x0000000000000011 0x12 fat.o
|
||||||
.comment 0x0000000000000011 0x12 main.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.
|
* 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
|
* \ingroup sd_raw_config
|
||||||
@ -65,7 +65,7 @@ extern "C"
|
|||||||
* Set to 1 to support so-called SDHC memory cards, i.e. SD
|
* Set to 1 to support so-called SDHC memory cards, i.e. SD
|
||||||
* cards with more than 2 gigabytes of memory.
|
* 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