firmware is working and compiling! modified cmd L502_BF_CMD_CODE_GET_PARAM (aka f_cmd_get_param()). Added param 87, which returns specific number 0xADEF (decimal 44527).
This commit is contained in:
Binary file not shown.
Binary file not shown.
@ -223,7 +223,7 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.iplt
|
||||
*(.iplt)
|
||||
|
||||
.text 0x00000000ffa00090 0x31b0
|
||||
.text 0x00000000ffa00090 0x31f0
|
||||
*(.text.unlikely .text.*_unlikely)
|
||||
*(.text.exit .text.exit.*)
|
||||
*(.text.startup .text.startup.*)
|
||||
@ -232,93 +232,93 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.text 0x00000000ffa00090 0x68 build/release/objs/l502_async.o
|
||||
0x00000000ffa00090 _async_dout
|
||||
0x00000000ffa000d0 _async_dac_out
|
||||
.text 0x00000000ffa000f8 0x8a8 build/release/objs/l502_cmd.o
|
||||
.text 0x00000000ffa000f8 0x8b4 build/release/objs/l502_cmd.o
|
||||
0x00000000ffa000f8 _l502_cmd_set_req
|
||||
0x00000000ffa00120 _l502_cmd_done
|
||||
0x00000000ffa006e4 _l502_cmd_start
|
||||
0x00000000ffa0082c _l502_cmd_check_req
|
||||
.text 0x00000000ffa009a0 0x418 build/release/objs/l502_fpga.o
|
||||
0x00000000ffa009a0 _fpga_reg_write
|
||||
0x00000000ffa00af0 _fpga_reg_read
|
||||
0x00000000ffa00c44 _fpga_spi_init
|
||||
.text 0x00000000ffa00db8 0x5c8 build/release/objs/l502_hdma.o
|
||||
0x00000000ffa00db8 _hdma_send_start
|
||||
0x00000000ffa00dfc _hdma_send_stop
|
||||
0x00000000ffa00e14 _hdma_recv_start
|
||||
0x00000000ffa00e64 _hdma_recv_stop
|
||||
0x00000000ffa00e7c _hdma_send_req_rdy
|
||||
0x00000000ffa00ea4 _hdma_recv_req_rdy
|
||||
0x00000000ffa00ecc _hdma_send_req_start
|
||||
0x00000000ffa00f6c _hdma_recv_req_start
|
||||
0x00000000ffa01010 _hdma_rd_isr
|
||||
0x00000000ffa01054 _hdma_init
|
||||
0x00000000ffa01210 _hdma_isr
|
||||
.text 0x00000000ffa01380 0x388 build/release/objs/l502_init.o
|
||||
0x00000000ffa01380 _l502_otp_make_invalid
|
||||
0x00000000ffa013c4 _l502_setup_pll
|
||||
0x00000000ffa013ec _l502_otp_write_cfg
|
||||
0x00000000ffa014a8 _l502_otp_init
|
||||
0x00000000ffa0160c _l502_init
|
||||
.text 0x00000000ffa01708 0x2ec build/release/objs/l502_params.o
|
||||
0x00000000ffa01708 _params_set_lch_cnt
|
||||
0x00000000ffa01734 _params_set_lch
|
||||
0x00000000ffa01794 _params_set_adc_freq_div
|
||||
0x00000000ffa017c4 _params_set_ref_freq
|
||||
0x00000000ffa017dc _params_set_adc_interframe_delay
|
||||
0x00000000ffa01808 _params_set_sync_mode
|
||||
0x00000000ffa01838 _params_set_sync_start_mode
|
||||
0x00000000ffa01868 _params_set_din_freq_div
|
||||
0x00000000ffa01898 _params_set_dac_freq_div
|
||||
0x00000000ffa018c8 _configure
|
||||
.text 0x00000000ffa019f4 0x550 build/release/objs/l502_sport_tx.o
|
||||
0x00000000ffa019f4 _sport_tx_out_status
|
||||
0x00000000ffa01a2c _sport_tx_init
|
||||
0x00000000ffa01b5c _sport_tx_req_rdy
|
||||
0x00000000ffa01b80 _isr_sport_dma_tx
|
||||
0x00000000ffa01cec _sport_tx_start_req
|
||||
0x00000000ffa01dd8 _sport_tx_stop
|
||||
.text 0x00000000ffa01f44 0x8f0 build/release/objs/l502_stream.o
|
||||
0x00000000ffa01f44 _stream_in_buf_free
|
||||
0x00000000ffa01f6c _stream_out_buf_free
|
||||
0x00000000ffa01f94 _hdma_recv_done
|
||||
0x00000000ffa01fb8 _sport_in_buffer_size
|
||||
0x00000000ffa01fc8 _sport_in_set_step_size
|
||||
0x00000000ffa02018 _sport_rx_stop
|
||||
0x00000000ffa02064 _sport_rx_start
|
||||
0x00000000ffa0214c _stream_proc
|
||||
0x00000000ffa022dc _stream_out_preload
|
||||
0x00000000ffa02350 _l502_stream_init
|
||||
0x00000000ffa02370 _streams_stop
|
||||
0x00000000ffa02418 _isr_sport_dma_rx
|
||||
0x00000000ffa02564 _stream_disable
|
||||
0x00000000ffa025c8 _stream_enable
|
||||
0x00000000ffa02628 _streams_start
|
||||
.text 0x00000000ffa02834 0x728 build/release/objs/l502_tests.o
|
||||
0x00000000ffa02834 _l502_cmd_test
|
||||
.text 0x00000000ffa02f5c 0xa0 build/release/objs/l502_user_process.o
|
||||
0x00000000ffa02f5c _usr_cmd_process
|
||||
0x00000000ffa02f70 _sport_tx_done
|
||||
0x00000000ffa02f80 _hdma_send_done
|
||||
0x00000000ffa02f90 _usr_out_proc_data
|
||||
0x00000000ffa02fc8 _usr_in_proc_data
|
||||
.text 0x00000000ffa02ffc 0x14 build/release/objs/main.o
|
||||
0x00000000ffa02ffc _main
|
||||
.text 0x00000000ffa03010 0x9c /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
0x00000000ffa03010 ___udivsi3
|
||||
.text 0x00000000ffa030ac 0xd4 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
0x00000000ffa030ac _memmove
|
||||
.text 0x00000000ffa03180 0xb8 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
0x00000000ffa03180 _memset
|
||||
0x00000000ffa006f0 _l502_cmd_start
|
||||
0x00000000ffa00838 _l502_cmd_check_req
|
||||
.text 0x00000000ffa009ac 0x418 build/release/objs/l502_fpga.o
|
||||
0x00000000ffa009ac _fpga_reg_write
|
||||
0x00000000ffa00afc _fpga_reg_read
|
||||
0x00000000ffa00c50 _fpga_spi_init
|
||||
.text 0x00000000ffa00dc4 0x5c8 build/release/objs/l502_hdma.o
|
||||
0x00000000ffa00dc4 _hdma_send_start
|
||||
0x00000000ffa00e08 _hdma_send_stop
|
||||
0x00000000ffa00e20 _hdma_recv_start
|
||||
0x00000000ffa00e70 _hdma_recv_stop
|
||||
0x00000000ffa00e88 _hdma_send_req_rdy
|
||||
0x00000000ffa00eb0 _hdma_recv_req_rdy
|
||||
0x00000000ffa00ed8 _hdma_send_req_start
|
||||
0x00000000ffa00f78 _hdma_recv_req_start
|
||||
0x00000000ffa0101c _hdma_rd_isr
|
||||
0x00000000ffa01060 _hdma_init
|
||||
0x00000000ffa0121c _hdma_isr
|
||||
.text 0x00000000ffa0138c 0x388 build/release/objs/l502_init.o
|
||||
0x00000000ffa0138c _l502_otp_make_invalid
|
||||
0x00000000ffa013d0 _l502_setup_pll
|
||||
0x00000000ffa013f8 _l502_otp_write_cfg
|
||||
0x00000000ffa014b4 _l502_otp_init
|
||||
0x00000000ffa01618 _l502_init
|
||||
.text 0x00000000ffa01714 0x2ec build/release/objs/l502_params.o
|
||||
0x00000000ffa01714 _params_set_lch_cnt
|
||||
0x00000000ffa01740 _params_set_lch
|
||||
0x00000000ffa017a0 _params_set_adc_freq_div
|
||||
0x00000000ffa017d0 _params_set_ref_freq
|
||||
0x00000000ffa017e8 _params_set_adc_interframe_delay
|
||||
0x00000000ffa01814 _params_set_sync_mode
|
||||
0x00000000ffa01844 _params_set_sync_start_mode
|
||||
0x00000000ffa01874 _params_set_din_freq_div
|
||||
0x00000000ffa018a4 _params_set_dac_freq_div
|
||||
0x00000000ffa018d4 _configure
|
||||
.text 0x00000000ffa01a00 0x550 build/release/objs/l502_sport_tx.o
|
||||
0x00000000ffa01a00 _sport_tx_out_status
|
||||
0x00000000ffa01a38 _sport_tx_init
|
||||
0x00000000ffa01b68 _sport_tx_req_rdy
|
||||
0x00000000ffa01b8c _isr_sport_dma_tx
|
||||
0x00000000ffa01cf8 _sport_tx_start_req
|
||||
0x00000000ffa01de4 _sport_tx_stop
|
||||
.text 0x00000000ffa01f50 0x8f0 build/release/objs/l502_stream.o
|
||||
0x00000000ffa01f50 _stream_in_buf_free
|
||||
0x00000000ffa01f78 _stream_out_buf_free
|
||||
0x00000000ffa01fa0 _hdma_recv_done
|
||||
0x00000000ffa01fc4 _sport_in_buffer_size
|
||||
0x00000000ffa01fd4 _sport_in_set_step_size
|
||||
0x00000000ffa02024 _sport_rx_stop
|
||||
0x00000000ffa02070 _sport_rx_start
|
||||
0x00000000ffa02158 _stream_proc
|
||||
0x00000000ffa022e8 _stream_out_preload
|
||||
0x00000000ffa0235c _l502_stream_init
|
||||
0x00000000ffa0237c _streams_stop
|
||||
0x00000000ffa02424 _isr_sport_dma_rx
|
||||
0x00000000ffa02570 _stream_disable
|
||||
0x00000000ffa025d4 _stream_enable
|
||||
0x00000000ffa02634 _streams_start
|
||||
.text 0x00000000ffa02840 0x728 build/release/objs/l502_tests.o
|
||||
0x00000000ffa02840 _l502_cmd_test
|
||||
.text 0x00000000ffa02f68 0xcc build/release/objs/l502_user_process.o
|
||||
0x00000000ffa02f68 _usr_cmd_process
|
||||
0x00000000ffa02fa8 _sport_tx_done
|
||||
0x00000000ffa02fb8 _hdma_send_done
|
||||
0x00000000ffa02fc8 _usr_out_proc_data
|
||||
0x00000000ffa03000 _usr_in_proc_data
|
||||
.text 0x00000000ffa03034 0x14 build/release/objs/main.o
|
||||
0x00000000ffa03034 _main
|
||||
.text 0x00000000ffa03048 0x9c /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
0x00000000ffa03048 ___udivsi3
|
||||
.text 0x00000000ffa030e4 0xd4 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
0x00000000ffa030e4 _memmove
|
||||
.text 0x00000000ffa031b8 0xb8 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
0x00000000ffa031b8 _memset
|
||||
*(.gnu.warning)
|
||||
0x00000000ffa03240 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ffa03238 0x8 00
|
||||
0x00000000ffa03280 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ffa03270 0x10 00
|
||||
|
||||
.fini
|
||||
*(.fini)
|
||||
0x00000000ffa03240 . = ALIGN (0x40)
|
||||
0x00000000ffa03240 PROVIDE (___etext, .)
|
||||
0x00000000ffa03240 PROVIDE (__etext, .)
|
||||
0x00000000ffa03240 PROVIDE (_etext, .)
|
||||
0x00000000ffa03280 . = ALIGN (0x40)
|
||||
0x00000000ffa03280 PROVIDE (___etext, .)
|
||||
0x00000000ffa03280 PROVIDE (__etext, .)
|
||||
0x00000000ffa03280 PROVIDE (_etext, .)
|
||||
|
||||
.board_state 0x00000000ff800000 0x2004
|
||||
0x00000000ff800000 _startfix_sect = .
|
||||
@ -328,11 +328,11 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
0x00000000ff802004 . = (_startfix_sect + 0x2004)
|
||||
*fill* 0x00000000ff801810 0x7f4 00
|
||||
|
||||
.rodata 0x00000000ff802004 0x254
|
||||
.rodata 0x00000000ff802004 0x2ec
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
.rodata 0x00000000ff802004 0x220 build/release/objs/l502_cmd.o
|
||||
.rodata 0x00000000ff802224 0x4 build/release/objs/l502_stream.o
|
||||
.rodata 0x00000000ff802228 0x30 build/release/objs/l502_tests.o
|
||||
.rodata 0x00000000ff802004 0x2b8 build/release/objs/l502_cmd.o
|
||||
.rodata 0x00000000ff8022bc 0x4 build/release/objs/l502_stream.o
|
||||
.rodata 0x00000000ff8022c0 0x30 build/release/objs/l502_tests.o
|
||||
|
||||
.rodata1
|
||||
*(.rodata1)
|
||||
@ -351,7 +351,7 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
|
||||
.gcc_except_table
|
||||
*(.gcc_except_table .gcc_except_table.*)
|
||||
0x00000000ff803258 . = (ALIGN (0x1000) + (. & 0xfff))
|
||||
0x00000000ff8032f0 . = (ALIGN (0x1000) + (. & 0xfff))
|
||||
|
||||
.eh_frame
|
||||
*(.eh_frame)
|
||||
@ -366,22 +366,22 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
*(.tbss .tbss.* .gnu.linkonce.tb.*)
|
||||
*(.tcommon)
|
||||
|
||||
.preinit_array 0x00000000ff803258 0x0
|
||||
0x00000000ff803258 PROVIDE (___preinit_array_start, .)
|
||||
.preinit_array 0x00000000ff8032f0 0x0
|
||||
0x00000000ff8032f0 PROVIDE (___preinit_array_start, .)
|
||||
*(.preinit_array)
|
||||
0x00000000ff803258 PROVIDE (___preinit_array_end, .)
|
||||
0x00000000ff8032f0 PROVIDE (___preinit_array_end, .)
|
||||
|
||||
.init_array 0x00000000ff803258 0x0
|
||||
0x00000000ff803258 PROVIDE (___init_array_start, .)
|
||||
.init_array 0x00000000ff8032f0 0x0
|
||||
0x00000000ff8032f0 PROVIDE (___init_array_start, .)
|
||||
*(SORT(.init_array.*))
|
||||
*(.init_array)
|
||||
0x00000000ff803258 PROVIDE (___init_array_end, .)
|
||||
0x00000000ff8032f0 PROVIDE (___init_array_end, .)
|
||||
|
||||
.fini_array 0x00000000ff803258 0x0
|
||||
0x00000000ff803258 PROVIDE (___fini_array_start, .)
|
||||
.fini_array 0x00000000ff8032f0 0x0
|
||||
0x00000000ff8032f0 PROVIDE (___fini_array_start, .)
|
||||
*(SORT(.fini_array.*))
|
||||
*(.fini_array)
|
||||
0x00000000ff803258 PROVIDE (___fini_array_end, .)
|
||||
0x00000000ff8032f0 PROVIDE (___fini_array_end, .)
|
||||
|
||||
.ctors
|
||||
*crtbegin.o(.ctors)
|
||||
@ -407,16 +407,16 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.dynamic
|
||||
*(.dynamic)
|
||||
|
||||
.data 0x00000000ff802258 0x868
|
||||
.data 0x00000000ff8022f0 0x850
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
.data 0x00000000ff802258 0x4 build/release/objs/l502_async.o
|
||||
.data 0x00000000ff80225c 0x818 build/release/objs/l502_params.o
|
||||
0x00000000ff80225c _g_set
|
||||
.data 0x00000000ff802a74 0xc build/release/objs/l502_stream.o
|
||||
0x00000000ff802a74 _g_streams
|
||||
.data 0x00000000ff802a80 0x4 build/release/objs/l502_tests.o
|
||||
0x00000000ff802ac0 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ff802a84 0x3c 00
|
||||
.data 0x00000000ff8022f0 0x4 build/release/objs/l502_async.o
|
||||
.data 0x00000000ff8022f4 0x818 build/release/objs/l502_params.o
|
||||
0x00000000ff8022f4 _g_set
|
||||
.data 0x00000000ff802b0c 0xc build/release/objs/l502_stream.o
|
||||
0x00000000ff802b0c _g_streams
|
||||
.data 0x00000000ff802b18 0x4 build/release/objs/l502_tests.o
|
||||
0x00000000ff802b40 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ff802b1c 0x24 00
|
||||
|
||||
.data1
|
||||
*(.data1)
|
||||
@ -429,36 +429,36 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
|
||||
.sdata
|
||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
||||
0x00000000ff802ac0 __edata = .
|
||||
0x00000000ff802ac0 PROVIDE (_edata, .)
|
||||
0x00000000ff802ac0 ___bss_start = .
|
||||
0x00000000ff802b40 __edata = .
|
||||
0x00000000ff802b40 PROVIDE (_edata, .)
|
||||
0x00000000ff802b40 ___bss_start = .
|
||||
|
||||
.sbss
|
||||
*(.dynsbss)
|
||||
*(.sbss .sbss.* .gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
|
||||
.bss 0x00000000ff802ac0 0x1140
|
||||
0x00000000ff802ac0 __bss_start = .
|
||||
.bss 0x00000000ff802b40 0x1140
|
||||
0x00000000ff802b40 __bss_start = .
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
.bss 0x00000000ff802ac0 0x4 build/release/objs/l502_cmd.o
|
||||
.bss 0x00000000ff802ac4 0xc build/release/objs/l502_hdma.o
|
||||
.bss 0x00000000ff802ad0 0xb4 build/release/objs/l502_sport_tx.o
|
||||
.bss 0x00000000ff802b84 0x34 build/release/objs/l502_stream.o
|
||||
0x00000000ff802b84 _g_stream_in_state
|
||||
0x00000000ff802b88 _g_stream_out_state
|
||||
0x00000000ff802b8c _g_mode
|
||||
.bss 0x00000000ff802bb8 0x1020 build/release/objs/l502_tests.o
|
||||
.bss 0x00000000ff802b40 0x4 build/release/objs/l502_cmd.o
|
||||
.bss 0x00000000ff802b44 0xc build/release/objs/l502_hdma.o
|
||||
.bss 0x00000000ff802b50 0xb4 build/release/objs/l502_sport_tx.o
|
||||
.bss 0x00000000ff802c04 0x34 build/release/objs/l502_stream.o
|
||||
0x00000000ff802c04 _g_stream_in_state
|
||||
0x00000000ff802c08 _g_stream_out_state
|
||||
0x00000000ff802c0c _g_mode
|
||||
.bss 0x00000000ff802c38 0x1020 build/release/objs/l502_tests.o
|
||||
*(COMMON)
|
||||
COMMON 0x00000000ff803bd8 0x18 build/release/objs/l502_params.o
|
||||
0x00000000ff803bd8 _g_module_info
|
||||
0x00000000ff803c00 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ff803bf0 0x10 00
|
||||
0x00000000ff803c00 __bss_end = .
|
||||
0x00000000ff803c00 . = ALIGN (0x40)
|
||||
0x00000000ff803c00 __end = .
|
||||
0x00000000ff803c00 PROVIDE (_end, .)
|
||||
COMMON 0x00000000ff803c58 0x18 build/release/objs/l502_params.o
|
||||
0x00000000ff803c58 _g_module_info
|
||||
0x00000000ff803c80 . = ALIGN (0x40)
|
||||
*fill* 0x00000000ff803c70 0x10 00
|
||||
0x00000000ff803c80 __bss_end = .
|
||||
0x00000000ff803c80 . = ALIGN (0x40)
|
||||
0x00000000ff803c80 __end = .
|
||||
0x00000000ff803c80 PROVIDE (_end, .)
|
||||
|
||||
.sdram_noinit 0x0000000000000000 0xc00000
|
||||
*(.sdram_noinit, .sdram_noinit.*)
|
||||
@ -574,7 +574,7 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.debug_pubnames
|
||||
0x0000000000000664 0x1d /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
|
||||
.debug_info 0x0000000000000000 0x3b83
|
||||
.debug_info 0x0000000000000000 0x3b98
|
||||
*(.debug_info .gnu.linkonce.wi.* .zdebug_info)
|
||||
.debug_info 0x0000000000000000 0x12c build/release/objs/l502_async.o
|
||||
.debug_info 0x000000000000012c 0xc51 build/release/objs/l502_cmd.o
|
||||
@ -585,14 +585,14 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.debug_info 0x0000000000002243 0x3aa build/release/objs/l502_sport_tx.o
|
||||
.debug_info 0x00000000000025ed 0x810 build/release/objs/l502_stream.o
|
||||
.debug_info 0x0000000000002dfd 0x4ea build/release/objs/l502_tests.o
|
||||
.debug_info 0x00000000000032e7 0x278 build/release/objs/l502_user_process.o
|
||||
.debug_info 0x000000000000355f 0x279 build/release/objs/main.o
|
||||
.debug_info 0x00000000000037d8 0x87 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_info 0x000000000000385f 0xe4 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_info 0x0000000000003943 0x12f /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_info 0x0000000000003a72 0x111 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
.debug_info 0x00000000000032e7 0x28d build/release/objs/l502_user_process.o
|
||||
.debug_info 0x0000000000003574 0x279 build/release/objs/main.o
|
||||
.debug_info 0x00000000000037ed 0x87 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_info 0x0000000000003874 0xe4 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_info 0x0000000000003958 0x12f /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_info 0x0000000000003a87 0x111 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
|
||||
.debug_abbrev 0x0000000000000000 0x130b
|
||||
.debug_abbrev 0x0000000000000000 0x1321
|
||||
*(.debug_abbrev .zdebug_abbrev)
|
||||
.debug_abbrev 0x0000000000000000 0xa0 build/release/objs/l502_async.o
|
||||
.debug_abbrev 0x00000000000000a0 0x277 build/release/objs/l502_cmd.o
|
||||
@ -603,30 +603,30 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.debug_abbrev 0x0000000000000991 0x1de build/release/objs/l502_sport_tx.o
|
||||
.debug_abbrev 0x0000000000000b6f 0x28d build/release/objs/l502_stream.o
|
||||
.debug_abbrev 0x0000000000000dfc 0x1eb build/release/objs/l502_tests.o
|
||||
.debug_abbrev 0x0000000000000fe7 0xf2 build/release/objs/l502_user_process.o
|
||||
.debug_abbrev 0x00000000000010d9 0xc9 build/release/objs/main.o
|
||||
.debug_abbrev 0x00000000000011a2 0x14 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_abbrev 0x00000000000011b6 0x14 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_abbrev 0x00000000000011ca 0xa0 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_abbrev 0x000000000000126a 0xa1 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
.debug_abbrev 0x0000000000000fe7 0x108 build/release/objs/l502_user_process.o
|
||||
.debug_abbrev 0x00000000000010ef 0xc9 build/release/objs/main.o
|
||||
.debug_abbrev 0x00000000000011b8 0x14 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_abbrev 0x00000000000011cc 0x14 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_abbrev 0x00000000000011e0 0xa0 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_abbrev 0x0000000000001280 0xa1 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
|
||||
.debug_line 0x0000000000000000 0x18d8
|
||||
.debug_line 0x0000000000000000 0x18df
|
||||
*(.debug_line .zdebug_line)
|
||||
.debug_line 0x0000000000000000 0xff build/release/objs/l502_async.o
|
||||
.debug_line 0x00000000000000ff 0x2dd build/release/objs/l502_cmd.o
|
||||
.debug_line 0x00000000000003dc 0x1d2 build/release/objs/l502_fpga.o
|
||||
.debug_line 0x00000000000005ae 0x26a build/release/objs/l502_hdma.o
|
||||
.debug_line 0x0000000000000818 0x1c2 build/release/objs/l502_init.o
|
||||
.debug_line 0x00000000000009da 0x1a2 build/release/objs/l502_params.o
|
||||
.debug_line 0x0000000000000b7c 0x1d0 build/release/objs/l502_sport_tx.o
|
||||
.debug_line 0x0000000000000d4c 0x376 build/release/objs/l502_stream.o
|
||||
.debug_line 0x00000000000010c2 0x28e build/release/objs/l502_tests.o
|
||||
.debug_line 0x0000000000001350 0x118 build/release/objs/l502_user_process.o
|
||||
.debug_line 0x0000000000001468 0xfa build/release/objs/main.o
|
||||
.debug_line 0x0000000000001562 0x78 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_line 0x00000000000015da 0xcd /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_line 0x00000000000016a7 0x117 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_line 0x00000000000017be 0x11a /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
.debug_line 0x00000000000000ff 0x2de build/release/objs/l502_cmd.o
|
||||
.debug_line 0x00000000000003dd 0x1d2 build/release/objs/l502_fpga.o
|
||||
.debug_line 0x00000000000005af 0x26a build/release/objs/l502_hdma.o
|
||||
.debug_line 0x0000000000000819 0x1c2 build/release/objs/l502_init.o
|
||||
.debug_line 0x00000000000009db 0x1a2 build/release/objs/l502_params.o
|
||||
.debug_line 0x0000000000000b7d 0x1d0 build/release/objs/l502_sport_tx.o
|
||||
.debug_line 0x0000000000000d4d 0x376 build/release/objs/l502_stream.o
|
||||
.debug_line 0x00000000000010c3 0x28e build/release/objs/l502_tests.o
|
||||
.debug_line 0x0000000000001351 0x11e build/release/objs/l502_user_process.o
|
||||
.debug_line 0x000000000000146f 0xfa build/release/objs/main.o
|
||||
.debug_line 0x0000000000001569 0x78 build/release/objs/l502-bf_basiccrt.o
|
||||
.debug_line 0x00000000000015e1 0xcd /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/libgcc.a(_udivsi3.o)
|
||||
.debug_line 0x00000000000016ae 0x117 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_line 0x00000000000017c5 0x11a /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
|
||||
.debug_frame 0x0000000000000000 0xbc8
|
||||
*(.debug_frame .zdebug_frame)
|
||||
@ -673,21 +673,21 @@ LOAD /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-
|
||||
.debug_str 0x0000000000001491 0x77 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
0x113 (size before relaxing)
|
||||
|
||||
.debug_loc 0x0000000000000000 0x251f
|
||||
.debug_loc 0x0000000000000000 0x2540
|
||||
*(.debug_loc .zdebug_loc)
|
||||
.debug_loc 0x0000000000000000 0xee build/release/objs/l502_async.o
|
||||
.debug_loc 0x00000000000000ee 0x7a5 build/release/objs/l502_cmd.o
|
||||
.debug_loc 0x0000000000000893 0x103 build/release/objs/l502_fpga.o
|
||||
.debug_loc 0x0000000000000996 0x443 build/release/objs/l502_hdma.o
|
||||
.debug_loc 0x0000000000000dd9 0x32e build/release/objs/l502_init.o
|
||||
.debug_loc 0x0000000000001107 0x2d0 build/release/objs/l502_params.o
|
||||
.debug_loc 0x00000000000013d7 0x258 build/release/objs/l502_sport_tx.o
|
||||
.debug_loc 0x000000000000162f 0x5fd build/release/objs/l502_stream.o
|
||||
.debug_loc 0x0000000000001c2c 0x43d build/release/objs/l502_tests.o
|
||||
.debug_loc 0x0000000000002069 0x1b6 build/release/objs/l502_user_process.o
|
||||
.debug_loc 0x000000000000221f 0x1f build/release/objs/main.o
|
||||
.debug_loc 0x000000000000223e 0x18c /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_loc 0x00000000000023ca 0x155 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
.debug_loc 0x00000000000000ee 0x7b0 build/release/objs/l502_cmd.o
|
||||
.debug_loc 0x000000000000089e 0x103 build/release/objs/l502_fpga.o
|
||||
.debug_loc 0x00000000000009a1 0x443 build/release/objs/l502_hdma.o
|
||||
.debug_loc 0x0000000000000de4 0x32e build/release/objs/l502_init.o
|
||||
.debug_loc 0x0000000000001112 0x2d0 build/release/objs/l502_params.o
|
||||
.debug_loc 0x00000000000013e2 0x258 build/release/objs/l502_sport_tx.o
|
||||
.debug_loc 0x000000000000163a 0x5fd build/release/objs/l502_stream.o
|
||||
.debug_loc 0x0000000000001c37 0x43d build/release/objs/l502_tests.o
|
||||
.debug_loc 0x0000000000002074 0x1cc build/release/objs/l502_user_process.o
|
||||
.debug_loc 0x0000000000002240 0x1f build/release/objs/main.o
|
||||
.debug_loc 0x000000000000225f 0x18c /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memmove.o)
|
||||
.debug_loc 0x00000000000023eb 0x155 /home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/lib/libc.a(lib_a-memset.o)
|
||||
|
||||
.debug_macinfo
|
||||
*(.debug_macinfo .zdebug_macinfo)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_async.c";
|
||||
@ -24,8 +24,8 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
2:src/l502_async.c **** @addtogroup async_io
|
||||
3:src/l502_async.c **** @{
|
||||
4:src/l502_async.c **** @file l502_async.c
|
||||
5:src/l502_async.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
6:src/l502_async.c **** (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
5:src/l502_async.c **** Файл содержит реализацию функций для асинхронного <EFBFBD>
|
||||
6:src/l502_async.c **** (пока только вывода)
|
||||
7:src/l502_async.c **** ******************************************************************************/
|
||||
8:src/l502_async.c **** #include <stdlib.h>
|
||||
9:src/l502_async.c ****
|
||||
@ -58,7 +58,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
20 .LCFI0:
|
||||
21 0002 00E80300 LINK 12;
|
||||
22 .LCFI1:
|
||||
BFIN GAS /tmp/ccCtLplV.s page 2
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 2
|
||||
|
||||
|
||||
23 .loc 1 31 0
|
||||
@ -118,7 +118,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
66 .size _async_dout, .-_async_dout
|
||||
67 003e 0000 .align 4
|
||||
68 .global _async_dac_out;
|
||||
BFIN GAS /tmp/ccCtLplV.s page 3
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 3
|
||||
|
||||
|
||||
69 .type _async_dac_out, STT_FUNC;
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
110 .size _async_dac_out, .-_async_dac_out
|
||||
111 .data;
|
||||
112 .align 4
|
||||
BFIN GAS /tmp/ccCtLplV.s page 4
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 4
|
||||
|
||||
|
||||
113 .type _last_out.2066, @object
|
||||
@ -238,7 +238,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
167 0043 08 .uleb128 0x8
|
||||
168 0044 8F .byte 0x8f
|
||||
169 0045 02 .uleb128 0x2
|
||||
BFIN GAS /tmp/ccCtLplV.s page 5
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 5
|
||||
|
||||
|
||||
170 0046 A3 .byte 0xa3
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
224 0079 2A000000 .4byte .LVL5-.Ltext0
|
||||
225 007d 0100 .2byte 0x1
|
||||
226 007f 52 .byte 0x52
|
||||
BFIN GAS /tmp/ccCtLplV.s page 6
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 6
|
||||
|
||||
|
||||
227 0080 34000000 .4byte .LVL7-.Ltext0
|
||||
@ -358,7 +358,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
281 0021 00000000 .4byte .Ldebug_line0
|
||||
282 0025 02 .uleb128 0x2
|
||||
283 0026 04 .byte 0x4
|
||||
BFIN GAS /tmp/ccCtLplV.s page 7
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 7
|
||||
|
||||
|
||||
284 0027 07 .byte 0x7
|
||||
@ -418,7 +418,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
338 0087 64000000 .4byte 0x64
|
||||
339 008b 05 .uleb128 0x5
|
||||
340 008c E8000000 .4byte .LASF12
|
||||
BFIN GAS /tmp/ccCtLplV.s page 8
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 8
|
||||
|
||||
|
||||
341 0090 02 .byte 0x2
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
395 0109 93000000 .4byte .LLST3
|
||||
396 010d 09 .uleb128 0x9
|
||||
397 010e 636800 .string "ch"
|
||||
BFIN GAS /tmp/ccCtLplV.s page 9
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 9
|
||||
|
||||
|
||||
398 0111 01 .byte 0x1
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
452 0029 04 .uleb128 0x4
|
||||
453 002a 24 .uleb128 0x24
|
||||
454 002b 00 .byte 0x0
|
||||
BFIN GAS /tmp/ccCtLplV.s page 10
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 10
|
||||
|
||||
|
||||
455 002c 0B .uleb128 0xb
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
509 0062 11 .uleb128 0x11
|
||||
510 0063 01 .uleb128 0x1
|
||||
511 0064 12 .uleb128 0x12
|
||||
BFIN GAS /tmp/ccCtLplV.s page 11
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 11
|
||||
|
||||
|
||||
512 0065 01 .uleb128 0x1
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
566 009b 40 .uleb128 0x40
|
||||
567 009c 06 .uleb128 0x6
|
||||
568 009d 00 .byte 0x0
|
||||
BFIN GAS /tmp/ccCtLplV.s page 12
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 12
|
||||
|
||||
|
||||
569 009e 00 .byte 0x0
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
605 003e 6C6F6E67 .string "long long unsigned int"
|
||||
605 206C6F6E
|
||||
605 6720756E
|
||||
BFIN GAS /tmp/ccCtLplV.s page 13
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 13
|
||||
|
||||
|
||||
605 7369676E
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
627 65642063
|
||||
627 68617200
|
||||
628 .LASF20:
|
||||
BFIN GAS /tmp/ccCtLplV.s page 14
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 14
|
||||
|
||||
|
||||
629 0130 6173796E .string "async_dac_out"
|
||||
@ -797,14 +797,14 @@ BFIN GAS /tmp/ccCtLplV.s page 1
|
||||
635 0154 63686172 .string "char"
|
||||
635 00
|
||||
636 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/ccCtLplV.s page 15
|
||||
BFIN GAS /tmp/ccPZWCwW.s page 15
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_async.c
|
||||
/tmp/ccCtLplV.s:13 .text:0000000000000000 _async_dout
|
||||
/tmp/ccCtLplV.s:115 .data:0000000000000000 _last_out.2066
|
||||
/tmp/ccCtLplV.s:70 .text:0000000000000040 _async_dac_out
|
||||
/tmp/ccPZWCwW.s:13 .text:0000000000000000 _async_dout
|
||||
/tmp/ccPZWCwW.s:115 .data:0000000000000000 _last_out.2066
|
||||
/tmp/ccPZWCwW.s:70 .text:0000000000000040 _async_dac_out
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
_fpga_reg_write
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_fpga.c";
|
||||
@ -23,11 +23,11 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1:src/l502_fpga.c **** /** @addtogroup fpga_regs
|
||||
2:src/l502_fpga.c **** @{
|
||||
3:src/l502_fpga.c **** @file l502_fpga.c
|
||||
4:src/l502_fpga.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5:src/l502_fpga.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPI.
|
||||
6:src/l502_fpga.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_spi_init().
|
||||
7:src/l502_fpga.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_reg_write(), <20>
|
||||
8:src/l502_fpga.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_reg_read(). */
|
||||
4:src/l502_fpga.c **** Файл содержит логику передачи команд для чтения/зап
|
||||
5:src/l502_fpga.c **** ПЛИС по SPI.
|
||||
6:src/l502_fpga.c **** Изначально SPI должен быть проинициализирован с помо
|
||||
7:src/l502_fpga.c **** После этого можно осуществлять запись с помощью fpga_r
|
||||
8:src/l502_fpga.c **** чтение с помощью fpga_reg_read(). */
|
||||
9:src/l502_fpga.c ****
|
||||
10:src/l502_fpga.c **** #include <cdefBF523.h>
|
||||
11:src/l502_fpga.c ****
|
||||
@ -39,14 +39,14 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
17:src/l502_fpga.c ****
|
||||
18:src/l502_fpga.c ****
|
||||
19:src/l502_fpga.c **** static uint16_t f_spi_rw(uint16_t word) {
|
||||
20:src/l502_fpga.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
20:src/l502_fpga.c **** /* если в было принято уже слово - то читаем его, чтобы
|
||||
21:src/l502_fpga.c **** if (*pSPI_STAT & RXS) {
|
||||
22:src/l502_fpga.c **** volatile uint16_t dummy;
|
||||
23:src/l502_fpga.c **** dummy = *pSPI_RDBR;
|
||||
24:src/l502_fpga.c **** }
|
||||
25:src/l502_fpga.c ****
|
||||
26:src/l502_fpga.c **** *pSPI_TDBR = word;
|
||||
27:src/l502_fpga.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
27:src/l502_fpga.c **** /* ждем пока примем новое слово */
|
||||
28:src/l502_fpga.c **** while (!(*pSPI_STAT&RXS)) {
|
||||
29:src/l502_fpga.c **** continue;
|
||||
30:src/l502_fpga.c **** }
|
||||
@ -56,12 +56,12 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
34:src/l502_fpga.c ****
|
||||
35:src/l502_fpga.c ****
|
||||
36:src/l502_fpga.c **** void fpga_spi_init(void) {
|
||||
37:src/l502_fpga.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI */
|
||||
37:src/l502_fpga.c **** /* настройка SPI */
|
||||
38:src/l502_fpga.c **** *pSPI_BAUD = 2; /* SPI CLK = 132.5/(2*2) = 33.125 */
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 2
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 2
|
||||
|
||||
|
||||
39:src/l502_fpga.c **** *pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, MSB first, 16-bit, CPHA=0, CPOL=0 */
|
||||
39:src/l502_fpga.c **** *pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* Мастер, MSB first, 16-bit, CPHA=0, CPO
|
||||
40:src/l502_fpga.c **** *pSPI_FLG = FLS1;
|
||||
41:src/l502_fpga.c ****
|
||||
42:src/l502_fpga.c **** *pPORTG_MUX = (*pPORTG_MUX & 0xFFFC) | 2;
|
||||
@ -118,7 +118,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
50:src/l502_fpga.c **** f_spi_rw((addr&L502_SPI_MSK_ADDR) | L502_SPI_BIT_START | L502_SPI_BIT_WR);
|
||||
55 .loc 1 50 0
|
||||
56 001e 20E100C0 R0 = -16384 (X);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 3
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 3
|
||||
|
||||
|
||||
57 .LBB72:
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
104 0056 000C cc =R0==0;
|
||||
105 0058 041C if cc jump .L4 (bp);
|
||||
106 .LBB77:
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 4
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 4
|
||||
|
||||
|
||||
23:src/l502_fpga.c **** dummy = *pSPI_RDBR;
|
||||
@ -238,7 +238,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
21:src/l502_fpga.c **** if (*pSPI_STAT & RXS) {
|
||||
153 .loc 1 21 0
|
||||
154 008c 0AE10805 P2.L = 1288;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 5
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 5
|
||||
|
||||
|
||||
155 0090 1195 R1 = W [P2] (Z);
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
32:src/l502_fpga.c **** return *pSPI_RDBR;
|
||||
202 .loc 1 32 0
|
||||
203 00cc 0895 R0 = W [P1] (Z);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 6
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 6
|
||||
|
||||
|
||||
204 .LBE88:
|
||||
@ -358,7 +358,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
21:src/l502_fpga.c **** if (*pSPI_STAT & RXS) {
|
||||
251 .loc 1 21 0
|
||||
252 010a 4AE1C0FF P2.H = 65472;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 7
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 7
|
||||
|
||||
|
||||
253 .LBE100:
|
||||
@ -418,7 +418,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
299 0140 4AE1C0FF P2.H = 65472;
|
||||
300 0144 0AE11005 P2.L = 1296;
|
||||
301 0148 1095 R0 = W [P2] (Z);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 8
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 8
|
||||
|
||||
|
||||
302 .LBE103:
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
60:src/l502_fpga.c **** f_spi_rw((addr&L502_SPI_MSK_ADDR) | L502_SPI_BIT_START);
|
||||
345 .loc 1 60 0
|
||||
346 016c 20E1FF3F R0 = 16383 (X);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 9
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 9
|
||||
|
||||
|
||||
347 0170 0154 R0 = R1 & R0;
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
394 01a4 1195 R1 = W [P2] (Z);
|
||||
395 01a6 0061 R0 = 32 (X);
|
||||
396 01a8 0854 R0 = R0 & R1;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 10
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 10
|
||||
|
||||
|
||||
397 01aa 000C cc =R0==0;
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
444 01e6 0854 R0 = R0 & R1;
|
||||
445 01e8 000C cc =R0==0;
|
||||
446 01ea 041C if cc jump .L24 (bp);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 11
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 11
|
||||
|
||||
|
||||
447 .LBB126:
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
494 0228 041C if cc jump .L26 (bp);
|
||||
495 .LBB133:
|
||||
23:src/l502_fpga.c **** dummy = *pSPI_RDBR;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 12
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 12
|
||||
|
||||
|
||||
496 .loc 1 23 0
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
23:src/l502_fpga.c **** dummy = *pSPI_RDBR;
|
||||
544 .loc 1 23 0
|
||||
545 0268 0895 R0 = W [P1] (Z);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 13
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 13
|
||||
|
||||
|
||||
546 026a 78E6FEFF W [FP+-4] = R0;
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
588 .loc 1 38 0
|
||||
589 02a4 4AE1C0FF P2.H = 65472;
|
||||
36:src/l502_fpga.c **** void fpga_spi_init(void) {
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 14
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 14
|
||||
|
||||
|
||||
590 .loc 1 36 0
|
||||
@ -789,7 +789,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
594 02ac 1160 R1 = 2 (X);
|
||||
595 02ae 0AE11405 P2.L = 1300;
|
||||
596 02b2 1197 W [P2] = R1;
|
||||
39:src/l502_fpga.c **** *pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, MSB first, 16-bit, CPHA=0, CPOL=0 */
|
||||
39:src/l502_fpga.c **** *pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* Мастер, MSB first, 16-bit, CPHA=0, CPO
|
||||
597 .loc 1 39 0
|
||||
598 02b4 20E10951 R0 = 20745 (X);
|
||||
599 02b8 626F P2 += -20;
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
636 .loc 1 26 0
|
||||
637 02f2 4AE1C0FF P2.H = 65472;
|
||||
638 02f6 0AE10C05 P2.L = 1292;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 15
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 15
|
||||
|
||||
|
||||
639 02fa 20E118C3 R0 = -15592 (X);
|
||||
@ -898,7 +898,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
686 0336 0AE10C05 P2.L = 1292;
|
||||
687 033a 0060 R0 = 0 (X);
|
||||
688 033c 1097 W [P2] = R0;
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 16
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 16
|
||||
|
||||
|
||||
28:src/l502_fpga.c **** while (!(*pSPI_STAT&RXS)) {
|
||||
@ -958,7 +958,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
736 037a 1097 W [P2] = R0;
|
||||
28:src/l502_fpga.c **** while (!(*pSPI_STAT&RXS)) {
|
||||
737 .loc 1 28 0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 17
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 17
|
||||
|
||||
|
||||
738 037c E26F P2 += -4;
|
||||
@ -1018,7 +1018,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
785 .loc 1 28 0
|
||||
786 03ba E26F P2 += -4;
|
||||
787 03bc 0161 R1 = 32 (X);
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 18
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 18
|
||||
|
||||
|
||||
788 03be 4234 I0 = P2;
|
||||
@ -1078,7 +1078,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
835 03fa 0161 R1 = 32 (X);
|
||||
836 03fc 4234 I0 = P2;
|
||||
837 .L46:
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 19
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 19
|
||||
|
||||
|
||||
838 03fe 0000 nop;
|
||||
@ -1138,7 +1138,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
890 .LASFDE2:
|
||||
891 002c 00000000 .4byte .Lframe0
|
||||
892 0030 50010000 .4byte .LFB5
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 20
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 20
|
||||
|
||||
|
||||
893 0034 52010000 .4byte .LFE5-.LFB5
|
||||
@ -1198,7 +1198,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
947 0035 00000000 .4byte 0x0
|
||||
948 0039 00000000 .4byte 0x0
|
||||
949 .LLST2:
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 21
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 21
|
||||
|
||||
|
||||
950 003d 00000000 .4byte .LVL0-.Ltext0
|
||||
@ -1258,7 +1258,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1004 .LLST8:
|
||||
1005 00d1 98020000 .4byte .LVL22-.Ltext0
|
||||
1006 00d5 9C020000 .4byte .LVL23-.Ltext0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 22
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 22
|
||||
|
||||
|
||||
1007 00d9 0100 .2byte 0x1
|
||||
@ -1318,7 +1318,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1061 004f 22010000 .4byte .LASF4
|
||||
1062 0053 03 .uleb128 0x3
|
||||
1063 0054 19010000 .4byte .LASF6
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 23
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 23
|
||||
|
||||
|
||||
1064 0058 02 .byte 0x2
|
||||
@ -1378,7 +1378,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1118 00be 06 .uleb128 0x6
|
||||
1119 00bf 29000000 .4byte .LASF12
|
||||
1120 00c3 01 .byte 0x1
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 24
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 24
|
||||
|
||||
|
||||
1121 00c4 31 .byte 0x31
|
||||
@ -1438,7 +1438,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1175 0130 00000000 .4byte .LFB4
|
||||
1176 0134 50010000 .4byte .LFE4
|
||||
1177 0138 00000000 .4byte .LLST0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 25
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 25
|
||||
|
||||
|
||||
1178 013c 12020000 .4byte 0x212
|
||||
@ -1498,7 +1498,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1232 01bd 12 .uleb128 0x12
|
||||
1233 01be 9E000000 .4byte 0x9e
|
||||
1234 01c2 02 .byte 0x2
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 26
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 26
|
||||
|
||||
|
||||
1235 01c3 7F .byte 0x7f
|
||||
@ -1558,7 +1558,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1289 0235 3A .byte 0x3a
|
||||
1290 0236 3A000000 .4byte 0x3a
|
||||
1291 023a B3000000 .4byte .LLST7
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 27
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 27
|
||||
|
||||
|
||||
1292 023e 17 .uleb128 0x17
|
||||
@ -1618,7 +1618,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1346 02b9 9E000000 .4byte 0x9e
|
||||
1347 02bd 02 .byte 0x2
|
||||
1348 02be 7F .byte 0x7f
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 28
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 28
|
||||
|
||||
|
||||
1349 02bf 7C .sleb128 -4
|
||||
@ -1678,7 +1678,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1403 0331 0C .uleb128 0xc
|
||||
1404 0332 49010000 .4byte 0x149
|
||||
1405 0336 0C .uleb128 0xc
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 29
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 29
|
||||
|
||||
|
||||
1406 0337 40010000 .4byte 0x140
|
||||
@ -1738,7 +1738,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1460 03af 00 .byte 0x0
|
||||
1461 03b0 10 .uleb128 0x10
|
||||
1462 03b1 81000000 .4byte 0x81
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 30
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 30
|
||||
|
||||
|
||||
1463 03b5 00020000 .4byte .Ldebug_ranges0+0x200
|
||||
@ -1798,7 +1798,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1517 0011 00 .byte 0x0
|
||||
1518 0012 00 .byte 0x0
|
||||
1519 0013 02 .uleb128 0x2
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 31
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 31
|
||||
|
||||
|
||||
1520 0014 24 .uleb128 0x24
|
||||
@ -1858,7 +1858,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1574 004a 05 .uleb128 0x5
|
||||
1575 004b 00 .byte 0x0
|
||||
1576 004c 03 .uleb128 0x3
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 32
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 32
|
||||
|
||||
|
||||
1577 004d 0E .uleb128 0xe
|
||||
@ -1918,7 +1918,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1631 0083 0B .uleb128 0xb
|
||||
1632 0084 01 .byte 0x1
|
||||
1633 0085 01 .uleb128 0x1
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 33
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 33
|
||||
|
||||
|
||||
1634 0086 13 .uleb128 0x13
|
||||
@ -1978,7 +1978,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1688 00bc 00 .byte 0x0
|
||||
1689 00bd 00 .byte 0x0
|
||||
1690 00be 11 .uleb128 0x11
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 34
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 34
|
||||
|
||||
|
||||
1691 00bf 0B .uleb128 0xb
|
||||
@ -2038,7 +2038,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1745 00f5 12 .uleb128 0x12
|
||||
1746 00f6 01 .uleb128 0x1
|
||||
1747 00f7 40 .uleb128 0x40
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 35
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 35
|
||||
|
||||
|
||||
1748 00f8 06 .uleb128 0x6
|
||||
@ -2098,7 +2098,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1802 012e 00 .byte 0x0
|
||||
1803 012f 00 .byte 0x0
|
||||
1804 0130 19 .uleb128 0x19
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 36
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 36
|
||||
|
||||
|
||||
1805 0131 1D .uleb128 0x1d
|
||||
@ -2158,7 +2158,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1850 0010 2C000000 .4byte .LBB73-.Ltext0
|
||||
1851 0014 46000000 .4byte .LBE73-.Ltext0
|
||||
1852 0018 22000000 .4byte .LBB72-.Ltext0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 37
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 37
|
||||
|
||||
|
||||
1853 001c 2A000000 .4byte .LBE72-.Ltext0
|
||||
@ -2218,7 +2218,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1907 00f4 2E010000 .4byte .LBE102-.Ltext0
|
||||
1908 00f8 00000000 .4byte 0x0
|
||||
1909 00fc 00000000 .4byte 0x0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 38
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 38
|
||||
|
||||
|
||||
1910 0100 50010000 .4byte .LBB106-.Ltext0
|
||||
@ -2278,7 +2278,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
1964 01d8 00000000 .4byte 0x0
|
||||
1965 01dc 00000000 .4byte 0x0
|
||||
1966 01e0 56030000 .4byte .LBB173-.Ltext0
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 39
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 39
|
||||
|
||||
|
||||
1967 01e4 5A030000 .4byte .LBE173-.Ltext0
|
||||
@ -2338,7 +2338,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
2004 69676E65
|
||||
2004 6420696E
|
||||
2004 7400
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 40
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 40
|
||||
|
||||
|
||||
2005 .LASF3:
|
||||
@ -2398,7 +2398,7 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
2028 00
|
||||
2029 .LASF0:
|
||||
2030 012b 7369676E .string "signed char"
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 41
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 41
|
||||
|
||||
|
||||
2030 65642063
|
||||
@ -2409,13 +2409,13 @@ BFIN GAS /tmp/ccUsc9gL.s page 1
|
||||
2032 5F777269
|
||||
2032 746500
|
||||
2033 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/ccUsc9gL.s page 42
|
||||
BFIN GAS /tmp/ccd5i8hx.s page 42
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_fpga.c
|
||||
/tmp/ccUsc9gL.s:13 .text:0000000000000000 _fpga_reg_write
|
||||
/tmp/ccUsc9gL.s:312 .text:0000000000000150 _fpga_reg_read
|
||||
/tmp/ccUsc9gL.s:585 .text:00000000000002a4 _fpga_spi_init
|
||||
/tmp/ccd5i8hx.s:13 .text:0000000000000000 _fpga_reg_write
|
||||
/tmp/ccd5i8hx.s:312 .text:0000000000000150 _fpga_reg_read
|
||||
/tmp/ccd5i8hx.s:585 .text:00000000000002a4 _fpga_spi_init
|
||||
|
||||
NO UNDEFINED SYMBOLS
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
BFIN GAS /tmp/ccq8enAs.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_init.c";
|
||||
@ -44,30 +44,30 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
22:src/l502_init.c **** #define L502_PLL_CTL (SET_MSEL(53) | DF)
|
||||
23:src/l502_init.c **** #define L502_PLL_DIV (SET_SSEL(4) | CSEL_DIV1)
|
||||
24:src/l502_init.c ****
|
||||
25:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM
|
||||
26:src/l502_init.c **** * RDIV=((117964,8*64ms)/8192)-(6+3)=912 // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
27:src/l502_init.c **** * <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 8192, <EFBFBD> 4096, <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1834
|
||||
25:src/l502_init.c **** /* конфигурим SDRAM
|
||||
26:src/l502_init.c **** * RDIV=((117964,8*64ms)/8192)-(6+3)=912 // по логике - это последняя конф<EFBFBD>
|
||||
27:src/l502_init.c **** * кстати - возможно не 8192, а 4096, в таком случае 1834
|
||||
28:src/l502_init.c **** */
|
||||
29:src/l502_init.c **** #define L502_SDRAM_SDRRC (((132500000 / 1000) * 64) / 8192 - (6 + 3))
|
||||
30:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 32 <EFBFBD><EFBFBD>, 9 <EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
30:src/l502_init.c **** /* размер памяти - 32 Мб, 9 бит - под адрес колонки */
|
||||
31:src/l502_init.c **** #define L502_SDRAM_SDBCTL (EBE | EBSZ_32 | EBCAW_9)
|
||||
32:src/l502_init.c **** /* CAS latency=3, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 2 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!!)
|
||||
33:src/l502_init.c **** * PASR_ALL - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
34:src/l502_init.c **** * tRAS(min)=45 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
35:src/l502_init.c **** * tRP(min)=20 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
36:src/l502_init.c **** * tRCD(min)=20 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
37:src/l502_init.c **** * tWR - <EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2
|
||||
38:src/l502_init.c **** * POWER startup delay - <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 2
|
||||
32:src/l502_init.c **** /* CAS latency=3, хотя можно и 2 - чем меньше тем лучше (правда п
|
||||
33:src/l502_init.c **** * PASR_ALL - тоже для SDRAM с 2.5 В - экономия энергии, поэтому р<EFBFBD>
|
||||
34:src/l502_init.c **** * tRAS(min)=45 нс (при частоте 120 Мгц - 6 тактов)
|
||||
35:src/l502_init.c **** * tRP(min)=20 нс (при частоте 120 Мгц - 3 тактов)
|
||||
36:src/l502_init.c **** * tRCD(min)=20 нс (при частоте 120 Мгц - 3 тактов)
|
||||
37:src/l502_init.c **** * tWR - хз, на вскидку 2
|
||||
38:src/l502_init.c **** * POWER startup delay - не нужна
|
||||
BFIN GAS /tmp/ccq8enAs.s page 2
|
||||
|
||||
|
||||
39:src/l502_init.c **** * PSS - power SDRAM - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
40:src/l502_init.c **** * SRFS - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
41:src/l502_init.c **** * EBUFE=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM
|
||||
42:src/l502_init.c **** * FBBRW=0 - <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
43:src/l502_init.c **** * EMREN=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
44:src/l502_init.c **** * TCSR=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
45:src/l502_init.c **** * CDDBG=0 - <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> signals <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
39:src/l502_init.c **** * PSS - power SDRAM - должно быть
|
||||
40:src/l502_init.c **** * SRFS - нужна для перевода SDRAM в режим пониженного энерг<EFBFBD>
|
||||
41:src/l502_init.c **** * EBUFE=0 - только один чип SDRAM
|
||||
42:src/l502_init.c **** * FBBRW=0 - для того, чтобы чтение сразу шло за записью, мож
|
||||
43:src/l502_init.c **** * EMREN=0 - тоже для SDRAM с 2.5 В - экономия энергии
|
||||
44:src/l502_init.c **** * TCSR=0 - тоже для SDRAM с 2.5 В - экономия энергии
|
||||
45:src/l502_init.c **** * CDDBG=0 - по моему сотекщд signals не расшарены
|
||||
46:src/l502_init.c **** */
|
||||
47:src/l502_init.c **** #define L502_SDRAM_SDGCTL (SCTLE | CL_2 | PASR_ALL | TRAS_6 | TRP_3 | TRCD_3 | TWR_2 | PSS)
|
||||
48:src/l502_init.c ****
|
||||
@ -118,7 +118,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
53 0034 C267 R2 += -8;
|
||||
54 0036 0AE11C00 P2.L = 28;
|
||||
55 003a 6200 call (P2);
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 3
|
||||
BFIN GAS /tmp/ccq8enAs.s page 3
|
||||
|
||||
|
||||
56 .LVL6:
|
||||
@ -143,7 +143,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
72 _l502_setup_pll:
|
||||
73 .LFB18:
|
||||
58:src/l502_init.c ****
|
||||
59:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin'a */
|
||||
59:src/l502_init.c **** /* Настройка частоты BlackFin'a */
|
||||
60:src/l502_init.c **** void l502_setup_pll(void) {
|
||||
74 .loc 1 60 0
|
||||
75 0044 00E80600 LINK 24;
|
||||
@ -174,11 +174,11 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
96 _l502_otp_write_cfg:
|
||||
97 .LFB19:
|
||||
65:src/l502_init.c ****
|
||||
66:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <EFBFBD> SDRAM <EFBFBD> <20><><EFBFBD><EFBFBD> OTP, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
66:src/l502_init.c **** /* Запись настроек PLL и SDRAM в блок OTP, начиная с заданной <20>
|
||||
67:src/l502_init.c **** uint32_t l502_otp_write_cfg(uint32_t first_page) {
|
||||
98 .loc 1 67 0
|
||||
99 .LVL9:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 4
|
||||
BFIN GAS /tmp/ccq8enAs.s page 4
|
||||
|
||||
|
||||
100 006c ED05 [--sp] = ( r7:5, p5:5 );
|
||||
@ -218,7 +218,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
78:src/l502_init.c **** | OTP_CHECK_FOR_PREV_WRITE, &val);
|
||||
79:src/l502_init.c **** }
|
||||
80:src/l502_init.c ****
|
||||
81:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
81:src/l502_init.c **** /* если была ошибка - делаем недействительным весь
|
||||
82:src/l502_init.c **** if (err)
|
||||
83:src/l502_init.c **** l502_otp_make_invalid(first_page);
|
||||
84:src/l502_init.c **** }
|
||||
@ -238,7 +238,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
133 .L12:
|
||||
71:src/l502_init.c **** val = ((uint64_t)L502_PLL_DIV << OTP_PLL_DIV_P) | ((uint64_t)L502_PLL_CTL << OTP_PLL_CTL_P)
|
||||
134 .loc 1 71 0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 5
|
||||
BFIN GAS /tmp/ccq8enAs.s page 5
|
||||
|
||||
|
||||
135 0098 20E1016A R0 = 27137 (X);
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
182 .LVL23:
|
||||
183 00e4 D1BB [FP+-12] = R1;
|
||||
184 .LVL24:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 6
|
||||
BFIN GAS /tmp/ccq8enAs.s page 6
|
||||
|
||||
|
||||
54:src/l502_init.c **** err = bfrom_OtpWrite(page, OTP_LOWER_HALF | OTP_NO_ECC, &val);
|
||||
@ -358,12 +358,12 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
235 .LFB20:
|
||||
88:src/l502_init.c ****
|
||||
89:src/l502_init.c ****
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 7
|
||||
BFIN GAS /tmp/ccq8enAs.s page 7
|
||||
|
||||
|
||||
90:src/l502_init.c ****
|
||||
91:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <EFBFBD> SDRAM <20> OTP. <20><><EFBFBD><EFBFBD> <20><><EFBFBD>,
|
||||
92:src/l502_init.c **** <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> OTP <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
91:src/l502_init.c **** /* Проверяем, есть ли действтиельные настройки PLL и SDRAM <20>
|
||||
92:src/l502_init.c **** то записываем их в OTP и инициализируем PLL вручную */
|
||||
93:src/l502_init.c **** void l502_otp_init(void) {
|
||||
236 .loc 1 93 0
|
||||
237 0128 E305 [--sp] = ( r7:4, p5:3 );
|
||||
@ -377,7 +377,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
95:src/l502_init.c ****
|
||||
96:src/l502_init.c **** //err = l502_otp_make_invalid(PBS00);
|
||||
97:src/l502_init.c ****
|
||||
98:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
98:src/l502_init.c **** /* ищем первый действительный блок настройки загруз<D183>
|
||||
99:src/l502_init.c **** for (page = PBS00; !(fnd && !err) && (page < 0xD8); page += 4) {
|
||||
100:src/l502_init.c **** uint64_t val;
|
||||
101:src/l502_init.c **** err = bfrom_OtpRead(page, OTP_LOWER_HALF, &val);
|
||||
@ -418,7 +418,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
102:src/l502_init.c **** if (!err && !((val>>OTP_INVALID_P)&0x3)) {
|
||||
275 .loc 1 102 0
|
||||
276 0152 000C cc =R0==0;
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 8
|
||||
BFIN GAS /tmp/ccq8enAs.s page 8
|
||||
|
||||
|
||||
277 0154 5914 if !cc jump .L15 (bp);
|
||||
@ -437,9 +437,9 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
287 0164 0A56 R0 = R2 | R1;
|
||||
288 0166 000C cc =R0==0;
|
||||
289 0168 1714 if !cc jump .L16 (bp);
|
||||
105:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => PLL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
106:src/l502_init.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
107:src/l502_init.c **** <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
105:src/l502_init.c **** /* если блок с настройками не был записан => PLL з
|
||||
106:src/l502_init.c **** вручную и записываем настройки для коррект<EFBFBD>
|
||||
107:src/l502_init.c **** в дальнейшем */
|
||||
108:src/l502_init.c **** if (!pll_setup) {
|
||||
290 .loc 1 108 0
|
||||
291 016a 040C cc =R4==0;
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
110:src/l502_init.c **** pll_setup = 1;
|
||||
111:src/l502_init.c **** }
|
||||
112:src/l502_init.c **** err = l502_otp_write_cfg(page);
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 9
|
||||
BFIN GAS /tmp/ccq8enAs.s page 9
|
||||
|
||||
|
||||
113:src/l502_init.c **** page+=4;
|
||||
@ -499,17 +499,17 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
332 01a2 0E0A cc =R6<=R1 (iu);
|
||||
333 01a4 D21F if cc jump .L24 (bp);
|
||||
114:src/l502_init.c **** if (!err && (page< 0xD8)) {
|
||||
115:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
116:src/l502_init.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
117:src/l502_init.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
115:src/l502_init.c **** /* если есть место - то дописываем вторую коп
|
||||
116:src/l502_init.c **** быть уверенным, что если даже при первом ч
|
||||
117:src/l502_init.c **** все загрузится нормально */
|
||||
118:src/l502_init.c **** err = l502_otp_write_cfg(page);
|
||||
119:src/l502_init.c **** }
|
||||
120:src/l502_init.c **** }
|
||||
121:src/l502_init.c **** }
|
||||
122:src/l502_init.c **** }
|
||||
123:src/l502_init.c ****
|
||||
124:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL,
|
||||
125:src/l502_init.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
124:src/l502_init.c **** /* если все страницы настроек испорчены, то инициали<D0BB>
|
||||
125:src/l502_init.c **** так как скорее всего его система не проинициализи
|
||||
126:src/l502_init.c **** if (!fnd && !pll_setup) {
|
||||
334 .loc 1 126 0
|
||||
335 01a6 050C cc =R5==0;
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
353 01b6 20E1016A R0 = 27137 (X);
|
||||
354 01ba 2160 R1 = 4 (X);
|
||||
355 01bc 804F R0 <<= 16;
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 10
|
||||
BFIN GAS /tmp/ccq8enAs.s page 10
|
||||
|
||||
|
||||
356 01be 41E10404 R1.H = 1028;
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
404 0202 6300 call (P3);
|
||||
405 0204 C82F jump.s .L21;
|
||||
406 .LVL53:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 11
|
||||
BFIN GAS /tmp/ccq8enAs.s page 11
|
||||
|
||||
|
||||
407 .L15:
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
456 0242 5730 R2 = FP;
|
||||
457 0244 1064 R0 += 2;
|
||||
458 0246 21E18000 R1 = 128 (X);
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 12
|
||||
BFIN GAS /tmp/ccq8enAs.s page 12
|
||||
|
||||
|
||||
459 024a 8267 R2 += -16;
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
507 .LFE20:
|
||||
508 .size _l502_otp_init, .-_l502_otp_init
|
||||
509 .align 4
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 13
|
||||
BFIN GAS /tmp/ccq8enAs.s page 13
|
||||
|
||||
|
||||
510 .global _l502_init;
|
||||
@ -733,20 +733,20 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
517 .LCFI12:
|
||||
518 028e 00E80300 LINK 12;
|
||||
519 .LCFI13:
|
||||
133:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OTP-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PLL, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
134:src/l502_init.c **** * <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> OTP <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>
|
||||
135:src/l502_init.c **** * SDRAM <EFBFBD> PLL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> BlackFin */
|
||||
133:src/l502_init.c **** /* инициализация OTP-памяти и PLL, если эти значения не б
|
||||
134:src/l502_init.c **** * проинициализированны до этого. Если в OTP уже были н
|
||||
135:src/l502_init.c **** * SDRAM и PLL проинициализированы уже загрузочным кодом
|
||||
136:src/l502_init.c **** l502_otp_init();
|
||||
520 .loc 1 136 0
|
||||
521 0292 FFE34BFF call _l502_otp_init;
|
||||
137:src/l502_init.c ****
|
||||
138:src/l502_init.c ****
|
||||
139:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI */
|
||||
139:src/l502_init.c **** /* настройка SPI */
|
||||
140:src/l502_init.c **** fpga_spi_init();
|
||||
522 .loc 1 140 0
|
||||
523 0296 FFE3B5FE call _fpga_spi_init;
|
||||
141:src/l502_init.c ****
|
||||
142:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT0 */
|
||||
142:src/l502_init.c **** /* настройки SPORT0 */
|
||||
143:src/l502_init.c **** *pSPORT0_TCLKDIV = 0;
|
||||
524 .loc 1 143 0
|
||||
525 029a 4AE1C0FF P2.H = 65472;
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
151:src/l502_init.c **** *pSPORT0_RCR2 = SLEN(15) | RXSE;
|
||||
544 .loc 1 151 0
|
||||
545 02c2 026D P2 += 32;
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 14
|
||||
BFIN GAS /tmp/ccq8enAs.s page 14
|
||||
|
||||
|
||||
546 02c4 1097 W [P2] = R0;
|
||||
@ -800,7 +800,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
559 02e0 0856 R0 = R0 | R1;
|
||||
560 02e2 1097 W [P2] = R0;
|
||||
155:src/l502_init.c ****
|
||||
156:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT RX <EFBFBD><EFBFBD> IVG7 */
|
||||
156:src/l502_init.c **** /* назначение SPORT RX на IVG7 */
|
||||
157:src/l502_init.c **** *pSIC_IAR2 = (*pSIC_IAR2 & 0xFFFFFFF0UL) | P16_IVG(7);
|
||||
561 .loc 1 157 0
|
||||
562 02e4 4AE1C0FF P2.H = 65472;
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
23:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #endif
|
||||
24:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
25:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #if !defined(__NO_BUILTIN)
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 15
|
||||
BFIN GAS /tmp/ccq8enAs.s page 15
|
||||
|
||||
|
||||
26:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
@ -898,7 +898,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
80:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #endif /* __DEFINED_CLI */
|
||||
81:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
82:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #if (!defined(__DEFINED_STI) && \
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 16
|
||||
BFIN GAS /tmp/ccq8enAs.s page 16
|
||||
|
||||
|
||||
83:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** ((defined(__SPECIFIC_NAMES) && defined(__ENABLE_STI)) || \
|
||||
@ -958,7 +958,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
137:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma always_inline
|
||||
138:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** static void prefetch(void * __a) {
|
||||
139:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** __builtin_prefetch(__a);
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 17
|
||||
BFIN GAS /tmp/ccq8enAs.s page 17
|
||||
|
||||
|
||||
140:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** }
|
||||
@ -1018,7 +1018,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
194:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma inline
|
||||
195:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma always_inline
|
||||
196:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** static void flush(void * __a) {
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 18
|
||||
BFIN GAS /tmp/ccq8enAs.s page 18
|
||||
|
||||
|
||||
197:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** __builtin_flush(__a);
|
||||
@ -1078,7 +1078,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
251:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
252:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** /* generate a csync instruction protected by CLI/STI for anomaly 05-00-0312;
|
||||
253:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** ** you can generate an unprotected csync by using csync_int
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 19
|
||||
BFIN GAS /tmp/ccq8enAs.s page 19
|
||||
|
||||
|
||||
254:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** */
|
||||
@ -1138,10 +1138,10 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
600 0316 2400 ssync;
|
||||
601 .LBE62:
|
||||
602 .LBE61:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 20
|
||||
BFIN GAS /tmp/ccq8enAs.s page 20
|
||||
|
||||
|
||||
159:src/l502_init.c **** /* SPORT TX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IVG9 */
|
||||
159:src/l502_init.c **** /* SPORT TX оставляем на IVG9 */
|
||||
160:src/l502_init.c **** REGISTER_ISR(9, isr_sport_dma_tx);
|
||||
603 .loc 1 160 0
|
||||
604 0318 40E10000 R0.H = _isr_sport_dma_tx;
|
||||
@ -1164,14 +1164,14 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
620 // 0 "" 2
|
||||
621 .LBE60:
|
||||
161:src/l502_init.c ****
|
||||
162:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
162:src/l502_init.c **** /* настройка HostDMA-интерфейса */
|
||||
163:src/l502_init.c **** hdma_init();
|
||||
622 .loc 1 163 0
|
||||
623 0330 FFE368FE call _hdma_init;
|
||||
624 .LVL67:
|
||||
164:src/l502_init.c ****
|
||||
165:src/l502_init.c ****
|
||||
166:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> */
|
||||
166:src/l502_init.c **** /* если SDRAM не настроена, то инициализируем ее */
|
||||
167:src/l502_init.c **** if (*pEBIU_SDSTAT & SDRS) {
|
||||
625 .loc 1 167 0
|
||||
626 0334 49E1C0FF P1.H = 65472;
|
||||
@ -1185,12 +1185,12 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
171:src/l502_init.c **** *pEBIU_SDGCTL = L502_SDRAM_SDGCTL;
|
||||
172:src/l502_init.c **** ssync();
|
||||
173:src/l502_init.c ****
|
||||
174:src/l502_init.c **** *a = 0; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
174:src/l502_init.c **** *a = 0; /* записываем по нулевому адресу произвольное
|
||||
175:src/l502_init.c ****
|
||||
176:src/l502_init.c **** while (*pEBIU_SDSTAT & SDRS) {}
|
||||
177:src/l502_init.c **** }
|
||||
178:src/l502_init.c ****
|
||||
179:src/l502_init.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
179:src/l502_init.c **** /* инициализируем параметры для потоков ввода/вывод<D0BE>
|
||||
180:src/l502_init.c **** l502_stream_init();
|
||||
181:src/l502_init.c ****
|
||||
182:src/l502_init.c ****
|
||||
@ -1198,7 +1198,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
631 .loc 1 183 0
|
||||
632 0342 01E80000 UNLINK;
|
||||
633 0346 BD05 ( r7:7, p5:5 ) = [sp++];
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 21
|
||||
BFIN GAS /tmp/ccq8enAs.s page 21
|
||||
|
||||
|
||||
634
|
||||
@ -1233,7 +1233,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
176:src/l502_init.c **** while (*pEBIU_SDSTAT & SDRS) {}
|
||||
659 .loc 1 176 0
|
||||
660 036a 5132 P2 = P1;
|
||||
174:src/l502_init.c **** *a = 0; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
174:src/l502_init.c **** *a = 0; /* записываем по нулевому адресу произвольное
|
||||
661 .loc 1 174 0
|
||||
662 036c 6D93 [P5] = P5;
|
||||
176:src/l502_init.c **** while (*pEBIU_SDSTAT & SDRS) {}
|
||||
@ -1258,7 +1258,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
680 .LFE21:
|
||||
681 .size _l502_init, .-_l502_init
|
||||
682 .section .debug_frame,"",@progbits
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 22
|
||||
BFIN GAS /tmp/ccq8enAs.s page 22
|
||||
|
||||
|
||||
683 .Lframe0:
|
||||
@ -1318,7 +1318,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
737 .LSFDE4:
|
||||
738 0048 20000000 .4byte .LEFDE4-.LASFDE4
|
||||
739 .LASFDE4:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 23
|
||||
BFIN GAS /tmp/ccq8enAs.s page 23
|
||||
|
||||
|
||||
740 004c 00000000 .4byte .Lframe0
|
||||
@ -1378,7 +1378,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
794 0090 03 .uleb128 0x3
|
||||
795 0091 85 .byte 0x85
|
||||
796 0092 02 .uleb128 0x2
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 24
|
||||
BFIN GAS /tmp/ccq8enAs.s page 24
|
||||
|
||||
|
||||
797 0093 84 .byte 0x84
|
||||
@ -1438,7 +1438,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
851 0035 50 .byte 0x50
|
||||
852 0036 12000000 .4byte .LVL1-.Ltext0
|
||||
853 003a 42000000 .4byte .LVL8-.Ltext0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 25
|
||||
BFIN GAS /tmp/ccq8enAs.s page 25
|
||||
|
||||
|
||||
854 003e 0100 .2byte 0x1
|
||||
@ -1498,7 +1498,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
908 00cb 26010000 .4byte .LVL31-.Ltext0
|
||||
909 00cf 0100 .2byte 0x1
|
||||
910 00d1 56 .byte 0x56
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 26
|
||||
BFIN GAS /tmp/ccq8enAs.s page 26
|
||||
|
||||
|
||||
911 00d2 00000000 .4byte 0x0
|
||||
@ -1558,7 +1558,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
965 .LLST8:
|
||||
966 0165 8E000000 .4byte .LVL12-.Ltext0
|
||||
967 0169 90000000 .4byte .LVL13-.Ltext0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 27
|
||||
BFIN GAS /tmp/ccq8enAs.s page 27
|
||||
|
||||
|
||||
968 016d 0100 .2byte 0x1
|
||||
@ -1618,7 +1618,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1022 01f9 50 .byte 0x50
|
||||
1023 01fa B6010000 .4byte .LVL44-.Ltext0
|
||||
1024 01fe D8010000 .4byte .LVL47-.Ltext0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 28
|
||||
BFIN GAS /tmp/ccq8enAs.s page 28
|
||||
|
||||
|
||||
1025 0202 0100 .2byte 0x1
|
||||
@ -1678,7 +1678,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1079 0295 54 .byte 0x54
|
||||
1080 0296 B6010000 .4byte .LVL44-.Ltext0
|
||||
1081 029a 8A020000 .4byte .LVL63-.Ltext0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 29
|
||||
BFIN GAS /tmp/ccq8enAs.s page 29
|
||||
|
||||
|
||||
1082 029e 0100 .2byte 0x1
|
||||
@ -1738,7 +1738,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1136 .file 3 "/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib
|
||||
1137 .file 4 "gcc/bfrom.h"
|
||||
1138 .section .debug_info
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 30
|
||||
BFIN GAS /tmp/ccq8enAs.s page 30
|
||||
|
||||
|
||||
1139 0000 D8040000 .4byte 0x4d8
|
||||
@ -1798,7 +1798,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1193 006d 07 .byte 0x7
|
||||
1194 006e 05 .uleb128 0x5
|
||||
1195 006f 04 .byte 0x4
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 31
|
||||
BFIN GAS /tmp/ccq8enAs.s page 31
|
||||
|
||||
|
||||
1196 0070 02 .uleb128 0x2
|
||||
@ -1858,7 +1858,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1250 00d9 02 .byte 0x2
|
||||
1251 00da 23 .byte 0x23
|
||||
1252 00db 06 .uleb128 0x6
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 32
|
||||
BFIN GAS /tmp/ccq8enAs.s page 32
|
||||
|
||||
|
||||
1253 00dc 08 .uleb128 0x8
|
||||
@ -1918,7 +1918,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1307 014c 12010000 .4byte 0x112
|
||||
1308 0150 2B000000 .4byte .LLST1
|
||||
1309 0154 10 .uleb128 0x10
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 33
|
||||
BFIN GAS /tmp/ccq8enAs.s page 33
|
||||
|
||||
|
||||
1310 0155 1D010000 .4byte 0x11d
|
||||
@ -1978,7 +1978,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1364 01ca 01 .byte 0x1
|
||||
1365 01cb 44 .byte 0x44
|
||||
1366 01cc 82000000 .4byte 0x82
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 34
|
||||
BFIN GAS /tmp/ccq8enAs.s page 34
|
||||
|
||||
|
||||
1367 01d0 0C .uleb128 0xc
|
||||
@ -2038,7 +2038,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1421 025a 00 .byte 0x0
|
||||
1422 025b 00 .byte 0x0
|
||||
1423 025c 00 .byte 0x0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 35
|
||||
BFIN GAS /tmp/ccq8enAs.s page 35
|
||||
|
||||
|
||||
1424 025d 18 .uleb128 0x18
|
||||
@ -2098,7 +2098,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1478 02de 58000000 .4byte .Ldebug_ranges0+0x58
|
||||
1479 02e2 16 .uleb128 0x16
|
||||
1480 02e3 C5010000 .4byte 0x1c5
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 36
|
||||
BFIN GAS /tmp/ccq8enAs.s page 36
|
||||
|
||||
|
||||
1481 02e7 12 .uleb128 0x12
|
||||
@ -2158,7 +2158,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1535 035c 7F .byte 0x7f
|
||||
1536 035d 11 .uleb128 0x11
|
||||
1537 035e 68020000 .4byte .LBB54
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 37
|
||||
BFIN GAS /tmp/ccq8enAs.s page 37
|
||||
|
||||
|
||||
1538 0362 84020000 .4byte .LBE54
|
||||
@ -2218,7 +2218,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1592 03e2 16030000 .4byte .LBB61
|
||||
1593 03e6 18030000 .4byte .LBE61
|
||||
1594 03ea 01 .byte 0x1
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 38
|
||||
BFIN GAS /tmp/ccq8enAs.s page 38
|
||||
|
||||
|
||||
1595 03eb A0 .byte 0xa0
|
||||
@ -2278,7 +2278,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1648 0461 01 .byte 0x1
|
||||
1649 0462 82000000 .4byte 0x82
|
||||
1650 0466 75040000 .4byte 0x475
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 39
|
||||
BFIN GAS /tmp/ccq8enAs.s page 39
|
||||
|
||||
|
||||
1651 046a 23 .uleb128 0x23
|
||||
@ -2338,7 +2338,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1702 0002 01 .byte 0x1
|
||||
1703 0003 25 .uleb128 0x25
|
||||
1704 0004 0E .uleb128 0xe
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 40
|
||||
BFIN GAS /tmp/ccq8enAs.s page 40
|
||||
|
||||
|
||||
1705 0005 13 .uleb128 0x13
|
||||
@ -2398,7 +2398,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1759 003b 00 .byte 0x0
|
||||
1760 003c 03 .uleb128 0x3
|
||||
1761 003d 0E .uleb128 0xe
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 41
|
||||
BFIN GAS /tmp/ccq8enAs.s page 41
|
||||
|
||||
|
||||
1762 003e 3A .uleb128 0x3a
|
||||
@ -2458,7 +2458,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1816 0074 2E .uleb128 0x2e
|
||||
1817 0075 01 .byte 0x1
|
||||
1818 0076 3F .uleb128 0x3f
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 42
|
||||
BFIN GAS /tmp/ccq8enAs.s page 42
|
||||
|
||||
|
||||
1819 0077 0C .uleb128 0xc
|
||||
@ -2518,7 +2518,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1873 00ad 01 .uleb128 0x1
|
||||
1874 00ae 12 .uleb128 0x12
|
||||
1875 00af 01 .uleb128 0x1
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 43
|
||||
BFIN GAS /tmp/ccq8enAs.s page 43
|
||||
|
||||
|
||||
1876 00b0 40 .uleb128 0x40
|
||||
@ -2578,7 +2578,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1930 00e6 0C .uleb128 0xc
|
||||
1931 00e7 20 .uleb128 0x20
|
||||
1932 00e8 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 44
|
||||
BFIN GAS /tmp/ccq8enAs.s page 44
|
||||
|
||||
|
||||
1933 00e9 01 .uleb128 0x1
|
||||
@ -2638,7 +2638,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
1987 011f 0B .uleb128 0xb
|
||||
1988 0120 3B .uleb128 0x3b
|
||||
1989 0121 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 45
|
||||
BFIN GAS /tmp/ccq8enAs.s page 45
|
||||
|
||||
|
||||
1990 0122 27 .uleb128 0x27
|
||||
@ -2698,7 +2698,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2044 0158 03 .uleb128 0x3
|
||||
2045 0159 08 .uleb128 0x8
|
||||
2046 015a 3A .uleb128 0x3a
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 46
|
||||
BFIN GAS /tmp/ccq8enAs.s page 46
|
||||
|
||||
|
||||
2047 015b 0B .uleb128 0xb
|
||||
@ -2758,7 +2758,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2101 0191 0B .uleb128 0xb
|
||||
2102 0192 00 .byte 0x0
|
||||
2103 0193 00 .byte 0x0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 47
|
||||
BFIN GAS /tmp/ccq8enAs.s page 47
|
||||
|
||||
|
||||
2104 0194 21 .uleb128 0x21
|
||||
@ -2818,7 +2818,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2158 000a DC040000 .4byte 0x4dc
|
||||
2159 000e 36010000 .4byte 0x136
|
||||
2160 0012 6C353032 .string "l502_otp_make_invalid"
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 48
|
||||
BFIN GAS /tmp/ccq8enAs.s page 48
|
||||
|
||||
|
||||
2160 5F6F7470
|
||||
@ -2878,7 +2878,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2199 003c 06020000 .4byte .LBE35-.Ltext0
|
||||
2200 0040 6E010000 .4byte .LBB46-.Ltext0
|
||||
2201 0044 94010000 .4byte .LBE46-.Ltext0
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 49
|
||||
BFIN GAS /tmp/ccq8enAs.s page 49
|
||||
|
||||
|
||||
2202 0048 44010000 .4byte .LBB45-.Ltext0
|
||||
@ -2938,7 +2938,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2234 70526561
|
||||
2234 6400
|
||||
2235 .LASF2:
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 50
|
||||
BFIN GAS /tmp/ccq8enAs.s page 50
|
||||
|
||||
|
||||
2236 00a5 756E7369 .string "unsigned char"
|
||||
@ -2998,7 +2998,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2258 6720756E
|
||||
2258 7369676E
|
||||
2258 65642069
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 51
|
||||
BFIN GAS /tmp/ccq8enAs.s page 51
|
||||
|
||||
|
||||
2259 .LASF26:
|
||||
@ -3058,7 +3058,7 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2284 5F6F7470
|
||||
2284 5F6D616B
|
||||
2284 655F696E
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 52
|
||||
BFIN GAS /tmp/ccq8enAs.s page 52
|
||||
|
||||
|
||||
2284 76616C69
|
||||
@ -3074,16 +3074,16 @@ BFIN GAS /tmp/cc0bhzXF.s page 1
|
||||
2290 01fe 7373796E .string "ssync"
|
||||
2290 6300
|
||||
2291 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/cc0bhzXF.s page 53
|
||||
BFIN GAS /tmp/ccq8enAs.s page 53
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_init.c
|
||||
/tmp/cc0bhzXF.s:13 .text:0000000000000000 _l502_otp_make_invalid
|
||||
/tmp/cc0bhzXF.s:72 .text:0000000000000044 _l502_setup_pll
|
||||
/tmp/cc0bhzXF.s:96 .text:000000000000006c _l502_otp_write_cfg
|
||||
/tmp/cc0bhzXF.s:234 .text:0000000000000128 _l502_otp_init
|
||||
/tmp/cc0bhzXF.s:512 .text:000000000000028c _l502_init
|
||||
/tmp/ccq8enAs.s:13 .text:0000000000000000 _l502_otp_make_invalid
|
||||
/tmp/ccq8enAs.s:72 .text:0000000000000044 _l502_setup_pll
|
||||
/tmp/ccq8enAs.s:96 .text:000000000000006c _l502_otp_write_cfg
|
||||
/tmp/ccq8enAs.s:234 .text:0000000000000128 _l502_otp_init
|
||||
/tmp/ccq8enAs.s:512 .text:000000000000028c _l502_init
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
_fpga_spi_init
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_params.c";
|
||||
@ -23,11 +23,11 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1:src/l502_params.c **** /** @addtogroup config_params
|
||||
2:src/l502_params.c **** @{
|
||||
3:src/l502_params.c **** @file l502_params.c
|
||||
4:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
6:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
7:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - g_set.
|
||||
8:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
4:src/l502_params.c **** Файл содержит функции по обработке команд от ПК на у
|
||||
5:src/l502_params.c **** конфигурации сбора данных и других параметров.
|
||||
6:src/l502_params.c **** Только в данном файле должны быть изменения полей с<EFBFBD>
|
||||
7:src/l502_params.c **** настроек - g_set.
|
||||
8:src/l502_params.c **** Так же здесь */
|
||||
9:src/l502_params.c ****
|
||||
10:src/l502_params.c ****
|
||||
11:src/l502_params.c **** #include <stdint.h>
|
||||
@ -41,7 +41,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
19:src/l502_params.c ****
|
||||
20:src/l502_params.c ****
|
||||
21:src/l502_params.c ****
|
||||
22:src/l502_params.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
22:src/l502_params.c **** /* проверка правильного режима синхронизации */
|
||||
23:src/l502_params.c **** #define CHECK_SYNC_MODE(cmd) (((cmd) != L502_SYNC_INTERNAL) \
|
||||
24:src/l502_params.c **** && ((cmd) !=L502_SYNC_EXTERNAL_MASTER) \
|
||||
25:src/l502_params.c **** && ((cmd) != L502_SYNC_DI_SYN1_RISE) \
|
||||
@ -58,7 +58,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
36:src/l502_params.c **** .ref_freq = L502_REF_FREQ_2000KHZ,
|
||||
37:src/l502_params.c **** .out_freq_div = X502_OUT_FREQ_DIV_DEFAULT,
|
||||
38:src/l502_params.c **** .sync_mode = L502_SYNC_INTERNAL,
|
||||
BFIN GAS /tmp/ccAbtljy.s page 2
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 2
|
||||
|
||||
|
||||
39:src/l502_params.c **** .sync_start_mode = L502_SYNC_INTERNAL
|
||||
@ -69,13 +69,13 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
44:src/l502_params.c ****
|
||||
45:src/l502_params.c ****
|
||||
46:src/l502_params.c ****
|
||||
47:src/l502_params.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
47:src/l502_params.c **** /** @brief Установка количества логических каналов
|
||||
48:src/l502_params.c ****
|
||||
49:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> g_set.lch_cnt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
50:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
|
||||
49:src/l502_params.c **** Проверка и запись в поле g_set.lch_cnt значение кол-ва кан<EFBFBD>
|
||||
50:src/l502_params.c **** таблице АЦП.
|
||||
51:src/l502_params.c ****
|
||||
52:src/l502_params.c **** @param[in] lch_cnt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 1 <EFBFBD><EFBFBD> #L502_LTABLE_MAX_CH_CNT)
|
||||
53:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
52:src/l502_params.c **** @param[in] lch_cnt Количество логических каналов (от 1 до #L50
|
||||
53:src/l502_params.c **** @return Код ошибки */
|
||||
54:src/l502_params.c **** int32_t params_set_lch_cnt(uint32_t lch_cnt) {
|
||||
16 .loc 1 54 0
|
||||
17 .LVL0:
|
||||
@ -118,22 +118,22 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
47 .type _params_set_lch, STT_FUNC;
|
||||
48 _params_set_lch:
|
||||
49 .LFB3:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 3
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 3
|
||||
|
||||
|
||||
60:src/l502_params.c ****
|
||||
61:src/l502_params.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
61:src/l502_params.c **** /** @brief Установить параметры логического канала
|
||||
62:src/l502_params.c ****
|
||||
63:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
64:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g_set.lch[]
|
||||
63:src/l502_params.c **** Функция проверяет входные параметры и записывает и<EFBFBD>
|
||||
64:src/l502_params.c **** таблицы g_set.lch[]
|
||||
65:src/l502_params.c ****
|
||||
66:src/l502_params.c **** @param[in] index <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [0, L502_LTABLE_MAX_CH_CNT-1]
|
||||
67:src/l502_params.c **** @param[in] ch <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> 15 <EFBFBD><EFBFBD><EFBFBD> 31)
|
||||
68:src/l502_params.c **** @param[in] mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
69:src/l502_params.c **** @param[in] range <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
70:src/l502_params.c **** @param[in] avg <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
71:src/l502_params.c **** @param[in] flags <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
72:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
66:src/l502_params.c **** @param[in] index Номер логического канала [0, L502_LTABLE_MAX_CH_CNT-1]
|
||||
67:src/l502_params.c **** @param[in] ch Номер физического канала (от 0 до 15 или 31)
|
||||
68:src/l502_params.c **** @param[in] mode Режим измерения для данного лог. канала
|
||||
69:src/l502_params.c **** @param[in] range Диапазон измерения для данного лог. канал
|
||||
70:src/l502_params.c **** @param[in] avg Коэф. усреднения по данному лог. каналу
|
||||
71:src/l502_params.c **** @param[in] flags Дополнительные флаги
|
||||
72:src/l502_params.c **** @return Код ошибки */
|
||||
73:src/l502_params.c **** int32_t params_set_lch(uint32_t index, uint32_t ch, t_l502_lch_mode mode,
|
||||
74:src/l502_params.c **** t_l502_adc_range range, uint32_t avg, uint32_t flags) {
|
||||
50 .loc 1 74 0
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
77:src/l502_params.c **** if ((mode!=L502_LCH_MODE_COMM) && (mode != L502_LCH_MODE_DIFF) &&
|
||||
72 .loc 1 77 0
|
||||
73 0044 120E cc =R2<=2 (iu);
|
||||
BFIN GAS /tmp/ccAbtljy.s page 4
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 4
|
||||
|
||||
|
||||
74 0046 FA17 if !cc jump .L8 (bp);
|
||||
@ -232,13 +232,13 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
115 _params_set_adc_freq_div:
|
||||
116 .LFB4:
|
||||
91:src/l502_params.c ****
|
||||
92:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
93:src/l502_params.c **** @param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
94:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
92:src/l502_params.c **** /** Установка делителя частоты АЦП
|
||||
93:src/l502_params.c **** @param[in] div Значение делителя
|
||||
94:src/l502_params.c **** @return Код ошибки */
|
||||
95:src/l502_params.c **** int32_t params_set_adc_freq_div(uint32_t div) {
|
||||
117 .loc 1 95 0
|
||||
118 .LVL9:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 5
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 5
|
||||
|
||||
|
||||
119 008c 0830 R1 = R0;
|
||||
@ -282,10 +282,10 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
150 _params_set_ref_freq:
|
||||
151 .LFB5:
|
||||
101:src/l502_params.c ****
|
||||
102:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
103:src/l502_params.c **** @param[in] freq_code <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
104:src/l502_params.c **** #L502_REF_FREQ_2000KHZ <EFBFBD><EFBFBD><EFBFBD> #L502_REF_FREQ_1500KHZ
|
||||
105:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
102:src/l502_params.c **** /** Установка значения опорной частоты
|
||||
103:src/l502_params.c **** @param[in] freq_code Значение частоты. Для внутренней может
|
||||
104:src/l502_params.c **** #L502_REF_FREQ_2000KHZ или #L502_REF_FREQ_1500KHZ
|
||||
105:src/l502_params.c **** @return Код ошибки */
|
||||
106:src/l502_params.c **** int32_t params_set_ref_freq(uint32_t freq_code) {
|
||||
152 .loc 1 106 0
|
||||
153 .LVL11:
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
158 00c4 00E80000 LINK 0;
|
||||
159 .LCFI3:
|
||||
160 .loc 1 107 0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 6
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 6
|
||||
|
||||
|
||||
161 00c8 10E60402 [P2+2064] = R0;
|
||||
@ -316,9 +316,9 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
171 .type _params_set_adc_interframe_delay, STT_FUNC;
|
||||
172 _params_set_adc_interframe_delay:
|
||||
173 .LFB6:
|
||||
110:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
111:src/l502_params.c **** @param[in] delay <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> L502_ADC_INTERFRAME_DELAY_MAX)
|
||||
112:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
110:src/l502_params.c **** /** Установка значения межкадровой задержки
|
||||
111:src/l502_params.c **** @param[in] delay Значение межкадровой задержки (от 0 до L502_
|
||||
112:src/l502_params.c **** @return Код ошибки */
|
||||
113:src/l502_params.c **** int32_t params_set_adc_interframe_delay(uint32_t delay) {
|
||||
174 .loc 1 113 0
|
||||
175 .LVL13:
|
||||
@ -358,7 +358,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
202 .LFE6:
|
||||
203 .size _params_set_adc_interframe_delay, .-_params_set_adc_interframe_delay
|
||||
204 .align 4
|
||||
BFIN GAS /tmp/ccAbtljy.s page 7
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 7
|
||||
|
||||
|
||||
205 .global _params_set_sync_mode;
|
||||
@ -366,9 +366,9 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
207 _params_set_sync_mode:
|
||||
208 .LFB7:
|
||||
119:src/l502_params.c ****
|
||||
120:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
121:src/l502_params.c **** @param[in] sync_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_sync_mode
|
||||
122:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
120:src/l502_params.c **** /** Установка источника опроной частоты синхронизации
|
||||
121:src/l502_params.c **** @param[in] sync_mode Значение из #t_l502_sync_mode
|
||||
122:src/l502_params.c **** @return Код ошибки */
|
||||
123:src/l502_params.c **** int32_t params_set_sync_mode(t_l502_sync_mode sync_mode) {
|
||||
209 .loc 1 123 0
|
||||
210 .LVL17:
|
||||
@ -415,10 +415,10 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
245 _params_set_sync_start_mode:
|
||||
246 .LFB8:
|
||||
129:src/l502_params.c ****
|
||||
130:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
131:src/l502_params.c **** @param[in] sync_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_sync_mode
|
||||
132:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
BFIN GAS /tmp/ccAbtljy.s page 8
|
||||
130:src/l502_params.c **** /** Установка источника синхронизации старта сбора дан
|
||||
131:src/l502_params.c **** @param[in] sync_mode Значение из #t_l502_sync_mode
|
||||
132:src/l502_params.c **** @return Код ошибки */
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 8
|
||||
|
||||
|
||||
133:src/l502_params.c **** int32_t params_set_sync_start_mode(t_l502_sync_mode sync_mode) {
|
||||
@ -468,9 +468,9 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
284 .LFB9:
|
||||
139:src/l502_params.c ****
|
||||
140:src/l502_params.c ****
|
||||
141:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
142:src/l502_params.c **** @param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
143:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
141:src/l502_params.c **** /** Установка делителя частоты синхронного ввода цифро
|
||||
142:src/l502_params.c **** @param[in] div Значение делителя
|
||||
143:src/l502_params.c **** @return Код ошибки */
|
||||
144:src/l502_params.c **** int32_t params_set_din_freq_div(uint32_t div) {
|
||||
285 .loc 1 144 0
|
||||
286 .LVL27:
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
145:src/l502_params.c **** if ((div==0) || (div > L502_DIN_FREQ_DIV_MAX))
|
||||
288 .loc 1 145 0
|
||||
289 0162 FA63 R2 = -1 (X);
|
||||
BFIN GAS /tmp/ccAbtljy.s page 9
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 9
|
||||
|
||||
|
||||
290 0164 F867 R0 += -1;
|
||||
@ -518,9 +518,9 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
318 _params_set_dac_freq_div:
|
||||
319 .LFB10:
|
||||
150:src/l502_params.c ****
|
||||
151:src/l502_params.c **** /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||||
152:src/l502_params.c **** @param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1 <EFBFBD><EFBFBD><EFBFBD> 2)
|
||||
153:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
151:src/l502_params.c **** /** Установка делителя частоты вывода на ЦАП
|
||||
152:src/l502_params.c **** @param[in] div Значение делителя (1 или 2)
|
||||
153:src/l502_params.c **** @return Код ошибки */
|
||||
154:src/l502_params.c **** int32_t params_set_dac_freq_div(uint32_t div) {
|
||||
320 .loc 1 154 0
|
||||
321 .LVL29:
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
331 019c 100A cc =R0<=R2 (iu);
|
||||
332 019e 0B10 if !cc jump .L45;
|
||||
156:src/l502_params.c **** return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
BFIN GAS /tmp/ccAbtljy.s page 10
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 10
|
||||
|
||||
|
||||
157:src/l502_params.c **** g_set.out_freq_div = div;
|
||||
@ -570,12 +570,12 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
161:src/l502_params.c ****
|
||||
162:src/l502_params.c ****
|
||||
163:src/l502_params.c ****
|
||||
164:src/l502_params.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
164:src/l502_params.c **** /** @brief Запись параметров сбора в регистры ПЛИС
|
||||
165:src/l502_params.c ****
|
||||
166:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #g_set <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
167:src/l502_params.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
166:src/l502_params.c **** Функция выполняет запись всех параметров из структ<EFBFBD>
|
||||
167:src/l502_params.c **** ПЛИС. Функция может вызываться только когда сбор да<D0B4>
|
||||
168:src/l502_params.c ****
|
||||
169:src/l502_params.c **** @return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
169:src/l502_params.c **** @return Код ошибки */
|
||||
170:src/l502_params.c **** int32_t configure(void) {
|
||||
354 .loc 1 170 0
|
||||
355 01c0 E305 [--sp] = ( r7:4, p5:3 );
|
||||
@ -596,9 +596,9 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
366 01d0 000C cc =R0==0;
|
||||
367 01d2 071C if cc jump .L47 (bp);
|
||||
174:src/l502_params.c **** if (!err) {
|
||||
175:src/l502_params.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
175:src/l502_params.c **** /* записываем логическую таблицу */
|
||||
176:src/l502_params.c **** for (ch = 0; ch < g_set.lch_cnt; ch++) {
|
||||
BFIN GAS /tmp/ccAbtljy.s page 11
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 11
|
||||
|
||||
|
||||
177:src/l502_params.c **** uint32_t wrd = ((g_set.lch[ch].phy_ch & 0xF) << 3) | (g_set.lch[ch].range & 0x7);
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
390 .LBB2:
|
||||
177:src/l502_params.c **** uint32_t wrd = ((g_set.lch[ch].phy_ch & 0xF) << 3) | (g_set.lch[ch].range & 0x7);
|
||||
391 .loc 1 177 0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 12
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 12
|
||||
|
||||
|
||||
392 01f6 7C60 R4 = 15 (X);
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
177:src/l502_params.c **** uint32_t wrd = ((g_set.lch[ch].phy_ch & 0xF) << 3) | (g_set.lch[ch].range & 0x7);
|
||||
438 .loc 1 177 0
|
||||
439 023e 184F R0 <<= 3;
|
||||
BFIN GAS /tmp/ccAbtljy.s page 13
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 13
|
||||
|
||||
|
||||
440 0240 0832 P1 = R0;
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
487 02ac 3A60 R2 = 7 (X);
|
||||
488 02ae A8E41608 R0 = B [P5+2070] (Z);
|
||||
489 02b2 5154 R1 = R1 & R2;
|
||||
BFIN GAS /tmp/ccAbtljy.s page 14
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 14
|
||||
|
||||
|
||||
490 02b4 1054 R0 = R0 & R2;
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
538 .section .debug_frame,"",@progbits
|
||||
539 .Lframe0:
|
||||
540 0000 0C000000 .4byte .LECIE0-.LSCIE0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 15
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 15
|
||||
|
||||
|
||||
541 .LSCIE0:
|
||||
@ -898,7 +898,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
595 0051 0C .byte 0xc
|
||||
596 0052 0F .uleb128 0xf
|
||||
597 0053 08 .uleb128 0x8
|
||||
BFIN GAS /tmp/ccAbtljy.s page 16
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 16
|
||||
|
||||
|
||||
598 0054 8F .byte 0x8f
|
||||
@ -958,7 +958,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
652 009f 01 .uleb128 0x1
|
||||
653 .align 4
|
||||
654 .LEFDE10:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 17
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 17
|
||||
|
||||
|
||||
655 .LSFDE12:
|
||||
@ -1018,7 +1018,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
709 00ec 00000000 .4byte .Lframe0
|
||||
710 00f0 C0010000 .4byte .LFB11
|
||||
711 00f4 2C010000 .4byte .LFE11-.LFB11
|
||||
BFIN GAS /tmp/ccAbtljy.s page 18
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 18
|
||||
|
||||
|
||||
712 00f8 42 .byte 0x4
|
||||
@ -1078,7 +1078,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
766 0035 00000000 .4byte 0x0
|
||||
767 0039 00000000 .4byte 0x0
|
||||
768 .LLST2:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 19
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 19
|
||||
|
||||
|
||||
769 003d 2C000000 .4byte .LFB3-.Ltext0
|
||||
@ -1138,7 +1138,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
823 00cd 08 .sleb128 8
|
||||
824 00ce 00000000 .4byte 0x0
|
||||
825 00d2 00000000 .4byte 0x0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 20
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 20
|
||||
|
||||
|
||||
826 .LLST7:
|
||||
@ -1198,7 +1198,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
880 0163 1C010000 .4byte .LVL18-.Ltext0
|
||||
881 0167 1C010000 .4byte .LVL19-.Ltext0
|
||||
882 016b 0100 .2byte 0x1
|
||||
BFIN GAS /tmp/ccAbtljy.s page 21
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 21
|
||||
|
||||
|
||||
883 016d 50 .byte 0x50
|
||||
@ -1258,7 +1258,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
937 01fb 60010000 .4byte .LVL27-.Ltext0
|
||||
938 01ff 66010000 .4byte .LVL28-.Ltext0
|
||||
939 0203 0100 .2byte 0x1
|
||||
BFIN GAS /tmp/ccAbtljy.s page 22
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 22
|
||||
|
||||
|
||||
940 0205 50 .byte 0x50
|
||||
@ -1318,7 +1318,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
994 .LLST22:
|
||||
995 0294 DC010000 .4byte .LVL31-.Ltext0
|
||||
996 0298 DE010000 .4byte .LVL32-.Ltext0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 23
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 23
|
||||
|
||||
|
||||
997 029c 0100 .2byte 0x1
|
||||
@ -1378,7 +1378,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1051 0045 03 .uleb128 0x3
|
||||
1052 0046 39030000 .4byte .LASF4
|
||||
1053 004a 02 .byte 0x2
|
||||
BFIN GAS /tmp/ccAbtljy.s page 24
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 24
|
||||
|
||||
|
||||
1054 004b 36 .byte 0x36
|
||||
@ -1431,14 +1431,14 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1101 00a1 06 .uleb128 0x6
|
||||
1102 00a2 04 .byte 0x4
|
||||
1103 00a3 03 .byte 0x3
|
||||
1104 00a4 68 .byte 0x68
|
||||
1104 00a4 69 .byte 0x69
|
||||
1105 00a5 EF000000 .4byte 0xef
|
||||
1106 00a9 07 .uleb128 0x7
|
||||
1107 00aa 43050000 .4byte .LASF14
|
||||
1108 00ae 00 .sleb128 0
|
||||
1109 00af 07 .uleb128 0x7
|
||||
1110 00b0 10050000 .4byte .LASF15
|
||||
BFIN GAS /tmp/ccAbtljy.s page 25
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 25
|
||||
|
||||
|
||||
1111 00b4 807C .sleb128 -512
|
||||
@ -1470,7 +1470,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1137 00ef 06 .uleb128 0x6
|
||||
1138 00f0 04 .byte 0x4
|
||||
1139 00f1 03 .byte 0x3
|
||||
1140 00f2 79 .byte 0x79
|
||||
1140 00f2 7A .byte 0x7a
|
||||
1141 00f3 0A010000 .4byte 0x10a
|
||||
1142 00f7 07 .uleb128 0x7
|
||||
1143 00f8 85050000 .4byte .LASF24
|
||||
@ -1498,7 +1498,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1165 0126 04 .byte 0x4
|
||||
1166 0127 04 .byte 0x4
|
||||
1167 0128 55 .byte 0x55
|
||||
BFIN GAS /tmp/ccAbtljy.s page 26
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 26
|
||||
|
||||
|
||||
1168 0129 52010000 .4byte 0x152
|
||||
@ -1558,7 +1558,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1222 0192 A7010000 .4byte .LASF41
|
||||
1223 0196 01 .sleb128 1
|
||||
1224 0197 07 .uleb128 0x7
|
||||
BFIN GAS /tmp/ccAbtljy.s page 27
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 27
|
||||
|
||||
|
||||
1225 0198 C9000000 .4byte .LASF42
|
||||
@ -1618,7 +1618,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1279 01f9 E0000000 .4byte .LASF50
|
||||
1280 01fd 05 .byte 0x5
|
||||
1281 01fe 1A .byte 0x1a
|
||||
BFIN GAS /tmp/ccAbtljy.s page 28
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 28
|
||||
|
||||
|
||||
1282 01ff 69000000 .4byte 0x69
|
||||
@ -1678,7 +1678,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1336 0262 09 .uleb128 0x9
|
||||
1337 0263 18010000 .4byte .LASF56
|
||||
1338 0267 05 .byte 0x5
|
||||
BFIN GAS /tmp/ccAbtljy.s page 29
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 29
|
||||
|
||||
|
||||
1339 0268 24 .byte 0x24
|
||||
@ -1738,7 +1738,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1393 02c9 23 .byte 0x23
|
||||
1394 02ca 8010 .uleb128 0x800
|
||||
1395 02cc 09 .uleb128 0x9
|
||||
BFIN GAS /tmp/ccAbtljy.s page 30
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 30
|
||||
|
||||
|
||||
1396 02cd D9020000 .4byte .LASF61
|
||||
@ -1798,7 +1798,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1450 0333 9710 .uleb128 0x817
|
||||
1451 0335 00 .byte 0x0
|
||||
1452 0336 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/ccAbtljy.s page 31
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 31
|
||||
|
||||
|
||||
1453 0337 9B020000 .4byte 0x29b
|
||||
@ -1858,7 +1858,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1507 03b7 18010000 .4byte .LASF56
|
||||
1508 03bb 01 .byte 0x1
|
||||
1509 03bc 49 .byte 0x49
|
||||
BFIN GAS /tmp/ccAbtljy.s page 32
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 32
|
||||
|
||||
|
||||
1510 03bd 78010000 .4byte 0x178
|
||||
@ -1918,7 +1918,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1564 042c D4000000 .4byte .LFE5
|
||||
1565 0430 B7000000 .4byte .LLST6
|
||||
1566 0434 48040000 .4byte 0x448
|
||||
BFIN GAS /tmp/ccAbtljy.s page 33
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 33
|
||||
|
||||
|
||||
1567 0438 0F .uleb128 0xf
|
||||
@ -1978,7 +1978,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1621 04b9 01 .byte 0x1
|
||||
1622 04ba 57000000 .4byte 0x57
|
||||
1623 04be 30010000 .4byte .LFB8
|
||||
BFIN GAS /tmp/ccAbtljy.s page 34
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 34
|
||||
|
||||
|
||||
1624 04c2 5E010000 .4byte .LFE8
|
||||
@ -2038,7 +2038,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1678 0549 BF000000 .4byte .LASF81
|
||||
1679 054d 01 .byte 0x1
|
||||
1680 054e AA .byte 0xaa
|
||||
BFIN GAS /tmp/ccAbtljy.s page 35
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 35
|
||||
|
||||
|
||||
1681 054f 01 .byte 0x1
|
||||
@ -2098,7 +2098,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1735 05c9 89000000 .4byte 0x89
|
||||
1736 05cd 00 .byte 0x0
|
||||
1737 .section .debug_abbrev
|
||||
BFIN GAS /tmp/ccAbtljy.s page 36
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 36
|
||||
|
||||
|
||||
1738 0000 01 .uleb128 0x1
|
||||
@ -2158,7 +2158,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1792 0036 05 .uleb128 0x5
|
||||
1793 0037 24 .uleb128 0x24
|
||||
1794 0038 00 .byte 0x0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 37
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 37
|
||||
|
||||
|
||||
1795 0039 0B .uleb128 0xb
|
||||
@ -2218,7 +2218,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1849 006f 00 .byte 0x0
|
||||
1850 0070 00 .byte 0x0
|
||||
1851 0071 0A .uleb128 0xa
|
||||
BFIN GAS /tmp/ccAbtljy.s page 38
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 38
|
||||
|
||||
|
||||
1852 0072 0D .uleb128 0xd
|
||||
@ -2278,7 +2278,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1906 00a8 3B .uleb128 0x3b
|
||||
1907 00a9 0B .uleb128 0xb
|
||||
1908 00aa 27 .uleb128 0x27
|
||||
BFIN GAS /tmp/ccAbtljy.s page 39
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 39
|
||||
|
||||
|
||||
1909 00ab 0C .uleb128 0xc
|
||||
@ -2338,7 +2338,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
1963 00e1 02 .uleb128 0x2
|
||||
1964 00e2 0A .uleb128 0xa
|
||||
1965 00e3 00 .byte 0x0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 40
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 40
|
||||
|
||||
|
||||
1966 00e4 00 .byte 0x0
|
||||
@ -2398,7 +2398,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2020 011a 00 .byte 0x0
|
||||
2021 011b 16 .uleb128 0x16
|
||||
2022 011c 34 .uleb128 0x34
|
||||
BFIN GAS /tmp/ccAbtljy.s page 41
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 41
|
||||
|
||||
|
||||
2023 011d 00 .byte 0x0
|
||||
@ -2458,7 +2458,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2060 65745F61
|
||||
2060 64635F69
|
||||
2060 6E746572
|
||||
BFIN GAS /tmp/ccAbtljy.s page 42
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 42
|
||||
|
||||
|
||||
2061 0090 75040000 .4byte 0x475
|
||||
@ -2518,7 +2518,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2093 000c 62020000 .4byte .LBE3-.Ltext0
|
||||
2094 0010 00000000 .4byte 0x0
|
||||
2095 0014 00000000 .4byte 0x0
|
||||
BFIN GAS /tmp/ccAbtljy.s page 43
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 43
|
||||
|
||||
|
||||
2096 .section .debug_str,"MS",@progbits,1
|
||||
@ -2578,7 +2578,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2117 .LASF2:
|
||||
2118 00a7 73686F72 .string "short int"
|
||||
2118 7420696E
|
||||
BFIN GAS /tmp/ccAbtljy.s page 44
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 44
|
||||
|
||||
|
||||
2118 7400
|
||||
@ -2638,7 +2638,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2142 5F42465F
|
||||
2142 4552525F
|
||||
2142 53545245
|
||||
BFIN GAS /tmp/ccAbtljy.s page 45
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 45
|
||||
|
||||
|
||||
2142 414D5F53
|
||||
@ -2698,7 +2698,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2166 54455354
|
||||
2166 5F56414C
|
||||
2167 .LASF7:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 46
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 46
|
||||
|
||||
|
||||
2168 0209 6C6F6E67 .string "long int"
|
||||
@ -2758,7 +2758,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2188 02c7 4C353032 .string "L502_ADC_RANGE_02"
|
||||
2188 5F414443
|
||||
2188 5F52414E
|
||||
BFIN GAS /tmp/ccAbtljy.s page 47
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 47
|
||||
|
||||
|
||||
2188 47455F30
|
||||
@ -2818,7 +2818,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2210 65745F6C
|
||||
2210 636800
|
||||
2211 .LASF67:
|
||||
BFIN GAS /tmp/ccAbtljy.s page 48
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 48
|
||||
|
||||
|
||||
2212 0374 73796E63 .string "sync_start_mode"
|
||||
@ -2878,7 +2878,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2233 .LASF74:
|
||||
2234 0433 66726571 .string "freq_code"
|
||||
2234 5F636F64
|
||||
BFIN GAS /tmp/ccAbtljy.s page 49
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 49
|
||||
|
||||
|
||||
2234 6500
|
||||
@ -2938,7 +2938,7 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2254 545F434F
|
||||
2255 .LASF68:
|
||||
2256 0527 745F7365 .string "t_settings"
|
||||
BFIN GAS /tmp/ccAbtljy.s page 50
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 50
|
||||
|
||||
|
||||
2256 7474696E
|
||||
@ -2983,22 +2983,22 @@ BFIN GAS /tmp/ccAbtljy.s page 1
|
||||
2272 5F766572
|
||||
2272 00
|
||||
2273 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/ccAbtljy.s page 51
|
||||
BFIN GAS /tmp/ccUgH5eo.s page 51
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_params.c
|
||||
/tmp/ccAbtljy.s:13 .text:0000000000000000 _params_set_lch_cnt
|
||||
/tmp/ccAbtljy.s:526 .data:0000000000000000 _g_set
|
||||
/tmp/ccAbtljy.s:48 .text:000000000000002c _params_set_lch
|
||||
/tmp/ccAbtljy.s:115 .text:000000000000008c _params_set_adc_freq_div
|
||||
/tmp/ccAbtljy.s:150 .text:00000000000000bc _params_set_ref_freq
|
||||
/tmp/ccAbtljy.s:172 .text:00000000000000d4 _params_set_adc_interframe_delay
|
||||
/tmp/ccAbtljy.s:207 .text:0000000000000100 _params_set_sync_mode
|
||||
/tmp/ccAbtljy.s:245 .text:0000000000000130 _params_set_sync_start_mode
|
||||
/tmp/ccAbtljy.s:283 .text:0000000000000160 _params_set_din_freq_div
|
||||
/tmp/ccAbtljy.s:318 .text:0000000000000190 _params_set_dac_freq_div
|
||||
/tmp/ccAbtljy.s:352 .text:00000000000001c0 _configure
|
||||
/tmp/ccUgH5eo.s:13 .text:0000000000000000 _params_set_lch_cnt
|
||||
/tmp/ccUgH5eo.s:526 .data:0000000000000000 _g_set
|
||||
/tmp/ccUgH5eo.s:48 .text:000000000000002c _params_set_lch
|
||||
/tmp/ccUgH5eo.s:115 .text:000000000000008c _params_set_adc_freq_div
|
||||
/tmp/ccUgH5eo.s:150 .text:00000000000000bc _params_set_ref_freq
|
||||
/tmp/ccUgH5eo.s:172 .text:00000000000000d4 _params_set_adc_interframe_delay
|
||||
/tmp/ccUgH5eo.s:207 .text:0000000000000100 _params_set_sync_mode
|
||||
/tmp/ccUgH5eo.s:245 .text:0000000000000130 _params_set_sync_start_mode
|
||||
/tmp/ccUgH5eo.s:283 .text:0000000000000160 _params_set_din_freq_div
|
||||
/tmp/ccUgH5eo.s:318 .text:0000000000000190 _params_set_dac_freq_div
|
||||
/tmp/ccUgH5eo.s:352 .text:00000000000001c0 _configure
|
||||
*COM*:0000000000000018 _g_module_info
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_sport_tx.c";
|
||||
@ -23,11 +23,11 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1:src/l502_sport_tx.c **** /** @addtogroup sport_tx
|
||||
2:src/l502_sport_tx.c **** @{
|
||||
3:src/l502_sport_tx.c **** @file l502_sport_tx.c
|
||||
4:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
5:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_init(),
|
||||
6:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req(). <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 16
|
||||
7:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
8:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_stop().
|
||||
4:src/l502_sport_tx.c **** Файл содержит логику для управления передачей по SPOR
|
||||
5:src/l502_sport_tx.c **** Изначально DMA должен быть проинициализирован с помо
|
||||
6:src/l502_sport_tx.c **** Передача начинается с помщью sport_tx_start_req(). Можно пост
|
||||
7:src/l502_sport_tx.c **** запросов одновременно.
|
||||
8:src/l502_sport_tx.c **** Останвить все текущие передачи можно с помощью sport_tx
|
||||
9:src/l502_sport_tx.c **** ***********************************************************************/
|
||||
10:src/l502_sport_tx.c ****
|
||||
11:src/l502_sport_tx.c ****
|
||||
@ -54,11 +54,11 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
32:src/l502_sport_tx.c ****
|
||||
33:src/l502_sport_tx.c ****
|
||||
34:src/l502_sport_tx.c ****
|
||||
35:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
35:src/l502_sport_tx.c **** /* дескриптор DMA размера 5 16-битных слов */
|
||||
36:src/l502_sport_tx.c **** typedef struct {
|
||||
37:src/l502_sport_tx.c **** uint16_t ndpl;
|
||||
38:src/l502_sport_tx.c **** uint16_t sal;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 2
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 2
|
||||
|
||||
|
||||
39:src/l502_sport_tx.c **** uint16_t sah;
|
||||
@ -77,9 +77,9 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
52:src/l502_sport_tx.c **** void sport_tx_done(uint32_t* addr, uint32_t size);
|
||||
53:src/l502_sport_tx.c ****
|
||||
54:src/l502_sport_tx.c **** /***************************************************************************//**
|
||||
55:src/l502_sport_tx.c **** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
56:src/l502_sport_tx.c **** @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> #t_x502_out_status_flags,
|
||||
57:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ȕ.
|
||||
55:src/l502_sport_tx.c **** @brief Чтение флагов статуса вывода
|
||||
56:src/l502_sport_tx.c **** @return Флаги статуса --- набор битов из #t_x502_out_statu
|
||||
57:src/l502_sport_tx.c **** объединенных через логическое “ИЛИ”.
|
||||
58:src/l502_sport_tx.c **** ******************************************************************************/
|
||||
59:src/l502_sport_tx.c **** uint32_t sport_tx_out_status(void) {
|
||||
16 .loc 1 59 0
|
||||
@ -118,7 +118,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
65:src/l502_sport_tx.c **** f_tx_was_empty = 0;
|
||||
41 .loc 1 65 0
|
||||
42 002a 0060 R0 = 0 (X);
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 3
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 3
|
||||
|
||||
|
||||
64:src/l502_sport_tx.c **** ret |= X502_OUT_STATUS_FLAG_BUF_WAS_EMPTY;
|
||||
@ -144,10 +144,10 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
69:src/l502_sport_tx.c ****
|
||||
70:src/l502_sport_tx.c ****
|
||||
71:src/l502_sport_tx.c ****
|
||||
72:src/l502_sport_tx.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT.
|
||||
72:src/l502_sport_tx.c **** /** @brief Начальная инициализация канала DMA на передачу п<>
|
||||
73:src/l502_sport_tx.c ****
|
||||
74:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
75:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
74:src/l502_sport_tx.c **** Функция устанавливает параметры DMA которые не меняю
|
||||
75:src/l502_sport_tx.c **** прошивки */
|
||||
76:src/l502_sport_tx.c **** void sport_tx_init(void) {
|
||||
59 .loc 1 76 0
|
||||
77:src/l502_sport_tx.c **** int i;
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
80 005e 50E61900 W [P2+50] = R0;
|
||||
81 0062 40E10000 R0.H = _f_descrs+70;
|
||||
82 0066 00E14A00 R0.L = _f_descrs+70;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 4
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 4
|
||||
|
||||
|
||||
83 006a 50E61E00 W [P2+60] = R0;
|
||||
@ -238,7 +238,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
80:src/l502_sport_tx.c **** f_descrs[i].ndpl = i==(SPORT_TX_DESCR_CNT-1) ? (uint32_t)&f_descrs[0]&0xFFFF :
|
||||
131 .loc 1 80 0
|
||||
132 0112 50E64B00 W [P2+150] = R0;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 5
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 5
|
||||
|
||||
|
||||
133 .loc 1 84 0
|
||||
@ -288,45 +288,45 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
172 .LFB20:
|
||||
90:src/l502_sport_tx.c ****
|
||||
91:src/l502_sport_tx.c ****
|
||||
92:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SPORT0 <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
93:src/l502_sport_tx.c **** * <EFBFBD><EFBFBD><EFBFBD> SPORT 0 */
|
||||
92:src/l502_sport_tx.c **** /* Функция разрешает канал DMA для передачи данных в SPORT0
|
||||
93:src/l502_sport_tx.c **** * для SPORT 0 */
|
||||
94:src/l502_sport_tx.c **** static void f_sport_tx_start(void) {
|
||||
95:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
95:src/l502_sport_tx.c **** /* разрешаем передачу по SPORT'у */
|
||||
96:src/l502_sport_tx.c **** *pSPORT0_TCR1 |= TSPEN;
|
||||
97:src/l502_sport_tx.c **** f_first = 0;
|
||||
98:src/l502_sport_tx.c **** f_tx_was_empty = 0;
|
||||
99:src/l502_sport_tx.c **** }
|
||||
100:src/l502_sport_tx.c ****
|
||||
101:src/l502_sport_tx.c ****
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 6
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 6
|
||||
|
||||
|
||||
102:src/l502_sport_tx.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
102:src/l502_sport_tx.c **** /** @brief Останов сбора по SPORT0.
|
||||
103:src/l502_sport_tx.c **** *
|
||||
104:src/l502_sport_tx.c **** * <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><> <20><><EFBFBD><EFBFBD> */
|
||||
104:src/l502_sport_tx.c **** * Функция запрещает прием по SPORT0 и соответствующий ка
|
||||
105:src/l502_sport_tx.c **** void sport_tx_stop(void) {
|
||||
106:src/l502_sport_tx.c **** *pSIC_IMASK0 &= ~IRQ_DMA4;
|
||||
107:src/l502_sport_tx.c ****
|
||||
108:src/l502_sport_tx.c **** *pDMA4_CONFIG = 0;
|
||||
109:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 3-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
109:src/l502_sport_tx.c **** /* нужно подождать до 3-х циклов, чтобы DMA действитель<D0BB>
|
||||
110:src/l502_sport_tx.c **** ssync();
|
||||
111:src/l502_sport_tx.c **** ssync();
|
||||
112:src/l502_sport_tx.c **** ssync();
|
||||
113:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT */
|
||||
113:src/l502_sport_tx.c **** /* запрет передачи по SPORT */
|
||||
114:src/l502_sport_tx.c **** *pSPORT0_TCR1 &= ~TSPEN;
|
||||
115:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> DMA */
|
||||
115:src/l502_sport_tx.c **** /* сбрасываем признаки прерываний от DMA */
|
||||
116:src/l502_sport_tx.c **** *pDMA4_IRQ_STATUS = DMA_DONE | DMA_ERR;
|
||||
117:src/l502_sport_tx.c ****
|
||||
118:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
118:src/l502_sport_tx.c **** /* заново инициализируем все дескрипторы */
|
||||
119:src/l502_sport_tx.c **** sport_tx_init();
|
||||
120:src/l502_sport_tx.c **** }
|
||||
121:src/l502_sport_tx.c ****
|
||||
122:src/l502_sport_tx.c **** /**************************************************************************//**
|
||||
123:src/l502_sport_tx.c **** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
123:src/l502_sport_tx.c **** @brief Получить количество свободных дескрипторов на <EFBFBD>
|
||||
124:src/l502_sport_tx.c ****
|
||||
125:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
126:src/l502_sport_tx.c **** <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req().
|
||||
127:src/l502_sport_tx.c **** @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
125:src/l502_sport_tx.c **** Функция возвращает количество запросов, которое мо<EFBFBD>
|
||||
126:src/l502_sport_tx.c **** на передачу с помощью sport_tx_start_req().
|
||||
127:src/l502_sport_tx.c **** @return Количество запросов на передачу, которое можно
|
||||
128:src/l502_sport_tx.c **** ******************************************************************************/
|
||||
129:src/l502_sport_tx.c **** int sport_tx_req_rdy(void) {
|
||||
173 .loc 1 129 0
|
||||
@ -358,38 +358,38 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
196 _isr_sport_dma_tx:
|
||||
197 .LFB22:
|
||||
132:src/l502_sport_tx.c ****
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 7
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 7
|
||||
|
||||
|
||||
133:src/l502_sport_tx.c ****
|
||||
134:src/l502_sport_tx.c **** /**************************************************************************//**
|
||||
135:src/l502_sport_tx.c **** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
135:src/l502_sport_tx.c **** @brief Поставить запрос на передачу по SPORT0
|
||||
136:src/l502_sport_tx.c ****
|
||||
137:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
138:src/l502_sport_tx.c **** <EFBFBD>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
139:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>
|
||||
140:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> sport_tx_req_rdy()).
|
||||
137:src/l502_sport_tx.c **** Функция ставит запрос на передачу указанных данных.
|
||||
138:src/l502_sport_tx.c **** т.е. буфер нельзя будет использовать до того, как дан
|
||||
139:src/l502_sport_tx.c **** Для постановки запроса необходимо, чтобы был свобод
|
||||
140:src/l502_sport_tx.c **** узнать через sport_tx_req_rdy()).
|
||||
141:src/l502_sport_tx.c ****
|
||||
142:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #SPORT_TX_REQ_SIZE_MAX
|
||||
142:src/l502_sport_tx.c **** Количество слов в запросе не должно превышать #SPORT_TX_
|
||||
143:src/l502_sport_tx.c ****
|
||||
144:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
145:src/l502_sport_tx.c **** DMA <EFBFBD> SPORT0.
|
||||
144:src/l502_sport_tx.c **** При добавление первого дескриптора автомтически ра
|
||||
145:src/l502_sport_tx.c **** DMA и SPORT0.
|
||||
146:src/l502_sport_tx.c ****
|
||||
147:src/l502_sport_tx.c **** @param[in] buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
148:src/l502_sport_tx.c **** @param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
147:src/l502_sport_tx.c **** @param[in] buf Указатель на массив на передачу.
|
||||
148:src/l502_sport_tx.c **** @param[in] size Количество 32-битных слов на передачу
|
||||
149:src/l502_sport_tx.c **** *******************************************************************************/
|
||||
150:src/l502_sport_tx.c **** void sport_tx_start_req(uint32_t* buf, uint32_t size) {
|
||||
151:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> DMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
151:src/l502_sport_tx.c **** /* запрещаем прерывание от DMA на случай гонок с измен<D0B5>
|
||||
152:src/l502_sport_tx.c **** *pSIC_IMASK0 &= ~IRQ_DMA4;
|
||||
153:src/l502_sport_tx.c ****
|
||||
154:src/l502_sport_tx.c **** f_descrs[f_put_descr].sal = (uint32_t)buf & 0xFFFF;
|
||||
155:src/l502_sport_tx.c **** f_descrs[f_put_descr].sah = ((uint32_t)buf >> 16) & 0xFFFF;
|
||||
156:src/l502_sport_tx.c **** f_descrs[f_put_descr].xcnt = size*2;
|
||||
157:src/l502_sport_tx.c **** f_descrs[f_put_descr].cfg = SPORT_TX_DMA_CFG_WAIT;
|
||||
158:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
158:src/l502_sport_tx.c **** /* убеждаемся, что данные будут уже записаны в память
|
||||
159:src/l502_sport_tx.c **** ssync();
|
||||
160:src/l502_sport_tx.c ****
|
||||
161:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
161:src/l502_sport_tx.c **** /* если DMA сейчас остановлен => запускаем его */
|
||||
162:src/l502_sport_tx.c **** if (f_put_cnt==f_done_cnt) {
|
||||
163:src/l502_sport_tx.c **** uint32_t cfg_wrd = SPORT_TX_DMA_CFG_START;
|
||||
164:src/l502_sport_tx.c **** *pDMA4_CONFIG = cfg_wrd;
|
||||
@ -410,15 +410,15 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
179:src/l502_sport_tx.c **** }
|
||||
180:src/l502_sport_tx.c ****
|
||||
181:src/l502_sport_tx.c ****
|
||||
182:src/l502_sport_tx.c **** /** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
182:src/l502_sport_tx.c **** /** @brief Обработчик прерывания по SPORT0 на завершение пере
|
||||
183:src/l502_sport_tx.c ****
|
||||
184:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
185:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
186:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_done().
|
||||
187:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
188:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA (<28><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
189:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 8
|
||||
184:src/l502_sport_tx.c **** Прерывание возникает, когда был передан блок данных
|
||||
185:src/l502_sport_tx.c **** одному дескриптору.
|
||||
186:src/l502_sport_tx.c **** Функция рассчитывает количество переданных данных
|
||||
187:src/l502_sport_tx.c **** Также функция помечает дескриптор как свободный и п
|
||||
188:src/l502_sport_tx.c **** снова запускает DMA (если он был остановлен, но при эт<EFBFBD>
|
||||
189:src/l502_sport_tx.c **** дескриптор на передачу) */
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 8
|
||||
|
||||
|
||||
190:src/l502_sport_tx.c **** ISR( isr_sport_dma_tx) {
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
250 .loc 1 191 0
|
||||
251 01c0 4AE1C0FF P2.H = 65472;
|
||||
190:src/l502_sport_tx.c **** ISR( isr_sport_dma_tx) {
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 9
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 9
|
||||
|
||||
|
||||
252 .loc 1 190 0
|
||||
@ -505,8 +505,8 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
267 .loc 1 196 0
|
||||
268 01d8 0860 R0 = 1 (X);
|
||||
197:src/l502_sport_tx.c ****
|
||||
198:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
199:src/l502_sport_tx.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
198:src/l502_sport_tx.c **** /* обработку выполняем только в случае, если есть н
|
||||
199:src/l502_sport_tx.c **** дескрипторы */
|
||||
200:src/l502_sport_tx.c **** if (f_done_cnt != f_put_cnt) {
|
||||
269 .loc 1 200 0
|
||||
270 01da 4CE10000 P4.H = _f_done_cnt;
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
291 0208 1032 P2 = R0;
|
||||
292 020a 09E10400 P1.L = _f_descrs;
|
||||
293 020e 20E1A500 R0 = 165 (X);
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 10
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 10
|
||||
|
||||
|
||||
294 0212 925E P2 = P2 + (P2 << 2);
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
9:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma diag(push)
|
||||
10:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma diag(suppress:misra_rule_2_4)
|
||||
11:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma diag(suppress:misra_rule_5_3)
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 11
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 11
|
||||
|
||||
|
||||
12:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma diag(suppress:misra_rule_6_3)
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
66:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
67:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #if (!defined(__DEFINED_CLI) && \
|
||||
68:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** ((defined(__SPECIFIC_NAMES) && defined(__ENABLE_CLI)) || \
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 12
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 12
|
||||
|
||||
|
||||
69:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** (!defined(__SPECIFIC_NAMES) && !defined(__DISABLE_CLI))))
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
123:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
124:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #define __DEFINED_EXCPT
|
||||
125:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h ****
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 13
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 13
|
||||
|
||||
|
||||
126:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #define excpt(A) (__builtin_excpt((A)))
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
180:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma always_inline
|
||||
181:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** static void * flushinvmodup(void * __a) {
|
||||
182:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** void * __rval = __builtin_flushinvmodup(__a);
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 14
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 14
|
||||
|
||||
|
||||
183:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** return __rval;
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
237:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma inline
|
||||
238:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** #pragma always_inline
|
||||
239:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** static void * iflushmodup(void * __a) {
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 15
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 15
|
||||
|
||||
|
||||
240:/home/feda/MIPT/RadioPhotonic_Subserface_radar/BlackFin/toolchain_off/bfin-elf/bin/../lib/gcc/bfin-elf/4.3.5/../../../../bfin-elf/include/builtins.h **** void * __rval = __builtin_iflushmodup(__a);
|
||||
@ -892,13 +892,13 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
335 024e 4AE1C0FF P2.H = 65472;
|
||||
336 0252 0AE1280D P2.L = 3368;
|
||||
337 0256 1295 R2 = W [P2] (Z);
|
||||
218:src/l502_sport_tx.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
218:src/l502_sport_tx.c **** /* если DMA остановлен, а дескрипторы на передачу <20>
|
||||
219:src/l502_sport_tx.c **** if ((f_done_cnt != f_put_cnt) && !(status & DMA_RUN)) {
|
||||
338 .loc 1 219 0
|
||||
339 0258 2191 R1 = [P4];
|
||||
340 025a 1891 R0 = [P3];
|
||||
341 025c 0108 cc =R1==R0;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 16
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 16
|
||||
|
||||
|
||||
342 025e 0318 if cc jump .L13;
|
||||
@ -958,7 +958,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
379 02a2 1401 M0 = [SP++];
|
||||
380 02a4 1F01 L3 = [SP++];
|
||||
381 02a6 1E01 L2 = [SP++];
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 17
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 17
|
||||
|
||||
|
||||
382 02a8 1D01 L1 = [SP++];
|
||||
@ -1018,7 +1018,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
432 02f6 BB2F jump.s .L14;
|
||||
433 .LBE23:
|
||||
434 .LBE22:
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 18
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 18
|
||||
|
||||
|
||||
435 .LBE24:
|
||||
@ -1078,7 +1078,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
478 .loc 1 157 0
|
||||
479 032c 20E1A500 R0 = 165 (X);
|
||||
156:src/l502_sport_tx.c **** f_descrs[f_put_descr].xcnt = size*2;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 19
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 19
|
||||
|
||||
|
||||
480 .loc 1 156 0
|
||||
@ -1138,7 +1138,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
175:src/l502_sport_tx.c **** f_put_descr=0;
|
||||
528 .loc 1 175 0
|
||||
529 0378 4AE10000 P2.H = _f_put_descr;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 20
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 20
|
||||
|
||||
|
||||
530 037c 0060 R0 = 0 (X);
|
||||
@ -1198,7 +1198,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
575 .LBB30:
|
||||
576 .LBB31:
|
||||
96:src/l502_sport_tx.c **** *pSPORT0_TCR1 |= TSPEN;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 21
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 21
|
||||
|
||||
|
||||
577 .loc 1 96 0
|
||||
@ -1258,7 +1258,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
621 .LBB41:
|
||||
622 .loc 2 277 0
|
||||
623 0402 2400 ssync;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 22
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 22
|
||||
|
||||
|
||||
624 .LBE41:
|
||||
@ -1318,7 +1318,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
674 0468 50E62800 W [P2+80] = R0;
|
||||
675 046c 40E10000 R0.H = _f_descrs+100;
|
||||
676 0470 00E16800 R0.L = _f_descrs+100;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 23
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 23
|
||||
|
||||
|
||||
677 0474 50E62D00 W [P2+90] = R0;
|
||||
@ -1378,7 +1378,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
85:src/l502_sport_tx.c **** *pDMA4_X_MODIFY = 2;
|
||||
723 .loc 1 85 0
|
||||
724 0502 4AE1C0FF P2.H = 65472;
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 24
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 24
|
||||
|
||||
|
||||
725 0506 1060 R0 = 2 (X);
|
||||
@ -1438,7 +1438,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
775 0004 FFFFFFFF .4byte 0xffffffff
|
||||
776 0008 01 .byte 0x1
|
||||
777 0009 00 .string ""
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 25
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 25
|
||||
|
||||
|
||||
778 000a 01 .uleb128 0x1
|
||||
@ -1498,7 +1498,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
832 0055 02 .uleb128 0x2
|
||||
833 0056 A3 .byte 0xa3
|
||||
834 0057 01 .uleb128 0x1
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 26
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 26
|
||||
|
||||
|
||||
835 .align 4
|
||||
@ -1558,7 +1558,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
889 008a 0E .byte 0xe
|
||||
890 008b 64 .uleb128 0x64
|
||||
891 008c 42 .byte 0x4
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 27
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 27
|
||||
|
||||
|
||||
892 .4byte .LCFI15-.LCFI14
|
||||
@ -1618,7 +1618,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
946 00bd 25 .uleb128 0x25
|
||||
947 00be 9E .byte 0x9e
|
||||
948 00bf 24 .uleb128 0x24
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 28
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 28
|
||||
|
||||
|
||||
949 00c0 9D .byte 0x9d
|
||||
@ -1678,7 +1678,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1003 00f6 80 .byte 0x80
|
||||
1004 00f7 08 .uleb128 0x8
|
||||
1005 00f8 B1 .byte 0xb1
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 29
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 29
|
||||
|
||||
|
||||
1006 00f9 07 .uleb128 0x7
|
||||
@ -1738,7 +1738,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1060 0136 04 .uleb128 0x4
|
||||
1061 0137 8D .byte 0x8d
|
||||
1062 0138 03 .uleb128 0x3
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 30
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 30
|
||||
|
||||
|
||||
1063 0139 8C .byte 0x8c
|
||||
@ -1798,7 +1798,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1117 0046 0100 .2byte 0x1
|
||||
1118 0048 5E .byte 0x5e
|
||||
1119 0049 70010000 .4byte .LCFI2-.Ltext0
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 31
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 31
|
||||
|
||||
|
||||
1120 004d 8C010000 .4byte .LFE20-.Ltext0
|
||||
@ -1858,7 +1858,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1174 00d3 7E .byte 0x7e
|
||||
1175 00d4 D800 .sleb128 88
|
||||
1176 00d6 A0010000 .4byte .LCFI12-.Ltext0
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 32
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 32
|
||||
|
||||
|
||||
1177 00da A2010000 .4byte .LCFI13-.Ltext0
|
||||
@ -1918,7 +1918,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1231 0165 B6010000 .4byte .LCFI23-.Ltext0
|
||||
1232 0169 B8010000 .4byte .LCFI24-.Ltext0
|
||||
1233 016d 0300 .2byte 0x3
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 33
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 33
|
||||
|
||||
|
||||
1234 016f 7E .byte 0x7e
|
||||
@ -1978,7 +1978,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1288 01fd 7E .byte 0x7e
|
||||
1289 01fe 0C .sleb128 12
|
||||
1290 01ff 02030000 .4byte .LCFI33-.Ltext0
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 34
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 34
|
||||
|
||||
|
||||
1291 0203 E4030000 .4byte .LFE21-.Ltext0
|
||||
@ -2038,7 +2038,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1345 0031 03 .byte 0x3
|
||||
1346 0032 2A .byte 0x2a
|
||||
1347 0033 37000000 .4byte 0x37
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 35
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 35
|
||||
|
||||
|
||||
1348 0037 02 .uleb128 0x2
|
||||
@ -2098,7 +2098,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1402 0097 04 .byte 0x4
|
||||
1403 0098 04 .byte 0x4
|
||||
1404 0099 37 .byte 0x37
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 36
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 36
|
||||
|
||||
|
||||
1405 009a AB000000 .4byte 0xab
|
||||
@ -2158,7 +2158,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1459 0100 02 .uleb128 0x2
|
||||
1460 0101 0A .uleb128 0xa
|
||||
1461 0102 73616800 .string "sah"
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 37
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 37
|
||||
|
||||
|
||||
1462 0106 01 .byte 0x1
|
||||
@ -2218,7 +2218,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1516 016d 3C .byte 0x3c
|
||||
1517 016e 5E000000 .4byte 0x5e
|
||||
1518 0172 01 .byte 0x1
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 38
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 38
|
||||
|
||||
|
||||
1519 0173 51 .byte 0x51
|
||||
@ -2278,7 +2278,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1573 01ef 01 .byte 0x1
|
||||
1574 01f0 C1 .byte 0xc1
|
||||
1575 01f1 5E000000 .4byte 0x5e
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 39
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 39
|
||||
|
||||
|
||||
1576 01f5 D5010000 .4byte .LLST4
|
||||
@ -2338,7 +2338,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1630 0279 16 .uleb128 0x16
|
||||
1631 027a 95000000 .4byte .LASF31
|
||||
1632 027e 01 .byte 0x1
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 40
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 40
|
||||
|
||||
|
||||
1633 027f AA .byte 0xaa
|
||||
@ -2398,7 +2398,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1687 0300 22040000 .4byte .LBB47
|
||||
1688 0304 48050000 .4byte .LBE47
|
||||
1689 0308 12 .uleb128 0x12
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 41
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 41
|
||||
|
||||
|
||||
1690 0309 83010000 .4byte 0x183
|
||||
@ -2458,7 +2458,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1744 037b 88010000 .4byte .LASF39
|
||||
1745 037f 01 .byte 0x1
|
||||
1746 0380 30 .byte 0x30
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 42
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 42
|
||||
|
||||
|
||||
1747 0381 7E000000 .4byte 0x7e
|
||||
@ -2518,7 +2518,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1801 0021 03 .uleb128 0x3
|
||||
1802 0022 0E .uleb128 0xe
|
||||
1803 0023 3A .uleb128 0x3a
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 43
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 43
|
||||
|
||||
|
||||
1804 0024 0B .uleb128 0xb
|
||||
@ -2578,7 +2578,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1858 005a 3A .uleb128 0x3a
|
||||
1859 005b 0B .uleb128 0xb
|
||||
1860 005c 3B .uleb128 0x3b
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 44
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 44
|
||||
|
||||
|
||||
1861 005d 0B .uleb128 0xb
|
||||
@ -2638,7 +2638,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1915 0093 0E .uleb128 0xe
|
||||
1916 0094 3A .uleb128 0x3a
|
||||
1917 0095 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 45
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 45
|
||||
|
||||
|
||||
1918 0096 3B .uleb128 0x3b
|
||||
@ -2698,7 +2698,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
1972 00cc 0E .uleb128 0xe
|
||||
1973 00cd 3A .uleb128 0x3a
|
||||
1974 00ce 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 46
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 46
|
||||
|
||||
|
||||
1975 00cf 3B .uleb128 0x3b
|
||||
@ -2758,7 +2758,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2029 0105 3B .uleb128 0x3b
|
||||
2030 0106 0B .uleb128 0xb
|
||||
2031 0107 27 .uleb128 0x27
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 47
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 47
|
||||
|
||||
|
||||
2032 0108 0C .uleb128 0xc
|
||||
@ -2818,7 +2818,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2086 013e 17 .uleb128 0x17
|
||||
2087 013f 34 .uleb128 0x34
|
||||
2088 0140 00 .byte 0x0
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 48
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 48
|
||||
|
||||
|
||||
2089 0141 03 .uleb128 0x3
|
||||
@ -2878,7 +2878,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2143 0177 03 .uleb128 0x3
|
||||
2144 0178 0E .uleb128 0xe
|
||||
2145 0179 3A .uleb128 0x3a
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 49
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 49
|
||||
|
||||
|
||||
2146 017a 0B .uleb128 0xb
|
||||
@ -2938,7 +2938,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2200 01b0 49 .uleb128 0x49
|
||||
2201 01b1 13 .uleb128 0x13
|
||||
2202 01b2 2F .uleb128 0x2f
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 50
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 50
|
||||
|
||||
|
||||
2203 01b3 0B .uleb128 0xb
|
||||
@ -2998,7 +2998,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2253 0026 8D010000 .4byte 0x18d
|
||||
2254 002a 73706F72 .string "sport_tx_init"
|
||||
2254 745F7478
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 51
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 51
|
||||
|
||||
|
||||
2254 5F696E69
|
||||
@ -3058,7 +3058,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2292 0000 73706F72 .string "sport_tx_init"
|
||||
2292 745F7478
|
||||
2292 5F696E69
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 52
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 52
|
||||
|
||||
|
||||
2292 7400
|
||||
@ -3118,7 +3118,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2314 53545245
|
||||
2314 414D5F43
|
||||
2314 59434C45
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 53
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 53
|
||||
|
||||
|
||||
2314 00
|
||||
@ -3178,7 +3178,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2338 72737400
|
||||
2339 .LASF11:
|
||||
2340 0190 756E7369 .string "unsigned int"
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 54
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 54
|
||||
|
||||
|
||||
2340 676E6564
|
||||
@ -3238,7 +3238,7 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2362 657100
|
||||
2363 .LASF2:
|
||||
2364 0234 73686F72 .string "short int"
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 55
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 55
|
||||
|
||||
|
||||
2364 7420696E
|
||||
@ -3293,24 +3293,24 @@ BFIN GAS /tmp/ccAC6MSl.s page 1
|
||||
2386 02ce 7373796E .string "ssync"
|
||||
2386 6300
|
||||
2387 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/ccAC6MSl.s page 56
|
||||
BFIN GAS /tmp/ccBCKWZt.s page 56
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_sport_tx.c
|
||||
/tmp/ccAC6MSl.s:13 .text:0000000000000000 _sport_tx_out_status
|
||||
/tmp/ccAC6MSl.s:766 .bss:00000000000000a8 _f_put_cnt
|
||||
/tmp/ccAC6MSl.s:768 .bss:00000000000000ac _f_done_cnt
|
||||
/tmp/ccAC6MSl.s:758 .bss:0000000000000000 _f_tx_was_empty
|
||||
/tmp/ccAC6MSl.s:57 .text:0000000000000038 _sport_tx_init
|
||||
/tmp/ccAC6MSl.s:760 .bss:0000000000000004 _f_descrs
|
||||
/tmp/ccAC6MSl.s:762 .bss:00000000000000a5 _f_done_descr
|
||||
/tmp/ccAC6MSl.s:760 .bss:00000000000000a4 _f_put_descr
|
||||
/tmp/ccAC6MSl.s:770 .bss:00000000000000b0 _f_first
|
||||
/tmp/ccAC6MSl.s:171 .text:0000000000000168 _sport_tx_req_rdy
|
||||
/tmp/ccAC6MSl.s:196 .text:000000000000018c _isr_sport_dma_tx
|
||||
/tmp/ccAC6MSl.s:441 .text:00000000000002f8 _sport_tx_start_req
|
||||
/tmp/ccAC6MSl.s:602 .text:00000000000003e4 _sport_tx_stop
|
||||
/tmp/ccBCKWZt.s:13 .text:0000000000000000 _sport_tx_out_status
|
||||
/tmp/ccBCKWZt.s:766 .bss:00000000000000a8 _f_put_cnt
|
||||
/tmp/ccBCKWZt.s:768 .bss:00000000000000ac _f_done_cnt
|
||||
/tmp/ccBCKWZt.s:758 .bss:0000000000000000 _f_tx_was_empty
|
||||
/tmp/ccBCKWZt.s:57 .text:0000000000000038 _sport_tx_init
|
||||
/tmp/ccBCKWZt.s:760 .bss:0000000000000004 _f_descrs
|
||||
/tmp/ccBCKWZt.s:762 .bss:00000000000000a5 _f_done_descr
|
||||
/tmp/ccBCKWZt.s:760 .bss:00000000000000a4 _f_put_descr
|
||||
/tmp/ccBCKWZt.s:770 .bss:00000000000000b0 _f_first
|
||||
/tmp/ccBCKWZt.s:171 .text:0000000000000168 _sport_tx_req_rdy
|
||||
/tmp/ccBCKWZt.s:196 .text:000000000000018c _isr_sport_dma_tx
|
||||
/tmp/ccBCKWZt.s:441 .text:00000000000002f8 _sport_tx_start_req
|
||||
/tmp/ccBCKWZt.s:602 .text:00000000000003e4 _sport_tx_stop
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
_sport_tx_done
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
BFIN GAS /tmp/cckPfsBl.s page 1
|
||||
|
||||
|
||||
1 .file "src/l502_tests.c";
|
||||
@ -21,28 +21,28 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
14 .LFB2:
|
||||
15 .file 1 "src/l502_tests.c"
|
||||
1:src/l502_tests.c **** /** @file l502_test.c
|
||||
2:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
3:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
4:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
5:src/l502_tests.c **** (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>.<2E>.)
|
||||
2:src/l502_tests.c **** Данный файл содержит реализацию тестов аппаратуры.
|
||||
3:src/l502_tests.c **** Эти тесты используется при наладке прибора и не вып<D18B>
|
||||
4:src/l502_tests.c **** однако включение их в прошивку позволяет выполнять
|
||||
5:src/l502_tests.c **** (однако не во время сбора данных и т.п.)
|
||||
6:src/l502_tests.c ****
|
||||
7:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> PC <20> BlackFin: L502_BF_CMD_CODE_TES
|
||||
8:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
9:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
10:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
11:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
12:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
7:src/l502_tests.c **** Для управления тестами предназначена специальная к
|
||||
8:src/l502_tests.c **** Параметр этой каоманды определяет действие:
|
||||
9:src/l502_tests.c **** - запустить тест с заданным номером
|
||||
10:src/l502_tests.c **** - остановить текущий тест
|
||||
11:src/l502_tests.c **** - получить результаты выполняемого в данных момен
|
||||
12:src/l502_tests.c **** последнего выполняемого теста (если тест остан<D0B0>
|
||||
13:src/l502_tests.c ****
|
||||
14:src/l502_tests.c **** <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g_mode)
|
||||
15:src/l502_tests.c **** <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
16:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> PC).
|
||||
17:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
18:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> L502_BF_CMD_TEST_GET_RESULT.
|
||||
14:src/l502_tests.c **** По какого-либо теста модуль переходит в етстовый ре<D180>
|
||||
15:src/l502_tests.c **** и выполняет функцию, соответствующую заданному тес<D0B5>
|
||||
16:src/l502_tests.c **** должен переодически проверять приход других команд
|
||||
17:src/l502_tests.c **** Тест выполняется либо до ошибки, либо до прихода ком
|
||||
18:src/l502_tests.c **** Узнать результат теста можно командой с параметром
|
||||
19:src/l502_tests.c ****
|
||||
20:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||
21:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM
|
||||
22:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI
|
||||
23:src/l502_tests.c **** - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT
|
||||
20:src/l502_tests.c **** Доступны следующие тесты:
|
||||
21:src/l502_tests.c **** - Проверка SDRAM
|
||||
22:src/l502_tests.c **** - Проверка SPI
|
||||
23:src/l502_tests.c **** - Проверка SPORT
|
||||
24:src/l502_tests.c ****
|
||||
25:src/l502_tests.c **** **************************************************************************************************/
|
||||
26:src/l502_tests.c ****
|
||||
@ -58,19 +58,19 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
36:src/l502_tests.c **** #include <string.h>
|
||||
37:src/l502_tests.c ****
|
||||
38:src/l502_tests.c ****
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 2
|
||||
BFIN GAS /tmp/cckPfsBl.s page 2
|
||||
|
||||
|
||||
39:src/l502_tests.c ****
|
||||
40:src/l502_tests.c **** extern int g_mode;
|
||||
41:src/l502_tests.c ****
|
||||
42:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD> SPORT */
|
||||
42:src/l502_tests.c **** /* модуль счетчика, используемого для тестов SDRAM и SPORT */
|
||||
43:src/l502_tests.c **** #define L502_TEST_CNTR_MODULE 35317
|
||||
44:src/l502_tests.c ****
|
||||
45:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> SDRAM */
|
||||
45:src/l502_tests.c **** /* размер одного банка SDRAM */
|
||||
46:src/l502_tests.c **** #define SDRAM_BANK_SIZE (4UL*1024*1024*2)
|
||||
47:src/l502_tests.c ****
|
||||
48:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM */
|
||||
48:src/l502_tests.c **** /* адреса банков SDRAM */
|
||||
49:src/l502_tests.c **** static volatile uint16_t* bank1 = NULL;
|
||||
50:src/l502_tests.c **** static volatile uint16_t* bank2 = (uint16_t*)(SDRAM_BANK_SIZE);
|
||||
51:src/l502_tests.c **** static volatile uint16_t* bank3 = (uint16_t*)(2*SDRAM_BANK_SIZE);
|
||||
@ -80,24 +80,24 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
55:src/l502_tests.c **** #define SPORT_TEST_START_ADDR 0xFF900000
|
||||
56:src/l502_tests.c **** #define SPORT_TEST_BUF_SIZE 4096
|
||||
57:src/l502_tests.c ****
|
||||
58:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
58:src/l502_tests.c **** /* результат последнего теста */
|
||||
59:src/l502_tests.c **** static t_l502_bf_test_res f_test_res;
|
||||
60:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
60:src/l502_tests.c **** /* номер последнего выполняемого теста */
|
||||
61:src/l502_tests.c **** static int32_t f_cur_test_ind = -1;
|
||||
62:src/l502_tests.c ****
|
||||
63:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
63:src/l502_tests.c **** /* объявление функций запуска тестов */
|
||||
64:src/l502_tests.c **** static int f_sdram_test(void);
|
||||
65:src/l502_tests.c **** static int f_spi_test(void);
|
||||
66:src/l502_tests.c **** static int f_sport_test(void);
|
||||
67:src/l502_tests.c ****
|
||||
68:src/l502_tests.c ****
|
||||
69:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
69:src/l502_tests.c **** /* стркутура, описывающая соответствия кода теста и фу<D184>
|
||||
70:src/l502_tests.c **** typedef struct {
|
||||
71:src/l502_tests.c **** uint32_t test_code;
|
||||
72:src/l502_tests.c **** int (*start)(void);
|
||||
73:src/l502_tests.c **** void (*get_result)(t_l502_bf_cmd *cmd);
|
||||
74:src/l502_tests.c **** } t_test_pars;
|
||||
75:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
75:src/l502_tests.c **** /* теблица соответствий функций и кодов тестов */
|
||||
76:src/l502_tests.c **** static t_test_pars f_test_pars[] = {
|
||||
77:src/l502_tests.c **** { L502_BF_CMD_TEST_ECHO, NULL, NULL},
|
||||
78:src/l502_tests.c **** { L502_BF_CMD_TEST_SPORT, f_sport_test, NULL},
|
||||
@ -118,17 +118,17 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
21 0002 2832 P5 = R0;
|
||||
22 0004 00E80300 LINK 12;
|
||||
23 .LCFI1:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 3
|
||||
BFIN GAS /tmp/cckPfsBl.s page 3
|
||||
|
||||
|
||||
88:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
88:src/l502_tests.c **** /* получение результата теста */
|
||||
89:src/l502_tests.c **** if (cmd->param == L502_BF_CMD_TEST_GET_RESULT) {
|
||||
24 .loc 1 89 0
|
||||
25 0008 69A0 R1 = [P5+4];
|
||||
26 000a 090C cc =R1==1;
|
||||
27 000c 3E18 if cc jump .L20;
|
||||
28 .LVL1:
|
||||
90:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
90:src/l502_tests.c **** /* если не было никакого теста - возвращаем ошибку *
|
||||
91:src/l502_tests.c **** if (f_cur_test_ind == -1) {
|
||||
92:src/l502_tests.c **** l502_cmd_done(L502_BF_ERR_INVALID_CMD_PARAMS, NULL, 0);
|
||||
93:src/l502_tests.c **** } else {
|
||||
@ -136,11 +136,11 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
95:src/l502_tests.c ****
|
||||
96:src/l502_tests.c ****
|
||||
97:src/l502_tests.c **** if (f_test_pars[f_cur_test_ind].get_result != NULL) {
|
||||
98:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =>
|
||||
99:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> */
|
||||
98:src/l502_tests.c **** /* если есть у теста спец функция для получени<D0BD>
|
||||
99:src/l502_tests.c **** вызываем ее */
|
||||
100:src/l502_tests.c **** f_test_pars[f_cur_test_ind].get_result(cmd);
|
||||
101:src/l502_tests.c **** } else {
|
||||
102:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
102:src/l502_tests.c **** /* иначе просто устанавливаем резульатат без <20>
|
||||
103:src/l502_tests.c **** l502_cmd_done(0, (uint32_t*)&f_test_res,
|
||||
104:src/l502_tests.c **** sizeof(t_l502_bf_test_res)/sizeof(uint32_t));
|
||||
105:src/l502_tests.c **** }
|
||||
@ -149,8 +149,8 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
29 .loc 1 107 0
|
||||
30 000e 010C cc =R1==0;
|
||||
31 0010 1114 if !cc jump .L5 (bp);
|
||||
108:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
109:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
108:src/l502_tests.c **** /* останов теста => если тест запущен - возвращаем е<>
|
||||
109:src/l502_tests.c **** иначе возвращаем ошибку что и так теста нету */
|
||||
110:src/l502_tests.c **** if (g_mode == L502_BF_MODE_TEST) {
|
||||
32 .loc 1 110 0
|
||||
33 0012 4AE10000 P2.H = _g_mode;
|
||||
@ -167,7 +167,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
40 .L18:
|
||||
115:src/l502_tests.c **** }
|
||||
116:src/l502_tests.c **** } else {
|
||||
117:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
117:src/l502_tests.c **** /* запуск теста - проходим по таблице и ищем нужный
|
||||
118:src/l502_tests.c **** if (g_mode == L502_BF_MODE_IDLE) {
|
||||
119:src/l502_tests.c **** uint32_t i;
|
||||
120:src/l502_tests.c ****
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
125:src/l502_tests.c **** memset(&f_test_res, 0, sizeof(f_test_res));
|
||||
126:src/l502_tests.c **** f_test_res.test = cmd->param;
|
||||
127:src/l502_tests.c **** l502_cmd_done(0, 0, NULL);
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 4
|
||||
BFIN GAS /tmp/cckPfsBl.s page 4
|
||||
|
||||
|
||||
128:src/l502_tests.c ****
|
||||
@ -238,7 +238,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
71 0054 1093 [P2] = R0;
|
||||
123:src/l502_tests.c **** if (f_test_pars[i].test_code == cmd->param) {
|
||||
72 .loc 1 123 0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 5
|
||||
BFIN GAS /tmp/cckPfsBl.s page 5
|
||||
|
||||
|
||||
73 0056 2091 R0 = [P4];
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
94:src/l502_tests.c **** f_test_res.run = (g_mode == L502_BF_MODE_TEST) ? 1 : 0;
|
||||
123 .loc 1 94 0
|
||||
124 00b2 100C cc =R0==2;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 6
|
||||
BFIN GAS /tmp/cckPfsBl.s page 6
|
||||
|
||||
|
||||
125 00b4 0002 R0 = CC;
|
||||
@ -358,7 +358,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
171 00e8 FFE28CFF jump.l _l502_cmd_done;
|
||||
172 .LVL11:
|
||||
173 .L22:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 7
|
||||
BFIN GAS /tmp/cckPfsBl.s page 7
|
||||
|
||||
|
||||
174 .LBB3:
|
||||
@ -418,7 +418,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
219
|
||||
220 .LCFI6:
|
||||
221 .LVL12:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 8
|
||||
BFIN GAS /tmp/cckPfsBl.s page 8
|
||||
|
||||
|
||||
222 0132 1000 rts;
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
265 0176 1F93 [P3] = R7;
|
||||
266 .L12:
|
||||
121:src/l502_tests.c **** for (i=0, f_cur_test_ind=-1; (i<sizeof(f_test_pars)/sizeof(f_test_pars[0])) &&
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 9
|
||||
BFIN GAS /tmp/cckPfsBl.s page 9
|
||||
|
||||
|
||||
267 .loc 1 121 0
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
312 01c6 1D93 [P3] = R5;
|
||||
131:src/l502_tests.c **** f_test_pars[i].start();
|
||||
313 .loc 1 131 0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 10
|
||||
BFIN GAS /tmp/cckPfsBl.s page 10
|
||||
|
||||
|
||||
314 01c8 6200 call (P2);
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
358 0210 0AE10000 P2.L = _f_test_pars;
|
||||
359 0214 92AE P2 = [P2+40];
|
||||
360 0216 420C cc =P2==0;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 11
|
||||
BFIN GAS /tmp/cckPfsBl.s page 11
|
||||
|
||||
|
||||
361 0218 0518 if cc jump .L16;
|
||||
@ -656,12 +656,12 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
156:src/l502_tests.c **** } while (0);
|
||||
157:src/l502_tests.c ****
|
||||
158:src/l502_tests.c ****
|
||||
159:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/<2F><><EFBFBD>
|
||||
160:src/l502_tests.c **** <EFBFBD><EFBFBD> BlackFin'<EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 12
|
||||
159:src/l502_tests.c **** /* тестирование SPORT'а, служащего для передачи потоков А<>
|
||||
160:src/l502_tests.c **** от BlackFin'а к ПЛИС. Устанавливается циклический сквозн
|
||||
BFIN GAS /tmp/cckPfsBl.s page 12
|
||||
|
||||
|
||||
161:src/l502_tests.c **** <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
161:src/l502_tests.c **** и передается счетчик, который проверяется при прием<D0B5>
|
||||
162:src/l502_tests.c **** static int f_sport_test(void) {
|
||||
163:src/l502_tests.c **** #define RX_BUF_SIZE 2048
|
||||
164:src/l502_tests.c **** static uint16_t rx_buf[RX_BUF_SIZE];
|
||||
@ -672,7 +672,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
169:src/l502_tests.c **** uint16_t rx_val;
|
||||
170:src/l502_tests.c **** int err = 0, i;
|
||||
171:src/l502_tests.c ****
|
||||
172:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
172:src/l502_tests.c **** /* разрешаем прием и передачу по SPORT'у */
|
||||
173:src/l502_tests.c **** *pSPORT0_TCR1 |= TSPEN;
|
||||
174:src/l502_tests.c **** *pSPORT0_RCR1 |= RSPEN;
|
||||
175:src/l502_tests.c ****
|
||||
@ -681,13 +681,13 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
178:src/l502_tests.c **** stat=*pSPORT0_STAT;
|
||||
179:src/l502_tests.c **** }
|
||||
180:src/l502_tests.c ****
|
||||
181:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD> */
|
||||
181:src/l502_tests.c **** /* вначале полностью заполняем очередь SPORT'а */
|
||||
182:src/l502_tests.c **** for (i = 0; i < 8; i++) {
|
||||
183:src/l502_tests.c **** *pSPORT0_TX16 = tx_cntr++;
|
||||
184:src/l502_tests.c **** //tx_cntr+=SPORT_CNTR_INC;
|
||||
185:src/l502_tests.c **** }
|
||||
186:src/l502_tests.c ****
|
||||
187:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT */
|
||||
187:src/l502_tests.c **** /* устанавливаем в ПЛИС сквозной режим работы SPORT */
|
||||
188:src/l502_tests.c **** fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, 0xE);
|
||||
189:src/l502_tests.c ****
|
||||
190:src/l502_tests.c ****
|
||||
@ -718,13 +718,13 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
215:src/l502_tests.c **** }
|
||||
216:src/l502_tests.c ****
|
||||
217:src/l502_tests.c **** sport_test_end:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 13
|
||||
BFIN GAS /tmp/cckPfsBl.s page 13
|
||||
|
||||
|
||||
218:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
218:src/l502_tests.c **** /* запрещаем прием и передачу по SPORT'у */
|
||||
219:src/l502_tests.c **** *pSPORT0_TCR1 = 0;
|
||||
220:src/l502_tests.c **** *pSPORT0_RCR1 = 0;
|
||||
221:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD> */
|
||||
221:src/l502_tests.c **** /* возвращаем штатный режим работы SPORT'а */
|
||||
222:src/l502_tests.c **** fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, 0);
|
||||
223:src/l502_tests.c ****
|
||||
224:src/l502_tests.c **** return err;
|
||||
@ -734,8 +734,8 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
228:src/l502_tests.c ****
|
||||
229:src/l502_tests.c ****
|
||||
230:src/l502_tests.c ****
|
||||
231:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
232:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
231:src/l502_tests.c **** /* тест SPI - записываем бегущую единицу в регистр ПЛИС, с
|
||||
232:src/l502_tests.c **** значение этого регистра и сверяем результаты */
|
||||
233:src/l502_tests.c **** static int f_spi_test(void) {
|
||||
397 .loc 1 233 0
|
||||
398 023c EB05 [--sp] = ( r7:5, p5:3 );
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
243:src/l502_tests.c **** f_test_res.err = L502_BF_ERR_TEST_VALUE;
|
||||
424 .loc 1 243 0
|
||||
425 0268 25E1F9FD R5 = -519 (X);
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 14
|
||||
BFIN GAS /tmp/cckPfsBl.s page 14
|
||||
|
||||
|
||||
426 .LVL15:
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
465 .loc 1 235 0
|
||||
466 029c 29A1 R1 = [P5+16];
|
||||
467 029e 010C cc =R1==0;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 15
|
||||
BFIN GAS /tmp/cckPfsBl.s page 15
|
||||
|
||||
|
||||
468 02a0 0410 if !cc jump .L27;
|
||||
@ -883,7 +883,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
255:src/l502_tests.c ****
|
||||
256:src/l502_tests.c ****
|
||||
257:src/l502_tests.c ****
|
||||
258:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
258:src/l502_tests.c **** /* тест SDRAM памяти */
|
||||
259:src/l502_tests.c **** static int f_sdram_test(void) {
|
||||
500 .loc 1 259 0
|
||||
501 02c0 E305 [--sp] = ( r7:4, p5:3 );
|
||||
@ -898,7 +898,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
504 .loc 1 265 0
|
||||
505 02c2 4CE10000 P4.H = _f_test_res;
|
||||
259:src/l502_tests.c **** static int f_sdram_test(void) {
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 16
|
||||
BFIN GAS /tmp/cckPfsBl.s page 16
|
||||
|
||||
|
||||
506 .loc 1 259 0
|
||||
@ -929,7 +929,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
530 .LVL21:
|
||||
531 .L39:
|
||||
267:src/l502_tests.c ****
|
||||
268:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
268:src/l502_tests.c **** /* заполняем всю память счетчиком */
|
||||
269:src/l502_tests.c **** for (i = 0, cntr = 0; i < (16UL*1024*1024); i++) {
|
||||
532 .loc 1 269 0
|
||||
533 02ee 0B60 R3 = 1 (X);
|
||||
@ -958,7 +958,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
552 .loc 1 273 0
|
||||
553 030a FFE37BFE call _l502_cmd_check_req;
|
||||
554 .LVL25:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 17
|
||||
BFIN GAS /tmp/cckPfsBl.s page 17
|
||||
|
||||
|
||||
555 030e 1891 R0 = [P3];
|
||||
@ -975,7 +975,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
277:src/l502_tests.c **** TEST_CHECK_OUT(sdram_test_end);
|
||||
278:src/l502_tests.c ****
|
||||
279:src/l502_tests.c ****
|
||||
280:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
280:src/l502_tests.c **** /* читаем последовательно и сверяем результат */
|
||||
281:src/l502_tests.c **** for (i = 0, cntr = 0; i < (16UL*1024*1024); i++) {
|
||||
282:src/l502_tests.c **** uint16_t word = bank1[i];
|
||||
283:src/l502_tests.c **** if (word != cntr) {
|
||||
@ -996,8 +996,8 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
298:src/l502_tests.c **** f_test_res.stage++;
|
||||
299:src/l502_tests.c ****
|
||||
300:src/l502_tests.c ****
|
||||
301:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
302:src/l502_tests.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
301:src/l502_tests.c **** /* записываем по слову в каждый банк для проверки п
|
||||
302:src/l502_tests.c **** записи по разным банкам */
|
||||
303:src/l502_tests.c **** for (i = 0, cntr = 0; i < (4UL*1024*1024); i++) {
|
||||
304:src/l502_tests.c **** bank1[i] = cntr;
|
||||
305:src/l502_tests.c **** bank2[i] = ~cntr;
|
||||
@ -1018,7 +1018,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
320:src/l502_tests.c **** f_test_res.err = L502_BF_ERR_TEST_VALUE;
|
||||
321:src/l502_tests.c **** f_test_res.last_addr = (uint32_t)&bank1[i];
|
||||
322:src/l502_tests.c **** f_test_res.last_wr = cntr;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 18
|
||||
BFIN GAS /tmp/cckPfsBl.s page 18
|
||||
|
||||
|
||||
323:src/l502_tests.c **** f_test_res.last_rd = word;
|
||||
@ -1060,7 +1060,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
359:src/l502_tests.c ****
|
||||
360:src/l502_tests.c **** TEST_CHECK_OUT(sdram_test_end);
|
||||
361:src/l502_tests.c ****
|
||||
362:src/l502_tests.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
362:src/l502_tests.c **** /* запись в 4 разных банка с последующим чтением */
|
||||
363:src/l502_tests.c **** f_test_res.stage++;
|
||||
364:src/l502_tests.c ****
|
||||
365:src/l502_tests.c **** for (i = 0, cntr=0; i < (4UL*1024*1024); i++) {
|
||||
@ -1078,7 +1078,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
377:src/l502_tests.c ****
|
||||
378:src/l502_tests.c ****
|
||||
379:src/l502_tests.c **** if (word[0] != wr_val[0]) {
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 19
|
||||
BFIN GAS /tmp/cckPfsBl.s page 19
|
||||
|
||||
|
||||
380:src/l502_tests.c **** f_test_res.err = L502_BF_ERR_TEST_VALUE;
|
||||
@ -1138,7 +1138,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
575 .LVL29:
|
||||
576 0328 1891 R0 = [P3];
|
||||
577 032a 100C cc =R0==2;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 20
|
||||
BFIN GAS /tmp/cckPfsBl.s page 20
|
||||
|
||||
|
||||
578 032c BE10 if !cc jump .L81;
|
||||
@ -1198,7 +1198,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
625 0368 100C cc =R0==2;
|
||||
626 036a 9F10 if !cc jump .L81;
|
||||
627 036c 21A1 R1 = [P4+16];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 21
|
||||
BFIN GAS /tmp/cckPfsBl.s page 21
|
||||
|
||||
|
||||
628 036e 010C cc =R1==0;
|
||||
@ -1258,7 +1258,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
305:src/l502_tests.c **** bank2[i] = ~cntr;
|
||||
675 .loc 1 305 0
|
||||
676 03b8 0DE10000 P5.L = 0;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 22
|
||||
BFIN GAS /tmp/cckPfsBl.s page 22
|
||||
|
||||
|
||||
304:src/l502_tests.c **** bank1[i] = cntr;
|
||||
@ -1318,7 +1318,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
720 0402 0F64 R7 += 1;
|
||||
721 0404 B34F R3 <<= 22;
|
||||
722 0406 1732 P2 = R7;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 23
|
||||
BFIN GAS /tmp/cckPfsBl.s page 23
|
||||
|
||||
|
||||
723 0408 1F08 cc =R7==R3;
|
||||
@ -1378,7 +1378,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
770 043e 1908 cc =R1==R3;
|
||||
771 0440 4110 if !cc jump .L79;
|
||||
327:src/l502_tests.c **** word = bank2[i];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 24
|
||||
BFIN GAS /tmp/cckPfsBl.s page 24
|
||||
|
||||
|
||||
772 .loc 1 327 0
|
||||
@ -1438,7 +1438,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
818 .LVL64:
|
||||
819 048a D042 R0 = R2.L (Z);
|
||||
820 .LVL65:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 25
|
||||
BFIN GAS /tmp/cckPfsBl.s page 25
|
||||
|
||||
|
||||
821 048c 81E1F589 R1 = 35317 (Z);
|
||||
@ -1498,7 +1498,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
868 04c2 20E1F9FD R0 = -519 (X);
|
||||
869 04c6 20B1 [P4+16] = R0;
|
||||
347:src/l502_tests.c **** f_test_res.last_addr = (uint32_t)&bank4[i];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 26
|
||||
BFIN GAS /tmp/cckPfsBl.s page 26
|
||||
|
||||
|
||||
870 .loc 1 347 0
|
||||
@ -1558,7 +1558,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
916 .loc 1 370 0
|
||||
917 0506 09E10000 P1.L = 0;
|
||||
369:src/l502_tests.c **** bank2[i] = wr_val[1];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 27
|
||||
BFIN GAS /tmp/cckPfsBl.s page 27
|
||||
|
||||
|
||||
918 .loc 1 369 0
|
||||
@ -1618,7 +1618,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
955 .loc 1 375 0
|
||||
956 053e 2B95 R3 = W [P5] (Z);
|
||||
957 0540 0334 I0 = R3;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 28
|
||||
BFIN GAS /tmp/cckPfsBl.s page 28
|
||||
|
||||
|
||||
379:src/l502_tests.c **** if (word[0] != wr_val[0]) {
|
||||
@ -1678,7 +1678,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1004 0586 B72F jump.s .L67;
|
||||
1005 .L87:
|
||||
380:src/l502_tests.c **** f_test_res.err = L502_BF_ERR_TEST_VALUE;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 29
|
||||
BFIN GAS /tmp/cckPfsBl.s page 29
|
||||
|
||||
|
||||
1006 .loc 1 380 0
|
||||
@ -1738,7 +1738,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1050 05c2 20E1F9FD R0 = -519 (X);
|
||||
1051 05c6 20B1 [P4+16] = R0;
|
||||
338:src/l502_tests.c **** f_test_res.last_addr = (uint32_t)&bank3[i];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 30
|
||||
BFIN GAS /tmp/cckPfsBl.s page 30
|
||||
|
||||
|
||||
1052 .loc 1 338 0
|
||||
@ -1798,7 +1798,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1092 .loc 1 388 0
|
||||
1093 05f4 60BD [P4+20] = P0;
|
||||
389:src/l502_tests.c **** f_test_res.last_wr = wr_val[1];
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 31
|
||||
BFIN GAS /tmp/cckPfsBl.s page 31
|
||||
|
||||
|
||||
1094 .loc 1 389 0
|
||||
@ -1858,7 +1858,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1137 062a 09E11808 P1.L = 2072;
|
||||
178:src/l502_tests.c **** stat=*pSPORT0_STAT;
|
||||
1138 .loc 1 178 0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 32
|
||||
BFIN GAS /tmp/cckPfsBl.s page 32
|
||||
|
||||
|
||||
1139 062e 5032 P2 = P0;
|
||||
@ -1918,7 +1918,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1187 0682 0CE10010 P4.L = _f_test_res;
|
||||
1188 0686 20A1 R0 = [P4+16];
|
||||
192:src/l502_tests.c **** stat = *pSPORT0_STAT;
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 33
|
||||
BFIN GAS /tmp/cckPfsBl.s page 33
|
||||
|
||||
|
||||
1189 .loc 1 192 0
|
||||
@ -1978,7 +1978,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
200:src/l502_tests.c **** if ((rx_val != rx_cntr)) {
|
||||
1233 .loc 1 200 0
|
||||
1234 06c2 C242 R2 = R0.L (Z);
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 34
|
||||
BFIN GAS /tmp/cckPfsBl.s page 34
|
||||
|
||||
|
||||
1235 .LVL105:
|
||||
@ -2038,7 +2038,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1278 0702 A305 ( r7:4, p5:3 ) = [sp++];
|
||||
1279
|
||||
1280 .LCFI17:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 35
|
||||
BFIN GAS /tmp/cckPfsBl.s page 35
|
||||
|
||||
|
||||
1281 .LVL109:
|
||||
@ -2098,7 +2098,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1333 0000 0C000000 .4byte .LECIE0-.LSCIE0
|
||||
1334 .LSCIE0:
|
||||
1335 0004 FFFFFFFF .4byte 0xffffffff
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 36
|
||||
BFIN GAS /tmp/cckPfsBl.s page 36
|
||||
|
||||
|
||||
1336 0008 01 .byte 0x1
|
||||
@ -2158,7 +2158,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1390 004c 06 .uleb128 0x6
|
||||
1391 004d 8C .byte 0x8c
|
||||
1392 004e 05 .uleb128 0x5
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 37
|
||||
BFIN GAS /tmp/cckPfsBl.s page 37
|
||||
|
||||
|
||||
1393 004f 8B .byte 0x8b
|
||||
@ -2218,7 +2218,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1447 .LSFDE6:
|
||||
1448 008c 28000000 .4byte .LEFDE6-.LASFDE6
|
||||
1449 .LASFDE6:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 38
|
||||
BFIN GAS /tmp/cckPfsBl.s page 38
|
||||
|
||||
|
||||
1450 0090 00000000 .4byte .Lframe0
|
||||
@ -2278,7 +2278,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1504 002b 00000000 .4byte .LVL0-.Ltext0
|
||||
1505 002f 0E000000 .4byte .LVL1-.Ltext0
|
||||
1506 0033 0100 .2byte 0x1
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 39
|
||||
BFIN GAS /tmp/cckPfsBl.s page 39
|
||||
|
||||
|
||||
1507 0035 50 .byte 0x50
|
||||
@ -2338,7 +2338,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1561 00c5 00000000 .4byte 0x0
|
||||
1562 .LLST4:
|
||||
1563 00c9 C0020000 .4byte .LFB5-.Ltext0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 40
|
||||
BFIN GAS /tmp/cckPfsBl.s page 40
|
||||
|
||||
|
||||
1564 00cd C2020000 .4byte .LCFI11-.Ltext0
|
||||
@ -2398,7 +2398,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1618 015e 50 .byte 0x50
|
||||
1619 015f 00030000 .4byte .LVL23-.Ltext0
|
||||
1620 0163 02030000 .4byte .LVL24-.Ltext0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 41
|
||||
BFIN GAS /tmp/cckPfsBl.s page 41
|
||||
|
||||
|
||||
1621 0167 0100 .2byte 0x1
|
||||
@ -2458,7 +2458,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1675 01f9 3A040000 .4byte .LVL53-.Ltext0
|
||||
1676 01fd 52040000 .4byte .LVL57-.Ltext0
|
||||
1677 0201 0100 .2byte 0x1
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 42
|
||||
BFIN GAS /tmp/cckPfsBl.s page 42
|
||||
|
||||
|
||||
1678 0203 53 .byte 0x53
|
||||
@ -2518,7 +2518,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1732 0297 FC050000 .4byte .LFE5-.Ltext0
|
||||
1733 029b 0100 .2byte 0x1
|
||||
1734 029d 51 .byte 0x51
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 43
|
||||
BFIN GAS /tmp/cckPfsBl.s page 43
|
||||
|
||||
|
||||
1735 029e 00000000 .4byte 0x0
|
||||
@ -2578,7 +2578,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1789 0332 00000000 .4byte 0x0
|
||||
1790 0336 00000000 .4byte 0x0
|
||||
1791 .LLST9:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 44
|
||||
BFIN GAS /tmp/cckPfsBl.s page 44
|
||||
|
||||
|
||||
1792 033a FC050000 .4byte .LFB3-.Ltext0
|
||||
@ -2638,7 +2638,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1846 .LLST12:
|
||||
1847 03cd 94060000 .4byte .LVL98-.Ltext0
|
||||
1848 03d1 04070000 .4byte .LVL109-.Ltext0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 45
|
||||
BFIN GAS /tmp/cckPfsBl.s page 45
|
||||
|
||||
|
||||
1849 03d5 0100 .2byte 0x1
|
||||
@ -2698,7 +2698,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1903 0026 04 .byte 0x4
|
||||
1904 0027 07 .byte 0x7
|
||||
1905 0028 6B010000 .4byte .LASF0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 46
|
||||
BFIN GAS /tmp/cckPfsBl.s page 46
|
||||
|
||||
|
||||
1906 002c 03 .uleb128 0x3
|
||||
@ -2758,14 +2758,14 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1960 008c CB020000 .4byte .LASF12
|
||||
1961 0090 02 .byte 0x2
|
||||
1962 0091 50 .byte 0x50
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 47
|
||||
BFIN GAS /tmp/cckPfsBl.s page 47
|
||||
|
||||
|
||||
1963 0092 25000000 .4byte 0x25
|
||||
1964 0096 06 .uleb128 0x6
|
||||
1965 0097 04 .byte 0x4
|
||||
1966 0098 03 .byte 0x3
|
||||
1967 0099 35 .byte 0x35
|
||||
1967 0099 36 .byte 0x36
|
||||
1968 009a C3000000 .4byte 0xc3
|
||||
1969 009e 07 .uleb128 0x7
|
||||
1970 009f 6C030000 .4byte .LASF13
|
||||
@ -2789,7 +2789,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
1988 00c3 06 .uleb128 0x6
|
||||
1989 00c4 04 .byte 0x4
|
||||
1990 00c5 03 .byte 0x3
|
||||
1991 00c6 68 .byte 0x68
|
||||
1991 00c6 69 .byte 0x69
|
||||
1992 00c7 11010000 .4byte 0x111
|
||||
1993 00cb 07 .uleb128 0x7
|
||||
1994 00cc 57010000 .4byte .LASF19
|
||||
@ -2818,7 +2818,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2017 0102 07 .uleb128 0x7
|
||||
2018 0103 BA030000 .4byte .LASF27
|
||||
2019 0107 FA7B .sleb128 -518
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 48
|
||||
BFIN GAS /tmp/cckPfsBl.s page 48
|
||||
|
||||
|
||||
2020 0109 07 .uleb128 0x7
|
||||
@ -2828,7 +2828,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2024 0111 06 .uleb128 0x6
|
||||
2025 0112 04 .byte 0x4
|
||||
2026 0113 03 .byte 0x3
|
||||
2027 0114 79 .byte 0x79
|
||||
2027 0114 7A .byte 0x7a
|
||||
2028 0115 2C010000 .4byte 0x12c
|
||||
2029 0119 07 .uleb128 0x7
|
||||
2030 011a EF010000 .4byte .LASF29
|
||||
@ -2843,12 +2843,12 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2039 012c 08 .uleb128 0x8
|
||||
2040 012d 1010 .2byte 0x1010
|
||||
2041 012f 03 .byte 0x3
|
||||
2042 0130 8B .byte 0x8b
|
||||
2042 0130 8C .byte 0x8c
|
||||
2043 0131 8A010000 .4byte 0x18a
|
||||
2044 0135 09 .uleb128 0x9
|
||||
2045 0136 60030000 .4byte .LASF32
|
||||
2046 013a 03 .byte 0x3
|
||||
2047 013b 8C .byte 0x8c
|
||||
2047 013b 8D .byte 0x8d
|
||||
2048 013c 75000000 .4byte 0x75
|
||||
2049 0140 02 .byte 0x2
|
||||
2050 0141 23 .byte 0x23
|
||||
@ -2856,7 +2856,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2052 0143 09 .uleb128 0x9
|
||||
2053 0144 65030000 .4byte .LASF33
|
||||
2054 0148 03 .byte 0x3
|
||||
2055 0149 8D .byte 0x8d
|
||||
2055 0149 8E .byte 0x8e
|
||||
2056 014a 75000000 .4byte 0x75
|
||||
2057 014e 02 .byte 0x2
|
||||
2058 014f 23 .byte 0x23
|
||||
@ -2864,7 +2864,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2060 0151 09 .uleb128 0x9
|
||||
2061 0152 E9010000 .4byte .LASF34
|
||||
2062 0156 03 .byte 0x3
|
||||
2063 0157 8E .byte 0x8e
|
||||
2063 0157 8F .byte 0x8f
|
||||
2064 0158 8B000000 .4byte 0x8b
|
||||
2065 015c 02 .byte 0x2
|
||||
2066 015d 23 .byte 0x23
|
||||
@ -2872,18 +2872,18 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2068 015f 09 .uleb128 0x9
|
||||
2069 0160 0A040000 .4byte .LASF35
|
||||
2070 0164 03 .byte 0x3
|
||||
2071 0165 8F .byte 0x8f
|
||||
2071 0165 90 .byte 0x90
|
||||
2072 0166 80000000 .4byte 0x80
|
||||
2073 016a 02 .byte 0x2
|
||||
2074 016b 23 .byte 0x23
|
||||
2075 016c 08 .uleb128 0x8
|
||||
2076 016d 09 .uleb128 0x9
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 49
|
||||
BFIN GAS /tmp/cckPfsBl.s page 49
|
||||
|
||||
|
||||
2077 016e D2010000 .4byte .LASF36
|
||||
2078 0172 03 .byte 0x3
|
||||
2079 0173 90 .byte 0x90
|
||||
2079 0173 91 .byte 0x91
|
||||
2080 0174 8B000000 .4byte 0x8b
|
||||
2081 0178 02 .byte 0x2
|
||||
2082 0179 23 .byte 0x23
|
||||
@ -2891,7 +2891,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2084 017b 09 .uleb128 0x9
|
||||
2085 017c 88010000 .4byte .LASF37
|
||||
2086 0180 03 .byte 0x3
|
||||
2087 0181 91 .byte 0x91
|
||||
2087 0181 92 .byte 0x92
|
||||
2088 0182 8A010000 .4byte 0x18a
|
||||
2089 0186 02 .byte 0x2
|
||||
2090 0187 23 .byte 0x23
|
||||
@ -2907,17 +2907,17 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2100 019b 05 .uleb128 0x5
|
||||
2101 019c 8A000000 .4byte .LASF38
|
||||
2102 01a0 03 .byte 0x3
|
||||
2103 01a1 92 .byte 0x92
|
||||
2103 01a1 93 .byte 0x93
|
||||
2104 01a2 2C010000 .4byte 0x12c
|
||||
2105 01a6 0C .uleb128 0xc
|
||||
2106 01a7 20 .byte 0x20
|
||||
2107 01a8 03 .byte 0x3
|
||||
2108 01a9 9A .byte 0x9a
|
||||
2108 01a9 9B .byte 0x9b
|
||||
2109 01aa 1F020000 .4byte 0x21f
|
||||
2110 01ae 09 .uleb128 0x9
|
||||
2111 01af FB020000 .4byte .LASF39
|
||||
2112 01b3 03 .byte 0x3
|
||||
2113 01b4 9B .byte 0x9b
|
||||
2113 01b4 9C .byte 0x9c
|
||||
2114 01b5 8B000000 .4byte 0x8b
|
||||
2115 01b9 02 .byte 0x2
|
||||
2116 01ba 23 .byte 0x23
|
||||
@ -2925,7 +2925,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2118 01bc 0D .uleb128 0xd
|
||||
2119 01bd 72756E00 .string "run"
|
||||
2120 01c1 03 .byte 0x3
|
||||
2121 01c2 9C .byte 0x9c
|
||||
2121 01c2 9D .byte 0x9d
|
||||
2122 01c3 8B000000 .4byte 0x8b
|
||||
2123 01c7 02 .byte 0x2
|
||||
2124 01c8 23 .byte 0x23
|
||||
@ -2933,18 +2933,18 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2126 01ca 09 .uleb128 0x9
|
||||
2127 01cb DC010000 .4byte .LASF40
|
||||
2128 01cf 03 .byte 0x3
|
||||
2129 01d0 9D .byte 0x9d
|
||||
2129 01d0 9E .byte 0x9e
|
||||
2130 01d1 8B000000 .4byte 0x8b
|
||||
2131 01d5 02 .byte 0x2
|
||||
2132 01d6 23 .byte 0x23
|
||||
2133 01d7 08 .uleb128 0x8
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 50
|
||||
BFIN GAS /tmp/cckPfsBl.s page 50
|
||||
|
||||
|
||||
2134 01d8 09 .uleb128 0x9
|
||||
2135 01d9 85000000 .4byte .LASF41
|
||||
2136 01dd 03 .byte 0x3
|
||||
2137 01de 9E .byte 0x9e
|
||||
2137 01de 9F .byte 0x9f
|
||||
2138 01df 8B000000 .4byte 0x8b
|
||||
2139 01e3 02 .byte 0x2
|
||||
2140 01e4 23 .byte 0x23
|
||||
@ -2952,7 +2952,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2142 01e6 0D .uleb128 0xd
|
||||
2143 01e7 65727200 .string "err"
|
||||
2144 01eb 03 .byte 0x3
|
||||
2145 01ec 9F .byte 0x9f
|
||||
2145 01ec A0 .byte 0xa0
|
||||
2146 01ed 80000000 .4byte 0x80
|
||||
2147 01f1 02 .byte 0x2
|
||||
2148 01f2 23 .byte 0x23
|
||||
@ -2960,7 +2960,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2150 01f4 09 .uleb128 0x9
|
||||
2151 01f5 C0000000 .4byte .LASF42
|
||||
2152 01f9 03 .byte 0x3
|
||||
2153 01fa A0 .byte 0xa0
|
||||
2153 01fa A1 .byte 0xa1
|
||||
2154 01fb 8B000000 .4byte 0x8b
|
||||
2155 01ff 02 .byte 0x2
|
||||
2156 0200 23 .byte 0x23
|
||||
@ -2968,7 +2968,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2158 0202 09 .uleb128 0x9
|
||||
2159 0203 75020000 .4byte .LASF43
|
||||
2160 0207 03 .byte 0x3
|
||||
2161 0208 A1 .byte 0xa1
|
||||
2161 0208 A2 .byte 0xa2
|
||||
2162 0209 8B000000 .4byte 0x8b
|
||||
2163 020d 02 .byte 0x2
|
||||
2164 020e 23 .byte 0x23
|
||||
@ -2976,7 +2976,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2166 0210 09 .uleb128 0x9
|
||||
2167 0211 B2030000 .4byte .LASF44
|
||||
2168 0215 03 .byte 0x3
|
||||
2169 0216 A2 .byte 0xa2
|
||||
2169 0216 A3 .byte 0xa3
|
||||
2170 0217 8B000000 .4byte 0x8b
|
||||
2171 021b 02 .byte 0x2
|
||||
2172 021c 23 .byte 0x23
|
||||
@ -2985,7 +2985,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2175 021f 05 .uleb128 0x5
|
||||
2176 0220 EC030000 .4byte .LASF45
|
||||
2177 0224 03 .byte 0x3
|
||||
2178 0225 A3 .byte 0xa3
|
||||
2178 0225 A4 .byte 0xa4
|
||||
2179 0226 A6010000 .4byte 0x1a6
|
||||
2180 022a 0C .uleb128 0xc
|
||||
2181 022b 0C .byte 0xc
|
||||
@ -2998,7 +2998,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2188 0238 47 .byte 0x47
|
||||
2189 0239 8B000000 .4byte 0x8b
|
||||
2190 023d 02 .byte 0x2
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 51
|
||||
BFIN GAS /tmp/cckPfsBl.s page 51
|
||||
|
||||
|
||||
2191 023e 23 .byte 0x23
|
||||
@ -3058,7 +3058,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2245 02aa 01 .byte 0x1
|
||||
2246 02ab 57 .byte 0x57
|
||||
2247 02ac 75020000 .4byte 0x275
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 52
|
||||
BFIN GAS /tmp/cckPfsBl.s page 52
|
||||
|
||||
|
||||
2248 02b0 2B000000 .4byte .LLST1
|
||||
@ -3118,7 +3118,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2302 0334 01 .byte 0x1
|
||||
2303 0335 A101 .2byte 0x1a1
|
||||
2304 0337 1A030000 .4byte .L38
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 53
|
||||
BFIN GAS /tmp/cckPfsBl.s page 53
|
||||
|
||||
|
||||
2305 033b 1C .uleb128 0x1c
|
||||
@ -3178,7 +3178,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2359 03c0 A5 .byte 0xa5
|
||||
2360 03c1 75000000 .4byte 0x75
|
||||
2361 03c5 65030000 .4byte .LLST10
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 54
|
||||
BFIN GAS /tmp/cckPfsBl.s page 54
|
||||
|
||||
|
||||
2362 03c9 1F .uleb128 0x1f
|
||||
@ -3238,7 +3238,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2416 0443 48040000 .4byte 0x448
|
||||
2417 0447 00 .byte 0x0
|
||||
2418 0448 23 .uleb128 0x23
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 55
|
||||
BFIN GAS /tmp/cckPfsBl.s page 55
|
||||
|
||||
|
||||
2419 0449 4D040000 .4byte 0x44d
|
||||
@ -3298,7 +3298,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2473 04c7 82030000 .4byte .LASF68
|
||||
2474 04cb 01 .byte 0x1
|
||||
2475 04cc 4C .byte 0x4c
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 56
|
||||
BFIN GAS /tmp/cckPfsBl.s page 56
|
||||
|
||||
|
||||
2476 04cd D7040000 .4byte 0x4d7
|
||||
@ -3358,7 +3358,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2530 0027 00 .byte 0x0
|
||||
2531 0028 00 .byte 0x0
|
||||
2532 0029 04 .uleb128 0x4
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 57
|
||||
BFIN GAS /tmp/cckPfsBl.s page 57
|
||||
|
||||
|
||||
2533 002a 24 .uleb128 0x24
|
||||
@ -3418,7 +3418,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2587 0060 00 .byte 0x0
|
||||
2588 0061 00 .byte 0x0
|
||||
2589 0062 09 .uleb128 0x9
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 58
|
||||
BFIN GAS /tmp/cckPfsBl.s page 58
|
||||
|
||||
|
||||
2590 0063 0D .uleb128 0xd
|
||||
@ -3478,7 +3478,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2644 0099 49 .uleb128 0x49
|
||||
2645 009a 13 .uleb128 0x13
|
||||
2646 009b 38 .uleb128 0x38
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 59
|
||||
BFIN GAS /tmp/cckPfsBl.s page 59
|
||||
|
||||
|
||||
2647 009c 0A .uleb128 0xa
|
||||
@ -3538,7 +3538,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2701 00d2 40 .uleb128 0x40
|
||||
2702 00d3 06 .uleb128 0x6
|
||||
2703 00d4 01 .uleb128 0x1
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 60
|
||||
BFIN GAS /tmp/cckPfsBl.s page 60
|
||||
|
||||
|
||||
2704 00d5 13 .uleb128 0x13
|
||||
@ -3598,7 +3598,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2758 010b 01 .uleb128 0x1
|
||||
2759 010c 40 .uleb128 0x40
|
||||
2760 010d 06 .uleb128 0x6
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 61
|
||||
BFIN GAS /tmp/cckPfsBl.s page 61
|
||||
|
||||
|
||||
2761 010e 01 .uleb128 0x1
|
||||
@ -3658,7 +3658,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2815 0144 06 .uleb128 0x6
|
||||
2816 0145 00 .byte 0x0
|
||||
2817 0146 00 .byte 0x0
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 62
|
||||
BFIN GAS /tmp/cckPfsBl.s page 62
|
||||
|
||||
|
||||
2818 0147 1A .uleb128 0x1a
|
||||
@ -3718,7 +3718,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2872 017d 13 .uleb128 0x13
|
||||
2873 017e 2F .uleb128 0x2f
|
||||
2874 017f 0B .uleb128 0xb
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 63
|
||||
BFIN GAS /tmp/cckPfsBl.s page 63
|
||||
|
||||
|
||||
2875 0180 00 .byte 0x0
|
||||
@ -3778,7 +3778,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2929 01b6 49 .uleb128 0x49
|
||||
2930 01b7 13 .uleb128 0x13
|
||||
2931 01b8 1C .uleb128 0x1c
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 64
|
||||
BFIN GAS /tmp/cckPfsBl.s page 64
|
||||
|
||||
|
||||
2932 01b9 0B .uleb128 0xb
|
||||
@ -3838,7 +3838,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
2986 000a EA040000 .4byte 0x4ea
|
||||
2987 000e 8C020000 .4byte 0x28c
|
||||
2988 0012 6C353032 .string "l502_cmd_test"
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 65
|
||||
BFIN GAS /tmp/cckPfsBl.s page 65
|
||||
|
||||
|
||||
2988 5F636D64
|
||||
@ -3898,7 +3898,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3040 0090 00000000 .4byte 0x0
|
||||
3041 0094 00000000 .4byte 0x0
|
||||
3042 .section .debug_str,"MS",@progbits,1
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 66
|
||||
BFIN GAS /tmp/cckPfsBl.s page 66
|
||||
|
||||
|
||||
3043 .LASF46:
|
||||
@ -3958,7 +3958,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3068 20696E74
|
||||
3068 00
|
||||
3069 .LASF21:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 67
|
||||
BFIN GAS /tmp/cckPfsBl.s page 67
|
||||
|
||||
|
||||
3070 00a1 4C353032 .string "L502_BF_ERR_UNSUP_CMD"
|
||||
@ -4018,7 +4018,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3091 .LASF50:
|
||||
3092 017d 665F7370 .string "f_spi_test"
|
||||
3092 695F7465
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 68
|
||||
BFIN GAS /tmp/cckPfsBl.s page 68
|
||||
|
||||
|
||||
3092 737400
|
||||
@ -4078,7 +4078,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3116 0236 4C353032 .string "L502_BF_CMD_TEST_GET_RESULT"
|
||||
3116 5F42465F
|
||||
3116 434D445F
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 69
|
||||
BFIN GAS /tmp/cckPfsBl.s page 69
|
||||
|
||||
|
||||
3116 54455354
|
||||
@ -4138,7 +4138,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3145 .LASF54:
|
||||
3146 02d4 665F7370 .string "f_sport_test"
|
||||
3146 6F72745F
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 70
|
||||
BFIN GAS /tmp/cckPfsBl.s page 70
|
||||
|
||||
|
||||
3146 74657374
|
||||
@ -4198,7 +4198,7 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3170 73745F70
|
||||
3170 61727300
|
||||
3171 .LASF16:
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 71
|
||||
BFIN GAS /tmp/cckPfsBl.s page 71
|
||||
|
||||
|
||||
3172 038e 4C353032 .string "L502_BF_CMD_TEST_SPORT"
|
||||
@ -4248,19 +4248,19 @@ BFIN GAS /tmp/cc0Jz34x.s page 1
|
||||
3190 434D445F
|
||||
3190 4F564552
|
||||
3191 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/cc0Jz34x.s page 72
|
||||
BFIN GAS /tmp/cckPfsBl.s page 72
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/l502_tests.c
|
||||
/tmp/cc0Jz34x.s:13 .text:0000000000000000 _l502_cmd_test
|
||||
/tmp/cc0Jz34x.s:1308 .data:0000000000000000 _f_cur_test_ind
|
||||
/tmp/cc0Jz34x.s:1314 .rodata:0000000000000000 _f_test_pars
|
||||
/tmp/cc0Jz34x.s:1330 .bss:0000000000001000 _f_test_res
|
||||
/tmp/cc0Jz34x.s:395 .text:000000000000023c _f_spi_test
|
||||
/tmp/cc0Jz34x.s:498 .text:00000000000002c0 _f_sdram_test
|
||||
/tmp/cc0Jz34x.s:1104 .text:00000000000005fc _f_sport_test
|
||||
/tmp/cc0Jz34x.s:1328 .bss:0000000000000000 _rx_buf.2224
|
||||
/tmp/cckPfsBl.s:13 .text:0000000000000000 _l502_cmd_test
|
||||
/tmp/cckPfsBl.s:1308 .data:0000000000000000 _f_cur_test_ind
|
||||
/tmp/cckPfsBl.s:1314 .rodata:0000000000000000 _f_test_pars
|
||||
/tmp/cckPfsBl.s:1330 .bss:0000000000001000 _f_test_res
|
||||
/tmp/cckPfsBl.s:395 .text:000000000000023c _f_spi_test
|
||||
/tmp/cckPfsBl.s:498 .text:00000000000002c0 _f_sdram_test
|
||||
/tmp/cckPfsBl.s:1104 .text:00000000000005fc _f_sport_test
|
||||
/tmp/cckPfsBl.s:1328 .bss:0000000000000000 _rx_buf.2224
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
_g_mode
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 1
|
||||
|
||||
|
||||
1 .file "src/main.c";
|
||||
@ -31,8 +31,8 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
9:src/main.c ****
|
||||
10:src/main.c **** void stream_proc(void);
|
||||
11:src/main.c ****
|
||||
12:src/main.c **** /* g_state <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
13:src/main.c **** * <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> A <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
12:src/main.c **** /* g_state описывает область памяти, расположенную по фикс
|
||||
13:src/main.c **** * Для расположения в начало банка A данных используем <20>
|
||||
14:src/main.c **** SECTION("board_state", volatile t_l502_board_state g_state);
|
||||
15:src/main.c ****
|
||||
16:src/main.c ****
|
||||
@ -40,25 +40,25 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
16 .loc 1 17 0
|
||||
17 0000 00E80300 LINK 12;
|
||||
18 .LCFI0:
|
||||
18:src/main.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
18:src/main.c **** /* Инициализация интерфейсов */
|
||||
19:src/main.c **** l502_init();
|
||||
19 .loc 1 19 0
|
||||
20 0004 FFE3FEFF call _l502_init;
|
||||
21 .L2:
|
||||
20:src/main.c ****
|
||||
21:src/main.c **** for (;;) {
|
||||
22:src/main.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
23:src/main.c **** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
22:src/main.c **** /* проверяем наличие команды от ПК и начинаяем
|
||||
23:src/main.c **** обработку, если она есть */
|
||||
24:src/main.c **** l502_cmd_check_req();
|
||||
22 .loc 1 24 0
|
||||
23 0008 FFE3FCFF call _l502_cmd_check_req;
|
||||
25:src/main.c **** /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
25:src/main.c **** /* обработка потоков данных */
|
||||
26:src/main.c **** stream_proc();
|
||||
24 .loc 1 26 0
|
||||
25 000c FFE3FAFF call _stream_proc;
|
||||
26 0010 FC2F jump.s .L2;
|
||||
27 .LFE2:
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 2
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 2
|
||||
|
||||
|
||||
28 .size _main, .-_main
|
||||
@ -118,7 +118,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
78 000f 12000000 .4byte .LFE2-.Ltext0
|
||||
79 0013 0200 .2byte 0x2
|
||||
80 0015 7F .byte 0x7f
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 3
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 3
|
||||
|
||||
|
||||
81 0016 08 .sleb128 8
|
||||
@ -178,7 +178,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
135 0069 02 .uleb128 0x2
|
||||
136 006a 04 .byte 0x4
|
||||
137 006b 07 .byte 0x7
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 4
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 4
|
||||
|
||||
|
||||
138 006c 92010000 .4byte .LASF8
|
||||
@ -201,12 +201,12 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
155 008c 05 .uleb128 0x5
|
||||
156 008d 1010 .2byte 0x1010
|
||||
157 008f 03 .byte 0x3
|
||||
158 0090 8B .byte 0x8b
|
||||
158 0090 8C .byte 0x8c
|
||||
159 0091 EA000000 .4byte 0xea
|
||||
160 0095 06 .uleb128 0x6
|
||||
161 0096 ED000000 .4byte .LASF12
|
||||
162 009a 03 .byte 0x3
|
||||
163 009b 8C .byte 0x8c
|
||||
163 009b 8D .byte 0x8d
|
||||
164 009c 3A000000 .4byte 0x3a
|
||||
165 00a0 02 .byte 0x2
|
||||
166 00a1 23 .byte 0x23
|
||||
@ -214,7 +214,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
168 00a3 06 .uleb128 0x6
|
||||
169 00a4 0B010000 .4byte .LASF13
|
||||
170 00a8 03 .byte 0x3
|
||||
171 00a9 8D .byte 0x8d
|
||||
171 00a9 8E .byte 0x8e
|
||||
172 00aa 3A000000 .4byte 0x3a
|
||||
173 00ae 02 .byte 0x2
|
||||
174 00af 23 .byte 0x23
|
||||
@ -222,7 +222,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
176 00b1 06 .uleb128 0x6
|
||||
177 00b2 F2000000 .4byte .LASF14
|
||||
178 00b6 03 .byte 0x3
|
||||
179 00b7 8E .byte 0x8e
|
||||
179 00b7 8F .byte 0x8f
|
||||
180 00b8 5E000000 .4byte 0x5e
|
||||
181 00bc 02 .byte 0x2
|
||||
182 00bd 23 .byte 0x23
|
||||
@ -230,7 +230,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
184 00bf 06 .uleb128 0x6
|
||||
185 00c0 06000000 .4byte .LASF15
|
||||
186 00c4 03 .byte 0x3
|
||||
187 00c5 8F .byte 0x8f
|
||||
187 00c5 90 .byte 0x90
|
||||
188 00c6 4C000000 .4byte 0x4c
|
||||
189 00ca 02 .byte 0x2
|
||||
190 00cb 23 .byte 0x23
|
||||
@ -238,10 +238,10 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
192 00cd 06 .uleb128 0x6
|
||||
193 00ce 7C000000 .4byte .LASF16
|
||||
194 00d2 03 .byte 0x3
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 5
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 5
|
||||
|
||||
|
||||
195 00d3 90 .byte 0x90
|
||||
195 00d3 91 .byte 0x91
|
||||
196 00d4 5E000000 .4byte 0x5e
|
||||
197 00d8 02 .byte 0x2
|
||||
198 00d9 23 .byte 0x23
|
||||
@ -249,7 +249,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
200 00db 06 .uleb128 0x6
|
||||
201 00dc 2A010000 .4byte .LASF17
|
||||
202 00e0 03 .byte 0x3
|
||||
203 00e1 91 .byte 0x91
|
||||
203 00e1 92 .byte 0x92
|
||||
204 00e2 EA000000 .4byte 0xea
|
||||
205 00e6 02 .byte 0x2
|
||||
206 00e7 23 .byte 0x23
|
||||
@ -268,7 +268,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
219 00fe 03 .uleb128 0x3
|
||||
220 00ff 6E000000 .4byte .LASF18
|
||||
221 0103 03 .byte 0x3
|
||||
222 0104 92 .byte 0x92
|
||||
222 0104 93 .byte 0x93
|
||||
223 0105 8C000000 .4byte 0x8c
|
||||
224 0109 0A .uleb128 0xa
|
||||
225 010a 20 .byte 0x20
|
||||
@ -298,7 +298,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
249 0134 AB010000 .4byte 0x1ab
|
||||
250 0138 02 .byte 0x2
|
||||
251 0139 23 .byte 0x23
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 6
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 6
|
||||
|
||||
|
||||
252 013a 08 .uleb128 0x8
|
||||
@ -358,7 +358,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
306 0199 02 .byte 0x2
|
||||
307 019a 23 .byte 0x23
|
||||
308 019b 1A .uleb128 0x1a
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 7
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 7
|
||||
|
||||
|
||||
309 019c 06 .uleb128 0x6
|
||||
@ -418,7 +418,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
363 01fb 07 .uleb128 0x7
|
||||
364 01fc AD010000 .4byte 0x1ad
|
||||
365 0200 0B020000 .4byte 0x20b
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 8
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 8
|
||||
|
||||
|
||||
366 0204 0D .uleb128 0xd
|
||||
@ -478,7 +478,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
420 026f 00000000 .4byte _g_state
|
||||
421 0273 10 .uleb128 0x10
|
||||
422 0274 3D020000 .4byte 0x23d
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 9
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 9
|
||||
|
||||
|
||||
423 0278 00 .byte 0x0
|
||||
@ -538,7 +538,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
477 0034 00 .byte 0x0
|
||||
478 0035 00 .byte 0x0
|
||||
479 0036 05 .uleb128 0x5
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 10
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 10
|
||||
|
||||
|
||||
480 0037 13 .uleb128 0x13
|
||||
@ -598,7 +598,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
534 006d 0A .uleb128 0xa
|
||||
535 006e 13 .uleb128 0x13
|
||||
536 006f 01 .byte 0x1
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 11
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 11
|
||||
|
||||
|
||||
537 0070 0B .uleb128 0xb
|
||||
@ -658,7 +658,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
591 00a6 49 .uleb128 0x49
|
||||
592 00a7 13 .uleb128 0x13
|
||||
593 00a8 11 .uleb128 0x11
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 12
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 12
|
||||
|
||||
|
||||
594 00a9 01 .uleb128 0x1
|
||||
@ -718,7 +718,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
646 0018 00000000 .4byte 0x0
|
||||
647 001c 00000000 .4byte 0x0
|
||||
648 .section .debug_str,"MS",@progbits,1
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 13
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 13
|
||||
|
||||
|
||||
649 .LASF27:
|
||||
@ -778,7 +778,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
678 6500
|
||||
679 .LASF1:
|
||||
680 0086 756E7369 .string "unsigned char"
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 14
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 14
|
||||
|
||||
|
||||
680 676E6564
|
||||
@ -838,7 +838,7 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
706 0118 78636E74 .string "xcnt"
|
||||
706 00
|
||||
707 .LASF5:
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 15
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 15
|
||||
|
||||
|
||||
708 011d 696E7433 .string "int32_t"
|
||||
@ -887,13 +887,13 @@ BFIN GAS /tmp/ccQKVwPF.s page 1
|
||||
728 6D61696E
|
||||
728 2E6300
|
||||
729 .ident "GCC: (ADI-2014R1-RC2) 4.3.5"
|
||||
BFIN GAS /tmp/ccQKVwPF.s page 16
|
||||
BFIN GAS /tmp/ccaL3Mci.s page 16
|
||||
|
||||
|
||||
DEFINED SYMBOLS
|
||||
*ABS*:0000000000000000 src/main.c
|
||||
/tmp/ccQKVwPF.s:13 .text:0000000000000000 _main
|
||||
/tmp/ccQKVwPF.s:34 board_state:0000000000000000 _g_state
|
||||
/tmp/ccaL3Mci.s:13 .text:0000000000000000 _main
|
||||
/tmp/ccaL3Mci.s:34 board_state:0000000000000000 _g_state
|
||||
|
||||
UNDEFINED SYMBOLS
|
||||
_l502_init
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,8 +2,8 @@
|
||||
@addtogroup async_io
|
||||
@{
|
||||
@file l502_async.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
Файл содержит реализацию функций для асинхронного ввода/вывода
|
||||
(пока только вывода)
|
||||
******************************************************************************/
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @defgroup async_io <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @defgroup async_io Асинхронный ввод-вывод */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup async_io
|
||||
@{
|
||||
@file l502_async.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Файл содержит описания функций асинхронного ввода-вывода
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef L502_ASYNC_H_
|
||||
@ -13,30 +13,30 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> async_dac_out() */
|
||||
/** Первый канал ЦАП при выводе через async_dac_out() */
|
||||
#define L502_DAC_CH1 0
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> async_dac_out() */
|
||||
/** Второй канал ЦАП при выводе через async_dac_out() */
|
||||
#define L502_DAC_CH2 1
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
@brief Асинхронный вывод на один из каналов ЦАП
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||||
@param[in] ch <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> (#L502_DAC_CH1 <EFBFBD><EFBFBD><EFBFBD> #L502_DAC_CH2)
|
||||
@param[in] val <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16 <EFBFBD><EFBFBD><EFBFBD>)
|
||||
Функция выполняет асинхронный вывод кода на ЦАП
|
||||
@param[in] ch Канал ЦАП (#L502_DAC_CH1 или #L502_DAC_CH2)
|
||||
@param[in] val Код ЦАП (действительны только младшие 16 бит)
|
||||
******************************************************************************/
|
||||
void async_dac_out(uint8_t ch, int32_t val);
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
@brief Асинхронный вывод на цифровые линии
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] val <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0-15 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 3-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
Функция выполняет асинхронный вывод кода на цифровые линии с возможностью указать
|
||||
линии, которые не должны изменяться
|
||||
@param[in] val биты 0-15 - значения линий на вывод + возможно перевести
|
||||
половину портов в 3-е состояние с помощью флагов из
|
||||
#t_l502_digout_word_flags
|
||||
@param[in] msk <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> val <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] msk Если в маске установлены некоторые биты, то соответствующие
|
||||
биты из val не влияют, а сохраняются предыдущие значения
|
||||
******************************************************************************/
|
||||
void async_dout(uint32_t val, uint32_t msk);
|
||||
|
||||
|
||||
@ -1,165 +1,166 @@
|
||||
/*********************************************************************//**
|
||||
@addtogroup cmd_process
|
||||
@{
|
||||
@file l502_bf_cmd_defs.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> DSP
|
||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
@file l502_bf_cmd_defs.h Файл содержит определения,
|
||||
которые используются для передачи команд от ПК в DSP
|
||||
(определения команд, их параметров, результатов выполнения)
|
||||
@date 28.03.2012
|
||||
@author Borisov Alexey <borisov@lcard.ru>
|
||||
*************************************************************************/
|
||||
#ifndef L502_BF_CMD_DEFS_H_
|
||||
#define L502_BF_CMD_DEFS_H_
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Максимальный размер данных, передавемых с командой в 32-битных словах */
|
||||
#define L502_BF_CMD_DATA_SIZE_MAX (1024)
|
||||
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Статус команд управления сигнальным процессором */
|
||||
typedef enum {
|
||||
L502_BF_CMD_STATUS_IDLE = 0x0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
L502_BF_CMD_STATUS_REQ = 0x5A01, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>*/
|
||||
L502_BF_CMD_STATUS_PROGRESS = 0x5A02, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_STATUS_DONE = 0x5A03 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> ret_code */
|
||||
L502_BF_CMD_STATUS_IDLE = 0x0, /**< Начальное состояние (команда вообщен не выполнялась) */
|
||||
L502_BF_CMD_STATUS_REQ = 0x5A01, /**< Передан запрос на обработку команды от ПК*/
|
||||
L502_BF_CMD_STATUS_PROGRESS = 0x5A02, /**< Сигнальный процессор начал обработку команды */
|
||||
L502_BF_CMD_STATUS_DONE = 0x5A03 /**< Команда выполнена. Результат выполнения в поле ret_code */
|
||||
} t_l502_bf_cmd_status;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Коды команд управления сигнальным процессором */
|
||||
typedef enum {
|
||||
L502_BF_CMD_CODE_TEST = 0x01, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
L502_BF_CMD_CODE_SET_PARAM = 0x02, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> param) */
|
||||
L502_BF_CMD_CODE_GET_PARAM = 0x03, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_CONFIGURE = 0x04, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_STREAM_EN = 0x05, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_STREAM_DIS = 0x06, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_STREAM_START = 0x07, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_STREAM_STOP = 0x08, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_PRELOAD = 0x09, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> */
|
||||
L502_BF_CMD_CODE_ASYNC_OUT = 0x10, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
L502_BF_CMD_CODE_ASYNC_DIG_IN = 0x11, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_ADC_GET_FRAME = 0x12, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_CMD_CODE_FPGA_REG_WR = 0x13, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPGA (param --- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, data0 --- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
L502_BF_CMD_CODE_FPGA_REG_RD = 0x14, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPGA (param --- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>: resp0 --- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
L502_BF_CMD_CODE_GET_OUT_STATUS= 0x15, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_CODE_TEST = 0x01, /**< Запуск теста (параметр определяет тип теста) */
|
||||
L502_BF_CMD_CODE_SET_PARAM = 0x02, /**< Установить параметр (код параметра в поле param) */
|
||||
L502_BF_CMD_CODE_GET_PARAM = 0x03, /**< Прочитать текущее значение параметра */
|
||||
L502_BF_CMD_CODE_CONFIGURE = 0x04, /**< Сконфигурировать модуль в соответствии с ранее установленными параметрами */
|
||||
L502_BF_CMD_CODE_STREAM_EN = 0x05, /**< Разрешение потоков ввода/вывода */
|
||||
L502_BF_CMD_CODE_STREAM_DIS = 0x06, /**< Запрещение потоков ввода/вывода */
|
||||
L502_BF_CMD_CODE_STREAM_START = 0x07, /**< Запуск потоков ввода/вывода */
|
||||
L502_BF_CMD_CODE_STREAM_STOP = 0x08, /**< Останов потоков ввода/вывода */
|
||||
L502_BF_CMD_CODE_PRELOAD = 0x09, /**< Предзагрузка данных на ЦАП */
|
||||
L502_BF_CMD_CODE_ASYNC_OUT = 0x10, /**< Асинхронный вывод (куда - зависит от параметра) */
|
||||
L502_BF_CMD_CODE_ASYNC_DIG_IN = 0x11, /**< Асинхронный ввод с цифровых линий */
|
||||
L502_BF_CMD_CODE_ADC_GET_FRAME = 0x12, /**< Асинхронный ввод карда АЦП */
|
||||
L502_BF_CMD_CODE_FPGA_REG_WR = 0x13, /**< Запись в регистр FPGA (param --- адрес регистра, data0 --- значение) */
|
||||
L502_BF_CMD_CODE_FPGA_REG_RD = 0x14, /**< Чтение из регистра FPGA (param --- адрес регистра, ответ: resp0 --- значение) */
|
||||
L502_BF_CMD_CODE_GET_OUT_STATUS= 0x15, /**< Получение флагов статуса вывода */
|
||||
} t_l502_bf_cmd_code;
|
||||
|
||||
#define L502_BF_CMD_CODE_USER 0x8000U /**< <EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define L502_BF_CMD_CODE_USER 0x8000U /**< Код, с которого начинаются пользовательские команды */
|
||||
#define BF_CMD_USER_MULT 0x8001U
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Варианты тестов
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_BF_CMD_CODE_TEST */
|
||||
Коды тестов, передающиеся в параметре команды #L502_BF_CMD_CODE_TEST */
|
||||
typedef enum {
|
||||
L502_BF_CMD_TEST_STOP = 0x00, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_TEST_GET_RESULT = 0x01, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_TEST_ECHO = 0x10, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_TEST_SPORT = 0x11, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_TEST_SDRAM = 0x12, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_TEST_SPI = 0x13 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI */
|
||||
L502_BF_CMD_TEST_STOP = 0x00, /**< Останов выполняемого теста */
|
||||
L502_BF_CMD_TEST_GET_RESULT = 0x01, /**< Получение результата теста */
|
||||
L502_BF_CMD_TEST_ECHO = 0x10, /**< Тест эхо - возвращает те же данные что передавались */
|
||||
L502_BF_CMD_TEST_SPORT = 0x11, /**< Тест интерфейса SPORT в кольцевом режиме */
|
||||
L502_BF_CMD_TEST_SDRAM = 0x12, /**< Тест SDRAM памяти */
|
||||
L502_BF_CMD_TEST_SPI = 0x13 /**< Тест интерфейса SPI */
|
||||
} t_l502_bf_test_code;
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Устанавливаемые параметры
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_BF_CMD_CODE_SET_PARAM <EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_BF_CMD_CODE_GET_PARAM */
|
||||
Коды пареметров, устанавливаемых командой #L502_BF_CMD_CODE_SET_PARAM или
|
||||
получаемых с помщью команды #L502_BF_CMD_CODE_GET_PARAM */
|
||||
typedef enum {
|
||||
L502_BF_PARAM_FIRM_VERSION = 0x00, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 4 <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_STREAM_MODE = 0x01, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>) */
|
||||
L502_BF_PARAM_ENABLED_STREAMS = 0x02, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_MODULE_INFO = 0x03, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_IN_BUF_SIZE = 0x10, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_CYCLE_BUF_SIZE = 0x11, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_LCH_CNT = 0x20, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_LCH = 0x21, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_ADC_FREQ_DIV = 0x22, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_PARAM_REF_FREQ_SRC = 0x23, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_ADC_FRAME_DELAY = 0x24, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_SYNC_MODE = 0x25, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_SYNC_START_MODE = 0x26, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_ADC_COEF = 0x27, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_PARAM_DAC_COEF = 0x28, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_PARAM_DIN_FREQ_DIV = 0x30, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_DAC_FREQ_DIV = 0x31, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> */
|
||||
L502_BF_PARAM_IN_STEP_SIZE = 0x32, /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_IN_STREAM_MODE = 0x100 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
L502_BF_PARAM_FIRM_VERSION = 0x00, /**< Версия прошивки - 4 байта */
|
||||
L502_BF_PARAM_STREAM_MODE = 0x01, /**< Режим работы (запущен поток или нет) */
|
||||
L502_BF_PARAM_ENABLED_STREAMS = 0x02, /**< Какие потоки разрешены */
|
||||
L502_BF_PARAM_MODULE_INFO = 0x03, /**< Запись информации о модуле */
|
||||
L502_BF_PARAM_IN_BUF_SIZE = 0x10, /**< Размер буфера на преием */
|
||||
L502_BF_PARAM_CYCLE_BUF_SIZE = 0x11, /**< Размер буфера для записи циклического сигнала */
|
||||
L502_BF_PARAM_LCH_CNT = 0x20, /**< Количество логических каналов в таблице */
|
||||
L502_BF_PARAM_LCH = 0x21, /**< Параметры логического канала */
|
||||
L502_BF_PARAM_ADC_FREQ_DIV = 0x22, /**< Делитель частоты АЦП */
|
||||
L502_BF_PARAM_REF_FREQ_SRC = 0x23, /**< Выбор опорной частоты */
|
||||
L502_BF_PARAM_ADC_FRAME_DELAY = 0x24, /**< Значение межкадровой задержки */
|
||||
L502_BF_PARAM_SYNC_MODE = 0x25, /**< Режим синхронизации */
|
||||
L502_BF_PARAM_SYNC_START_MODE = 0x26, /**< Условие запуска синхронных потоков сбора данных */
|
||||
L502_BF_PARAM_ADC_COEF = 0x27, /**< Установка коэффициентов для заданного диапазона АЦП */
|
||||
L502_BF_PARAM_DAC_COEF = 0x28, /**< Установка коэффициентов для заданного канала ЦАП */
|
||||
L502_BF_PARAM_DIN_FREQ_DIV = 0x30, /**< Делитель частоты цифрового ввода */
|
||||
L502_BF_PARAM_DAC_FREQ_DIV = 0x31, /**< Делитель частоты вывода на ЦАП */
|
||||
L502_BF_PARAM_IN_STEP_SIZE = 0x32, /**< Шаг для обработки входных данных */
|
||||
L502_BF_PARAM_IN_STREAM_MODE = 0x100 /**< Режим работы потока на ввод */
|
||||
} t_l502_bf_params;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Тип асинхронного вывода
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_BF_CMD_CODE_ASYNC_OUT,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Код, задающий в параметре команды команды #L502_BF_CMD_CODE_ASYNC_OUT,
|
||||
куда должно выводится передаваемое значение */
|
||||
typedef enum {
|
||||
L502_BF_CMD_ASYNC_TYPE_DOUT = 0x0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_CMD_ASYNC_TYPE_DAC1 = 0x1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_CMD_ASYNC_TYPE_DAC2 = 0x2 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_BF_CMD_ASYNC_TYPE_DOUT = 0x0, /**< Вывод на цифровые линии */
|
||||
L502_BF_CMD_ASYNC_TYPE_DAC1 = 0x1, /**< Вывод на первый канал ЦАП */
|
||||
L502_BF_CMD_ASYNC_TYPE_DAC2 = 0x2 /**< Вывод на второй канал ЦАП */
|
||||
} t_l502_bf_cmd_async_type;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Коды завершения команд */
|
||||
typedef enum {
|
||||
L502_BF_ERR_SUCCESS = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_FIRST_CODE = -512, /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_UNSUP_CMD = -512, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_CMD_OVERRUN = -513, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_INVALID_CMD_PARAMS = -514, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_INSUF_CMD_DATA = -515, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_STREAM_RUNNING = -516, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_STREAM_STOPPED = -517, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_NO_TEST_IN_PROGR = -518, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_TEST_VALUE = -519 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_ERR_SUCCESS = 0, /**< Команда выполнена успешно */
|
||||
L502_BF_ERR_FIRST_CODE = -512, /**< Код ошибки, с которого начинаются отсальные коды.
|
||||
Используется, чтобы разделить на верхнем уровне ошибки библиотеки и
|
||||
возвращенные сигнальным процессором */
|
||||
L502_BF_ERR_UNSUP_CMD = -512, /**< Неизвестный код команды */
|
||||
L502_BF_ERR_CMD_OVERRUN = -513, /**< Пришла команда до того, как была завершена предыдущая */
|
||||
L502_BF_ERR_INVALID_CMD_PARAMS = -514, /**< Неверное значение параметра команды */
|
||||
L502_BF_ERR_INSUF_CMD_DATA = -515, /**< Недостаточное кол-во данных передано с командой */
|
||||
L502_BF_ERR_STREAM_RUNNING = -516, /**< Команда не допустима при запущеном сборе, а сбор запущен */
|
||||
L502_BF_ERR_STREAM_STOPPED = -517, /**< Команда допустима только при запущеном сборе, а сбор остановлен */
|
||||
L502_BF_ERR_NO_TEST_IN_PROGR = -518, /**< Сейчас не выполняется никакого теста */
|
||||
L502_BF_ERR_TEST_VALUE = -519 /**< Считано неверное значение при выполнении теста */
|
||||
} t_l502_bf_err_code;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Режим работы сигнального процессора */
|
||||
typedef enum {
|
||||
L502_BF_MODE_IDLE = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_MODE_STREAM = 1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_MODE_TEST = 2 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_BF_MODE_IDLE = 0, /**< Ждущий режим, поток не запущен */
|
||||
L502_BF_MODE_STREAM = 1, /**< Запущены потоки ввода-вывода */
|
||||
L502_BF_MODE_TEST = 2 /**< Тестовый режим */
|
||||
} t_l502_bf_mode;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> blackfin */
|
||||
/** Возможности, поддерживаемые прошивкой blackfin */
|
||||
typedef enum {
|
||||
L502_BF_FEATURE_FPGA_REG_ACCESS = 0x1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPGA */
|
||||
L502_BF_FEATURE_OUT_STATUS_FLAGS = 0x2 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
L502_BF_FEATURE_FPGA_REG_ACCESS = 0x1, /**< Признак, что реализованы команды
|
||||
прямого доступа к регистрам FPGA */
|
||||
L502_BF_FEATURE_OUT_STATUS_FLAGS = 0x2 /**< Признак, что реализована команда
|
||||
#L502_BF_CMD_CODE_GET_OUT_STATUS */
|
||||
} t_l502_bf_features;
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Параметры команды
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Структура описывает расположение полей в области памяти BlackFin, используемой
|
||||
для передачи команд между персональным компьютером и сигнальным процессором */
|
||||
typedef struct {
|
||||
uint16_t code; /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_bf_cmd_code */
|
||||
uint16_t status; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t param; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
int32_t result; /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t data_size; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t data[L502_BF_CMD_DATA_SIZE_MAX]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>/<2F><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t code; /**< Код команды из #t_l502_bf_cmd_code */
|
||||
uint16_t status; /**< Статус выполнения - в обработчике не изменяется */
|
||||
uint32_t param; /**< Параметр команды */
|
||||
int32_t result; /**< Код результата выполнения команды */
|
||||
uint32_t data_size; /**< Количество данных, переданных с командой или возвращенных с ответом в 32-битных словах */
|
||||
uint32_t data[L502_BF_CMD_DATA_SIZE_MAX]; /**< Данные, передаваемые с командой и/или в качестве результата */
|
||||
} t_l502_bf_cmd;
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Результат выполнения теста
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_BF_CMD_CODE_TEST <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Структура описывает параметры выполняемого теста, возвращаемые в качестве
|
||||
данных на команду #L502_BF_CMD_CODE_TEST с параметром
|
||||
#L502_BF_CMD_TEST_GET_RESULT */
|
||||
typedef struct {
|
||||
uint32_t test; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t run; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
uint32_t stage; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t cntr; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
int32_t err; /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t last_addr; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t last_wr; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t last_rd; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t test; /**< Номер выполняемого теста */
|
||||
uint32_t run; /**< Признак, запущен ли сейчас тест */
|
||||
uint32_t stage; /**< Этап выполнения теста */
|
||||
uint32_t cntr; /**< Счетчик - сколько раз прошел тест */
|
||||
int32_t err; /**< Код ошибки выполнения теста */
|
||||
uint32_t last_addr; /**< Последний используемый адрес */
|
||||
uint32_t last_wr; /**< Последнее записанное значение */
|
||||
uint32_t last_rd; /**< Последнее считанное значение */
|
||||
} t_l502_bf_test_res;
|
||||
|
||||
/** @} */
|
||||
|
||||
@ -1,32 +1,32 @@
|
||||
/** @file l502_cdefs.h
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (VisualDSP <EFBFBD><EFBFBD><EFBFBD> GCC) */
|
||||
Файл определяет набор макросов для выполнения операций, зависящий от
|
||||
компилятора (VisualDSP или GCC) */
|
||||
|
||||
#ifndef L502_CDEFS_H
|
||||
#define L502_CDEFS_H
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Макрос для помещения переменной или функции в определенную секцию */
|
||||
#ifdef __GNUC__
|
||||
#define SECTION(sect, member) member __attribute__((section(sect)))
|
||||
#else
|
||||
#define SECTION(sect, member) section(sect) member
|
||||
#endif
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM */
|
||||
/** Марос для помещения переменной в неинициализируемую область SDRAM */
|
||||
#ifdef __GNUC__
|
||||
#define MEM_SDRAM_NOINIT(variable) SECTION(".sdram_noinit", variable)
|
||||
#else
|
||||
#define MEM_SDRAM_NOINIT(variable) section("sdram_noinit", NO_INIT) variable
|
||||
#endif
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Макрос для описания обработчика прерываний */
|
||||
#ifdef __GNUC__
|
||||
#define ISR(handler) __attribute__((interrupt_handler,nesting)) void handler(void)
|
||||
#else
|
||||
#define ISR(handler) EX_INTERRUPT_HANDLER(handler)
|
||||
#endif
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Макрос для регистрации обработчика прерываний */
|
||||
#ifdef __GNUC__
|
||||
#define REGISTER_ISR(ivg, isr) do { \
|
||||
int i=0; \
|
||||
|
||||
@ -2,12 +2,12 @@
|
||||
@addtogroup cmd_process
|
||||
@{
|
||||
@file l502_cmd.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
HostDMA <EFBFBD> BlackFin.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> f_cmd_tbl <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> usr_cmd_process().
|
||||
Файл содержит логику обработки команд от ПК, переданных через
|
||||
HostDMA в BlackFin.
|
||||
Для каждого кода команды в таблице f_cmd_tbl задана функция для
|
||||
обработки команды. Если в таблице код команды не найден,
|
||||
то возвращается ошибка. Для пользовательских команд
|
||||
всегда вызывается usr_cmd_process().
|
||||
*******************************************************************************/
|
||||
|
||||
#include "l502_global.h"
|
||||
@ -41,7 +41,7 @@ static void f_cmd_fpga_reg_rd(t_l502_bf_cmd *cmd);
|
||||
static void f_cmd_get_out_status(t_l502_bf_cmd *cmd);
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* Тип, описывающий функцию обработки конкретной команды */
|
||||
typedef void (*t_cmd_func)(t_l502_bf_cmd* cmd);
|
||||
|
||||
static const uint32_t f_regaddr_k[L502_ADC_RANGE_CNT] = {L502_REGS_IOARITH_K10,
|
||||
@ -61,7 +61,7 @@ static const uint32_t f_regaddr_offs[L502_ADC_RANGE_CNT] = {L502_REGS_IOARITH_B1
|
||||
|
||||
|
||||
static volatile uint8_t f_cmd_req=0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* таблица с соответствием кодов команд и функций для их выполнения */
|
||||
static const struct {
|
||||
uint32_t cmd_code;
|
||||
t_cmd_func start;
|
||||
@ -205,9 +205,9 @@ static void f_cmd_get_out_status(t_l502_bf_cmd *cmd) {
|
||||
}
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> cmd->param, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> cmd->data
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* Установка различных параметров.
|
||||
Код параметра определяется по cmd->param, значение берется из cmd->data
|
||||
в соответствии с параметром */
|
||||
static void f_cmd_set_param(t_l502_bf_cmd *cmd) {
|
||||
int32_t err = g_mode != L502_BF_MODE_IDLE ? L502_BF_ERR_STREAM_RUNNING :
|
||||
cmd->data_size < 1 ? L502_BF_ERR_INSUF_CMD_DATA : 0;
|
||||
@ -227,7 +227,7 @@ static void f_cmd_set_param(t_l502_bf_cmd *cmd) {
|
||||
err = params_set_lch_cnt(cmd->data[0]);
|
||||
break;
|
||||
case L502_BF_PARAM_LCH:
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 0 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 1 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, 2 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 4 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* параметры: 0 - индекс, 1 - физ канал, 2 - режим, 3 - диапазон, 4 - усреденение */
|
||||
if (cmd->data_size < 5) {
|
||||
err = L502_BF_ERR_INSUF_CMD_DATA;
|
||||
} else {
|
||||
@ -369,6 +369,11 @@ static void f_cmd_get_param(t_l502_bf_cmd *cmd) {
|
||||
cmd->data[0] = g_set.out_freq_div;
|
||||
ret_size = 1;
|
||||
break;
|
||||
case 87: //for test purposes only!
|
||||
cmd->data[0] = 0xADEF;
|
||||
ret_size = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
err = L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
break;
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/** @defgroup cmd_process <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> */
|
||||
/** @defgroup cmd_process Обработка команд от ПК */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup cmd_process
|
||||
@{
|
||||
@file l502_cmd.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><>.
|
||||
Файл содержит описания функций, которые используются для обработки команд
|
||||
от ПК.
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
@ -18,51 +18,51 @@
|
||||
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>.
|
||||
@brief Запуск обработки команды от ПК.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> l502_cmd_check_req() <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> g_state.cmd
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l502_cmd_start().
|
||||
Функция начинает обработку команды от ПК, переданной по HDMA, вызывая нужный
|
||||
обработчик по коду команды.
|
||||
Вызывается из l502_cmd_check_req() при наличии запроса, но можно запустить
|
||||
и из самой прошивки выполнение команды, заполнив поля в g_state.cmd
|
||||
и вызвав l502_cmd_start().
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l502_cmd_done(), <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> l502_cmd_start(), <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Команда считается завершенной, когда будет вызвана l502_cmd_done(), которая
|
||||
может быть вызвана как из l502_cmd_start(), так и позже из другого места.
|
||||
|
||||
@param[in] cmd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] cmd Структура, описывающая команду
|
||||
******************************************************************************/
|
||||
void l502_cmd_start(t_l502_bf_cmd* cmd);
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>
|
||||
@brief Завершение выполнения команды от ПК
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> data <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> g_state.cmd.data, <EFBFBD>.<2E>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
Пометить комнду как завершенную, записав ее реультат и возвращаемые данные
|
||||
в фиксированную область. Если data уже указывает на g_state.cmd.data, т.е.
|
||||
данные уже находятся в нужной памяти, то они копироваться не будут
|
||||
|
||||
@param[in] result <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD> 32-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
@param[in] result Код завершения команды
|
||||
@param[in] data Данные для ПК, возвращаемые командой
|
||||
@param[in] size Размер данных, возвращаемых командой (в 32-битных словах)
|
||||
*******************************************************************************/
|
||||
void l502_cmd_done(int32_t result, uint32_t* data, uint32_t size);
|
||||
|
||||
/***************************************************************************//**
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>
|
||||
* @brief Проверка наличия команды от ПК
|
||||
*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* (<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> l502_cmd_set_req(), <EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Функция проверяет, есть ли команда от ПК для которой не была начата обработка
|
||||
* (был вызов l502_cmd_set_req(), но еще не был соответствующий вызов
|
||||
* l502_cmd_start()).
|
||||
*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l502_cmd_start().
|
||||
* Если есть необработанная команда, то для нее вызывается l502_cmd_start().
|
||||
*******************************************************************************/
|
||||
void l502_cmd_check_req(void);
|
||||
|
||||
/***************************************************************************//**
|
||||
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief Установка флага, что есть необработанная команда
|
||||
*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* HostDMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l502_cmd_check_req().
|
||||
* Функция вызвается из прерывания от HostDMA в случае, если при этой операции
|
||||
* HostDMA была записана команда. Функция устанавливает флаг, который будет
|
||||
* проверен уже из основной программы с помощью l502_cmd_check_req().
|
||||
******************************************************************************/
|
||||
void l502_cmd_set_req(void);
|
||||
|
||||
|
||||
168
src/l502_defs.h
168
src/l502_defs.h
@ -1,9 +1,9 @@
|
||||
/*********************************************************************//**
|
||||
@addtogroup config_params
|
||||
@{
|
||||
@file l502_defs.h <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BF, <20><><EFBFBD> <20> l502api,
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l502api
|
||||
@file l502_defs.h Файл содержит определения,
|
||||
которые используются как программой BF, так и l502api,
|
||||
и кроме того видны программам, которые используют l502api
|
||||
@date 28.03.2012
|
||||
@author Borisov Alexey <borisov@lcard.ru>
|
||||
*************************************************************************/
|
||||
@ -12,158 +12,158 @@
|
||||
#define L502_GLOBAL_DEFS_H_
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
/** Максимальное количество логических каналов в таблице*/
|
||||
#define L502_LTABLE_MAX_CH_CNT 256
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Количество диапазон для измерения напряжений */
|
||||
#define L502_ADC_RANGE_CNT 6
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Код АЦП, соответствующий максимальному значению шкалы */
|
||||
#define L502_ADC_SCALE_CODE_MAX 6000000
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Минимальное значение делителя частоты синхронного вывода */
|
||||
#define X502_OUT_FREQ_DIV_MIN 2
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Максимальное значение делителя частоты синхронного вывода */
|
||||
#define X502_OUT_FREQ_DIV_MAX 1024
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> L502 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 0.5) */
|
||||
/** Значение делителя частоты вывода по умолчанию (которое также всегда
|
||||
используется в L502 с версией прошивки ПЛИС ниже 0.5) */
|
||||
#define X502_OUT_FREQ_DIV_DEFAULT 2
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Максимальное значение для аппаратного устреднения по логическому каналу */
|
||||
#define L502_LCH_AVG_SIZE_MAX 128
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Максимальное значения делителя частоты АЦП */
|
||||
#define L502_ADC_FREQ_DIV_MAX (1024*1024)
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Максимальное значение делителя частоты синхронного цифрового ввода */
|
||||
#define L502_DIN_FREQ_DIV_MAX (1024*1024)
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> */
|
||||
/** Максимальное значение межкадровой задержки для АЦП */
|
||||
#define L502_ADC_INTERFRAME_DELAY_MAX (0x1FFFFF)
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Диапазон ЦАП в вольтах */
|
||||
#define L502_DAC_RANGE 5.
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Количество каналов ЦАП */
|
||||
#define L502_DAC_CH_CNT 2
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Слово в потоке, означающее, что произошло переполнение */
|
||||
#define L502_STREAM_IN_MSG_OVERFLOW 0x01010000
|
||||
|
||||
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Флаги состояния для синхронного вывода */
|
||||
typedef enum {
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/** Флаг указывает, что в настоящее время буфер в модуле на передачу пуст */
|
||||
X502_OUT_STATUS_FLAG_BUF_IS_EMPTY = 0x01,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
X502_OutGetStatusFlags() (<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
/** Флаг указывает, что было опустошение буфера на вывод с начала старта синхронного
|
||||
ввода-вывода или с момента последнего чтения статуса с помощью
|
||||
X502_OutGetStatusFlags() (в зависимости от того, что было последним) */
|
||||
X502_OUT_STATUS_FLAG_BUF_WAS_EMPTY = 0x02
|
||||
} t_x502_out_status_flags;
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Флаги для управления цифровыми выходами.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD>Ȕ <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
L502_AsyncOutDig() <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> L502_PrepareData() <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.*/
|
||||
Флаги управления цифровыми выходами. Могут быть объединены через логическое
|
||||
“ИЛИ” со значениями цифровых выходов при асинхронном выводе с помощью
|
||||
L502_AsyncOutDig() или переданы в L502_PrepareData() при синхронном выводе.*/
|
||||
typedef enum {
|
||||
L502_DIGOUT_WORD_DIS_H = 0x00020000, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_DIGOUT_WORD_DIS_L = 0x00010000 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_DIGOUT_WORD_DIS_H = 0x00020000, /**< Запрещение (перевод в третье состояние)
|
||||
старшей половины цифровых выходов */
|
||||
L502_DIGOUT_WORD_DIS_L = 0x00010000 /**< Запрещение младшей половины
|
||||
цифровых выходов */
|
||||
} t_l502_digout_word_flags;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Константы для выбора опорной частоты */
|
||||
typedef enum {
|
||||
L502_REF_FREQ_2000KHZ = 2000000, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2<><32><EFBFBD> */
|
||||
L502_REF_FREQ_1500KHZ = 1500000 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.5<EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_REF_FREQ_2000KHZ = 2000000, /**< Частота 2МГц */
|
||||
L502_REF_FREQ_1500KHZ = 1500000 /**< Частота 1.5МГц */
|
||||
} t_l502_ref_freq;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Диапазоны измерения для канала АЦП */
|
||||
typedef enum {
|
||||
L502_ADC_RANGE_10 = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-10V */
|
||||
L502_ADC_RANGE_5 = 1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-5V */
|
||||
L502_ADC_RANGE_2 = 2, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-2V */
|
||||
L502_ADC_RANGE_1 = 3, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-1V */
|
||||
L502_ADC_RANGE_05 = 4, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-0.5V */
|
||||
L502_ADC_RANGE_02 = 5 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/-0.2V */
|
||||
L502_ADC_RANGE_10 = 0, /**< Диапазон +/-10V */
|
||||
L502_ADC_RANGE_5 = 1, /**< Диапазон +/-5V */
|
||||
L502_ADC_RANGE_2 = 2, /**< Диапазон +/-2V */
|
||||
L502_ADC_RANGE_1 = 3, /**< Диапазон +/-1V */
|
||||
L502_ADC_RANGE_05 = 4, /**< Диапазон +/-0.5V */
|
||||
L502_ADC_RANGE_02 = 5 /**< Диапазон +/-0.2V */
|
||||
} t_l502_adc_range;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Режим измерения для логического канала */
|
||||
typedef enum {
|
||||
L502_LCH_MODE_COMM = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_LCH_MODE_DIFF = 1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_LCH_MODE_ZERO = 2 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
L502_LCH_MODE_COMM = 0, /**< Измерение напряжения относительно общей земли */
|
||||
L502_LCH_MODE_DIFF = 1, /**< Дифференциальное измерение напряжения */
|
||||
L502_LCH_MODE_ZERO = 2 /**< Измерение собственного нуля */
|
||||
} t_l502_lch_mode;
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Режимы синхронизации.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Режимы задания источника частоты синхронизации и признака начала
|
||||
синхронного ввода-вывода */
|
||||
typedef enum {
|
||||
L502_SYNC_INTERNAL = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_SYNC_EXTERNAL_MASTER = 1, /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_SYNC_DI_SYN1_RISE = 2, /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DI_SYN1 */
|
||||
L502_SYNC_DI_SYN2_RISE = 3, /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DI_SYN2 */
|
||||
L502_SYNC_DI_SYN1_FALL = 6, /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DI_SYN1 */
|
||||
L502_SYNC_DI_SYN2_FALL = 7 /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DI_SYN2 */
|
||||
L502_SYNC_INTERNAL = 0, /**< Внутренний сигнал */
|
||||
L502_SYNC_EXTERNAL_MASTER = 1, /**< От внешнего мастера по разъему синхронизации */
|
||||
L502_SYNC_DI_SYN1_RISE = 2, /**< По фронту сигнала DI_SYN1 */
|
||||
L502_SYNC_DI_SYN2_RISE = 3, /**< По фронту сигнала DI_SYN2 */
|
||||
L502_SYNC_DI_SYN1_FALL = 6, /**< По спаду сигнала DI_SYN1 */
|
||||
L502_SYNC_DI_SYN2_FALL = 7 /**< По спаду сигнала DI_SYN2 */
|
||||
} t_l502_sync_mode;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Флаги для обозначения синхронных потоков данных */
|
||||
typedef enum {
|
||||
L502_STREAM_ADC = 0x01, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> */
|
||||
L502_STREAM_DIN = 0x02, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_STREAM_DAC1 = 0x10, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_STREAM_DAC2 = 0x20, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_STREAM_DOUT = 0x40, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
L502_STREAM_ADC = 0x01, /**< Поток данных от АЦП */
|
||||
L502_STREAM_DIN = 0x02, /**< Поток данных с цифровых входов */
|
||||
L502_STREAM_DAC1 = 0x10, /**< Поток данных первого канала ЦАП */
|
||||
L502_STREAM_DAC2 = 0x20, /**< Поток данных второго канала ЦАП */
|
||||
L502_STREAM_DOUT = 0x40, /**< Поток данных на цифровые выводы */
|
||||
/** Объединение всех флагов, обозначающих потоки данных на ввод */
|
||||
L502_STREAM_ALL_IN = L502_STREAM_ADC | L502_STREAM_DIN,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Объединение всех флагов, обозначающих потоки данных на вывод */
|
||||
L502_STREAM_ALL_OUT = L502_STREAM_DAC1 | L502_STREAM_DAC2 | L502_STREAM_DOUT
|
||||
} t_l502_streams;
|
||||
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DOUT 0x0 /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DAC1 0x40000000 /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD> 1-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DAC2 0x80000000 /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD> 2-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DOUT 0x0 /**< Тип передаваемого отсчета - цифровой вывод */
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DAC1 0x40000000 /**< Тип передаваемого отсчета - Код для 1-го канала ЦАП */
|
||||
#define L502_STREAM_OUT_WORD_TYPE_DAC2 0x80000000 /**< Тип передаваемого отсчета - Код для 2-го канала ЦАП */
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> L502 */
|
||||
/** Режим работы модуля L502 */
|
||||
typedef enum {
|
||||
L502_MODE_FPGA = 0, /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin */
|
||||
L502_MODE_DSP = 1, /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_MODE_DEBUG = 2 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
L502_MODE_FPGA = 0, /**< Все потоки данных передаются через ПЛИС минуя
|
||||
сигнальный процессор BlackFin */
|
||||
L502_MODE_DSP = 1, /**< Все потоки данных передаются через сигнальный
|
||||
процессор, который должен быть загружен
|
||||
прошивкой для обработки этих потоков */
|
||||
L502_MODE_DEBUG = 2 /**< Отладочный режим */
|
||||
} t_l502_mode;
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
|
||||
/** @brief Номера каналов ЦАП.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> L502_AsyncOutDac() */
|
||||
Номер каналов ЦАП для указания в L502_AsyncOutDac() */
|
||||
typedef enum {
|
||||
L502_DAC_CH1 = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_DAC_CH2 = 1 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
L502_DAC_CH1 = 0, /**< Первый канал ЦАП */
|
||||
L502_DAC_CH2 = 1 /**< Второй канал ЦАП */
|
||||
} t_l502_dac_ch;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Флаги, описывающие модуль */
|
||||
typedef enum {
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Признак наличия ЦАП */
|
||||
L502_DEVFLAGS_DAC_PRESENT = 0x0001,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Признак наличия гальваноразвязки */
|
||||
L502_DEVFLAGS_GAL_PRESENT = 0x0002,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Признак наличия сигнального процессора */
|
||||
L502_DEVFLAGS_BF_PRESENT = 0x0004,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> Flash-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Признак, что во Flash-памяти присутствует информация о модуле */
|
||||
L502_DEVFLAGS_FLASH_DATA_VALID = 0x00010000,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> Flash-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Признак, что во Flash-памяти присутствуют действительные калибровочные
|
||||
коэффициенты АЦП */
|
||||
L502_DEVFLAGS_FLASH_ADC_CALIBR_VALID = 0x00020000,
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> Flash-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Признак, что во Flash-памяти присутствуют действительные калибровочные
|
||||
коэффициенты ЦАП */
|
||||
L502_DEVFLAGS_FLASH_DAC_CALIBR_VALID = 0x00040000
|
||||
} t_l502_devinfo_flags;
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @addtogroup fpga_regs
|
||||
@{
|
||||
@file l502_fpga.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPI.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_spi_init().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_reg_write(), <EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fpga_reg_read(). */
|
||||
Файл содержит логику передачи команд для чтения/записи регистров
|
||||
ПЛИС по SPI.
|
||||
Изначально SPI должен быть проинициализирован с помощью fpga_spi_init().
|
||||
После этого можно осуществлять запись с помощью fpga_reg_write(), а
|
||||
чтение с помощью fpga_reg_read(). */
|
||||
|
||||
#include <cdefBF523.h>
|
||||
|
||||
@ -17,14 +17,14 @@
|
||||
|
||||
|
||||
static uint16_t f_spi_rw(uint16_t word) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если в было принято уже слово - то читаем его, чтобы освободить буфер приема */
|
||||
if (*pSPI_STAT & RXS) {
|
||||
volatile uint16_t dummy;
|
||||
dummy = *pSPI_RDBR;
|
||||
}
|
||||
|
||||
*pSPI_TDBR = word;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* ждем пока примем новое слово */
|
||||
while (!(*pSPI_STAT&RXS)) {
|
||||
continue;
|
||||
}
|
||||
@ -34,9 +34,9 @@ static uint16_t f_spi_rw(uint16_t word) {
|
||||
|
||||
|
||||
void fpga_spi_init(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI */
|
||||
/* настройка SPI */
|
||||
*pSPI_BAUD = 2; /* SPI CLK = 132.5/(2*2) = 33.125 */
|
||||
*pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, MSB first, 16-bit, CPHA=0, CPOL=0 */
|
||||
*pSPI_CTL = SPE | MSTR | SIZE | GM | TDBR_CORE; /* Мастер, MSB first, 16-bit, CPHA=0, CPOL=0 */
|
||||
*pSPI_FLG = FLS1;
|
||||
|
||||
*pPORTG_MUX = (*pPORTG_MUX & 0xFFFC) | 2;
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
/** @defgroup fpga_regs <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/** @defgroup fpga_regs Доступ к регистрам ПЛИС */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup fpga_regs
|
||||
@{
|
||||
@file l502_fpga.h
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
Файл содержит функции для записи и чтения регистров ПЛИС по интерфейсу АЦП
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
@ -14,16 +14,16 @@
|
||||
#include <stdint.h>
|
||||
#include "l502_fpga_regs.h"
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Инициализация SPI интерфейса */
|
||||
void fpga_spi_init(void);
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI
|
||||
@param[in] addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
@param[in] value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Запись регистра в регистр ПЛИС значения по интерфейсу SPI
|
||||
@param[in] addr Адрес регистра ПЛИС
|
||||
@param[in] value Записываемое значение */
|
||||
void fpga_reg_write(uint16_t addr, uint32_t value);
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI
|
||||
@param[in] addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Чтение значения из регистра ПЛИС по интерфейсу SPI
|
||||
@param[in] addr Адрес регистра ПЛИС
|
||||
@return Прочитанное значение */
|
||||
uint32_t fpga_reg_read(uint16_t addr);
|
||||
|
||||
#endif
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
#define L502_BF_CMD_HDMA_RST 0x0008
|
||||
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> EEPROM *************************/
|
||||
/********************* Адреса регистров блока EEPROM *************************/
|
||||
#define L502_REGS_EEPROM_BLOCK 0x0100
|
||||
|
||||
#define L502_REGS_EEPROM_SET_RD_ADDR (L502_REGS_EEPROM_BLOCK + 0)
|
||||
@ -34,18 +34,18 @@
|
||||
#define L502_REGS_HARD_ID (L502_REGS_EEPROM_BLOCK + 0xA)
|
||||
#define L502_REGS_JEDEC_RD_ID (L502_REGS_EEPROM_BLOCK + 0xB)
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> **************/
|
||||
/********************* Адреса регистров с отладочной информацией **************/
|
||||
#define L502_REGS_DBG_BLOCK 0x0140
|
||||
#define L502_REGS_DBG_EVENTS (L502_REGS_DBG_BLOCK + 0)
|
||||
#define L502_REGS_DBG_LAST_ABORT_ADDR (L502_REGS_DBG_BLOCK + 8)
|
||||
#define L502_REGS_DBG_LAST_NACK_ADDR (L502_REGS_DBG_BLOCK + 9)
|
||||
#define L502_REGS_DBG_LINK_REPLAY_CNT (L502_REGS_DBG_BLOCK + 10)
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IOHARD **************************/
|
||||
/********************* Адреса регистров блока IOHARD **************************/
|
||||
#define L502_REGS_IOHARD_BLOCK 0x0200
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Control Table
|
||||
//Адрес Control Table
|
||||
#define L502_REGS_IOHARD_LTABLE (L502_REGS_IOHARD_BLOCK+0)
|
||||
#define L502_REGS_IOHARD_LTABLE_MAX_SIZE 0x100 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Control Table
|
||||
#define L502_REGS_IOHARD_LTABLE_MAX_SIZE 0x100 // Максимальный размер Control Table
|
||||
|
||||
#define L502_REGS_IOHARD_LCH_CNT (L502_REGS_IOHARD_BLOCK+0x100)
|
||||
#define L502_REGS_IOHARD_ADC_FREQ_DIV (L502_REGS_IOHARD_BLOCK+0x102)
|
||||
@ -62,7 +62,7 @@
|
||||
|
||||
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> IOARITH **************************/
|
||||
/********************* Адреса регистров блока IOARITH **************************/
|
||||
#define L502_REGS_IOARITH_BLOCK 0x0400
|
||||
#define L502_REGS_IOARITH_B10 L502_REGS_IOARITH_BLOCK
|
||||
#define L502_REGS_IOARITH_B5 (L502_REGS_IOARITH_BLOCK+0x01)
|
||||
@ -81,7 +81,7 @@
|
||||
#define L502_REGS_IOARITH_DIN_ASYNC (L502_REGS_IOARITH_BLOCK+0x1A)
|
||||
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin'<EFBFBD><EFBFBD> **********/
|
||||
/********************* Адреса регистров блока управления BlackFin'ом **********/
|
||||
#define L502_REGS_BF_CTL_BLOCK 0
|
||||
#define L502_REGS_BF_CTL (L502_REGS_BF_CTL_BLOCK+0)
|
||||
#define L502_REGS_BF_CMD (L502_REGS_BF_CTL_BLOCK+1)
|
||||
@ -96,7 +96,7 @@
|
||||
#define L502_BF_REQ_DATA_SIZE_MIN 8
|
||||
|
||||
|
||||
/********************* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA *****************************/
|
||||
/********************* Адреса регистров блока DMA *****************************/
|
||||
#define L502_REGS_DMA_CTL_BLOCK 0x700
|
||||
#define L502_REGS_DMA_CAP (L502_REGS_DMA_CTL_BLOCK)
|
||||
#define L502_REGS_DMA_EN (L502_REGS_DMA_CTL_BLOCK+1)
|
||||
@ -110,7 +110,7 @@
|
||||
#define L502_DMA_CHNUM_IN 0
|
||||
#define L502_DMA_CHNUM_OUT 1
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* номер регистра, с которого начинаются параметры канала DMA */
|
||||
#define L502_REGS_DMA_CH_PARAMS(ch) (0x800 + L502_REGS_DMA_CH_PARAMS_SIZE*ch)
|
||||
#define L502_REGS_DMA_CH_CTL(ch) (L502_REGS_DMA_CH_PARAMS(ch) + 0)
|
||||
#define L502_REGS_DMA_CH_CMP_CNTR(ch) (L502_REGS_DMA_CH_PARAMS(ch) + 1)
|
||||
@ -119,7 +119,7 @@
|
||||
#define L502_REGS_DMA_CH_PC_POS(ch) (L502_REGS_DMA_CH_PARAMS(ch) + 4)
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* адреса для регистров страниц DMA АЦП */
|
||||
#define L502_REGS_DMA_CH_PAGES(ch) (L502_REGS_DMA_CH_PARAMS(ch) + 16)
|
||||
#define L502_REGS_DMA_CH_PAGE_ADDRL(ch,n) (L502_REGS_DMA_CH_PAGES(ch) + 4*(n))
|
||||
#define L502_REGS_DMA_CH_PAGE_ADDRH(ch,n) (L502_REGS_DMA_CH_PAGES(ch) + 4*(n)+1)
|
||||
@ -136,7 +136,7 @@
|
||||
#define L502_REGBIT_BF_STATUS_BUSY_Msk (1UL << L502_REGBIT_BF_STATUS_BUSY_Pos)
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* описание отдельных битов регистров */
|
||||
#define L502_REGBIT_DMA_CTL_PACK_SIZE_Pos 0
|
||||
#define L502_REGBIT_DMA_CTL_PACK_SIZE_Msk (0xFFUL << L502_REGBIT_DMA_CTL_PACK_SIZE_Pos)
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
/** @defgroup global_defs <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @defgroup global_defs Фиксированная область памяти */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup global_defs
|
||||
@{
|
||||
@file l502_global.h
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BlackFin <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> BlackFin
|
||||
Файл содержит определение структур, описывающих область памяти
|
||||
BlackFin с фиксированными адресами:
|
||||
- Структуры дескрипторов для передачи потоков данных по HostDMA
|
||||
- Структру для передачи команд от ПК к BlackFin
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef L502_GLOBAL_H_
|
||||
@ -17,58 +17,58 @@
|
||||
#include "l502_bf_cmd_defs.h"
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin */
|
||||
/** Версия прошивки BlackFin */
|
||||
#define L502_BF_FIRM_VERSION 0x00000002
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Дополнительные возможности, реализованные в прошивке */
|
||||
#define L502_BF_FIRM_FEATURES (L502_BF_FEATURE_FPGA_REG_ACCESS | L502_BF_FEATURE_OUT_STATUS_FLAGS)
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA */
|
||||
/** Структура дескриптора для передачи потока по HostDMA */
|
||||
typedef struct {
|
||||
uint32_t flags; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t full_size; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
void* addr; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t xcnt; /**< <EFBFBD><EFBFBD><EFBFBD>-<2D><> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t xmod; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t ycnt; /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t ymod; /**< <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
void* next_descr; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t id; /**< id-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t valid; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t udata; /**< <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t flags; /**< Флаги */
|
||||
uint32_t full_size; /**< Полный размер передачи */
|
||||
void* addr; /**< Начальный адрес данных для передачи */
|
||||
uint16_t xcnt; /**< Кол-во 16-разрядных слов в одном передаваемом блоке */
|
||||
uint16_t xmod; /**< Модификатор указателя */
|
||||
uint16_t ycnt; /**< Не используется */
|
||||
uint16_t ymod; /**< Не используется */
|
||||
void* next_descr; /**< Указатель на следующий дескриптор */
|
||||
uint16_t id; /**< id-номер дескриптора */
|
||||
uint16_t valid; /**< Признак действительности */
|
||||
uint32_t udata; /**< Доп данные */
|
||||
} t_hdma_stream_descr;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Bf-><EFBFBD><EFBFBD>) */
|
||||
/** Максимальное количество дескрипторов на передачу данных (Bf->ПК) */
|
||||
#define L502_IN_HDMA_DESCR_CNT (31)
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>->Bf) */
|
||||
/** Максимальное количество дескрипторов на прием данных (ПК->Bf) */
|
||||
#define L502_OUT_HDMA_DESCR_CNT (31)
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HDMA
|
||||
/** @brief Описание массива дескрипторов HDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> BlackFin <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Структура описывает расположение дескрипторов HostDMA для организации
|
||||
потока данных между BlackFin и персональным компьютером как на передачу,
|
||||
так и на прием */
|
||||
typedef struct {
|
||||
t_hdma_stream_descr in_lb; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
t_hdma_stream_descr in[L502_IN_HDMA_DESCR_CNT]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
t_hdma_stream_descr out_lb; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
t_hdma_stream_descr out[L502_OUT_HDMA_DESCR_CNT]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
t_hdma_stream_descr in_lb; /**< Последний выполненный дескриптор на ввод */
|
||||
t_hdma_stream_descr in[L502_IN_HDMA_DESCR_CNT]; /**< Список дескрипторов на ввод */
|
||||
t_hdma_stream_descr out_lb; /**< Последний выполненный дескриптор на вывод */
|
||||
t_hdma_stream_descr out[L502_OUT_HDMA_DESCR_CNT]; /**< Список дескрипторов на вывод */
|
||||
} t_hdma_descr_arr;
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Описание фиксированной области памяти
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Структура описывает данные в памяти сигнального процессора, которые должны
|
||||
быть расположены по фиксированным адресам */
|
||||
typedef struct {
|
||||
t_hdma_descr_arr hdma; /**< 0xFF800000 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA*/
|
||||
t_l502_bf_cmd cmd; /**< 0xFF800800 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PC*/
|
||||
t_hdma_descr_arr hdma; /**< 0xFF800000 - дескрипторы для обмена потоком по HDMA*/
|
||||
t_l502_bf_cmd cmd; /**< 0xFF800800 - команда обмена с PC*/
|
||||
} t_l502_board_state;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Структура, содержащая данные фиксированной памяти */
|
||||
extern volatile t_l502_board_state g_state;
|
||||
|
||||
#endif
|
||||
|
||||
168
src/l502_hdma.c
168
src/l502_hdma.c
@ -2,27 +2,27 @@
|
||||
@addtogroup hdma
|
||||
@{
|
||||
@file l502_hdma.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> hdma <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD> <20> <20> BlackFin.
|
||||
Файл содержит логику работы с hdma на прием и на передачу данных
|
||||
как из, так и в BlackFin.
|
||||
***************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> hdma_stream_init().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_xxx_start() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> hdma_xxx_stop()
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
При запуске должно вызываться один раз hdma_stream_init().
|
||||
Вызов hdma_xxx_start() инициализирует прием или передачу, а hdma_xxx_stop()
|
||||
останавливает все текущие передачи.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_xxx_req_rdy()
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_xxx_req_start(), <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Для запуска обмена блоком данных нужно проверить готовность
|
||||
(наличие свободных дескрипторов) с помощью hdma_xxx_req_rdy()
|
||||
и вызвать hdma_xxx_req_start(), указав массив для передачи или приема
|
||||
данных и его размер.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 31 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Можно устанавливать до 31 запроса в очередь.
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_xxx_done(), <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BF->PC
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC->BF <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> PC <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
По завершению обмена будет вызвана функция hdma_xxx_done(), которая
|
||||
должна быть реализована в другом файле. Для передачи BF->PC
|
||||
функция вызывается один раз на каждый поставленный запрос,
|
||||
а при приеме PC->BF может вызываться по несколько раз - при приеме
|
||||
части запроса (в случае, если от PC пока нет больше данных)
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
@ -81,42 +81,42 @@ inline static void hdma_set_descr(t_hdma_stream_descr* descr_arr, uint8_t* pos,
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA
|
||||
/** @brief Инициализация интерфейса HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA */
|
||||
Настройка параметров HostDMA и инициализация неизменяемых полей дескрипторов
|
||||
для организации потока по данных по HostDMA */
|
||||
void hdma_init(void) {
|
||||
int d;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA */
|
||||
/* запрещаем ПЛИС отслеживать запросы на обмен по HDMA */
|
||||
STREAM_IN_DIS();
|
||||
STREAM_OUT_DIS();
|
||||
|
||||
*pPORTGIO_DIR |= PG5 | PG6;
|
||||
*pPORTFIO_DIR |= PF14 | PF15;
|
||||
|
||||
/***************** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HOST DMA ***********************/
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/***************** настройка HOST DMA ***********************/
|
||||
//настройка портов
|
||||
*pPORTG_MUX |= 0x2800;
|
||||
*pPORTG_FER |= 0xF800;
|
||||
*pPORTH_MUX = 0x2A;
|
||||
*pPORTH_FER = 0xFFFF;
|
||||
|
||||
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//настройка прерываний
|
||||
REGISTER_ISR(11, hdma_isr);
|
||||
//*pSIC_IAR3 = (*pSIC_IAR6 & 0xFFF0FFFFUL) | (3 << 16);
|
||||
*pSIC_IAR6 = (*pSIC_IAR6 & 0xFFFFF0FFUL) | P50_IVG(10); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HDMARD <EFBFBD><EFBFBD> IVG10
|
||||
*pSIC_IAR6 = (*pSIC_IAR6 & 0xFFFFF0FFUL) | P50_IVG(10); //назначение HDMARD на IVG10
|
||||
REGISTER_ISR(10, hdma_rd_isr);
|
||||
*pSIC_IMASK0 |= IRQ_DMA1; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HOSTDP <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*pSIC_IMASK1 |= IRQ_HOSTRD_DONE; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HOSTDP <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HDMA
|
||||
*pSIC_IMASK0 |= IRQ_DMA1; //разрешение прерывания HOSTDP на запись
|
||||
*pSIC_IMASK1 |= IRQ_HOSTRD_DONE; //разрешение прерывания HOSTDP на чтение;
|
||||
//разрешение HDMA
|
||||
*pHOST_CONTROL = BDR | EHR | EHW | HOSTDP_EN | HOSTDP_DATA_SIZE; //burst, ehr, ehw, en
|
||||
|
||||
//g_state.cmd.data[100] = L502_BF_CMD_STATUS_DONE;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* инициалзация полей дескрипторов, которые не будут изменяться
|
||||
во время работы */
|
||||
for (d=0; d < L502_IN_HDMA_DESCR_CNT; d++) {
|
||||
g_state.hdma.in[d].xmod = 2;
|
||||
g_state.hdma.in[d].valid = 1;
|
||||
@ -134,10 +134,10 @@ void hdma_init(void) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA.
|
||||
/** @brief Запуск потока на передачу по HostDMA.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция сбрасывает логику обработки заданий на передачу данных по HostDMA
|
||||
и разрешает передачу. Должна вызываться до добавления первого задания с помощью
|
||||
hdma_send_req_start() */
|
||||
void hdma_send_start(void) {
|
||||
f_snd_start_id = 0;
|
||||
@ -149,17 +149,17 @@ void hdma_send_start(void) {
|
||||
STREAM_IN_EN();
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA.
|
||||
/** @brief Останов потока на передачу по HostDMA.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Запрет передачи по HostDMA с остановом всех текущих заданий */
|
||||
void hdma_send_stop(void) {
|
||||
STREAM_IN_DIS();
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
/** @brief Запуск потока на прием по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция сбрасывает логику обработки заданий на прием данных по HostDMA
|
||||
и разрешает прием. Должна вызываться до добавления первого задания с помощью
|
||||
hdma_recv_req_start() */
|
||||
void hdma_recv_start(void) {
|
||||
f_rcv_start_id = 0;
|
||||
@ -171,9 +171,9 @@ void hdma_recv_start(void) {
|
||||
STREAM_OUT_EN();
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
/** @brief Останов потока на прием по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Запрет приема по HostDMA с остановом всех текущих заданий */
|
||||
void hdma_recv_stop(void) {
|
||||
STREAM_OUT_DIS();
|
||||
}
|
||||
@ -181,39 +181,39 @@ void hdma_recv_stop(void) {
|
||||
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@brief Получить количество свободных запросов на передачу.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_send_start().
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Фунция позволяет узнать, сколько запросов можно еще поставить в очередь на
|
||||
передачу с помощью hdma_send_start().
|
||||
@return Количество запросов на передачу, которое можно поставить в очередь
|
||||
******************************************************************************/
|
||||
int hdma_send_req_rdy(void) {
|
||||
return L502_IN_HDMA_DESCR_CNT - (uint16_t)(f_snd_start_id - f_snd_done_id);
|
||||
}
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
@brief Получить количество свободных запросов на прием
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_recv_start().
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Фунция позволяет узнать, сколько запросов можно еще поставить в очередь на
|
||||
прием с помощью hdma_recv_start().
|
||||
@return Количество запросов на прием, которое можно поставить в очередь
|
||||
******************************************************************************/
|
||||
int hdma_recv_req_rdy(void) {
|
||||
return L502_OUT_HDMA_DESCR_CNT - (uint16_t)(f_rcv_start_id - f_rcv_done_id);
|
||||
}
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
@brief Поставить запрос на передачу по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> hdma_send_req_rdy())
|
||||
Функция ставит запрос на передачу указанных данных. Сами данные не копируются,
|
||||
т.е. буфер нельзя будет использовать до того, как данные не будут переданы!
|
||||
Для постановки запроса необходимо, чтобы был свободный дескриптор (можно
|
||||
узнать через hdma_send_req_rdy())
|
||||
|
||||
@param[in] buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] flags <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_hdma_send_flags
|
||||
@return < 0 <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, >= 0 - id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] buf Указатель на массив на передачу.
|
||||
@param[in] size Количество 32-битных слов на передачу
|
||||
@param[in] flags Флаги из #t_hdma_send_flags
|
||||
@return < 0 при ошибке, >= 0 - id передачи при успехе
|
||||
*******************************************************************************/
|
||||
int hdma_send_req_start(const uint32_t* buf, uint32_t size, uint32_t flags) {
|
||||
if (hdma_send_req_rdy() > 0) {
|
||||
@ -226,16 +226,16 @@ int hdma_send_req_start(const uint32_t* buf, uint32_t size, uint32_t flags) {
|
||||
}
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
@brief Поставить запрос на передачу по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> hdma_recv_req_rdy())
|
||||
Функция ставит запрос на прием данных в указанный буфер.
|
||||
Сами данные будут в буфере только по завершению запроса.
|
||||
Для постановки запроса необходимо, чтобы был свободный дескриптор (можно
|
||||
узнать через hdma_recv_req_rdy())
|
||||
|
||||
@param[in] buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return < 0 <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, >= 0 - id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] buf Указатель на массив на передачу.
|
||||
@param[in] size Количество 32-битных слов на передачу
|
||||
@return < 0 при ошибке, >= 0 - id передачи при успехе
|
||||
*******************************************************************************/
|
||||
int hdma_recv_req_start(uint32_t* buf, uint32_t size) {
|
||||
if (hdma_recv_req_rdy() > 0) {
|
||||
@ -248,31 +248,31 @@ int hdma_recv_req_start(uint32_t* buf, uint32_t size) {
|
||||
|
||||
|
||||
/**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BF <EFBFBD><EFBFBD> HDMA
|
||||
@brief Обработчик прерывания на завершения записи в память BF по HDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Обработчик вызывается по завершению приема блока по HostDMA. Обработчик
|
||||
выполняет установку необходимых флагов для разрешения приема следующего блока
|
||||
и, кроме того, проверяет наличие новой команды и завершения передачи или приема
|
||||
блока из потока данных */
|
||||
ISR(hdma_isr) {
|
||||
if ((*pDMA1_IRQ_STATUS & DMA_DONE) != 0) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* проверяем, не была ли записана команда */
|
||||
if (g_state.cmd.status == L502_BF_CMD_STATUS_REQ) {
|
||||
l502_cmd_set_req();
|
||||
}
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> HDMA <EFBFBD><EFBFBD> BF <EFBFBD> PC */
|
||||
/* проверяем, не был ли записан результат передачи
|
||||
по HDMA из BF в PC */
|
||||
if (g_state.hdma.in_lb.valid) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> id <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> callback */
|
||||
/* обновляем id завершенной передачи и вызываем callback */
|
||||
f_snd_done_id = g_state.hdma.in_lb.id;
|
||||
g_state.hdma.in_lb.valid = 0;
|
||||
hdma_send_done(g_state.hdma.in_lb.addr, g_state.hdma.in_lb.udata);
|
||||
}
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
HDMA <EFBFBD><EFBFBD> PC <EFBFBD> BF */
|
||||
/* проверяем, не был ли записан результат приема данных по
|
||||
HDMA из PC в BF */
|
||||
if (g_state.hdma.out_lb.valid) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* может быть записан и при не полностью завершенном запросе.
|
||||
определяем сперва резмер, сколько было реально принято */
|
||||
uint32_t size = (g_state.hdma.out[f_rcv_done_descr].full_size -
|
||||
g_state.hdma.out_lb.full_size)/2;
|
||||
|
||||
@ -281,14 +281,14 @@ ISR(hdma_isr) {
|
||||
|
||||
hdma_recv_done(g_state.hdma.out_lb.addr, size);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если была завершена только часть дескриптора -
|
||||
обновляем оставшийся размер для приема */
|
||||
if (g_state.hdma.out_lb.full_size) {
|
||||
g_state.hdma.out[f_rcv_done_descr].full_size =
|
||||
g_state.hdma.out_lb.full_size;
|
||||
} else {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если завершен весь дескриптор - переходим
|
||||
к следующему */
|
||||
if (++f_rcv_done_descr== L502_OUT_HDMA_DESCR_CNT)
|
||||
f_rcv_done_descr = 0;
|
||||
f_rcv_done_id = g_state.hdma.out_lb.id;
|
||||
@ -303,11 +303,11 @@ ISR(hdma_isr) {
|
||||
}
|
||||
|
||||
/**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA.
|
||||
@brief Обработчик прерывания на завершение чтения по HDMA.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Данный обработчик вызывается по завершению передачи блока данных по HostDMA.
|
||||
Выполняет только установку необходимых флагов для разрешения следующей
|
||||
передачи */
|
||||
ISR(hdma_rd_isr) {
|
||||
if ((*pHOST_STATUS & HOSTRD_DONE) != 0) {
|
||||
*pHOST_STATUS &= ~((unsigned short)HOSTRD_DONE);
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @defgroup hdma <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA */
|
||||
/** @defgroup hdma Работа с интерфейсом HostDMA */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup hdma
|
||||
@{
|
||||
@file l502_hdma.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA
|
||||
Файл содержит описания функций для работы с интерфейсом HostDMA
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef L502_HDMA_H_
|
||||
@ -14,10 +14,10 @@
|
||||
|
||||
void hdma_init(void);
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_hdma_send_flags */
|
||||
/** Флаги для передачи по #t_hdma_send_flags */
|
||||
typedef enum {
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> */
|
||||
/** Флаг, указывающий, что передается последний пакет данных. По завершению
|
||||
передачи будет остановлен поток и сгенерировано прерывания для ПК */
|
||||
L502_HDMA_FLAGS_SEND_LAST = 0x1
|
||||
} t_hdma_send_flags;
|
||||
|
||||
|
||||
@ -22,27 +22,27 @@ void l502_stream_init(void);
|
||||
#define L502_PLL_CTL (SET_MSEL(53) | DF)
|
||||
#define L502_PLL_DIV (SET_SSEL(4) | CSEL_DIV1)
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM
|
||||
* RDIV=((117964,8*64ms)/8192)-(6+3)=912 // <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 8192, <EFBFBD> 4096, <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1834
|
||||
/* конфигурим SDRAM
|
||||
* RDIV=((117964,8*64ms)/8192)-(6+3)=912 // по логике - это последняя конфигурация
|
||||
* кстати - возможно не 8192, а 4096, в таком случае 1834
|
||||
*/
|
||||
#define L502_SDRAM_SDRRC (((132500000 / 1000) * 64) / 8192 - (6 + 3))
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 32 <EFBFBD><EFBFBD>, 9 <EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* размер памяти - 32 Мб, 9 бит - под адрес колонки */
|
||||
#define L502_SDRAM_SDBCTL (EBE | EBSZ_32 | EBCAW_9)
|
||||
/* CAS latency=3, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 2 - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!!!)
|
||||
* PASR_ALL - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
* tRAS(min)=45 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 6 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* tRP(min)=20 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* tRCD(min)=20 <EFBFBD><EFBFBD> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 120 <EFBFBD><EFBFBD><EFBFBD> - 3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* tWR - <EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2
|
||||
* POWER startup delay - <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* PSS - power SDRAM - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
* SRFS - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* EBUFE=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM
|
||||
* FBBRW=0 - <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
* EMREN=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* TCSR=0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SDRAM <EFBFBD> 2.5 <EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* CDDBG=0 - <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> signals <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/* CAS latency=3, хотя можно и 2 - чем меньше тем лучше (правда при этом глюки появляются!!!!)
|
||||
* PASR_ALL - тоже для SDRAM с 2.5 В - экономия энергии, поэтому рефрешим все
|
||||
* tRAS(min)=45 нс (при частоте 120 Мгц - 6 тактов)
|
||||
* tRP(min)=20 нс (при частоте 120 Мгц - 3 тактов)
|
||||
* tRCD(min)=20 нс (при частоте 120 Мгц - 3 тактов)
|
||||
* tWR - хз, на вскидку 2
|
||||
* POWER startup delay - не нужна
|
||||
* PSS - power SDRAM - должно быть
|
||||
* SRFS - нужна для перевода SDRAM в режим пониженного энергопотребления 0 не нужно
|
||||
* EBUFE=0 - только один чип SDRAM
|
||||
* FBBRW=0 - для того, чтобы чтение сразу шло за записью, может не работать - попробовать позже
|
||||
* EMREN=0 - тоже для SDRAM с 2.5 В - экономия энергии
|
||||
* TCSR=0 - тоже для SDRAM с 2.5 В - экономия энергии
|
||||
* CDDBG=0 - по моему сотекщд signals не расшарены
|
||||
*/
|
||||
#define L502_SDRAM_SDGCTL (SCTLE | CL_2 | PASR_ALL | TRAS_6 | TRP_3 | TRCD_3 | TWR_2 | PSS)
|
||||
|
||||
@ -56,14 +56,14 @@ uint32_t l502_otp_make_invalid(uint32_t page) {
|
||||
return err;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BlackFin'a */
|
||||
/* Настройка частоты BlackFin'a */
|
||||
void l502_setup_pll(void) {
|
||||
ADI_SYSCTRL_VALUES sysctl;
|
||||
sysctl.uwPllCtl = L502_PLL_CTL;
|
||||
bfrom_SysControl(SYSCTRL_WRITE | SYSCTRL_PLLCTL, &sysctl, 0);
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <EFBFBD> SDRAM <EFBFBD> <20><><EFBFBD><EFBFBD> OTP, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* Запись настроек PLL и SDRAM в блок OTP, начиная с заданной страницы */
|
||||
uint32_t l502_otp_write_cfg(uint32_t first_page) {
|
||||
uint32_t err = bfrom_OtpCommand(OTP_INIT, (0x0A548800 | 133));
|
||||
uint64_t val = 0;
|
||||
@ -78,7 +78,7 @@ uint32_t l502_otp_write_cfg(uint32_t first_page) {
|
||||
| OTP_CHECK_FOR_PREV_WRITE, &val);
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* если была ошибка - делаем недействительным весь блок */
|
||||
if (err)
|
||||
l502_otp_make_invalid(first_page);
|
||||
}
|
||||
@ -88,23 +88,23 @@ uint32_t l502_otp_write_cfg(uint32_t first_page) {
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <EFBFBD> SDRAM <EFBFBD> OTP. <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>,
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> OTP <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* Проверяем, есть ли действтиельные настройки PLL и SDRAM в OTP. Если нет,
|
||||
то записываем их в OTP и инициализируем PLL вручную */
|
||||
void l502_otp_init(void) {
|
||||
uint32_t err=0, page, fnd=0, pll_setup=0;
|
||||
|
||||
//err = l502_otp_make_invalid(PBS00);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* ищем первый действительный блок настройки загрузки */
|
||||
for (page = PBS00; !(fnd && !err) && (page < 0xD8); page += 4) {
|
||||
uint64_t val;
|
||||
err = bfrom_OtpRead(page, OTP_LOWER_HALF, &val);
|
||||
if (!err && !((val>>OTP_INVALID_P)&0x3)) {
|
||||
fnd = 1;
|
||||
if (!val) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => PLL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если блок с настройками не был записан => PLL записываем
|
||||
вручную и записываем настройки для корректной инициализации
|
||||
в дальнейшем */
|
||||
if (!pll_setup) {
|
||||
l502_setup_pll();
|
||||
pll_setup = 1;
|
||||
@ -112,17 +112,17 @@ void l502_otp_init(void) {
|
||||
err = l502_otp_write_cfg(page);
|
||||
page+=4;
|
||||
if (!err && (page< 0xD8)) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть место - то дописываем вторую копию, чтобы всегда
|
||||
быть уверенным, что если даже при первом чтении была ошибка,
|
||||
все загрузится нормально */
|
||||
err = l502_otp_write_cfg(page);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLL,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если все страницы настроек испорчены, то инициализируем PLL,
|
||||
так как скорее всего его система не проинициализировала */
|
||||
if (!fnd && !pll_setup) {
|
||||
l502_setup_pll();
|
||||
}
|
||||
@ -130,16 +130,16 @@ void l502_otp_init(void) {
|
||||
}
|
||||
|
||||
void l502_init(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OTP-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> PLL, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> OTP <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>
|
||||
* SDRAM <EFBFBD> PLL <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> BlackFin */
|
||||
/* инициализация OTP-памяти и PLL, если эти значения не были уже
|
||||
* проинициализированны до этого. Если в OTP уже были нужные значения, то
|
||||
* SDRAM и PLL проинициализированы уже загрузочным кодом BlackFin */
|
||||
l502_otp_init();
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI */
|
||||
/* настройка SPI */
|
||||
fpga_spi_init();
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT0 */
|
||||
/* настройки SPORT0 */
|
||||
*pSPORT0_TCLKDIV = 0;
|
||||
*pSPORT0_RCLKDIV = 0;
|
||||
|
||||
@ -153,17 +153,17 @@ void l502_init(void) {
|
||||
*pPORTF_MUX = (*pPORTF_MUX & 0xFFFC) | 1;
|
||||
*pPORTF_FER |= PF0 | PF1 | PF2 | PF3 | PF4 | PF5 | PF6 | PF7;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT RX <EFBFBD><EFBFBD> IVG7 */
|
||||
/* назначение SPORT RX на IVG7 */
|
||||
*pSIC_IAR2 = (*pSIC_IAR2 & 0xFFFFFFF0UL) | P16_IVG(7);
|
||||
REGISTER_ISR(7, isr_sport_dma_rx);
|
||||
/* SPORT TX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> IVG9 */
|
||||
/* SPORT TX оставляем на IVG9 */
|
||||
REGISTER_ISR(9, isr_sport_dma_tx);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* настройка HostDMA-интерфейса */
|
||||
hdma_init();
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> */
|
||||
/* если SDRAM не настроена, то инициализируем ее */
|
||||
if (*pEBIU_SDSTAT & SDRS) {
|
||||
uint32_t* a=0;
|
||||
*pEBIU_SDRRC = L502_SDRAM_SDRRC;
|
||||
@ -171,12 +171,12 @@ void l502_init(void) {
|
||||
*pEBIU_SDGCTL = L502_SDRAM_SDGCTL;
|
||||
ssync();
|
||||
|
||||
*a = 0; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
*a = 0; /* записываем по нулевому адресу произвольное слово, чтобы активировать память */
|
||||
|
||||
while (*pEBIU_SDSTAT & SDRS) {}
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* инициализируем параметры для потоков ввода/вывода */
|
||||
l502_stream_init();
|
||||
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @addtogroup config_params
|
||||
@{
|
||||
@file l502_params.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - g_set.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Файл содержит функции по обработке команд от ПК на установку параметров
|
||||
конфигурации сбора данных и других параметров.
|
||||
Только в данном файле должны быть изменения полей структуры общих
|
||||
настроек - g_set.
|
||||
Так же здесь */
|
||||
|
||||
|
||||
#include <stdint.h>
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* проверка правильного режима синхронизации */
|
||||
#define CHECK_SYNC_MODE(cmd) (((cmd) != L502_SYNC_INTERNAL) \
|
||||
&& ((cmd) !=L502_SYNC_EXTERNAL_MASTER) \
|
||||
&& ((cmd) != L502_SYNC_DI_SYN1_RISE) \
|
||||
@ -44,13 +44,13 @@ t_module_info g_module_info;
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Установка количества логических каналов
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> g_set.lch_cnt <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
|
||||
Проверка и запись в поле g_set.lch_cnt значение кол-ва каналов в логической
|
||||
таблице АЦП.
|
||||
|
||||
@param[in] lch_cnt <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 1 <EFBFBD><EFBFBD> #L502_LTABLE_MAX_CH_CNT)
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] lch_cnt Количество логических каналов (от 1 до #L502_LTABLE_MAX_CH_CNT)
|
||||
@return Код ошибки */
|
||||
int32_t params_set_lch_cnt(uint32_t lch_cnt) {
|
||||
if (lch_cnt > L502_LTABLE_MAX_CH_CNT)
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
@ -58,18 +58,18 @@ int32_t params_set_lch_cnt(uint32_t lch_cnt) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Установить параметры логического канала
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g_set.lch[]
|
||||
Функция проверяет входные параметры и записывает их в соответствующее поле
|
||||
таблицы g_set.lch[]
|
||||
|
||||
@param[in] index <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [0, L502_LTABLE_MAX_CH_CNT-1]
|
||||
@param[in] ch <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> 15 <EFBFBD><EFBFBD><EFBFBD> 31)
|
||||
@param[in] mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] range <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] avg <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] flags <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] index Номер логического канала [0, L502_LTABLE_MAX_CH_CNT-1]
|
||||
@param[in] ch Номер физического канала (от 0 до 15 или 31)
|
||||
@param[in] mode Режим измерения для данного лог. канала
|
||||
@param[in] range Диапазон измерения для данного лог. канала
|
||||
@param[in] avg Коэф. усреднения по данному лог. каналу
|
||||
@param[in] flags Дополнительные флаги
|
||||
@return Код ошибки */
|
||||
int32_t params_set_lch(uint32_t index, uint32_t ch, t_l502_lch_mode mode,
|
||||
t_l502_adc_range range, uint32_t avg, uint32_t flags) {
|
||||
if (index >= L502_LTABLE_MAX_CH_CNT)
|
||||
@ -89,9 +89,9 @@ int32_t params_set_lch(uint32_t index, uint32_t ch, t_l502_lch_mode mode,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
@param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка делителя частоты АЦП
|
||||
@param[in] div Значение делителя
|
||||
@return Код ошибки */
|
||||
int32_t params_set_adc_freq_div(uint32_t div) {
|
||||
if ((div==0) || (div > L502_ADC_FREQ_DIV_MAX))
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
@ -99,17 +99,17 @@ int32_t params_set_adc_freq_div(uint32_t div) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] freq_code <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#L502_REF_FREQ_2000KHZ <EFBFBD><EFBFBD><EFBFBD> #L502_REF_FREQ_1500KHZ
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка значения опорной частоты
|
||||
@param[in] freq_code Значение частоты. Для внутренней может быть только
|
||||
#L502_REF_FREQ_2000KHZ или #L502_REF_FREQ_1500KHZ
|
||||
@return Код ошибки */
|
||||
int32_t params_set_ref_freq(uint32_t freq_code) {
|
||||
g_set.ref_freq = freq_code;
|
||||
return 0;
|
||||
}
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] delay <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> L502_ADC_INTERFRAME_DELAY_MAX)
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка значения межкадровой задержки
|
||||
@param[in] delay Значение межкадровой задержки (от 0 до L502_ADC_INTERFRAME_DELAY_MAX)
|
||||
@return Код ошибки */
|
||||
int32_t params_set_adc_interframe_delay(uint32_t delay) {
|
||||
if (delay > L502_ADC_INTERFRAME_DELAY_MAX)
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
@ -117,9 +117,9 @@ int32_t params_set_adc_interframe_delay(uint32_t delay) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] sync_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_sync_mode
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка источника опроной частоты синхронизации
|
||||
@param[in] sync_mode Значение из #t_l502_sync_mode
|
||||
@return Код ошибки */
|
||||
int32_t params_set_sync_mode(t_l502_sync_mode sync_mode) {
|
||||
int32_t err = CHECK_SYNC_MODE(sync_mode);
|
||||
if (!err)
|
||||
@ -127,9 +127,9 @@ int32_t params_set_sync_mode(t_l502_sync_mode sync_mode) {
|
||||
return err;
|
||||
}
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] sync_mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_sync_mode
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка источника синхронизации старта сбора данных
|
||||
@param[in] sync_mode Значение из #t_l502_sync_mode
|
||||
@return Код ошибки */
|
||||
int32_t params_set_sync_start_mode(t_l502_sync_mode sync_mode) {
|
||||
int32_t err = CHECK_SYNC_MODE(sync_mode);
|
||||
if (!err)
|
||||
@ -138,9 +138,9 @@ int32_t params_set_sync_start_mode(t_l502_sync_mode sync_mode) {
|
||||
}
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка делителя частоты синхронного ввода цифровых линий
|
||||
@param[in] div Значение делителя
|
||||
@return Код ошибки */
|
||||
int32_t params_set_din_freq_div(uint32_t div) {
|
||||
if ((div==0) || (div > L502_DIN_FREQ_DIV_MAX))
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
@ -148,9 +148,9 @@ int32_t params_set_din_freq_div(uint32_t div) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||||
@param[in] div <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (1 <EFBFBD><EFBFBD><EFBFBD> 2)
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Установка делителя частоты вывода на ЦАП
|
||||
@param[in] div Значение делителя (1 или 2)
|
||||
@return Код ошибки */
|
||||
int32_t params_set_dac_freq_div(uint32_t div) {
|
||||
if ((div < X502_OUT_FREQ_DIV_MIN) || (div > X502_OUT_FREQ_DIV_MAX))
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
@ -161,18 +161,18 @@ int32_t params_set_dac_freq_div(uint32_t div) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
/** @brief Запись параметров сбора в регистры ПЛИС
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #g_set <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Функция выполняет запись всех параметров из структуры #g_set в регистры
|
||||
ПЛИС. Функция может вызываться только когда сбор данных остановлен.
|
||||
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@return Код ошибки */
|
||||
int32_t configure(void) {
|
||||
uint16_t ch;
|
||||
|
||||
int32_t err = g_mode != L502_BF_MODE_IDLE ? L502_BF_ERR_STREAM_RUNNING : 0;
|
||||
if (!err) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* записываем логическую таблицу */
|
||||
for (ch = 0; ch < g_set.lch_cnt; ch++) {
|
||||
uint32_t wrd = ((g_set.lch[ch].phy_ch & 0xF) << 3) | (g_set.lch[ch].range & 0x7);
|
||||
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
/** @defgroup config_params <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @defgroup config_params Настройки сбора данных модуля */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup config_params
|
||||
@{
|
||||
@file l502_params.h
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g_set, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Файл содержит определение структур, описывающих текущие
|
||||
настройки сбора данных для модуля и объявляет
|
||||
внешнюю переменную g_set, содержащую эти параметры
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef L502_PARAMS_H_
|
||||
@ -15,48 +15,48 @@
|
||||
|
||||
#include "l502_defs.h"
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/** Калибровочные коэффициенты ЦАП */
|
||||
typedef struct {
|
||||
float offs; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
float k; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
float offs; /**< Смещение нуля */
|
||||
float k; /**< Коэффициент шкалы */
|
||||
} t_dac_cbr_coef;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Информация о используемом модуле */
|
||||
typedef struct {
|
||||
uint32_t devflags; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t fpga_ver; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPGA */
|
||||
uint8_t plda_ver; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PLDA */
|
||||
t_dac_cbr_coef dac_cbr[L502_DAC_CH_CNT]; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
uint32_t devflags; /**< Флаги с информацией о наличии опций и сост. модуля */
|
||||
uint16_t fpga_ver; /**< Версия FPGA */
|
||||
uint8_t plda_ver; /**< Версия PLDA */
|
||||
t_dac_cbr_coef dac_cbr[L502_DAC_CH_CNT]; /**< Коэффициенты ЦАП */
|
||||
} t_module_info;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Параметры логического канала */
|
||||
typedef struct {
|
||||
uint8_t phy_ch; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t mode; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t range; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t avg; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t flags; /**< <EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t phy_ch; /**< Номер физического канала */
|
||||
uint8_t mode; /**< Режим сбора */
|
||||
uint8_t range; /**< Диапазон */
|
||||
uint8_t avg; /**< Коэф. усреднения */
|
||||
uint32_t flags; /**< Доп. флаги */
|
||||
} t_lch;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Настройки сбора данных */
|
||||
typedef struct {
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Таблица логических каналов */
|
||||
t_lch lch[L502_LTABLE_MAX_CH_CNT];
|
||||
uint16_t lch_cnt; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t adc_freq_div; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
uint32_t din_freq_div; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t adc_frame_delay; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint32_t ref_freq; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (2 <EFBFBD><EFBFBD><EFBFBD> 1.5 <EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t out_freq_div; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t sync_mode; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t sync_start_mode; /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint16_t lch_cnt; /**< Количество каналов в лог. таблице */
|
||||
uint32_t adc_freq_div; /**< Делитель частоты АЦП */
|
||||
uint32_t din_freq_div; /**< Делитель частоты для цифрового входа */
|
||||
uint32_t adc_frame_delay; /**< Межкадровая задержка */
|
||||
uint32_t ref_freq; /**< Значение опорной частоты (2 или 1.5 МГц) или внешняя */
|
||||
uint16_t out_freq_div; /**< Делитель частоты вывода */
|
||||
uint8_t sync_mode; /**< Режим синхронизации для опорной частоты */
|
||||
uint8_t sync_start_mode; /**< Режим запуска сигнала синхронизации */
|
||||
} t_settings;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Структура, содержащая текущие настройки сбора данных */
|
||||
extern t_settings g_set;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Структура, содержащая информацию о модуле */
|
||||
extern t_module_info g_module_info;
|
||||
|
||||
int32_t configure(void);
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @defgroup sport_rx <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 */
|
||||
/** @defgroup sport_rx Прием потока данных по SPORT0 */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup sport_rx
|
||||
@{
|
||||
@file l502_sport_rx.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
Файл содержит описания функций для управления приемом потока по SPORT0
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef L502_SPORT_RX_H
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @addtogroup sport_tx
|
||||
@{
|
||||
@file l502_sport_tx.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_init(),
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req(). <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 16
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_stop().
|
||||
Файл содержит логику для управления передачей по SPORT0.
|
||||
Изначально DMA должен быть проинициализирован с помощью sport_tx_init(),
|
||||
Передача начинается с помщью sport_tx_start_req(). Можно поставить до 16
|
||||
запросов одновременно.
|
||||
Останвить все текущие передачи можно с помощью sport_tx_stop().
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* дескриптор DMA размера 5 16-битных слов */
|
||||
typedef struct {
|
||||
uint16_t ndpl;
|
||||
uint16_t sal;
|
||||
@ -52,9 +52,9 @@ static volatile int f_tx_was_empty = 0;
|
||||
void sport_tx_done(uint32_t* addr, uint32_t size);
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> #t_x502_out_status_flags,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ȕ.
|
||||
@brief Чтение флагов статуса вывода
|
||||
@return Флаги статуса --- набор битов из #t_x502_out_status_flags,
|
||||
объединенных через логическое “ИЛИ”.
|
||||
******************************************************************************/
|
||||
uint32_t sport_tx_out_status(void) {
|
||||
uint32_t ret = 0;
|
||||
@ -69,10 +69,10 @@ uint32_t sport_tx_out_status(void) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT.
|
||||
/** @brief Начальная инициализация канала DMA на передачу по SPORT.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Функция устанавливает параметры DMA которые не меняются при последующей работе
|
||||
прошивки */
|
||||
void sport_tx_init(void) {
|
||||
int i;
|
||||
for (i=0; i < SPORT_TX_DESCR_CNT; i++) {
|
||||
@ -89,42 +89,42 @@ void sport_tx_init(void) {
|
||||
}
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SPORT0 <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <EFBFBD><EFBFBD><EFBFBD> SPORT 0 */
|
||||
/* Функция разрешает канал DMA для передачи данных в SPORT0 и саму передачу
|
||||
* для SPORT 0 */
|
||||
static void f_sport_tx_start(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
/* разрешаем передачу по SPORT'у */
|
||||
*pSPORT0_TCR1 |= TSPEN;
|
||||
f_first = 0;
|
||||
f_tx_was_empty = 0;
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
/** @brief Останов сбора по SPORT0.
|
||||
*
|
||||
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><> <20><><EFBFBD><EFBFBD> */
|
||||
* Функция запрещает прием по SPORT0 и соответствующий канал DMA на прем */
|
||||
void sport_tx_stop(void) {
|
||||
*pSIC_IMASK0 &= ~IRQ_DMA4;
|
||||
|
||||
*pDMA4_CONFIG = 0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 3-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* нужно подождать до 3-х циклов, чтобы DMA действительно завершился */
|
||||
ssync();
|
||||
ssync();
|
||||
ssync();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT */
|
||||
/* запрет передачи по SPORT */
|
||||
*pSPORT0_TCR1 &= ~TSPEN;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> DMA */
|
||||
/* сбрасываем признаки прерываний от DMA */
|
||||
*pDMA4_IRQ_STATUS = DMA_DONE | DMA_ERR;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* заново инициализируем все дескрипторы */
|
||||
sport_tx_init();
|
||||
}
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@brief Получить количество свободных дескрипторов на передачу
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req().
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция возвращает количество запросов, которое можно поставить в очередь
|
||||
на передачу с помощью sport_tx_start_req().
|
||||
@return Количество запросов на передачу, которое можно поставить в очередь
|
||||
******************************************************************************/
|
||||
int sport_tx_req_rdy(void) {
|
||||
return SPORT_TX_DESCR_CNT - (f_put_cnt - f_done_cnt + 1);
|
||||
@ -132,33 +132,33 @@ int sport_tx_req_rdy(void) {
|
||||
|
||||
|
||||
/**************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
@brief Поставить запрос на передачу по SPORT0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> sport_tx_req_rdy()).
|
||||
Функция ставит запрос на передачу указанных данных. Сами данные не копируются,
|
||||
т.е. буфер нельзя будет использовать до того, как данные не будут переданы!
|
||||
Для постановки запроса необходимо, чтобы был свободный дескриптор (можно
|
||||
узнать через sport_tx_req_rdy()).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #SPORT_TX_REQ_SIZE_MAX
|
||||
Количество слов в запросе не должно превышать #SPORT_TX_REQ_SIZE_MAX
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
DMA <EFBFBD> SPORT0.
|
||||
При добавление первого дескриптора автомтически разрешается передача по
|
||||
DMA и SPORT0.
|
||||
|
||||
@param[in] buf <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] buf Указатель на массив на передачу.
|
||||
@param[in] size Количество 32-битных слов на передачу
|
||||
*******************************************************************************/
|
||||
void sport_tx_start_req(uint32_t* buf, uint32_t size) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> DMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* запрещаем прерывание от DMA на случай гонок с изменением позиций */
|
||||
*pSIC_IMASK0 &= ~IRQ_DMA4;
|
||||
|
||||
f_descrs[f_put_descr].sal = (uint32_t)buf & 0xFFFF;
|
||||
f_descrs[f_put_descr].sah = ((uint32_t)buf >> 16) & 0xFFFF;
|
||||
f_descrs[f_put_descr].xcnt = size*2;
|
||||
f_descrs[f_put_descr].cfg = SPORT_TX_DMA_CFG_WAIT;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* убеждаемся, что данные будут уже записаны в память к моменту запуска DMA */
|
||||
ssync();
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> */
|
||||
/* если DMA сейчас остановлен => запускаем его */
|
||||
if (f_put_cnt==f_done_cnt) {
|
||||
uint32_t cfg_wrd = SPORT_TX_DMA_CFG_START;
|
||||
*pDMA4_CONFIG = cfg_wrd;
|
||||
@ -179,14 +179,14 @@ void sport_tx_start_req(uint32_t* buf, uint32_t size) {
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Обработчик прерывания по SPORT0 на завершение передачи.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_done().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA (<28><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
Прерывание возникает, когда был передан блок данных по SPORT0, соответствующий
|
||||
одному дескриптору.
|
||||
Функция рассчитывает количество переданных данных и вызывает sport_tx_done().
|
||||
Также функция помечает дескриптор как свободный и при необходимости
|
||||
снова запускает DMA (если он был остановлен, но при этом уже добавлен новый
|
||||
дескриптор на передачу) */
|
||||
ISR( isr_sport_dma_tx) {
|
||||
if (*pDMA4_IRQ_STATUS & DMA_DONE) {
|
||||
uint32_t* addr;
|
||||
@ -195,8 +195,8 @@ ISR( isr_sport_dma_tx) {
|
||||
|
||||
*pDMA4_IRQ_STATUS = DMA_DONE;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обработку выполняем только в случае, если есть начатые, но не завершенные
|
||||
дескрипторы */
|
||||
if (f_done_cnt != f_put_cnt) {
|
||||
f_done_cnt++;
|
||||
|
||||
@ -215,7 +215,7 @@ ISR( isr_sport_dma_tx) {
|
||||
ssync();
|
||||
|
||||
status = *pDMA4_IRQ_STATUS;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если DMA остановлен, а дескрипторы на передачу еще есть => запускаем снова */
|
||||
if ((f_done_cnt != f_put_cnt) && !(status & DMA_RUN)) {
|
||||
*pDMA4_CONFIG = SPORT_TX_DMA_CFG_START;
|
||||
}
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
/** @defgroup sport_tx <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 */
|
||||
/** @defgroup sport_tx Передача потока данных по SPORT0 */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup sport_tx
|
||||
@{
|
||||
@file l502_sport_tx.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
Файл содержит описания функций для управления передачи потока по SPORT0
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef L502_SPORT_TX_H
|
||||
#define L502_SPORT_TX_H
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req() */
|
||||
/** Максимальный размер при передаче в функцию sport_tx_start_req() */
|
||||
#define SPORT_TX_REQ_SIZE_MAX (16*1024)
|
||||
|
||||
void sport_tx_init(void);
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
@{
|
||||
|
||||
@file l502_stream.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>/DIN <20> <20><> <20> <20><> <20><> <20> <20><><EFBFBD>/DOUT.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Файл содержит функции обработки потоков от АЦП/DIN в ПК и от ПК в ЦАП/DOUT.
|
||||
Также в этот файл внесена реализация функций приема по SPORT0, так как они
|
||||
связаны с логикой управления потоков.
|
||||
*/
|
||||
|
||||
|
||||
@ -28,12 +28,12 @@
|
||||
#include "l502_sport_rx.h"
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <EFBFBD> 32-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Размер буфера на прием данных по SPORT0 в 32-битных словах */
|
||||
#define L502_SPORT_IN_BUF_SIZE (2048*1024)
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Размер буфера для приема данных по HostDMA на вывод в 32-битных словах */
|
||||
#define L502_HDMA_OUT_BUF_SIZE (1024*1024)
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20><>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Шаг прерываний для приема данных по SPORT0 по-умолчанию */
|
||||
#define L502_DEFAULT_SPORT_RX_BLOCK_SIZE (32*1024)
|
||||
|
||||
|
||||
@ -41,40 +41,40 @@
|
||||
|
||||
t_in_stream_state g_stream_in_state = IN_STREAM_STOP;
|
||||
t_out_stream_state g_stream_out_state = OUT_STREAM_STOP;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/** Режим работы - определяет, запущен ли синхронный сбор или тест */
|
||||
volatile int g_mode = L502_BF_MODE_IDLE;
|
||||
|
||||
int g_streams = L502_STREAM_ADC;
|
||||
static int f_bf_reg = 0;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* слово, обозначающее, что произошло переполнение */
|
||||
static const uint32_t f_overflow_wrd = L502_STREAM_IN_MSG_OVERFLOW;
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> digin <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> SPORT (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
/* буфер для приема digin и данных АЦП от SPORT (в неинициализируемой области) */
|
||||
#include "l502_sdram_noinit.h"
|
||||
static volatile uint32_t f_sport_in_buf[L502_SPORT_IN_BUF_SIZE];
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* позиция в буфере в которую будет записан следующий принятых отсчет */
|
||||
static volatile uint32_t f_sport_in_put_pos = 0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* позиция в буфере за последним обработанным отсчетом */
|
||||
static uint32_t f_sport_in_proc_pos = 0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
/* позиция в буфере за последним изятым из буфера отсчетом (позиция первого занятого отсчета) */
|
||||
static volatile uint32_t f_sport_in_get_pos = 0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 */
|
||||
/* шаг прерываний на прием по SPORT0 */
|
||||
static uint32_t f_sport_in_block_size = L502_DEFAULT_SPORT_RX_BLOCK_SIZE;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* реально используемый размер входного буфера на прием */
|
||||
static uint32_t f_sport_in_buf_size = L502_SPORT_IN_BUF_SIZE;
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20> DIGOUT */
|
||||
/* буфер для прв кинятых данных по HDMA для вывода на ЦАП и DIGOUT */
|
||||
#include "l502_sdram_noinit.h"
|
||||
static volatile uint32_t f_hdma_out_buf[L502_HDMA_OUT_BUF_SIZE];
|
||||
static volatile uint32_t f_hdma_out_put_pos = 0; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA */
|
||||
static uint32_t f_hdma_out_start_pos; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
static volatile uint32_t f_hdma_out_get_pos = 0; /* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static volatile uint32_t f_hdma_out_put_pos = 0; /* указатель на позицию за последним принятым по HDMA */
|
||||
static uint32_t f_hdma_out_start_pos; /* указатель на позицию за последним поставленным на прием словом
|
||||
(с нее будет стартовать следующий запрос) */
|
||||
static volatile uint32_t f_hdma_out_get_pos = 0; /* указатель на позицию за последним обработанным словом
|
||||
(с нее будет взято следующее слово для обработки, когда будет готово */
|
||||
static int f_hdma_out_block_size = 0x8000;
|
||||
static int f_hdma_out_proc_pos;
|
||||
|
||||
@ -86,13 +86,13 @@ static uint32_t f_recv_size = 0;
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> SPORT'<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/DIGIN */
|
||||
/* функция вызывается при возникновении переполнения буфера на прием
|
||||
по SPORT'у данных АЦП/DIGIN */
|
||||
static void f_stream_in_set_overflow(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> */
|
||||
/* останавливаем прием данных от АЦП */
|
||||
sport_rx_stop();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* устанавливаем флаг, что нужно передать сообщение о
|
||||
переполнении */
|
||||
g_stream_in_state = IN_STREAM_OV_ALERT;
|
||||
}
|
||||
|
||||
@ -100,22 +100,22 @@ static void f_stream_in_set_overflow(void) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @brief Начальная инициализация параметров для синхронных потоков */
|
||||
void l502_stream_init(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* останавливаем сбор данных, если он был запущен */
|
||||
fpga_reg_write(L502_REGS_IOHARD_GO_SYNC_IO, 0);
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, 0);
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT */
|
||||
/* настройка DMA на передачу по SPORT */
|
||||
sport_tx_init();
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Запуск предзагрузки данных на вывода
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> BlackFin <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Данная функция запускает предзагрузку данных потока на вывод.
|
||||
Используется, чтобы загрузить данные в буфер BlackFin до запуска синхронного
|
||||
ввода-вывода.
|
||||
@return Код ошибки */
|
||||
int32_t stream_out_preload(void) {
|
||||
int32_t err = g_stream_out_state==OUT_STREAM_RUN ? L502_BF_ERR_STREAM_RUNNING :
|
||||
0;
|
||||
@ -123,10 +123,10 @@ int32_t stream_out_preload(void) {
|
||||
f_hdma_out_get_pos = f_hdma_out_start_pos =
|
||||
f_hdma_out_put_pos = f_hdma_out_proc_pos = 0;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA */
|
||||
/* разрешаем прием по HDMA */
|
||||
hdma_recv_start();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> stream_proc() */
|
||||
/* запускаем первый блок на прием (остальные будут
|
||||
добавлены из stream_proc() */
|
||||
f_hdma_out_start_pos+=f_hdma_out_block_size;
|
||||
hdma_recv_req_start((uint32_t*)f_hdma_out_buf, f_hdma_out_block_size);
|
||||
|
||||
@ -139,8 +139,8 @@ int32_t stream_out_preload(void) {
|
||||
static void f_set_streams(uint32_t streams) {
|
||||
uint32_t wrd_en = 0;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> hdma */
|
||||
/* если уже запущен потоковый режим и разрешается один из
|
||||
потоков на ввод, то инициализируем прием по SPORT и передачу по hdma */
|
||||
if (g_mode == L502_BF_MODE_STREAM) {
|
||||
if ((streams & L502_STREAM_ALL_IN) && !(g_streams & L502_STREAM_ALL_IN)) {
|
||||
sport_rx_start();
|
||||
@ -151,7 +151,7 @@ static void f_set_streams(uint32_t streams) {
|
||||
}
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPGA */
|
||||
/* изменяем разрешенные потоки в регистре FPGA */
|
||||
if (streams & L502_STREAM_ADC)
|
||||
wrd_en |= 0x1;
|
||||
if (streams & L502_STREAM_DIN)
|
||||
@ -159,47 +159,47 @@ static void f_set_streams(uint32_t streams) {
|
||||
fpga_reg_write(L502_REGS_IOARITH_IN_STREAM_ENABLE, wrd_en);
|
||||
|
||||
|
||||
/** @todo: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @todo: разрешение на лету выходных потоков */
|
||||
|
||||
g_streams = streams;
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] streams <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_streams, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @brief Разрешение указанных синхронных потоков
|
||||
@param[in] streams Битовая маска из #t_l502_streams, указывающая какие потоки
|
||||
должны быть разрешены (в дополнения к уже разрешенным)
|
||||
@return Код ошибки */
|
||||
int32_t stream_enable(uint32_t streams) {
|
||||
f_set_streams(g_streams | streams);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] streams <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_streams, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @brief Запрещение указанных синхронных потоков
|
||||
@param[in] streams Битовая маска из #t_l502_streams, указывающая какие потоки
|
||||
должны быть запрещены
|
||||
@return Код ошибки */
|
||||
int32_t stream_disable(uint32_t streams) {
|
||||
f_set_streams(g_streams & ~streams);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@brief Запуск синхронного ввода-вывода
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция запускает синхронный ввод-вывод платы.
|
||||
При этом начинается передача по всем ранее разрешенным потокам с помощью
|
||||
stream_enable().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> stream_enable()
|
||||
<EFBFBD><EFBFBD><EFBFBD> stream_disable().
|
||||
После вызова этой функции изменять настройки модуля уже нельязя, однако
|
||||
можно дополнительно разрешать или запрещать потоки через stream_enable()
|
||||
или stream_disable().
|
||||
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@return Код ошибки.
|
||||
***************************************************************************/
|
||||
int32_t streams_start(void) {
|
||||
int32_t err = g_mode != L502_BF_MODE_IDLE ? L502_BF_ERR_STREAM_RUNNING : 0;
|
||||
if (!err) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* прием по SPORT инициализируется всесте с началом запуска
|
||||
синхронного сбора */
|
||||
f_sport_in_put_pos = f_sport_in_get_pos = f_sport_in_proc_pos = 0;
|
||||
|
||||
|
||||
@ -213,20 +213,20 @@ int32_t streams_start(void) {
|
||||
f_set_streams(g_streams);
|
||||
|
||||
if (g_streams & L502_STREAM_ALL_OUT) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TFS <EFBFBD><EFBFBD> SPORT */
|
||||
/* разрешаем ПЛИС генерацию TFS по SPORT */
|
||||
f_bf_reg |= L502_REGBIT_IOHARD_OUT_TFS_EN_Msk;
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, f_bf_reg);
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если не было предзагрузки до запуска,
|
||||
то запускаем прием сейчас */
|
||||
if ((g_stream_out_state == OUT_STREAM_STOP) ||
|
||||
(g_stream_out_state == OUT_STREAM_ERR)) {
|
||||
stream_out_preload();
|
||||
}
|
||||
|
||||
if (g_stream_out_state == OUT_STREAM_PRELOAD) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* выполняем предзагрузку данных */
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, f_bf_reg | 1);
|
||||
g_stream_out_state = OUT_STREAM_RUN;
|
||||
}
|
||||
@ -234,11 +234,11 @@ int32_t streams_start(void) {
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> 2-<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/* Так как конвейер автомата управления входной коммутации АЦП состоит
|
||||
из 2-х стадий, для корректного синхронного старта необходимо в
|
||||
ыполнить два раза предзагрузку. В противном случае,
|
||||
время момента первого отсчета может не совпадать с моментом
|
||||
запуска синхронизации
|
||||
*/
|
||||
fpga_reg_write(L502_REGS_IOHARD_PRELOAD_ADC, 1);
|
||||
fpga_reg_write(L502_REGS_IOHARD_PRELOAD_ADC, 1);
|
||||
@ -254,12 +254,12 @@ int32_t streams_start(void) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Останов синхронных потоков ввода-вывода.
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT <EFBFBD> <20><> HostDMA
|
||||
По этой функции останавливаются все синхронные потоки.
|
||||
Запрещается передача потоков по SPORT и по HostDMA
|
||||
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@return Код ошибки */
|
||||
int32_t streams_stop(void) {
|
||||
int32_t err = g_mode != L502_BF_MODE_STREAM ? L502_BF_ERR_STREAM_STOPPED : 0;
|
||||
if (!err) {
|
||||
@ -267,11 +267,11 @@ int32_t streams_stop(void) {
|
||||
hdma_recv_stop();
|
||||
fpga_reg_write(L502_REGS_IOHARD_GO_SYNC_IO, 0);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
/* запрещаем прием и передачу по SPORT'у */
|
||||
sport_rx_stop();
|
||||
sport_tx_stop();
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TFS <EFBFBD> RFS */
|
||||
/* запрещаем генерацию TFS и RFS */
|
||||
f_bf_reg = 0;
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, f_bf_reg);
|
||||
|
||||
@ -285,70 +285,70 @@ int32_t streams_stop(void) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/** @brief Фоновая обработка потокой ввода-вывода
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>/DIGIN <20>/<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> DOUT. <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Функция переодически вызывается из основного цикла программы.
|
||||
При рабочем режиме, проверяются, есть
|
||||
ли необработанные данные пришедшие от АЦП/DIGIN и/или пришедшие от ПК данные
|
||||
на ЦАП или DOUT. При их наличии вызывается соответствующая функция пользовательской
|
||||
обработки данных.
|
||||
Также, если было переполнение и все данные до переполнения были обработаны,
|
||||
то в ПК посылается слово о том, что в этом месте произошло переполнение */
|
||||
void stream_proc(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если запущен поток ввода */
|
||||
if ((g_stream_in_state != IN_STREAM_STOP) && (g_stream_in_state != IN_STREAM_ERR)) {
|
||||
uint32_t sport_rdy_size;
|
||||
uint32_t put_pos = f_sport_in_put_pos;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> sport'<EFBFBD> */
|
||||
/* смотрим, сколько принято необработанных данных по sport'у */
|
||||
sport_rdy_size = put_pos >= f_sport_in_proc_pos ?
|
||||
put_pos - f_sport_in_proc_pos : f_sport_in_buf_size - f_sport_in_proc_pos;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть необработанные данные - вызываем функцию для обработки */
|
||||
if (sport_rdy_size) {
|
||||
uint32_t processed = usr_in_proc_data(
|
||||
(uint32_t*)&f_sport_in_buf[f_sport_in_proc_pos],
|
||||
sport_rdy_size);
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обновляем счетчик обработканных данных */
|
||||
f_sport_in_proc_pos += processed;
|
||||
if (f_sport_in_proc_pos==f_sport_in_buf_size)
|
||||
f_sport_in_proc_pos = 0;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если было переполнение - нужно передать слово о переполнениии.
|
||||
передаем его после того, как передадим все слова до переполнения */
|
||||
if ((g_stream_in_state == IN_STREAM_OV_ALERT) && !sport_rdy_size && hdma_send_req_rdy()) {
|
||||
hdma_send_req_start(&f_overflow_wrd, 1, 1);
|
||||
g_stream_in_state = IN_STREAM_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть поток на вывод */
|
||||
if ((g_stream_out_state == OUT_STREAM_PRELOAD) ||
|
||||
(g_stream_out_state == OUT_STREAM_RUN)) {
|
||||
|
||||
uint32_t hdma_rdy_size;
|
||||
uint32_t put_pos = f_hdma_out_put_pos;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA */
|
||||
/* проверяем, сколько есть необработанных данных, принятых по HDMA */
|
||||
hdma_rdy_size = put_pos >= f_hdma_out_proc_pos ?
|
||||
put_pos - f_hdma_out_proc_pos : L502_HDMA_OUT_BUF_SIZE - f_hdma_out_proc_pos;
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> -> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если такие есть -> пробуем обработать */
|
||||
if (hdma_rdy_size != 0) {
|
||||
uint32_t processed = usr_out_proc_data(
|
||||
(uint32_t*)&f_hdma_out_buf[f_hdma_out_proc_pos],
|
||||
hdma_rdy_size);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обновляем счетчик обработанных данных */
|
||||
f_hdma_out_proc_pos += processed;
|
||||
if (f_hdma_out_proc_pos==L502_HDMA_OUT_BUF_SIZE)
|
||||
f_hdma_out_proc_pos = 0;
|
||||
}
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть свободное место в буфере на прием и есть свободные
|
||||
дескрипторы => ставим новый запрос на прием даннх */
|
||||
if (hdma_recv_req_rdy()) {
|
||||
uint32_t get_pos = f_hdma_out_get_pos;
|
||||
|
||||
@ -367,17 +367,17 @@ void stream_proc(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> size <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
/** @brief Освобождение size слов из буфера приема по SPORT0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> size <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT0, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.<2E>. <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
Функция помечает, что size слов из начала той части буфера SPORT0, в которую
|
||||
были приняты данные, но не освобождены, как освобожденные. Т.е. в эту область
|
||||
снова можно будет принимать данные со SPORT0.
|
||||
При этом надо всегда следить, чтобы количество освобожденных данных не
|
||||
привышало количество обработанных!
|
||||
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] size Размер освобожденных данных в 32-битных словах */
|
||||
void stream_in_buf_free(uint32_t size) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обновляем позицию переданного слова */
|
||||
uint32_t get_pos = f_sport_in_get_pos;
|
||||
get_pos += size;
|
||||
if (get_pos >= f_sport_in_buf_size)
|
||||
@ -385,15 +385,15 @@ void stream_in_buf_free(uint32_t size) {
|
||||
f_sport_in_get_pos = get_pos;
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> size <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
/** @brief Освобождение size слов из буфера приема по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> size <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA, <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>.<2E>. <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><> HostDMA.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
Функция помечает, что size слов из начала той части буфера HostDMA, в которую
|
||||
были приняты данные от ПК, но не освобождены, как освобожденные. Т.е. в эту область
|
||||
снова можно будет принимать данные от ПК по HostDMA.
|
||||
При этом надо всегда следить, чтобы количество освобожденных данных не
|
||||
привышало количество обработанных!
|
||||
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] size Размер освобожденных данных в 32-битных словах */
|
||||
void stream_out_buf_free(uint32_t size) {
|
||||
uint32_t get_pos = f_hdma_out_get_pos;
|
||||
get_pos += size;
|
||||
@ -402,18 +402,18 @@ void stream_out_buf_free(uint32_t size) {
|
||||
f_hdma_out_get_pos = get_pos;
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
/** @brief Обработка завершения приема по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA <20> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_recv_req_start().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stream_proc().
|
||||
Функция вызывается из обработчика прерывания, когда завершился прием
|
||||
блока данных по HDMA в ПК, поставленного до этого на передачу с
|
||||
помощью hdma_recv_req_start().
|
||||
Функция просто обновляет счетчик принятых данных (а обработка будет уже
|
||||
из фоновой функции stream_proc().
|
||||
|
||||
@param[in] addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
@param[in] addr Адрес слова, сразу за последним принятым словом.
|
||||
@param[in] size Количество принятых 32-битных слов */
|
||||
void hdma_recv_done(uint32_t* addr, uint32_t size) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обновляем позицию принятого слова */
|
||||
uint32_t put_pos = f_hdma_out_put_pos;
|
||||
put_pos += size;
|
||||
if (put_pos == L502_HDMA_OUT_BUF_SIZE)
|
||||
@ -425,10 +425,10 @@ void hdma_recv_done(uint32_t* addr, uint32_t size) {
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Размер буфера на прием.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Функция возвращает размер буфера на прием по SPORT0
|
||||
@return размер буфера на прием в 32-битных словах */
|
||||
extern uint32_t sport_in_buffer_size(void) {
|
||||
return L502_SPORT_IN_BUF_SIZE;
|
||||
}
|
||||
@ -439,24 +439,24 @@ extern uint32_t sport_in_buffer_size(void) {
|
||||
/** @addtogroup sport_rx
|
||||
@{ */
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
/** @brief Установка шага прерывания для према по SPORT0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> DMA, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_SPORT_IN_BUF_SIZE.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #L502_SPORT_IN_BUF_SIZE.
|
||||
Функция устанавливает шаг прерываний для DMA, использующегося для
|
||||
приема данных синхронного ввода.
|
||||
При этом размер шага должен быть как имнимум в 4 раза меньше размера
|
||||
буфера #L502_SPORT_IN_BUF_SIZE.
|
||||
После установки шага определяется реально используемый размер буфера,
|
||||
как наибольшее число кратное шагу и не превышающее #L502_SPORT_IN_BUF_SIZE.
|
||||
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] size Размер шага прерывания в 32-битных словах
|
||||
@return Код ошибки */
|
||||
int32_t sport_in_set_step_size(uint32_t size) {
|
||||
int mul;
|
||||
if ((size >= L502_SPORT_IN_BUF_SIZE/4) || (size > 0x8000))
|
||||
return L502_BF_ERR_INVALID_CMD_PARAMS;
|
||||
mul = L502_SPORT_IN_BUF_SIZE/size;
|
||||
/* <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0x8000 <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
YCNT 16-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (+ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 2) */
|
||||
/* не может быть боьше 0x8000 шагов, так как регистр
|
||||
YCNT 16-разрядный (+ еще умножаем на 2) */
|
||||
if (mul > 0x8000)
|
||||
mul = 0x8000;
|
||||
f_sport_in_buf_size = size*mul;
|
||||
@ -465,26 +465,26 @@ int32_t sport_in_set_step_size(uint32_t size) {
|
||||
}
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
/** @brief Запуск сбора данных по SPORT0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA3 <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 2D, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> f_sport_in_block_size. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> DMA <EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 */
|
||||
Функция настраивает DMA3 на режим автобуфера с 2D, размер шага выбирается
|
||||
равным f_sport_in_block_size. После чего разрешается канал DMA и
|
||||
прием по SPORT0 */
|
||||
void sport_rx_start(void) {
|
||||
static volatile int dummy;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* запрещаем DMA */
|
||||
*pDMA3_CONFIG = 0;
|
||||
ssync();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* вычитываем все данные из буфера, если они были */
|
||||
while (*pSPORT0_STAT & RXNE) {
|
||||
dummy = *pSPORT0_RX16;
|
||||
ssync();
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* настраиваем DMA */
|
||||
*pDMA3_START_ADDR = (void*)f_sport_in_buf;
|
||||
*pDMA3_X_COUNT = 2*f_sport_in_block_size; /* <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SPORT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 16 <20><><EFBFBD> (<28><><EFBFBD><EFBFBD> <20> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 2) */
|
||||
*pDMA3_X_COUNT = 2*f_sport_in_block_size; /* так как SPORT настроен на 16 бит (хоть и 2 канала),
|
||||
а размер в 32 битных словах => умножаем на 2) */
|
||||
*pDMA3_X_MODIFY = 2;
|
||||
*pDMA3_Y_COUNT = f_sport_in_buf_size/f_sport_in_block_size;;
|
||||
*pDMA3_Y_MODIFY = 2;
|
||||
@ -493,54 +493,54 @@ void sport_rx_start(void) {
|
||||
|
||||
|
||||
ssync();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* разрешаем DMA */
|
||||
*pSIC_IMASK0 |= IRQ_DMA3;
|
||||
*pDMA3_CONFIG |= DMAEN;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
/* разрешаем прием по SPORT'у */
|
||||
*pSPORT0_RCR1 |= RSPEN;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RFS <EFBFBD><EFBFBD> SPORT0 */
|
||||
/* разрешаем генерацию RFS на SPORT0 */
|
||||
f_bf_reg |= L502_REGBIT_IOHARD_OUT_RFS_EN_Msk;
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, f_bf_reg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0
|
||||
/** @brief Останов сбора данных по SPORT0
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
Функция запрещает прием по SPORT0 и останавливает DMA */
|
||||
void sport_rx_stop(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RFS */
|
||||
/* останавливаем генерацию RFS */
|
||||
f_bf_reg &= ~L502_REGBIT_IOHARD_OUT_RFS_EN_Msk;
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, f_bf_reg);
|
||||
|
||||
ssync();
|
||||
ssync();
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT */
|
||||
/* запрещаем прием по SPORT */
|
||||
*pSPORT0_RCR1 &= ~RSPEN;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA */
|
||||
/* запрещаем DMA */
|
||||
*pDMA3_CONFIG =0; //&= ~DMAEN;
|
||||
*pSIC_IMASK0 &= ~IRQ_DMA3;
|
||||
//ssync();
|
||||
}
|
||||
|
||||
/** @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
/** @brief Обработчик прерывания по SPORT0 на прием.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
Прерывание возникает, когда был принят блок данных по SPORT0.
|
||||
Обновляем указатель принятых данных и проверяем переполнение */
|
||||
ISR(isr_sport_dma_rx) {
|
||||
if (*pDMA3_IRQ_STATUS & DMA_DONE) {
|
||||
uint32_t rdy_put_pos;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> DMA */
|
||||
/* сбрасываем прерывание от DMA */
|
||||
*pDMA3_IRQ_STATUS = DMA_DONE;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обновляем количество принятых данных на размер блока */
|
||||
f_sport_in_put_pos += f_sport_in_block_size;
|
||||
if (f_sport_in_put_pos == f_sport_in_buf_size)
|
||||
f_sport_in_put_pos = 0;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* смотрим, сколько свободно места в буфере на прием */
|
||||
uint32_t get_pos = f_sport_in_get_pos;
|
||||
rdy_put_pos = f_sport_in_put_pos > get_pos ?
|
||||
f_sport_in_buf_size -f_sport_in_put_pos + get_pos :
|
||||
@ -549,9 +549,9 @@ ISR(isr_sport_dma_rx) {
|
||||
|
||||
f_recv_size += f_sport_in_block_size;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если осталось не больше блока - то считаем за переполнение,
|
||||
т.к. тогда при следующем прерывании уже могут быть испорчены
|
||||
принятые ранее данные */
|
||||
if (rdy_put_pos < 2*f_sport_in_block_size) {
|
||||
f_stream_in_set_overflow();
|
||||
}
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
/** @defgroup streams <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @defgroup streams Управление потоками сбора данных */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup streams
|
||||
@{
|
||||
@file l502_stream.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HostDMA
|
||||
Файл содержит описания функций для работы с интерфейсом HostDMA
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef L502_STREAM_H_
|
||||
@ -13,32 +13,32 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
/** Состояние потока на ввод */
|
||||
typedef enum {
|
||||
IN_STREAM_STOP = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
IN_STREAM_RUN = 2, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
IN_STREAM_OV_ALERT = 4, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
IN_STREAM_ERR= 3 /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
IN_STREAM_STOP = 0, /**< Поток на ввод остановлен */
|
||||
IN_STREAM_RUN = 2, /**< Поток на ввод в рабочем режиме */
|
||||
IN_STREAM_OV_ALERT = 4, /**< Произошло переполнение - нужно сообщить о ошибке */
|
||||
IN_STREAM_ERR= 3 /**< Поток остановлен из-за ошибки/переполнения */
|
||||
} t_in_stream_state;
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Состояние потока на вывод */
|
||||
typedef enum {
|
||||
OUT_STREAM_STOP = 0, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
OUT_STREAM_PRELOAD = 1, /**< <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> <20><>, <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
OUT_STREAM_RUN = 2, /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
OUT_STREAM_ERR = 3, /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
OUT_STREAM_CYCLE = 4 /** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) */
|
||||
OUT_STREAM_STOP = 0, /**< Поток на вывод остановлен */
|
||||
OUT_STREAM_PRELOAD = 1, /**< Идет предзагрузка данных - данные принимаются
|
||||
от ПК, но еще не запущен синхронных сбор/выдача */
|
||||
OUT_STREAM_RUN = 2, /** Поток запущен на выдачу */
|
||||
OUT_STREAM_ERR = 3, /** Поток остановлен по ошибке (сейчас не используется) */
|
||||
OUT_STREAM_CYCLE = 4 /** Режим циклического буфера (сейчас не реализован) */
|
||||
} t_out_stream_state;
|
||||
|
||||
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> */
|
||||
/** Состояние потока на ввод */
|
||||
extern t_in_stream_state g_stream_in_state;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Состояние потока на вывод */
|
||||
extern t_out_stream_state g_stream_out_state;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> #t_l502_bf_mode */
|
||||
/** Режим работы прошивки из #t_l502_bf_mode */
|
||||
extern volatile int g_mode;
|
||||
/** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** Флаги, обозначающие какие потоки разрешены */
|
||||
extern int g_streams;
|
||||
|
||||
|
||||
|
||||
102
src/l502_tests.c
102
src/l502_tests.c
@ -1,26 +1,26 @@
|
||||
/** @file l502_test.c
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>.<2E>.)
|
||||
Данный файл содержит реализацию тестов аппаратуры.
|
||||
Эти тесты используется при наладке прибора и не выполняется в штатном режиме работы,
|
||||
однако включение их в прошивку позволяет выполнять проверку и после этапа наладки
|
||||
(однако не во время сбора данных и т.п.)
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> PC <EFBFBD> BlackFin: L502_BF_CMD_CODE_TEST.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
Для управления тестами предназначена специальная команда от PC к BlackFin: L502_BF_CMD_CODE_TEST.
|
||||
Параметр этой каоманды определяет действие:
|
||||
- запустить тест с заданным номером
|
||||
- остановить текущий тест
|
||||
- получить результаты выполняемого в данных момент теста или
|
||||
последнего выполняемого теста (если тест остановлен).
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g_mode)
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> PC).
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> L502_BF_CMD_TEST_GET_RESULT.
|
||||
По какого-либо теста модуль переходит в етстовый режим (изменяется g_mode)
|
||||
и выполняет функцию, соответствующую заданному тесту (из этой функции тест
|
||||
должен переодически проверять приход других команд от PC).
|
||||
Тест выполняется либо до ошибки, либо до прихода команды останова).
|
||||
Узнать результат теста можно командой с параметром L502_BF_CMD_TEST_GET_RESULT.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI
|
||||
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT
|
||||
Доступны следующие тесты:
|
||||
- Проверка SDRAM
|
||||
- Проверка SPI
|
||||
- Проверка SPORT
|
||||
|
||||
**************************************************************************************************/
|
||||
|
||||
@ -39,13 +39,13 @@
|
||||
|
||||
extern int g_mode;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD> SPORT */
|
||||
/* модуль счетчика, используемого для тестов SDRAM и SPORT */
|
||||
#define L502_TEST_CNTR_MODULE 35317
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> SDRAM */
|
||||
/* размер одного банка SDRAM */
|
||||
#define SDRAM_BANK_SIZE (4UL*1024*1024*2)
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM */
|
||||
/* адреса банков SDRAM */
|
||||
static volatile uint16_t* bank1 = NULL;
|
||||
static volatile uint16_t* bank2 = (uint16_t*)(SDRAM_BANK_SIZE);
|
||||
static volatile uint16_t* bank3 = (uint16_t*)(2*SDRAM_BANK_SIZE);
|
||||
@ -55,24 +55,24 @@ static volatile uint16_t* bank4 = (uint16_t*)(3*SDRAM_BANK_SIZE);
|
||||
#define SPORT_TEST_START_ADDR 0xFF900000
|
||||
#define SPORT_TEST_BUF_SIZE 4096
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* результат последнего теста */
|
||||
static t_l502_bf_test_res f_test_res;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* номер последнего выполняемого теста */
|
||||
static int32_t f_cur_test_ind = -1;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* объявление функций запуска тестов */
|
||||
static int f_sdram_test(void);
|
||||
static int f_spi_test(void);
|
||||
static int f_sport_test(void);
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* стркутура, описывающая соответствия кода теста и функций теста */
|
||||
typedef struct {
|
||||
uint32_t test_code;
|
||||
int (*start)(void);
|
||||
void (*get_result)(t_l502_bf_cmd *cmd);
|
||||
} t_test_pars;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* теблица соответствий функций и кодов тестов */
|
||||
static t_test_pars f_test_pars[] = {
|
||||
{ L502_BF_CMD_TEST_ECHO, NULL, NULL},
|
||||
{ L502_BF_CMD_TEST_SPORT, f_sport_test, NULL},
|
||||
@ -85,9 +85,9 @@ static t_test_pars f_test_pars[] = {
|
||||
|
||||
|
||||
void l502_cmd_test(t_l502_bf_cmd *cmd) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* получение результата теста */
|
||||
if (cmd->param == L502_BF_CMD_TEST_GET_RESULT) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если не было никакого теста - возвращаем ошибку */
|
||||
if (f_cur_test_ind == -1) {
|
||||
l502_cmd_done(L502_BF_ERR_INVALID_CMD_PARAMS, NULL, 0);
|
||||
} else {
|
||||
@ -95,18 +95,18 @@ void l502_cmd_test(t_l502_bf_cmd *cmd) {
|
||||
|
||||
|
||||
if (f_test_pars[f_cur_test_ind].get_result != NULL) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> */
|
||||
/* если есть у теста спец функция для получения результата =>
|
||||
вызываем ее */
|
||||
f_test_pars[f_cur_test_ind].get_result(cmd);
|
||||
} else {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* иначе просто устанавливаем резульатат без данных */
|
||||
l502_cmd_done(0, (uint32_t*)&f_test_res,
|
||||
sizeof(t_l502_bf_test_res)/sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
} else if (cmd->param == L502_BF_CMD_TEST_STOP) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> => <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* останов теста => если тест запущен - возвращаем его результат,
|
||||
иначе возвращаем ошибку что и так теста нету */
|
||||
if (g_mode == L502_BF_MODE_TEST) {
|
||||
g_mode = L502_BF_MODE_IDLE;
|
||||
l502_cmd_done(0, NULL, 0);
|
||||
@ -114,7 +114,7 @@ void l502_cmd_test(t_l502_bf_cmd *cmd) {
|
||||
l502_cmd_done(L502_BF_ERR_NO_TEST_IN_PROGR, NULL, 0);
|
||||
}
|
||||
} else {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* запуск теста - проходим по таблице и ищем нужный тест */
|
||||
if (g_mode == L502_BF_MODE_IDLE) {
|
||||
uint32_t i;
|
||||
|
||||
@ -156,9 +156,9 @@ void l502_cmd_test(t_l502_bf_cmd *cmd) {
|
||||
} while (0);
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/<2F><><EFBFBD>
|
||||
<EFBFBD><EFBFBD> BlackFin'<EFBFBD> <20> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* тестирование SPORT'а, служащего для передачи потоков АЦП/ЦАП
|
||||
от BlackFin'а к ПЛИС. Устанавливается циклический сквозной режим потока
|
||||
и передается счетчик, который проверяется при приеме */
|
||||
static int f_sport_test(void) {
|
||||
#define RX_BUF_SIZE 2048
|
||||
static uint16_t rx_buf[RX_BUF_SIZE];
|
||||
@ -169,7 +169,7 @@ static int f_sport_test(void) {
|
||||
uint16_t rx_val;
|
||||
int err = 0, i;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
/* разрешаем прием и передачу по SPORT'у */
|
||||
*pSPORT0_TCR1 |= TSPEN;
|
||||
*pSPORT0_RCR1 |= RSPEN;
|
||||
|
||||
@ -178,13 +178,13 @@ static int f_sport_test(void) {
|
||||
stat=*pSPORT0_STAT;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD> */
|
||||
/* вначале полностью заполняем очередь SPORT'а */
|
||||
for (i = 0; i < 8; i++) {
|
||||
*pSPORT0_TX16 = tx_cntr++;
|
||||
//tx_cntr+=SPORT_CNTR_INC;
|
||||
}
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT */
|
||||
/* устанавливаем в ПЛИС сквозной режим работы SPORT */
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, 0xE);
|
||||
|
||||
|
||||
@ -215,10 +215,10 @@ static int f_sport_test(void) {
|
||||
}
|
||||
|
||||
sport_test_end:
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT'<EFBFBD> */
|
||||
/* запрещаем прием и передачу по SPORT'у */
|
||||
*pSPORT0_TCR1 = 0;
|
||||
*pSPORT0_RCR1 = 0;
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPORT'<EFBFBD> */
|
||||
/* возвращаем штатный режим работы SPORT'а */
|
||||
fpga_reg_write(L502_REGS_IOHARD_OUTSWAP_BFCTL, 0);
|
||||
|
||||
return err;
|
||||
@ -228,8 +228,8 @@ sport_test_end:
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SPI - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* тест SPI - записываем бегущую единицу в регистр ПЛИС, считываем
|
||||
значение этого регистра и сверяем результаты */
|
||||
static int f_spi_test(void) {
|
||||
f_test_res.last_addr = L502_REGS_IOHARD_ADC_FRAME_DELAY;
|
||||
while (!f_test_res.err && (g_mode==L502_BF_MODE_TEST)) {
|
||||
@ -255,7 +255,7 @@ static int f_spi_test(void) {
|
||||
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDRAM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* тест SDRAM памяти */
|
||||
static int f_sdram_test(void) {
|
||||
int i;
|
||||
unsigned short cntr = 0;
|
||||
@ -265,7 +265,7 @@ static int f_sdram_test(void) {
|
||||
while (!f_test_res.err && (g_mode == L502_BF_MODE_TEST)) {
|
||||
f_test_res.stage = 0;
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* заполняем всю память счетчиком */
|
||||
for (i = 0, cntr = 0; i < (16UL*1024*1024); i++) {
|
||||
bank1[i] = cntr;
|
||||
if (++cntr == L502_TEST_CNTR_MODULE) {
|
||||
@ -277,7 +277,7 @@ static int f_sdram_test(void) {
|
||||
TEST_CHECK_OUT(sdram_test_end);
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* читаем последовательно и сверяем результат */
|
||||
for (i = 0, cntr = 0; i < (16UL*1024*1024); i++) {
|
||||
uint16_t word = bank1[i];
|
||||
if (word != cntr) {
|
||||
@ -298,8 +298,8 @@ static int f_sdram_test(void) {
|
||||
f_test_res.stage++;
|
||||
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* записываем по слову в каждый банк для проверки перекрестной
|
||||
записи по разным банкам */
|
||||
for (i = 0, cntr = 0; i < (4UL*1024*1024); i++) {
|
||||
bank1[i] = cntr;
|
||||
bank2[i] = ~cntr;
|
||||
@ -359,7 +359,7 @@ static int f_sdram_test(void) {
|
||||
|
||||
TEST_CHECK_OUT(sdram_test_end);
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* запись в 4 разных банка с последующим чтением */
|
||||
f_test_res.stage++;
|
||||
|
||||
for (i = 0, cntr=0; i < (4UL*1024*1024); i++) {
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
@{
|
||||
@file l502_user_process.c
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Файл содержит простейший вариант реализации пользовательских функций, в котором
|
||||
потоки данных передаются без изменения и никакие пользовательские команды не
|
||||
обрабатываются. Пользователь может изменить этот файл и добавить здесь свою
|
||||
обработку.
|
||||
*******************************************************************************/
|
||||
|
||||
#include "l502_stream.h"
|
||||
@ -17,31 +17,31 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/DIN.
|
||||
@brief Обработка принятого массива данных АЦП/DIN.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT0.
|
||||
Функция вызывается каждый раз, когда обнаружены новые данные от
|
||||
АЦП/цифровых входов, пришедшие по SPORT0.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция должна обработать данные и вернуть количество обработанных данных,
|
||||
однако эти данные все еще считаются использованными (не могут быть переписаны
|
||||
новыми пришедшими данными) до тех пор пока не будет вызвана функция
|
||||
stream_in_buf_free()).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> size, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Если функция вернет значение меньше чем size, то функция будут вызванна при
|
||||
следующем проходе еще раз с указателем на необработанные данные.
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA <EFBFBD> <20><>
|
||||
В текущей реализации просто запускается передача данных по HDMA в ПК
|
||||
|
||||
@param[in] data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> size).
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> usr_in_proc_data(),
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] data Указатель на массив с принятыми данными
|
||||
@param[in] size Количество принятых данных в 32-битных словах
|
||||
@return Функция возвращает количество обработанных данных (от 0 до size).
|
||||
На эти данные не будет вызываться повторно usr_in_proc_data(),
|
||||
но они считаются еще используемыми
|
||||
*******************************************************************************/
|
||||
uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть свободные дескрипторы на передачу по HDMA - ставим блок на
|
||||
передачу. Иначе возвращаем 0, чтобы на обработку этих данных функцию
|
||||
вызвали бы позже */
|
||||
if (hdma_send_req_rdy()) {
|
||||
hdma_send_req_start(data, size, 0);
|
||||
return size;
|
||||
@ -52,36 +52,36 @@ uint32_t usr_in_proc_data(uint32_t* data, uint32_t size) {
|
||||
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/DOUT
|
||||
@brief Обработка принятого массива с данными ЦАП/DOUT
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD> <20><> HDMA.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция вызывается каждый раз, когда обнаружены новые данные, принятые от
|
||||
ПК по HDMA.
|
||||
Функция должна обработать данные и вернуть количество обработанных данных,
|
||||
однако эти данные все еще считаются использованными (не могут быть переписаны
|
||||
новыми пришедшими данными) до тех пор пока не будет вызвана функция
|
||||
stream_out_buf_free()).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> size, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Если функция вернет значение меньше чем size, то функция будут
|
||||
вызвана после еще раз с указателем на необработанные данные.
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
В текущей реализации просто запускается передача данных по SPORT
|
||||
для вывода на ЦАП/цифровые выходы.
|
||||
|
||||
@param[in] data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> 0 <EFBFBD><EFBFBD> size).
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> usr_out_proc_data(),
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] data Указатель на массив с принятыми данными
|
||||
@param[in] size Количество принятых данных в 32-битных словах
|
||||
@return Функция возвращает количество обработанных данных (от 0 до size).
|
||||
На эти данные не будет вызываться повторно usr_out_proc_data(),
|
||||
но они считаются еще используемыми
|
||||
******************************************************************************/
|
||||
uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) {
|
||||
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* если есть свободные дескрипторы на передачу по HDMA - ставим блок на
|
||||
передачу. Иначе возвращаем 0, чтобы на обработку этих данных функцию
|
||||
вызвали бы позже */
|
||||
if (sport_tx_req_rdy()) {
|
||||
|
||||
/* <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> SPORT <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPORT_TX_REQ_SIZE_MAX <EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* за один раз можем передать в SPORT не более
|
||||
SPORT_TX_REQ_SIZE_MAX слов */
|
||||
if (size > SPORT_TX_REQ_SIZE_MAX)
|
||||
size = SPORT_TX_REQ_SIZE_MAX;
|
||||
|
||||
@ -98,14 +98,14 @@ uint32_t usr_out_proc_data(uint32_t* data, uint32_t size) {
|
||||
|
||||
|
||||
/****************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HostDMA
|
||||
@brief Обработка завершения передачи по HostDMA
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> HDMA <20> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdma_send_req_start().
|
||||
Функция вызывается из обработчика прерывания, когда завершилась передача
|
||||
блока данных по HDMA в ПК, поставленного до этого на передачу с
|
||||
помощью hdma_send_req_start().
|
||||
|
||||
@param[in] addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] addr Адрес слова, сразу за последним переданным словом
|
||||
@param[in] size Размер переданных данных в 32-битных словах
|
||||
****************************************************************************/
|
||||
void hdma_send_done(uint32_t* addr, uint32_t size) {
|
||||
stream_in_buf_free(size);
|
||||
@ -114,15 +114,15 @@ void hdma_send_done(uint32_t* addr, uint32_t size) {
|
||||
|
||||
|
||||
/***************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> SPORT
|
||||
@brief Обработка завершения передачи по SPORT
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD> SPORT'<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sport_tx_start_req().
|
||||
Функция вызывается из обработчика прерывания при завершении передачи блока данных
|
||||
по SPORT'у на цифровые выходы/ЦАП, поставленного до этого на передачу с
|
||||
помощью sport_tx_start_req().
|
||||
|
||||
|
||||
@param[in] addr <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] size <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
@param[in] addr Адрес слова, сразу за последним переданным словом
|
||||
@param[in] size Размер переданных данных в 32-битных словах */
|
||||
void sport_tx_done(uint32_t* addr, uint32_t size) {
|
||||
stream_out_buf_free(size);
|
||||
}
|
||||
@ -136,18 +136,24 @@ void sport_tx_done(uint32_t* addr, uint32_t size) {
|
||||
|
||||
|
||||
/****************************************************************************//**
|
||||
@brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
@brief Обработка пользовательских команд.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Функция вызывается при приеме команды от ПК с кодом большим или равным
|
||||
#L502_BF_CMD_CODE_USER.
|
||||
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l502_cmd_done(), <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
По завершению обработки необходимо обязательно вызвать
|
||||
l502_cmd_done(), указав код завершения команды и
|
||||
при необходимости передать данные с результатом
|
||||
|
||||
@param[in] cmd <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@param[in] cmd Структура с описанием принятой команды
|
||||
******************************************************************************/
|
||||
void usr_cmd_process(t_l502_bf_cmd *cmd) {
|
||||
switch (cmd->code){
|
||||
case BF_CMD_USER_MULT:
|
||||
cmd-> result = cmd->param * 2;
|
||||
uint32_t data = {0,1,2,3,4,5,6,5,4,3,2,1,0};
|
||||
l502_cmd_done(cmd->result, data, 13);
|
||||
}
|
||||
l502_cmd_done(L502_BF_ERR_UNSUP_CMD, NULL, 0);
|
||||
}
|
||||
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
/** @defgroup user_process <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/** @defgroup user_process Пользовательская обработка данных */
|
||||
|
||||
/***************************************************************************//**
|
||||
@addtogroup user_process
|
||||
@{
|
||||
@file l502_user_process.h
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
Файл содержит описания функций, которые предназначены для изменения
|
||||
пользователем для написания своих алгоритмов обработки данных и реализации
|
||||
пользовательских команд.
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
|
||||
12
src/main.c
12
src/main.c
@ -9,20 +9,20 @@ void l502_init(void);
|
||||
|
||||
void stream_proc(void);
|
||||
|
||||
/* g_state <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
* <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> A <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* g_state описывает область памяти, расположенную по фиксированным адресам.
|
||||
* Для расположения в начало банка A данных используем специальную секцию */
|
||||
SECTION("board_state", volatile t_l502_board_state g_state);
|
||||
|
||||
|
||||
int main(void) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* Инициализация интерфейсов */
|
||||
l502_init();
|
||||
|
||||
for (;;) {
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> */
|
||||
/* проверяем наличие команды от ПК и начинаяем
|
||||
обработку, если она есть */
|
||||
l502_cmd_check_req();
|
||||
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
/* обработка потоков данных */
|
||||
stream_proc();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user