Added screen timeout and more warnings, increased timescale
This commit is contained in:
parent
4bbe531d08
commit
27c866f26b
Binary file not shown.
26
sprites.h
26
sprites.h
|
|
@ -432,12 +432,32 @@ static const unsigned char icon_stats[] = {
|
||||||
0x00, 0x00,
|
0x00, 0x00,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ICON_COUNT 6
|
// icon_settings: 16x16
|
||||||
|
static const unsigned char icon_settings[] = {
|
||||||
|
0x03, 0xc0,
|
||||||
|
0x03, 0xc0,
|
||||||
|
0x03, 0xc0,
|
||||||
|
0x07, 0xf0,
|
||||||
|
0x0f, 0xf8,
|
||||||
|
0x1f, 0xfc,
|
||||||
|
0xff, 0x7f,
|
||||||
|
0xfe, 0x3f,
|
||||||
|
0xfc, 0x1f,
|
||||||
|
0xfe, 0x3f,
|
||||||
|
0x1f, 0x7c,
|
||||||
|
0x1f, 0xfc,
|
||||||
|
0x0f, 0xf8,
|
||||||
|
0x07, 0xf0,
|
||||||
|
0x03, 0xc0,
|
||||||
|
0x03, 0xc0,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ICON_COUNT 7
|
||||||
static const unsigned char *const menu_icons[ICON_COUNT] = {
|
static const unsigned char *const menu_icons[ICON_COUNT] = {
|
||||||
icon_feed, icon_play, icon_sleep, icon_clean, icon_heal, icon_stats,
|
icon_feed, icon_play, icon_sleep, icon_clean, icon_heal, icon_stats, icon_settings,
|
||||||
};
|
};
|
||||||
static const char *const menu_labels[ICON_COUNT] = {
|
static const char *const menu_labels[ICON_COUNT] = {
|
||||||
"FEED", "PLAY", "SLEEP", "CLEAN", "HEAL", "STATS",
|
"FEED", "PLAY", "SLEEP", "CLEAN", "HEAL", "STATS", "SETTINGS",
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _SPRITES_H
|
#endif // _SPRITES_H
|
||||||
|
|
|
||||||
|
|
@ -253,6 +253,17 @@ def icon_stats(): # bar chart
|
||||||
hline(g, x, x + 1, yy)
|
hline(g, x, x + 1, yy)
|
||||||
return g
|
return g
|
||||||
|
|
||||||
|
def icon_settings(): # gear
|
||||||
|
g = grid(16, 16)
|
||||||
|
fill_ellipse(g, 8, 8, 6, 6)
|
||||||
|
# four teeth
|
||||||
|
for x in range(6, 10):
|
||||||
|
vline(g, x, 0, 2); vline(g, x, 13, 15)
|
||||||
|
for y in range(6, 10):
|
||||||
|
hline(g, 0, 2, y); hline(g, 13, 15, y)
|
||||||
|
fill_ellipse(g, 8, 8, 2, 2, 0) # hub hole
|
||||||
|
return g
|
||||||
|
|
||||||
# ---------------------------------------------------------------- main
|
# ---------------------------------------------------------------- main
|
||||||
def main():
|
def main():
|
||||||
print("// Auto-generated by sprites_gen.py -- do not edit by hand.")
|
print("// Auto-generated by sprites_gen.py -- do not edit by hand.")
|
||||||
|
|
@ -294,16 +305,17 @@ def main():
|
||||||
("icon_clean", icon_clean()),
|
("icon_clean", icon_clean()),
|
||||||
("icon_heal", icon_heal()),
|
("icon_heal", icon_heal()),
|
||||||
("icon_stats", icon_stats()),
|
("icon_stats", icon_stats()),
|
||||||
|
("icon_settings", icon_settings()),
|
||||||
]
|
]
|
||||||
for n, g in icons:
|
for n, g in icons:
|
||||||
emit(n, g)
|
emit(n, g)
|
||||||
|
|
||||||
print("#define ICON_COUNT 6")
|
print("#define ICON_COUNT 7")
|
||||||
print("static const unsigned char *const menu_icons[ICON_COUNT] = {")
|
print("static const unsigned char *const menu_icons[ICON_COUNT] = {")
|
||||||
print(" icon_feed, icon_play, icon_sleep, icon_clean, icon_heal, icon_stats,")
|
print(" icon_feed, icon_play, icon_sleep, icon_clean, icon_heal, icon_stats, icon_settings,")
|
||||||
print("};")
|
print("};")
|
||||||
print('static const char *const menu_labels[ICON_COUNT] = {')
|
print('static const char *const menu_labels[ICON_COUNT] = {')
|
||||||
print(' "FEED", "PLAY", "SLEEP", "CLEAN", "HEAL", "STATS",')
|
print(' "FEED", "PLAY", "SLEEP", "CLEAN", "HEAL", "STATS", "SETTINGS",')
|
||||||
print("};")
|
print("};")
|
||||||
print()
|
print()
|
||||||
print("#endif // _SPRITES_H")
|
print("#endif // _SPRITES_H")
|
||||||
|
|
|
||||||
213
tama.c
213
tama.c
|
|
@ -30,11 +30,17 @@
|
||||||
|
|
||||||
// ----------------------------------------------------------------- tuning
|
// ----------------------------------------------------------------- tuning
|
||||||
#define FRAME_MS 60 // main loop period
|
#define FRAME_MS 60 // main loop period
|
||||||
#define TICK_FRAMES 50 // stat update every ~3 s (50 * 60 ms)
|
#define TICK_FRAMES 250 // stat update every ~15 s (250 * 60 ms)
|
||||||
#define ANIM_FRAMES 12 // how long an action reaction is shown
|
#define ANIM_FRAMES 12 // how long an action reaction is shown
|
||||||
|
|
||||||
|
// With the values below an untended pet survives roughly half an hour:
|
||||||
|
// a need empties in ~20 min, after which health bleeds down over ~10 more.
|
||||||
|
|
||||||
// ----------------------------------------------------------------- state
|
// ----------------------------------------------------------------- state
|
||||||
enum { SCR_MAIN, SCR_STATS, SCR_DEAD };
|
enum { SCR_MAIN, SCR_STATS, SCR_DEAD, SCR_SETTINGS };
|
||||||
|
|
||||||
|
// notification thresholds: gentle chirp at <50%, urgent at <20%
|
||||||
|
enum { N_FOOD, N_FUN, N_ENGY, N_WASH, N_COUNT };
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int8_t satiety; // 0..100 (fullness)
|
int8_t satiety; // 0..100 (fullness)
|
||||||
|
|
@ -55,9 +61,26 @@ static uint8_t anim_exp; // expression forced during a reaction
|
||||||
static uint8_t anim_timer; // frames remaining for the reaction
|
static uint8_t anim_timer; // frames remaining for the reaction
|
||||||
static uint32_t frame; // free-running frame counter
|
static uint32_t frame; // free-running frame counter
|
||||||
static uint16_t tick_acc; // frames since last stat tick
|
static uint16_t tick_acc; // frames since last stat tick
|
||||||
|
static uint8_t warn_flag[N_COUNT]; // already chirped a <50% warning
|
||||||
|
static uint8_t crit_flag[N_COUNT]; // already chirped a <20% warning
|
||||||
|
|
||||||
|
// settings
|
||||||
|
static uint8_t sound_on = 1;
|
||||||
|
static uint8_t timeout_idx = 1; // index into screen_timeout_opts (default 30 s)
|
||||||
|
static uint8_t set_sel = 0; // highlighted row on the settings screen
|
||||||
|
|
||||||
|
// screen-off-on-inactivity options, in frames (0 = never sleep the display)
|
||||||
|
static const uint16_t screen_timeout_opts[] = { 250, 500, 1000, 0 };
|
||||||
|
static const char *const screen_timeout_names[] = { "15s", "30s", "60s", "Off" };
|
||||||
|
#define TIMEOUT_OPT_COUNT 4
|
||||||
|
#define SETTINGS_ROWS 3 // screen-off, sound, back
|
||||||
|
|
||||||
|
// display power state
|
||||||
|
static uint8_t disp_on = 1;
|
||||||
|
static uint32_t idle_frames = 0; // frames since the last button activity
|
||||||
|
|
||||||
// menu icon order must match sprites.h menu_icons[] / menu_labels[]
|
// menu icon order must match sprites.h menu_icons[] / menu_labels[]
|
||||||
enum { ACT_FEED, ACT_PLAY, ACT_SLEEP, ACT_CLEAN, ACT_HEAL, ACT_STATS };
|
enum { ACT_FEED, ACT_PLAY, ACT_SLEEP, ACT_CLEAN, ACT_HEAL, ACT_STATS, ACT_SETTINGS };
|
||||||
|
|
||||||
// ----------------------------------------------------------------- helpers
|
// ----------------------------------------------------------------- helpers
|
||||||
static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); }
|
static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); }
|
||||||
|
|
@ -65,6 +88,7 @@ static int8_t clamp100(int v) { return v < 0 ? 0 : (v > 100 ? 100 : v); }
|
||||||
// short square-wave beep on the passive piezo (blocking, ms-scale only)
|
// short square-wave beep on the passive piezo (blocking, ms-scale only)
|
||||||
static void beep(uint16_t freq, uint16_t ms)
|
static void beep(uint16_t freq, uint16_t ms)
|
||||||
{
|
{
|
||||||
|
if (!sound_on) return;
|
||||||
if (freq == 0) { Delay_Ms(ms); return; }
|
if (freq == 0) { Delay_Ms(ms); return; }
|
||||||
uint32_t half = 500000u / freq; // half-period in us
|
uint32_t half = 500000u / freq; // half-period in us
|
||||||
uint32_t cycles = ((uint32_t)ms * 1000u) / (half * 2u);
|
uint32_t cycles = ((uint32_t)ms * 1000u) / (half * 2u);
|
||||||
|
|
@ -96,6 +120,36 @@ static void pet_reset(void)
|
||||||
pet.alive = 1;
|
pet.alive = 1;
|
||||||
screen = SCR_MAIN;
|
screen = SCR_MAIN;
|
||||||
cursor = 0;
|
cursor = 0;
|
||||||
|
for (int i = 0; i < N_COUNT; i++) { warn_flag[i] = 0; crit_flag[i] = 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chirp once when a need first drops below 50% (gentle) or 20% (urgent),
|
||||||
|
// re-arming only after it recovers. Audible even while the screen is off,
|
||||||
|
// so it works as a "tend to me" reminder.
|
||||||
|
static void notify(uint8_t idx, int8_t val)
|
||||||
|
{
|
||||||
|
if (val < 20) {
|
||||||
|
if (!crit_flag[idx]) { // urgent: descending triple
|
||||||
|
beep(1568, 60); beep(1175, 60); beep(880, 90);
|
||||||
|
crit_flag[idx] = 1; warn_flag[idx] = 1;
|
||||||
|
}
|
||||||
|
} else if (val < 50) {
|
||||||
|
if (!warn_flag[idx]) { // gentle: single chirp
|
||||||
|
beep(1568, 50);
|
||||||
|
warn_flag[idx] = 1;
|
||||||
|
}
|
||||||
|
crit_flag[idx] = 0;
|
||||||
|
} else {
|
||||||
|
warn_flag[idx] = 0; crit_flag[idx] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void check_notifications(void)
|
||||||
|
{
|
||||||
|
notify(N_FOOD, pet.satiety);
|
||||||
|
notify(N_FUN, pet.happy);
|
||||||
|
notify(N_ENGY, pet.energy);
|
||||||
|
notify(N_WASH, pet.hygiene);
|
||||||
}
|
}
|
||||||
|
|
||||||
// pick the expression frame to draw this instant
|
// pick the expression frame to draw this instant
|
||||||
|
|
@ -156,6 +210,12 @@ static void do_action(uint8_t act)
|
||||||
screen = SCR_STATS;
|
screen = SCR_STATS;
|
||||||
beep(659, 40);
|
beep(659, 40);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ACT_SETTINGS:
|
||||||
|
screen = SCR_SETTINGS;
|
||||||
|
set_sel = 0;
|
||||||
|
beep(659, 40);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -165,35 +225,38 @@ static void game_tick(void)
|
||||||
pet.age_min++;
|
pet.age_min++;
|
||||||
|
|
||||||
if (pet.sleeping) {
|
if (pet.sleeping) {
|
||||||
pet.energy = clamp100(pet.energy + 10);
|
pet.energy = clamp100(pet.energy + 6);
|
||||||
// drift down slowly even while asleep
|
// needs still drift down slowly even while asleep
|
||||||
pet.satiety = clamp100(pet.satiety - 1);
|
pet.satiety = clamp100(pet.satiety - 1);
|
||||||
if (pet.energy >= 100) pet.sleeping = 0; // wakes when rested
|
if (pet.energy >= 100) pet.sleeping = 0; // wakes when rested
|
||||||
} else {
|
} else {
|
||||||
pet.satiety = clamp100(pet.satiety - 3);
|
pet.satiety = clamp100(pet.satiety - 1);
|
||||||
pet.energy = clamp100(pet.energy - 2);
|
pet.energy = clamp100(pet.energy - 1);
|
||||||
pet.happy = clamp100(pet.happy - 2);
|
pet.happy = clamp100(pet.happy - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
pet.hygiene = clamp100(pet.hygiene - 1);
|
// hygiene drifts every other tick
|
||||||
|
if (pet.age_min & 1) pet.hygiene = clamp100(pet.hygiene - 1);
|
||||||
|
|
||||||
// random-ish bowel movements (LFSR-free: derive from counters)
|
// occasional bowel movements (derived from counters, no RNG needed)
|
||||||
if (!pet.sleeping && pet.poop < 3 &&
|
if (!pet.sleeping && pet.poop < 3 &&
|
||||||
((pet.age_min * 7u + frame) & 0x0F) == 0)
|
((pet.age_min * 7u + frame) & 0x1F) == 0)
|
||||||
pet.poop++;
|
pet.poop++;
|
||||||
|
|
||||||
// being dirty / full of poop saps happiness
|
// being dirty / full of poop slowly saps happiness
|
||||||
if (pet.poop) pet.happy = clamp100(pet.happy - pet.poop);
|
if (pet.poop && (pet.age_min & 1)) pet.happy = clamp100(pet.happy - 1);
|
||||||
if (pet.hygiene < 20) pet.happy = clamp100(pet.happy - 1);
|
if (pet.hygiene < 20 && (pet.age_min & 1)) pet.happy = clamp100(pet.happy - 1);
|
||||||
|
|
||||||
// health responds to overall wellbeing
|
// health responds to overall wellbeing
|
||||||
int8_t lo = pet.satiety;
|
int8_t lo = pet.satiety;
|
||||||
if (pet.happy < lo) lo = pet.happy;
|
if (pet.happy < lo) lo = pet.happy;
|
||||||
if (pet.energy < lo) lo = pet.energy;
|
if (pet.energy < lo) lo = pet.energy;
|
||||||
if (pet.hygiene < lo) lo = pet.hygiene;
|
if (pet.hygiene < lo) lo = pet.hygiene;
|
||||||
if (lo < 15) pet.health = clamp100(pet.health - 5);
|
if (lo < 15) pet.health = clamp100(pet.health - 3);
|
||||||
else if (lo > 50) pet.health = clamp100(pet.health + 2);
|
else if (lo > 50) pet.health = clamp100(pet.health + 2);
|
||||||
|
|
||||||
|
check_notifications();
|
||||||
|
|
||||||
if (pet.health <= 0) {
|
if (pet.health <= 0) {
|
||||||
pet.alive = 0;
|
pet.alive = 0;
|
||||||
screen = SCR_DEAD;
|
screen = SCR_DEAD;
|
||||||
|
|
@ -213,12 +276,12 @@ static void draw_center_str(int y, const char *s)
|
||||||
|
|
||||||
static void draw_menu_bar(void)
|
static void draw_menu_bar(void)
|
||||||
{
|
{
|
||||||
// 6 icons across the bottom, selected one boxed
|
// 7 icons across the bottom (18 px slots), selected one boxed
|
||||||
for (uint8_t i = 0; i < ICON_COUNT; i++) {
|
for (uint8_t i = 0; i < ICON_COUNT; i++) {
|
||||||
int x = i * 21 + 3;
|
int x = i * 18 + 1;
|
||||||
ssd1306_drawImage(x, 48, menu_icons[i], ICON_W, ICON_H, 0);
|
ssd1306_drawImage(x, 48, menu_icons[i], ICON_W, ICON_H, 0);
|
||||||
if (i == cursor)
|
if (i == cursor)
|
||||||
ssd1306_drawRect(x - 2, 46, ICON_W + 3, ICON_H + 2, 1);
|
ssd1306_drawRect(x - 1, 47, ICON_W + 1, ICON_H + 1, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -292,6 +355,28 @@ static void draw_dead(void)
|
||||||
ssd1306_refresh();
|
ssd1306_refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void draw_settings(void)
|
||||||
|
{
|
||||||
|
ssd1306_setbuf(0);
|
||||||
|
draw_center_str(0, "- SETTINGS -");
|
||||||
|
ssd1306_drawFastHLine(0, 10, SSD1306_W, 1);
|
||||||
|
|
||||||
|
char rows[SETTINGS_ROWS][17];
|
||||||
|
snprintf(rows[0], 17, "Screen off:%s", screen_timeout_names[timeout_idx]);
|
||||||
|
snprintf(rows[1], 17, "Sound: %s", sound_on ? "On" : "Off");
|
||||||
|
snprintf(rows[2], 17, "Back");
|
||||||
|
|
||||||
|
for (uint8_t r = 0; r < SETTINGS_ROWS; r++) {
|
||||||
|
int y = 18 + r * 12;
|
||||||
|
if (r == set_sel) ssd1306_fillRect(0, y - 1, SSD1306_W, 10, 1);
|
||||||
|
// selected row drawn inverted (color 0 on the lit bar)
|
||||||
|
ssd1306_drawstr(4, y, rows[r], r == set_sel ? 0 : 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_center_str(56, "L/R move OK use");
|
||||||
|
ssd1306_refresh();
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------- input
|
// ----------------------------------------------------------------- input
|
||||||
typedef struct { uint8_t ok, left, right; } Buttons;
|
typedef struct { uint8_t ok, left, right; } Buttons;
|
||||||
|
|
||||||
|
|
@ -366,48 +451,88 @@ int main(void)
|
||||||
uint8_t ok_edge = b.ok && !prev.ok;
|
uint8_t ok_edge = b.ok && !prev.ok;
|
||||||
uint8_t left_edge = b.left && !prev.left;
|
uint8_t left_edge = b.left && !prev.left;
|
||||||
uint8_t right_edge = b.right && !prev.right;
|
uint8_t right_edge = b.right && !prev.right;
|
||||||
|
uint8_t any_edge = ok_edge | left_edge | right_edge;
|
||||||
prev = b;
|
prev = b;
|
||||||
|
|
||||||
switch (screen) {
|
if (any_edge) idle_frames = 0;
|
||||||
case SCR_MAIN:
|
|
||||||
if (left_edge) {
|
|
||||||
cursor = (cursor + ICON_COUNT - 1) % ICON_COUNT;
|
|
||||||
beep(1047, 25);
|
|
||||||
}
|
|
||||||
if (right_edge) {
|
|
||||||
cursor = (cursor + 1) % ICON_COUNT;
|
|
||||||
beep(1047, 25);
|
|
||||||
}
|
|
||||||
if (ok_edge) do_action(cursor);
|
|
||||||
draw_main();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SCR_STATS:
|
if (!disp_on) {
|
||||||
if (ok_edge || left_edge || right_edge) {
|
// screen is asleep: the first press only wakes it (not an action)
|
||||||
screen = SCR_MAIN;
|
if (any_edge) {
|
||||||
beep(880, 30);
|
ssd1306_cmd(SSD1306_DISPLAYON);
|
||||||
|
disp_on = 1;
|
||||||
}
|
}
|
||||||
draw_stats();
|
} else {
|
||||||
break;
|
switch (screen) {
|
||||||
|
case SCR_MAIN:
|
||||||
|
if (left_edge) {
|
||||||
|
cursor = (cursor + ICON_COUNT - 1) % ICON_COUNT;
|
||||||
|
beep(1047, 25);
|
||||||
|
}
|
||||||
|
if (right_edge) {
|
||||||
|
cursor = (cursor + 1) % ICON_COUNT;
|
||||||
|
beep(1047, 25);
|
||||||
|
}
|
||||||
|
if (ok_edge) do_action(cursor);
|
||||||
|
draw_main();
|
||||||
|
break;
|
||||||
|
|
||||||
case SCR_DEAD:
|
case SCR_STATS:
|
||||||
if (ok_edge) { // start a new pet
|
if (any_edge) { screen = SCR_MAIN; beep(880, 30); }
|
||||||
pet_reset();
|
draw_stats();
|
||||||
beep(659, 80); beep(988, 120);
|
break;
|
||||||
|
|
||||||
|
case SCR_SETTINGS:
|
||||||
|
if (left_edge) {
|
||||||
|
set_sel = (set_sel + SETTINGS_ROWS - 1) % SETTINGS_ROWS;
|
||||||
|
beep(1047, 25);
|
||||||
|
}
|
||||||
|
if (right_edge) {
|
||||||
|
set_sel = (set_sel + 1) % SETTINGS_ROWS;
|
||||||
|
beep(1047, 25);
|
||||||
|
}
|
||||||
|
if (ok_edge) {
|
||||||
|
if (set_sel == 0) { // cycle screen-off timeout
|
||||||
|
timeout_idx = (timeout_idx + 1) % TIMEOUT_OPT_COUNT;
|
||||||
|
beep(880, 40);
|
||||||
|
} else if (set_sel == 1) { // toggle sound
|
||||||
|
sound_on = !sound_on;
|
||||||
|
beep(988, 60); // only audible if just enabled
|
||||||
|
} else { // Back
|
||||||
|
screen = SCR_MAIN;
|
||||||
|
beep(880, 30);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
draw_settings();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SCR_DEAD:
|
||||||
|
if (ok_edge) { // start a new pet
|
||||||
|
pet_reset();
|
||||||
|
beep(659, 80); beep(988, 120);
|
||||||
|
}
|
||||||
|
draw_dead();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sleep the display after the configured idle period
|
||||||
|
uint16_t timeout = screen_timeout_opts[timeout_idx];
|
||||||
|
if (timeout && idle_frames >= timeout) {
|
||||||
|
ssd1306_cmd(SSD1306_DISPLAYOFF);
|
||||||
|
disp_on = 0;
|
||||||
}
|
}
|
||||||
draw_dead();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (anim_timer) anim_timer--;
|
if (anim_timer) anim_timer--;
|
||||||
|
|
||||||
// advance game time independent of which screen is showing
|
// advance game time independent of screen / display state
|
||||||
if (pet.alive && ++tick_acc >= TICK_FRAMES) {
|
if (pet.alive && ++tick_acc >= TICK_FRAMES) {
|
||||||
tick_acc = 0;
|
tick_acc = 0;
|
||||||
game_tick();
|
game_tick();
|
||||||
}
|
}
|
||||||
|
|
||||||
frame++;
|
frame++;
|
||||||
|
idle_frames++;
|
||||||
Delay_Ms(FRAME_MS);
|
Delay_Ms(FRAME_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
791
tama.map
791
tama.map
|
|
@ -1,51 +1,50 @@
|
||||||
Archive member included to satisfy reference by file (symbol)
|
Archive member included to satisfy reference by file (symbol)
|
||||||
|
|
||||||
../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
/tmp/ccuFqAhq.ltrans0.ltrans.o (__divsi3)
|
/tmp/cczcSDec.ltrans0.ltrans.o (__divsi3)
|
||||||
|
|
||||||
Discarded input sections
|
Discarded input sections
|
||||||
|
|
||||||
.text 0x00000000 0x0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text 0x00000000 0x0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.data 0x00000000 0x0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.data 0x00000000 0x0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.bss 0x00000000 0x0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.bss 0x00000000 0x0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.vprintf 0x00000000 0x16 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.vprintf 0x00000000 0x16 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.sprintf 0x00000000 0x26 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.sprintf 0x00000000 0x26 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strcpy 0x00000000 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strncpy 0x00000000 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strncpy 0x00000000 0x1c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strcmp 0x00000000 0x1a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strcmp 0x00000000 0x1a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strncmp 0x00000000 0x2e /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strncmp 0x00000000 0x2e /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strchr 0x00000000 0x16 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strchr 0x00000000 0x16 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strrchr 0x00000000 0x3c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strrchr 0x00000000 0x3c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.memcmp 0x00000000 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.memcmp 0x00000000 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.memmove 0x00000000 0x5e /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.memmove 0x00000000 0x5e /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.memchr 0x00000000 0x1a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.memchr 0x00000000 0x1a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strnlen 0x00000000 0x2a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strnlen 0x00000000 0x2a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.text.twoway_strstr
|
.text.twoway_strstr
|
||||||
0x00000000 0x232 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x232 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.strstr 0x00000000 0x11c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strstr 0x00000000 0x11c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.puts.str1.4
|
.rodata.puts.str1.4
|
||||||
0x00000000 0x2 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x2 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.puts 0x00000000 0x40 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.puts 0x00000000 0x40 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.setjmp 0x00000000 0x10 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.setjmp 0x00000000 0x10 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.longjmp 0x00000000 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.longjmp 0x00000000 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.putchar 0x00000000 0x68 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.putchar 0x00000000 0x68 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.APBAHBPrescTable.lto_priv.0
|
.rodata.APBAHBPrescTable.lto_priv.0
|
||||||
0x00000000 0x10 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x10 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.ADCPrescTable.lto_priv.0
|
.rodata.ADCPrescTable.lto_priv.0
|
||||||
0x00000000 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.APBAHBPrescTable.lto_priv.1
|
.rodata.APBAHBPrescTable.lto_priv.1
|
||||||
0x00000000 0x10 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x10 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.ADCPrescTable.lto_priv.1
|
.rodata.ADCPrescTable.lto_priv.1
|
||||||
0x00000000 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.comment 0x00000000 0x35 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.comment 0x00000000 0x35 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.note.GNU-stack
|
.note.GNU-stack
|
||||||
0x00000000 0x0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.comment 0x00000000 0x35 /tmp/cc6O5Yfp.debug.temp.o
|
.comment 0x00000000 0x35 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.note.GNU-stack
|
.note.GNU-stack
|
||||||
0x00000000 0x0 /tmp/cc6O5Yfp.debug.temp.o
|
0x00000000 0x0 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.comment 0x00000000 0x35 /tmp/ccQWTvKu.debug.temp.o
|
.comment 0x00000000 0x35 /tmp/ccR20L1X.debug.temp.o
|
||||||
.note.GNU-stack
|
.note.GNU-stack
|
||||||
0x00000000 0x0 /tmp/ccQWTvKu.debug.temp.o
|
0x00000000 0x0 /tmp/ccR20L1X.debug.temp.o
|
||||||
.data 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.data 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
.bss 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.bss 0x00000000 0x0 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
|
|
@ -58,11 +57,11 @@ RAM 0x20000000 0x00000800 xrw
|
||||||
|
|
||||||
Linker script and memory map
|
Linker script and memory map
|
||||||
|
|
||||||
LOAD /tmp/ccc3BNuu.o
|
LOAD /tmp/ccShKeGc.o
|
||||||
LOAD /tmp/ccuFqAhq.ltrans0.ltrans.o
|
LOAD /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
LOAD /tmp/cc6O5Yfp.debug.temp.o
|
LOAD /tmp/ccb2Xekb.debug.temp.o
|
||||||
LOAD /tmp/ccQWTvKu.debug.temp.o
|
LOAD /tmp/ccR20L1X.debug.temp.o
|
||||||
LOAD /tmp/ccZbRLFZ.o
|
LOAD /tmp/ccx6Ta0R.o
|
||||||
LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
|
|
||||||
|
|
@ -70,14 +69,14 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
0x00000000 _sinit = .
|
0x00000000 _sinit = .
|
||||||
0x00000000 . = ALIGN (0x4)
|
0x00000000 . = ALIGN (0x4)
|
||||||
*(SORT_NONE(.init))
|
*(SORT_NONE(.init))
|
||||||
.init 0x00000000 0x9e /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.init 0x00000000 0x9e /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000000 InterruptVectorDefault
|
0x00000000 InterruptVectorDefault
|
||||||
0x00000000 InterruptVector
|
0x00000000 InterruptVector
|
||||||
0x000000a0 . = ALIGN (0x4)
|
0x000000a0 . = ALIGN (0x4)
|
||||||
*fill* 0x0000009e 0x2
|
*fill* 0x0000009e 0x2
|
||||||
0x000000a0 _einit = .
|
0x000000a0 _einit = .
|
||||||
|
|
||||||
.text 0x000000a0 0x2468
|
.text 0x000000a0 0x2794
|
||||||
0x000000a0 . = ALIGN (0x4)
|
0x000000a0 . = ALIGN (0x4)
|
||||||
*(.text)
|
*(.text)
|
||||||
.text 0x000000a0 0x7e ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.text 0x000000a0 0x7e ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
@ -88,350 +87,360 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
0x000000f8 __modsi3
|
0x000000f8 __modsi3
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
.text.mini_pad
|
.text.mini_pad
|
||||||
0x0000011e 0x8a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x0000011e 0x8a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text._puts 0x000001a8 0x40 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text._puts 0x000001a8 0x40 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.PrintHex
|
.text.PrintHex
|
||||||
0x000001e8 0x5a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000001e8 0x5a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.DelaySysTick
|
.text.DelaySysTick
|
||||||
0x00000242 0x12 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000242 0x12 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.mini_itoa.part.0
|
.text.mini_itoa.part.0
|
||||||
0x00000254 0xc0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000254 0xc0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_i2c_setup
|
.text.ssd1306_i2c_setup
|
||||||
0x00000314 0x54 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000314 0x54 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_drawPixel
|
.text.ssd1306_drawPixel
|
||||||
0x00000368 0x3c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000368 0x3c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.beep 0x000003a4 0x68 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.ssd1306_drawstr
|
||||||
|
0x000003a4 0x8c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.text.beep 0x00000430 0x70 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.led_blink
|
.text.led_blink
|
||||||
0x0000040c 0x2a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000004a0 0x2a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.pet_reset
|
.text.pet_reset
|
||||||
0x00000436 0x30 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000004ca 0x38 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.read_buttons
|
.text.notify 0x00000502 0x8e /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000466 0x32 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.text.ssd1306_drawstr.constprop.0
|
|
||||||
0x00000498 0x78 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.text.draw_center_str
|
.text.draw_center_str
|
||||||
0x00000510 0x26 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000590 0x28 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_drawFastHLine.constprop.0
|
.text.read_buttons
|
||||||
0x00000536 0x4a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000005b8 0x32 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_drawFastVLine.constprop.0
|
.text.ssd1306_drawFastVLine.constprop.0
|
||||||
0x00000580 0x44 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000005ea 0x44 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_drawRect.constprop.0
|
|
||||||
0x000005c4 0x40 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.text.draw_bar
|
|
||||||
0x00000604 0x7a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.text.ssd1306_drawImage.constprop.0
|
.text.ssd1306_drawImage.constprop.0
|
||||||
0x0000067e 0xc0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x0000062e 0xc0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.text.ssd1306_drawFastHLine.part.0.constprop.0
|
||||||
|
0x000006ee 0x3e /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.text.ssd1306_drawRect.constprop.0
|
||||||
|
0x0000072c 0x40 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.text.draw_bar
|
||||||
|
0x0000076c 0x7c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.internal_handle_input.constprop.0
|
.text.internal_handle_input.constprop.0
|
||||||
0x0000073e 0xa /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000007e8 0xa /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text._write.constprop.0
|
.text._write.constprop.0
|
||||||
0x00000748 0xe4 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000007f2 0xe4 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.__puts_uart
|
.text.__puts_uart
|
||||||
0x0000082c 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000008d6 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.handle_reset
|
.text.handle_reset
|
||||||
0x00000840 0x72 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000008ea 0x72 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000840 handle_reset
|
0x000008ea handle_reset
|
||||||
.text.vector_handler
|
.text.vector_handler
|
||||||
0x000008b2 0x5a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x0000095c 0x62 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x000008b2 OPCM_IRQHandler
|
0x0000095c OPCM_IRQHandler
|
||||||
0x000008b2 EXTI2_IRQHandler
|
0x0000095c EXTI2_IRQHandler
|
||||||
0x000008b2 TIM8_TRG_COM_IRQHandler
|
0x0000095c TIM8_TRG_COM_IRQHandler
|
||||||
0x000008b2 TIM8_CC_IRQHandler
|
0x0000095c TIM8_CC_IRQHandler
|
||||||
0x000008b2 USART_WKUP_IRQHandler
|
0x0000095c USART_WKUP_IRQHandler
|
||||||
0x000008b2 UART8_IRQHandler
|
0x0000095c UART8_IRQHandler
|
||||||
0x000008b2 SPI4_IRQHandler
|
0x0000095c SPI4_IRQHandler
|
||||||
0x000008b2 NFC_IRQHandler
|
0x0000095c NFC_IRQHandler
|
||||||
0x000008b2 DFSDM0_IRQHandler
|
0x0000095c DFSDM0_IRQHandler
|
||||||
0x000008b2 TIM1_CC_IRQHandler
|
0x0000095c TIM1_CC_IRQHandler
|
||||||
0x000008b2 HardFault_Handler
|
0x0000095c HardFault_Handler
|
||||||
0x000008b2 TIM10_IRQHandler
|
0x0000095c TIM10_IRQHandler
|
||||||
0x000008b2 GPIOB_IRQHandler
|
0x0000095c GPIOB_IRQHandler
|
||||||
0x000008b2 IPC_CH2_Handler
|
0x0000095c IPC_CH2_Handler
|
||||||
0x000008b2 USBPD_IRQHandler
|
0x0000095c USBPD_IRQHandler
|
||||||
0x000008b2 TIM6_IRQHandler
|
0x0000095c TIM6_IRQHandler
|
||||||
0x000008b2 GPIOA_IRQHandler
|
0x0000095c GPIOA_IRQHandler
|
||||||
0x000008b2 SysTick_Handler
|
0x0000095c SysTick_Handler
|
||||||
0x000008b2 CAN3_RX1_IRQHandler
|
0x0000095c CAN3_RX1_IRQHandler
|
||||||
0x000008b2 I3C_ER_IRQHandler
|
0x0000095c I3C_ER_IRQHandler
|
||||||
0x000008b2 PVD_IRQHandler
|
0x0000095c PVD_IRQHandler
|
||||||
0x000008b2 SDIO_IRQHandler
|
0x0000095c SDIO_IRQHandler
|
||||||
0x000008b2 TIM9_BRK_IRQHandler
|
0x0000095c TIM9_BRK_IRQHandler
|
||||||
0x000008b2 DMA2_Channel8_IRQHandler
|
0x0000095c DMA2_Channel8_IRQHandler
|
||||||
0x000008b2 CAN2_RX1_IRQHandler
|
0x0000095c CAN2_RX1_IRQHandler
|
||||||
0x000008b2 EXTI3_IRQHandler
|
0x0000095c EXTI3_IRQHandler
|
||||||
0x000008b2 HSEM_Handler
|
0x0000095c HSEM_Handler
|
||||||
0x000008b2 UART1_IRQHandler
|
0x0000095c UART1_IRQHandler
|
||||||
0x000008b2 USBHS_IRQHandler
|
0x0000095c USBHS_IRQHandler
|
||||||
0x000008b2 LPTIM2_IRQHandler
|
0x0000095c LPTIM2_IRQHandler
|
||||||
0x000008b2 DMA2_Channel9_IRQHandler
|
0x0000095c DMA2_Channel9_IRQHandler
|
||||||
0x000008b2 TIM10_CC_IRQHandler
|
0x0000095c TIM10_CC_IRQHandler
|
||||||
0x000008b2 EXTI25_16_IRQHandler
|
0x0000095c EXTI25_16_IRQHandler
|
||||||
0x000008b2 I2C3_ER_IRQHandler
|
0x0000095c I2C3_ER_IRQHandler
|
||||||
0x000008b2 USBFS_IRQHandler
|
0x0000095c USBFS_IRQHandler
|
||||||
0x000008b2 UART0_IRQHandler
|
0x0000095c UART0_IRQHandler
|
||||||
0x000008b2 USART8_IRQHandler
|
0x0000095c USART8_IRQHandler
|
||||||
0x000008b2 EXTI0_IRQHandler
|
0x0000095c EXTI0_IRQHandler
|
||||||
0x000008b2 I2C2_EV_IRQHandler
|
0x0000095c I2C2_EV_IRQHandler
|
||||||
0x000008b2 TIM10_TRG_COM_IRQHandler
|
0x0000095c TIM10_TRG_COM_IRQHandler
|
||||||
0x000008b2 LPTIM_IRQHandler
|
0x0000095c LPTIM_IRQHandler
|
||||||
0x000008b2 CAN1_RX0_IRQHandler
|
0x0000095c CAN1_RX0_IRQHandler
|
||||||
0x000008b2 CAN3_SCE_IRQHandler
|
0x0000095c CAN3_SCE_IRQHandler
|
||||||
0x000008b2 CAN2_SCE_IRQHandler
|
0x0000095c CAN2_SCE_IRQHandler
|
||||||
0x000008b2 ADC1_2_IRQHandler
|
0x0000095c ADC1_2_IRQHandler
|
||||||
0x000008b2 BB_IRQHandler
|
0x0000095c BB_IRQHandler
|
||||||
0x000008b2 Break_Point_Handler
|
0x0000095c Break_Point_Handler
|
||||||
0x000008b2 IPC_CH0_Handler
|
0x0000095c IPC_CH0_Handler
|
||||||
0x000008b2 TIM2_CC_IRQHandler
|
0x0000095c TIM2_CC_IRQHandler
|
||||||
0x000008b2 SPI1_IRQHandler
|
0x0000095c SPI1_IRQHandler
|
||||||
0x000008b2 USART5_IRQHandler
|
0x0000095c USART5_IRQHandler
|
||||||
0x000008b2 TAMPER_IRQHandler
|
0x0000095c TAMPER_IRQHandler
|
||||||
0x000008b2 TMR0_IRQHandler
|
0x0000095c TMR0_IRQHandler
|
||||||
0x000008b2 AWU_IRQHandler
|
0x0000095c AWU_IRQHandler
|
||||||
0x000008b2 EXTI7_0_IRQHandler
|
0x0000095c EXTI7_0_IRQHandler
|
||||||
0x000008b2 CAN2_RX0_IRQHandler
|
0x0000095c CAN2_RX0_IRQHandler
|
||||||
0x000008b2 OSCWakeUp_IRQHandler
|
0x0000095c OSCWakeUp_IRQHandler
|
||||||
0x000008b2 TIM8_UP_IRQHandler
|
0x0000095c TIM8_UP_IRQHandler
|
||||||
0x000008b2 Ecall_M_Mode_Handler
|
0x0000095c Ecall_M_Mode_Handler
|
||||||
0x000008b2 ECDC_IRQHandler
|
0x0000095c ECDC_IRQHandler
|
||||||
0x000008b2 SDMMC_IRQHandler
|
0x0000095c SDMMC_IRQHandler
|
||||||
0x000008b2 USART7_IRQHandler
|
0x0000095c USART7_IRQHandler
|
||||||
0x000008b2 DMA2_Channel2_IRQHandler
|
0x0000095c DMA2_Channel2_IRQHandler
|
||||||
0x000008b2 DMA1_Channel4_IRQHandler
|
0x0000095c DMA1_Channel4_IRQHandler
|
||||||
0x000008b2 ADC1_IRQHandler
|
0x0000095c ADC1_IRQHandler
|
||||||
0x000008b2 TIM2_BRK_IRQHandler
|
0x0000095c TIM2_BRK_IRQHandler
|
||||||
0x000008b2 USART6_IRQHandler
|
0x0000095c USART6_IRQHandler
|
||||||
0x000008b2 CAN3_RX0_IRQHandler
|
0x0000095c CAN3_RX0_IRQHandler
|
||||||
0x000008b2 HSADC_IRQHandler
|
0x0000095c HSADC_IRQHandler
|
||||||
0x000008b2 TIM9_UP_IRQHandler
|
0x0000095c TIM9_UP_IRQHandler
|
||||||
0x000008b2 USART3_IRQHandler
|
0x0000095c USART3_IRQHandler
|
||||||
0x000008b2 RTC_IRQHandler
|
0x0000095c RTC_IRQHandler
|
||||||
0x000008b2 DMA1_Channel7_IRQHandler
|
0x0000095c DMA1_Channel7_IRQHandler
|
||||||
0x000008b2 LED_IRQHandler
|
0x0000095c LED_IRQHandler
|
||||||
0x000008b2 CAN1_RX1_IRQHandler
|
0x0000095c CAN1_RX1_IRQHandler
|
||||||
0x000008b2 DVP_IRQHandler
|
0x0000095c DVP_IRQHandler
|
||||||
0x000008b2 UART5_IRQHandler
|
0x0000095c UART5_IRQHandler
|
||||||
0x000008b2 USBSS_IRQHandler
|
0x0000095c USBSS_IRQHandler
|
||||||
0x000008b2 SWPMI_IRQHandler
|
0x0000095c SWPMI_IRQHandler
|
||||||
0x000008b2 USBPDWakeUp_IRQHandler
|
0x0000095c USBPDWakeUp_IRQHandler
|
||||||
0x000008b2 EXTI15_8_IRQHandler
|
0x0000095c EXTI15_8_IRQHandler
|
||||||
0x000008b2 TIM4_IRQHandler
|
0x0000095c TIM4_IRQHandler
|
||||||
0x000008b2 DMA2_Channel1_IRQHandler
|
0x0000095c DMA2_Channel1_IRQHandler
|
||||||
0x000008b2 SWPMI_WKUP_IRQHandler
|
0x0000095c SWPMI_WKUP_IRQHandler
|
||||||
0x000008b2 USBPD_WKUP_IRQHandler
|
0x0000095c USBPD_WKUP_IRQHandler
|
||||||
0x000008b2 I2C1_EV_IRQHandler
|
0x0000095c I2C1_EV_IRQHandler
|
||||||
0x000008b2 USBSSWakeup_IRQHandler
|
0x0000095c USBSSWakeup_IRQHandler
|
||||||
0x000008b2 UART2_IRQHandler
|
0x0000095c UART2_IRQHandler
|
||||||
0x000008b2 USART4_IRQHandler
|
0x0000095c USART4_IRQHandler
|
||||||
0x000008b2 PWMX_IRQHandler
|
0x0000095c PWMX_IRQHandler
|
||||||
0x000008b2 DMA1_Channel6_IRQHandler
|
0x0000095c DMA1_Channel6_IRQHandler
|
||||||
0x000008b2 UART4_IRQHandler
|
0x0000095c UART4_IRQHandler
|
||||||
0x000008b2 DMA2_Channel4_IRQHandler
|
0x0000095c DMA2_Channel4_IRQHandler
|
||||||
0x000008b2 TIM3_IRQHandler
|
0x0000095c TIM3_IRQHandler
|
||||||
0x000008b2 RCC_IRQHandler
|
0x0000095c RCC_IRQHandler
|
||||||
0x000008b2 TIM1_TRG_COM_IRQHandler
|
0x0000095c TIM1_TRG_COM_IRQHandler
|
||||||
0x000008b2 DMA1_Channel1_IRQHandler
|
0x0000095c DMA1_Channel1_IRQHandler
|
||||||
0x000008b2 DMA2_Channel7_IRQHandler
|
0x0000095c DMA2_Channel7_IRQHandler
|
||||||
0x000008b2 QSPI1_IRQHandler
|
0x0000095c QSPI1_IRQHandler
|
||||||
0x000008b2 EXTI15_10_IRQHandler
|
0x0000095c EXTI15_10_IRQHandler
|
||||||
0x000008b2 ADC_IRQHandler
|
0x0000095c ADC_IRQHandler
|
||||||
0x000008b2 IPC_CH3_Handler
|
0x0000095c IPC_CH3_Handler
|
||||||
0x000008b2 DMA1_Channel8_IRQHandler
|
0x0000095c DMA1_Channel8_IRQHandler
|
||||||
0x000008b2 I3C_EV_IRQHandler
|
0x0000095c I3C_EV_IRQHandler
|
||||||
0x000008b2 TMR2_IRQHandler
|
0x0000095c TMR2_IRQHandler
|
||||||
0x000008b2 I3C_WKUP_IRQHandler
|
0x0000095c I3C_WKUP_IRQHandler
|
||||||
0x000008b2 DefaultIRQHandler
|
0x0000095c DefaultIRQHandler
|
||||||
0x000008b2 TIM12_IRQHandler
|
0x0000095c TIM12_IRQHandler
|
||||||
0x000008b2 TIM7_IRQHandler
|
0x0000095c TIM7_IRQHandler
|
||||||
0x000008b2 CAN2_TX_IRQHandler
|
0x0000095c CAN2_TX_IRQHandler
|
||||||
0x000008b2 TIM5_IRQHandler
|
0x0000095c TIM5_IRQHandler
|
||||||
0x000008b2 I2C3_EV_IRQHandler
|
0x0000095c I2C3_EV_IRQHandler
|
||||||
0x000008b2 USB_IRQHandler
|
0x0000095c USB_IRQHandler
|
||||||
0x000008b2 EXTI9_5_IRQHandler
|
0x0000095c EXTI9_5_IRQHandler
|
||||||
0x000008b2 PIOC_IRQHandler
|
0x0000095c PIOC_IRQHandler
|
||||||
0x000008b2 TIM9_IRQHandler
|
0x0000095c TIM9_IRQHandler
|
||||||
0x000008b2 LTDC_IRQHandler
|
0x0000095c LTDC_IRQHandler
|
||||||
0x000008b2 SAI_IRQHandler
|
0x0000095c SAI_IRQHandler
|
||||||
0x000008b2 SPI2_IRQHandler
|
0x0000095c SPI2_IRQHandler
|
||||||
0x000008b2 OSC32KCal_IRQHandler
|
0x0000095c OSC32KCal_IRQHandler
|
||||||
0x000008b2 IPC_CH1_Handler
|
0x0000095c IPC_CH1_Handler
|
||||||
0x000008b2 I2C_IRQHandler
|
0x0000095c I2C_IRQHandler
|
||||||
0x000008b2 LPTIM1_WKUP_IRQHandler
|
0x0000095c LPTIM1_WKUP_IRQHandler
|
||||||
0x000008b2 TIM10_BRK_IRQHandler
|
0x0000095c TIM10_BRK_IRQHandler
|
||||||
0x000008b2 TIM9_CC_IRQHandler
|
0x0000095c TIM9_CC_IRQHandler
|
||||||
0x000008b2 CAN1_TX_IRQHandler
|
0x0000095c CAN1_TX_IRQHandler
|
||||||
0x000008b2 DMA2_Channel5_IRQHandler
|
0x0000095c DMA2_Channel5_IRQHandler
|
||||||
0x000008b2 USB2_IRQHandler
|
0x0000095c USB2_IRQHandler
|
||||||
0x000008b2 USBHSWakeUp_IRQHandler
|
0x0000095c USBHSWakeUp_IRQHandler
|
||||||
0x000008b2 DMA1_Channel5_IRQHandler
|
0x0000095c DMA1_Channel5_IRQHandler
|
||||||
0x000008b2 EXTI4_IRQHandler
|
0x0000095c EXTI4_IRQHandler
|
||||||
0x000008b2 USB_LP_CAN1_RX0_IRQHandler
|
0x0000095c USB_LP_CAN1_RX0_IRQHandler
|
||||||
0x000008b2 QSPI2_IRQHandler
|
0x0000095c QSPI2_IRQHandler
|
||||||
0x000008b2 RNG_IRQHandler
|
0x0000095c RNG_IRQHandler
|
||||||
0x000008b2 USB_HP_CAN1_TX_IRQHandler
|
0x0000095c USB_HP_CAN1_TX_IRQHandler
|
||||||
0x000008b2 LLE_IRQHandler
|
0x0000095c LLE_IRQHandler
|
||||||
0x000008b2 CMPWakeUp_IRQHandler
|
0x0000095c CMPWakeUp_IRQHandler
|
||||||
0x000008b2 DMA1_Channel3_IRQHandler
|
0x0000095c DMA1_Channel3_IRQHandler
|
||||||
0x000008b2 FSMC_IRQHandler
|
0x0000095c FSMC_IRQHandler
|
||||||
0x000008b2 ETH_IRQHandler
|
0x0000095c ETH_IRQHandler
|
||||||
0x000008b2 TIM1_UP_IRQHandler
|
0x0000095c TIM1_UP_IRQHandler
|
||||||
0x000008b2 LPTIMWakeUp_IRQHandler
|
0x0000095c LPTIMWakeUp_IRQHandler
|
||||||
0x000008b2 WWDG_IRQHandler
|
0x0000095c WWDG_IRQHandler
|
||||||
0x000008b2 USBHSWakeup_IRQHandler
|
0x0000095c USBHSWakeup_IRQHandler
|
||||||
0x000008b2 DMA2_Channel11_IRQHandler
|
0x0000095c DMA2_Channel11_IRQHandler
|
||||||
0x000008b2 WDOG_BAT_IRQHandler
|
0x0000095c WDOG_BAT_IRQHandler
|
||||||
0x000008b2 Ecall_U_Mode_Handler
|
0x0000095c Ecall_U_Mode_Handler
|
||||||
0x000008b2 I2C4_EV_IRQHandler
|
0x0000095c I2C4_EV_IRQHandler
|
||||||
0x000008b2 CAN3_TX_IRQHandler
|
0x0000095c CAN3_TX_IRQHandler
|
||||||
0x000008b2 TMR3_IRQHandler
|
0x0000095c TMR3_IRQHandler
|
||||||
0x000008b2 DMA2_Channel6_IRQHandler
|
0x0000095c DMA2_Channel6_IRQHandler
|
||||||
0x000008b2 TIM2_IRQHandler
|
0x0000095c TIM2_IRQHandler
|
||||||
0x000008b2 SW_Handler
|
0x0000095c SW_Handler
|
||||||
0x000008b2 TIM1_BRK_IRQHandler
|
0x0000095c TIM1_BRK_IRQHandler
|
||||||
0x000008b2 GPHA_IRQHandler
|
0x0000095c GPHA_IRQHandler
|
||||||
0x000008b2 OPA_IRQHandler
|
0x0000095c OPA_IRQHandler
|
||||||
0x000008b2 DMA2_Channel10_IRQHandler
|
0x0000095c DMA2_Channel10_IRQHandler
|
||||||
0x000008b2 EXTI1_IRQHandler
|
0x0000095c EXTI1_IRQHandler
|
||||||
0x000008b2 SPI0_IRQHandler
|
0x0000095c SPI0_IRQHandler
|
||||||
0x000008b2 USB2_HOST_IRQHandler
|
0x0000095c USB2_HOST_IRQHandler
|
||||||
0x000008b2 LPTIM2_WKUP_IRQHandler
|
0x0000095c LPTIM2_WKUP_IRQHandler
|
||||||
0x000008b2 RTCAlarm_IRQHandler
|
0x0000095c RTCAlarm_IRQHandler
|
||||||
0x000008b2 TIM11_IRQHandler
|
0x0000095c TIM11_IRQHandler
|
||||||
0x000008b2 TIM10_UP_IRQHandler
|
0x0000095c TIM10_UP_IRQHandler
|
||||||
0x000008b2 TIM9_TRG_COM_IRQHandler
|
0x0000095c TIM9_TRG_COM_IRQHandler
|
||||||
0x000008b2 UART7_IRQHandler
|
0x0000095c UART7_IRQHandler
|
||||||
0x000008b2 USART2_IRQHandler
|
0x0000095c USART2_IRQHandler
|
||||||
0x000008b2 UART6_IRQHandler
|
0x0000095c UART6_IRQHandler
|
||||||
0x000008b2 UHSIF_IRQHandler
|
0x0000095c UHSIF_IRQHandler
|
||||||
0x000008b2 ETHWakeUp_IRQHandler
|
0x0000095c ETHWakeUp_IRQHandler
|
||||||
0x000008b2 I2C2_ER_IRQHandler
|
0x0000095c I2C2_ER_IRQHandler
|
||||||
0x000008b2 DMA1_Channel2_IRQHandler
|
0x0000095c DMA1_Channel2_IRQHandler
|
||||||
0x000008b2 TIM8_BRK_IRQHandler
|
0x0000095c TIM8_BRK_IRQHandler
|
||||||
0x000008b2 TIM2_TRG_IRQHandler
|
0x0000095c TIM2_TRG_IRQHandler
|
||||||
0x000008b2 CAN1_SCE_IRQHandler
|
0x0000095c CAN1_SCE_IRQHandler
|
||||||
0x000008b2 FLASH_IRQHandler
|
0x0000095c FLASH_IRQHandler
|
||||||
0x000008b2 USBFSWakeUp_IRQHandler
|
0x0000095c USBFSWakeUp_IRQHandler
|
||||||
0x000008b2 USART1_IRQHandler
|
0x0000095c USART1_IRQHandler
|
||||||
0x000008b2 OTG_FS_IRQHandler
|
0x0000095c OTG_FS_IRQHandler
|
||||||
0x000008b2 SPI3_IRQHandler
|
0x0000095c SPI3_IRQHandler
|
||||||
0x000008b2 USBFS_WakeUp_IRQHandler
|
0x0000095c USBFS_WakeUp_IRQHandler
|
||||||
0x000008b2 UART3_IRQHandler
|
0x0000095c UART3_IRQHandler
|
||||||
0x000008b2 I2C1_ER_IRQHandler
|
0x0000095c I2C1_ER_IRQHandler
|
||||||
0x000008b2 FMC_IRQHandler
|
0x0000095c FMC_IRQHandler
|
||||||
0x000008b2 USB2_DEVICE_IRQHandler
|
0x0000095c USB2_DEVICE_IRQHandler
|
||||||
0x000008b2 LPTIM1_IRQHandler
|
0x0000095c LPTIM1_IRQHandler
|
||||||
0x000008b2 DFSDM1_IRQHandler
|
0x0000095c DFSDM1_IRQHandler
|
||||||
0x000008b2 TMR1_IRQHandler
|
0x0000095c TMR1_IRQHandler
|
||||||
0x000008b2 I2C4_ER_IRQHandler
|
0x0000095c I2C4_ER_IRQHandler
|
||||||
0x000008b2 SERDES_IRQHandler
|
0x0000095c SERDES_IRQHandler
|
||||||
0x000008b2 USBSS_LINK_IRQHandler
|
0x0000095c USBSS_LINK_IRQHandler
|
||||||
0x000008b2 USBWakeUp_IRQHandler
|
0x0000095c USBWakeUp_IRQHandler
|
||||||
0x000008b2 DMA2_Channel3_IRQHandler
|
0x0000095c DMA2_Channel3_IRQHandler
|
||||||
0x000008fe NMI_Handler
|
0x000009b0 NMI_Handler
|
||||||
0x000008fe NMI_RCC_CSS_IRQHandler
|
0x000009b0 NMI_RCC_CSS_IRQHandler
|
||||||
.text.strlen 0x0000090c 0x12 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strlen 0x000009be 0x12 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x0000090c strlen
|
0x000009be strlen
|
||||||
.text.mini_vpprintf
|
.text.mini_vpprintf
|
||||||
0x0000091e 0x1c2 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x000009d0 0x1c2 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.printf 0x00000ae0 0x24 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.printf 0x00000b92 0x24 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000ae0 printf
|
0x00000b92 printf
|
||||||
.text.ssd1306_i2c_error.isra.0
|
.text.ssd1306_i2c_error.isra.0
|
||||||
0x00000b04 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000bb6 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_i2c_send.constprop.0
|
.text.ssd1306_i2c_send.constprop.0
|
||||||
0x00000b24 0x122 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000bd6 0x122 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.ssd1306_cmd
|
.text.ssd1306_cmd
|
||||||
0x00000c46 0x1c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000cf8 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.mini_vsnprintf
|
.text.mini_vsnprintf
|
||||||
0x00000c62 0x38 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000d14 0x38 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.snprintf
|
.text.snprintf
|
||||||
0x00000c9a 0x16 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000d4c 0x16 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000c9a snprintf
|
0x00000d4c snprintf
|
||||||
.text.memset 0x00000cb0 0x12 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.memset 0x00000d62 0x12 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000cb0 memset
|
0x00000d62 memset
|
||||||
.text.ssd1306_setbuf.constprop.0
|
.text.ssd1306_setbuf.constprop.0
|
||||||
0x00000cc2 0xc /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000d74 0xc /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.memcpy 0x00000cce 0x1c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.text.strcpy 0x00000d80 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000cce memcpy
|
0x00000d80 strcpy
|
||||||
|
.text.memcpy 0x00000d94 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
0x00000d94 memcpy
|
||||||
.text.ssd1306_refresh
|
.text.ssd1306_refresh
|
||||||
0x00000cea 0x5c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000db0 0x5c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.text.SystemInit
|
.text.SystemInit
|
||||||
0x00000d46 0x54 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000e0c 0x54 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000d46 SystemInit
|
0x00000e0c SystemInit
|
||||||
.text.startup.main
|
.text.startup.main
|
||||||
0x00000d9a 0x8ea /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000e60 0xaaa /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x00000d9a main
|
0x00000e60 main
|
||||||
*(.rodata)
|
*(.rodata)
|
||||||
*(.rodata*)
|
*(.rodata*)
|
||||||
*fill* 0x00001684 0x0
|
*fill* 0x0000190a 0x2
|
||||||
.rodata.ssd1306_i2c_error.isra.0.str1.4
|
.rodata.ssd1306_i2c_error.isra.0.str1.4
|
||||||
0x00001684 0x12e /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x0000190c 0x198 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x2d (size before relaxing)
|
0x2d (size before relaxing)
|
||||||
.rodata.main.str1.4
|
.rodata.main.str1.4
|
||||||
0x000017b2 0x89 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001aa4 0xd9 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*fill* 0x000017b2 0x2
|
.rodata.main 0x00001aa4 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.main 0x000017b4 0x18 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.rodata.icon_settings
|
||||||
|
0x00001ac0 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_stats
|
.rodata.icon_stats
|
||||||
0x000017cc 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ae0 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_heal
|
.rodata.icon_heal
|
||||||
0x000017ec 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001b00 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_clean
|
.rodata.icon_clean
|
||||||
0x0000180c 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001b20 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_sleep
|
.rodata.icon_sleep
|
||||||
0x0000182c 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001b40 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_play
|
.rodata.icon_play
|
||||||
0x0000184c 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001b60 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.icon_feed
|
.rodata.icon_feed
|
||||||
0x0000186c 0x20 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001b80 0x20 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_dead
|
.rodata.pana_dead
|
||||||
0x0000188c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ba0 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_sleep
|
.rodata.pana_sleep
|
||||||
0x0000190c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001c20 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_eat
|
.rodata.pana_eat
|
||||||
0x0000198c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ca0 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_sad
|
.rodata.pana_sad
|
||||||
0x00001a0c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001d20 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_happy
|
.rodata.pana_happy
|
||||||
0x00001a8c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001da0 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_blink
|
.rodata.pana_blink
|
||||||
0x00001b0c 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001e20 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.str1.4
|
.rodata.str1.4
|
||||||
0x00001b8c 0x76 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ea0 0x90 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.errstr
|
.rodata.errstr
|
||||||
0x00001b8c 0x14 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ea0 0x14 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.fontdata
|
|
||||||
0x00001ba0 0x800 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
|
||||||
.rodata.ssd1306_init_array
|
.rodata.ssd1306_init_array
|
||||||
0x000023a0 0x1a /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001eb4 0x1a /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*fill* 0x000023ba 0x2
|
*fill* 0x00001ece 0x2
|
||||||
.rodata.pana_idle
|
.rodata.pana_idle
|
||||||
0x000023bc 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001ed0 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.menu_icons
|
.rodata.menu_icons
|
||||||
0x0000243c 0x18 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001f50 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.pana_frames
|
.rodata.pana_frames
|
||||||
0x00002454 0x1c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001f6c 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.menu_labels
|
.rodata.menu_labels
|
||||||
0x00002470 0x18 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001f88 0x1c /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.rodata.screen_timeout_names
|
||||||
|
0x00001fa4 0x10 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.rodata.spr_grave
|
.rodata.spr_grave
|
||||||
0x00002488 0x80 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00001fb4 0x80 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.rodata.fontdata
|
||||||
|
0x00002034 0x800 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*(.gnu.linkonce.t.*)
|
*(.gnu.linkonce.t.*)
|
||||||
0x00002508 . = ALIGN (0x4)
|
0x00002834 . = ALIGN (0x4)
|
||||||
|
|
||||||
.fini 0x00002508 0x0
|
.rela.dyn 0x00002834 0x0
|
||||||
|
.rela.text.handle_reset
|
||||||
|
0x00002834 0x0 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
|
||||||
|
.fini 0x00002834 0x0
|
||||||
*(SORT_NONE(.fini))
|
*(SORT_NONE(.fini))
|
||||||
0x00002508 . = ALIGN (0x4)
|
0x00002834 . = ALIGN (0x4)
|
||||||
[!provide] PROVIDE (_etext = .)
|
[!provide] PROVIDE (_etext = .)
|
||||||
[!provide] PROVIDE (_eitcm = .)
|
[!provide] PROVIDE (_eitcm = .)
|
||||||
|
|
||||||
.preinit_array 0x00002508 0x0
|
.preinit_array 0x00002834 0x0
|
||||||
[!provide] PROVIDE (__preinit_array_start = .)
|
[!provide] PROVIDE (__preinit_array_start = .)
|
||||||
*(.preinit_array)
|
*(.preinit_array)
|
||||||
[!provide] PROVIDE (__preinit_array_end = .)
|
[!provide] PROVIDE (__preinit_array_end = .)
|
||||||
|
|
||||||
.init_array 0x00002508 0x0
|
.init_array 0x00002834 0x0
|
||||||
0x00002508 PROVIDE (__init_array_start = .)
|
0x00002834 PROVIDE (__init_array_start = .)
|
||||||
*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))
|
*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))
|
||||||
*(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors)
|
*(.init_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .ctors)
|
||||||
0x00002508 PROVIDE (__init_array_end = .)
|
0x00002834 PROVIDE (__init_array_end = .)
|
||||||
|
|
||||||
.fini_array 0x00002508 0x0
|
.fini_array 0x00002834 0x0
|
||||||
[!provide] PROVIDE (__fini_array_start = .)
|
[!provide] PROVIDE (__fini_array_start = .)
|
||||||
*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))
|
*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))
|
||||||
*(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors)
|
*(.fini_array EXCLUDE_FILE(*crtend?.o *crtend.o *crtbegin?.o *crtbegin.o) .dtors)
|
||||||
|
|
@ -451,15 +460,15 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
*(SORT_BY_NAME(.dtors.*))
|
*(SORT_BY_NAME(.dtors.*))
|
||||||
*(.dtors)
|
*(.dtors)
|
||||||
|
|
||||||
.dalign 0x20000000 0x0 load address 0x00002508
|
.dalign 0x20000000 0x0 load address 0x00002834
|
||||||
0x20000000 . = ALIGN (0x4)
|
0x20000000 . = ALIGN (0x4)
|
||||||
0x20000000 PROVIDE (_data_vma = .)
|
0x20000000 PROVIDE (_data_vma = .)
|
||||||
|
|
||||||
.dlalign 0x00002508 0x0
|
.dlalign 0x00002834 0x0
|
||||||
0x00002508 . = ALIGN (0x4)
|
0x00002834 . = ALIGN (0x4)
|
||||||
0x00002508 PROVIDE (_data_lma = .)
|
0x00002834 PROVIDE (_data_lma = .)
|
||||||
|
|
||||||
.data 0x20000000 0x8 load address 0x00002508
|
.data 0x20000000 0x18 load address 0x00002834
|
||||||
0x20000000 . = ALIGN (0x4)
|
0x20000000 . = ALIGN (0x4)
|
||||||
0x200003fc __global_pointer$ = (. + 0x3fc)
|
0x200003fc __global_pointer$ = (. + 0x3fc)
|
||||||
*(.gnu.linkonce.r.*)
|
*(.gnu.linkonce.r.*)
|
||||||
|
|
@ -467,47 +476,59 @@ LOAD ../ch32v003fun/ch32fun//../misc/libgcc.a
|
||||||
*(.gnu.linkonce.d.*)
|
*(.gnu.linkonce.d.*)
|
||||||
0x20000000 . = ALIGN (0x8)
|
0x20000000 . = ALIGN (0x8)
|
||||||
*(.sdata .sdata.*)
|
*(.sdata .sdata.*)
|
||||||
|
.sdata.timeout_idx
|
||||||
|
0x20000000 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sdata.disp_on
|
||||||
|
0x20000001 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sdata.sound_on
|
||||||
|
0x20000002 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*(.sdata2*)
|
*(.sdata2*)
|
||||||
*(.gnu.linkonce.s.*)
|
*(.gnu.linkonce.s.*)
|
||||||
0x20000000 . = ALIGN (0x8)
|
0x20000008 . = ALIGN (0x8)
|
||||||
|
*fill* 0x20000003 0x5
|
||||||
*(.srodata.cst16)
|
*(.srodata.cst16)
|
||||||
*(.srodata.cst8)
|
*(.srodata.cst8)
|
||||||
*(.srodata.cst4)
|
*(.srodata.cst4)
|
||||||
*(.srodata.cst2)
|
*(.srodata.cst2)
|
||||||
*(.srodata .srodata.*)
|
*(.srodata .srodata.*)
|
||||||
.srodata.spr_poop
|
.srodata.spr_poop
|
||||||
0x20000000 0x8 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000008 0x8 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x20000008 . = ALIGN (0x4)
|
.srodata.screen_timeout_opts
|
||||||
0x20000008 PROVIDE (_edata = .)
|
0x20000010 0x8 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
0x20000018 . = ALIGN (0x4)
|
||||||
|
0x20000018 PROVIDE (_edata = .)
|
||||||
|
|
||||||
.rela.dyn 0x20000008 0x0 load address 0x00002510
|
.bss 0x20000018 0x428 load address 0x0000284c
|
||||||
.rela.text.handle_reset
|
0x20000018 . = ALIGN (0x4)
|
||||||
0x20000008 0x0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000018 PROVIDE (_sbss = .)
|
||||||
|
|
||||||
.bss 0x20000008 0x41c load address 0x00002510
|
|
||||||
0x20000008 . = ALIGN (0x4)
|
|
||||||
0x20000008 PROVIDE (_sbss = .)
|
|
||||||
*(.sbss*)
|
*(.sbss*)
|
||||||
.sbss.anim_exp
|
.sbss.anim_exp
|
||||||
0x20000008 0x1 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000018 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*fill* 0x20000009 0x3
|
*fill* 0x20000019 0x3
|
||||||
.sbss.frame 0x2000000c 0x4 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.sbss.frame 0x2000001c 0x4 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.sbss.tick_acc
|
.sbss.tick_acc
|
||||||
0x20000010 0x2 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000020 0x2 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.sbss.anim_timer
|
.sbss.anim_timer
|
||||||
0x20000012 0x1 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000022 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.sbss.cursor 0x20000013 0x1 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.sbss.set_sel 0x20000023 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.sbss.screen 0x20000014 0x1 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.sbss.idle_frames
|
||||||
|
0x20000024 0x4 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sbss.crit_flag
|
||||||
|
0x20000028 0x4 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sbss.warn_flag
|
||||||
|
0x2000002c 0x4 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sbss.cursor 0x20000030 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
.sbss.screen 0x20000031 0x1 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*(.gnu.linkonce.sb.*)
|
*(.gnu.linkonce.sb.*)
|
||||||
*(.bss*)
|
*(.bss*)
|
||||||
*fill* 0x20000015 0x3
|
*fill* 0x20000032 0x2
|
||||||
.bss.pet 0x20000018 0xc /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.bss.pet 0x20000034 0xc /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.bss.ssd1306_buffer
|
.bss.ssd1306_buffer
|
||||||
0x20000024 0x400 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x20000040 0x400 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
*(.gnu.linkonce.b.*)
|
*(.gnu.linkonce.b.*)
|
||||||
*(COMMON*)
|
*(COMMON*)
|
||||||
0x20000424 . = ALIGN (0x4)
|
0x20000440 . = ALIGN (0x4)
|
||||||
0x20000424 PROVIDE (_ebss = .)
|
0x20000440 PROVIDE (_ebss = .)
|
||||||
[!provide] PROVIDE (_end = _ebss)
|
[!provide] PROVIDE (_end = _ebss)
|
||||||
[!provide] PROVIDE (end = .)
|
[!provide] PROVIDE (end = .)
|
||||||
0x20000800 PROVIDE (_eusrstack = (ORIGIN (RAM) + LENGTH (RAM)))
|
0x20000800 PROVIDE (_eusrstack = (ORIGIN (RAM) + LENGTH (RAM)))
|
||||||
|
|
@ -523,64 +544,64 @@ OUTPUT(tama.elf elf32-littleriscv)
|
||||||
.riscv.attributes
|
.riscv.attributes
|
||||||
0x00000000 0x25
|
0x00000000 0x25
|
||||||
.riscv.attributes
|
.riscv.attributes
|
||||||
0x00000000 0x25 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x25 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.riscv.attributes
|
.riscv.attributes
|
||||||
0x00000025 0x1f ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
0x00000025 0x1f ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_info 0x00000000 0x49c5
|
.debug_info 0x00000000 0x4ec9
|
||||||
.debug_info 0x00000000 0x25b8 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.debug_info 0x00000000 0x2938 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.debug_info 0x000025b8 0x1159 /tmp/cc6O5Yfp.debug.temp.o
|
.debug_info 0x00002938 0x1159 /tmp/ccb2Xekb.debug.temp.o
|
||||||
0x000025b8 ch32fun.c.3da016ab
|
0x00002938 ch32fun.c.3da016ab
|
||||||
.debug_info 0x00003711 0x1257 /tmp/ccQWTvKu.debug.temp.o
|
.debug_info 0x00003a91 0x13db /tmp/ccR20L1X.debug.temp.o
|
||||||
0x00003711 tama.c.f19bf6d4
|
0x00003a91 tama.c.67bb5960
|
||||||
.debug_info 0x00004968 0x5d ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.debug_info 0x00004e6c 0x5d ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_abbrev 0x00000000 0x7c5
|
.debug_abbrev 0x00000000 0x7c2
|
||||||
.debug_abbrev 0x00000000 0x20c /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.debug_abbrev 0x00000000 0x209 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.debug_abbrev 0x0000020c 0x278 /tmp/cc6O5Yfp.debug.temp.o
|
.debug_abbrev 0x00000209 0x278 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.debug_abbrev 0x00000484 0x319 /tmp/ccQWTvKu.debug.temp.o
|
.debug_abbrev 0x00000481 0x319 /tmp/ccR20L1X.debug.temp.o
|
||||||
.debug_abbrev 0x0000079d 0x28 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.debug_abbrev 0x0000079a 0x28 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_loclists
|
.debug_loclists
|
||||||
0x00000000 0x20c5
|
0x00000000 0x232b
|
||||||
.debug_loclists
|
.debug_loclists
|
||||||
0x00000000 0x20c5 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x232b /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
|
||||||
.debug_aranges 0x00000000 0x200
|
.debug_aranges 0x00000000 0x208
|
||||||
.debug_aranges
|
.debug_aranges
|
||||||
0x00000000 0x1e0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x1e8 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.debug_aranges
|
.debug_aranges
|
||||||
0x000001e0 0x20 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
0x000001e8 0x20 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_rnglists
|
.debug_rnglists
|
||||||
0x00000000 0x4a6
|
0x00000000 0x4e8
|
||||||
.debug_rnglists
|
.debug_rnglists
|
||||||
0x00000000 0x4a6 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x4e8 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
|
||||||
.debug_line 0x00000000 0x4835
|
.debug_line 0x00000000 0x4f23
|
||||||
.debug_line 0x00000000 0x45f0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.debug_line 0x00000000 0x4cde /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
.debug_line 0x000045f0 0x76 /tmp/cc6O5Yfp.debug.temp.o
|
.debug_line 0x00004cde 0x76 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.debug_line 0x00004666 0x7c /tmp/ccQWTvKu.debug.temp.o
|
.debug_line 0x00004d54 0x7c /tmp/ccR20L1X.debug.temp.o
|
||||||
.debug_line 0x000046e2 0x153 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.debug_line 0x00004dd0 0x153 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_str 0x00000000 0xf6f
|
.debug_str 0x00000000 0x1069
|
||||||
.debug_str 0x00000000 0xf6f /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.debug_str 0x00000000 0x1069 /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x1c2 (size before relaxing)
|
0x1da (size before relaxing)
|
||||||
.debug_str 0x00000f6f 0x751 /tmp/cc6O5Yfp.debug.temp.o
|
.debug_str 0x00001069 0x751 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.debug_str 0x00000f6f 0x994 /tmp/ccQWTvKu.debug.temp.o
|
.debug_str 0x00001069 0xa84 /tmp/ccR20L1X.debug.temp.o
|
||||||
.debug_str 0x00000f6f 0xd9 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
.debug_str 0x00001069 0xd9 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_line_str
|
.debug_line_str
|
||||||
0x00000000 0x33f
|
0x00000000 0x33f
|
||||||
.debug_line_str
|
.debug_line_str
|
||||||
0x00000000 0x33f /tmp/ccuFqAhq.ltrans0.ltrans.o
|
0x00000000 0x33f /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
0x157 (size before relaxing)
|
0x157 (size before relaxing)
|
||||||
.debug_line_str
|
.debug_line_str
|
||||||
0x0000033f 0x246 /tmp/cc6O5Yfp.debug.temp.o
|
0x0000033f 0x246 /tmp/ccb2Xekb.debug.temp.o
|
||||||
.debug_line_str
|
.debug_line_str
|
||||||
0x0000033f 0x1e5 /tmp/ccQWTvKu.debug.temp.o
|
0x0000033f 0x1e5 /tmp/ccR20L1X.debug.temp.o
|
||||||
.debug_line_str
|
.debug_line_str
|
||||||
0x0000033f 0x92 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
0x0000033f 0x92 ../ch32v003fun/ch32fun//../misc/libgcc.a(div.o)
|
||||||
|
|
||||||
.debug_frame 0x00000000 0x5b0
|
.debug_frame 0x00000000 0x5dc
|
||||||
.debug_frame 0x00000000 0x5b0 /tmp/ccuFqAhq.ltrans0.ltrans.o
|
.debug_frame 0x00000000 0x5dc /tmp/cczcSDec.ltrans0.ltrans.o
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue