YF30137 七脚数码管显示驱动(Charlieplexing) + 取消 Boot strap 下载检测 (APP V1.00.30 / Boot V1.00.06)
This commit is contained in:
parent
5917cafb0c
commit
e74751634b
@ -31,14 +31,9 @@ Section Cross References
|
||||
system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(i.__set_PRIMASK) for __set_PRIMASK
|
||||
system_n32wb03x.o(i.read_flash_ID) refers to system_n32wb03x.o(.constdata) for CMD_RDID
|
||||
system_n32wb03x.o(i.system_delay_n_10us) refers to system_n32wb03x.o(.emb_text) for system_delay_cycles
|
||||
main.o(i.boot_dl_strap_active) refers to n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk) for RCC_EnableAPB2PeriphClk
|
||||
main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitStruct) for GPIO_InitStruct
|
||||
main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_InitPeripheral) for GPIO_InitPeripheral
|
||||
main.o(i.boot_dl_strap_active) refers to n32wb03x_gpio.o(i.GPIO_ReadInputDataBit) for GPIO_ReadInputDataBit
|
||||
main.o(i.main) refers to boot_crc32.o(i.caiic_crc32) for caiic_crc32
|
||||
main.o(i.main) refers to boot_usart.o(i.boot_usart_init) for boot_usart_init
|
||||
main.o(i.main) refers to main.o(i.puts_boot) for puts_boot
|
||||
main.o(i.main) refers to main.o(i.boot_dl_strap_active) for boot_dl_strap_active
|
||||
main.o(i.main) refers to boot_usart.o(i.boot_millis) for boot_millis
|
||||
main.o(i.main) refers to boot_usart.o(i.boot_usart_read) for boot_usart_read
|
||||
main.o(i.main) refers to main.o(i.image_sane) for image_sane
|
||||
@ -346,6 +341,7 @@ Removing Unused input sections from the image.
|
||||
Removing n32wb03x_gpio.o(i.GPIO_DeInit), (68 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_DeInitPin), (126 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_ReadInputData), (8 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_ReadInputDataBit), (20 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputData), (8 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_ReadOutputDataBit), (20 bytes).
|
||||
Removing n32wb03x_gpio.o(i.GPIO_ResetBits), (4 bytes).
|
||||
@ -388,7 +384,7 @@ Removing Unused input sections from the image.
|
||||
Removing n32wb03x_qflash.o(i.Qflash_Read), (68 bytes).
|
||||
Removing n32wb03x_gpio.o(i.__ARM_common_switch8), (28 bytes).
|
||||
|
||||
97 unused section(s) (total 3906 bytes) removed from the image.
|
||||
98 unused section(s) (total 3926 bytes) removed from the image.
|
||||
|
||||
==============================================================================
|
||||
|
||||
@ -398,46 +394,46 @@ Image Symbol Table
|
||||
|
||||
Symbol Name Value Ov Type Size Object(Section)
|
||||
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 islower_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isgraph_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isdigit_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 iscntrl_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isblank_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalpha_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isxdigit_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isupper_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isalnum_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ctype_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isspace_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 ispunct_o.o ABSOLUTE
|
||||
../clib/microlib/ctype/ctype.c 0x00000000 Number 0 isprint_o.o ABSOLUTE
|
||||
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
|
||||
../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
|
||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
|
||||
../clib/microlib/string/memchr.c 0x00000000 Number 0 memchr.o ABSOLUTE
|
||||
../clib/microlib/string/memcmp.c 0x00000000 Number 0 memcmp.o ABSOLUTE
|
||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
|
||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE
|
||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
|
||||
../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE
|
||||
../clib/microlib/string/strcmp.c 0x00000000 Number 0 strcmp.o ABSOLUTE
|
||||
../clib/microlib/string/strcpy.c 0x00000000 Number 0 strcpy.o ABSOLUTE
|
||||
../clib/microlib/string/strlen.c 0x00000000 Number 0 strlen.o ABSOLUTE
|
||||
../clib/microlib/string/strncmp.c 0x00000000 Number 0 strncmp.o ABSOLUTE
|
||||
../clib/scanf.c 0x00000000 Number 0 strtoul.o ABSOLUTE
|
||||
../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE
|
||||
../clib/scanf.c 0x00000000 Number 0 _strtoul.o ABSOLUTE
|
||||
../clib/scanf.c 0x00000000 Number 0 _chval.o ABSOLUTE
|
||||
..\..\mcm-ddc-ble\src\app_bootset.c 0x00000000 Number 0 app_bootset.o ABSOLUTE
|
||||
..\..\mcm-ddc-ble\src\app_ota.c 0x00000000 Number 0 app_ota.o ABSOLUTE
|
||||
..\..\nations-tec\N32WB03x_SDK_V2.0.0\firmware\CMSIS\device\startup\startup_n32wb03x.s 0x00000000 Number 0 startup_n32wb03x.o ABSOLUTE
|
||||
@ -514,117 +510,114 @@ Image Symbol Table
|
||||
i.DMA_RequestRemap 0x01000dbc Section 0 n32wb03x_dma.o(i.DMA_RequestRemap)
|
||||
i.GPIO_InitPeripheral 0x01000dcc Section 0 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
||||
i.GPIO_InitStruct 0x01000ed4 Section 0 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
||||
i.GPIO_ReadInputDataBit 0x01000ef0 Section 0 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
|
||||
i.OTPTrim_Read 0x01000f04 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
|
||||
i.Qflash_Erase_Sector 0x01000fd0 Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||
i.Qflash_Init 0x0100100c Section 0 n32wb03x_qflash.o(i.Qflash_Init)
|
||||
i.Qflash_Write 0x01001044 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
|
||||
i.RCC_EnableAHBPeriphClk 0x01001088 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||
i.RCC_EnableAPB2PeriphClk 0x010010a8 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||
i.RCC_GetClocksFreqValue 0x010010c8 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||
i.RCC_HsiCalib 0x0100116c Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||
RCC_HsiCalib 0x0100116d Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||
i.SystemInit 0x0100129c Section 0 system_n32wb03x.o(i.SystemInit)
|
||||
i.SystemTrimValueRead 0x010013b8 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||
i.USART_Enable 0x010013cc Section 0 n32wb03x_usart.o(i.USART_Enable)
|
||||
i.USART_EnableDMA 0x010013ec Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||
i.USART_GetFlagStatus 0x01001400 Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||
i.USART_Init 0x01001420 Section 0 n32wb03x_usart.o(i.USART_Init)
|
||||
i.USART_SendData 0x010014d4 Section 0 n32wb03x_usart.o(i.USART_SendData)
|
||||
i.__aeabi_errno_addr 0x010014dc Section 0 errno.o(i.__aeabi_errno_addr)
|
||||
i.__scatterload_copy 0x010014e4 Section 14 handlers.o(i.__scatterload_copy)
|
||||
i.__scatterload_null 0x010014f2 Section 2 handlers.o(i.__scatterload_null)
|
||||
i.__scatterload_zeroinit 0x010014f4 Section 14 handlers.o(i.__scatterload_zeroinit)
|
||||
i.__set_PRIMASK 0x01001502 Section 0 system_n32wb03x.o(i.__set_PRIMASK)
|
||||
__set_PRIMASK 0x01001503 Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
|
||||
i.__set_PRIMASK 0x01001508 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||
__set_PRIMASK 0x01001509 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||
i.app_ota_abort 0x01001510 Section 0 app_ota.o(i.app_ota_abort)
|
||||
i.app_ota_chan_idle 0x0100154c Section 0 app_ota.o(i.app_ota_chan_idle)
|
||||
i.app_ota_chan_rx 0x01001560 Section 0 app_ota.o(i.app_ota_chan_rx)
|
||||
i.app_ota_chan_rx_uart 0x010016a0 Section 0 app_ota.o(i.app_ota_chan_rx_uart)
|
||||
i.app_ota_handle_frame 0x010016c4 Section 0 app_ota.o(i.app_ota_handle_frame)
|
||||
i.app_ota_reset_poll 0x01001740 Section 0 app_ota.o(i.app_ota_reset_poll)
|
||||
i.boot_cli_redraw 0x0100179c Section 0 boot_cli.o(i.boot_cli_redraw)
|
||||
boot_cli_redraw 0x0100179d Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
|
||||
i.boot_cli_run 0x010017e8 Section 0 boot_cli.o(i.boot_cli_run)
|
||||
i.boot_cli_tab_complete 0x01001a08 Section 0 boot_cli.o(i.boot_cli_tab_complete)
|
||||
boot_cli_tab_complete 0x01001a09 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
|
||||
i.boot_delay_ms 0x01001b4c Section 0 boot_usart.o(i.boot_delay_ms)
|
||||
i.boot_dl_strap_active 0x01001b64 Section 0 main.o(i.boot_dl_strap_active)
|
||||
boot_dl_strap_active 0x01001b65 Thumb Code 58 main.o(i.boot_dl_strap_active)
|
||||
i.boot_millis 0x01001ba4 Section 0 boot_usart.o(i.boot_millis)
|
||||
i.boot_usart_init 0x01001bcc Section 0 boot_usart.o(i.boot_usart_init)
|
||||
i.boot_usart_read 0x01001cdc Section 0 boot_usart.o(i.boot_usart_read)
|
||||
i.boot_usart_rx_head 0x01001d1c Section 0 boot_usart.o(i.boot_usart_rx_head)
|
||||
boot_usart_rx_head 0x01001d1d Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
|
||||
i.boot_usart_write 0x01001d34 Section 0 boot_usart.o(i.boot_usart_write)
|
||||
i.bootset_commit 0x01001d64 Section 0 app_bootset.o(i.bootset_commit)
|
||||
bootset_commit 0x01001d65 Thumb Code 74 app_bootset.o(i.bootset_commit)
|
||||
i.bootset_crc 0x01001db8 Section 0 app_bootset.o(i.bootset_crc)
|
||||
bootset_crc 0x01001db9 Thumb Code 14 app_bootset.o(i.bootset_crc)
|
||||
i.bootset_ensure_qflash 0x01001dc8 Section 0 app_bootset.o(i.bootset_ensure_qflash)
|
||||
bootset_ensure_qflash 0x01001dc9 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
|
||||
i.bootset_print 0x01001de4 Section 0 app_bootset.o(i.bootset_print)
|
||||
bootset_print 0x01001de5 Thumb Code 98 app_bootset.o(i.bootset_print)
|
||||
i.bootset_valid 0x01001f50 Section 0 app_bootset.o(i.bootset_valid)
|
||||
bootset_valid 0x01001f51 Thumb Code 32 app_bootset.o(i.bootset_valid)
|
||||
i.caiic_crc32 0x01001f74 Section 0 boot_crc32.o(i.caiic_crc32)
|
||||
i.cli_exec_line 0x01001fb8 Section 0 boot_cli.o(i.cli_exec_line)
|
||||
cli_exec_line 0x01001fb9 Thumb Code 162 boot_cli.o(i.cli_exec_line)
|
||||
i.cli_history_add 0x01002084 Section 0 boot_cli.o(i.cli_history_add)
|
||||
cli_history_add 0x01002085 Thumb Code 106 boot_cli.o(i.cli_history_add)
|
||||
i.cli_history_get 0x010020fc Section 0 boot_cli.o(i.cli_history_get)
|
||||
cli_history_get 0x010020fd Thumb Code 36 boot_cli.o(i.cli_history_get)
|
||||
i.cli_printf 0x01002128 Section 0 boot_cli.o(i.cli_printf)
|
||||
i.cli_write 0x010022c4 Section 0 boot_cli.o(i.cli_write)
|
||||
i.image_sane 0x010022dc Section 0 main.o(i.image_sane)
|
||||
image_sane 0x010022dd Thumb Code 44 main.o(i.image_sane)
|
||||
i.jump_to_app 0x01002310 Section 0 main.o(i.jump_to_app)
|
||||
jump_to_app 0x01002311 Thumb Code 30 main.o(i.jump_to_app)
|
||||
i.main 0x01002334 Section 0 main.o(i.main)
|
||||
i.ota_crc16 0x010024f8 Section 0 app_ota.o(i.ota_crc16)
|
||||
ota_crc16 0x010024f9 Thumb Code 68 app_ota.o(i.ota_crc16)
|
||||
i.ota_erase_up_to 0x01002544 Section 0 app_ota.o(i.ota_erase_up_to)
|
||||
ota_erase_up_to 0x01002545 Thumb Code 54 app_ota.o(i.ota_erase_up_to)
|
||||
i.ota_on_begin 0x01002584 Section 0 app_ota.o(i.ota_on_begin)
|
||||
ota_on_begin 0x01002585 Thumb Code 294 app_ota.o(i.ota_on_begin)
|
||||
i.ota_on_data 0x010026f4 Section 0 app_ota.o(i.ota_on_data)
|
||||
ota_on_data 0x010026f5 Thumb Code 396 app_ota.o(i.ota_on_data)
|
||||
i.ota_on_end 0x0100289c Section 0 app_ota.o(i.ota_on_end)
|
||||
ota_on_end 0x0100289d Thumb Code 326 app_ota.o(i.ota_on_end)
|
||||
i.ota_program 0x01002a0c Section 0 app_ota.o(i.ota_program)
|
||||
ota_program 0x01002a0d Thumb Code 46 app_ota.o(i.ota_program)
|
||||
i.ota_rd32 0x01002a44 Section 0 app_ota.o(i.ota_rd32)
|
||||
ota_rd32 0x01002a45 Thumb Code 24 app_ota.o(i.ota_rd32)
|
||||
i.ota_respond 0x01002a5c Section 0 app_ota.o(i.ota_respond)
|
||||
ota_respond 0x01002a5d Thumb Code 118 app_ota.o(i.ota_respond)
|
||||
i.ota_uart_sink 0x01002ad8 Section 0 app_ota.o(i.ota_uart_sink)
|
||||
ota_uart_sink 0x01002ad9 Thumb Code 22 app_ota.o(i.ota_uart_sink)
|
||||
i.ota_update_bootsetting 0x01002af4 Section 0 app_ota.o(i.ota_update_bootsetting)
|
||||
ota_update_bootsetting 0x01002af5 Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
|
||||
i.parse_u32 0x01002bc0 Section 0 app_bootset.o(i.parse_u32)
|
||||
parse_u32 0x01002bc1 Thumb Code 46 app_bootset.o(i.parse_u32)
|
||||
i.puts_boot 0x01002bee Section 0 main.o(i.puts_boot)
|
||||
puts_boot 0x01002bef Thumb Code 24 main.o(i.puts_boot)
|
||||
i.read_flash_ID 0x01002c08 Section 0 system_n32wb03x.o(i.read_flash_ID)
|
||||
read_flash_ID 0x01002c09 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
|
||||
i.str_pad 0x01002c4c Section 0 boot_cli.o(i.str_pad)
|
||||
str_pad 0x01002c4d Thumb Code 78 boot_cli.o(i.str_pad)
|
||||
i.u32_to_str 0x01002c9a Section 0 boot_cli.o(i.u32_to_str)
|
||||
u32_to_str 0x01002c9b Thumb Code 108 boot_cli.o(i.u32_to_str)
|
||||
.constdata 0x01002d06 Section 472 system_n32wb03x.o(.constdata)
|
||||
.constdata 0x01002ee0 Section 108 boot_cli.o(.constdata)
|
||||
s_cmds 0x01002ee0 Data 108 boot_cli.o(.constdata)
|
||||
.constdata 0x01002f4c Section 12 n32wb03x_rcc.o(.constdata)
|
||||
s_ApbPresTable 0x01002f4c Data 8 n32wb03x_rcc.o(.constdata)
|
||||
s_AhbPresTable 0x01002f54 Data 4 n32wb03x_rcc.o(.constdata)
|
||||
.constdata 0x01002f58 Section 804 n32wb03x_qflash.o(.constdata)
|
||||
.constdata 0x0100327c Section 129 ctype_o.o(.constdata)
|
||||
.constdata 0x01003300 Section 4 ctype_o.o(.constdata)
|
||||
table 0x01003300 Data 4 ctype_o.o(.constdata)
|
||||
.conststring 0x01003304 Section 666 boot_cli.o(.conststring)
|
||||
.conststring 0x010035a0 Section 145 app_bootset.o(.conststring)
|
||||
i.OTPTrim_Read 0x01000ef0 Section 0 system_n32wb03x.o(i.OTPTrim_Read)
|
||||
i.Qflash_Erase_Sector 0x01000fbc Section 0 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||
i.Qflash_Init 0x01000ff8 Section 0 n32wb03x_qflash.o(i.Qflash_Init)
|
||||
i.Qflash_Write 0x01001030 Section 0 n32wb03x_qflash.o(i.Qflash_Write)
|
||||
i.RCC_EnableAHBPeriphClk 0x01001074 Section 0 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||
i.RCC_EnableAPB2PeriphClk 0x01001094 Section 0 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||
i.RCC_GetClocksFreqValue 0x010010b4 Section 0 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||
i.RCC_HsiCalib 0x01001158 Section 0 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||
RCC_HsiCalib 0x01001159 Thumb Code 296 system_n32wb03x.o(i.RCC_HsiCalib)
|
||||
i.SystemInit 0x01001288 Section 0 system_n32wb03x.o(i.SystemInit)
|
||||
i.SystemTrimValueRead 0x010013a4 Section 0 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||
i.USART_Enable 0x010013b8 Section 0 n32wb03x_usart.o(i.USART_Enable)
|
||||
i.USART_EnableDMA 0x010013d8 Section 0 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||
i.USART_GetFlagStatus 0x010013ec Section 0 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||
i.USART_Init 0x0100140c Section 0 n32wb03x_usart.o(i.USART_Init)
|
||||
i.USART_SendData 0x010014c0 Section 0 n32wb03x_usart.o(i.USART_SendData)
|
||||
i.__aeabi_errno_addr 0x010014c8 Section 0 errno.o(i.__aeabi_errno_addr)
|
||||
i.__scatterload_copy 0x010014d0 Section 14 handlers.o(i.__scatterload_copy)
|
||||
i.__scatterload_null 0x010014de Section 2 handlers.o(i.__scatterload_null)
|
||||
i.__scatterload_zeroinit 0x010014e0 Section 14 handlers.o(i.__scatterload_zeroinit)
|
||||
i.__set_PRIMASK 0x010014ee Section 0 system_n32wb03x.o(i.__set_PRIMASK)
|
||||
__set_PRIMASK 0x010014ef Thumb Code 6 system_n32wb03x.o(i.__set_PRIMASK)
|
||||
i.__set_PRIMASK 0x010014f4 Section 0 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||
__set_PRIMASK 0x010014f5 Thumb Code 6 n32wb03x_qflash.o(i.__set_PRIMASK)
|
||||
i.app_ota_abort 0x010014fc Section 0 app_ota.o(i.app_ota_abort)
|
||||
i.app_ota_chan_idle 0x01001538 Section 0 app_ota.o(i.app_ota_chan_idle)
|
||||
i.app_ota_chan_rx 0x0100154c Section 0 app_ota.o(i.app_ota_chan_rx)
|
||||
i.app_ota_chan_rx_uart 0x0100168c Section 0 app_ota.o(i.app_ota_chan_rx_uart)
|
||||
i.app_ota_handle_frame 0x010016b0 Section 0 app_ota.o(i.app_ota_handle_frame)
|
||||
i.app_ota_reset_poll 0x0100172c Section 0 app_ota.o(i.app_ota_reset_poll)
|
||||
i.boot_cli_redraw 0x01001788 Section 0 boot_cli.o(i.boot_cli_redraw)
|
||||
boot_cli_redraw 0x01001789 Thumb Code 60 boot_cli.o(i.boot_cli_redraw)
|
||||
i.boot_cli_run 0x010017d4 Section 0 boot_cli.o(i.boot_cli_run)
|
||||
i.boot_cli_tab_complete 0x010019f4 Section 0 boot_cli.o(i.boot_cli_tab_complete)
|
||||
boot_cli_tab_complete 0x010019f5 Thumb Code 306 boot_cli.o(i.boot_cli_tab_complete)
|
||||
i.boot_delay_ms 0x01001b38 Section 0 boot_usart.o(i.boot_delay_ms)
|
||||
i.boot_millis 0x01001b50 Section 0 boot_usart.o(i.boot_millis)
|
||||
i.boot_usart_init 0x01001b78 Section 0 boot_usart.o(i.boot_usart_init)
|
||||
i.boot_usart_read 0x01001c88 Section 0 boot_usart.o(i.boot_usart_read)
|
||||
i.boot_usart_rx_head 0x01001cc8 Section 0 boot_usart.o(i.boot_usart_rx_head)
|
||||
boot_usart_rx_head 0x01001cc9 Thumb Code 18 boot_usart.o(i.boot_usart_rx_head)
|
||||
i.boot_usart_write 0x01001ce0 Section 0 boot_usart.o(i.boot_usart_write)
|
||||
i.bootset_commit 0x01001d10 Section 0 app_bootset.o(i.bootset_commit)
|
||||
bootset_commit 0x01001d11 Thumb Code 74 app_bootset.o(i.bootset_commit)
|
||||
i.bootset_crc 0x01001d64 Section 0 app_bootset.o(i.bootset_crc)
|
||||
bootset_crc 0x01001d65 Thumb Code 14 app_bootset.o(i.bootset_crc)
|
||||
i.bootset_ensure_qflash 0x01001d74 Section 0 app_bootset.o(i.bootset_ensure_qflash)
|
||||
bootset_ensure_qflash 0x01001d75 Thumb Code 22 app_bootset.o(i.bootset_ensure_qflash)
|
||||
i.bootset_print 0x01001d90 Section 0 app_bootset.o(i.bootset_print)
|
||||
bootset_print 0x01001d91 Thumb Code 98 app_bootset.o(i.bootset_print)
|
||||
i.bootset_valid 0x01001efc Section 0 app_bootset.o(i.bootset_valid)
|
||||
bootset_valid 0x01001efd Thumb Code 32 app_bootset.o(i.bootset_valid)
|
||||
i.caiic_crc32 0x01001f20 Section 0 boot_crc32.o(i.caiic_crc32)
|
||||
i.cli_exec_line 0x01001f64 Section 0 boot_cli.o(i.cli_exec_line)
|
||||
cli_exec_line 0x01001f65 Thumb Code 162 boot_cli.o(i.cli_exec_line)
|
||||
i.cli_history_add 0x01002030 Section 0 boot_cli.o(i.cli_history_add)
|
||||
cli_history_add 0x01002031 Thumb Code 106 boot_cli.o(i.cli_history_add)
|
||||
i.cli_history_get 0x010020a8 Section 0 boot_cli.o(i.cli_history_get)
|
||||
cli_history_get 0x010020a9 Thumb Code 36 boot_cli.o(i.cli_history_get)
|
||||
i.cli_printf 0x010020d4 Section 0 boot_cli.o(i.cli_printf)
|
||||
i.cli_write 0x01002270 Section 0 boot_cli.o(i.cli_write)
|
||||
i.image_sane 0x01002288 Section 0 main.o(i.image_sane)
|
||||
image_sane 0x01002289 Thumb Code 44 main.o(i.image_sane)
|
||||
i.jump_to_app 0x010022bc Section 0 main.o(i.jump_to_app)
|
||||
jump_to_app 0x010022bd Thumb Code 30 main.o(i.jump_to_app)
|
||||
i.main 0x010022e0 Section 0 main.o(i.main)
|
||||
i.ota_crc16 0x01002464 Section 0 app_ota.o(i.ota_crc16)
|
||||
ota_crc16 0x01002465 Thumb Code 68 app_ota.o(i.ota_crc16)
|
||||
i.ota_erase_up_to 0x010024b0 Section 0 app_ota.o(i.ota_erase_up_to)
|
||||
ota_erase_up_to 0x010024b1 Thumb Code 54 app_ota.o(i.ota_erase_up_to)
|
||||
i.ota_on_begin 0x010024f0 Section 0 app_ota.o(i.ota_on_begin)
|
||||
ota_on_begin 0x010024f1 Thumb Code 294 app_ota.o(i.ota_on_begin)
|
||||
i.ota_on_data 0x01002660 Section 0 app_ota.o(i.ota_on_data)
|
||||
ota_on_data 0x01002661 Thumb Code 396 app_ota.o(i.ota_on_data)
|
||||
i.ota_on_end 0x01002808 Section 0 app_ota.o(i.ota_on_end)
|
||||
ota_on_end 0x01002809 Thumb Code 326 app_ota.o(i.ota_on_end)
|
||||
i.ota_program 0x01002978 Section 0 app_ota.o(i.ota_program)
|
||||
ota_program 0x01002979 Thumb Code 46 app_ota.o(i.ota_program)
|
||||
i.ota_rd32 0x010029b0 Section 0 app_ota.o(i.ota_rd32)
|
||||
ota_rd32 0x010029b1 Thumb Code 24 app_ota.o(i.ota_rd32)
|
||||
i.ota_respond 0x010029c8 Section 0 app_ota.o(i.ota_respond)
|
||||
ota_respond 0x010029c9 Thumb Code 118 app_ota.o(i.ota_respond)
|
||||
i.ota_uart_sink 0x01002a44 Section 0 app_ota.o(i.ota_uart_sink)
|
||||
ota_uart_sink 0x01002a45 Thumb Code 22 app_ota.o(i.ota_uart_sink)
|
||||
i.ota_update_bootsetting 0x01002a60 Section 0 app_ota.o(i.ota_update_bootsetting)
|
||||
ota_update_bootsetting 0x01002a61 Thumb Code 174 app_ota.o(i.ota_update_bootsetting)
|
||||
i.parse_u32 0x01002b2c Section 0 app_bootset.o(i.parse_u32)
|
||||
parse_u32 0x01002b2d Thumb Code 46 app_bootset.o(i.parse_u32)
|
||||
i.puts_boot 0x01002b5a Section 0 main.o(i.puts_boot)
|
||||
puts_boot 0x01002b5b Thumb Code 24 main.o(i.puts_boot)
|
||||
i.read_flash_ID 0x01002b74 Section 0 system_n32wb03x.o(i.read_flash_ID)
|
||||
read_flash_ID 0x01002b75 Thumb Code 62 system_n32wb03x.o(i.read_flash_ID)
|
||||
i.str_pad 0x01002bb8 Section 0 boot_cli.o(i.str_pad)
|
||||
str_pad 0x01002bb9 Thumb Code 78 boot_cli.o(i.str_pad)
|
||||
i.u32_to_str 0x01002c06 Section 0 boot_cli.o(i.u32_to_str)
|
||||
u32_to_str 0x01002c07 Thumb Code 108 boot_cli.o(i.u32_to_str)
|
||||
.constdata 0x01002c72 Section 472 system_n32wb03x.o(.constdata)
|
||||
.constdata 0x01002e4c Section 108 boot_cli.o(.constdata)
|
||||
s_cmds 0x01002e4c Data 108 boot_cli.o(.constdata)
|
||||
.constdata 0x01002eb8 Section 12 n32wb03x_rcc.o(.constdata)
|
||||
s_ApbPresTable 0x01002eb8 Data 8 n32wb03x_rcc.o(.constdata)
|
||||
s_AhbPresTable 0x01002ec0 Data 4 n32wb03x_rcc.o(.constdata)
|
||||
.constdata 0x01002ec4 Section 804 n32wb03x_qflash.o(.constdata)
|
||||
.constdata 0x010031e8 Section 129 ctype_o.o(.constdata)
|
||||
.constdata 0x0100326c Section 4 ctype_o.o(.constdata)
|
||||
table 0x0100326c Data 4 ctype_o.o(.constdata)
|
||||
.conststring 0x01003270 Section 666 boot_cli.o(.conststring)
|
||||
.conststring 0x0100350c Section 145 app_bootset.o(.conststring)
|
||||
.data 0x20004000 Section 4 system_n32wb03x.o(.data)
|
||||
.data 0x20004004 Section 8 boot_usart.o(.data)
|
||||
s_rxTail 0x20004004 Data 2 boot_usart.o(.data)
|
||||
@ -772,48 +765,47 @@ Image Symbol Table
|
||||
DMA_RequestRemap 0x01000dbd Thumb Code 16 n32wb03x_dma.o(i.DMA_RequestRemap)
|
||||
GPIO_InitPeripheral 0x01000dcd Thumb Code 262 n32wb03x_gpio.o(i.GPIO_InitPeripheral)
|
||||
GPIO_InitStruct 0x01000ed5 Thumb Code 24 n32wb03x_gpio.o(i.GPIO_InitStruct)
|
||||
GPIO_ReadInputDataBit 0x01000ef1 Thumb Code 20 n32wb03x_gpio.o(i.GPIO_ReadInputDataBit)
|
||||
OTPTrim_Read 0x01000f05 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
|
||||
Qflash_Erase_Sector 0x01000fd1 Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||
Qflash_Init 0x0100100d Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
|
||||
Qflash_Write 0x01001045 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
|
||||
RCC_EnableAHBPeriphClk 0x01001089 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||
RCC_EnableAPB2PeriphClk 0x010010a9 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||
RCC_GetClocksFreqValue 0x010010c9 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||
SystemInit 0x0100129d Thumb Code 250 system_n32wb03x.o(i.SystemInit)
|
||||
SystemTrimValueRead 0x010013b9 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||
USART_Enable 0x010013cd Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
|
||||
USART_EnableDMA 0x010013ed Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||
USART_GetFlagStatus 0x01001401 Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||
USART_Init 0x01001421 Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
|
||||
USART_SendData 0x010014d5 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
|
||||
__aeabi_errno_addr 0x010014dd Thumb Code 4 errno.o(i.__aeabi_errno_addr)
|
||||
__rt_errno_addr 0x010014dd Thumb Code 0 errno.o(i.__aeabi_errno_addr)
|
||||
__scatterload_copy 0x010014e5 Thumb Code 14 handlers.o(i.__scatterload_copy)
|
||||
__scatterload_null 0x010014f3 Thumb Code 2 handlers.o(i.__scatterload_null)
|
||||
__scatterload_zeroinit 0x010014f5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
||||
app_ota_abort 0x01001511 Thumb Code 32 app_ota.o(i.app_ota_abort)
|
||||
app_ota_chan_idle 0x0100154d Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
|
||||
app_ota_chan_rx 0x01001561 Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
|
||||
app_ota_chan_rx_uart 0x010016a1 Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
|
||||
app_ota_handle_frame 0x010016c5 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
|
||||
app_ota_reset_poll 0x01001741 Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
|
||||
boot_cli_run 0x010017e9 Thumb Code 432 boot_cli.o(i.boot_cli_run)
|
||||
boot_delay_ms 0x01001b4d Thumb Code 24 boot_usart.o(i.boot_delay_ms)
|
||||
boot_millis 0x01001ba5 Thumb Code 30 boot_usart.o(i.boot_millis)
|
||||
boot_usart_init 0x01001bcd Thumb Code 238 boot_usart.o(i.boot_usart_init)
|
||||
boot_usart_read 0x01001cdd Thumb Code 54 boot_usart.o(i.boot_usart_read)
|
||||
boot_usart_write 0x01001d35 Thumb Code 42 boot_usart.o(i.boot_usart_write)
|
||||
caiic_crc32 0x01001f75 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
|
||||
cli_printf 0x01002129 Thumb Code 408 boot_cli.o(i.cli_printf)
|
||||
cli_write 0x010022c5 Thumb Code 22 boot_cli.o(i.cli_write)
|
||||
main 0x01002335 Thumb Code 210 main.o(i.main)
|
||||
TRIM_READ_CMD_CODE 0x01002d06 Data 320 system_n32wb03x.o(.constdata)
|
||||
CMD_RDID 0x01002e46 Data 152 system_n32wb03x.o(.constdata)
|
||||
const_qflash_cmd 0x01002f58 Data 804 n32wb03x_qflash.o(.constdata)
|
||||
__ctype_table 0x0100327c Data 129 ctype_o.o(.constdata)
|
||||
Region$$Table$$Base 0x01003634 Number 0 anon$$obj.o(Region$$Table)
|
||||
Region$$Table$$Limit 0x01003654 Number 0 anon$$obj.o(Region$$Table)
|
||||
OTPTrim_Read 0x01000ef1 Thumb Code 192 system_n32wb03x.o(i.OTPTrim_Read)
|
||||
Qflash_Erase_Sector 0x01000fbd Thumb Code 54 n32wb03x_qflash.o(i.Qflash_Erase_Sector)
|
||||
Qflash_Init 0x01000ff9 Thumb Code 36 n32wb03x_qflash.o(i.Qflash_Init)
|
||||
Qflash_Write 0x01001031 Thumb Code 62 n32wb03x_qflash.o(i.Qflash_Write)
|
||||
RCC_EnableAHBPeriphClk 0x01001075 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAHBPeriphClk)
|
||||
RCC_EnableAPB2PeriphClk 0x01001095 Thumb Code 28 n32wb03x_rcc.o(i.RCC_EnableAPB2PeriphClk)
|
||||
RCC_GetClocksFreqValue 0x010010b5 Thumb Code 140 n32wb03x_rcc.o(i.RCC_GetClocksFreqValue)
|
||||
SystemInit 0x01001289 Thumb Code 250 system_n32wb03x.o(i.SystemInit)
|
||||
SystemTrimValueRead 0x010013a5 Thumb Code 20 system_n32wb03x.o(i.SystemTrimValueRead)
|
||||
USART_Enable 0x010013b9 Thumb Code 26 n32wb03x_usart.o(i.USART_Enable)
|
||||
USART_EnableDMA 0x010013d9 Thumb Code 20 n32wb03x_usart.o(i.USART_EnableDMA)
|
||||
USART_GetFlagStatus 0x010013ed Thumb Code 30 n32wb03x_usart.o(i.USART_GetFlagStatus)
|
||||
USART_Init 0x0100140d Thumb Code 162 n32wb03x_usart.o(i.USART_Init)
|
||||
USART_SendData 0x010014c1 Thumb Code 8 n32wb03x_usart.o(i.USART_SendData)
|
||||
__aeabi_errno_addr 0x010014c9 Thumb Code 4 errno.o(i.__aeabi_errno_addr)
|
||||
__rt_errno_addr 0x010014c9 Thumb Code 0 errno.o(i.__aeabi_errno_addr)
|
||||
__scatterload_copy 0x010014d1 Thumb Code 14 handlers.o(i.__scatterload_copy)
|
||||
__scatterload_null 0x010014df Thumb Code 2 handlers.o(i.__scatterload_null)
|
||||
__scatterload_zeroinit 0x010014e1 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
||||
app_ota_abort 0x010014fd Thumb Code 32 app_ota.o(i.app_ota_abort)
|
||||
app_ota_chan_idle 0x01001539 Thumb Code 12 app_ota.o(i.app_ota_chan_idle)
|
||||
app_ota_chan_rx 0x0100154d Thumb Code 298 app_ota.o(i.app_ota_chan_rx)
|
||||
app_ota_chan_rx_uart 0x0100168d Thumb Code 26 app_ota.o(i.app_ota_chan_rx_uart)
|
||||
app_ota_handle_frame 0x010016b1 Thumb Code 106 app_ota.o(i.app_ota_handle_frame)
|
||||
app_ota_reset_poll 0x0100172d Thumb Code 70 app_ota.o(i.app_ota_reset_poll)
|
||||
boot_cli_run 0x010017d5 Thumb Code 432 boot_cli.o(i.boot_cli_run)
|
||||
boot_delay_ms 0x01001b39 Thumb Code 24 boot_usart.o(i.boot_delay_ms)
|
||||
boot_millis 0x01001b51 Thumb Code 30 boot_usart.o(i.boot_millis)
|
||||
boot_usart_init 0x01001b79 Thumb Code 238 boot_usart.o(i.boot_usart_init)
|
||||
boot_usart_read 0x01001c89 Thumb Code 54 boot_usart.o(i.boot_usart_read)
|
||||
boot_usart_write 0x01001ce1 Thumb Code 42 boot_usart.o(i.boot_usart_write)
|
||||
caiic_crc32 0x01001f21 Thumb Code 62 boot_crc32.o(i.caiic_crc32)
|
||||
cli_printf 0x010020d5 Thumb Code 408 boot_cli.o(i.cli_printf)
|
||||
cli_write 0x01002271 Thumb Code 22 boot_cli.o(i.cli_write)
|
||||
main 0x010022e1 Thumb Code 194 main.o(i.main)
|
||||
TRIM_READ_CMD_CODE 0x01002c72 Data 320 system_n32wb03x.o(.constdata)
|
||||
CMD_RDID 0x01002db2 Data 152 system_n32wb03x.o(.constdata)
|
||||
const_qflash_cmd 0x01002ec4 Data 804 n32wb03x_qflash.o(.constdata)
|
||||
__ctype_table 0x010031e8 Data 129 ctype_o.o(.constdata)
|
||||
Region$$Table$$Base 0x010035a0 Number 0 anon$$obj.o(Region$$Table)
|
||||
Region$$Table$$Limit 0x010035c0 Number 0 anon$$obj.o(Region$$Table)
|
||||
SystemCoreClock 0x20004000 Data 4 system_n32wb03x.o(.data)
|
||||
CMD_FLASH_SE 0x20004050 Data 4 n32wb03x_qflash.o(.data)
|
||||
CMD_FLASH_WRITE 0x20004054 Data 4 n32wb03x_qflash.o(.data)
|
||||
@ -829,166 +821,164 @@ Memory Map of the image
|
||||
|
||||
Image Entry point : 0x010000c1
|
||||
|
||||
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x000036b4, Max: 0x00004000, ABSOLUTE)
|
||||
Load Region LR_IROM1 (Base: 0x01000000, Size: 0x00003620, Max: 0x00004000, ABSOLUTE)
|
||||
|
||||
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x00003654, Max: 0x00004000, ABSOLUTE)
|
||||
Execution Region ER_IROM1 (Exec base: 0x01000000, Load base: 0x01000000, Size: 0x000035c0, Max: 0x00004000, ABSOLUTE)
|
||||
|
||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||
|
||||
0x01000000 0x01000000 0x000000c0 Data RO 3 RESET startup_n32wb03x.o
|
||||
0x010000c0 0x010000c0 0x00000000 Code RO 1235 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
|
||||
0x010000c0 0x010000c0 0x00000004 Code RO 1260 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
||||
0x010000c4 0x010000c4 0x00000004 Code RO 1263 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
|
||||
0x010000c8 0x010000c8 0x00000000 Code RO 1265 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
|
||||
0x010000c8 0x010000c8 0x00000000 Code RO 1267 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
||||
0x010000c8 0x010000c8 0x00000008 Code RO 1268 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
|
||||
0x010000d0 0x010000d0 0x00000000 Code RO 1270 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
|
||||
0x010000d0 0x010000d0 0x00000000 Code RO 1272 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
||||
0x010000d0 0x010000d0 0x00000004 Code RO 1261 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
|
||||
0x010000c0 0x010000c0 0x00000000 Code RO 1230 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
|
||||
0x010000c0 0x010000c0 0x00000004 Code RO 1255 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
||||
0x010000c4 0x010000c4 0x00000004 Code RO 1258 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
|
||||
0x010000c8 0x010000c8 0x00000000 Code RO 1260 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
|
||||
0x010000c8 0x010000c8 0x00000000 Code RO 1262 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
||||
0x010000c8 0x010000c8 0x00000008 Code RO 1263 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
|
||||
0x010000d0 0x010000d0 0x00000000 Code RO 1265 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
|
||||
0x010000d0 0x010000d0 0x00000000 Code RO 1267 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
||||
0x010000d0 0x010000d0 0x00000004 Code RO 1256 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
|
||||
0x010000d4 0x010000d4 0x0000000e Code RO 10 .emb_text system_n32wb03x.o
|
||||
0x010000e2 0x010000e2 0x00000002 PAD
|
||||
0x010000e4 0x010000e4 0x0000001c Code RO 4 .text startup_n32wb03x.o
|
||||
0x01000100 0x01000100 0x0000002c Code RO 1238 .text mc_p.l(uidiv.o)
|
||||
0x0100012c 0x0100012c 0x00000024 Code RO 1240 .text mc_p.l(memcpya.o)
|
||||
0x01000150 0x01000150 0x00000024 Code RO 1242 .text mc_p.l(memseta.o)
|
||||
0x01000174 0x01000174 0x0000000e Code RO 1244 .text mc_p.l(strlen.o)
|
||||
0x01000182 0x01000182 0x0000001c Code RO 1246 .text mc_p.l(strcmp.o)
|
||||
0x0100019e 0x0100019e 0x00000014 Code RO 1248 .text mc_p.l(memchr.o)
|
||||
0x010001b2 0x010001b2 0x0000001a Code RO 1250 .text mc_p.l(memcmp.o)
|
||||
0x010001cc 0x010001cc 0x00000012 Code RO 1252 .text mc_p.l(strcpy.o)
|
||||
0x010001de 0x010001de 0x0000001e Code RO 1254 .text mc_p.l(strncmp.o)
|
||||
0x010001fc 0x010001fc 0x00000076 Code RO 1258 .text mc_p.l(strtoul.o)
|
||||
0x01000100 0x01000100 0x0000002c Code RO 1233 .text mc_p.l(uidiv.o)
|
||||
0x0100012c 0x0100012c 0x00000024 Code RO 1235 .text mc_p.l(memcpya.o)
|
||||
0x01000150 0x01000150 0x00000024 Code RO 1237 .text mc_p.l(memseta.o)
|
||||
0x01000174 0x01000174 0x0000000e Code RO 1239 .text mc_p.l(strlen.o)
|
||||
0x01000182 0x01000182 0x0000001c Code RO 1241 .text mc_p.l(strcmp.o)
|
||||
0x0100019e 0x0100019e 0x00000014 Code RO 1243 .text mc_p.l(memchr.o)
|
||||
0x010001b2 0x010001b2 0x0000001a Code RO 1245 .text mc_p.l(memcmp.o)
|
||||
0x010001cc 0x010001cc 0x00000012 Code RO 1247 .text mc_p.l(strcpy.o)
|
||||
0x010001de 0x010001de 0x0000001e Code RO 1249 .text mc_p.l(strncmp.o)
|
||||
0x010001fc 0x010001fc 0x00000076 Code RO 1253 .text mc_p.l(strtoul.o)
|
||||
0x01000272 0x01000272 0x00000002 PAD
|
||||
0x01000274 0x01000274 0x00000008 Code RO 1274 .text mc_p.l(ctype_o.o)
|
||||
0x0100027c 0x0100027c 0x000000a6 Code RO 1309 .text mc_p.l(_strtoul.o)
|
||||
0x01000274 0x01000274 0x00000008 Code RO 1269 .text mc_p.l(ctype_o.o)
|
||||
0x0100027c 0x0100027c 0x000000a6 Code RO 1304 .text mc_p.l(_strtoul.o)
|
||||
0x01000322 0x01000322 0x00000002 PAD
|
||||
0x01000324 0x01000324 0x00000024 Code RO 1311 .text mc_p.l(init.o)
|
||||
0x01000348 0x01000348 0x0000001e Code RO 1313 .text mc_p.l(_chval.o)
|
||||
0x01000324 0x01000324 0x00000024 Code RO 1306 .text mc_p.l(init.o)
|
||||
0x01000348 0x01000348 0x0000001e Code RO 1308 .text mc_p.l(_chval.o)
|
||||
0x01000366 0x01000366 0x00000002 PAD
|
||||
0x01000368 0x01000368 0x000002d8 Code RO 520 i.AppBootset_CmdAppswitch app_bootset.o
|
||||
0x01000640 0x01000640 0x00000020 Code RO 521 i.AppBootset_CmdBsdump app_bootset.o
|
||||
0x01000660 0x01000660 0x000002f8 Code RO 522 i.AppBootset_CmdBsset app_bootset.o
|
||||
0x01000958 0x01000958 0x000000e0 Code RO 295 i.CmdDevInfo boot_cli.o
|
||||
0x01000a38 0x01000a38 0x00000104 Code RO 296 i.CmdHelp boot_cli.o
|
||||
0x01000b3c 0x01000b3c 0x0000001c Code RO 297 i.CmdOta boot_cli.o
|
||||
0x01000b58 0x01000b58 0x0000003c Code RO 298 i.CmdReset boot_cli.o
|
||||
0x01000b94 0x01000b94 0x000000b0 Code RO 299 i.CmdUartInfo boot_cli.o
|
||||
0x01000c44 0x01000c44 0x00000074 Code RO 300 i.CmdVersion boot_cli.o
|
||||
0x01000cb8 0x01000cb8 0x000000a0 Code RO 1113 i.DMA_DeInit n32wb03x_dma.o
|
||||
0x01000d58 0x01000d58 0x0000001c Code RO 1114 i.DMA_EnableChannel n32wb03x_dma.o
|
||||
0x01000d74 0x01000d74 0x00000008 Code RO 1115 i.DMA_GetCurrDataCounter n32wb03x_dma.o
|
||||
0x01000d7c 0x01000d7c 0x00000040 Code RO 1118 i.DMA_Init n32wb03x_dma.o
|
||||
0x01000dbc 0x01000dbc 0x00000010 Code RO 1119 i.DMA_RequestRemap n32wb03x_dma.o
|
||||
0x01000dcc 0x01000dcc 0x00000106 Code RO 825 i.GPIO_InitPeripheral n32wb03x_gpio.o
|
||||
0x01000368 0x01000368 0x000002d8 Code RO 515 i.AppBootset_CmdAppswitch app_bootset.o
|
||||
0x01000640 0x01000640 0x00000020 Code RO 516 i.AppBootset_CmdBsdump app_bootset.o
|
||||
0x01000660 0x01000660 0x000002f8 Code RO 517 i.AppBootset_CmdBsset app_bootset.o
|
||||
0x01000958 0x01000958 0x000000e0 Code RO 290 i.CmdDevInfo boot_cli.o
|
||||
0x01000a38 0x01000a38 0x00000104 Code RO 291 i.CmdHelp boot_cli.o
|
||||
0x01000b3c 0x01000b3c 0x0000001c Code RO 292 i.CmdOta boot_cli.o
|
||||
0x01000b58 0x01000b58 0x0000003c Code RO 293 i.CmdReset boot_cli.o
|
||||
0x01000b94 0x01000b94 0x000000b0 Code RO 294 i.CmdUartInfo boot_cli.o
|
||||
0x01000c44 0x01000c44 0x00000074 Code RO 295 i.CmdVersion boot_cli.o
|
||||
0x01000cb8 0x01000cb8 0x000000a0 Code RO 1108 i.DMA_DeInit n32wb03x_dma.o
|
||||
0x01000d58 0x01000d58 0x0000001c Code RO 1109 i.DMA_EnableChannel n32wb03x_dma.o
|
||||
0x01000d74 0x01000d74 0x00000008 Code RO 1110 i.DMA_GetCurrDataCounter n32wb03x_dma.o
|
||||
0x01000d7c 0x01000d7c 0x00000040 Code RO 1113 i.DMA_Init n32wb03x_dma.o
|
||||
0x01000dbc 0x01000dbc 0x00000010 Code RO 1114 i.DMA_RequestRemap n32wb03x_dma.o
|
||||
0x01000dcc 0x01000dcc 0x00000106 Code RO 820 i.GPIO_InitPeripheral n32wb03x_gpio.o
|
||||
0x01000ed2 0x01000ed2 0x00000002 PAD
|
||||
0x01000ed4 0x01000ed4 0x0000001c Code RO 826 i.GPIO_InitStruct n32wb03x_gpio.o
|
||||
0x01000ef0 0x01000ef0 0x00000014 Code RO 828 i.GPIO_ReadInputDataBit n32wb03x_gpio.o
|
||||
0x01000f04 0x01000f04 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
|
||||
0x01000fd0 0x01000fd0 0x0000003c Code RO 1192 i.Qflash_Erase_Sector n32wb03x_qflash.o
|
||||
0x0100100c 0x0100100c 0x00000038 Code RO 1193 i.Qflash_Init n32wb03x_qflash.o
|
||||
0x01001044 0x01001044 0x00000044 Code RO 1195 i.Qflash_Write n32wb03x_qflash.o
|
||||
0x01001088 0x01001088 0x00000020 Code RO 601 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
|
||||
0x010010a8 0x010010a8 0x00000020 Code RO 605 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
|
||||
0x010010c8 0x010010c8 0x000000a4 Code RO 613 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
|
||||
0x0100116c 0x0100116c 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
|
||||
0x0100129c 0x0100129c 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
|
||||
0x010013b8 0x010013b8 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
|
||||
0x010013cc 0x010013cc 0x00000020 Code RO 947 i.USART_Enable n32wb03x_usart.o
|
||||
0x010013ec 0x010013ec 0x00000014 Code RO 948 i.USART_EnableDMA n32wb03x_usart.o
|
||||
0x01001400 0x01001400 0x0000001e Code RO 954 i.USART_GetFlagStatus n32wb03x_usart.o
|
||||
0x0100141e 0x0100141e 0x00000002 PAD
|
||||
0x01001420 0x01001420 0x000000b4 Code RO 956 i.USART_Init n32wb03x_usart.o
|
||||
0x010014d4 0x010014d4 0x00000008 Code RO 959 i.USART_SendData n32wb03x_usart.o
|
||||
0x010014dc 0x010014dc 0x00000008 Code RO 1302 i.__aeabi_errno_addr mc_p.l(errno.o)
|
||||
0x010014e4 0x010014e4 0x0000000e Code RO 1317 i.__scatterload_copy mc_p.l(handlers.o)
|
||||
0x010014f2 0x010014f2 0x00000002 Code RO 1318 i.__scatterload_null mc_p.l(handlers.o)
|
||||
0x010014f4 0x010014f4 0x0000000e Code RO 1319 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
||||
0x01001502 0x01001502 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
|
||||
0x01001508 0x01001508 0x00000006 Code RO 1196 i.__set_PRIMASK n32wb03x_qflash.o
|
||||
0x0100150e 0x0100150e 0x00000002 PAD
|
||||
0x01001510 0x01001510 0x0000003c Code RO 411 i.app_ota_abort app_ota.o
|
||||
0x0100154c 0x0100154c 0x00000014 Code RO 412 i.app_ota_chan_idle app_ota.o
|
||||
0x01001560 0x01001560 0x00000140 Code RO 413 i.app_ota_chan_rx app_ota.o
|
||||
0x010016a0 0x010016a0 0x00000024 Code RO 414 i.app_ota_chan_rx_uart app_ota.o
|
||||
0x010016c4 0x010016c4 0x0000007c Code RO 416 i.app_ota_handle_frame app_ota.o
|
||||
0x01001740 0x01001740 0x0000005c Code RO 417 i.app_ota_reset_poll app_ota.o
|
||||
0x0100179c 0x0100179c 0x0000004c Code RO 301 i.boot_cli_redraw boot_cli.o
|
||||
0x010017e8 0x010017e8 0x00000220 Code RO 302 i.boot_cli_run boot_cli.o
|
||||
0x01001a08 0x01001a08 0x00000144 Code RO 303 i.boot_cli_tab_complete boot_cli.o
|
||||
0x01001b4c 0x01001b4c 0x00000018 Code RO 244 i.boot_delay_ms boot_usart.o
|
||||
0x01001b64 0x01001b64 0x00000040 Code RO 174 i.boot_dl_strap_active main.o
|
||||
0x01001ba4 0x01001ba4 0x00000028 Code RO 245 i.boot_millis boot_usart.o
|
||||
0x01001bcc 0x01001bcc 0x00000110 Code RO 246 i.boot_usart_init boot_usart.o
|
||||
0x01001cdc 0x01001cdc 0x00000040 Code RO 247 i.boot_usart_read boot_usart.o
|
||||
0x01001d1c 0x01001d1c 0x00000018 Code RO 248 i.boot_usart_rx_head boot_usart.o
|
||||
0x01001d34 0x01001d34 0x00000030 Code RO 249 i.boot_usart_write boot_usart.o
|
||||
0x01001d64 0x01001d64 0x00000054 Code RO 523 i.bootset_commit app_bootset.o
|
||||
0x01001db8 0x01001db8 0x0000000e Code RO 524 i.bootset_crc app_bootset.o
|
||||
0x01001dc6 0x01001dc6 0x00000002 PAD
|
||||
0x01001dc8 0x01001dc8 0x0000001c Code RO 525 i.bootset_ensure_qflash app_bootset.o
|
||||
0x01001de4 0x01001de4 0x0000016c Code RO 526 i.bootset_print app_bootset.o
|
||||
0x01001f50 0x01001f50 0x00000024 Code RO 527 i.bootset_valid app_bootset.o
|
||||
0x01001f74 0x01001f74 0x00000044 Code RO 231 i.caiic_crc32 boot_crc32.o
|
||||
0x01001fb8 0x01001fb8 0x000000cc Code RO 304 i.cli_exec_line boot_cli.o
|
||||
0x01002084 0x01002084 0x00000078 Code RO 305 i.cli_history_add boot_cli.o
|
||||
0x010020fc 0x010020fc 0x0000002c Code RO 306 i.cli_history_get boot_cli.o
|
||||
0x01002128 0x01002128 0x0000019c Code RO 307 i.cli_printf boot_cli.o
|
||||
0x010022c4 0x010022c4 0x00000016 Code RO 308 i.cli_write boot_cli.o
|
||||
0x010022da 0x010022da 0x00000002 PAD
|
||||
0x010022dc 0x010022dc 0x00000034 Code RO 175 i.image_sane main.o
|
||||
0x01002310 0x01002310 0x00000024 Code RO 176 i.jump_to_app main.o
|
||||
0x01002334 0x01002334 0x000001c4 Code RO 177 i.main main.o
|
||||
0x010024f8 0x010024f8 0x0000004c Code RO 418 i.ota_crc16 app_ota.o
|
||||
0x01002544 0x01002544 0x00000040 Code RO 419 i.ota_erase_up_to app_ota.o
|
||||
0x01002584 0x01002584 0x00000170 Code RO 420 i.ota_on_begin app_ota.o
|
||||
0x010026f4 0x010026f4 0x000001a8 Code RO 421 i.ota_on_data app_ota.o
|
||||
0x0100289c 0x0100289c 0x00000170 Code RO 422 i.ota_on_end app_ota.o
|
||||
0x01002a0c 0x01002a0c 0x00000038 Code RO 423 i.ota_program app_ota.o
|
||||
0x01002a44 0x01002a44 0x00000018 Code RO 424 i.ota_rd32 app_ota.o
|
||||
0x01002a5c 0x01002a5c 0x0000007c Code RO 425 i.ota_respond app_ota.o
|
||||
0x01002ad8 0x01002ad8 0x0000001c Code RO 426 i.ota_uart_sink app_ota.o
|
||||
0x01002af4 0x01002af4 0x000000cc Code RO 427 i.ota_update_bootsetting app_ota.o
|
||||
0x01002bc0 0x01002bc0 0x0000002e Code RO 528 i.parse_u32 app_bootset.o
|
||||
0x01002bee 0x01002bee 0x00000018 Code RO 178 i.puts_boot main.o
|
||||
0x01002c06 0x01002c06 0x00000002 PAD
|
||||
0x01002c08 0x01002c08 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
|
||||
0x01002c4c 0x01002c4c 0x0000004e Code RO 309 i.str_pad boot_cli.o
|
||||
0x01002c9a 0x01002c9a 0x0000006c Code RO 310 i.u32_to_str boot_cli.o
|
||||
0x01002d06 0x01002d06 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
|
||||
0x01002ede 0x01002ede 0x00000002 PAD
|
||||
0x01002ee0 0x01002ee0 0x0000006c Data RO 312 .constdata boot_cli.o
|
||||
0x01002f4c 0x01002f4c 0x0000000c Data RO 621 .constdata n32wb03x_rcc.o
|
||||
0x01002f58 0x01002f58 0x00000324 Data RO 1198 .constdata n32wb03x_qflash.o
|
||||
0x0100327c 0x0100327c 0x00000081 Data RO 1275 .constdata mc_p.l(ctype_o.o)
|
||||
0x010032fd 0x010032fd 0x00000003 PAD
|
||||
0x01003300 0x01003300 0x00000004 Data RO 1276 .constdata mc_p.l(ctype_o.o)
|
||||
0x01003304 0x01003304 0x0000029a Data RO 313 .conststring boot_cli.o
|
||||
0x0100359e 0x0100359e 0x00000002 PAD
|
||||
0x010035a0 0x010035a0 0x00000091 Data RO 529 .conststring app_bootset.o
|
||||
0x01003631 0x01003631 0x00000003 PAD
|
||||
0x01003634 0x01003634 0x00000020 Data RO 1315 Region$$Table anon$$obj.o
|
||||
0x01000ed4 0x01000ed4 0x0000001c Code RO 821 i.GPIO_InitStruct n32wb03x_gpio.o
|
||||
0x01000ef0 0x01000ef0 0x000000cc Code RO 11 i.OTPTrim_Read system_n32wb03x.o
|
||||
0x01000fbc 0x01000fbc 0x0000003c Code RO 1187 i.Qflash_Erase_Sector n32wb03x_qflash.o
|
||||
0x01000ff8 0x01000ff8 0x00000038 Code RO 1188 i.Qflash_Init n32wb03x_qflash.o
|
||||
0x01001030 0x01001030 0x00000044 Code RO 1190 i.Qflash_Write n32wb03x_qflash.o
|
||||
0x01001074 0x01001074 0x00000020 Code RO 596 i.RCC_EnableAHBPeriphClk n32wb03x_rcc.o
|
||||
0x01001094 0x01001094 0x00000020 Code RO 600 i.RCC_EnableAPB2PeriphClk n32wb03x_rcc.o
|
||||
0x010010b4 0x010010b4 0x000000a4 Code RO 608 i.RCC_GetClocksFreqValue n32wb03x_rcc.o
|
||||
0x01001158 0x01001158 0x00000130 Code RO 12 i.RCC_HsiCalib system_n32wb03x.o
|
||||
0x01001288 0x01001288 0x0000011c Code RO 16 i.SystemInit system_n32wb03x.o
|
||||
0x010013a4 0x010013a4 0x00000014 Code RO 18 i.SystemTrimValueRead system_n32wb03x.o
|
||||
0x010013b8 0x010013b8 0x00000020 Code RO 942 i.USART_Enable n32wb03x_usart.o
|
||||
0x010013d8 0x010013d8 0x00000014 Code RO 943 i.USART_EnableDMA n32wb03x_usart.o
|
||||
0x010013ec 0x010013ec 0x0000001e Code RO 949 i.USART_GetFlagStatus n32wb03x_usart.o
|
||||
0x0100140a 0x0100140a 0x00000002 PAD
|
||||
0x0100140c 0x0100140c 0x000000b4 Code RO 951 i.USART_Init n32wb03x_usart.o
|
||||
0x010014c0 0x010014c0 0x00000008 Code RO 954 i.USART_SendData n32wb03x_usart.o
|
||||
0x010014c8 0x010014c8 0x00000008 Code RO 1297 i.__aeabi_errno_addr mc_p.l(errno.o)
|
||||
0x010014d0 0x010014d0 0x0000000e Code RO 1312 i.__scatterload_copy mc_p.l(handlers.o)
|
||||
0x010014de 0x010014de 0x00000002 Code RO 1313 i.__scatterload_null mc_p.l(handlers.o)
|
||||
0x010014e0 0x010014e0 0x0000000e Code RO 1314 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
||||
0x010014ee 0x010014ee 0x00000006 Code RO 19 i.__set_PRIMASK system_n32wb03x.o
|
||||
0x010014f4 0x010014f4 0x00000006 Code RO 1191 i.__set_PRIMASK n32wb03x_qflash.o
|
||||
0x010014fa 0x010014fa 0x00000002 PAD
|
||||
0x010014fc 0x010014fc 0x0000003c Code RO 406 i.app_ota_abort app_ota.o
|
||||
0x01001538 0x01001538 0x00000014 Code RO 407 i.app_ota_chan_idle app_ota.o
|
||||
0x0100154c 0x0100154c 0x00000140 Code RO 408 i.app_ota_chan_rx app_ota.o
|
||||
0x0100168c 0x0100168c 0x00000024 Code RO 409 i.app_ota_chan_rx_uart app_ota.o
|
||||
0x010016b0 0x010016b0 0x0000007c Code RO 411 i.app_ota_handle_frame app_ota.o
|
||||
0x0100172c 0x0100172c 0x0000005c Code RO 412 i.app_ota_reset_poll app_ota.o
|
||||
0x01001788 0x01001788 0x0000004c Code RO 296 i.boot_cli_redraw boot_cli.o
|
||||
0x010017d4 0x010017d4 0x00000220 Code RO 297 i.boot_cli_run boot_cli.o
|
||||
0x010019f4 0x010019f4 0x00000144 Code RO 298 i.boot_cli_tab_complete boot_cli.o
|
||||
0x01001b38 0x01001b38 0x00000018 Code RO 239 i.boot_delay_ms boot_usart.o
|
||||
0x01001b50 0x01001b50 0x00000028 Code RO 240 i.boot_millis boot_usart.o
|
||||
0x01001b78 0x01001b78 0x00000110 Code RO 241 i.boot_usart_init boot_usart.o
|
||||
0x01001c88 0x01001c88 0x00000040 Code RO 242 i.boot_usart_read boot_usart.o
|
||||
0x01001cc8 0x01001cc8 0x00000018 Code RO 243 i.boot_usart_rx_head boot_usart.o
|
||||
0x01001ce0 0x01001ce0 0x00000030 Code RO 244 i.boot_usart_write boot_usart.o
|
||||
0x01001d10 0x01001d10 0x00000054 Code RO 518 i.bootset_commit app_bootset.o
|
||||
0x01001d64 0x01001d64 0x0000000e Code RO 519 i.bootset_crc app_bootset.o
|
||||
0x01001d72 0x01001d72 0x00000002 PAD
|
||||
0x01001d74 0x01001d74 0x0000001c Code RO 520 i.bootset_ensure_qflash app_bootset.o
|
||||
0x01001d90 0x01001d90 0x0000016c Code RO 521 i.bootset_print app_bootset.o
|
||||
0x01001efc 0x01001efc 0x00000024 Code RO 522 i.bootset_valid app_bootset.o
|
||||
0x01001f20 0x01001f20 0x00000044 Code RO 226 i.caiic_crc32 boot_crc32.o
|
||||
0x01001f64 0x01001f64 0x000000cc Code RO 299 i.cli_exec_line boot_cli.o
|
||||
0x01002030 0x01002030 0x00000078 Code RO 300 i.cli_history_add boot_cli.o
|
||||
0x010020a8 0x010020a8 0x0000002c Code RO 301 i.cli_history_get boot_cli.o
|
||||
0x010020d4 0x010020d4 0x0000019c Code RO 302 i.cli_printf boot_cli.o
|
||||
0x01002270 0x01002270 0x00000016 Code RO 303 i.cli_write boot_cli.o
|
||||
0x01002286 0x01002286 0x00000002 PAD
|
||||
0x01002288 0x01002288 0x00000034 Code RO 174 i.image_sane main.o
|
||||
0x010022bc 0x010022bc 0x00000024 Code RO 175 i.jump_to_app main.o
|
||||
0x010022e0 0x010022e0 0x00000184 Code RO 176 i.main main.o
|
||||
0x01002464 0x01002464 0x0000004c Code RO 413 i.ota_crc16 app_ota.o
|
||||
0x010024b0 0x010024b0 0x00000040 Code RO 414 i.ota_erase_up_to app_ota.o
|
||||
0x010024f0 0x010024f0 0x00000170 Code RO 415 i.ota_on_begin app_ota.o
|
||||
0x01002660 0x01002660 0x000001a8 Code RO 416 i.ota_on_data app_ota.o
|
||||
0x01002808 0x01002808 0x00000170 Code RO 417 i.ota_on_end app_ota.o
|
||||
0x01002978 0x01002978 0x00000038 Code RO 418 i.ota_program app_ota.o
|
||||
0x010029b0 0x010029b0 0x00000018 Code RO 419 i.ota_rd32 app_ota.o
|
||||
0x010029c8 0x010029c8 0x0000007c Code RO 420 i.ota_respond app_ota.o
|
||||
0x01002a44 0x01002a44 0x0000001c Code RO 421 i.ota_uart_sink app_ota.o
|
||||
0x01002a60 0x01002a60 0x000000cc Code RO 422 i.ota_update_bootsetting app_ota.o
|
||||
0x01002b2c 0x01002b2c 0x0000002e Code RO 523 i.parse_u32 app_bootset.o
|
||||
0x01002b5a 0x01002b5a 0x00000018 Code RO 177 i.puts_boot main.o
|
||||
0x01002b72 0x01002b72 0x00000002 PAD
|
||||
0x01002b74 0x01002b74 0x00000044 Code RO 20 i.read_flash_ID system_n32wb03x.o
|
||||
0x01002bb8 0x01002bb8 0x0000004e Code RO 304 i.str_pad boot_cli.o
|
||||
0x01002c06 0x01002c06 0x0000006c Code RO 305 i.u32_to_str boot_cli.o
|
||||
0x01002c72 0x01002c72 0x000001d8 Data RO 23 .constdata system_n32wb03x.o
|
||||
0x01002e4a 0x01002e4a 0x00000002 PAD
|
||||
0x01002e4c 0x01002e4c 0x0000006c Data RO 307 .constdata boot_cli.o
|
||||
0x01002eb8 0x01002eb8 0x0000000c Data RO 616 .constdata n32wb03x_rcc.o
|
||||
0x01002ec4 0x01002ec4 0x00000324 Data RO 1193 .constdata n32wb03x_qflash.o
|
||||
0x010031e8 0x010031e8 0x00000081 Data RO 1270 .constdata mc_p.l(ctype_o.o)
|
||||
0x01003269 0x01003269 0x00000003 PAD
|
||||
0x0100326c 0x0100326c 0x00000004 Data RO 1271 .constdata mc_p.l(ctype_o.o)
|
||||
0x01003270 0x01003270 0x0000029a Data RO 308 .conststring boot_cli.o
|
||||
0x0100350a 0x0100350a 0x00000002 PAD
|
||||
0x0100350c 0x0100350c 0x00000091 Data RO 524 .conststring app_bootset.o
|
||||
0x0100359d 0x0100359d 0x00000003 PAD
|
||||
0x010035a0 0x010035a0 0x00000020 Data RO 1310 Region$$Table anon$$obj.o
|
||||
|
||||
|
||||
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x01003654, Size: 0x00001cd8, Max: 0x0000c000, ABSOLUTE)
|
||||
Execution Region RW_IRAM1 (Exec base: 0x20004000, Load base: 0x010035c0, Size: 0x00001cd8, Max: 0x0000c000, ABSOLUTE)
|
||||
|
||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||
|
||||
0x20004000 0x01003654 0x00000004 Data RW 24 .data system_n32wb03x.o
|
||||
0x20004004 0x01003658 0x00000008 Data RW 251 .data boot_usart.o
|
||||
0x2000400c 0x01003660 0x00000003 Data RW 314 .data boot_cli.o
|
||||
0x2000400f 0x01003663 0x00000001 PAD
|
||||
0x20004010 0x01003664 0x0000003d Data RW 429 .data app_ota.o
|
||||
0x2000404d 0x010036a1 0x00000001 Data RW 530 .data app_bootset.o
|
||||
0x2000404e 0x010036a2 0x00000002 PAD
|
||||
0x20004050 0x010036a4 0x0000000c Data RW 1199 .data n32wb03x_qflash.o
|
||||
0x2000405c 0x010036b0 0x00000004 Data RW 1305 .data mc_p.l(errno.o)
|
||||
0x20004000 0x010035c0 0x00000004 Data RW 24 .data system_n32wb03x.o
|
||||
0x20004004 0x010035c4 0x00000008 Data RW 246 .data boot_usart.o
|
||||
0x2000400c 0x010035cc 0x00000003 Data RW 309 .data boot_cli.o
|
||||
0x2000400f 0x010035cf 0x00000001 PAD
|
||||
0x20004010 0x010035d0 0x0000003d Data RW 424 .data app_ota.o
|
||||
0x2000404d 0x0100360d 0x00000001 Data RW 525 .data app_bootset.o
|
||||
0x2000404e 0x0100360e 0x00000002 PAD
|
||||
0x20004050 0x01003610 0x0000000c Data RW 1194 .data n32wb03x_qflash.o
|
||||
0x2000405c 0x0100361c 0x00000004 Data RW 1300 .data mc_p.l(errno.o)
|
||||
0x20004060 - 0x00000034 Zero RW 22 .bss system_n32wb03x.o
|
||||
0x20004094 - 0x00000c00 Zero RW 250 .bss boot_usart.o
|
||||
0x20004c94 - 0x00000330 Zero RW 311 .bss boot_cli.o
|
||||
0x20004fc4 - 0x000001e7 Zero RW 428 .bss app_ota.o
|
||||
0x200051ab 0x010036b4 0x00000001 PAD
|
||||
0x200051ac - 0x00000328 Zero RW 1197 .bss n32wb03x_qflash.o
|
||||
0x200054d4 0x010036b4 0x00000004 PAD
|
||||
0x20004094 - 0x00000c00 Zero RW 245 .bss boot_usart.o
|
||||
0x20004c94 - 0x00000330 Zero RW 306 .bss boot_cli.o
|
||||
0x20004fc4 - 0x000001e7 Zero RW 423 .bss app_ota.o
|
||||
0x200051ab 0x01003620 0x00000001 PAD
|
||||
0x200051ac - 0x00000328 Zero RW 1192 .bss n32wb03x_qflash.o
|
||||
0x200054d4 0x01003620 0x00000004 PAD
|
||||
0x200054d8 - 0x00000800 Zero RW 1 STACK startup_n32wb03x.o
|
||||
|
||||
|
||||
@ -1004,9 +994,9 @@ Image component sizes
|
||||
2796 756 774 3 816 18440 boot_cli.o
|
||||
68 6 0 0 0 874 boot_crc32.o
|
||||
472 66 0 8 3072 4161 boot_usart.o
|
||||
628 262 0 0 0 5643 main.o
|
||||
500 208 0 0 0 5019 main.o
|
||||
276 18 0 0 0 4372 n32wb03x_dma.o
|
||||
310 4 0 0 0 2948 n32wb03x_gpio.o
|
||||
290 4 0 0 0 2252 n32wb03x_gpio.o
|
||||
190 32 804 12 808 4258 n32wb03x_qflash.o
|
||||
228 32 12 0 0 2848 n32wb03x_rcc.o
|
||||
270 24 0 0 0 5093 n32wb03x_usart.o
|
||||
@ -1014,7 +1004,7 @@ Image component sizes
|
||||
900 60 472 4 52 124580 system_n32wb03x.o
|
||||
|
||||
----------------------------------------------------------------------
|
||||
10660 2738 2438 92 7288 193297 Object Totals
|
||||
10512 2684 2438 92 7288 191977 Object Totals
|
||||
0 0 32 0 0 0 (incl. Generated)
|
||||
14 0 7 3 5 0 (incl. Padding)
|
||||
|
||||
@ -1067,15 +1057,15 @@ Image component sizes
|
||||
|
||||
Code (inc. data) RO Data RW Data ZI Data Debug
|
||||
|
||||
11334 2762 2574 96 7288 190609 Grand Totals
|
||||
11334 2762 2574 96 7288 190609 ELF Image Totals
|
||||
11334 2762 2574 96 0 0 ROM Totals
|
||||
11186 2708 2574 96 7288 189377 Grand Totals
|
||||
11186 2708 2574 96 7288 189377 ELF Image Totals
|
||||
11186 2708 2574 96 0 0 ROM Totals
|
||||
|
||||
==============================================================================
|
||||
|
||||
Total RO Size (Code + RO Data) 13908 ( 13.58kB)
|
||||
Total RO Size (Code + RO Data) 13760 ( 13.44kB)
|
||||
Total RW Size (RW Data + ZI Data) 7384 ( 7.21kB)
|
||||
Total ROM Size (Code + RO Data + RW Data) 14004 ( 13.68kB)
|
||||
Total ROM Size (Code + RO Data + RW Data) 13856 ( 13.53kB)
|
||||
|
||||
==============================================================================
|
||||
|
||||
|
||||
Binary file not shown.
@ -2,19 +2,19 @@
|
||||
Rebuild target 'caiic_boot'
|
||||
assembling startup_n32wb03x.s...
|
||||
compiling boot_crc32.c...
|
||||
compiling main.c...
|
||||
compiling system_n32wb03x.c...
|
||||
compiling app_bootset.c...
|
||||
compiling n32wb03x_gpio.c...
|
||||
compiling main.c...
|
||||
compiling boot_usart.c...
|
||||
compiling boot_cli.c...
|
||||
compiling n32wb03x_dma.c...
|
||||
compiling app_ota.c...
|
||||
compiling app_bootset.c...
|
||||
compiling boot_cli.c...
|
||||
compiling system_n32wb03x.c...
|
||||
compiling n32wb03x_rcc.c...
|
||||
compiling n32wb03x_dma.c...
|
||||
compiling n32wb03x_usart.c...
|
||||
compiling n32wb03x_qflash.c...
|
||||
linking...
|
||||
Program Size: Code=11334 RO-data=2574 RW-data=96 ZI-data=7288
|
||||
Program Size: Code=11186 RO-data=2574 RW-data=96 ZI-data=7288
|
||||
FromELF: creating hex file...
|
||||
After Build - User command #1: fromelf --bin --output=.\bin\caiic_boot.bin .\Objects\caiic_boot.axf
|
||||
".\Objects\caiic_boot.axf" - 0 Error(s), 0 Warning(s).
|
||||
|
||||
@ -6,6 +6,6 @@
|
||||
#ifndef __BOOT_VERSION_H__
|
||||
#define __BOOT_VERSION_H__
|
||||
|
||||
#define BOOT_FW_VERSION "V1.00.05"
|
||||
#define BOOT_FW_VERSION "V1.00.06"
|
||||
|
||||
#endif /* __BOOT_VERSION_H__ */
|
||||
|
||||
@ -7,12 +7,13 @@
|
||||
* production download and bricked-device recovery.
|
||||
*
|
||||
* Download mode entry:
|
||||
* 0. strap pin held HIGH (3.3 V) at reset - forces download mode
|
||||
* deterministically, no host on the UART needed,
|
||||
* 1. press Enter within the 2 s window printed in the boot banner, or
|
||||
* 2. automatic when there is no jumpable image: the bootsetting record
|
||||
* 0. press Enter within the 2 s window printed in the boot banner, or
|
||||
* 1. automatic when there is no jumpable image: the bootsetting record
|
||||
* is invalid AND the APP1 vector table fails sanity (SP outside the
|
||||
* usable SRAM window / reset PC outside APP1) - the recovery path.
|
||||
* The former PB5 strap-pin entry was removed (the pin is needed by the
|
||||
* display); the two remaining entries still cover download and bricked
|
||||
* device recovery.
|
||||
*
|
||||
* Policy: the application image CRC is verified during the OTA process
|
||||
* (app_ota.c) BEFORE bootsetting is switched - the normal boot path never
|
||||
@ -36,16 +37,6 @@
|
||||
#define SRAM_SP_MIN 0x20004001u
|
||||
#define SRAM_SP_MAX 0x2000C000u
|
||||
|
||||
/* Download-mode strap pin: tie it HIGH (the board's 3.3 V rail) at reset to
|
||||
* force download mode. PB5 is free on the STB board (not SWD PA4/PA5, not
|
||||
* USART1 PB6/PB7, not LED PB0/PA6, not 32.768 kHz crystal PB8/PB9, not the
|
||||
* user keys PB1/PB2) and is broken out on header J3 next to the UART pins.
|
||||
* The internal pull-down keeps the un-strapped state LOW (normal boot); an
|
||||
* external 3.3 V drive overrides that weak pull-down cleanly. */
|
||||
#define BOOT_DL_STRAP_GPIO GPIOB
|
||||
#define BOOT_DL_STRAP_CLK RCC_APB2_PERIPH_GPIOB
|
||||
#define BOOT_DL_STRAP_PIN GPIO_PIN_5
|
||||
|
||||
extern void boot_cli_run(void); /* boot_cli.c - never returns */
|
||||
|
||||
/**
|
||||
@ -94,24 +85,6 @@ static void puts_boot(const char* s)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure the download strap pin as a pull-down input and read it.
|
||||
* @return 1 when the pin is HIGH (3.3 V applied -> enter download mode).
|
||||
*/
|
||||
static int boot_dl_strap_active(void)
|
||||
{
|
||||
GPIO_InitType s;
|
||||
|
||||
RCC_EnableAPB2PeriphClk(BOOT_DL_STRAP_CLK, ENABLE);
|
||||
GPIO_InitStruct(&s);
|
||||
s.Pin = BOOT_DL_STRAP_PIN;
|
||||
s.GPIO_Mode = GPIO_MODE_INPUT;
|
||||
s.GPIO_Pull = GPIO_PULL_DOWN;
|
||||
GPIO_InitPeripheral(BOOT_DL_STRAP_GPIO, &s);
|
||||
|
||||
return (GPIO_ReadInputDataBit(BOOT_DL_STRAP_GPIO, BOOT_DL_STRAP_PIN) == Bit_SET) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Main program.
|
||||
*/
|
||||
@ -144,14 +117,7 @@ int main(void)
|
||||
puts_boot("\r\n[boot] CAIIC-BOOT " BOOT_FW_VERSION
|
||||
" - Enter within 2s: download mode\r\n");
|
||||
|
||||
/* Entry 0 (strap): 3.3 V held on the strap pin forces download mode */
|
||||
if (boot_dl_strap_active())
|
||||
{
|
||||
enter_dl = 1;
|
||||
puts_boot("[boot] strap pin HIGH (3V3): download mode\r\n");
|
||||
}
|
||||
|
||||
/* Entry 1: Enter key inside the window (skipped when strap already set) */
|
||||
/* Entry 0: Enter key inside the 2 s window */
|
||||
if (!enter_dl)
|
||||
{
|
||||
window_start = boot_millis();
|
||||
@ -166,7 +132,7 @@ int main(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* Entry 2 (recovery): no jumpable image at all */
|
||||
/* Entry 1 (recovery): no jumpable image at all */
|
||||
if (!enter_dl && !bs_ok && !image_sane(CAIIC_APP1_BASE))
|
||||
{
|
||||
enter_dl = 1;
|
||||
|
||||
227
docs/YF30137_驱动真值表.md
Normal file
227
docs/YF30137_驱动真值表.md
Normal file
@ -0,0 +1,227 @@
|
||||
# YF30137 七脚数码屏驱动真值表
|
||||
|
||||
> 依据《数码屏YF30137.dwg》引脚定义图还原。7 个 IO 脚,Charlieplexing(两两复用电极)驱动。
|
||||
> 段位结构:DIG1~DIG5 各 7 段(A~G)= 35 段,DIG6 两段(A6=°F、B6=小数点)= 2 段,共 37 段。
|
||||
|
||||
## 约定
|
||||
|
||||
- **脚号对应**(脚 N = 网络 LED_N = MCU 引脚):
|
||||
- LED_1 = PB0 LED_2 = PB1 LED_3 = PA0 LED_4 = PA1 LED_5 = PB11 LED_6 = PB13 LED_7 = PA6
|
||||
- `x→y` = **脚 x 拉高、脚 y 拉低**,其余 5 个脚全部**高阻(输入)**。
|
||||
- 逐段点亮:点一段 → 全高阻 → 点下一段,同一数字的多段**不能同时点**(脚共用)。
|
||||
- 若实测段「反相不亮」,把每个脚对的高/低对调即可(段位对应不变)。
|
||||
|
||||
## 一、段 → 脚 总表
|
||||
|
||||
| 段 | DIG1 | DIG2 | DIG3 | DIG4 | DIG5 | DIG6 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| A | 2→1 | 3→2 | 4→3 | 5→4 | 6→5 | 7→6(°F) |
|
||||
| B | 3→1 | 4→2 | 5→3 | 6→4 | 7→5 | 1→7(小数点) |
|
||||
| C | 4→1 | 5→2 | 6→3 | 7→4 | 1→6 | — |
|
||||
| D | 5→1 | 6→2 | 7→3 | 1→5 | 2→6 | — |
|
||||
| E | 6→1 | 7→2 | 1→4 | 2→5 | 3→6 | — |
|
||||
| F | 7→1 | 1→3 | 2→4 | 3→5 | 4→6 | — |
|
||||
| G | 1→2 | 2→3 | 3→4 | 4→5 | 5→6 | — |
|
||||
|
||||
## 二、字符段码表(哪个字符亮哪些段)
|
||||
|
||||
| 字符 | 亮段 | 字符 | 亮段 | 字符 | 亮段 |
|
||||
|---|---|---|---|---|---|
|
||||
| **0** | ABCDEF | **1** | BC | **2** | ABDEG |
|
||||
| **3** | ABCDG | **4** | BCFG | **5** | ACDFG |
|
||||
| **6** | ACDEFG | **7** | ABC | **8** | ABCDEFG |
|
||||
| **9** | ABCDFG | **A** | ABCEFG | **b** | CDEFG |
|
||||
| **C** | ADEF | **d** | BCDEG | **E** | ADEFG |
|
||||
| **F** | AEFG | **H** | BCEFG | **L** | DEF |
|
||||
| **P** | ABEFG | **U** | BCDEF | **o** | CDEG |
|
||||
| **n** | CEG | **r** | EG | **y** | BCDFG |
|
||||
| **t** | DEFG | | | | |
|
||||
|
||||
> 说明:`b`、`d`、`o`、`n`、`r`、`y`、`t` 为小写字母(避免与数字 8/0 混淆);
|
||||
> `A`、`C`、`E`、`F`、`H`、`L`、`P`、`U` 为大写。
|
||||
|
||||
## 三、DIG1 组合表(数字 + 字母)
|
||||
|
||||
| 字符 | 亮段 | 脚对(高→低) |
|
||||
|---|---|---|
|
||||
| **0** | ABCDEF | 2→1,3→1,4→1,5→1,6→1,7→1 |
|
||||
| **1** | BC | 3→1,4→1 |
|
||||
| **2** | ABDEG | 2→1,3→1,5→1,6→1,1→2 |
|
||||
| **3** | ABCDG | 2→1,3→1,4→1,5→1,1→2 |
|
||||
| **4** | BCFG | 3→1,4→1,7→1,1→2 |
|
||||
| **5** | ACDFG | 2→1,4→1,5→1,7→1,1→2 |
|
||||
| **6** | ACDEFG | 2→1,4→1,5→1,6→1,7→1,1→2 |
|
||||
| **7** | ABC | 2→1,3→1,4→1 |
|
||||
| **8** | ABCDEFG | 2→1,3→1,4→1,5→1,6→1,7→1,1→2 |
|
||||
| **9** | ABCDFG | 2→1,3→1,4→1,5→1,7→1,1→2 |
|
||||
| **A** | ABCEFG | 2→1,3→1,4→1,6→1,7→1,1→2 |
|
||||
| **b** | CDEFG | 4→1,5→1,6→1,7→1,1→2 |
|
||||
| **C** | ADEF | 2→1,5→1,6→1,7→1 |
|
||||
| **d** | BCDEG | 3→1,4→1,5→1,6→1,1→2 |
|
||||
| **E** | ADEFG | 2→1,5→1,6→1,7→1,1→2 |
|
||||
| **F** | AEFG | 2→1,6→1,7→1,1→2 |
|
||||
| **H** | BCEFG | 3→1,4→1,6→1,7→1,1→2 |
|
||||
| **L** | DEF | 5→1,6→1,7→1 |
|
||||
| **P** | ABEFG | 2→1,3→1,6→1,7→1,1→2 |
|
||||
| **U** | BCDEF | 3→1,4→1,5→1,6→1,7→1 |
|
||||
| **o** | CDEG | 4→1,5→1,6→1,1→2 |
|
||||
| **n** | CEG | 4→1,6→1,1→2 |
|
||||
| **r** | EG | 6→1,1→2 |
|
||||
| **y** | BCDFG | 3→1,4→1,5→1,7→1,1→2 |
|
||||
| **t** | DEFG | 5→1,6→1,7→1,1→2 |
|
||||
|
||||
## 三、DIG2 组合表(数字 + 字母)
|
||||
|
||||
| 字符 | 亮段 | 脚对(高→低) |
|
||||
|---|---|---|
|
||||
| **0** | ABCDEF | 3→2,4→2,5→2,6→2,7→2,1→3 |
|
||||
| **1** | BC | 4→2,5→2 |
|
||||
| **2** | ABDEG | 3→2,4→2,6→2,7→2,2→3 |
|
||||
| **3** | ABCDG | 3→2,4→2,5→2,6→2,2→3 |
|
||||
| **4** | BCFG | 4→2,5→2,1→3,2→3 |
|
||||
| **5** | ACDFG | 3→2,5→2,6→2,1→3,2→3 |
|
||||
| **6** | ACDEFG | 3→2,5→2,6→2,7→2,1→3,2→3 |
|
||||
| **7** | ABC | 3→2,4→2,5→2 |
|
||||
| **8** | ABCDEFG | 3→2,4→2,5→2,6→2,7→2,1→3,2→3 |
|
||||
| **9** | ABCDFG | 3→2,4→2,5→2,6→2,1→3,2→3 |
|
||||
| **A** | ABCEFG | 3→2,4→2,5→2,7→2,1→3,2→3 |
|
||||
| **b** | CDEFG | 5→2,6→2,7→2,1→3,2→3 |
|
||||
| **C** | ADEF | 3→2,6→2,7→2,1→3 |
|
||||
| **d** | BCDEG | 4→2,5→2,6→2,7→2,2→3 |
|
||||
| **E** | ADEFG | 3→2,6→2,7→2,1→3,2→3 |
|
||||
| **F** | AEFG | 3→2,7→2,1→3,2→3 |
|
||||
| **H** | BCEFG | 4→2,5→2,7→2,1→3,2→3 |
|
||||
| **L** | DEF | 6→2,7→2,1→3 |
|
||||
| **P** | ABEFG | 3→2,4→2,7→2,1→3,2→3 |
|
||||
| **U** | BCDEF | 4→2,5→2,6→2,7→2,1→3 |
|
||||
| **o** | CDEG | 5→2,6→2,7→2,2→3 |
|
||||
| **n** | CEG | 5→2,7→2,2→3 |
|
||||
| **r** | EG | 7→2,2→3 |
|
||||
| **y** | BCDFG | 4→2,5→2,6→2,1→3,2→3 |
|
||||
| **t** | DEFG | 6→2,7→2,1→3,2→3 |
|
||||
|
||||
## 三、DIG3 组合表(数字 + 字母)
|
||||
|
||||
| 字符 | 亮段 | 脚对(高→低) |
|
||||
|---|---|---|
|
||||
| **0** | ABCDEF | 4→3,5→3,6→3,7→3,1→4,2→4 |
|
||||
| **1** | BC | 5→3,6→3 |
|
||||
| **2** | ABDEG | 4→3,5→3,7→3,1→4,3→4 |
|
||||
| **3** | ABCDG | 4→3,5→3,6→3,7→3,3→4 |
|
||||
| **4** | BCFG | 5→3,6→3,2→4,3→4 |
|
||||
| **5** | ACDFG | 4→3,6→3,7→3,2→4,3→4 |
|
||||
| **6** | ACDEFG | 4→3,6→3,7→3,1→4,2→4,3→4 |
|
||||
| **7** | ABC | 4→3,5→3,6→3 |
|
||||
| **8** | ABCDEFG | 4→3,5→3,6→3,7→3,1→4,2→4,3→4 |
|
||||
| **9** | ABCDFG | 4→3,5→3,6→3,7→3,2→4,3→4 |
|
||||
| **A** | ABCEFG | 4→3,5→3,6→3,1→4,2→4,3→4 |
|
||||
| **b** | CDEFG | 6→3,7→3,1→4,2→4,3→4 |
|
||||
| **C** | ADEF | 4→3,7→3,1→4,2→4 |
|
||||
| **d** | BCDEG | 5→3,6→3,7→3,1→4,3→4 |
|
||||
| **E** | ADEFG | 4→3,7→3,1→4,2→4,3→4 |
|
||||
| **F** | AEFG | 4→3,1→4,2→4,3→4 |
|
||||
| **H** | BCEFG | 5→3,6→3,1→4,2→4,3→4 |
|
||||
| **L** | DEF | 7→3,1→4,2→4 |
|
||||
| **P** | ABEFG | 4→3,5→3,1→4,2→4,3→4 |
|
||||
| **U** | BCDEF | 5→3,6→3,7→3,1→4,2→4 |
|
||||
| **o** | CDEG | 6→3,7→3,1→4,3→4 |
|
||||
| **n** | CEG | 6→3,1→4,3→4 |
|
||||
| **r** | EG | 1→4,3→4 |
|
||||
| **y** | BCDFG | 5→3,6→3,7→3,2→4,3→4 |
|
||||
| **t** | DEFG | 7→3,1→4,2→4,3→4 |
|
||||
|
||||
## 三、DIG4 组合表(数字 + 字母)
|
||||
|
||||
| 字符 | 亮段 | 脚对(高→低) |
|
||||
|---|---|---|
|
||||
| **0** | ABCDEF | 5→4,6→4,7→4,1→5,2→5,3→5 |
|
||||
| **1** | BC | 6→4,7→4 |
|
||||
| **2** | ABDEG | 5→4,6→4,1→5,2→5,4→5 |
|
||||
| **3** | ABCDG | 5→4,6→4,7→4,1→5,4→5 |
|
||||
| **4** | BCFG | 6→4,7→4,3→5,4→5 |
|
||||
| **5** | ACDFG | 5→4,7→4,1→5,3→5,4→5 |
|
||||
| **6** | ACDEFG | 5→4,7→4,1→5,2→5,3→5,4→5 |
|
||||
| **7** | ABC | 5→4,6→4,7→4 |
|
||||
| **8** | ABCDEFG | 5→4,6→4,7→4,1→5,2→5,3→5,4→5 |
|
||||
| **9** | ABCDFG | 5→4,6→4,7→4,1→5,3→5,4→5 |
|
||||
| **A** | ABCEFG | 5→4,6→4,7→4,2→5,3→5,4→5 |
|
||||
| **b** | CDEFG | 7→4,1→5,2→5,3→5,4→5 |
|
||||
| **C** | ADEF | 5→4,1→5,2→5,3→5 |
|
||||
| **d** | BCDEG | 6→4,7→4,1→5,2→5,4→5 |
|
||||
| **E** | ADEFG | 5→4,1→5,2→5,3→5,4→5 |
|
||||
| **F** | AEFG | 5→4,2→5,3→5,4→5 |
|
||||
| **H** | BCEFG | 6→4,7→4,2→5,3→5,4→5 |
|
||||
| **L** | DEF | 1→5,2→5,3→5 |
|
||||
| **P** | ABEFG | 5→4,6→4,2→5,3→5,4→5 |
|
||||
| **U** | BCDEF | 6→4,7→4,1→5,2→5,3→5 |
|
||||
| **o** | CDEG | 7→4,1→5,2→5,4→5 |
|
||||
| **n** | CEG | 7→4,2→5,4→5 |
|
||||
| **r** | EG | 2→5,4→5 |
|
||||
| **y** | BCDFG | 6→4,7→4,1→5,3→5,4→5 |
|
||||
| **t** | DEFG | 1→5,2→5,3→5,4→5 |
|
||||
|
||||
## 三、DIG5 组合表(数字 + 字母)
|
||||
|
||||
| 字符 | 亮段 | 脚对(高→低) |
|
||||
|---|---|---|
|
||||
| **0** | ABCDEF | 6→5,7→5,1→6,2→6,3→6,4→6 |
|
||||
| **1** | BC | 7→5,1→6 |
|
||||
| **2** | ABDEG | 6→5,7→5,2→6,3→6,5→6 |
|
||||
| **3** | ABCDG | 6→5,7→5,1→6,2→6,5→6 |
|
||||
| **4** | BCFG | 7→5,1→6,4→6,5→6 |
|
||||
| **5** | ACDFG | 6→5,1→6,2→6,4→6,5→6 |
|
||||
| **6** | ACDEFG | 6→5,1→6,2→6,3→6,4→6,5→6 |
|
||||
| **7** | ABC | 6→5,7→5,1→6 |
|
||||
| **8** | ABCDEFG | 6→5,7→5,1→6,2→6,3→6,4→6,5→6 |
|
||||
| **9** | ABCDFG | 6→5,7→5,1→6,2→6,4→6,5→6 |
|
||||
| **A** | ABCEFG | 6→5,7→5,1→6,3→6,4→6,5→6 |
|
||||
| **b** | CDEFG | 1→6,2→6,3→6,4→6,5→6 |
|
||||
| **C** | ADEF | 6→5,2→6,3→6,4→6 |
|
||||
| **d** | BCDEG | 7→5,1→6,2→6,3→6,5→6 |
|
||||
| **E** | ADEFG | 6→5,2→6,3→6,4→6,5→6 |
|
||||
| **F** | AEFG | 6→5,3→6,4→6,5→6 |
|
||||
| **H** | BCEFG | 7→5,1→6,3→6,4→6,5→6 |
|
||||
| **L** | DEF | 2→6,3→6,4→6 |
|
||||
| **P** | ABEFG | 6→5,7→5,3→6,4→6,5→6 |
|
||||
| **U** | BCDEF | 7→5,1→6,2→6,3→6,4→6 |
|
||||
| **o** | CDEG | 1→6,2→6,3→6,5→6 |
|
||||
| **n** | CEG | 1→6,3→6,5→6 |
|
||||
| **r** | EG | 3→6,5→6 |
|
||||
| **y** | BCDFG | 7→5,1→6,2→6,4→6,5→6 |
|
||||
| **t** | DEFG | 2→6,3→6,4→6,5→6 |
|
||||
|
||||
## 四、DIG6 指示段(不是数字位)
|
||||
|
||||
| 段 | 功能 | 点亮方式 |
|
||||
|---|---|---|
|
||||
| A6(上面) | 华氏度 °F 符号 | 7→6 |
|
||||
| B6(下面) | 小数点 DP | 1→7 |
|
||||
|
||||
> DIG6 只有这两段,无 C~G。
|
||||
|
||||
## 五、固件换算公式
|
||||
|
||||
设段 `S`(A=0…G=6)、位 `D`(DIG1=1…DIG5=5):
|
||||
|
||||
```
|
||||
HIGH脚 = ((S + D) % 7) + 1
|
||||
LOW脚 = D + (S + D) / 7 // 整除
|
||||
```
|
||||
|
||||
DIG6 两个固定脚对:`°F = 7高6低`,`小数点 = 1高7低`。
|
||||
|
||||
## 六、控制要点
|
||||
|
||||
1. **7 个脚必须支持三态**(高/低/高阻):点段前先把 7 脚全切输入,再只把目标 2 脚切输出。
|
||||
2. **限流电阻**:若 YF30137 内部无电阻,每脚(或每段)串 100~330Ω(看亮度),否则烧段/烧 IO。
|
||||
3. **防鬼影**:点完一段立即切回全高阻再点下一段。
|
||||
4. **刷新率**:温度用 3 位(DIG1~3)+ 小数点,共 21+1 段,全扫一遍 ≥ 50~60Hz(每段约 0.7ms)。
|
||||
5. **扫描实现**:建议用定时器中断(TIM3 或 SysTick)逐段点亮,别用主循环阻塞。
|
||||
|
||||
## 七、温度显示示例(8.0~36.7℃,格式 XX.X)
|
||||
|
||||
| 温度 | DIG1 | DIG2 | DIG3 | 小数点(B6) | °F(A6) |
|
||||
|---|---|---|---|---|---|
|
||||
| 36.7 | 3 | 6 | 7 | 1→7 | 灭(摄氏) |
|
||||
| 8.0 | (灭/空白) | 8 | 0 | 1→7 | 灭(摄氏) |
|
||||
| 25.0 | 2 | 5 | 0 | 1→7 | 灭(摄氏) |
|
||||
28
docs/开发日志.md
28
docs/开发日志.md
@ -1461,3 +1461,31 @@ APP2 链接的镜像发向 APP1 区。设备端 END 校验(向量表 Reset PC
|
||||
(`APP_FW_VERSION_NUM` 0x0001001C → 0x0001001D)。
|
||||
- 构建/出包:Boot bin 14004B;APP1 bin 56120B(crc 0x747E4248,ver 0x0001001D),
|
||||
APP2 56420B;OTA 载荷随 APP 一并更新。
|
||||
|
||||
## 58. YF30137 七脚数码管显示驱动 + 取消 Boot strap 下载检测(2026-09-06,APP V1.00.30 / Boot V1.00.06)
|
||||
|
||||
- 新增 YF30137 七脚数码管显示驱动(Charlieplexing,7 个 GPIO 直接扫描,
|
||||
段位真值表见 `docs/YF30137_驱动真值表.md`):
|
||||
- `mcm-ddc-ble/src/app_display.c` + `inc/app_display.h`:独立 FreeRTOS 任务
|
||||
`display_task`(优先级 1、栈 256 字、20ms 帧周期)逐段点亮;
|
||||
- 7 脚映射(脚1~7 = 网络 LED_1~7):PB0 / PB1 / PA0 / PA1 / PB11 / PB13 / PA6;
|
||||
- 段→脚公式 `HIGH=((S+D)%7)+1`、`LOW=D+(S+D)/7`(S=A0..G6,D=DIG1..5),
|
||||
DIG6 两指示段:A6=°F(7高6低)、B6=小数点(1高7低);
|
||||
- 三态驱动:点段时高脚拉高/低脚拉低、其余 5 脚高阻,点完立即回高阻(防鬼影);
|
||||
- 显示接口:`volatile` 全局变量(float 数值 / type 类型 / base 进制)+
|
||||
无锁 `display_set(value, type, base)`;`base=10` 十进制(1 位小数)、
|
||||
`base=16` 十六进制(整数按 hex);`type` 控制 °F 指示灯;负号用 G 段;
|
||||
- 显示能力:5 位数字 + 小数点 + °F,段码含 0~9 / A~F / H L P U o n r y t。
|
||||
- 原 LED1(PB0)/LED2(PA6) 运行/连接指示灯移除(两脚让给数码管):
|
||||
- `main.c` 删 `led_task` 与 `LedInit(LED1/LED2)`,改创建 `display_task`;
|
||||
- `app_ble.c` 删 `app_ble_connected/disconnected` 里的 LED2 `LedOn/LedOff`;
|
||||
- `mcm-ddc-ble.uvprojx` USER 组加入 `app_display.c`(3 个 target)。
|
||||
- Boot 取消 PB5 strap 引脚进 download 模式(管脚让出):
|
||||
- `Boot/src/main.c` 删 `boot_dl_strap_active()` 与 strap 检测分支,保留
|
||||
USART1 2s 回车窗口 + 无有效镜像自动进 download 两条路径(功能仍在)。
|
||||
- 版本:APP `V1.00.29` → `V1.00.30`(NUM 0x0001001D → 0x0001001E);
|
||||
Boot `V1.00.05` → `V1.00.06`。
|
||||
- 构建/出包:APP1 bin 56584B(ver 0x0001001E)、APP2 56888B;Boot bin 13856B
|
||||
(16KB 区内);整包 + OTA 包已更新。APP ZI 不变(30140),`__initial_sp`
|
||||
0x2000BDF0 距 0x2000C000 悬崖 528B(merge_image.py 报 within 1KB 警告,
|
||||
为既有状态,非本次引入,后续加 ZI 需注意)。
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -1083,6 +1083,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_display.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_display.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_params.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@ -2244,6 +2249,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_display.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_display.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_params.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@ -3114,6 +3124,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_display.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_display.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_params.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@ -3984,6 +3999,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_display.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\src\app_display.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_params.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
||||
48
mcm-ddc-ble/inc/app_display.h
Normal file
48
mcm-ddc-ble/inc/app_display.h
Normal file
@ -0,0 +1,48 @@
|
||||
/**
|
||||
* @file app_display.h
|
||||
* @brief YF30137 7-segment display driver.
|
||||
*
|
||||
* The YF30137 is a 7-pin Charlieplexed LED module:
|
||||
* - 5 seven-segment digits (DIG1..DIG5, segments A..G)
|
||||
* - DIG6 holds two single indicators: A6 = "deg F", B6 = decimal point
|
||||
*
|
||||
* A dedicated FreeRTOS task (display_task) scans the module continuously.
|
||||
* Every other task updates the display simply by calling display_set();
|
||||
* the scan task only reads the global state and never blocks callers.
|
||||
*/
|
||||
#ifndef __APP_DISPLAY_H__
|
||||
#define __APP_DISPLAY_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Display type / unit (controls the DIG6 "deg F" indicator A6) */
|
||||
#define DISP_TYPE_CELSIUS 0u /* degree C: A6 off */
|
||||
#define DISP_TYPE_FAHRENHEIT 1u /* degree F: A6 on */
|
||||
|
||||
/* Number base for the displayed value */
|
||||
#define DISP_BASE_DECIMAL 10u
|
||||
#define DISP_BASE_HEX 16u
|
||||
|
||||
/**
|
||||
* @brief Update what the display should show (read by the scan task).
|
||||
* @param value floating value to display
|
||||
* @param type DISP_TYPE_CELSIUS / DISP_TYPE_FAHRENHEIT
|
||||
* @param base DISP_BASE_DECIMAL (1 decimal place) / DISP_BASE_HEX
|
||||
* @note Non-blocking; may be called from any task context.
|
||||
*/
|
||||
void display_set(float value, uint8_t type, uint8_t base);
|
||||
|
||||
/**
|
||||
* @brief Display driver FreeRTOS task: Charlieplexing scan loop, never returns.
|
||||
*/
|
||||
void display_task(void *pvParameters);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __APP_DISPLAY_H__ */
|
||||
@ -9,12 +9,12 @@
|
||||
#define __APP_VERSION_H__
|
||||
|
||||
#ifndef APP_FW_VERSION
|
||||
#define APP_FW_VERSION "V1.00.29"
|
||||
#define APP_FW_VERSION "V1.00.30"
|
||||
#endif
|
||||
|
||||
/* Numeric form used by the BLE info query / OTA records: 0x00MMmmpp */
|
||||
#ifndef APP_FW_VERSION_NUM
|
||||
#define APP_FW_VERSION_NUM 0x0001001Du
|
||||
#define APP_FW_VERSION_NUM 0x0001001Eu
|
||||
#endif
|
||||
|
||||
#endif /* __APP_VERSION_H__ */
|
||||
|
||||
@ -314,7 +314,6 @@ void app_ble_init(void)
|
||||
*/
|
||||
void app_ble_connected(void)
|
||||
{
|
||||
LedOn(LED2_PORT,LED2_PIN);
|
||||
notify_en = 0;
|
||||
if (app_ble_proto_log_get())
|
||||
{
|
||||
@ -341,7 +340,6 @@ void app_ble_disconnected(void)
|
||||
ns_ble_adv_start();
|
||||
|
||||
app_ble_proto_on_disconnect(); /* drop half RX frame + uplink buffer */
|
||||
LedOff(LED2_PORT,LED2_PIN);
|
||||
notify_en = 0;
|
||||
if (app_ble_proto_log_get())
|
||||
{
|
||||
|
||||
395
mcm-ddc-ble/src/app_display.c
Normal file
395
mcm-ddc-ble/src/app_display.c
Normal file
@ -0,0 +1,395 @@
|
||||
/**
|
||||
* @file app_display.c
|
||||
* @brief YF30137 7-segment display driver (Charlieplexing, 7 GPIOs).
|
||||
*
|
||||
* The YF30137 is a 7-pin Charlieplexed display: every segment is a LED wired
|
||||
* between a unique ordered pair of the 7 pins. Lighting one segment means
|
||||
* driving its "high" pin HIGH, its "low" pin LOW and leaving the other five
|
||||
* pins high-impedance, one segment at a time (the shared pins forbid lighting
|
||||
* several segments of one digit simultaneously).
|
||||
*
|
||||
* Pin mapping (net name -> MCU pin):
|
||||
* pin1 = LED_1 = PB0 pin2 = LED_2 = PB1 pin3 = LED_3 = PA0
|
||||
* pin4 = LED_4 = PA1 pin5 = LED_5 = PB11 pin6 = LED_6 = PB13
|
||||
* pin7 = LED_7 = PA6
|
||||
*
|
||||
* Segment (s) of digit (d) is lit by pin HIGH -> pin LOW:
|
||||
* HIGH = ((s + d) % 7) + 1
|
||||
* LOW = d + (s + d) / 7 (s: A=0..G=6, d: DIG1=1..DIG5=5)
|
||||
*
|
||||
* DIG6 indicators:
|
||||
* A6 (deg F) = pin7 HIGH, pin6 LOW
|
||||
* B6 (dot) = pin1 HIGH, pin7 LOW
|
||||
*
|
||||
* Other tasks update the display via display_set(); this task only reads the
|
||||
* volatile globals and scans, so it never blocks the callers.
|
||||
*/
|
||||
#include "app_display.h"
|
||||
#include "n32wb03x.h"
|
||||
#include "ns_delay.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "app_wdt.h"
|
||||
|
||||
/** @addtogroup
|
||||
* @{
|
||||
*/
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
|
||||
/** One display pin (GPIO port + pin). */
|
||||
typedef struct
|
||||
{
|
||||
GPIO_Module *port;
|
||||
uint16_t pin;
|
||||
} disp_pin_t;
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
|
||||
/** Per-segment on-time in us (sets brightness and scan rate). */
|
||||
#define DISP_SEG_ON_US 250u
|
||||
/** Number of full seven-segment digits. */
|
||||
#define DISP_DIGITS 5u
|
||||
|
||||
/* Segment bit mask, bit0=A .. bit6=G. */
|
||||
#define SEG_BLANK 0x00u
|
||||
#define SEG_MINUS 0x40u /* '-' = G only */
|
||||
|
||||
/* Decode marker codes (not a real digit). */
|
||||
#define CHAR_MINUS 0x10u
|
||||
#define CHAR_BLANK 0xFFu
|
||||
|
||||
/* Private constants ----------------------------------------------------------*/
|
||||
|
||||
/** Display pin table, index 0..6 = display pin 1..7. */
|
||||
static const disp_pin_t s_disp_pin[7] =
|
||||
{
|
||||
{ GPIOB, GPIO_PIN_0 }, /* pin1 = LED_1 = PB0 */
|
||||
{ GPIOB, GPIO_PIN_1 }, /* pin2 = LED_2 = PB1 */
|
||||
{ GPIOA, GPIO_PIN_0 }, /* pin3 = LED_3 = PA0 */
|
||||
{ GPIOA, GPIO_PIN_1 }, /* pin4 = LED_4 = PA1 */
|
||||
{ GPIOB, GPIO_PIN_11 }, /* pin5 = LED_5 = PB11 */
|
||||
{ GPIOB, GPIO_PIN_13 }, /* pin6 = LED_6 = PB13 */
|
||||
{ GPIOA, GPIO_PIN_6 }, /* pin7 = LED_7 = PA6 */
|
||||
};
|
||||
|
||||
/* Seven-segment codes, bit0=A .. bit6=G. */
|
||||
static const uint8_t s_seg_digit[10] =
|
||||
{
|
||||
0x3Fu, /* 0 = ABCDEF */
|
||||
0x06u, /* 1 = BC */
|
||||
0x5Bu, /* 2 = ABDEG */
|
||||
0x4Fu, /* 3 = ABCDG */
|
||||
0x66u, /* 4 = BCFG */
|
||||
0x6Du, /* 5 = ACDFG */
|
||||
0x7Du, /* 6 = ACDEFG */
|
||||
0x07u, /* 7 = ABC */
|
||||
0x7Fu, /* 8 = ABCDEFG */
|
||||
0x6Fu, /* 9 = ABCDFG */
|
||||
};
|
||||
|
||||
/* Hex digit codes, index 0..5 = A..F. */
|
||||
static const uint8_t s_seg_hex[6] =
|
||||
{
|
||||
0x77u, /* A = ABCEFG */
|
||||
0x7Cu, /* b = CDEFG */
|
||||
0x39u, /* C = ADEF */
|
||||
0x5Eu, /* d = BCDEG */
|
||||
0x79u, /* E = ADEFG */
|
||||
0x71u, /* F = AEFG */
|
||||
};
|
||||
|
||||
/* Private variables ----------------------------------------------------------*/
|
||||
|
||||
/** Display value written by other tasks through display_set(). */
|
||||
static volatile float g_disp_value = 0.0f;
|
||||
/** Display unit: DISP_TYPE_CELSIUS / DISP_TYPE_FAHRENHEIT. */
|
||||
static volatile uint8_t g_disp_type = DISP_TYPE_CELSIUS;
|
||||
/** Number base: DISP_BASE_DECIMAL / DISP_BASE_HEX. */
|
||||
static volatile uint8_t g_disp_base = DISP_BASE_DECIMAL;
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
/* Private functions ----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Set a display pin to input (high-impedance).
|
||||
*/
|
||||
static void pin_input(uint8_t idx)
|
||||
{
|
||||
GPIO_InitType s;
|
||||
|
||||
GPIO_InitStruct(&s);
|
||||
s.Pin = s_disp_pin[idx].pin;
|
||||
s.GPIO_Mode = GPIO_MODE_INPUT;
|
||||
s.GPIO_Pull = GPIO_NO_PULL;
|
||||
GPIO_InitPeripheral(s_disp_pin[idx].port, &s);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set a display pin to push-pull output HIGH.
|
||||
*/
|
||||
static void pin_high(uint8_t idx)
|
||||
{
|
||||
GPIO_InitType s;
|
||||
|
||||
GPIO_InitStruct(&s);
|
||||
s.Pin = s_disp_pin[idx].pin;
|
||||
s.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitPeripheral(s_disp_pin[idx].port, &s);
|
||||
GPIO_SetBits(s_disp_pin[idx].port, s_disp_pin[idx].pin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set a display pin to push-pull output LOW.
|
||||
*/
|
||||
static void pin_low(uint8_t idx)
|
||||
{
|
||||
GPIO_InitType s;
|
||||
|
||||
GPIO_InitStruct(&s);
|
||||
s.Pin = s_disp_pin[idx].pin;
|
||||
s.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitPeripheral(s_disp_pin[idx].port, &s);
|
||||
GPIO_ResetBits(s_disp_pin[idx].port, s_disp_pin[idx].pin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Put all seven display pins into high-impedance (input).
|
||||
*/
|
||||
static void all_pins_input(void)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
pin_input(i);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Light one segment: pin h HIGH, pin l LOW, others stay high-Z, then
|
||||
* release both pins back to high-Z.
|
||||
*/
|
||||
static void seg_pair_on(uint8_t h, uint8_t l)
|
||||
{
|
||||
pin_high(h);
|
||||
pin_low(l);
|
||||
delay_n_10us(DISP_SEG_ON_US / 10u);
|
||||
pin_input(h);
|
||||
pin_input(l);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Light segment s (A=0..G=6) of digit d (1..5).
|
||||
*/
|
||||
static void seg_on(uint8_t s, uint8_t d)
|
||||
{
|
||||
uint8_t h = (uint8_t)((s + d) % 7u);
|
||||
uint8_t l = (uint8_t)((d - 1u) + (s + d) / 7u);
|
||||
|
||||
seg_pair_on(h, l);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Light the DIG6 "deg F" indicator (A6).
|
||||
*/
|
||||
static void dig6_degf_on(void)
|
||||
{
|
||||
seg_pair_on(6u, 5u); /* pin7 HIGH, pin6 LOW */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Light the DIG6 decimal-point indicator (B6).
|
||||
*/
|
||||
static void dig6_dp_on(void)
|
||||
{
|
||||
seg_pair_on(0u, 6u); /* pin1 HIGH, pin7 LOW */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Map a decode character to its segment bit mask.
|
||||
*/
|
||||
static uint8_t seg_of_char(uint8_t c)
|
||||
{
|
||||
if (c <= 9u)
|
||||
{
|
||||
return s_seg_digit[c];
|
||||
}
|
||||
if (c < 0x10u)
|
||||
{
|
||||
return s_seg_hex[c - 0xAu];
|
||||
}
|
||||
if (c == CHAR_MINUS)
|
||||
{
|
||||
return SEG_MINUS;
|
||||
}
|
||||
return SEG_BLANK;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Decode the display value into 5 digit codes + a decimal-point flag.
|
||||
* @param value value to display
|
||||
* @param base DISP_BASE_DECIMAL (1 decimal place) or DISP_BASE_HEX
|
||||
* @param digits out: 5 codes (0..9, 0xA..0xF for hex, CHAR_MINUS, CHAR_BLANK)
|
||||
* @param dp_flag out: 1 = light the DIG6 decimal point
|
||||
*/
|
||||
static void display_decode(float value, uint8_t base, uint8_t *digits, uint8_t *dp_flag)
|
||||
{
|
||||
uint8_t i, j;
|
||||
|
||||
*dp_flag = 0u;
|
||||
for (i = 0; i < DISP_DIGITS; i++)
|
||||
{
|
||||
digits[i] = CHAR_BLANK;
|
||||
}
|
||||
|
||||
if (base == DISP_BASE_HEX)
|
||||
{
|
||||
uint32_t iv = (uint32_t)(int32_t)value; /* integer part */
|
||||
uint8_t hx[DISP_DIGITS];
|
||||
uint8_t lead = 1u;
|
||||
|
||||
for (j = 0; j < DISP_DIGITS; j++)
|
||||
{
|
||||
hx[DISP_DIGITS - 1u - j] = (uint8_t)(iv & 0xFu);
|
||||
iv >>= 4u;
|
||||
}
|
||||
for (j = 0; j < DISP_DIGITS; j++)
|
||||
{
|
||||
if (lead && hx[j] == 0u && j < (DISP_DIGITS - 1u))
|
||||
{
|
||||
digits[j] = CHAR_BLANK; /* blank leading zeros */
|
||||
}
|
||||
else
|
||||
{
|
||||
lead = 0u;
|
||||
digits[j] = hx[j];
|
||||
}
|
||||
}
|
||||
}
|
||||
else /* DISP_BASE_DECIMAL */
|
||||
{
|
||||
int neg = (value < 0.0f);
|
||||
float a = neg ? -value : value;
|
||||
int32_t scaled;
|
||||
uint8_t dc[DISP_DIGITS];
|
||||
uint8_t lead = 1u;
|
||||
|
||||
if (a > 9999.9f)
|
||||
{
|
||||
a = 9999.9f;
|
||||
}
|
||||
scaled = (int32_t)(a * 10.0f + 0.5f); /* value * 10, 1 decimal */
|
||||
|
||||
for (j = 0; j < DISP_DIGITS; j++)
|
||||
{
|
||||
dc[DISP_DIGITS - 1u - j] = (uint8_t)(scaled % 10);
|
||||
scaled /= 10;
|
||||
}
|
||||
for (j = 0; j < DISP_DIGITS; j++)
|
||||
{
|
||||
if (lead && dc[j] == 0u && j < (DISP_DIGITS - 1u))
|
||||
{
|
||||
digits[j] = CHAR_BLANK; /* blank leading zeros */
|
||||
}
|
||||
else
|
||||
{
|
||||
lead = 0u;
|
||||
digits[j] = dc[j];
|
||||
}
|
||||
}
|
||||
|
||||
*dp_flag = 1u; /* decimal point always on */
|
||||
|
||||
if (neg)
|
||||
{
|
||||
for (j = 0; j < DISP_DIGITS; j++)
|
||||
{
|
||||
if (digits[j] != CHAR_BLANK)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (j > 0u)
|
||||
{
|
||||
digits[j - 1u] = CHAR_MINUS; /* '-' just before the value */
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Public functions -----------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief Update the display content.
|
||||
* @param value floating value to display
|
||||
* @param type DISP_TYPE_CELSIUS / DISP_TYPE_FAHRENHEIT
|
||||
* @param base DISP_BASE_DECIMAL / DISP_BASE_HEX
|
||||
*/
|
||||
void display_set(float value, uint8_t type, uint8_t base)
|
||||
{
|
||||
/* A single scan frame may observe a partially-updated triple; that is
|
||||
* harmless for a display and keeps the setter lock-free. */
|
||||
g_disp_value = value;
|
||||
g_disp_type = type;
|
||||
g_disp_base = base;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Display driver task: decode the global value and scan every lit
|
||||
* segment, one at a time, forever.
|
||||
*/
|
||||
void display_task(void *pvParameters)
|
||||
{
|
||||
(void)pvParameters;
|
||||
|
||||
all_pins_input();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
float value = g_disp_value;
|
||||
uint8_t type = g_disp_type;
|
||||
uint8_t base = g_disp_base;
|
||||
uint8_t digits[DISP_DIGITS];
|
||||
uint8_t dp_flag;
|
||||
uint8_t d, s;
|
||||
uint8_t segmask;
|
||||
|
||||
display_decode(value, base, digits, &dp_flag);
|
||||
|
||||
app_wdt_heartbeat();
|
||||
|
||||
/* DIG1..DIG5 */
|
||||
for (d = 1u; d <= DISP_DIGITS; d++)
|
||||
{
|
||||
segmask = seg_of_char(digits[d - 1u]);
|
||||
if (segmask == SEG_BLANK)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
for (s = 0; s < 7u; s++)
|
||||
{
|
||||
if (segmask & (1u << s))
|
||||
{
|
||||
seg_on(s, d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* DIG6 indicators */
|
||||
if (type != DISP_TYPE_CELSIUS)
|
||||
{
|
||||
dig6_degf_on();
|
||||
}
|
||||
if (dp_flag)
|
||||
{
|
||||
dig6_dp_on();
|
||||
}
|
||||
|
||||
/* one scan frame done: yield; a 20 ms refresh is enough for the display */
|
||||
vTaskDelay(pdMS_TO_TICKS(20));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
@ -85,6 +85,7 @@
|
||||
#include "app_version.h"
|
||||
#include "app_user_config.h"
|
||||
#include "app_wdt.h"
|
||||
#include "app_display.h"
|
||||
#include "n32wb03x_iwdg.h"
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@ -104,8 +105,8 @@
|
||||
|
||||
#define BLE_SCHED_TASK_STACK (512) /* stack in words */
|
||||
#define BLE_SCHED_TASK_PRIORITY (2)
|
||||
#define LED_TASK_STACK (128) /* stack in words */
|
||||
#define LED_TASK_PRIORITY (1)
|
||||
#define DISP_TASK_STACK (256) /* stack in words */
|
||||
#define DISP_TASK_PRIORITY (1)
|
||||
|
||||
/* Private constants ----------------------------------------------------------*/
|
||||
/* Private variables ----------------------------------------------------------*/
|
||||
@ -188,28 +189,6 @@ static void ble_schedule_task(void *pvParameters)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LED blink task: toggle LED1 (PB0) as a run indicator; the half
|
||||
* period comes from the APP_DATA parameter record (led1_blink_ms,
|
||||
* "appset led <50..10000>"). LED2 (PA6) stays owned by
|
||||
* app_ble.c as the connection state LED.
|
||||
*/
|
||||
static void led_task(void *pvParameters)
|
||||
{
|
||||
(void)pvParameters;
|
||||
for (;;)
|
||||
{
|
||||
uint16_t period = app_params_get()->led1_blink_ms;
|
||||
if (period < PARAM_LED1_BLINK_MS_MIN)
|
||||
{
|
||||
period = PARAM_LED1_BLINK_MS_DEF;
|
||||
}
|
||||
app_wdt_heartbeat();
|
||||
LedBlink(LED1_PORT, LED1_PIN);
|
||||
vTaskDelay(pdMS_TO_TICKS(period));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief main function
|
||||
* @param
|
||||
@ -250,10 +229,6 @@ int main(void)
|
||||
/* frame protocol frontend: CLI-over-BLE (rdtss characteristics) */
|
||||
app_ble_proto_init();
|
||||
|
||||
// periph init
|
||||
LedInit(LED1_PORT,LED1_PIN); // power led
|
||||
LedInit(LED2_PORT,LED2_PIN); //connection state
|
||||
|
||||
/* Load APP_DATA parameter record (defaults in RAM when invalid) */
|
||||
app_params_init();
|
||||
|
||||
@ -264,9 +239,9 @@ int main(void)
|
||||
/* BLE kernel schedule task (replaces the bare-metal while loop) */
|
||||
xTaskCreate(ble_schedule_task, "BLE", BLE_SCHED_TASK_STACK, NULL,
|
||||
BLE_SCHED_TASK_PRIORITY, NULL);
|
||||
/* LED1 blink task */
|
||||
xTaskCreate(led_task, "LED", LED_TASK_STACK, NULL,
|
||||
LED_TASK_PRIORITY, NULL);
|
||||
/* YF30137 7-seg display scan task (Charlieplexing over 7 GPIOs) */
|
||||
xTaskCreate(display_task, "DISP", DISP_TASK_STACK, NULL,
|
||||
DISP_TASK_PRIORITY, NULL);
|
||||
/* CLI task (command parsing/execution/response over UART + BLE) */
|
||||
AppCli_Init();
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
{
|
||||
"file": "mothercup_ble_prod_ota.bin",
|
||||
"target_bank": 1,
|
||||
"size": 56120,
|
||||
"crc32": "0x747E4248",
|
||||
"version": 65565
|
||||
"size": 56584,
|
||||
"crc32": "0xEE8BBF75",
|
||||
"version": 65566
|
||||
}
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
{
|
||||
"file": "mothercup_ble_prod_ota_app2.bin",
|
||||
"target_bank": 2,
|
||||
"size": 56420,
|
||||
"crc32": "0x4F5B94CD",
|
||||
"version": 65565
|
||||
"size": 56888,
|
||||
"crc32": "0x7D11C1E5",
|
||||
"version": 65566
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user