From f631b257aafad789e44201c157bc57021d455cd3 Mon Sep 17 00:00:00 2001 From: xqq27 <834160466@qq.com> Date: Mon, 11 May 2026 17:20:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=8A=E6=97=A5=20?= =?UTF-8?q?=E8=B6=85=E9=9C=87=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/.clangd | 1 + Code/.vscode/settings.json | 3 +- Code/middleware/DehyTest/dehy_test.c | 211 ++++++++++++++++++++++++--- Project/Output/TianyunV1.hex | 32 ++-- Project/Output/TianyunV1.map | 178 +++++++++++++--------- 5 files changed, 318 insertions(+), 107 deletions(-) diff --git a/Code/.clangd b/Code/.clangd index 75db495..12db360 100644 --- a/Code/.clangd +++ b/Code/.clangd @@ -1,4 +1,5 @@ CompileFlags: + Compiler: clang Add: - -target - arm-none-eabi diff --git a/Code/.vscode/settings.json b/Code/.vscode/settings.json index cf2a1c7..2175415 100644 --- a/Code/.vscode/settings.json +++ b/Code/.vscode/settings.json @@ -46,6 +46,7 @@ "clangd.path": "C:/Users/xqq/AppData/Local/Microsoft/WinGet/Packages/LLVM.clangd_Microsoft.Winget.Source_8wekyb3d8bbwe/clangd_22.1.0/bin/clangd.exe", "clangd.arguments": [ "--compile-commands-dir=.", - "--background-index" + "--background-index", + "--query-driver=**/arm-none-eabi-gcc.exe,**/armclang.exe" ] } diff --git a/Code/middleware/DehyTest/dehy_test.c b/Code/middleware/DehyTest/dehy_test.c index 888c09c..8db503b 100644 --- a/Code/middleware/DehyTest/dehy_test.c +++ b/Code/middleware/DehyTest/dehy_test.c @@ -1,6 +1,6 @@ #include "dehy_test.h" #include "mw_soft_timer.h" - +#include "string.h" /* @@ -13,6 +13,12 @@ 6. 除非停机,否则result_speed不要下降,只能不变或者上升。 */ +#ifndef ENABLE + #define ENABLE (1u) +#endif +#ifndef DISABLE + #define DISABLE (0u) +#endif /* 脱水速度设置 枚举变量 */ typedef enum @@ -25,8 +31,175 @@ typedef enum DEHY_SPEEDSET_NUM }SPEEDUP_ENUM_T; -/* 外部调用 速度设置值 */ -static uint16_t speed_set_val = 0u; +typedef enum +{ + SUPERSHAKE_LEVEL_MID_DEHY, // 超震等级 中脱 + SUPERSHAKE_LEVEL_HIGH1_DEHY, // 超震等级 高脱1 + SUPERSHAKE_LEVEL_HIGH2_DEHY, // 超震等级 高脱2 + SUPERSHAKE_LEVEL_HIGH3_DEHY, // 超震等级 高脱3 + SUPERSHAKE_LEVEL_HIGH4_DEHY, // 超震等级 高脱4 + + SUPERSHAKE_LEVEL_NUM + +}SUPERSHAKE_LEVEL_ENUM_T; + + +// 超震记录单元 +typedef struct +{ + /* 基础参数 */ + uint16_t imu_set; // 超震值设定 + uint16_t over_judge_time; // 超标判断时间 + uint16_t recover_judge_time; // 恢复判断时间 + uint16_t speed_limit; // 速度限制 + /* 状态计数 */ + uint16_t over_time_cnt; // 恢复时间计数 + uint16_t recover_time_cnt; // 恢复时间计数 +}SUPERSHAKE_RECORD_STR_T; + +// 超震限速枚举变量 +typedef enum +{ + SUPERSHAKE_LIMIT_INIT, // 初始化 + SUPERSHAKE_LIMIT_IDLE, // 空闲 不检测超震 + SUPERSHAKE_LIMIT_DETECT, // 检测 + + +}SUPERSHAKE_LIMIT_STATE_ENUM_T; + +static uint16_t supershake_limit_speed_val = 0; // 超震限制速度值 +static uint16_t speed_set_val = 0u; // 外部调用 最终的速度设置值 +static uint16_t rt_imu_data = 0; // 实时imu数据 + +static SUPERSHAKE_RECORD_STR_T supershake_record[SUPERSHAKE_LEVEL_NUM] = {0}; // 超震变速记录 + + +/* 中脱转速 */ +static uint16_t get_set_mid_dehy_speed_value(void){ + return 400; +} +/* 高脱1转速 */ +static uint16_t get_set_high_1_dehy_speed_value(void){ + return 500; +} +/* 高脱2转速 */ +static uint16_t get_set_high_2_dehy_speed_value(void){ + return 600; +} +/* 高脱3转速 */ +static uint16_t get_set_high_3_dehy_speed_value(void){ + return 700; +} +/* 高脱4转速 */ +static uint16_t get_set_high_4_dehy_speed_value(void){ + return 800; +} + + +/* 中脱超震值 */ +static uint16_t get_set_mid_dehy_supershake_value(void){ + return 500; +} +/* 高脱1超震值 */ +static uint16_t get_set_high_1_dehy_supershake_value(void){ + return 400; +} +/* 高脱2超震值 */ +static uint16_t get_set_high_2_dehy_supershake_value(void){ + return 300; +} +/* 高脱3超震值 */ +static uint16_t get_set_high_3_dehy_supershake_value(void){ + return 200; +} +/* 高脱4超震值 */ +static uint16_t get_set_high_4_dehy_supershake_value(void){ + return 100; +} +/* 当前是否开启超震检测 */ +static uint16_t get_supershake_detect_cmd(void) +{ + return ENABLE; +} +/* 获取 实时imu数据 */ +static uint16_t get_imu_data(void) +{ + return rt_imu_data; +} +/************************************************************************************* + * @brief 初始化 超震记录 + * + * @warning + * @note + *************************************************************************************/ +static void supershake_record_init(void) +{ + memset((uint8_t *)supershake_record, 0x00, sizeof(supershake_record)); + /* 中脱初始化 */ + supershake_record[SUPERSHAKE_LEVEL_MID_DEHY].imu_set = get_set_mid_dehy_supershake_value(); + supershake_record[SUPERSHAKE_LEVEL_MID_DEHY].speed_limit = get_set_mid_dehy_speed_value(); + supershake_record[SUPERSHAKE_LEVEL_MID_DEHY].over_judge_time = 10; + supershake_record[SUPERSHAKE_LEVEL_MID_DEHY].recover_judge_time = 20; + /* 高脱1初始化 */ + supershake_record[SUPERSHAKE_LEVEL_HIGH1_DEHY].imu_set = get_set_high_1_dehy_supershake_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH1_DEHY].speed_limit = get_set_high_1_dehy_speed_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH1_DEHY].over_judge_time = 10; + supershake_record[SUPERSHAKE_LEVEL_HIGH1_DEHY].recover_judge_time = 20; + /* 高脱2初始化 */ + supershake_record[SUPERSHAKE_LEVEL_HIGH2_DEHY].imu_set = get_set_high_2_dehy_supershake_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH2_DEHY].speed_limit = get_set_high_2_dehy_speed_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH2_DEHY].over_judge_time = 10; + supershake_record[SUPERSHAKE_LEVEL_HIGH2_DEHY].recover_judge_time = 20; + /* 高脱3初始化 */ + supershake_record[SUPERSHAKE_LEVEL_HIGH3_DEHY].imu_set = get_set_high_3_dehy_supershake_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH3_DEHY].speed_limit = get_set_high_3_dehy_speed_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH3_DEHY].over_judge_time = 10; + supershake_record[SUPERSHAKE_LEVEL_HIGH3_DEHY].recover_judge_time = 20; + /* 高脱4初始化 */ + supershake_record[SUPERSHAKE_LEVEL_HIGH4_DEHY].imu_set = get_set_high_4_dehy_supershake_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH4_DEHY].speed_limit = get_set_high_4_dehy_speed_value(); + supershake_record[SUPERSHAKE_LEVEL_HIGH4_DEHY].over_judge_time = 10; + supershake_record[SUPERSHAKE_LEVEL_HIGH4_DEHY].recover_judge_time = 20; + +} + + +/************************************************************************************* + * @brief 超震速度限制逻辑 + * + * @warning + * @note + *************************************************************************************/ +static void supershake_speed_limit(void) +{ + static SUPERSHAKE_LIMIT_STATE_ENUM_T supershake_limit_speed_state = SUPERSHAKE_LIMIT_INIT; // 超震限速逻辑状态机 + static uint32_t timetick = 0; // 时间戳 + uint16_t realtime_imu_val = 0; // 当前获取的超震值 + + switch(supershake_limit_speed_state) + { + case SUPERSHAKE_LIMIT_INIT: + supershake_record_init(); + supershake_limit_speed_state = SUPERSHAKE_LIMIT_IDLE; + break; + case SUPERSHAKE_LIMIT_IDLE: + if(get_supershake_detect_cmd() == ENABLE) + { + timetick = get_systick_ms(); + supershake_limit_speed_state = SUPERSHAKE_LIMIT_DETECT; + supershake_limit_speed_val = get_set_high_4_dehy_speed_value(); + } + break; + case SUPERSHAKE_LIMIT_DETECT: + if(get_supershake_detect_cmd() == DISABLE) + { + supershake_limit_speed_state = SUPERSHAKE_LIMIT_IDLE; + } + realtime_imu_val = get_imu_data(); + } +} + + /************************************************************************************* * @brief 下设速度 @@ -40,7 +213,16 @@ void motor_speed_set(uint16_t val) speed_set_val = val; } - +/************************************************************************************* + * @brief 提速逻辑 + * @param[in/out] init_cmd + * @param[in/out] acc_val + * @param[in/out] current_speed + * @param[in/out] target_speed + * + * @warning + * @note + *************************************************************************************/ void dehy_speed_up(LOGIC_STATE_ENUM_T init_cmd, uint16_t acc_val, uint16_t current_speed, uint16_t target_speed) { @@ -91,29 +273,20 @@ void dehy_speed_up(LOGIC_STATE_ENUM_T init_cmd, uint16_t acc_val, uint16_t curre if(target_speed < target_speed_cache) { // 若当前速度 小于 现在的目标速度 则没事 更新一下目标速度缓存 当前就不加速了 - if(current_speed < target_speed) + // 当前速度 不小于 新的目标速度 则稳住当前速度 进入稳态 + if(current_speed >= target_speed) { - // // 刷新 目标速度缓存 - // target_speed_cache = target_speed; - // // 刷新 当前速度缓存 - // current_speed_cache = current_speed; - } - else - { - // 否则保持当前缓存的速度 稳住 - // result_speed = current_speed_cache; // 记录当前速度 result_speed = current_speed; // 切到速度保持 add_speed_state = DEHY_SPEEDSET_SPEED_KEEP; } + else { + ; + } } else { - // // 刷新 目标速度缓存 - // target_speed_cache = target_speed; - // // 刷新 当前速度缓存 - // current_speed_cache = current_speed; // 更新 预设速度 result_speed += acc_val; // 进下一阶段判断 @@ -158,9 +331,7 @@ void dehy_speed_up(LOGIC_STATE_ENUM_T init_cmd, uint16_t acc_val, uint16_t curre default: break; } - /* 设置速度 */ motor_speed_set(result_speed); } - diff --git a/Project/Output/TianyunV1.hex b/Project/Output/TianyunV1.hex index 2fe32b7..a70ef4e 100644 --- a/Project/Output/TianyunV1.hex +++ b/Project/Output/TianyunV1.hex @@ -1,5 +1,5 @@ :020000040800F2 -:10000000380D0020050100080D0100080F0100084F +:10000000400D0020050100080D0100080F01000847 :10001000110100081301000815010008000000008C :1000200000000000000000000000000017010008B0 :1000300019010008000000001B0100080505000868 @@ -15,7 +15,7 @@ :1000D0001F01000875090008B10900081F01000888 :1000E0001F0100081F0100081F010008DFF810D0E1 :1000F00000F042F800480047CD180008AFF3008038 -:10010000380D00200648804706480047FEE7FEE716 +:10010000400D00200648804706480047FEE7FEE70E :10011000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE7B7 :100120005D050008ED00000840EA01039B0703D0CD :1001300009E008C9121F08C0042AFAD203E011F826 @@ -84,7 +84,7 @@ :1005200001200B490870002408E004EB4401094A4B :1005300002EB810000F0AAFE601CC4B2032CF4DBC5 :1005400005480068401C0449086010BD1C000020DC -:1005500020000020880000202800002010B513484B +:1005500020000020900000202800002010B5134843 :10056000006840F0010011490860084640681049E1 :1005700008400E494860084600680E4908400B498B :1005800008600846006820F480200860084640683B @@ -154,7 +154,7 @@ :1009800020B140F22661094800F01AF840F22551E2 :10099000064800F08CF840B140F22551034800F0C1 :1009A0000FF8024800F03EF9C4B210BD0038014013 -:1009B00010B5024800F03FF910BD0000AC00002067 +:1009B00010B5024800F03FF910BD0000B40000205F :1009C00010B50022002340F66A14A14200D100BFF6 :1009D0000A1201249440A3B2DC43048010BD21B16B :1009E000828942F40052828104E082894DF6FF73CD @@ -267,7 +267,7 @@ :101090000000002002000020030000200146032978 :1010A00001DB0020704701EB4100084A02EB8000A1 :1010B0004078012808D1002001EB4102034B03EBEB -:1010C000820250700120EDE70020EBE7880000204D +:1010C000820250700120EDE70020EBE79000002045 :1010D00000B589B001210220FFF7F6F801210820B0 :1010E000FFF712F918208DF823000120ADF8200039 :1010F00003208DF8220008A91848FFF74FF8184878 @@ -306,7 +306,7 @@ :101300006F64655C6273705C7372635C6273705F60 :1013100074696D65722E63004572726F723A206651 :10132000696C652025732C2066756E6374696F6E19 -:1013300020257328290D0A008800002010B50446D6 +:1013300020257328290D0A009000002010B50446CE :1013400021460248FFF7C2FA10BD00000004004029 :1013500010B5044621460248FFF7B6FA10BD00005A :101360000004004010B5044621460248FFF7AAFADF @@ -339,11 +339,11 @@ :1015100059170F23002907DA1C07260E0B4C01F080 :101520000F052D1F665503E01C07250E084C65545A :1015300000BF00214FF0E02399610721196100BF2E -:1015400070BD0000880000204000002018ED00E081 +:1015400070BD0000900000204000002018ED00E079 :1015500000E400E00A480B4908600B4848600B486B :1015600088604FF480608881C881002008824882AA :10157000C882088348838882C861086248627047CD -:1015800000440040AC000020D4000020D40400201F +:1015800000440040B4000020DC000020DC04002007 :1015900000B585B001210820FEF7B6FE01218804C0 :1015A000FEF792FE1A48FFF727FA4FF48060ADF875 :1015B000100003208DF8120018208DF8130004A9E4 @@ -367,8 +367,8 @@ :1016D0000F480088844208DD0C480088A04202DAE6 :1016E0000120084908700A48048004E000200749E6 :1016F000088000E000BF00BF0448008800F00AF93D -:10170000BDE8F081800000207C00002082000020E5 -:101710008400002070B504460D4600BF40210548F6 +:10170000BDE8F08188000020840000208A000020CD +:101710008C00002070B504460D4600BF40210548EE :10172000FFF7B8F90028F9D0E1B20248FFF77FFAD5 :10173000204670BD0048004010B5FFF71DFE10BDEB :101740000FB410B52A480078052848D2DFE800F029 @@ -400,12 +400,12 @@ :1018E00001E0FFF79FFBFCE710B500F047F802A00E :1018F000FFF714FA10BD00006D6964646C657761D0 :10190000726520696E69742077656C6C203E3E3E7E -:1019100000000000014908807047000078000020A6 +:101910000000000001490880704700007A000020A4 :1019200010B50020FFF7BAFB10BD0000024A06CA3E :10193000C0E90012704700006800002070B505463D :101940000C46042C01DB00BFFEE704EB4400044A14 :1019500002EBC00118222846FEF7E6FB70BD00002E -:10196000D408002010B50120FFF798FB10BD10B57A +:10196000DC08002010B50120FFF798FB10BD10B572 :10197000044621460020FFF797FC10BD10B500205B :101980002949087029484860294888602948C86062 :10199000294808610020486101200876274922482B @@ -417,7 +417,7 @@ :1019F00008601D484860002412E004EB44000A49D6 :101A000001EBC000406838B104EB4401064A02EB28 :101A1000C1014868804701E000BFFEE7601CC4B216 -:101A2000042CEADB10BD0000D40800208513000858 +:101A2000042CEADB10BD0000DC0800208513000850 :101A3000C1130008B1130008D5130008F9110008FC :101A4000651300086511000851130008D110000843 :101A50003D1300086F1900086800002021190008D4 @@ -426,8 +426,8 @@ :101A800061727454696D6572006273705F53746142 :101A900072744175746F54696D6572006273705F22 :101AA00053746F7054696D6572000000CC1A0008A1 -:101AB00000000020880000003C0D0008541B0008B6 -:101AC00088000020B00C00004C0D00080000000051 +:101AB00000000020900000003C0D00085C1B0008A6 +:101AC00090000020B00C00004C0D00080000000049 :101AD00005000000030020030000000000000000DB :101AE00000000000000000000000000000000000F6 :101AF00000000000000000000000000000000000E6 @@ -436,6 +436,6 @@ :101B20000000000001020304010203040607080983 :101B30000204060800000000000000000000000091 :101B40000000000000000000000000000000000095 -:041B50000000000091 +:0C1B500000000000000000000000000089 :04000005080000ED02 :00000001FF diff --git a/Project/Output/TianyunV1.map b/Project/Output/TianyunV1.map index b08a7b6..fc6f96e 100644 --- a/Project/Output/TianyunV1.map +++ b/Project/Output/TianyunV1.map @@ -499,7 +499,26 @@ Section Cross References dehy_test.o(i.dehy_speed_up) refers to mw_soft_timer.o(i.get_systick_ms) for get_systick_ms dehy_test.o(i.dehy_speed_up) refers to dehy_test.o(i.motor_speed_set) for motor_speed_set dehy_test.o(i.dehy_speed_up) refers to dehy_test.o(.data) for add_speed_state + dehy_test.o(i.get_imu_data) refers to dehy_test.o(.data) for rt_imu_data dehy_test.o(i.motor_speed_set) refers to dehy_test.o(.data) for speed_set_val + dehy_test.o(i.supershake_record_init) refers to memseta.o(.text) for __aeabi_memclr + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_mid_dehy_supershake_value) for get_set_mid_dehy_supershake_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_mid_dehy_speed_value) for get_set_mid_dehy_speed_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_1_dehy_supershake_value) for get_set_high_1_dehy_supershake_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_1_dehy_speed_value) for get_set_high_1_dehy_speed_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_2_dehy_supershake_value) for get_set_high_2_dehy_supershake_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_2_dehy_speed_value) for get_set_high_2_dehy_speed_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_3_dehy_supershake_value) for get_set_high_3_dehy_supershake_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_3_dehy_speed_value) for get_set_high_3_dehy_speed_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_4_dehy_supershake_value) for get_set_high_4_dehy_supershake_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(i.get_set_high_4_dehy_speed_value) for get_set_high_4_dehy_speed_value + dehy_test.o(i.supershake_record_init) refers to dehy_test.o(.bss) for supershake_record + dehy_test.o(i.supershake_speed_limit) refers to dehy_test.o(i.supershake_record_init) for supershake_record_init + dehy_test.o(i.supershake_speed_limit) refers to dehy_test.o(i.get_supershake_detect_cmd) for get_supershake_detect_cmd + dehy_test.o(i.supershake_speed_limit) refers to mw_soft_timer.o(i.get_systick_ms) for get_systick_ms + dehy_test.o(i.supershake_speed_limit) refers to dehy_test.o(i.get_set_high_4_dehy_speed_value) for get_set_high_4_dehy_speed_value + dehy_test.o(i.supershake_speed_limit) refers to dehy_test.o(i.get_imu_data) for get_imu_data + dehy_test.o(i.supershake_speed_limit) refers to dehy_test.o(.data) for supershake_limit_speed_state entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000F) for __rt_final_cpp entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$00000011) for __rt_final_exit entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry12b.o(.ARM.Collect$$$$0000000E) for __rt_lib_shutdown_fini @@ -1366,6 +1385,21 @@ Removing Unused input sections from the image. Removing w25q64.o(i.W25Q64_SectorErase), (50 bytes). Removing w25q64.o(i.W25Q64_WaitBusy), (48 bytes). Removing w25q64.o(i.W25Q64_WriteEnable), (18 bytes). + Removing dehy_test.o(i.get_imu_data), (12 bytes). + Removing dehy_test.o(i.get_set_high_1_dehy_speed_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_1_dehy_supershake_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_2_dehy_speed_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_2_dehy_supershake_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_3_dehy_speed_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_3_dehy_supershake_value), (4 bytes). + Removing dehy_test.o(i.get_set_high_4_dehy_speed_value), (6 bytes). + Removing dehy_test.o(i.get_set_high_4_dehy_supershake_value), (4 bytes). + Removing dehy_test.o(i.get_set_mid_dehy_speed_value), (6 bytes). + Removing dehy_test.o(i.get_set_mid_dehy_supershake_value), (6 bytes). + Removing dehy_test.o(i.get_supershake_detect_cmd), (4 bytes). + Removing dehy_test.o(i.supershake_record_init), (144 bytes). + Removing dehy_test.o(i.supershake_speed_limit), (100 bytes). + Removing dehy_test.o(.bss), (60 bytes). Removing dadd.o(.text), (334 bytes). Removing dmul.o(.text), (228 bytes). Removing ddiv.o(.text), (222 bytes). @@ -1373,7 +1407,7 @@ Removing Unused input sections from the image. Removing cdrcmple.o(.text), (48 bytes). Removing depilogue.o(.text), (186 bytes). -603 unused section(s) (total 28304 bytes) removed from the image. +618 unused section(s) (total 28680 bytes) removed from the image. ============================================================================== @@ -1385,38 +1419,38 @@ Image Symbol Table ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE - ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE + ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE - ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE + ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 useno.o ABSOLUTE @@ -1620,20 +1654,24 @@ Image Symbol Table APBAHBPrescTable 0x20000054 Data 16 stm32f10x_rcc.o(.data) ADCPrescTable 0x20000064 Data 4 stm32f10x_rcc.o(.data) .data 0x20000068 Section 16 mw_led.o(.data) - .data 0x20000078 Section 14 dehy_test.o(.data) - speed_set_val 0x20000078 Data 2 dehy_test.o(.data) - timetick 0x2000007c Data 4 dehy_test.o(.data) - add_speed_state 0x20000080 Data 1 dehy_test.o(.data) - result_speed 0x20000082 Data 2 dehy_test.o(.data) - target_speed_cache 0x20000084 Data 2 dehy_test.o(.data) - .bss 0x20000088 Section 36 bsp_timer.o(.bss) - s_tTmr 0x20000088 Data 36 bsp_timer.o(.bss) - .bss 0x200000ac Section 2088 bsp_usart.o(.bss) - g_tUart2 0x200000ac Data 40 bsp_usart.o(.bss) - g_TxBuf2 0x200000d4 Data 1024 bsp_usart.o(.bss) - g_RxBuf2 0x200004d4 Data 1024 bsp_usart.o(.bss) - .bss 0x200008d4 Section 96 mw_led.o(.bss) - STACK 0x20000938 Section 1024 startup_stm32f10x_md.o(STACK) + .data 0x20000078 Section 22 dehy_test.o(.data) + supershake_limit_speed_val 0x20000078 Data 2 dehy_test.o(.data) + speed_set_val 0x2000007a Data 2 dehy_test.o(.data) + rt_imu_data 0x2000007c Data 2 dehy_test.o(.data) + supershake_limit_speed_state 0x2000007e Data 1 dehy_test.o(.data) + timetick 0x20000080 Data 4 dehy_test.o(.data) + timetick 0x20000084 Data 4 dehy_test.o(.data) + add_speed_state 0x20000088 Data 1 dehy_test.o(.data) + result_speed 0x2000008a Data 2 dehy_test.o(.data) + target_speed_cache 0x2000008c Data 2 dehy_test.o(.data) + .bss 0x20000090 Section 36 bsp_timer.o(.bss) + s_tTmr 0x20000090 Data 36 bsp_timer.o(.bss) + .bss 0x200000b4 Section 2088 bsp_usart.o(.bss) + g_tUart2 0x200000b4 Data 40 bsp_usart.o(.bss) + g_TxBuf2 0x200000dc Data 1024 bsp_usart.o(.bss) + g_RxBuf2 0x200004dc Data 1024 bsp_usart.o(.bss) + .bss 0x200008dc Section 96 mw_led.o(.bss) + STACK 0x20000940 Section 1024 startup_stm32f10x_md.o(STACK) Global Symbols @@ -1860,8 +1898,8 @@ Image Symbol Table AHBPrescTable 0x20000044 Data 16 system_stm32f10x.o(.data) str_led1_timer 0x20000068 Data 8 mw_led.o(.data) str_rgb_timer 0x20000070 Data 8 mw_led.o(.data) - led_drv_buf 0x200008d4 Data 96 mw_led.o(.bss) - __initial_sp 0x20000d38 Data 0 startup_stm32f10x_md.o(STACK) + led_drv_buf 0x200008dc Data 96 mw_led.o(.bss) + __initial_sp 0x20000d40 Data 0 startup_stm32f10x_md.o(STACK) @@ -1871,27 +1909,27 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001b54, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001b5c, Max: 0x00010000, ABSOLUTE) Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001acc, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x08000000 0x08000000 0x000000ec Data RO 999 RESET startup_stm32f10x_md.o - 0x080000ec 0x080000ec 0x00000000 Code RO 4757 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 5027 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 5030 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 5032 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 5034 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 5035 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 5042 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) - 0x08000100 0x08000100 0x00000000 Code RO 5037 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) - 0x08000100 0x08000100 0x00000000 Code RO 5039 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) - 0x08000100 0x08000100 0x00000004 Code RO 5028 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x080000ec 0x080000ec 0x00000000 Code RO 4828 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 5098 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 5101 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 5103 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 5105 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 5106 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 5113 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 5108 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 5110 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 5099 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) 0x08000104 0x08000104 0x00000024 Code RO 1000 .text startup_stm32f10x_md.o - 0x08000128 0x08000128 0x00000024 Code RO 4760 .text mc_w.l(memcpya.o) - 0x0800014c 0x0800014c 0x0000002c Code RO 5043 .text mc_w.l(uidiv.o) - 0x08000178 0x08000178 0x00000024 Code RO 5058 .text mc_w.l(init.o) + 0x08000128 0x08000128 0x00000024 Code RO 4831 .text mc_w.l(memcpya.o) + 0x0800014c 0x0800014c 0x0000002c Code RO 5114 .text mc_w.l(uidiv.o) + 0x08000178 0x08000178 0x00000024 Code RO 5129 .text mc_w.l(init.o) 0x0800019c 0x0800019c 0x00000116 Code RO 2179 i.GPIO_Init stm32f10x_gpio.o 0x080002b2 0x080002b2 0x00000002 PAD 0x080002b4 0x080002b4 0x00000014 Code RO 1005 i.NVIC_PriorityGroupConfig misc.o @@ -1935,12 +1973,12 @@ Memory Map of the image 0x08000c24 0x08000c24 0x0000000a Code RO 3791 i.USART_ReceiveData stm32f10x_usart.o 0x08000c2e 0x08000c2e 0x00000008 Code RO 3794 i.USART_SendData stm32f10x_usart.o 0x08000c36 0x08000c36 0x000000e6 Code RO 720 i.UartIRQ bsp_usart.o - 0x08000d1c 0x08000d1c 0x00000020 Code RO 4855 i.__0printf$3 mc_w.l(printf3.o) - 0x08000d3c 0x08000d3c 0x0000000e Code RO 5070 i.__scatterload_copy mc_w.l(handlers.o) - 0x08000d4a 0x08000d4a 0x00000002 Code RO 5071 i.__scatterload_null mc_w.l(handlers.o) - 0x08000d4c 0x08000d4c 0x0000000e Code RO 5072 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08000d1c 0x08000d1c 0x00000020 Code RO 4926 i.__0printf$3 mc_w.l(printf3.o) + 0x08000d3c 0x08000d3c 0x0000000e Code RO 5141 i.__scatterload_copy mc_w.l(handlers.o) + 0x08000d4a 0x08000d4a 0x00000002 Code RO 5142 i.__scatterload_null mc_w.l(handlers.o) + 0x08000d4c 0x08000d4c 0x0000000e Code RO 5143 i.__scatterload_zeroinit mc_w.l(handlers.o) 0x08000d5a 0x08000d5a 0x00000006 Code RO 557 i.__set_PRIMASK bsp_timer.o - 0x08000d60 0x08000d60 0x000001b8 Code RO 4862 i._printf_core mc_w.l(printf3.o) + 0x08000d60 0x08000d60 0x000001b8 Code RO 4933 i._printf_core mc_w.l(printf3.o) 0x08000f18 0x08000f18 0x0000003c Code RO 1 i.app_init main.o 0x08000f54 0x08000f54 0x0000007c Code RO 191 i.app_led_indicator_process app_led.o 0x08000fd0 0x08000fd0 0x00000054 Code RO 192 i.app_led_indicator_state_manage app_led.o @@ -1973,7 +2011,7 @@ Memory Map of the image 0x08001864 0x08001864 0x00000068 Code RO 197 i.led_indicator_run_process app_led.o 0x080018cc 0x080018cc 0x0000001c Code RO 3 i.main main.o 0x080018e8 0x080018e8 0x0000002c Code RO 4 i.middleware_init main.o - 0x08001914 0x08001914 0x0000000c Code RO 4738 i.motor_speed_set dehy_test.o + 0x08001914 0x08001914 0x0000000c Code RO 4750 i.motor_speed_set dehy_test.o 0x08001920 0x08001920 0x0000000a Code RO 4025 i.mw_get_led1_timer_flag mw_led.o 0x0800192a 0x0800192a 0x00000002 PAD 0x0800192c 0x0800192c 0x00000010 Code RO 4026 i.mw_get_led1_timer_obj mw_led.o @@ -1984,10 +2022,10 @@ Memory Map of the image 0x08001a6c 0x08001a6c 0x0000000e Code RO 4032 i.mw_rgb_start_timer mw_led.o 0x08001a7a 0x08001a7a 0x00000030 Data RO 577 .constdata bsp_timer.o 0x08001aaa 0x08001aaa 0x00000002 PAD - 0x08001aac 0x08001aac 0x00000020 Data RO 5068 Region$$Table anon$$obj.o + 0x08001aac 0x08001aac 0x00000020 Data RO 5139 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001acc, Size: 0x00000d38, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001acc, Size: 0x00000d40, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -1998,13 +2036,13 @@ Memory Map of the image 0x20000040 0x08001b0c 0x00000014 Data RW 955 .data system_stm32f10x.o 0x20000054 0x08001b20 0x00000014 Data RW 2628 .data stm32f10x_rcc.o 0x20000068 0x08001b34 0x00000010 Data RW 4034 .data mw_led.o - 0x20000078 0x08001b44 0x0000000e Data RW 4739 .data dehy_test.o - 0x20000086 0x08001b52 0x00000002 PAD - 0x20000088 - 0x00000024 Zero RW 576 .bss bsp_timer.o - 0x200000ac - 0x00000828 Zero RW 730 .bss bsp_usart.o - 0x200008d4 - 0x00000060 Zero RW 4033 .bss mw_led.o - 0x20000934 0x08001b52 0x00000004 PAD - 0x20000938 - 0x00000400 Zero RW 997 STACK startup_stm32f10x_md.o + 0x20000078 0x08001b44 0x00000016 Data RW 4754 .data dehy_test.o + 0x2000008e 0x08001b5a 0x00000002 PAD + 0x20000090 - 0x00000024 Zero RW 576 .bss bsp_timer.o + 0x200000b4 - 0x00000828 Zero RW 730 .bss bsp_usart.o + 0x200008dc - 0x00000060 Zero RW 4033 .bss mw_led.o + 0x2000093c 0x08001b5a 0x00000004 PAD + 0x20000940 - 0x00000400 Zero RW 997 STACK startup_stm32f10x_md.o ============================================================================== @@ -2022,7 +2060,7 @@ Image component sizes 672 134 48 32 36 44105 bsp_timer.o 478 36 0 4 2088 6070 bsp_usart.o 0 0 0 0 0 32 core_cm3.o - 264 22 0 14 0 2366 dehy_test.o + 264 22 0 22 0 3622 dehy_test.o 60 4 0 0 0 572 interrupt_handler.o 204 120 0 0 0 220839 main.o 20 10 0 0 0 675 misc.o @@ -2036,7 +2074,7 @@ Image component sizes 328 28 0 20 0 3161 system_stm32f10x.o ---------------------------------------------------------------------- - 5900 770 318 136 3248 602651 Object Totals + 5900 770 318 144 3248 603907 Object Totals 0 0 32 0 0 0 (incl. Generated) 10 0 2 4 4 0 (incl. Padding) @@ -2079,15 +2117,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 6542 800 318 136 3248 599147 Grand Totals - 6542 800 318 136 3248 599147 ELF Image Totals - 6542 800 318 136 0 0 ROM Totals + 6542 800 318 144 3248 600403 Grand Totals + 6542 800 318 144 3248 600403 ELF Image Totals + 6542 800 318 144 0 0 ROM Totals ============================================================================== Total RO Size (Code + RO Data) 6860 ( 6.70kB) - Total RW Size (RW Data + ZI Data) 3384 ( 3.30kB) - Total ROM Size (Code + RO Data + RW Data) 6996 ( 6.83kB) + Total RW Size (RW Data + ZI Data) 3392 ( 3.31kB) + Total ROM Size (Code + RO Data + RW Data) 7004 ( 6.84kB) ==============================================================================