diff --git a/.application.c.swp b/.application.c.swp deleted file mode 100644 index 099c73e..0000000 Binary files a/.application.c.swp and /dev/null differ diff --git a/Debug/RTS-Lab.elf b/Debug/RTS-Lab.elf index 2b38c18..ff69bd6 100644 Binary files a/Debug/RTS-Lab.elf and b/Debug/RTS-Lab.elf differ diff --git a/Debug/RTS-Lab.map b/Debug/RTS-Lab.map index 7ee31e2..919c66e 100644 --- a/Debug/RTS-Lab.map +++ b/Debug/RTS-Lab.map @@ -1,15 +1,65 @@ +Archive member included to satisfy reference by file (symbol) + +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + Debug/application.o (sprintf) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) (_impure_ptr) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) (_svfprintf_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (_printf_i) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (memchr) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (memcpy) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (memmove) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (_free_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (_malloc_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) (_realloc_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) (_sbrk_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) (__malloc_lock) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) (_malloc_usable_size_r) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) (errno) +c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) (__retarget_lock_acquire_recursive) Allocating common symbols Common symbol size file +__lock___atexit_recursive_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___arc4random_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +errno 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) otable 0xc Debug/TinyTimber.o upcoming 0x4 Debug/TinyTimber.o threads 0x50 Debug/TinyTimber.o +__lock___env_recursive_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___sinit_recursive_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) mtable 0xc Debug/TinyTimber.o +__lock___malloc_recursive_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) thread0 0x14 Debug/TinyTimber.o messages 0x2d0 Debug/TinyTimber.o __heap_end 0x4 Debug/TinyTimber.o +__lock___at_quick_exit_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) stacks 0x8000 Debug/TinyTimber.o +__lock___dd_hash_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___tz_mutex 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___sfp_recursive_mutex + 0x1 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) Memory Configuration @@ -33,6 +83,7 @@ LOAD Debug/stm32f4xx_tim.o LOAD Debug/stm32f4xx_usart.o LOAD Debug/startup.o LOAD Debug/application.o +LOAD Debug/semaphore.o LOAD c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libstdc++_nano.a LOAD c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libm.a START GROUP @@ -44,7 +95,7 @@ LOAD c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/thumb/v LOAD c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a END GROUP -.text 0x20000000 0x6d70 +.text 0x20000000 0x7e20 0x20000000 . = ALIGN (0x4) *(.start_section) .start_section @@ -344,107 +395,290 @@ END GROUP 0x200066b6 USART_GetITStatus 0x2000676c USART_ClearITPendingBit .text 0x200067a8 0x32c Debug/startup.o - .text 0x20006ad4 0x158 Debug/application.o + .text 0x20006ad4 0x548 Debug/application.o 0x20006ad4 receiver 0x20006b24 reader - 0x20006b6c startApp - 0x20006bec main + 0x20006c98 startApp + 0x20006ce8 tick + 0x20006d50 upVolume + 0x20006db8 downVolume + 0x20006e20 mute + 0x20006e98 enableDeadlineTG + 0x20006ee8 backgroundLoop + 0x20006f28 increaseLoad + 0x20006f70 decreaseLoad + 0x20006fc0 enableDeadlineLD + 0x20006fec main + .text 0x2000701c 0x106 Debug/semaphore.o + 0x2000701c c_enqueue + 0x20007068 c_dequeue + 0x20007092 Wait + 0x200070dc Signal + .text 0x20007122 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + .text 0x20007122 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + .text 0x20007122 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .text 0x20007122 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + *fill* 0x20007122 0xe + .text 0x20007130 0xa0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + 0x20007130 memchr + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + .text 0x200071d0 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) *(.text.*) + .text._sprintf_r + 0x200071d0 0x38 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + 0x200071d0 _sprintf_r + 0x200071d0 _siprintf_r + .text.sprintf 0x20007208 0x40 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + 0x20007208 siprintf + 0x20007208 sprintf + .text.__ssputs_r + 0x20007248 0xb6 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x20007248 __ssputs_r + .text.__ssprint_r + 0x200072fe 0xf6 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x200072fe __ssprint_r + .text._svfprintf_r + 0x200073f4 0x200 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x200073f4 _svfiprintf_r + 0x200073f4 _svfprintf_r + .text._printf_common + 0x200075f4 0xda c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x200075f4 _printf_common + *fill* 0x200076ce 0x2 + .text._printf_i + 0x200076d0 0x24c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x200076d0 _printf_i + .text.memcpy 0x2000791c 0x1c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + 0x2000791c memcpy + .text.memmove 0x20007938 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + 0x20007938 memmove + .text._free_r 0x2000796c 0xa0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + 0x2000796c _free_r + .text._malloc_r + 0x20007a0c 0xb4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + 0x20007a0c _malloc_r + .text._realloc_r + 0x20007ac0 0x4c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + 0x20007ac0 _realloc_r + .text._sbrk_r 0x20007b0c 0x20 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + 0x20007b0c _sbrk_r + .text.__malloc_lock + 0x20007b2c 0xc c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + 0x20007b2c __malloc_lock + .text.__malloc_unlock + 0x20007b38 0xc c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + 0x20007b38 __malloc_unlock + .text._malloc_usable_size_r + 0x20007b44 0x10 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + 0x20007b44 _malloc_usable_size_r + .text.cleanup_glue + 0x20007b54 0x1a c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + 0x20007b54 cleanup_glue + *fill* 0x20007b6e 0x2 + .text._reclaim_reent + 0x20007b70 0xb8 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + 0x20007b70 _reclaim_reent + .text.__retarget_lock_init + 0x20007c28 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c28 __retarget_lock_init + .text.__retarget_lock_init_recursive + 0x20007c2a 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c2a __retarget_lock_init_recursive + .text.__retarget_lock_close + 0x20007c2c 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c2c __retarget_lock_close + .text.__retarget_lock_close_recursive + 0x20007c2e 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c2e __retarget_lock_close_recursive + .text.__retarget_lock_acquire + 0x20007c30 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c30 __retarget_lock_acquire + .text.__retarget_lock_acquire_recursive + 0x20007c32 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c32 __retarget_lock_acquire_recursive + .text.__retarget_lock_try_acquire + 0x20007c34 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c34 __retarget_lock_try_acquire + .text.__retarget_lock_try_acquire_recursive + 0x20007c38 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c38 __retarget_lock_try_acquire_recursive + .text.__retarget_lock_release + 0x20007c3c 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c3c __retarget_lock_release + .text.__retarget_lock_release_recursive + 0x20007c3e 0x2 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x20007c3e __retarget_lock_release_recursive *(.rodata) - .rodata 0x20006c2c 0x81 Debug/TinyTimber.o - *fill* 0x20006cad 0x3 - .rodata 0x20006cb0 0x8a Debug/canTinyTimber.o - *fill* 0x20006d3a 0x2 - .rodata 0x20006d3c 0x31 Debug/application.o + .rodata 0x20007c40 0x81 Debug/TinyTimber.o + *fill* 0x20007cc1 0x3 + .rodata 0x20007cc4 0x8a Debug/canTinyTimber.o + *fill* 0x20007d4e 0x2 + .rodata 0x20007d50 0x97 Debug/application.o *(.rodata*) + *fill* 0x20007de7 0x1 + .rodata._global_impure_ptr + 0x20007de8 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + 0x20007de8 _global_impure_ptr + .rodata._svfprintf_r.str1.1 + 0x20007dec 0x11 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .rodata._printf_i.str1.1 + 0x20007dfd 0x22 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) *(.glue_7) - .glue_7 0x20006d6d 0x0 linker stubs + .glue_7 0x20007e1f 0x0 linker stubs *(.glue_7t) - .glue_7t 0x20006d6d 0x0 linker stubs - 0x20006d70 . = ALIGN (0x4) - *fill* 0x20006d6d 0x3 + .glue_7t 0x20007e1f 0x0 linker stubs + 0x20007e20 . = ALIGN (0x4) + *fill* 0x20007e1f 0x1 -.vfp11_veneer 0x20006d70 0x0 - .vfp11_veneer 0x20006d70 0x0 linker stubs +.vfp11_veneer 0x20007e20 0x0 + .vfp11_veneer 0x20007e20 0x0 linker stubs -.v4_bx 0x20006d70 0x0 - .v4_bx 0x20006d70 0x0 linker stubs +.v4_bx 0x20007e20 0x0 + .v4_bx 0x20007e20 0x0 linker stubs -.iplt 0x20006d70 0x0 - .iplt 0x20006d70 0x0 Debug/dispatch.o +.iplt 0x20007e20 0x0 + .iplt 0x20007e20 0x0 Debug/dispatch.o -.rel.dyn 0x20006d70 0x0 - .rel.iplt 0x20006d70 0x0 Debug/dispatch.o +.rel.dyn 0x20007e20 0x0 + .rel.iplt 0x20007e20 0x0 Debug/dispatch.o -.data 0x20006d70 0x560 - 0x20006d70 . = ALIGN (0x4) +.data 0x20007e20 0x610 + 0x20007e20 . = ALIGN (0x4) *(.data) - .data 0x20006d70 0x84 Debug/dispatch.o - .data 0x20006df4 0x24 Debug/TinyTimber.o - 0x20006df4 hex - 0x20006e08 msgPool - 0x20006e0c threadPool - 0x20006e10 activeStack - 0x20006e14 current - .data 0x20006e18 0x0 Debug/canTinyTimber.o - .data 0x20006e18 0x0 Debug/sciTinyTimber.o - .data 0x20006e18 0x0 Debug/stm32f4xx_can.o - .data 0x20006e18 0x0 Debug/stm32f4xx_dac.o - .data 0x20006e18 0x0 Debug/stm32f4xx_exti.o - .data 0x20006e18 0x0 Debug/stm32f4xx_gpio.o - .data 0x20006e18 0x10 Debug/stm32f4xx_rcc.o - .data 0x20006e28 0x0 Debug/stm32f4xx_syscfg.o - .data 0x20006e28 0x0 Debug/stm32f4xx_tim.o - .data 0x20006e28 0x0 Debug/stm32f4xx_usart.o - .data 0x20006e28 0x0 Debug/startup.o - .data 0x20006e28 0x4a8 Debug/application.o - 0x20006e28 app - 0x20006e38 sci0 - 0x20007258 can0 + .data 0x20007e20 0x84 Debug/dispatch.o + .data 0x20007ea4 0x24 Debug/TinyTimber.o + 0x20007ea4 hex + 0x20007eb8 msgPool + 0x20007ebc threadPool + 0x20007ec0 activeStack + 0x20007ec4 current + .data 0x20007ec8 0x0 Debug/canTinyTimber.o + .data 0x20007ec8 0x0 Debug/sciTinyTimber.o + .data 0x20007ec8 0x0 Debug/stm32f4xx_can.o + .data 0x20007ec8 0x0 Debug/stm32f4xx_dac.o + .data 0x20007ec8 0x0 Debug/stm32f4xx_exti.o + .data 0x20007ec8 0x0 Debug/stm32f4xx_gpio.o + .data 0x20007ec8 0x10 Debug/stm32f4xx_rcc.o + .data 0x20007ed8 0x0 Debug/stm32f4xx_syscfg.o + .data 0x20007ed8 0x0 Debug/stm32f4xx_tim.o + .data 0x20007ed8 0x0 Debug/stm32f4xx_usart.o + .data 0x20007ed8 0x0 Debug/startup.o + .data 0x20007ed8 0x4f4 Debug/application.o + 0x20007ed8 dac + 0x20007edc app + 0x20007eec sci0 + 0x2000830c muteVolumeSem + 0x2000831c can0 + 0x20008394 tg + 0x200083bc ld + .data 0x200083cc 0x0 Debug/semaphore.o + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + .data 0x200083cc 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) *(.data.*) - 0x200072d0 . = ALIGN (0x4) + .data._impure_ptr + 0x200083cc 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + 0x200083cc _impure_ptr + .data.impure_data + 0x200083d0 0x60 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + 0x20008430 . = ALIGN (0x4) -.igot.plt 0x200072d0 0x0 - .igot.plt 0x200072d0 0x0 Debug/dispatch.o +.igot.plt 0x20008430 0x0 + .igot.plt 0x20008430 0x0 Debug/dispatch.o -.bss 0x200072d0 0x8370 - 0x200072d0 . = ALIGN (0x4) - 0x200072d0 _sbss = . +.bss 0x20008430 0x8388 + 0x20008430 . = ALIGN (0x4) + 0x20008430 _sbss = . *(.bss) - .bss 0x200072d0 0x0 Debug/dispatch.o - .bss 0x200072d0 0x18 Debug/TinyTimber.o - 0x200072d0 msgQ - 0x200072d4 timerQ - 0x200072d8 runAsHardware - 0x200072dc doIRQSchedule - 0x200072e0 timestamp - 0x200072e4 overflows - .bss 0x200072e8 0x0 Debug/canTinyTimber.o - .bss 0x200072e8 0x0 Debug/sciTinyTimber.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_can.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_dac.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_exti.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_gpio.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_rcc.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_syscfg.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_tim.o - .bss 0x200072e8 0x0 Debug/stm32f4xx_usart.o - .bss 0x200072e8 0x0 Debug/startup.o - .bss 0x200072e8 0x0 Debug/application.o + .bss 0x20008430 0x0 Debug/dispatch.o + .bss 0x20008430 0x18 Debug/TinyTimber.o + 0x20008430 msgQ + 0x20008434 timerQ + 0x20008438 runAsHardware + 0x2000843c doIRQSchedule + 0x20008440 timestamp + 0x20008444 overflows + .bss 0x20008448 0x0 Debug/canTinyTimber.o + .bss 0x20008448 0x0 Debug/sciTinyTimber.o + .bss 0x20008448 0x0 Debug/stm32f4xx_can.o + .bss 0x20008448 0x0 Debug/stm32f4xx_dac.o + .bss 0x20008448 0x0 Debug/stm32f4xx_exti.o + .bss 0x20008448 0x0 Debug/stm32f4xx_gpio.o + .bss 0x20008448 0x0 Debug/stm32f4xx_rcc.o + .bss 0x20008448 0x0 Debug/stm32f4xx_syscfg.o + .bss 0x20008448 0x0 Debug/stm32f4xx_tim.o + .bss 0x20008448 0x0 Debug/stm32f4xx_usart.o + .bss 0x20008448 0x0 Debug/startup.o + .bss 0x20008448 0x0 Debug/application.o + .bss 0x20008448 0x0 Debug/semaphore.o + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + .bss 0x20008448 0x0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) *(.bss.*) + .bss.__malloc_free_list + 0x20008448 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + 0x20008448 __malloc_free_list + .bss.__malloc_sbrk_start + 0x2000844c 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + 0x2000844c __malloc_sbrk_start *(COMMON) - COMMON 0x200072e8 0x8358 Debug/TinyTimber.o - 0x200072e8 otable - 0x200072f4 upcoming - 0x200072f8 threads - 0x20007348 mtable - 0x20007354 thread0 - 0x20007368 messages - 0x20007638 __heap_end - 0x20007640 stacks - 0x2000f640 . = ALIGN (0x4) - 0x2000f640 _ebss = . - 0x2000f640 PROVIDE (end = _ebss) + COMMON 0x20008450 0x8358 Debug/TinyTimber.o + 0x20008450 otable + 0x2000845c upcoming + 0x20008460 threads + 0x200084b0 mtable + 0x200084bc thread0 + 0x200084d0 messages + 0x200087a0 __heap_end + 0x200087a8 stacks + COMMON 0x200107a8 0x4 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + 0x200107a8 errno + COMMON 0x200107ac 0x9 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + 0x200107ac __lock___atexit_recursive_mutex + 0x200107ad __lock___arc4random_mutex + 0x200107ae __lock___env_recursive_mutex + 0x200107af __lock___sinit_recursive_mutex + 0x200107b0 __lock___malloc_recursive_mutex + 0x200107b1 __lock___at_quick_exit_mutex + 0x200107b2 __lock___dd_hash_mutex + 0x200107b3 __lock___tz_mutex + 0x200107b4 __lock___sfp_recursive_mutex + 0x200107b8 . = ALIGN (0x4) + *fill* 0x200107b5 0x3 + 0x200107b8 _ebss = . + 0x200107b8 PROVIDE (end = _ebss) [!provide] PROVIDE (_end = _ebss) OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) @@ -478,6 +712,38 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) 0x00000261 0x34 Debug/startup.o .ARM.attributes 0x00000295 0x34 Debug/application.o + .ARM.attributes + 0x000002c9 0x34 Debug/semaphore.o + .ARM.attributes + 0x000002fd 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + .ARM.attributes + 0x00000331 0x32 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x00000363 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .ARM.attributes + 0x00000397 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + .ARM.attributes + 0x000003cb 0x1c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + .ARM.attributes + 0x000003e7 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + .ARM.attributes + 0x0000041b 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + .ARM.attributes + 0x0000044f 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + .ARM.attributes + 0x00000483 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + .ARM.attributes + 0x000004b7 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + .ARM.attributes + 0x000004eb 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + .ARM.attributes + 0x0000051f 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + .ARM.attributes + 0x00000553 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + .ARM.attributes + 0x00000587 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + .ARM.attributes + 0x000005bb 0x34 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) .comment 0x00000000 0x79 .comment 0x00000000 0x79 Debug/TinyTimber.o @@ -494,8 +760,9 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) .comment 0x00000079 0x7a Debug/stm32f4xx_usart.o .comment 0x00000079 0x7a Debug/startup.o .comment 0x00000079 0x7a Debug/application.o + .comment 0x00000079 0x7a Debug/semaphore.o -.debug_info 0x00000000 0xa261 +.debug_info 0x00000000 0xa917 .debug_info 0x00000000 0x183c Debug/TinyTimber.o .debug_info 0x0000183c 0xdb4 Debug/canTinyTimber.o .debug_info 0x000025f0 0x9d1 Debug/sciTinyTimber.o @@ -508,9 +775,10 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) .debug_info 0x00005e8a 0x1e26 Debug/stm32f4xx_tim.o .debug_info 0x00007cb0 0xa68 Debug/stm32f4xx_usart.o .debug_info 0x00008718 0xade Debug/startup.o - .debug_info 0x000091f6 0x106b Debug/application.o + .debug_info 0x000091f6 0x1446 Debug/application.o + .debug_info 0x0000a63c 0x2db Debug/semaphore.o -.debug_abbrev 0x00000000 0x1dc5 +.debug_abbrev 0x00000000 0x1f68 .debug_abbrev 0x00000000 0x4f2 Debug/TinyTimber.o .debug_abbrev 0x000004f2 0x277 Debug/canTinyTimber.o .debug_abbrev 0x00000769 0x273 Debug/sciTinyTimber.o @@ -523,9 +791,10 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) .debug_abbrev 0x000014fa 0x1c2 Debug/stm32f4xx_tim.o .debug_abbrev 0x000016bc 0x1a8 Debug/stm32f4xx_usart.o .debug_abbrev 0x00001864 0x286 Debug/startup.o - .debug_abbrev 0x00001aea 0x2db Debug/application.o + .debug_abbrev 0x00001aea 0x311 Debug/application.o + .debug_abbrev 0x00001dfb 0x16d Debug/semaphore.o -.debug_aranges 0x00000000 0x1a8 +.debug_aranges 0x00000000 0x1c8 .debug_aranges 0x00000000 0x20 Debug/TinyTimber.o .debug_aranges @@ -552,8 +821,10 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) 0x00000160 0x28 Debug/startup.o .debug_aranges 0x00000188 0x20 Debug/application.o + .debug_aranges + 0x000001a8 0x20 Debug/semaphore.o -.debug_line 0x00000000 0x3ef8 +.debug_line 0x00000000 0x41ac .debug_line 0x00000000 0x9f9 Debug/TinyTimber.o .debug_line 0x000009f9 0x393 Debug/canTinyTimber.o .debug_line 0x00000d8c 0x257 Debug/sciTinyTimber.o @@ -566,37 +837,40 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) .debug_line 0x000029ce 0xb05 Debug/stm32f4xx_tim.o .debug_line 0x000034d3 0x4f2 Debug/stm32f4xx_usart.o .debug_line 0x000039c5 0x2eb Debug/startup.o - .debug_line 0x00003cb0 0x248 Debug/application.o + .debug_line 0x00003cb0 0x369 Debug/application.o + .debug_line 0x00004019 0x193 Debug/semaphore.o -.debug_str 0x00000000 0x3453 - .debug_str 0x00000000 0xbc4 Debug/TinyTimber.o +.debug_str 0x00000000 0x3576 + .debug_str 0x00000000 0xbbc Debug/TinyTimber.o 0xc67 (size before relaxing) - .debug_str 0x00000bc4 0x210 Debug/canTinyTimber.o + .debug_str 0x00000bbc 0x210 Debug/canTinyTimber.o 0xa28 (size before relaxing) - .debug_str 0x00000dd4 0x4b Debug/sciTinyTimber.o + .debug_str 0x00000dcc 0x4b Debug/sciTinyTimber.o 0x887 (size before relaxing) - .debug_str 0x00000e1f 0x393 Debug/stm32f4xx_can.o + .debug_str 0x00000e17 0x393 Debug/stm32f4xx_can.o 0x752 (size before relaxing) - .debug_str 0x000011b2 0x26d Debug/stm32f4xx_dac.o + .debug_str 0x000011aa 0x26d Debug/stm32f4xx_dac.o 0x467 (size before relaxing) - .debug_str 0x0000141f 0x19f Debug/stm32f4xx_exti.o + .debug_str 0x00001417 0x19f Debug/stm32f4xx_exti.o 0x360 (size before relaxing) - .debug_str 0x000015be 0x29f Debug/stm32f4xx_gpio.o + .debug_str 0x000015b6 0x29f Debug/stm32f4xx_gpio.o 0x4b7 (size before relaxing) - .debug_str 0x0000185d 0x753 Debug/stm32f4xx_rcc.o + .debug_str 0x00001855 0x753 Debug/stm32f4xx_rcc.o 0x9a9 (size before relaxing) - .debug_str 0x00001fb0 0x14f Debug/stm32f4xx_syscfg.o + .debug_str 0x00001fa8 0x14f Debug/stm32f4xx_syscfg.o 0x322 (size before relaxing) - .debug_str 0x000020ff 0xa58 Debug/stm32f4xx_tim.o + .debug_str 0x000020f7 0xa58 Debug/stm32f4xx_tim.o 0xde4 (size before relaxing) - .debug_str 0x00002b57 0x3f6 Debug/stm32f4xx_usart.o + .debug_str 0x00002b4f 0x3f6 Debug/stm32f4xx_usart.o 0x6a3 (size before relaxing) - .debug_str 0x00002f4d 0x104 Debug/startup.o + .debug_str 0x00002f45 0x104 Debug/startup.o 0x7aa (size before relaxing) - .debug_str 0x00003051 0x402 Debug/application.o - 0x79c (size before relaxing) + .debug_str 0x00003049 0x4fa Debug/application.o + 0x8b3 (size before relaxing) + .debug_str 0x00003543 0x33 Debug/semaphore.o + 0x239 (size before relaxing) -.debug_frame 0x00000000 0x2fb8 +.debug_frame 0x00000000 0x3584 .debug_frame 0x00000000 0x57c Debug/TinyTimber.o .debug_frame 0x0000057c 0x100 Debug/canTinyTimber.o .debug_frame 0x0000067c 0x11c Debug/sciTinyTimber.o @@ -609,7 +883,21 @@ OUTPUT(Debug/RTS-Lab.elf elf32-littlearm) .debug_frame 0x00001af0 0xe54 Debug/stm32f4xx_tim.o .debug_frame 0x00002944 0x490 Debug/stm32f4xx_usart.o .debug_frame 0x00002dd4 0x14c Debug/startup.o - .debug_frame 0x00002f20 0x98 Debug/application.o + .debug_frame 0x00002f20 0x1e4 Debug/application.o + .debug_frame 0x00003104 0xa8 Debug/semaphore.o + .debug_frame 0x000031ac 0x6c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + .debug_frame 0x00003218 0x90 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + .debug_frame 0x000032a8 0x60 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + .debug_frame 0x00003308 0x28 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + .debug_frame 0x00003330 0x28 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + .debug_frame 0x00003358 0x38 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + .debug_frame 0x00003390 0x30 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + .debug_frame 0x000033c0 0x3c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + .debug_frame 0x000033fc 0x2c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + .debug_frame 0x00003428 0x30 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + .debug_frame 0x00003458 0x20 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + .debug_frame 0x00003478 0x5c c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + .debug_frame 0x000034d4 0xb0 c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) .debug_ranges 0x00000000 0x18 .debug_ranges 0x00000000 0x18 Debug/startup.o @@ -787,6 +1075,8 @@ SYSCFG_EXTILineConfig Debug/stm32f4xx_syscfg.o SYSCFG_GetCompensationCellStatus Debug/stm32f4xx_syscfg.o SYSCFG_MemoryRemapConfig Debug/stm32f4xx_syscfg.o SYSCFG_MemorySwappingBank Debug/stm32f4xx_syscfg.o +Signal Debug/semaphore.o + Debug/application.o TIMER_INIT Debug/TinyTimber.o TIM_ARRPreloadConfig Debug/stm32f4xx_tim.o TIM_BDTRConfig Debug/stm32f4xx_tim.o @@ -922,47 +1212,135 @@ USART_SmartCardCmd Debug/stm32f4xx_usart.o USART_SmartCardNACKCmd Debug/stm32f4xx_usart.o USART_StructInit Debug/stm32f4xx_usart.o USART_WakeUpConfig Debug/stm32f4xx_usart.o +Wait Debug/semaphore.o + Debug/application.o __heap_end Debug/TinyTimber.o +__lock___arc4random_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___at_quick_exit_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___atexit_recursive_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___dd_hash_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___env_recursive_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___malloc_recursive_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) +__lock___sfp_recursive_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___sinit_recursive_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__lock___tz_mutex c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__malloc_free_list c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) +__malloc_lock c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) +__malloc_sbrk_start c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) +__malloc_unlock c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) __pendSV_dispatch Debug/TinyTimber.o +__retarget_lock_acquire c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_acquire_recursive c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) +__retarget_lock_close c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_close_recursive c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_init c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_init_recursive c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_release c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_release_recursive c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-mlock.o) +__retarget_lock_try_acquire c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__retarget_lock_try_acquire_recursive c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-lock.o) +__sf_fake_stderr c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) +__sf_fake_stdin c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) +__sf_fake_stdout c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) +__ssprint_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +__ssputs_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) __svc_dispatch Debug/TinyTimber.o _ebss Debug/startup.o +_free_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-freer.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_global_impure_ptr c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) +_impure_ptr c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-impure.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) +_malloc_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_malloc_usable_size_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-msizer.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) +_printf_common c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) +_printf_float c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_printf_i c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_realloc_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_reclaim_reent c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) _sbrk Debug/TinyTimber.o + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) +_sbrk_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-mallocr.o) _sbss Debug/startup.o +_siprintf_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) +_sprintf_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) +_svfiprintf_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +_svfprintf_r c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) activeStack Debug/TinyTimber.o app Debug/application.o async Debug/TinyTimber.o + Debug/semaphore.o + Debug/application.o Debug/sciTinyTimber.o Debug/canTinyTimber.o +backgroundLoop Debug/application.o +c_dequeue Debug/semaphore.o +c_enqueue Debug/semaphore.o can0 Debug/application.o can_init Debug/canTinyTimber.o - Debug/application.o can_interrupt Debug/canTinyTimber.o - Debug/application.o can_receive Debug/canTinyTimber.o Debug/application.o can_send Debug/canTinyTimber.o - Debug/application.o +cleanup_glue c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) cli Debug/TinyTimber.o current Debug/TinyTimber.o Debug/dispatch.o +dac Debug/application.o +decreaseLoad Debug/application.o dequeue Debug/TinyTimber.o dequeue_pool Debug/TinyTimber.o doIRQSchedule Debug/TinyTimber.o Debug/sciTinyTimber.o Debug/canTinyTimber.o +downVolume Debug/application.o +enableDeadlineLD Debug/application.o +enableDeadlineTG Debug/application.o end Debug/TinyTimber.o enqueueByBaseline Debug/TinyTimber.o enqueueByDeadline Debug/TinyTimber.o +errno c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-reent.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sbrkr.o) hex Debug/TinyTimber.o +increaseLoad Debug/application.o insert Debug/TinyTimber.o install Debug/TinyTimber.o Debug/application.o +ld Debug/application.o main Debug/application.o Debug/startup.o +memchr c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memchr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +memcpy c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memcpy-stub.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-reallocr.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) +memmove c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-memmove.o) + c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-nano-svfprintf.o) messages Debug/TinyTimber.o msgPool Debug/TinyTimber.o msgQ Debug/TinyTimber.o mtable Debug/TinyTimber.o +mute Debug/application.o +muteVolumeSem Debug/application.o otable Debug/TinyTimber.o overflows Debug/TinyTimber.o pop Debug/TinyTimber.o @@ -980,18 +1358,24 @@ sci_write Debug/sciTinyTimber.o sci_writechar Debug/sciTinyTimber.o Debug/application.o sei Debug/TinyTimber.o +siprintf c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) +sprintf c:/cseapp/codelite/tools/gcc-arm/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/lib/thumb/v7e-m+fp/hard\libc_nano.a(lib_a-sprintf.o) + Debug/application.o stacks Debug/TinyTimber.o startApp Debug/application.o startup Debug/startup.o sync Debug/TinyTimber.o Debug/application.o +tg Debug/application.o thread0 Debug/TinyTimber.o threadPool Debug/TinyTimber.o threads Debug/TinyTimber.o +tick Debug/application.o timerQ Debug/TinyTimber.o timestamp Debug/TinyTimber.o tinytimber Debug/TinyTimber.o Debug/application.o +upVolume Debug/application.o upcoming Debug/TinyTimber.o Debug/dispatch.o vect_CAN1 Debug/TinyTimber.o diff --git a/Debug/RTS-Lab.s19 b/Debug/RTS-Lab.s19 index de801a0..b116762 100644 --- a/Debug/RTS-Lab.s19 +++ b/Debug/RTS-Lab.s19 @@ -1,5 +1,5 @@ S014000044656275672F5254532D4C61622E73313995 -S3152000000000BFDFF814D006F048FD06F0EFFD06F03D +S3152000000000BFDFF814D006F048FD06F0EFFF06F03B S3152000001056BDFEE700BF000000C00120314900E0C8 S315200000203149EFF3088020ED108A7246EFF31183F1 S3152000003020E9FC0F2D4FD7F80080C8F800001EE0FD @@ -13,9 +13,9 @@ S315200000A0D8F8000000F095F8144800F075F8D8F854 S315200000B00000006800F08DF80D4800F06DF8134A36 S315200000C0536843F00063536000BFD8F80000B0E8DF S315200000D0FC0F83F311889646B0EC108A80F30888CB -S315200000E070470000706D0020816D0020146E002086 -S315200000F0F16D0020A26D0020BA6D0020C26D002097 -S31520000100F4720020CB6D0020E06D002000ED00E0B1 +S315200000E070470000207E0020317E0020C47E002044 +S315200000F0A17E0020527E00206A7E0020727E002093 +S315200001005C8400207B7E0020907E002000ED00E0B5 S3152000011080B483B000AF0346FB71FB7903F01F0365 S31520000120012202FA03F1064A97F907305B0942F8E1 S31520000130231000BF0C37BD465DF8047B704700BF17 @@ -33,7 +33,7 @@ S315200001E003F00F027B69591C796110498A5C07F17B S315200001F018010B4403F80C2C7B681B097B607B6879 S31520000200002BECD10AE07B69013B7B6107F10C02F4 S315200002107B6913441B78184600F02EF97B69002B66 -S31520000220F1D100BF00BF1837BD4680BDF46D002058 +S31520000220F1D100BF00BF1837BD4680BDA47E002097 S3152000023080B59EB000AF78607B68002B02DA4FF065 S31520000240FF3300E001233B677B683A6F02FB03F331 S315200002507B6000237B6779681C4B83FB01239A1004 @@ -44,15 +44,15 @@ S315200002907B607B68002BDED13B6F002B0EDA2D2096 S315200002A000F0EAF80AE07B6F013B7B6707F10C025E S315200002B07B6F13441B78184600F0DEF87B6F002B0B S315200002C0F1D100BF00BF7837BD4680BD6766666640 -S315200002D0F46D002080B483B000AF10237B607B6870 +S315200002D0A47E002080B483B000AF10237B607B68AF S315200002E083F3118800BF00BF0C37BD465DF8047B41 S315200002F0704780B483B000AF30237B607B6883F384 S31520000300118800BF00BF0C37BD465DF8047B7047DF S3152000031080B584B000AF78600B48FFF73DFF0B4BEC S315200003201B68002B02D1094B094A1A60074B1B6830 S31520000330FB60064B1A687B681344044A1360FB680B -S3152000034018461037BD4680BD2C6C0020387600201C -S3152000035040F6002080B485B000AF786039603B68F5 +S3152000034018461037BD4680BD407C0020A08700207F +S31520000350B807012080B485B000AF786039603B686B S3152000036003F5F95310337A6813607B681B68BB600A S315200003700023FB600AE0FB689B001A46BB68134417 S315200003801A4600231360FB680133FB60FB68332B9E @@ -79,21 +79,21 @@ S315200004C001221A60104B00221A60104B1B68002B69 S315200004D006D00E4B1B680E4A12680021104698471C S315200004E0084B00221A60084B1B68002B01D000F035 S315200004F05DFA054B00221A6000BF80BD000C00404B -S31520000500E0720020D8720020DC72002048730020A0 -S31520000510E872002080B500AF124804F031F8034697 +S3152000050040840020388400203C840020B0840020D1 +S315200005105084002080B500AF124804F031F803461D S315200005201A46114B1A60114B01221A60104B0022F9 S315200005301A60104B5B68002B06D00E4B5B680E4A88 S315200005405268012110469847084B00221A60084B32 S315200005501B68002B01D000F029FA054B00221A60F7 -S3152000056000BF80BD000C0040E0720020D872002041 -S31520000570DC72002048730020E872002080B500AFAE +S3152000056000BF80BD000C004040840020388400205D +S315200005703C840020B08400205084002080B500AF49 S31520000580124803F0FDFF03461A46114B1A60114B21 S3152000059001221A60104B00221A60104B9B68002B18 S315200005A006D00E4B9B680E4A926802211046984749 S315200005B0084B00221A60084B1B68002B01D000F064 S315200005C0F5F9054B00221A6000BF80BD000C0040E3 -S315200005D0E0720020D8720020DC72002048730020D0 -S315200005E0E872002080B485B000AF786039600023BF +S315200005D040840020388400203C840020B084002001 +S315200005E05084002080B485B000AF78603960002345 S315200005F0FB603B681B68BB6004E0BB68FB60BB68B4 S315200006001B68BB60BB68002B05D0BB689A687B68FB S315200006109B689A42F1DD7B68BA681A60FB68002BFA @@ -108,13 +108,13 @@ S31520000690047B704780B584B000AF78607B681B68A8 S315200006A0FB60FB68002B04D0FB681A687B681A6025 S315200006B00CE00948FFF770FD00220221074802F0EE S315200006C028FE0748FFF768FD30BFFDE7FB681846A0 -S315200006D01037BD4680BD00BF446C00200004024098 -S315200006E0506C002080B584B000AF78607B681B68B2 +S315200006D01037BD4680BD00BF587C00200004024074 +S315200006E0647C002080B584B000AF78607B681B688E S315200006F0FB60FB68002B04D0FB681A687B681A60D5 S315200007000CE00948FFF748FD00220221074802F0C5 S3152000071000FE0748FFF740FD30BFFDE7FB6818469F -S315200007201037BD4680BD00BF446C00200004024047 -S315200007305C6C002080B483B000AF786039603B6881 +S315200007201037BD4680BD00BF587C00200004024023 +S31520000730707C002080B483B000AF786039603B685D S315200007401A687B681A603B687A681A6000BF0C37A3 S31520000750BD465DF8047B704780B483B000AF7860F7 S3152000076039603B681A687B689A603B687A681A60C9 @@ -135,10 +135,10 @@ S315200008401B68002B16D00E4803F09AFE03463B6029 S315200008500C4B1B685B683A689A4204DD0022022131 S315200008600A4802F056FD074B1B685B681946044888 S3152000087004F0C5F900F09AF800BF0837BD4680BDE0 -S31520000880000C0040D4720020D072002000040240E8 -S315200008900346024A136010DFF74600BFF4720020B9 +S31520000880000C004034840020308400200004024004 +S315200008900346024A136010DFF74600BF5C8400203F S315200008A00346054A1360054B5B68044A43F08053B0 -S315200008B05360F74600BF00BFF472002000ED00E051 +S315200008B05360F74600BF00BF5C84002000ED00E0D7 S315200008C080B582B000AF7860094B5B68C3F308033C S315200008D0002B03D17868FFF7DBFF02E07868FFF78B S315200008E0DFFFFFF706FD00BF0837BD4680BD00BF0E @@ -151,15 +151,15 @@ S315200009407B68002BD9D0114B1B689A687B689B6803 S31520000950D31A002BD1DD0F48FFF710FF03460E49AF S315200009601846FFF7F9FE0B4B1B68FB6003E0FB689C S315200009701B691B68FB60FB681B69002BF7D1F868B5 -S31520000980FFF79EFFB9E700BF146E0020D07200204B -S31520000990086E0020106E00200C6E002080B500AF7F +S31520000980FFF79EFFB9E700BFC47E00203084002019 +S31520000990B87E0020C07E0020BC7E002080B500AF3F S315200009A000F004F8FFF7A5FC30BFFBE780B582B066 S315200009B000AF144B1B68DB687B60134B1B68002B56 S315200009C01BD0124B1B68002B17D07B68002B07D03F S315200009D00D4B1B689A687B689B68D31A002B0CDA30 S315200009E00A48FFF7CBFE034606491846FFF7B4FE32 S315200009F0044B1B681846FFF763FF00BF0837BD4648 -S31520000A0080BD00BF106E0020D07200200C6E00202A +S31520000A0080BD00BFC07E002030840020BC7E002038 S31520000A1080B588B000AFF860B9607A603B60EFF3CC S31520000A2012833B613B691B09012B14BF0123002361 S31520000A30DBB2FB77FFF74EFC3A48FFF753FEB8616F @@ -177,9 +177,9 @@ S31520000AE016D0174B1B689A68174B1B68DB689B68E8 S31520000AF0D31A002B0CDA1348FFF740FE034612499F S31520000B001846FFF729FE104B1B681846FFF7D8FE3C S31520000B10FB7F002B01D0FFF7ECFBBB691846203783 -S31520000B20BD4680BD086E0020D8720020146E0020BD -S31520000B30E0720020000C0040D47200200004024025 -S31520000B40D07200200C6E0020106E002080B588B078 +S31520000B20BD4680BDB87E002038840020C47E0020CB +S31520000B3040840020000C0040348400200004024041 +S31520000B4030840020BC7E0020C07E002080B588B086 S31520000B5000AFF860B9607A60EFF312833B613B69BE S31520000B601B09012B14BF01230023DBB2FB76FFF701 S31520000B70B1FBFB681B68FB61FB69002B37D003E0E8 @@ -196,7 +196,7 @@ S31520000C107861FFF75FFBFB6800221A60FB685B6860 S31520000C20FB61FB69002B0BD0FB69012B08D0FB680D S31520000C3000225A60FB6900221A61F869FFF740FE1C S31520000C40FB7E002B01D0FFF754FB7B69184620372B -S31520000C50BD4680BD146E002080B586B000AF78609A +S31520000C50BD4680BDC47E002080B586B000AF7860DA S31520000C60EFF31283FB60FB681B09012B14BF0123E2 S31520000C700023DBB2FB74FFF72DFB1F497868FFF7D3 S31520000C808FFD0346002B06D11C497868FFF788FDA7 @@ -206,22 +206,22 @@ S31520000CB012D07B69DB687A689A420DD17B691A6902 S31520000CC07B68DB689A4207D17B690022DA600C498F S31520000CD07868FFF72FFD05E07B699B687B617B6960 S31520000CE0002BE1D1FB7C002B01D0FFF702FB00BFDC -S31520000CF01837BD4680BD00BFD4720020D0720020B8 -S31520000D00086E0020106E0020146E002080B485B07E +S31520000CF01837BD4680BD00BF3484002030840020D4 +S31520000D00B87E0020C07E0020C47E002080B485B03E S31520000D1000AF7860EFF31283FB60FB681B09012BA1 S31520000D2004D0074B1B68DB685B6801E0054B1B683A S31520000D307A68136000BF1437BD465DF8047B7047A0 -S31520000D40146E0020E072002080B485B000AF786079 +S31520000D40C47E00204084002080B485B000AF786047 S31520000D50EFF31283FB60FB681B09012B04D0084BC1 S31520000D601B68DB685B6801E0064B1B687A681268C3 S31520000D709B1A18461437BD465DF8047B704700BFA2 -S31520000D80146E0020E072002080B584B000AFEFF32F +S31520000D80C47E00204084002080B584B000AFEFF3FD S31520000D9012837B607B681B09012B14BF0123002370 S31520000DA0DBB2FB73FFF796FA0C4803F0E9FB034628 S31520000DB0BB60FB7B002B01D0FFF79BFAFB7B002B54 S31520000DC004D0074B1B68DB685B6801E0054B1B689A S31520000DD0BA68D31A18461037BD4680BD000C0040AD -S31520000DE0146E0020E072002080B582B000AF002390 +S31520000DE0C47E00204084002080B582B000AF00235E S31520000DF07B6012E07B685A1C13465B001344DB00C1 S31520000E00444A991843487A6813465B001344DB002A S31520000E10034419607B6801337B607B681C2BE9DD0A @@ -240,9 +240,9 @@ S31520000ED0144B4FF0FF325A60124B00229A60114B8E S31520000EE000221A610F4B0022DA600F48FFF754F9EF S31520000EF00E48FFF751F90E48FFF74EF90A48FFF75B S31520000F004BF90948FFF748F9FFF76AFA00BF083797 -S31520000F10BD4680BD68730020F87200204076002010 -S31520000F20F508002054730020686C00206C6C0020AB -S31520000F30786C002080B586B000AFF860B9601346A3 +S31520000F10BD4680BDD084002060840020A8870020A4 +S31520000F20F5080020BC8400207C7C0020807C0020EA +S31520000F308C7C002080B586B000AFF860B96013467F S31520000F40FB71FB79022B41D8EFF312833B613B699E S31520000F501B09012B14BF01230023DBB2FB75FFF70E S31520000F60B9F9FB79022B0ED0022B10DC002B02D014 @@ -253,15 +253,15 @@ S31520000FA0FFF7FAF830BFFDE7FB791349FA6841F8F5 S31520000FB02320FB791149BA6841F82320FB680122D6 S31520000FC05A60FB7D002B01D0FFF793F900BF18373D S31520000FD0BD4680BDD4C00120AD04002090C00120B4 -S31520000FE0150500209CC001207D050020446C0020B2 -S31520000FF000040240906C0020E87200204873002014 +S31520000FE0150500209CC001207D050020587C00208E +S31520000FF000040240A47C002050840020B0840020FD S3152000100080B586B002AFF860B9607A60FFF762F902 S31520001010FFF7EAFEBB68002B16D00F4803F0B0FAA4 S3152000102003461A460D4B1A600D4B01221A607B6847 S315200010300093BB68FA6800210020FFF7E9FC084B03 S3152000104000221A60FFF7B2FCFFF7A8FC002318461F -S315200010501037BD4680BD00BF000C0040E072002066 -S31520001060D872002080B483B000AF0346FB71FB79B1 +S315200010501037BD4680BD00BF000C004040840020F4 +S315200010603884002080B483B000AF0346FB71FB793F S3152000107003F01F03012202FA03F1064A97F907300B S315200010805B0942F8231000BF0C37BD465DF8047B90 S31520001090704700BF00E100E080B483B000AF034694 @@ -280,8 +280,8 @@ S31520001150002B02D11048FFF71FF807F10C031946A0 S315200011600E4800F007FB0346002B02D10C48FFF780 S3152000117013F802211420FFF78FFF1420FFF772FFC8 S3152000118001220221034801F0C7F800BF1837BD46E7 -S3152000119080BD00BF00640040B06C002000680040A5 -S315200011A0C86C0020B0B58AB002AF786039607B6821 +S3152000119080BD00BF00640040C47C00200068004081 +S315200011A0DC7C0020B0B58AB002AF786039607B68FD S315200011B09B685A49184601F0CDF80346012B02D008 S315200011C05748FEF7E9FF7B68DB69072B00F39F8012 S315200011D07B689B6807F108020021184600F0A2FEF2 @@ -305,7 +305,7 @@ S315200012E0FFF796FB0F4B01221A607B685B6901337F S315200012F05A4203F0070302F0070258BF53427A68A6 S3152000130053617B68DB695A1C7B68DA6102E0064818 S31520001310FEF742FF00BF2037BD46B0BD03000012D6 -S31520001320E06C0020DC720020086D002090B484B0B0 +S31520001320F47C00203C8400201C7D002090B484B0F6 S3152000133000AF786039607B68DB69002B55DD7B6800 S315200013409A69796813469B0013445B0013440B4447 S3152000135020331A783B681A707B689A697968134635 @@ -328,7 +328,7 @@ S3152000145003F8152C97F82730013387F827303B6897 S315200014609B7897F827209A42E8D307F10803194674 S31520001470386A00F0D7FB0346FB77FB7F042B04D1A9 S315200014800448FEF789FE012300E00023184628378A -S31520001490BD4680BD286D002080B483B000AF0346D2 +S31520001490BD4680BD3C7D002080B483B000AF0346AE S315200014A0FB71FB7903F01F03012202FA03F1064ABE S315200014B097F907305B0942F8231000BF0C37BD4669 S315200014C05DF8047B704700BF00E100E080B483B084 @@ -369,7 +369,7 @@ S315200016E0090258BF53427A6893617B68DB695A1EA8 S315200016F07B68DA617B68DB69002B10D17B689B688D S31520001700002240F22771184604F060FF07E07B684C S315200017109B68002240F22771184604F057FF0023E9 -S3152000172018461037BD4680BDDC72002080B582B0D9 +S3152000172018461037BD4680BD3C84002080B582B067 S3152000173000AF78607B680E4A93420AD101214FF0B0 S31520001740007002F045FB00214FF0007002F040FBD4 S3152000175009E001214FF0806002F03AFB00214FF0B2 @@ -922,7 +922,7 @@ S315200039707B685A687B69DA407B689A600C4B9B6847 S3152000398003F46043BB61BB695B0BBB610B4ABB693C S3152000399013441B78DBB27B617B685A687B69DA400B S315200039A07B68DA6000BF2437BD465DF8047B70472C -S315200039B0003802400024F40000127A00186E00201D +S315200039B0003802400024F40000127A00C87E00205D S315200039C080B485B000AF78600023FB607B6803F489 S315200039D04073B3F5407F11D10F4B9B68FB60FB68AA S315200039E023F4F813FB607B6823F0704323F44073C1 @@ -1707,133 +1707,411 @@ S31520006A80124A02E0002342F8043B114B9A42F9D302 S31520006A9000BFBD465DF8047B704780B500AFFFF7A9 S31520006AA0EDFFFFF781FEFFF786FEFFF719FFFFF7E1 S31520006AB04FFFFFF7B1FFFFF7D5FF00BF80BD80B4C2 -S31520006AC000AF00BFBD465DF8047B7047D072002042 -S31520006AD040F6002080B586B000AF7860396007F1B7 +S31520006AC000AF00BFBD465DF8047B704730840020D0 +S31520006AD0B807012080B586B000AF7860396007F12D S31520006AE00C031A460A490B48FAF730F80A4B1A469D S31520006AF00A490B48FAF72AF807F10C0303331A461A S31520006B0006490748FAF722F800BF1837BD4680BD68 -S31520006B102D130020587200203C6D0020C715002040 -S31520006B20386E002080B582B000AF786039600A4B9D -S31520006B301A460A490A48FAF709F83A6809490848F4 -S31520006B40FAF704F8084B1A4604490548F9F7FEFFF8 -S31520006B5000BF0837BD4680BD506D0020C7150020F8 -S31520006B60386E00201D160020586D002080B586B096 -S31520006B7000AF78603960002215491648F9F7E6FF1C -S31520006B80002215491548F9F7E1FF154B1A46154914 -S31520006B901248F9F7DBFF01233B7301237B7306239E -S31520006BA0BB734823FB7365233B746C237B746C2374 -S31520006BB0BB746F23FB7400233B7507F10C031A4645 -S31520006BC009490448F9F7C2FF00BF1837BD4680BD02 -S31520006BD0ED1000205872002021150020386E00206C -S31520006BE05C6D0020C7150020F713002080B500AF8C -S31520006BF0002208490848FAF79DF901220749084862 -S31520006C00FAF798F9002207490748FAF7F9F9002315 -S31520006C10184680BD53160020386E0020A51100208E -S31520006C20587200206D6B0020286E00204E4F544570 -S31520006C303A205F7362726B20696E20757365210A34 -S31520006C400D00000050414E49432121212000000023 -S31520006C50456D70747920717565756500456D707424 -S31520006C607920706F6F6C00000A0D000054696E79F0 -S31520006C7054696D626572200076322E30366131207D -S31520006C8028323032312D30332D31312900000000A9 -S31520006C9044657669636520495251206E6F7420736E -S31520006CA07570706F72746564202E2E2E00000000A1 -S31520006CB00A0D43414E20233120496E6974206661B6 -S31520006CC0696C6564210A0D0043414E202332204918 -S31520006CD06E6974206661696C6564210A0D00000086 -S31520006CE00A0D537472616E67653A204E6F74206187 -S31520006CF02043414E202331204649464F30204952D9 -S31520006D0051210A0D000000000A0D537472616E674E -S31520006D10653A2043414E202331204649464F3020B4 -S31520006D2046756C6C210A0D0043414E2054784275FD -S31520006D30662066756C6C210A0D00000043616E208A -S31520006D406D73672072656365697665643A20000015 -S31520006D505263763A20270000270A000048656C6CAB -S31520006D606F2C2068656C6C6F2E2E2E0A000000009A -S31520006D70535643616C6C20657863657074696F6ED9 -S31520006D800050656E64535620657863657074696F2C -S31520006D906E002C204558435F52455455524E203D97 -S31520006DA02000202063757272656E74207468726587 -S31520006DB061643A204944203D20002C205350203D38 -S31520006DC020002C202A5350203D200020206E65785C -S31520006DD074207468726561643A204944203D20001D -S31520006DE02C205350203D20002C202A5350203D207B -S31520006DF0000A0D00303132333435363738394142C6 -S31520006E00434445460000000068730020F8720020C5 -S31520006E105473002054730020000000000102030474 -S31520006E200102030406070809000000000000000014 -S31520006E3000000000580000000000000000000000D4 -S31520006E4000100140286E0020256B00200000000065 -S31520006E50000000000000000000000000000000000C -S31520006E6000000000000000000000000000000000FC -S31520006E7000000000000000000000000000000000EC -S31520006E8000000000000000000000000000000000DC -S31520006E9000000000000000000000000000000000CC -S31520006EA000000000000000000000000000000000BC -S31520006EB000000000000000000000000000000000AC -S31520006EC0000000000000000000000000000000009C -S31520006ED0000000000000000000000000000000008C -S31520006EE0000000000000000000000000000000007C -S31520006EF0000000000000000000000000000000006C -S31520006F00000000000000000000000000000000005B -S31520006F10000000000000000000000000000000004B -S31520006F20000000000000000000000000000000003B -S31520006F30000000000000000000000000000000002B -S31520006F40000000000000000000000000000000001B -S31520006F50000000000000000000000000000000000B -S31520006F6000000000000000000000000000000000FB -S31520006F7000000000000000000000000000000000EB -S31520006F8000000000000000000000000000000000DB -S31520006F9000000000000000000000000000000000CB -S31520006FA000000000000000000000000000000000BB -S31520006FB000000000000000000000000000000000AB -S31520006FC0000000000000000000000000000000009B -S31520006FD0000000000000000000000000000000008B -S31520006FE0000000000000000000000000000000007B -S31520006FF0000000000000000000000000000000006B -S31520007000000000000000000000000000000000005A -S31520007010000000000000000000000000000000004A -S31520007020000000000000000000000000000000003A -S31520007030000000000000000000000000000000002A -S31520007040000000000000000000000000000000001A -S31520007050000000000000000000000000000000000A -S3152000706000000000000000000000000000000000FA -S3152000707000000000000000000000000000000000EA -S3152000708000000000000000000000000000000000DA -S3152000709000000000000000000000000000000000CA -S315200070A000000000000000000000000000000000BA -S315200070B000000000000000000000000000000000AA -S315200070C0000000000000000000000000000000009A -S315200070D0000000000000000000000000000000008A -S315200070E0000000000000000000000000000000007A -S315200070F0000000000000000000000000000000006A -S315200071000000000000000000000000000000000059 -S315200071100000000000000000000000000000000049 -S315200071200000000000000000000000000000000039 -S315200071300000000000000000000000000000000029 -S315200071400000000000000000000000000000000019 -S315200071500000000000000000000000000000000009 -S3152000716000000000000000000000000000000000F9 -S3152000717000000000000000000000000000000000E9 -S3152000718000000000000000000000000000000000D9 -S3152000719000000000000000000000000000000000C9 -S315200071A000000000000000000000000000000000B9 -S315200071B000000000000000000000000000000000A9 -S315200071C00000000000000000000000000000000099 -S315200071D00000000000000000000000000000000089 -S315200071E00000000000000000000000000000000079 -S315200071F00000000000000000000000000000000069 -S315200072000000000000000000000000000000000058 -S315200072100000000000000000000000000000000048 -S315200072200000000000000000000000000000000038 -S315200072300000000000000000000000000000000028 -S315200072400000000000000000000000000000000018 -S315200072500000000000000000000000000000000008 -S3152000726000640040286E0020D56A0020000000003F -S3152000727000000000000000000000000000000000E8 -S3152000728000000000000000000000000000000000D8 -S3152000729000000000000000000000000000000000C8 -S315200072A000000000000000000000000000000000B8 -S315200072B000000000000000000000000000000000A8 -S315200072C00000000000000000000000000000000098 +S31520006B102D1300201C830020507D0020C715002047 +S31520006B20EC7E002080B584B002AF78603960494B96 +S31520006B301A4649494948FAF709F83A6848494748F8 +S31520006B40FAF704F8474B1A4643494448F9F7FEFF3B +S31520006B503B684D2B4CD03B684D2B76DC3B681F2B7E +S31520006B6012DC3B681C2B70DB3B681C3B032B6CD870 +S31520006B7001A252F823F000BFCD6B0020DF6B00206E +S31520006B80916B0020AF6B00203B68442B4CD05CE01F +S31520006B90354B354ADA60344B344A1A61344B00930C +S31520006BA0344B354A00210020F9F732FF4EE02E4BB8 +S31520006BB02D4ADA602C4B314A1A612D4B00932D4B0E +S31520006BC02D4A00210020F9F723FF3FE00023009300 +S31520006BD02B4B2C4A00210020F9F71AFF36E0002320 +S31520006BE00093294B274A00210020F9F711FF2DE0B9 +S31520006BF01D4B1B6A002B0ED11B4B1B4ADA601A4B0E +S31520006C00224A1A611A4B00931A4B1B4A0021002074 +S31520006C10F9F7FEFE1AE0002300931C4B124A0021CE +S31520006C200020F9F7F5FE11E000230093184B0E4AD9 +S31520006C3000210020F9F7ECFE00230093154B114AA2 +S31520006C4000210020F9F7E4FE00E000BF00BF08376E +S31520006C50BD4680BD647D0020C7150020EC7E002047 +S31520006C601D1600206C7D002094830020516D00208D +S31520006C709C830020937000200C830020B96D002097 +S31520006C80716F0020BC830020296F0020216E002018 +S31520006C90996E0020C16F002080B582B000AF786069 +S31520006CA0396000220A490B48F9F750FF0A4B1A4669 +S31520006CB00A490848F9F74AFF0021094800F014F864 +S31520006CC00021084800F010F900BF0837BD4680BDF6 +S31520006CD021150020EC7E0020707D0020C7150020A5 +S31520006CE094830020BC83002080B584B002AF7860F6 +S31520006CF039607B681B7E002B08D0124B1B687A6894 +S31520006D00D2691A607B6800221A7606E00D4B1B6852 +S31520006D1000221A607B6801221A767B685B690A4A20 +S31520006D2082FB03129210DB17D01A7B68596A3B68E4 +S31520006D300093064B7A68F9F76BFE00BF0837BD460D +S31520006D4080BD00BFD87E002067666666E96C00209D +S31520006D5080B592B002AF786039607B68DB69182B0A +S31520006D6004DC7B68DB695A1C7B68DA617B68DA693C +S31520006D7007F10C030B49184600F046FA07F10C03FD +S31520006D801A4609490948F9F7E1FE00230093084B02 +S31520006D90084A00210020F9F73BFE00BF4037BD46D8 +S31520006DA080BD00BF847D0020C7150020EC7E00201A +S31520006DB0DD7000200C83002080B592B002AF786091 +S31520006DC039607B68DB69012B04DD7B68DB695A1E31 +S31520006DD07B68DA617B68DA6907F10C030B49184690 +S31520006DE000F012FA07F10C031A4609490948F9F787 +S31520006DF0ADFE00230093084B084A00210020F9F736 +S31520006E0007FE00BF4037BD4680BD00BF847D002001 +S31520006E10C7150020EC7E0020DD7000200C830020AA +S31520006E2080B584B002AF786039607B681B6A002B1E +S31520006E300DD17B68DA697B681A627B680022DA6189 +S31520006E400F4B1A460F491048F9F780FE14E07B686D +S31520006E501A6A7B68DA617B6800221A620B4B1A4633 +S31520006E6008490948F9F772FE00230093084B094A9E +S31520006E7000210020F9F7CCFD00BF0837BD4680BDB4 +S31520006E80907D0020C7150020EC7E0020987D0020F4 +S31520006E90DD7000200C83002080B582B000AF7860C2 +S31520006EA039607B685B6A002B09D17B680A225A62AB +S31520006EB0094B1A4609490A48F9F748FE08E07B6853 +S31520006EC000225A62074B1A4604490548F9F73EFE46 +S31520006ED000BF0837BD4680BDA47D0020C715002011 +S31520006EE0EC7E0020B87D002080B586B002AF7860A9 +S31520006EF039600023FB6002E0FB680133FB607B689E +S31520006F009B681A46FB689342F6D37B68D9683B6830 +S31520006F100093044B7A688220F9F77AFD00BF103778 +S31520006F20BD4680BDE96E002080B590B000AF786088 +S31520006F3039607B689B6803F5FA727B689A607B6888 +S31520006F409A6807F10C030749184600F05DF907F126 +S31520006F500C031A4604490548F9F7F8FD00BF4037E7 +S31520006F60BD4680BDCC7D0020C7150020EC7E0020CC +S31520006F7080B590B000AF786039607B689B68002B45 +S31520006F8005DD7B689B68A3F5FA727B689A607B684F +S31520006F909A6807F10C030749184600F035F907F1FE +S31520006FA00C031A4604490548F9F7D0FD00BF4037BF +S31520006FB0BD4680BDCC7D0020C7150020EC7E00207C +S31520006FC080B483B000AF786039607B68DB68002BC3 +S31520006FD003D17B688222DA6002E07B680022DA60D5 +S31520006FE000BF0C37BD465DF8047B704780B500AF07 +S31520006FF0002206490648F9F79DFF00220549064862 +S31520007000F9F7FEFF0023184680BD00BF5316002067 +S31520007010EC7E0020996C0020DC7E002080B485B0B8 +S3152000702000AF786039600023FB603B681B68BB605B +S3152000703004E0BB68FB60BB681B68BB60BB68002BB9 +S31520007040F7D1FB68002B03D13B687A681A6002E00F +S31520007050FB687A681A607B6800221A6000BF1437C2 +S31520007060BD465DF8047B704780B485B000AF78607C +S315200070707B681B68FB60FB68002B03D0FB681A68E3 +S315200070807B681A60FB6818461437BD465DF8047B9A +S31520007090704780B586B002AF786039603B68FB6088 +S315200070A07B689B68002B0FDD7B689B685A1E7B687C +S315200070B09A60FB685A68FB689B6800210091002152 +S315200070C00020F9F7A5FC05E07B680C331946F86823 +S315200070D0FFF7A4FF00BF1037BD4680BD80B586B040 +S315200070E002AF786039607B68DB68002B10D07B6844 +S315200070F00C331846FFF7B8FFF860FB685A68FB6840 +S315200071009B680021009100210020F9F781FC04E012 +S315200071107B689B685A1C7B689A6000BF1037BD4607 +S3152000712080BD0000000000000000000000000000FC +S3152000713001F0FF01102A2BDB10F0070F08D010F802 +S31520007140013B013A8B422DD010F0070F42B3F6D106 +S31520007150F0B441EA012141EA014122F007047FF01F +S3152000716000070023F0E80256083C85EA010586EA76 +S31520007170010685FA47F5A3FA87F586FA47F6A5FAB2 +S3152000718087F68EB9EED1F0BC01F0FF0102F00702BE +S3152000719032B110F8013B013A83EA010313B1F8D169 +S315200071A00020704701387047002D06BF354603384A +S315200071B0073815F0010F07D1013015F4807F02BF83 +S315200071C0013015F4C03F0130F0BC0138704700BFD4 +S315200071D00CB400B59DB01EAB029106916FF0004134 +S315200071E007910491074953F8042B059102A90193AD +S315200071F000F000F9029B00221A701DB05DF804EB26 +S3152000720002B070470802FFFF0EB400B59CB01DAB5C +S31520007210029006906FF000410948079104910949B0 +S3152000722053F8042B05910068019302A900F0E2F8B7 +S31520007230029B00221A701CB05DF804EB03B0704765 +S31520007240CC8300200802FFFF2DE9F0478E689E427E +S3152000725082460C4690461F4638D88A8912F4906F8B +S3152000726032D025680969A5EB0109656905EB450555 +S3152000727005EBD57501334B446D109D4238BF1D4635 +S31520007280530531D5294600F0C1FB064650B90C23DB +S31520007290CAF80030A38943F04003A3814FF0FF30A2 +S315200072A0BDE8F08721694A4600F038FBA38923F41C +S315200072B0906343F08003A381266165614E44A5EB6C +S315200072C009052660A5603E46BE4200D93E463246A6 +S315200072D02068414600F030FBA36822689B1B32449D +S315200072E0A36022600020DBE72A4600F0E9FB064681 +S315200072F00028E1D12169504600F038FBC7E79368A2 +S315200073002DE9F74F80460C461746002B61D0002307 +S31520007310D2F800A001939B46BBF1000F2BD0A668A4 +S31520007320B34542D3A28912F4906F3ED025682169D5 +S31520007330A5EB0109656905EB450505EBD57509F151 +S3152000734001006D105844854238BF0546530545D582 +S315200073502946404600F05AFB0646A0B90C23C8F839 +S315200073600030A38943F04003A3810023C7E90133FA +S315200073704FF0FF302FE0DAF80030DAF804B001934E +S315200073800AF1080AC8E74A46216900F0C7FAA28925 +S3152000739022F4906242F08002A281266165614E4409 +S315200073A0A5EB09052660A5605E465E4528BF5E46BC +S315200073B032460199206800F0BFFAA268921BA260AB +S315200073C0226832442260BA68A2EB0B03BB60002B12 +S315200073D0D1D10020786003B0BDE8F08F2A46404620 +S315200073E000F06EFB06460028D7D12169404600F002 +S315200073F0BDFAB3E72DE9F04F98468B891B069DB061 +S3152000740007460D4614460ED50B6963B9402100F098 +S31520007410FDFA2860286120B90C233B604FF0FF302D +S31520007420D1E040236B610023099320238DF8293076 +S31520007430CDF80C803023DFF8A8818DF82A304FF064 +S31520007440010923469A4613F8012B0AB1252AF9D1B8 +S31520007450BAEB040B0BD05B46224629463846FFF78B +S31520007460F3FE013000F0AA80099A5A4409929AF84C +S315200074700030002B00F0A28000234FF0FF32CDE930 +S3152000748005230AF1010A049307938DF853301A93C2 +S315200074905446052214F8011B5148FFF749FE049A69 +S315200074A0D8B9D00644BF20238DF85330110744BFE6 +S315200074B02B238DF853309AF800302A2B15D0079AB3 +S315200074C0544600204FF00A0C214611F8013B303B70 +S315200074D0092B4ED9B0B1079214E0A0EB080309FAA4 +S315200074E003F313430493A246D2E7039B191D1B689B +S315200074F00391002BBBBF5B4242F002020793079326 +S31520007500B8BF049223782E2B0CD163782A2B35D141 +S31520007510039B1A1D1B680392002BB8BF4FF0FF3345 +S3152000752002340593DFF8C8A0217803225046FFF7DE +S31520007530FFFD40B14023A0EB0A0003FA00F0049BB4 +S3152000754003430134049314F8011B26488DF82810B0 +S315200075500622FFF7EDFD002838D0234B1BBB039BEB +S31520007560073323F0070308330393099B3344099316 +S3152000757067E70CFB02320C460120A5E70023013405 +S31520007580059319464FF00A0C204610F8012B303A85 +S31520007590092A03D9002BC5D00591C3E70CFB01218D +S315200075A004460123F0E703AB00932A460F4B04A9B8 +S315200075B03846AFF30080421C0646D6D1AB895B061F +S315200075C03FF52CAF09981DB0BDE8F08F03AB0093B3 +S315200075D02A46064B04A9384600F07AF8EBE700BFA6 +S315200075E0EC7D0020F67D002000000000497200207E +S315200075F0F27D00202DE9F047164699468A680B69E8 +S31520007600DDF820809342B8BF1346336091F84320BB +S3152000761007460C460AB1013333602368990642BFF8 +S31520007620336802333360256815F0060506D104F168 +S31520007630190AE36832689B1AAB4226DC94F8432089 +S31520007640131E226818BF012392062BD404F143028D +S3152000765049463846C04701301ED02368E56832685F +S3152000766003F00603042B08BFAD1AA36822690CBFDA +S3152000767025EAE57500259342C4BF9B1AED1800261E +S315200076801A34B5421AD1002008E001235246494651 +S315200076903846C047013003D14FF0FF30BDE8F087B0 +S315200076A00135C6E7E1185A1C302081F843002244F0 +S315200076B094F8451082F843100233C7E70123224687 +S315200076C049463846C0470130E6D00136D9E70000A2 +S315200076D02DE9FF470C469146277E0C99782F804648 +S315200076E09A4604F1430207D8622F0AD8002F00F0E9 +S315200076F0D880582F00F0A38004F1420684F8427007 +S315200077003AE0A7F16303152BF6D801A050F823F031 +S31520007710697700207D770020F9760020F976002011 +S31520007720F9760020F97600207D770020F976002072 +S31520007730F9760020F9760020F97600208978002055 +S31520007740AD7700206B780020F9760020F9760020AE +S31520007750AB780020F9760020AD770020F97600205E +S31520007760F9760020737800200B681A1D1B680A60C2 +S3152000777004F1420684F842300123A3E02568086814 +S315200077802E0600F104030AD505680B60002D03DAE6 +S315200077902D236D4284F843305E480A2319E015F004 +S315200077A0400F05680B6018BF2DB2EFE70B68256800 +S315200077B0181D0860280601D51D6802E06906FBD55C +S315200077C01D8854486F2F0CBF08230A23002184F8F4 +S315200077D043106668A660002EA2BF216821F004012E +S315200077E021600DB9002E4DD01646B5FBF3F103FBF3 +S315200077F01157C75D06F8017D2F46BB420D46F4D9C9 +S31520007800082B0BD12368DF0708D5236961689942C5 +S31520007810DEBF302306F8013C06F1FF36921B2261BB +S31520007820CDF800A04B4603AA21464046FFF7E2FECC +S3152000783001304CD14FF0FF3004B0BDE8F087354819 +S3152000784084F8457023680E681F0656F8045B0E60A0 +S3152000785014D5D90744BF43F0200323601DB92368FC +S3152000786023F0200323601023B0E7236843F020038E +S3152000787023607823284884F84530E3E75E0648BF2E +S31520007880ADB2E6E71646BBE70B68266860691D1DA4 +S315200078900D6035061B6801D5186002E07106FBD520 +S315200078A01880002323611646BAE70B681A1D0A6062 +S315200078B01E68626800213046FFF73AFC08B1801B3B +S315200078C0606063682361002384F84330A8E7236956 +S315200078D0324649464046D0470130ABD023689B0705 +S315200078E013D4E068039B9842B8BF1846A4E7012347 +S315200078F0324649464046D04701309BD00135E368A1 +S3152000790003995B1AAB42F2DCEBE7002504F119067A +S31520007910F5E700BFFD7D00200E7E00200A4491423F +S3152000792000F1FF3300D1704710B511F8014B03F871 +S31520007930014F9142F9D110BD884210B501EB0204E6 +S3152000794002D98442234607D8431EA14208D011F803 +S31520007950012B03F8012FF8E7024401468A4200D1A1 +S3152000796010BD13F8014D02F8014DF7E737B5002990 +S3152000797048D051F8043C0190002BA1F10404B8BF73 +S31520007980E41800F0D3F8204A01981368154633B955 +S315200079906360146003B0BDE8304000F0CDB8A34268 +S315200079A00BD921686218934204BF1A685B6863602A +S315200079B004BF521822602C60ECE71A465B680BB1B4 +S315200079C0A342FAD911685518A5420BD1246821443F +S315200079D05418A3421160DDD11C685B6853602144B2 +S315200079E01160D7E702D90C230360D3E72568611914 +S315200079F08B4204BF19685B68636004BF4919216024 +S31520007A005460C7E703B030BD48840020F8B5CD1CCC +S31520007A1025F0030508350C2D38BF0C25002D06460C +S31520007A2001DBA94203D90C2333600020F8BD00F006 +S31520007A307DF821490A6814469CB9204F3B6823B932 +S31520007A402146304600F062F838602946304600F07C +S31520007A505DF8431C23D10C233360304600F06CF8CC +S31520007A60E3E723685B1B17D40B2B03D923601C4445 +S31520007A70256004E06368A2420CBF0B605360304669 +S31520007A8000F05AF804F10B00231D20F00700C21A5B +S31520007A90CCD01B1AA350C9E722466468CCE7C41C85 +S31520007AA024F00304A042E3D0211A304600F02EF839 +S31520007AB00130DDD1CFE700BF488400204C84002070 +S31520007AC0F8B5074614460E4621B9BDE8F8401146DA +S31520007AD0FFF79CBF22B9FFF749FF25462846F8BD88 +S31520007AE000F030F8A0420FD221463846FFF78EFF2D +S31520007AF005460028F2D031462246FFF70FFF3146D1 +S31520007B003846FFF733FFE9E73546E7E738B5064D50 +S31520007B100023044608462B60F8F7FAFB431C02D1E3 +S31520007B202B6803B1236038BDA8070120014800F067 +S31520007B3080B800BFB0070120014800F080B800BF20 +S31520007B40B007012051F8043C181F002BBCBF0B586E +S31520007B50C018704738B50C460968054609B1FFF7C5 +S31520007B60F9FF21462846BDE83840FFF7FFBE000052 +S31520007B702C4B1B68834270B5044651D0436A43B1EF +S31520007B80DB68002B4AD1636A196811B12046FFF7DA +S31520007B90EDFE616911B12046FFF7E8FE616A11B179 +S31520007BA02046FFF7E3FEA16B11B12046FFF7DEFE6C +S31520007BB0E16B11B12046FFF7D9FE216C11B12046A9 +S31520007BC0FFF7D4FEE16D11B12046FFF7CFFEA16D80 +S31520007BD011B12046FFF7CAFE616B11B12046FFF7AF +S31520007BE0C5FEA369E3B1A36A20469847A16CB9B143 +S31520007BF02046BDE87040FFF7ADBF495941B904356D +S31520007C00636A802DD968F8D12046FFF7AFFEBAE720 +S31520007C100E682046FFF7AAFE3146EFE70025EFE77C +S31520007C2070BD00BFCC8300207047704770477047F7 +S31520007C307047704701207047012070477047704792 +S31520007C404E4F54453A205F7362726B20696E2075E1 +S31520007C507365210A0D00000050414E494321212120 +S31520007C6020000000456D707479207175657565007A +S31520007C70456D70747920706F6F6C00000A0D0000DE +S31520007C8054696E7954696D626572200076322E30A1 +S31520007C903661312028323032312D30332D313129A1 +S31520007CA00000000044657669636520495251206EC4 +S31520007CB06F7420737570706F72746564202E2E2E0B +S31520007CC0000000000A0D43414E20233120496E69F1 +S31520007CD074206661696C6564210A0D0043414E205B +S31520007CE0233220496E6974206661696C6564210AB5 +S31520007CF00D0000000A0D537472616E67653A204EBE +S31520007D006F7420612043414E202331204649464F3F +S31520007D103020495251210A0D000000000A0D5374EB +S31520007D2072616E67653A2043414E202331204649D1 +S31520007D30464F302046756C6C210A0D0043414E207B +S31520007D4054784275662066756C6C210A0D00000019 +S31520007D5043616E206D73672072656365697665641D +S31520007D603A2000005263763A20270000270A0000B6 +S31520007D7048656C6C6F2C2068656C6C6F2E2E2E0AF5 +S31520007D8000000000766F6C756D653A2025640A0048 +S31520007D906D757465640A0000756E6D757465640A88 +S31520007DA000000000656E61626C6520646561646C2C +S31520007DB0696E650A0000000064697361626C652063 +S31520007DC0646561646C696E650A0000006261636BBC +S31520007DD067726F756E64206C6F6F702072616E674C +S31520007DE0653A2025640A0000D0830020232D302BFD +S31520007DF02000686C4C006566674546470030313286 +S31520007E0033343536373839414243444546003031DC +S31520007E10323334353637383961626364656600003B +S31520007E20535643616C6C20657863657074696F6E18 +S31520007E300050656E64535620657863657074696F6B +S31520007E406E002C204558435F52455455524E203DD6 +S31520007E502000202063757272656E742074687265C6 +S31520007E6061643A204944203D20002C205350203D77 +S31520007E7020002C202A5350203D200020206E65789B +S31520007E8074207468726561643A204944203D20005C +S31520007E902C205350203D20002C202A5350203D20BA +S31520007EA0000A0D0030313233343536373839414205 +S31520007EB04344454600000000D08400206084002012 +S31520007EC0BC840020BC8400200000000001020304C2 +S31520007ED001020304060708091C7400400000000084 +S31520007EE00000000000000000580000000000000014 +S31520007EF00000000000100140DC7E0020256B0020E1 +S31520007F00000000000000000000000000000000004B +S31520007F10000000000000000000000000000000003B +S31520007F20000000000000000000000000000000002B +S31520007F30000000000000000000000000000000001B +S31520007F40000000000000000000000000000000000B +S31520007F5000000000000000000000000000000000FB +S31520007F6000000000000000000000000000000000EB +S31520007F7000000000000000000000000000000000DB +S31520007F8000000000000000000000000000000000CB +S31520007F9000000000000000000000000000000000BB +S31520007FA000000000000000000000000000000000AB +S31520007FB0000000000000000000000000000000009B +S31520007FC0000000000000000000000000000000008B +S31520007FD0000000000000000000000000000000007B +S31520007FE0000000000000000000000000000000006B +S31520007FF0000000000000000000000000000000005B +S31520008000000000000000000000000000000000004A +S31520008010000000000000000000000000000000003A +S31520008020000000000000000000000000000000002A +S31520008030000000000000000000000000000000001A +S31520008040000000000000000000000000000000000A +S3152000805000000000000000000000000000000000FA +S3152000806000000000000000000000000000000000EA +S3152000807000000000000000000000000000000000DA +S3152000808000000000000000000000000000000000CA +S3152000809000000000000000000000000000000000BA +S315200080A000000000000000000000000000000000AA +S315200080B0000000000000000000000000000000009A +S315200080C0000000000000000000000000000000008A +S315200080D0000000000000000000000000000000007A +S315200080E0000000000000000000000000000000006A +S315200080F0000000000000000000000000000000005A +S315200081000000000000000000000000000000000049 +S315200081100000000000000000000000000000000039 +S315200081200000000000000000000000000000000029 +S315200081300000000000000000000000000000000019 +S315200081400000000000000000000000000000000009 +S3152000815000000000000000000000000000000000F9 +S3152000816000000000000000000000000000000000E9 +S3152000817000000000000000000000000000000000D9 +S3152000818000000000000000000000000000000000C9 +S3152000819000000000000000000000000000000000B9 +S315200081A000000000000000000000000000000000A9 +S315200081B00000000000000000000000000000000099 +S315200081C00000000000000000000000000000000089 +S315200081D00000000000000000000000000000000079 +S315200081E00000000000000000000000000000000069 +S315200081F00000000000000000000000000000000059 +S315200082000000000000000000000000000000000048 +S315200082100000000000000000000000000000000038 +S315200082200000000000000000000000000000000028 +S315200082300000000000000000000000000000000018 +S315200082400000000000000000000000000000000008 +S3152000825000000000000000000000000000000000F8 +S3152000826000000000000000000000000000000000E8 +S3152000827000000000000000000000000000000000D8 +S3152000828000000000000000000000000000000000C8 +S3152000829000000000000000000000000000000000B8 +S315200082A000000000000000000000000000000000A8 +S315200082B00000000000000000000000000000000098 +S315200082C00000000000000000000000000000000088 +S315200082D00000000000000000000000000000000078 +S315200082E00000000000000000000000000000000068 +S315200082F00000000000000000000000000000000058 +S315200083000000000000000000000000000000000047 +S315200083100000000001000000000000000000000036 +S315200083200000000000640040DC7E0020D56A0020AA +S315200083300000000000000000000000000000000017 +S315200083400000000000000000000000000000000007 +S3152000835000000000000000000000000000000000F7 +S3152000836000000000000000000000000000000000E7 +S3152000837000000000000000000000000000000000D7 +S3152000838000000000000000000000000000000000C7 +S3152000839000000000000000000000000000000000B7 +S315200083A00000000000000000F401000001000000B1 +S315200083B005000000000000000A0000000000000088 +S315200083C000000000E803000082000000D0830020A7 +S315200083D00000000000000000000000000000000077 +S315200083E00000000000000000000000000000000067 +S315200083F00000000000000000000000000000000057 +S315200084000000000000000000000000000000000046 +S315200084100000000000000000000000000000000036 +S315200084200000000000000000000000000000000026 S70520000000DA diff --git a/Debug/application.o b/Debug/application.o index 35d7343..d79de3e 100644 Binary files a/Debug/application.o and b/Debug/application.o differ diff --git a/Debug/semaphore.o b/Debug/semaphore.o new file mode 100644 index 0000000..f52116b Binary files /dev/null and b/Debug/semaphore.o differ diff --git a/Makefile b/Makefile index e374748..946b40b 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,8 @@ OBJECTS= $(DEBUGDIR)dispatch.o \ $(DEBUGDIR)stm32f4xx_tim.o \ $(DEBUGDIR)stm32f4xx_usart.o \ $(DEBUGDIR)startup.o \ - $(DEBUGDIR)application.o + $(DEBUGDIR)application.o \ + $(DEBUGDIR)semaphore.o ### ### Main target @@ -100,9 +101,11 @@ $(DEBUGDIR)canTinyTimber.o: canTinyTimber.c canTinyTimber.h $(CC) -c $< -o $@ $(CCFLAGS) $(DEBUGDIR)sciTinyTimber.o: sciTinyTimber.c sciTinyTimber.h $(CC) -c $< -o $@ $(CCFLAGS) +$(DEBUGDIR)semaphore.o: semaphore.c semaphore.h + $(CC) -c $< -o $@ $(CCFLAGS) # User-defined targets -$(DEBUGDIR)application.o: application.c TinyTimber.h sciTinyTimber.h canTinyTimber.h +$(DEBUGDIR)application.o: application.c TinyTimber.h sciTinyTimber.h canTinyTimber.h semaphore.h $(CC) -c $< -o $@ $(CCFLAGS) ### diff --git a/RTS-Lab.code-workspace b/RTS-Lab.code-workspace new file mode 100644 index 0000000..816c48e --- /dev/null +++ b/RTS-Lab.code-workspace @@ -0,0 +1,16 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "makefile.launchConfigurations": [ + { + "cwd": "c:\\Users\\DELL\\Desktop\\RTS-Lab\\Debug", + "binaryPath": "c:\\Users\\DELL\\Desktop\\RTS-Lab\\Debug\\RTS-Lab.elf", + "binaryArgs": [] + } + ] + } +} \ No newline at end of file diff --git a/application.c b/application.c index a0aa821..0a15679 100644 --- a/application.c +++ b/application.c @@ -3,57 +3,469 @@ #include "canTinyTimber.h" #include #include +#include +#include "semaphore.h" +#define TRUE 1 +#define FALSE 0 +#define CONDUCTOER 1 +#define MUSICIAN 2 + +/* + * S: start/stop the playing of melody + * + * K: change key + * + * M: mute/unmute + * + * T: change tempo + * + * up arrow: increase volume + * + * down arrow: decrease volume + * + * Integer: end with 'e' + */ + typedef struct { Object super; - int count; - char c; + int index; + char buffer[50]; + int mod; } App; -App app = { initObject(), 0, 'X' }; +typedef struct { + Object super; + CallBlock callBlock; + int period; + bool lh; // 1 or 0 + int volume; + int mute; + Time deadline; + bool muted; + int start; +} ToneGenerator; + + +typedef struct { + Object super; + int key; + int tempo; + int frequency_index; + int start; + +} MusicPlayer; + +/////////////////////////////////////////////////////////// +int* dac = (int *)0x4000741C; +int frequency_indices[32] = {0,2,4,0,0,2,4,0,4,5,7,4,5,7,7,9,7,5,4,0,7,9,7,5,4,0,0,-5,0,0,-5,0}; +int periods[] = {2024,1911,1803,1702,1607,1516,1431,1351,1275,1203,1136,1072,1012,955,901,851,803,758,715,675,637,601,568,536,506}; +char tempos[] = {'a','a','a','a','a','a','a','a','a','a', + 'b','a','a','b','c','c','c','c','a','a', + 'c','c','c','c','a','a','a','a','b','a', + 'a','b'}; +bool keybool = false; +bool tempobool = false; + +/////////////////////////////////////////////////////////// void reader(App*, int); void receiver(App*, int); -Serial sci0 = initSerial(SCI_PORT0, &app, reader); +void tick(ToneGenerator*, int); +void upVolume(ToneGenerator*, int); +void downVolume(ToneGenerator*, int); +void mute(ToneGenerator*, int); +void lockRequest(ToneGenerator*, int); +int checkMuted(ToneGenerator*, int); +void muteGap(ToneGenerator*, int); +void unMuteGap(ToneGenerator*, int); +void changeTone(ToneGenerator*, int); +void startTG(ToneGenerator*, int); +void stopTG(ToneGenerator*, int); + +void play(MusicPlayer*, int); +void changeKey(MusicPlayer*, int); +void changeTempo(MusicPlayer*, int); +int checkStart(MusicPlayer*, int); +void start(MusicPlayer*, int); +void stop(MusicPlayer*, int); + +/////////////////////////////////////////////////////////// +App app = { initObject(), 0 , {}, CONDUCTOER}; +Serial sci0 = initSerial(SCI_PORT0, &app, reader); +Semaphore muteVolumeSem = initSemaphore(1); // lock the tg when is muted Can can0 = initCan(CAN_PORT0, &app, receiver); +ToneGenerator tg = {initObject(),initCallBlock(), 500, true, 5, FALSE, USEC(100), false, TRUE}; // 500 USEC 650USEC 931USEC +MusicPlayer mp = {initObject(), 0, 120, 0, TRUE}; + + +/////////////////////////////////////////////////////////// +// app void receiver(App *self, int unused) { CANMsg msg; CAN_RECEIVE(&can0, &msg); - SCI_WRITE(&sci0, "Can msg received: "); - SCI_WRITE(&sci0, msg.buff); + char tempBuffer[50]; + int msg_id = msg.msgId; + int bufferValue = atoi(msg.buff); + switch (msg_id) { + case 1: // change key + sprintf(tempBuffer, "Can received key value: %d\n", bufferValue); + SCI_WRITE(&sci0, tempBuffer); + if (self->mod == MUSICIAN) { + ASYNC(&mp, changeKey, bufferValue); + } + break; + case 2: // change tempo + sprintf(tempBuffer, "Can received tempo value: %d\n", bufferValue); + SCI_WRITE(&sci0, tempBuffer); + if (self->mod == MUSICIAN) { + ASYNC(&mp, changeTempo, bufferValue); + } + break; + case 3: // mute + SCI_WRITE(&sci0, "Can received mute/unmute signal.\n"); + if (self->mod == MUSICIAN) { + if (SYNC(&tg, checkMuted, 0)) // sycn will return a value + { + ASYNC(&tg, lockRequest, (int)mute); + } else { + ASYNC(&tg, mute, 0); + } + } + break; + case 4: // increase volume + SCI_WRITE(&sci0, "Can received increase vol signal.\n"); + if (self->mod == MUSICIAN) { + ASYNC(&tg, lockRequest, (int)upVolume); + } + break; + case 5: // decrease volume + SCI_WRITE(&sci0, "Can received decrease vol signal.\n"); + if (self->mod == MUSICIAN) { + ASYNC(&tg, lockRequest, (int)downVolume); + } + + break; + case 6: + SCI_WRITE(&sci0, "Can received start/stop signal.\n"); + if (self->mod == MUSICIAN) { + if(SYNC(&mp, checkStart, 0)) { + ASYNC(&mp, stop, 0); + } else { + ASYNC(&mp, start, 0); + } + } + default: + break; + } } void reader(App *self, int c) { + int bufferValue; + char tempBuffer[50]; + CANMsg msg; SCI_WRITE(&sci0, "Rcv: \'"); SCI_WRITECHAR(&sci0, c); SCI_WRITE(&sci0, "\'\n"); + msg.nodeId = 1; + switch (c) + { + case '0' ... '9': + case '-': + self->buffer[self->index++] = c; + break; + case 'e': + self->buffer[self->index] = '\0'; + msg.length = self->index; + for (int i = 0; i < self->index; i++) { + msg.buff[i] = self->buffer[i]; + } + self->index = 0; + bufferValue = atoi(self->buffer); + sprintf(tempBuffer, "Entered integer: %d \n", bufferValue); + SCI_WRITE(&sci0, tempBuffer); + // change key + if (keybool) { + if (bufferValue<-5 || bufferValue > 5) + { + SCI_WRITE(&sci0, " -5<=key<=5, try again!\n"); + break; + } + if (self->mod == CONDUCTOER) { + ASYNC(&mp, changeKey, bufferValue); + } + keybool = false; + msg.msgId = 1; + } + // change tempo + if (tempobool) { + if (bufferValue< 60 || bufferValue > 240) + { + SCI_WRITE(&sci0, " 60<=tempo<=240, try again!\n"); + break; + } + if (self->mod == CONDUCTOER) { + ASYNC(&mp, changeTempo, bufferValue); + } + tempobool = false; + msg.msgId = 2; + } + CAN_SEND(&can0, &msg); + break; + case 30: //up + msg.length = 0; + msg.msgId = 4; + if (self->mod == CONDUCTOER) { + ASYNC(&tg, lockRequest, (int)upVolume); + } + CAN_SEND(&can0, &msg); + break; + case 31: //down + msg.length = 0; + msg.msgId = 5; + if (self->mod == CONDUCTOER) { + ASYNC(&tg, lockRequest, (int)downVolume); + } + CAN_SEND(&can0, &msg); + break; + case 'K': // change key + SCI_WRITE(&sci0, "Please input the key(-5~5) you want:\n"); + keybool = true; // next input interger is saved as the key + break; + case 'T': // change Tempo + SCI_WRITE(&sci0, "Please input the tempo(60~240) you want:\n"); + tempobool = true; // next input interger is saved as the tempo + break; + case 'M': // mute/unmute + msg.length = 0; + msg.msgId = 3; + if (self->mod == CONDUCTOER) { + if (SYNC(&tg, checkMuted, 0)) // sycn will return a value + { + ASYNC(&tg, lockRequest, (int)mute); + } else { + ASYNC(&tg, mute, 0); + } + } + CAN_SEND(&can0, &msg); + break; + case 'S': + msg.length = 0; + msg.msgId = 6; + if (self->mod == CONDUCTOER) { + if(SYNC(&mp, checkStart, 0)) { + ASYNC(&mp, stop, 0); + } else { + ASYNC(&mp, start, 0); + } + } + CAN_SEND(&can0, &msg); + break; + case 'C': + if (self->mod == CONDUCTOER) { + self->mod = MUSICIAN; + SCI_WRITE(&sci0, "change to musician mod\n"); + } else { + self->mod = CONDUCTOER; + SCI_WRITE(&sci0, "Change to conductoer mod\n"); + } + break; + default: + break; + } + } void startApp(App *self, int arg) { - CANMsg msg; - - CAN_INIT(&can0); - SCI_INIT(&sci0); + + SCI_INIT(&sci0); + CAN_INIT(&can0); SCI_WRITE(&sci0, "Hello, hello...\n"); + ASYNC(&tg, tick, 0); + ASYNC(&mp, play, 0); + ASYNC(&mp, stop, 0); + +} + +/////////////////////////////////////////////////////////// +// tone generator +void tick(ToneGenerator *self, int c) { + + if (!self->start) { + return; + } + + if (self->lh) + { + *dac = self->volume; + self->lh = false; + } else { + *dac = 0; + self->lh = true; + } + + SEND(USEC(self->period), self->deadline, self, tick, c); + + +} + +void upVolume(ToneGenerator *self, int c) { + char tempBuffer[50]; + if (self->volume < 50) + { + self->volume++; + } + sprintf(tempBuffer, "volume: %d\n", self->volume); + SCI_WRITE(&sci0, tempBuffer); + ASYNC(&muteVolumeSem, Signal, 0); +} + +void downVolume(ToneGenerator *self, int c) { + char tempBuffer[50]; + if (self->volume > 1) + { + self->volume--; + } + sprintf(tempBuffer, "volume: %d\n", self->volume); + SCI_WRITE(&sci0, tempBuffer); + ASYNC(&muteVolumeSem, Signal, 0); +} + +void mute(ToneGenerator *self, int c) { + if(!self->muted) { + self->mute = self->volume; + self->volume = 0; + self->muted = true; + SCI_WRITE(&sci0, "muted\n"); + } else { + if (self->mute == 0) + { + self->volume = 20; + } else { + self->volume = self->mute; + } + self->mute = FALSE; + self->muted = false; + SCI_WRITE(&sci0, "unmuted\n"); + + ASYNC(&muteVolumeSem, Signal, 0); // realse lock + } + +} + + +void lockRequest(ToneGenerator* self, int c) { + self->callBlock.obj = self; + self->callBlock.meth = (Method)c; + ASYNC(&muteVolumeSem, Wait, (int)&self->callBlock); +} + + +int checkMuted(ToneGenerator* self, int c) { + if (!self->muted) + { + return TRUE; + } else { + return FALSE; + } +} + +void muteGap(ToneGenerator* self, int c) { + if(!self->muted) { + self->mute = self->volume; + self->volume = 0; + } +} + + +void unMuteGap(ToneGenerator* self, int c) { + if(!self->muted) { + self->volume = self->mute; + self->mute = FALSE; + } + +} + +void changeTone(ToneGenerator* self, int c) { + self->period = c; +} + +void startTG(ToneGenerator* self, int c) { + self->start = TRUE; + +} + +void stopTG(ToneGenerator* self, int c) { + self->start = FALSE; + +} + +/////////////////////////////////////////////////////////// +// music player +void play(MusicPlayer* self, int c) { + int frequency_index; + int period; + double tempoFactor; + if (!self->start) { + return; + } + if (self->frequency_index==32){ + self->frequency_index = 0; + } + if (tempos[self->frequency_index] == 'b') { + tempoFactor = 2.0; + } else if (tempos[self->frequency_index] == 'c'){ + tempoFactor = 0.5; + } else { + tempoFactor = 1.0; + } + SYNC(&tg, muteGap, 0); + frequency_index = frequency_indices[self->frequency_index] + self->key; + period = periods[frequency_index+10]; + self->frequency_index++; + SYNC(&tg, changeTone, period); + AFTER(MSEC(50), &tg, unMuteGap, 0); + SEND(MSEC((int)60000 / self->tempo * tempoFactor), USEC(100), self, play, 0); +} + +void changeKey(MusicPlayer* self, int c) { + keybool = false; + self->key = c; +} + +void changeTempo(MusicPlayer* self, int c) { + tempobool = false; + self->tempo = c; +} + +int checkStart(MusicPlayer* self, int c) { + return self->start; +} + +void start(MusicPlayer* self, int c) { + self->start = TRUE; + ASYNC(&tg, startTG, 0); + ASYNC(&tg, tick, 0); + ASYNC(&mp, play, 0); + SCI_WRITE(&sci0, "startMp\n"); + +} + +void stop(MusicPlayer* self, int c) { + self->frequency_index = 0; + self->start = FALSE; + ASYNC(&tg, stopTG, 0); + SCI_WRITE(&sci0, "stopMp\n"); - msg.msgId = 1; - msg.nodeId = 1; - msg.length = 6; - msg.buff[0] = 'H'; - msg.buff[1] = 'e'; - msg.buff[2] = 'l'; - msg.buff[3] = 'l'; - msg.buff[4] = 'o'; - msg.buff[5] = 0; - CAN_SEND(&can0, &msg); } +/////////////////////////////////////////////////////////// int main() { INSTALL(&sci0, sci_interrupt, SCI_IRQ0); - INSTALL(&can0, can_interrupt, CAN_IRQ0); + INSTALL(&can0, can_interrupt, CAN_IRQ0); TINYTIMBER(&app, startApp, 0); return 0; } diff --git a/semaphore.c b/semaphore.c new file mode 100644 index 0000000..cad0a79 --- /dev/null +++ b/semaphore.c @@ -0,0 +1,41 @@ +#include "TinyTimber.h" +#include "semaphore.h" + +void c_enqueue(Caller c, Caller *queue) { + Caller prev = NULL, q = *queue; + while (q) { // find last element in queue + prev = q; + q = q->next; + } + if (prev == NULL) + *queue = c; // empty queue: put ‘c’ first + else + prev->next = c; // non-empty queue: put ‘c’ last + c->next = NULL; +} + +Caller c_dequeue(Caller *queue) { + Caller c = *queue; + if (c) + *queue = c->next; // remove first element in queue + return c; +} + +void Wait(Semaphore *self, int c) { + Caller wakeup = (Caller) c; // type-cast back from ‘int’ + if (self->value > 0) { + self->value--; + ASYNC(wakeup->obj, wakeup->meth, 0); + } + else + c_enqueue(wakeup, &self->queue); +} + +void Signal(Semaphore *self, int unused) { + if (self->queue) { + Caller wakeup = c_dequeue(&self->queue); + ASYNC(wakeup->obj, wakeup->meth, 0); + } + else + self->value++; +} diff --git a/semaphore.h b/semaphore.h new file mode 100644 index 0000000..c547f8b --- /dev/null +++ b/semaphore.h @@ -0,0 +1,28 @@ +#ifndef _SEMAPHORE_H +#define _SEMAPHORE_H + +#include "TinyTimber.h" + +struct call_block; +typedef struct call_block *Caller; + +typedef struct call_block { + Caller next; // for use in linked lists + Object *obj; + Method meth; +} CallBlock; + +#define initCallBlock() { 0, 0, 0 } + +typedef struct { + Object super; + int value; + Caller queue; +} Semaphore; + +void Wait(Semaphore*, int); +void Signal(Semaphore*, int); + +#define initSemaphore(n) { initObject(), n, 0 } + +#endif