BootLoader/.gitignore
File was deleted BootLoader/.mxproject
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c
File was deleted BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f038xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f048xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f058xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f071xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f078xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f091xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f098xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f031x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f038xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f042x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f048xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f051x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f058xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f071xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f072xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f078xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f091xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f098xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x6_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x8_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030xc_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f031x6_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f038xx_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f042x6_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f048xx_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f051x8_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f058xx_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070x6_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070xb_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f071xb_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f072xb_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f078xx_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_sram.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_flash.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_sram.icf
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f038xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f048xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051x8.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f058xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070x6.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f071xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072xb.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f078xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f091xc.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f098xx.s
File was deleted BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
File was deleted BootLoader/Drivers/CMSIS/Include/arm_common_tables.h
File was deleted BootLoader/Drivers/CMSIS/Include/arm_const_structs.h
File was deleted BootLoader/Drivers/CMSIS/Include/arm_math.h
File was deleted BootLoader/Drivers/CMSIS/Include/cmsis_armcc.h
File was deleted BootLoader/Drivers/CMSIS/Include/cmsis_armcc_V6.h
File was deleted BootLoader/Drivers/CMSIS/Include/cmsis_gcc.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cm0.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cm0plus.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cm3.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cm4.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cm7.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cmFunc.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cmInstr.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_cmSimd.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_sc000.h
File was deleted BootLoader/Drivers/CMSIS/Include/core_sc300.h
File was deleted BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0b_math.libBinary files differ
BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0l_math.libBinary files differ
BootLoader/Drivers/CMSIS/Lib/GCC/libarm_cortexM0l_math.aBinary files differ
BootLoader/Drivers/CMSIS/RTOS/Template/cmsis_os.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32_assert_template.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_can.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cec.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_comp.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_conf_template.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2s.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_iwdg.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smbus.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tsc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart_ex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_wwdg.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_comp.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dac.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_iwdg.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rtc.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_spi.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_tim.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_usart.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_wwdg.h
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_can.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cec.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_comp.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2s.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_irda.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_iwdg.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_msp_template.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smbus.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_alarm_template.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_wakeup_template.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_tim_template.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tsc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart_ex.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_usart.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_wwdg.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_comp.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crs.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dac.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_i2c.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_pwr.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rtc.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_tim.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c
File was deleted BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c
File was deleted BootLoader/F030C8T6_Test2.ioc
File was deleted BootLoader/Inc/GlobalDef.h
File was deleted BootLoader/Inc/debug.h
File was deleted BootLoader/Inc/functions.h
File was deleted BootLoader/Inc/main.h
File was deleted BootLoader/Inc/shell.h
File was deleted BootLoader/Inc/stm32_assert.h
File was deleted BootLoader/Inc/stm32f0xx_hal_conf.h
File was deleted BootLoader/Inc/stm32f0xx_it.h
File was deleted BootLoader/MDK-ARM/BootLoader.uvprojx
File was deleted BootLoader/MDK-ARM/DebugConfig/F030C8T6_BtLdr_STM32F030C8Tx.dbgconf
File was deleted BootLoader/MDK-ARM/DebugConfig/F030C8T6_STM32F030C8Tx.dbgconf
File was deleted BootLoader/MDK-ARM/DebugConfig/F030C8T6_Test2_STM32F030C8Tx.dbgconf
File was deleted BootLoader/MDK-ARM/F030C8T6_BtLdr/F030C8T6_BtLdr.hex
File was deleted BootLoader/MDK-ARM/F030C8T6_BtLdr/F030C8T6_BtLdr.sct
File was deleted BootLoader/MDK-ARM/JLinkSettings.ini
File was deleted BootLoader/MDK-ARM/debug.ini
File was deleted BootLoader/MDK-ARM/pemicro_connection_settings.ini
File was deleted BootLoader/MDK-ARM/startup_stm32f030x6.s
File was deleted BootLoader/MDK-ARM/startup_stm32f030x8.s
File was deleted BootLoader/MDK-ARM/startup_stm32f030xc.s
File was deleted BootLoader/Src/BSP.c
File was deleted BootLoader/Src/GlobalDef.c
File was deleted BootLoader/Src/debug.c
File was deleted BootLoader/Src/functions.c
File was deleted BootLoader/Src/main.c
File was deleted BootLoader/Src/shell.c
File was deleted BootLoader/Src/stm32f0xx_hal_msp.c
File was deleted BootLoader/Src/stm32f0xx_it.c
File was deleted BootLoader/Src/system_stm32f0xx.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f038xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f048xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f058xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f071xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f078xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f091xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f098xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f031x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f038xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f042x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f048xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f051x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f058xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f071xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f072xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f078xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f091xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f098xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x6_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x8_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030xc_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f031x6_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f038xx_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f042x6_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f048xx_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f051x8_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f058xx_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070x6_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070xb_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f071xb_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f072xb_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f078xx_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_sram.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_flash.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_sram.icf
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f038xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f048xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051x8.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f058xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070x6.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f071xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072xb.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f078xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f091xc.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f098xx.s
File was deleted C8T6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/arm_common_tables.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/arm_const_structs.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/arm_math.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/cmsis_armcc.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/cmsis_armcc_V6.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/cmsis_gcc.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cm0.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cm0plus.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cm3.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cm4.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cm7.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cmFunc.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cmInstr.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_cmSimd.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_sc000.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Include/core_sc300.h
File was deleted C8T6_BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0b_math.libBinary files differ
C8T6_BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0l_math.libBinary files differ
C8T6_BootLoader/Drivers/CMSIS/Lib/GCC/libarm_cortexM0l_math.aBinary files differ
C8T6_BootLoader/Drivers/CMSIS/RTOS/Template/cmsis_os.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32_assert_template.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_can.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cec.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_comp.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_conf_template.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2s.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_iwdg.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smbus.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tsc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart_ex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_wwdg.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_comp.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dac.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_iwdg.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rtc.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_spi.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_tim.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_usart.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_wwdg.h
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_can.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cec.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_comp.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2s.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_irda.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_iwdg.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_msp_template.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smbus.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_alarm_template.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_wakeup_template.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_tim_template.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tsc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart_ex.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_usart.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_wwdg.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_comp.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crs.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dac.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_i2c.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_pwr.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rtc.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_tim.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c
File was deleted C8T6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c
File was deleted C8T6_BootLoader/MDK-ARM/C8T6_BtLdr.uvprojx
@@ -335,7 +335,7 @@ <MiscControls></MiscControls> <Define>USE_FULL_LL_DRIVER,USE_HAL_DRIVER</Define> <Undefine></Undefine> <IncludePath>../Inc;../Src; ../Drivers/STM32F0xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F0xx/Include; ../Drivers/CMSIS/Include; ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy</IncludePath> <IncludePath>../Inc;../Src; ../../Drivers/STM32F0xx_HAL_Driver/Inc; ../../Drivers/CMSIS/Device/ST/STM32F0xx/Include; ../../Drivers/CMSIS/Include; ../../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy</IncludePath> </VariousControls> </Cads> <Aads> @@ -447,152 +447,152 @@ <File> <FileName>stm32f0xx_ll_gpio.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_exti.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_adc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_dma.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_spi.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_usart.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_rcc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_gpio.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_dma.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_cortex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_utils.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_tim.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_comp.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_comp.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_comp.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_crc.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crc.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crc.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_crs.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crs.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crs.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_dac.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_dac.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_dac.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_i2c.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_i2c.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_i2c.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_pwr.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_pwr.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_pwr.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_rtc.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_rtc.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_rtc.c</FilePath> </File> </Files> </Group> C8T6_BootLoader/Src/main.c
@@ -72,6 +72,63 @@ /* USER CODE BEGIN 0 */ /* Table of CRC values for high-order byte */ const uint8_t crctablehi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; /* Table of CRC values for low-order byte */ const uint8_t crctablelo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; uint16_t crc16table(const uint8_t *ptr, uint16_t len) { uint8_t crchi = 0xff; uint8_t crclo = 0xff; uint16_t index; while (len--) { index = crclo ^ *ptr++; crclo = crchi ^ crctablehi[index]; crchi = crctablelo[index]; } return (crchi << 8 | crclo); } void HAL_SYSTICK_Callback(void) { static int Count=0; @@ -85,6 +142,17 @@ } #define ApplicationAddress 0x08001000 //应用程序首地址定义 #define NewAppInfoBlockAddress 0x08008000 // 存储的新应用程序信息块的地址 #define NewAppAddress 0x08009000 // 存储的新应用程序的地址 typedef struct tagNewAppInfoBlock { unsigned short Sign; unsigned short Version; unsigned int Length; unsigned int nCRC; }stNewAppInfoBlock,*pNewAppInfoBlock; typedef void (*pFunction)(void); //定义跳转函数指针类型 @@ -92,28 +160,66 @@ /*跳转到应用程序处理函数*/ static void JumpToApplication(void) { uint32_t StackAddr; //应用程序栈地址 uint32_t ResetVector; //应用程序中断向量表的地址 uint32_t AppStackAddr; //应用程序栈地址 uint32_t AppResetVector; //应用程序中断向量表的地址 pFunction JumpToApp; //定义跳转函数指针 __set_PRIMASK(1); //关闭全局中断 StackAddr = *(__IO uint32_t*)ApplicationAddress; //0x08001000; ResetVector = *(__IO uint32_t*)(ApplicationAddress + 4); //0x08001004; AppStackAddr = *(__IO uint32_t*)ApplicationAddress; //0x08001000; AppResetVector = *(__IO uint32_t*)(ApplicationAddress + 4); //0x08001004; if((StackAddr&0x2FFC0000)==0x20000000) //检查栈顶地址是否合法. if((AppStackAddr&0x2FFC0000)==0x20000000) //检查栈顶地址是否合法. { __disable_irq(); memcpy((void *)0x20000000,(void *)ApplicationAddress,0xc0); __set_MSP(StackAddr); //初始化应用程序栈指针 __set_MSP(AppStackAddr); //初始化应用程序栈指针 LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); // SYSCFG JumpToApp = (pFunction)ResetVector; JumpToApp = (pFunction)AppResetVector; JumpToApp(); } } int EraseFlashMem(void * pAddrFlash, unsigned int Pages) { HAL_StatusTypeDef res; res = HAL_FLASH_Unlock(); uint32_t ErrNo; FLASH_EraseInitTypeDef erase1; erase1.NbPages=Pages; erase1.PageAddress=(unsigned int)pAddrFlash; erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = HAL_FLASHEx_Erase(&erase1,&ErrNo); res = HAL_FLASH_Lock(); return res; } int EraseAndWriteToFlashMem(void * pBuf, void * pAddrFlash, unsigned int nByteSize) { HAL_StatusTypeDef res; res = HAL_FLASH_Unlock(); uint32_t ErrNo; FLASH_EraseInitTypeDef erase1; erase1.NbPages= (nByteSize-1) / FLASH_PAGE_SIZE + 1; erase1.PageAddress=(unsigned int)pAddrFlash; erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = HAL_FLASHEx_Erase(&erase1,&ErrNo); for (int i=0;i<(nByteSize+1)/2;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); if ((i&0x7ff) == 0) {ToggleRunLed(); ToggleErrLed();} } res = HAL_FLASH_Lock(); return res; } /* USER CODE END 0 */ @@ -160,6 +266,28 @@ SetRunLed(1); //Turn On Run Led SetErrLed(0); //Turn Off Err Led // check for app update ///* pNewAppInfoBlock ptheNewAppInfoBlock = (pNewAppInfoBlock) NewAppInfoBlockAddress; if (ptheNewAppInfoBlock->Sign == 0x55AA) { //check length and CRC; int length = ptheNewAppInfoBlock->Length; int nCRC = crc16table((uint8_t *)NewAppAddress,length); if (nCRC == ptheNewAppInfoBlock->nCRC) { // copy program EraseAndWriteToFlashMem((void *)NewAppAddress,(void*)ApplicationAddress,length); // verify copyed program //int nCRC2 = CalCRC((void *)NewAppAddress,length); //erease infoBlock EraseFlashMem((void *)NewAppInfoBlockAddress,1); } } // */ int nCount=0; while (1) { C8T6_TestApp1/Inc/BoardType.h
@@ -37,7 +37,7 @@ BOARD_V30_MINI =11, //11 Mini Board BOARD_V45_NET = 13, BOARD_EXT_FP0 = 14, BOARD_EXT_FPx = 14, BOARD_V50_RADIO_16 = 15, BOARD_V50_RADIO_8 = 16, @@ -77,6 +77,5 @@ #define DINPUT 0 #define DOUTPUT 0 #endif #endif /* __BOARDTYPE_H__ */ C8T6_TestApp1/Inc/FP0.h
File was deleted C8T6_TestApp1/Inc/FPx.h
New file @@ -0,0 +1,165 @@ /** ****************************************************************************** * @file : FPx.h * @brief : Header for FPx.c file. * This file contains the function defines of the FPx . ****************************************************************************** */ #ifndef __FPX_H__ #define __FPX_H__ #include "main.h" enum enCMD_TYPE { CMD_0_QUERY =0, CMD_1=0x1, // CMD_2=0x2, // CMD_3_EXCHG=0x3, // CMD_4=0x4, // CMD_5=0x5, // CMD_6=0x6, // CMD_7_END=0x7, // }; typedef struct tagFPxPinStat { unsigned short OE:1; unsigned short RST:1; unsigned short SYN:1; unsigned short ACK:1; unsigned short SEL:1; }stFPxPinStat; #define RST_PORT GPIOB #define RST_PIN LL_GPIO_PIN_9 #define SYN_PORT GPIOF #define SYN_PIN LL_GPIO_PIN_6 #define ACK_PORT GPIOA #define ACK_PIN LL_GPIO_PIN_11 #define FPxDE_PORT GPIOF #define FPxDE_PIN LL_GPIO_PIN_7 #define OE_PORT GPIOB #define OE_PIN LL_GPIO_PIN_6 #define SEL_PORT GPIOB #define SEL_PIN LL_GPIO_PIN_8 #define FPX_WX_NUM 16 #define FPX_WY_NUM 16 #define GetRSTPin() LL_GPIO_IsInputPinSet(RST_PORT,RST_PIN) #define GetSYNPin() LL_GPIO_IsInputPinSet(SYN_PORT,SYN_PIN) #define GetOEPin() LL_GPIO_IsInputPinSet(OE_PORT,OE_PIN) #define GetSELPin() (1) //LL_GPIO_IsInputPinSet(SEL_PORT,SEL_PIN) #define GetACKPin() LL_GPIO_IsInputPinSet(ACK_PORT,ACK_PIN) #define SetACKPin_0() LL_GPIO_ResetOutputPin(ACK_PORT,ACK_PIN) #define SetACKPin_1() LL_GPIO_SetOutputPin(ACK_PORT,ACK_PIN) #define SetFPxDEPin_0() LL_GPIO_ResetOutputPin(FPxDE_PORT,FPxDE_PIN) #define SetFPxDEPin_1() LL_GPIO_SetOutputPin(FPxDE_PORT,FPxDE_PIN) typedef void *(*FPxCBFuncDef) (int nEvent, void * pBuf, int); //callback func ,prama s is void *,void *,int; return void *; // extern uint8_t PktBuf1[64]; extern uint8_t PktBuf2[64]; extern uint8_t PktLen1; extern uint8_t PktLen2; typedef struct tagFPxStat{ uint8_t bConfiged; uint8_t nConfigStationId; uint8_t nInputBytes; uint8_t nOutputBytes; uint8_t bReceiving; uint8_t nReceivedLen; uint8_t bSending; uint8_t bSentLen; volatile uint8_t oldSYN; int RSTCount0; int bFirstReq; FPxCBFuncDef FPxCBFunc; uint8_t bFPxCallBackFuncSet; }stFPxStat; extern stFPxStat FPxStat; #pragma anon_unions typedef struct tagFPxMem{ union { unsigned short WLX[16]; //虚拟的X和Y,远程通讯时映射用。 unsigned char WLXB[32]; //虚拟的X和Y,远程通讯时映射用。 }; union { unsigned short WLY[16]; //虚拟的X和Y,远程通讯时映射用。 unsigned char WLYB[32]; //虚拟的X和Y,远程通讯时映射用。 }; }stFPxMem; extern stFPxMem FPxMem; typedef struct tagFPxQuRplyPkt { uint8_t Hdr1; uint8_t nInputBytes; uint8_t nOutputBytes; uint8_t nParam1; uint8_t nBCC; uint8_t End1; }stFPxQuRplyPkt, *pFPxQuRplyPkt; typedef struct tagFPxEXGRplyPkt { uint8_t Hdr1; uint8_t nInputBytes[6]; uint8_t nBCC; uint8_t End1; }stFPxEXGRplyPkt, * pFPxEXGRplyPkt; uint8_t FPx_Init(int nChilds); uint8_t FPx_SetIOCount(int nInputBytes, int nOutputBytes); uint8_t FPx_Proc(void); uint8_t FPxCalBCC(uint8_t* pBuf, uint8_t len1); uint8_t FPxCheckPkt(uint8_t * pBuf, uint8_t len1); uint8_t FPxParsePkt(uint8_t * pBuf, uint8_t len1); uint8_t FPxSendPkt(uint8_t * pBuf, uint8_t len1); int FPxSetCallBackFunc(FPxCBFuncDef Func1); enum enumFPxCallBackEvent { evFPxNone = 0, evFPxCreate = 1, evFPxConnected = 2, evFPxDisConnected = 3, evFPxClosed = 4, evFPxStateChange =5, evFPxTimeSync=6, evFPxDataUpdate =7, }; #endif /* __FPX_H__ */ C8T6_TestApp1/Inc/main.h
@@ -74,7 +74,9 @@ /* #define USE_FULL_ASSERT 1U */ /* USER CODE BEGIN Private defines */ #include "KBus.h" extern stKBusDef KBus1; /* USER CODE END Private defines */ #ifdef __cplusplus C8T6_TestApp1/MDK-ARM/EventRecorderStub.scvd
C8T6_TestApp1/MDK-ARM/F030C8T6_Ext_FPx_New.uvprojx
New file @@ -0,0 +1,734 @@ <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd"> <SchemaVersion>2.1</SchemaVersion> <Header>### uVision Project, (C) Keil Software</Header> <Targets> <Target> <TargetName>F030C8T6_TestApp1</TargetName> <ToolsetNumber>0x4</ToolsetNumber> <ToolsetName>ARM-ADS</ToolsetName> <pCCUsed>5060422::V5.06 update 4 (build 422)::ARMCC</pCCUsed> <TargetOption> <TargetCommonOption> <Device>STM32F030C8Tx</Device> <Vendor>STMicroelectronics</Vendor> <PackID>Keil.STM32F0xx_DFP.2.1.1</PackID> <PackURL>https://www.keil.com/pack/</PackURL> <Cpu>IRAM(0x20000000,0x00002000) IROM(0x08000000,0x00010000) CPUTYPE("Cortex-M0") CLOCK(12000000) ELITTLE</Cpu> <FlashUtilSpec></FlashUtilSpec> <StartupFile></StartupFile> <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F0xx_64 -FS08000000 -FL010000 -FP0($$Device:STM32F030C8Tx$CMSIS\Flash\STM32F0xx_64.FLM))</FlashDriverDll> <DeviceId>0</DeviceId> <RegisterFile>$$Device:STM32F030C8Tx$Drivers\CMSIS\Device\ST\STM32F0xx\Include\stm32f0xx.h</RegisterFile> <MemoryEnv></MemoryEnv> <Cmp></Cmp> <Asm></Asm> <Linker></Linker> <OHString></OHString> <InfinionOptionDll></InfinionOptionDll> <SLE66CMisc></SLE66CMisc> <SLE66AMisc></SLE66AMisc> <SLE66LinkerMisc></SLE66LinkerMisc> <SFDFile>$$Device:STM32F030C8Tx$CMSIS\SVD\STM32F0x0.svd</SFDFile> <bCustSvd>0</bCustSvd> <UseEnv>0</UseEnv> <BinPath></BinPath> <IncludePath></IncludePath> <LibPath></LibPath> <RegisterFilePath></RegisterFilePath> <DBRegisterFilePath></DBRegisterFilePath> <TargetStatus> <Error>0</Error> <ExitCodeStop>0</ExitCodeStop> <ButtonStop>0</ButtonStop> <NotGenerated>0</NotGenerated> <InvalidFlash>1</InvalidFlash> </TargetStatus> <OutputDirectory>.\F030C8T6_TestApp1\</OutputDirectory> <OutputName>F030C8T6_Ext_FPx_New</OutputName> <CreateExecutable>1</CreateExecutable> <CreateLib>0</CreateLib> <CreateHexFile>1</CreateHexFile> <DebugInformation>1</DebugInformation> <BrowseInformation>1</BrowseInformation> <ListingPath>.\F030C8T6_TestApp1\</ListingPath> <HexFormatSelection>1</HexFormatSelection> <Merge32K>0</Merge32K> <CreateBatchFile>0</CreateBatchFile> <BeforeCompile> <RunUserProg1>0</RunUserProg1> <RunUserProg2>0</RunUserProg2> <UserProg1Name></UserProg1Name> <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopU1X>0</nStopU1X> <nStopU2X>0</nStopU2X> </BeforeCompile> <BeforeMake> <RunUserProg1>0</RunUserProg1> <RunUserProg2>0</RunUserProg2> <UserProg1Name></UserProg1Name> <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopB1X>0</nStopB1X> <nStopB2X>0</nStopB2X> </BeforeMake> <AfterMake> <RunUserProg1>1</RunUserProg1> <RunUserProg2>0</RunUserProg2> <UserProg1Name>fromelf --bin --output="@L.bin" "#L"</UserProg1Name> <UserProg2Name></UserProg2Name> <UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg2Dos16Mode>0</UserProg2Dos16Mode> <nStopA1X>0</nStopA1X> <nStopA2X>0</nStopA2X> </AfterMake> <SelectedForBatchBuild>0</SelectedForBatchBuild> <SVCSIdString></SVCSIdString> </TargetCommonOption> <CommonProperty> <UseCPPCompiler>0</UseCPPCompiler> <RVCTCodeConst>0</RVCTCodeConst> <RVCTZI>0</RVCTZI> <RVCTOtherData>0</RVCTOtherData> <ModuleSelection>0</ModuleSelection> <IncludeInBuild>1</IncludeInBuild> <AlwaysBuild>0</AlwaysBuild> <GenerateAssemblyFile>0</GenerateAssemblyFile> <AssembleAssemblyFile>0</AssembleAssemblyFile> <PublicsOnly>0</PublicsOnly> <StopOnExitCode>3</StopOnExitCode> <CustomArgument></CustomArgument> <IncludeLibraryModules></IncludeLibraryModules> <ComprImg>0</ComprImg> </CommonProperty> <DllOption> <SimDllName>SARMCM3.DLL</SimDllName> <SimDllArguments> -REMAP </SimDllArguments> <SimDlgDll>DARMCM1.DLL</SimDlgDll> <SimDlgDllArguments>-pCM0</SimDlgDllArguments> <TargetDllName>SARMCM3.DLL</TargetDllName> <TargetDllArguments> </TargetDllArguments> <TargetDlgDll>TARMCM1.DLL</TargetDlgDll> <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments> </DllOption> <DebugOption> <OPTHX> <HexSelection>1</HexSelection> <HexRangeLowAddress>0</HexRangeLowAddress> <HexRangeHighAddress>0</HexRangeHighAddress> <HexOffset>0</HexOffset> <Oh166RecLen>16</Oh166RecLen> </OPTHX> </DebugOption> <Utilities> <Flash1> <UseTargetDll>1</UseTargetDll> <UseExternalTool>0</UseExternalTool> <RunIndependent>0</RunIndependent> <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging> <Capability>1</Capability> <DriverSelection>4096</DriverSelection> </Flash1> <bUseTDR>1</bUseTDR> <Flash2>BIN\UL2CM3.DLL</Flash2> <Flash3>"" ()</Flash3> <Flash4></Flash4> <pFcarmOut></pFcarmOut> <pFcarmGrp>Application/MDK-ARM</pFcarmGrp> <pFcArmRoot></pFcArmRoot> <FcArmLst>0</FcArmLst> </Utilities> <TargetArmAds> <ArmAdsMisc> <GenerateListings>0</GenerateListings> <asHll>1</asHll> <asAsm>1</asAsm> <asMacX>1</asMacX> <asSyms>1</asSyms> <asFals>1</asFals> <asDbgD>1</asDbgD> <asForm>1</asForm> <ldLst>0</ldLst> <ldmm>1</ldmm> <ldXref>1</ldXref> <BigEnd>0</BigEnd> <AdsALst>1</AdsALst> <AdsACrf>1</AdsACrf> <AdsANop>0</AdsANop> <AdsANot>0</AdsANot> <AdsLLst>1</AdsLLst> <AdsLmap>1</AdsLmap> <AdsLcgr>1</AdsLcgr> <AdsLsym>1</AdsLsym> <AdsLszi>1</AdsLszi> <AdsLtoi>1</AdsLtoi> <AdsLsun>1</AdsLsun> <AdsLven>1</AdsLven> <AdsLsxf>1</AdsLsxf> <RvctClst>0</RvctClst> <GenPPlst>0</GenPPlst> <AdsCpuType>"Cortex-M0"</AdsCpuType> <RvctDeviceName></RvctDeviceName> <mOS>0</mOS> <uocRom>0</uocRom> <uocRam>0</uocRam> <hadIROM>1</hadIROM> <hadIRAM>1</hadIRAM> <hadXRAM>0</hadXRAM> <uocXRam>0</uocXRam> <RvdsVP>0</RvdsVP> <hadIRAM2>0</hadIRAM2> <hadIROM2>0</hadIROM2> <StupSel>8</StupSel> <useUlib>1</useUlib> <EndSel>0</EndSel> <uLtcg>0</uLtcg> <nSecure>0</nSecure> <RoSelD>3</RoSelD> <RwSelD>3</RwSelD> <CodeSel>0</CodeSel> <OptFeed>0</OptFeed> <NoZi1>0</NoZi1> <NoZi2>0</NoZi2> <NoZi3>0</NoZi3> <NoZi4>0</NoZi4> <NoZi5>0</NoZi5> <Ro1Chk>0</Ro1Chk> <Ro2Chk>0</Ro2Chk> <Ro3Chk>0</Ro3Chk> <Ir1Chk>1</Ir1Chk> <Ir2Chk>0</Ir2Chk> <Ra1Chk>0</Ra1Chk> <Ra2Chk>0</Ra2Chk> <Ra3Chk>0</Ra3Chk> <Im1Chk>1</Im1Chk> <Im2Chk>0</Im2Chk> <OnChipMemories> <Ocm1> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm1> <Ocm2> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm2> <Ocm3> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm3> <Ocm4> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm4> <Ocm5> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm5> <Ocm6> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </Ocm6> <IRAM> <Type>0</Type> <StartAddress>0x20000000</StartAddress> <Size>0x2000</Size> </IRAM> <IROM> <Type>1</Type> <StartAddress>0x8000000</StartAddress> <Size>0x10000</Size> </IROM> <XRAM> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </XRAM> <OCR_RVCT1> <Type>1</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT1> <OCR_RVCT2> <Type>1</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT2> <OCR_RVCT3> <Type>1</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT3> <OCR_RVCT4> <Type>1</Type> <StartAddress>0x8001000</StartAddress> <Size>0xf000</Size> </OCR_RVCT4> <OCR_RVCT5> <Type>1</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT5> <OCR_RVCT6> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT6> <OCR_RVCT7> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT7> <OCR_RVCT8> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT8> <OCR_RVCT9> <Type>0</Type> <StartAddress>0x200000c0</StartAddress> <Size>0x1f40</Size> </OCR_RVCT9> <OCR_RVCT10> <Type>0</Type> <StartAddress>0x0</StartAddress> <Size>0x0</Size> </OCR_RVCT10> </OnChipMemories> <RvctStartVector></RvctStartVector> </ArmAdsMisc> <Cads> <interw>1</interw> <Optim>7</Optim> <oTime>0</oTime> <SplitLS>0</SplitLS> <OneElfS>1</OneElfS> <Strict>0</Strict> <EnumInt>0</EnumInt> <PlainCh>0</PlainCh> <Ropi>0</Ropi> <Rwpi>0</Rwpi> <wLevel>2</wLevel> <uThumb>0</uThumb> <uSurpInc>0</uSurpInc> <uC99>1</uC99> <useXO>0</useXO> <v6Lang>3</v6Lang> <v6LangP>3</v6LangP> <vShortEn>1</vShortEn> <vShortWch>1</vShortWch> <v6Lto>0</v6Lto> <v6WtE>0</v6WtE> <v6Rtti>0</v6Rtti> <VariousControls> <MiscControls></MiscControls> <Define>USE_FULL_LL_DRIVER,USE_HAL_DRIVER</Define> <Undefine></Undefine> <IncludePath>../Inc;../Src;../../Drivers/STM32F0xx_HAL_Driver/Inc;../../Drivers/CMSIS/Device/ST/STM32F0xx/Include;../../Drivers/CMSIS/Include;../../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy;../../Comlib/Inc</IncludePath> </VariousControls> </Cads> <Aads> <interw>1</interw> <Ropi>0</Ropi> <Rwpi>0</Rwpi> <thumb>0</thumb> <SplitLS>0</SplitLS> <SwStkChk>0</SwStkChk> <NoWarn>0</NoWarn> <uSurpInc>0</uSurpInc> <useXO>0</useXO> <uClangAs>0</uClangAs> <VariousControls> <MiscControls></MiscControls> <Define></Define> <Undefine></Undefine> <IncludePath></IncludePath> </VariousControls> </Aads> <LDads> <umfTarg>1</umfTarg> <Ropi>0</Ropi> <Rwpi>0</Rwpi> <noStLib>0</noStLib> <RepFail>1</RepFail> <useFile>0</useFile> <TextAddressRange>0x08000000</TextAddressRange> <DataAddressRange>0x20000000</DataAddressRange> <pXoBase></pXoBase> <ScatterFile></ScatterFile> <IncludeLibs></IncludeLibs> <IncludeLibsPath></IncludeLibsPath> <Misc></Misc> <LinkerInputFile></LinkerInputFile> <DisabledWarnings></DisabledWarnings> </LDads> </TargetArmAds> </TargetOption> <Groups> <Group> <GroupName>Application/MDK-ARM</GroupName> <Files> <File> <FileName>startup_stm32f030x8.s</FileName> <FileType>2</FileType> <FilePath>.\startup_stm32f030x8.s</FilePath> </File> </Files> </Group> <Group> <GroupName>ComLib/Inc</GroupName> <Files> <File> <FileName>BSP.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\BSP.h</FilePath> </File> <File> <FileName>debug.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\debug.h</FilePath> </File> <File> <FileName>functions.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\functions.h</FilePath> </File> <File> <FileName>GlobalDef.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\GlobalDef.h</FilePath> </File> <File> <FileName>KBus.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\KBus.h</FilePath> </File> <File> <FileName>KLink.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\KLink.h</FilePath> </File> <File> <FileName>KMachine.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\KMachine.h</FilePath> </File> <File> <FileName>ModbusRTU.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\ModbusRTU.h</FilePath> </File> <File> <FileName>MyQueue.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\MyQueue.h</FilePath> </File> <File> <FileName>PLCfunctions.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\PLCfunctions.h</FilePath> </File> <File> <FileName>shell.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\shell.h</FilePath> </File> <File> <FileName>stm32_assert.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\stm32_assert.h</FilePath> </File> <File> <FileName>stm32f0xx_it.h</FileName> <FileType>5</FileType> <FilePath>..\../ComLib\Inc\stm32f0xx_it.h</FilePath> </File> </Files> </Group> <Group> <GroupName>ComLib/Src</GroupName> <Files> <File> <FileName>debug.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\debug.c</FilePath> </File> <File> <FileName>functions.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\functions.c</FilePath> </File> <File> <FileName>GlobalDef.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\GlobalDef.c</FilePath> </File> <File> <FileName>KBus.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\KBus.c</FilePath> </File> <File> <FileName>KLink.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\KLink.c</FilePath> </File> <File> <FileName>ModbusRTU.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\ModbusRTU.c</FilePath> </File> <File> <FileName>MyQueue.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\MyQueue.c</FilePath> </File> <File> <FileName>PLCfunctions.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\PLCfunctions.c</FilePath> </File> <File> <FileName>shell.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\shell.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_msp.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\stm32f0xx_hal_msp.c</FilePath> </File> <File> <FileName>KMachine.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\KMachine.c</FilePath> </File> <File> <FileName>BSP.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\BSP.c</FilePath> </File> <File> <FileName>stm32f0xx_it.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\stm32f0xx_it.c</FilePath> </File> </Files> </Group> <Group> <GroupName>Inc</GroupName> <Files> <File> <FileName>BoardType.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\BoardType.h</FilePath> </File> <File> <FileName>main.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\main.h</FilePath> </File> <File> <FileName>stm32f0xx_ll_rcc.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\stm32f0xx_ll_rcc.h</FilePath> </File> <File> <FileName>stm32f0xx_hal_conf.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\stm32f0xx_hal_conf.h</FilePath> </File> <File> <FileName>FPx.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\FPx.h</FilePath> </File> </Files> </Group> <Group> <GroupName>Application/User</GroupName> <Files> <File> <FileName>main.c</FileName> <FileType>1</FileType> <FilePath>..\Src\main.c</FilePath> </File> <File> <FileName>BoardType.c</FileName> <FileType>1</FileType> <FilePath>..\Src\BoardType.c</FilePath> </File> <File> <FileName>FPx.c</FileName> <FileType>1</FileType> <FilePath>..\Src\FPx.c</FilePath> </File> </Files> </Group> <Group> <GroupName>Drivers/CMSIS</GroupName> <Files> <File> <FileName>system_stm32f0xx.c</FileName> <FileType>1</FileType> <FilePath>..\../ComLib\Src\system_stm32f0xx.c</FilePath> </File> </Files> </Group> <Group> <GroupName>Drivers/STM32F0xx_HAL_Driver</GroupName> <Files> <File> <FileName>stm32f0xx_ll_gpio.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_exti.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_adc.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_dma.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_spi.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim_ex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_usart.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_rcc.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc_ex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c_ex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_gpio.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_dma.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_cortex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr_ex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash_ex.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_utils.c</FileName> <FileType>1</FileType> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_tim.c</FileName> <FileType>1</FileType> <FilePath>..\../Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_flash.c</FileName> <FileType>1</FileType> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_flash.c</FilePath> </File> </Files> </Group> <Group> <GroupName>::CMSIS</GroupName> </Group> </Groups> </Target> </Targets> <RTE> <apis/> <components> <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.4.0" condition="ARMv6_7_8-M Device"> <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="5.7.0"/> <targetInfos> <targetInfo name="F030C8T6_TestApp1"/> </targetInfos> </component> </components> <files/> </RTE> </Project> C8T6_TestApp1/MDK-ARM/F030C8T6_TestApp1.uvprojx
File was deleted C8T6_TestApp1/MDK-ARM/F030C8T6_TestApp1/F030C8T6_TestApp1.hex
@@ -1,19 +1,19 @@ :020000040800F2 :10100000001C0020CD10000805410008CD2200087A :10100000681F0020CD1000085945000889230008FA :1010100000000000000000000000000000000000D0 :10102000000000000000000000000000954D0008D6 :1010300000000000000000004D430008415300087C :101020000000000000000000000000000550000863 :101030000000000000000000F945000845550008C8 :10104000DF10000800000000DF100008DF100008BB :10105000DF100008DF100008DF100008DF100008B4 :1010600000000000DF10000815140008B514000887 :1010600000000000DF100008F513000895140008C8 :10107000DF100008DF100008DF100008000000008B :10108000DF1000085154000800000000DF100008C5 :10108000DF1000085556000800000000DF100008BF :10109000DF100008DF100008DF100008DF10000874 :1010A000DF100008994C0008DF1000089154000878 :1010B000195500080348854600F0D6F80048004757 :1010C000555E0008001C00200844F0470448804793 :1010A000DF1000083D4F0008DF1000086D560008F3 :1010B000F55600080348854600F0D6F8004800477A :1010C0006D600008681F00200844F047044880470E :1010D00004480047FEE7FEE7FEE7FEE7FEE7FEE71F :1010E000F5530008B510000830B50B460146002046 :1010E000F9550008B510000830B50B460146002040 :1010F0002022012409E00D46D5409D4205D31D461E :101100009540491B2546954040191546521E002D15 :10111000F1DC30BD70B500242546002801DA012439 @@ -39,1403 +39,1429 @@ :1012500000902046641E0028DFDC019B0098294690 :10126000324607B0F0BD0000064C0125064E05E0F1 :10127000E36807CC2B430C3C98471034B442F7D3B7 :10128000FFF71CFFAC680008CC68000810B5202AE6 :10128000FFF71CFF646A0008846A000810B5202A72 :1012900004DB0146203A9140002010BD91402023FC :1012A0009C1A0346E3401943904010BDF0B51E4F11 :1012B00085B03D691D4C6D1C3D612668A468029493 :1012C00000966C4665800190218162810393386AA3 :1012D00001011748091800220B4610461C5CFF2C20 :1012E00004D1401C1028F9D3002A17D010226846D8 :1012F00000F012F9386AF861401C386200010121DF :1012F00000F002F9386AF861401C386200010121EF :1013000009031030884201D900203862F868094981 :10131000401CF8604867002005B0F0BD1022684608 :1013200004F06CFAE6E7000058010020606800084D :1013300000D0000828130020002911D0826852181C :1013200004F074FBE6E7000064010020186A00087E :1013300000D0000870160020002911D082685218D1 :1013400082604368934200DCD21A00238361C36841 :10135000934201D101234361826002695218026104 :101360000846704710B500231A4605E0845C240740 :10137000240FE318DBB2521C8A42F7DB1807000F78 :1013800010BD0000F0B50020174D0127144B154C7F :101390003F03E86017E0625A144EB24212D1EA6885 :1013A0000919521CEA604A882E69B24205D92A619D :1013B000E8614A686A61421C2A624988994201D2FE :1013C0000B46A861401C0101B942E4D3286A000120 :1013D0001030B84201D900202862E868F0BD000052 :1013E000FFC99A3B00D0000858010020AA55000010 :1013F00010B50421054800F0B2F8054800218161CC :10140000C1610161C1600162084610BD00D00008E1 :101410005801002070B5234DE86A401CE862224C58 :1014200020688006C00F11D02868296B40182860FA :10143000296B28465830064600F058F82020606096 :10144000B06900280AD000202863687220688005EF :10145000C00F02D001204002606070BD304600F035 :101460000FFA12494A78A3585B085B00A350F3684F :1014700032684E78D2180C4B0C33F2500A4B4A7833 :101480001B1DD658360C36040643D6504978625890 :1014900001231A4362502863054881688022114362 :1014A0008160D3E7C8020020000002407568000890 :1014B000003801400B49C86A401CC8620A480268EB :1014C0009204D20F05D001225203426000220A6327 :1014D0004A7201688903C90F02D0012149044160A1 :1014E000704700005C0300200000024010B5002996 :1014F00010D0C26843685218934200DCD21A00230D :101500004361C2608468944204D101228261836095 :10151000C360C361084610BDF0B585B016460D46E0 :10152000074600F00DFB701E800A401C0290002050 :101530000090019503A9684600F06AFA0024760835 :1015400007E060003A5A41190023012000F0BAFA7E :10155000641CA642F5D800F0ABFA05B0F0BD7FB52B :101560000D46044600F0ECFA00206A4631C203A999 :10157000684600F04DFA00F09BFA04B070BD000020 :1015800006490020C861064801690422114301612F :10159000016940221143016170470000E0170020FB :1015A00000200240064A0021D16106490A6902234F :1015B0001A430A6148610869402210430861704774 :1015C000E01700200020024010B5054B0022DA6130 :1015D000044A1369012423431361018010BD0000F4 :1015E000E01700200020024010B50B4A0020D1680F :1015F000CB060A4904D5C86902231843C8611020E4 :10160000D3685B0705D5CB6901242343CB61042153 :101610000843D06010BD000000200240E017002009 :1016200070B5044600F09EFA0546104E0AE0601CB4 :1016300008D0002C04D000F095FA401BA04201D93C :10164000032070BDF068C007F1D1F068800601D5B5 :101650002020F060F068C00602D4F068400703D58F :10166000FFF7C2FF012070BD002070BD00200240C6 :1016700010B5104C0020207220710F48007800280F :1016800002D0012802D002E0012000E00220A07078 :10169000E0700120C0020921C906886288620749FA :1016A000802088620A2000F0A5F900F08DF96061C1 :1016B000002010BD7C01002017010020001400480C :1016C000FEB5364D01214902284601F059FF009030 :1016D000012001904021324801F052FF04460121CF :1016E0000920C902C00601F04BFF4021284601F045 :1016F00047FF00262B4D00280BD0002013212A4A3B :101700004901EF7803E013185B181E75401CB842BE :10171000F9DB0098002802D100F056F968612869C9 :10172000012700280ED1009800280BD000F04CF9BA :101730006969401A1D49884204DBF8020921C9067B :1017400088612F61002C06D1E868002803D0184872 :10175000018DC18406850198002817D0002C17D070 :10176000E86800280AD12F716E7112480268402182 :101770008A4302606E7102680A430260287A002878 :1017800008D12879002805D12F7102E0002C01D161 :101790002E716E71EC600020FEBD00000004004858 :1017A000001400487C010020A80D00201027000034 :1017B00028150020003800400A07120F012191402F :1017C000014201D001207047002070470A07120F24 :1017D00001219140014201D0012070470020704753 :1017E000F8B50B051B0E254C5B001C1909239B014A :1017F000E31800930523DB01E618012307469B024B :101800000A07E5180020120F3B0004F031F8090622 :101810000A0E12191D21282F2E00FF2928D8009802 :101820001BE0FF2924D8009808E0FF2920D8B08ABF :1018300018E080291CD20F2080012018808E11E032 :10184000802915D2A88A0DE0402911D2B08E09E076 :1018500040290DD20B2080010EE0808A02E0802911 :1018600006D2A88E1146FFF7B1FFF8BD802901D33B :101870000020F8BD0920C0012018EEE7A80D0020C7 :10188000C1688268914201DA501A7047914202DCC5 :101890004269002A02D04068401A704780690028D7 :1018A000FBD000207047C2688168914201DA501A6B :1018B0007047914202DC8269002A02D04068401AD7 :1018C000704740690028FBD000207047064901227C :1018D0008969120308180101914201D3FF380138C8 :1018E00002490001401870475801002000D000084C :1018F000F0B5334C4B001C190923DB01E5180B2311 :101900000246DB010020E318892A25D00EDC2C4F8B :101910002C4B4E00F619F618803A130003F0A8FF7E :10192000091F1F152125292E333A15008D2A3FD076 :101930000CDC8A2A33D08B2A35D08C2A05D1402959 :101940003ADA0B2080012018808EF0BD992A03D04E :10195000A12A01D0FE2AF8D180292DDA2EE00846EE :10196000F0BD102928DAB08AF0BD102924DAB08E33 :10197000F0BD102920DA0520C00108E008291BDA93 :101980000F208001DFE7082916DA012080022018E5 :10199000808AF0BD80290FDA3420285EF0BD8029CE :1019A0000ADAA88AF0BD402906DA0D208001CAE7CC :1019B000402901DAA88EF0BD0020F0BD988EF0BD60 :1019C000A80D00204002000010B5074A9068074BA0 :1019D00099699468A04201D090689969044A51437A :1019E0000914401A10BD0000D800002000E000E0FB :1019F0005505000031B500F0B5F8009C0546601CA7 :101A000000D0641C00F0AEF8401BA042FAD338BDF1 :101A1000F8B5054623480F46017E012601290BD063 :101A2000012101762868204C012807D02046FFF7C5 :101A3000F7FD002813D030E00220F8BD2046FFF764 :101A4000EFFD002829D1FFF79BFD2046FFF7E8FDB9 :101A50000646164801690422914301611DE00020F9 :101A6000C04338606C6812E02046FFF79BFD0E48CB :101A7000FFF7D6FD06460D48016902229143016138 :101A8000002E01D03C6008E0012080022418A868E4 :101A9000696880024018A042E6D802480021017619 :101AA0003046F8BDE017002050C30000002002407F :101AB0000348016980221143016100207047000042 :101AC00000200240F0B51FB405461A480024017EEC :101AD00016461F46012907D0012101761648FFF757 :101AE0009FFD002803D021E0022005B0F0BD012DAC :101AF0001AD0022D18D0042516E0220130463946AE :101B0000FFF742FB81B2019862001018FFF75CFDFD :101B10000948FFF785FD09490A69520852000A6120 :101B2000002803D1641CE4B2AC42E6D30149002290 :101B30000A76DAE7E017002050C3000000200240D8 :101B400005480169090605D5044941600449416019 :101B500000207047012070470020024023016745A4 :101B6000AB89EFCD0148006870470000C401002038 :101B700002480168491C016070470000C401002050 :101B800010B506480168102211430160002000F0E2 :101B900007F800F017F8002010BD000000200240F8 :101BA00010B5044600F040F97D21C900FFF79CFA0A :101BB00000F070FB00222146501E00F025F80020A6 :101BC00010BD000008B50F488169012211438161F1 :101BD000816911400091C26901040A43C261C06970 :101BE0000022084000901146501F00F00DF800221E :101BF0001146901E00F008F800221146501E00F019 :101C000003F808BD0010024010B502F0A9FA10BD9B :101C1000F8B504460068364DC00354D5E86900267F :101C2000C00007D4E86929040843E861E86908406E :101C3000012600902F480168C90511D401460868A3 :101C40008A1510430860FFF78DFF074604E0FFF791 :101C500089FFC01B642823D826480068C005F6D534 :101C6000286A0321090208401FD062680A408242A4 :101C70001BD0286A2A6A8843012109040A432A6280 :101C80002A6A8A432A622862C0070ED0FFF76AFFD9 :101C9000074607E0FFF766FFC11B1748814201D9DD :101CA0000320F8BD286A8007F4D5286A03210902B9 :101CB0008843616808432862002E04D0E869012146 :101CC00009078843E8612078C00705D0286BA16820 :101CD00080088000084328632078800605D5286B9B :101CE00010218843E168084328630020F8BD000004 :101CF000001002400070004088130000F8B5044650 :101D000044480E460068C007C00FB0420AD241489E :101D1000016849084900314301600068C007C00FED :101D2000B0425CD120783C4F800705D57868F0211F :101D30008843A168084378602078C0073FD0606876 :101D4000012813D03968022813D08907002946DA00 :101D500079688908890001437960FFF703FF054628 :101D6000606801280DD0022817D024E03968890363 :101D7000ECE78901EAE7FFF7F5FE411B27488142BE :101D800017D878680007800F0128F4D117E0FFF713 :101D9000E9FE411B214881420BD878680007800F7B :101DA0000228F4D10BE0FFF7DDFE411B1B48814206 :101DB00001D90320F8BD78680007800FF3D11548DA :101DC0000168C907C90FB1420BD901684908490028 :101DD000314301600068C007C00FB04201D001204C :101DE000F8BD2078400706D57868072109028843A6 :101DF000E1680843786000F01DF87968084A090630 :101E0000090F515CC840074908600020FFF7C8FE71 :101E10000020F8BD0020024000100240881300009E :101E200094680008C0010020014800687047000065 :101E3000C001002010B513A00FC888B06C460FC4B5 :101E400014A00FC80FC4174B5A680C20114601404C :101E50001548042902D0082902D0144808B010BD42 :101E60009102090F6C46645CD96A04AB0907090F3B :101E7000595CD20303D5FFF737F96043EEE70C480E :101E80006043EBE702030405060708090A0B0C0D83 :101E90000E0F10100102030405060708090A0B0CB7 :101EA0000D0E0F1000100240001BB70000127A0048 :101EB00000093D00FEB504460078D04DC00746D06D :101EC00068680007800F012807D068680007800F46 :101ED000022809D16868C00306D52868800336D572 :101EE000606800287ED032E0012160680904012882 :101EF0000AD08A00002801D005280FD0286888431E :101F000028602868904301E02868084328606068DA :101F1000002810D0FFF726FE064608E02868104388 :101F20002860F1E7FFF71EFE801B64286FD8286841 :101F30008003F7D50BE0FFF715FE064604E0FFF738 :101F400011FE801B6428F1D828688003F7D420781C :101F50000126800700283BDA68680007800F07D059 :101F600068680007800F022809D16868C00306D49A :101F70002868800715D5E068012833D111E0E068B2 :101F80000028286815D030432860FFF7EBFD07468E :101F900004E0FFF7E7FDC01B0228C7D828688007C8 :101FA000F7D52868F82188432169C90008432860CB :101FB0000EE0400840002860FFF7D4FD074604E02B :101FC000FFF7D0FDC01B0228B0D828688007F7D4DF :101FD0002078000724D5E0690028686A10D03043D3 :101FE000686200E007E1FFF7BDFD074604E0FFF788 :101FF000B9FDC01B022899D8686A8007F7D50FE0A1 :10200000400840006862FFF7ADFD074605E09DE02F :10201000FFF7A8FDC01B022888D8686A8007F7D49C :10202000207804274007002860DA00200190E86942 :10203000C00008D4E969B8060143E961E9690140D3 :102040000120009101906E480168C90511D4016812 :10205000821511430160FFF785FD009005E0FFF751 :1020600081FD0099401A642870D865480068C00551 :10207000F5D5A06801280AD0002801D0052810D085 :10208000286A400840002862286AB84301E0286AAC :1020900030432862A068002812D0FFF763FD00904B :1020A0000AE0286A38432862F1E7FFF75BFD0099F0 :1020B000411A5448814249D8286A8007F5D50DE075 :1020C000FFF750FD009006E0FFF74CFD0099411A24 :1020D0004C4881423AD8286A8007F5D401980028F4 :1020E00004D0E969012000078143E9612078C00636 :1020F00035D5606901280CD0401D686B23D038436A :102100006863686B400840006863FFF72BFD064674 :1021100022E0686B38436863686B30436863FFF79D :1021200021FD064604E0FFF71DFD801B02285BD859 :10213000686B8007F7D5686BF8218843A169C900EF :10214000084368630BE0B8436863F4E74CE0FFF7CB :1021500009FD801B022847D8686B8007F7D4206AE6 :10216000002846D069680907890F022943D0012752 :102170003F060228286805D0B8432860FFF7F2FC24 :10218000044633E0B8432860FFF7ECFC064604E061 :10219000FFF7E8FC801B022826D828688001F7D4C6 :1021A000E86AE16A000900010843E862616AA06A1E :1021B000084369683D221204914308436860286817 :1021C00038432860FFF7CEFC044604E0FFF7CAFC62 :1021D000001B022808D828688001F7D509E0FFF71E :1021E000C1FC001B022801D90320FEBD2868800124 :1021F000F5D40020FEBD0120FEBD0000001002400D :102200000070004088130000042204490428086973 :1022100002D09043086170471043FBE700E000E004 :10222000154801686431016014480168491C016067 :1022300013490868401C08601249134AC868401CCA :10224000C860904216DB0020C8601048816D491CB0 :102250008165016D491C0165416D491C41650C4951 :10226000088B002806D0401E80B20883782801D948 :102270007820088370470000E0000020DC00002088 :1022800028010020980100201027000028130020BA :102290005C150020094910B5401E884201D9012073 :1022A00010BD074C60610321081F01F059FF002099 :1022B000A06107202061002010BD0000FFFFFF008B :1022C00000E000E010B5FFF7ABFF10BDFEE7000037 :1022D00010B500210F4A0846516043009B18401C6E :1022E0001981FF28F9DD002005230B4ADB0144009A :1022F000A418E418401CA1821028F8DB0020092350 :10230000DB014400A418E418401CA186FF28F8DD76 :10231000002010BD200B0020A80D002010B5402883 :1023200002DB0020C04310BD10221143C200094B44 :102330004000D218C01858240D23A1529B0100213F :10234000C3189986E300C018818603480068506569 :10235000084610BDA80D0020C401002070B5044639 :102360001E463830049D03F057FD20462A4631466C :10237000583003F051FD002070BD000070B5104DC5 :10238000064601462846FEF7C5FE0E4C6061FFF783 :102390004BFD2946FEF7A8FEE0600B483146006879 :1023A0000546FEF7A1FE20612A46002307480F21BB :1023B000FEF7C4FE208060696430A060002070BD1C :1023C00040420F00D8000020C00100200000404221 :1023D000034610B50020024602E09C5C6040521C9F :1023E0008A42FADB10BD0000F8B508460D460978B0 :1023F000552901D0252903D0012A01DD451C521E93 :10240000344F602479792B786143334C0919334C6C :10241000252B30D0A3685B1CA360CB695B1CCB6110 :10242000B97800290FD0F97800290FD001292C495B :1024300013D007231B02C9180A7501462948FEF765 :10244000B4FE0020F8700020C043F8BD2549264B9B :1024500055390A750146224807E037235B01C91840 :102460000A750146204B1E482033C018FEF79DFE1A :10247000F878401CE6E76E79802E06DDE068401CA7 :10248000E060086A401C0862DDE7334608339A4280 :1024900008D2086A401C0862E068401CE060022024 :1024A000C043F8BDB11DFFF793FFA9198979814297 :1024B0000DD02069401C2061797960204143064895 :1024C0000818416A491C41620320C043F8BD00203E :1024D000F8BD00000C01002010060020DC030020E5 :1024E000A80D0020BD140020D5060000F8B50E464A :1024F00004462520069F079D089920706270A670EB :10250000E37027712F46002008376619372B1AD041 :1025100009DC1A46303A130003F0AAF9072615150C :10252000262626172600612B0DD006DC382B0AD074 :10253000412B08D0422B17D105E0622B03D0632B2F :1025400001D0642B10D1657102E06571002D03D0BC :102550002A46A01DFEF729FEA91D2046FFF738FFD9 :10256000B0710D20F0713846F8BD0000F1B584B0AF :10257000FFF7F8FA0446FFF727FA564DE9790029E4 :1025800006D0297A002903D0E968411A322905D8F2 :10259000E9687D22411AD200914264D9297A4E4BD2 :1025A000002963D06A79602672434C4E0121B150F4 :1025B000642159646979491CC9B26971EA7A914206 :1025C00008D9A96A411AE962A862A979491CA971C6 :1025D000012169714249098A424E6A794249B35CD4 :1025E0000B70B3185B784B706026134673433B4EF9 :1025F000270AF3588B700026CE700C714F71270C90 :102600008F71270ECF716F46E8603878AF798008F8 :10261000BF078000BF0F38436F463870002B55D07E :10262000EF2318403870009008232E480193029140 :10263000412300211030FFF759FF2A49024610318B :10264000049802F01FFC6979602041432348081870 :102650004168491C4160C268E9688A1A4263C160E6 :102660006C63EE712E72002005B0F0BD696A491CE2 :1026700069621E494A68521C4A606A79602116469E :102680004E431649B44671180E69761C0E614E69A8 :10269000761C4E61EF79002F02D18F6A7F1C8F620A :1026A0008F69BE4200D98E610C49032E82D9002663 :1026B0006746CE51C82199640A4910398E540C4995 :1026C0008A18092189015118CE7473E71023184321 :1026D000A8E700000C0100202813002010060020AD :1026E0005C1500200005002010090020DC030020FC :1026F000A80D0020F7B5087886B00C46552801D003 :10270000252802D0012A00DD4C1C474E62797079E1 :1027100060210490484345494518A868401CA860BA :1027200008468038039031460B6BC968E778591A20 :102730003346A0789B69303F00933B0003F098F844 :1027400013420B1742424229424242424242424213 :1027500042422C4542003649A3790B542179A01DF1 :1027600032230192009102900021049A22E07161CB :10277000009A914200DDB1612D4AA37913540020E3 :10278000E9626861286B884200D2296301203072B7 :1027900018E00120F07115E02548A1790170103092 :1027A0000078A0712179A01D01920091029042232E :1027B000317900220398FFF799FE024603990698A3 :1027C00002F060FB002009B0F0BD7161009A9142F7 :1027D00000DDB161164BA7791F54E2791B185A70BE :1027E0009446227A9A70134B1B18092080011818FE :1027F000C7746346037542750F48008A0020E9627A :102800006861286B884200D229632046677A0A30C3 :10281000FEF7EFFC617B0002000A09060843B900DD :1028200069188863B2E700000C0100201006002040 :10283000F0040020A80D00205C150020F7B5154617 :102840000C46FFF7C1F81A4E306321780020552955 :1028500003D1012D01DD641C6D1E317800290FD0DC :102860000127F7712A4621460098FFF7BDFD002891 :1028700005D137722A4621460098FFF73BFFFEBD7F :1028800071780029FBD00B4E2A46B06B2146401CC4 :10289000B063009800F012F80028F0D106482A46EC :1028A000406C30652146009800F080F8FEBD0000C5 :1028B0000C0100201006002028130020F0B5084667 :1028C0000D460978552901D0252903D0012A01DDBB :1028D000451C521E297800231A4FDB431A4C252928 :1028E00006D0A068401CA060386C401C386409E029 :1028F00014496E79896C491C802E05DDE068401C06 :10290000E060B9641846F0BD334608339A4206D2F7 :10291000B964E068401CE0600220C043F0BDB11D16 :10292000FFF756FDA9198979814208D02069401C1A :102930002061F86C401CF8640320C043F0BD002007 :10294000F0BD000010060020DC030020F8B5FFF702 :102950003BF8134B1A69197900291FD05C7A114989 :10296000002C05D07D20800148640020587215E0BD :102970000C4E0D4C851A8036A54204D97D22920159 :102980008A64012206E01219904207D97D22920141 :102990008A6402228A67C867186930600020F8BD1F :1029A0000C01002028130020E02E0000F7B5087865 :1029B00084B0552802D1012A00DD491C554802681F :1029C000521C02604A794878534B0393534B524C44 :1029D0001D798034A84208D0FF2806D0606C401CC6 :1029E00060640020C04307B0F0BDA84201D0FF28BA :1029F0007DD14A4B186B0090186101205872464FE8 :102A0000CE78A03F384610300078372E7FD007DCD4 :102A1000303E330002F02CFF067B137B7B7B207B58 :102A2000612E74D004DC382E71D0412E6FD11CE0A1 :102A3000622E6CD0632E6AD0642E68D15BE08B79F5 :102A40003B708871354B00981861881D09793223D5 :102A50000192009102903EE0002009793623009116 :102A6000019002460290012137E08B793B70CB79CF :102A70002B4E7B707375CE7A8B7A36029E19274B5C :102A8000DE61254F9E7A903F88717878C871B000DA :102A90004E720019078F8F72078F761C3F0ACF7214 :102AA000876B3F0C0F73806B000E4873F0B2987207 :102AB0000A2801D30020987208796B461870C00666 :102AC00003D57D20174B80019864881D0979422326 :102AD000019200910290002229460398FFF706FD1B :102AE0000246E06B401CE0630399049800E00EE0AE :102AF00002F0C8F90BE0CA798879120280180A7AC4 :102B0000497A12040906511841180448C16100208D :102B100069E70000DC030020900500200C01002084 :102B20000810002028130020034610B5002002469C :102B300002E09C5C6040521C8A42FADB10BD30B55A :102B40000D46084609781446252901D0012030BDDC :102B5000062C01D2032030BD611EFFF7E5FF2919C5 :102B60002039C97F814201D0042030BD002030BD12 :102B7000F8B51E460B465527069D0799077043700A :102B80008270C670044605712A46401DFEF70DFB93 :102B9000691D2046FFF7C8FF014660194171A81D55 :102BA000052E02DA002E00D10020F8BDFEB5164633 :102BB0000F460546FFF7C3FF040014D068460472B1 :102BC0000420009002A90B4801910278401E017870 :102BD000EE230948FFF7CCFF02460749284602F0DA :102BE00051F92046FEBD32463946284600F006F827 :102BF000FEBD000045010020A0090020F7B5FA48FD :102C000086B04F7842688260421C15788E782D0914 :102C100036072D01360F0B7935431570F34A0292B2 :102C200000780C460490874201D0FF2F77D12146CF :102C3000E6780931EE488C46332E72D028DCED4917 :102C4000182E0A686CD012DC072E20D008DC002E6B :102C500065D0012E3ED0032E41D0052E7ED160E0FE :102C6000112E7CD0162E7BD0172EF7D13FE2232ECB :102C7000EED006DC192E74D0212E73D0222EEDD189 :102C80008FE1242EE4D0312E4BD0322EE6D1BFE09E :102C9000582E68D012DC542E66D008DC342E71D049 :102CA0004F2E70D0502E6FD0532ED7D16EE2552EAE :102CB0006BD0562E6AD0572ED0D164E2304663389E :102CC0000421030002F0D4FD09F0EFEE171D4A10B5 :102CD0004A154A00641D00930194012351E2C6493C :102CE000182003E03946C7E2C4490C200191009046 :102CF00005E0C348F6E1C24910395020F6E73346F3 :102D00003FE2E1790020B94A03E023185B7A1354CB :102D1000401C8842F9DBB54802F00CFDA3E075E2E7 :102D2000EEE1A279617912028918E27989B2882BE1 :102D30002DD0892B2FD08A2B31D0832B34D0842BCC :102D400037D0852B3AD0862B3DD0872B40D08B2B8C :102D500043D08C2B46D0FE2B1DD006E097E29FE19E :102D6000AEE1EDE1C9E066E227E2A92B3FD0B32B4B :102D700041D0992B42D0A12B45D09C481038401807 :102D800000925FE244E0F6E1F1E140E249E249000D :102D900009189C483AE0490009189B4836E0490068 :102DA00009189848203831E049000918952080001A :102DB0002CE0490009189D20800027E049000918EF :102DC000A520800022E049000918FD2080001DE0B8 :102DD000490009188B48A03818E049000918DD207F :102DE000800013E049000918BD2080000EE0490072 :102DF000091886480AE04900854807E085484900E7 :102E00000818001DBCE749000120C0060818B7E7F4 :102E1000A279617912028918E27989B2882B25D0CA :102E2000892B27D08A2B29D0832B2CD0842B2FD0F1 :102E3000852B32D0862B38D0872B3BD08B2B3ED0A6 :102E40008C2B41D0FE2B45D0A92B47D0B32B49D09A :102E5000992B4AD0A12B4BD064481038401800223F :102E60006146FEF7A2F90020009024E1490009180C :102E7000644840E04900091863483CE049000918EB :102E80006048203837E0490009189520800032E07A :102E9000490009189D2080002DE049000918A5204F :102EA000800028E0DFE1D2E1CEE149000918FD20F1 :102EB000800020E0490009185248A0381BE0490072 :102EC0000918DD20800003E049000918BD208000BA :102ED0000818C4E7490009184B48F9E749000918E0 :102EE0004A48F5E749004A48F2E74900494802E004 :102EF00049000120C0060818B2E7A27961791202E0 :102F000089180922920189B2002B0FD0012B13D00E :102F1000022B1CD0032B20D0042B26D0052B2AD02B :102F2000062B28D0082B34D000202AE00B095B00A8 :102F3000181833E0012024E00B095B00181811E099 :102F40000A07120F012191400840F3D119E00A0944 :102F5000520010180522D20120E00A095200101870 :102F60000F2292018018808EEAE70A095200101899 :102F70000122920212E0C90008184030007E40068B :102F8000C00F69460873012003A921230191009015 :102F9000F7E00A09520010180922D2018018808A2D :102FA000CEE7A27961791202891889B2002B33D059 :102FB000012B3AD0022B41D0032B48D0042B4FD009 :102FC0004022052B54D0062B52D0072B5BD000207B :102FD0006946087300200090034803A9401C019132 :102FE000027822237EE6000044010020A009002090 :102FF000A80D0020200B0020C6670008ACF7FF1FBB :10300000107C0008B4040000B4050000B406000001 :1030100010060020280D00200B0709094900091897 :103020001B0F9520E279800035E00B070909490064 :1030300009181B0F9D20E27980002CE00B0709097D :10304000490009181B0FA520E279800023E00B0737 :103050000909490009181B0FFD20E27980001AE0D8 :103060000B0709091B0F49000918E2798D4812E086 :10307000C90008184030018B9143E279D207520E03 :1030800011430183A6E70B07090949000918854880 :10309000E2791B0F80300818194601F017FF99E7F5 :1030A000002B05D0012B00D0DDE602F0CFF8DAE6E8 :1030B00002F004F9D7E601907B48E378027811E644 :1030C000A179607909024018E179784A80B2002B31 :1030D0000AD0774C012B03D0764B9B8A002B03D070 :1030E000400000190091ADE040008018FAE7002A86 :1030F00001D000200860002000901723019040E0DC :10310000002A01D000200860A179607909024018E6 :1031100085B2E2790020684903E02618767A0E54D9 :10312000401C9042F9DB6449284602F011FB002064 :103130000934009001905C48039402781823D1E58B :10314000A1796079090241185A48C182818A00290F :103150000BD000218182574801F01EFE0020009014 :103160000190514819230278BCE50121F2E751484A :103170000383002002E04F49002008830090019063 :10318000E3782A46AEE54B492020AFE5A179607986 :1031900009024018494980B20A18E179121D7828BD :1031A00001D3002105E00B18782B02D97821081AE9 :1031B00081B2C8B201920090A1E5A17960790902BB :1031C00040183E4980B20B18E2791B1D782801D3C4 :1031D000002205E01118782902D97821081A82B254 :1031E00061461846FDF7E1FF0020009001902E484F :1031F000E378027839460298FFF7BAFC0246029952 :10320000069801F03FFE2D4802F0C2FA3CE02B4840 :1032100002F0BEFA00200090019023485523027866 :1032200060E5244801F0B8FD0020009001901E48A0 :103230005623027856E5032109022148FDF7CEFF07 :103240000020009001905AE51E481F4A4DE7A179E1 :10325000607909024018E17980B20D01FEF736FB72 :10326000E9B2009127E7FEF7C3F800200090019033 :103270000D486523027835E50298FFF779FC024690 :103280000299069801F0FEFD002009B0F0BD022071 :103290006946087303A901200191EE232A46009094 :1032A0000499E9E7140400004501002000800008AB :1032B00000A000085C150020A0090020280D0020B7 :1032C00010060020A80D0020F405000070B5FEF7E0 :1032D00059F8164800F090FA154D164C6869A0652B :1032E0001248816861658188491C81808088E0641A :1032F0000E4801F051FD2868206768686067A8687B :10330000A06701220C4B1146A06DFDF7CFFF2046B0 :103310008030E9680160A9694160E96981602969D3 :10332000C160296A0161002070BD00005C150020A9 :1033300058010020281300203930000008B5044946 :103340004A6902434A6149690140009108BD000091 :103350000010024008B50449CA690243CA61C9693C :103360000140009108BD00000010024008B504496A :103370008A6902438A6189690140009108BD0000A1 :103380000010024070B5094E04467618203E049D98 :103390000C34F17F0830102D03D00A50F07F035118 :1033A00070BD0A51F17F0B5070BD0000A063000892 :1033B000044A51182039C97F4258520852004250DD :1033C00070470000A0630008044A51182039C97FE3 :1033D000425801231A43425070470000A06300087E :1033E000044A51182039C97F425802231A434250D7 :1033F00070470000A0630008054B10B5591820392C :10340000C97F435803242403A3431343435010BDEF :1034100070680008054B59182039C97F001D0B58EA :103420001B0C1B0413430B5070470000A0630008E3 :10343000054B10B559182039C97F4358034C234018 :103440001343435010BD000070680008EFBFFFFF3A :10345000054B10B559182039C97F43588024A34320 :103460001343435010BD000070680008054B10B5B1 :1034700059182039C97F43580324A402A343134396 :10348000435010BD70680008054B10B5591820391D :10349000C97F43582024A3431343435010BD000069 :1034A00070680008054B10B559182039C97F43587A :1034B0004024A3431343435010BD0000706800082C :1034C000054B10B559182039C97F435803242402ED :1034D000A3431343435010BD70680008F0B50023A8 :1034E0003CE001249C40224037D04F6806681446D7 :1034F000544365006519AE4367433E4306604E681A :10350000012E01D0022E05D18F6886686743AE4335 :103510003E4386600F69C668AE4325467D432E4311 :10352000C6604D68022D18D14D69FF2A09D8066A78 :10353000544354432201121B96436C4326430662B4 :103540000BE0140A22466243624362431401A61A46 :10355000446A6A43B443144344625B1C0A681446D9 :10356000DC40BED14A68012A01D0022A06D10A688D :10357000C968436893434A43134343600120F0BD45 :103580000069814301D0002070470120704700008E :1035900010B57D21C900FDF7A7FD0449401E486113 :1035A000002088610520086110BD000000E000E0F7 :1035B00010B5044601F0BAFA206001F09DFA60608F :1035C00001F0A8FAA06010BD014610B50020002946 :1035D0000FD1104A116B8907890F01290AD00229DE :1035E00011D0032909D001F0A1FA01F085FA01F008 :1035F00091FA10BD01F09AFA10BD11688907C90F40 :10360000FAD0054810BD116A8907C90FFAD0012008 :10361000C00310BD0010024000127A0010B503680C :1036200000225B06DB0F25D10CC98C681A434B685E :1036300023431A43CB681A430B691A434B691A4355 :103640008B691A4303680C4C23401A43026042689A :103650000A4B1A40CB681B0C1A430B681A43426092 :1036600001238A695B0308399A4202D1898C89B2A5 :1036700001610122104610BD4000FFFFFBF0FFFF7B :10368000F0B50268194B1A4C984201D0A04203D100 :103690007025AA434D682A43164D174E174F98427E :1036A0000AD0A04208D0164CA04205D0A84203D0B0 :1036B000B04201D0B84204D103242402A243CC6812 :1036C000224302608A68C2620A888262984205D0F8 :1036D000A84203D0B04201D0B84201D1097C0163B5 :1036E00041690122114341611046F0BD002C0140A7 :1036F00000040040004001400044014000480140F7 :103700000020004041680122D2029143416081685B :103710000822914381607047FEB5044600680D465B :103720000026C007C00F43D1E9686868AA6908434A :1037300029691143084321681E4A1140084320604B :10374000A8686168032212039143014361606869BC :10375000A168121191430143A1601748844203D12B :103760000020FFF731FF06E01448844220D168466C :10377000FFF71EFF029800281AD02968002917D0E9 :103780000126AA69F3039A420CD140004A08801826 :10379000FDF7AAFC0A4980B201400007420F0A4324 :1037A000E26005E04A081018FDF79EFC80B2E06078 :1037B0003046FEBDF369FFFF003801400044004081 :1037C000F0FF000008B506490A690092421C00D0CB :1037D000401C0A69D20300D5401E0028F9D108BD5B :1037E00000E000E010B580220249FDF7DEFC002079 :1037F00010BD0000E0670008F0B5154A002155141F :10380000144C154F0CE0D65ABE4208D19B185B8869 :103810006668B34203D90AC44B1C2360083C491CA8 :103820004B01AB42EFD321680123002905DB49019D :103830008918202201F0B0F900E08380A0684001DF :103840002030A84201D90020A0600020F0BD000077 :1038500000C8000858010020AA5500001FB50B46FB :10386000024604A1684601F0EFFF0146684601F0F8 :1038700021F91FBD201B5B25643B25644800000027 :1038800010B50120FFF75AFD00210A2000F046FC88 :103890000A2000F039FC00210B2000F03FFC0B2037 :1038A00000F032FC10BD0000F0B5012087B04004EC :1038B000FFF744FD01208004FFF740FD0120C00414 :1038C000FFF73CFD01208005FFF738FD0126C020F1 :1038D000002403256A46049631C20927FF0669467B :1038E0003846FFF7FBFD8020694631C169463846FE :1038F0000494FFF7F3FD93200001009003946946C0 :103900000196029504943846FFF7E8FD3002B8614D :1039100068026A46049631C269463846FFF7DEFD02 :1039200029486A46049631C269462848FFF7D6FD01 :103930002748009003946946019602950494234811 :10394000FFF7CCFD072040030090029403946946E2 :10395000019604941F48FFF7C1FDF0206A460496C3 :1039600031C269463846FFF7B9FD3002B861400000 :103970006A46049631C269461448FFF7AFFD4020FD :103980006A46049631C269461348FFF7A7FDF00264 :10399000009069460196029504943846FFF79EFD13 :1039A0008020009069460196029504940A48FFF72A :1039B00095FD40206A46049631C269460348FFF7E8 :1039C0008DFD07B0F0BD00000704000000040048B2 :1039D000C0FC0000000800480014004808480749DF :1039E00001600849016004214160074A8260C168A2 :1039F0004907FCD10261054901607047CCCC000049 :103A00000030004055550000FF0F0000AAAA00003A :103A1000F0B591B0282106A8FDF7E0FB1821684613 :103A2000FDF7DCFB01200003FFF7A0FC0120800470 :103A3000FFF784FC0024082502260327039404943E :103A40006A460594E0C269462248FFF747FD102008 :103A500069460394C1C101200490694605941D483C :103A6000FFF73CFD2020039404946A460594C1C2EC :103A700069461848FFF732FD0021192000F04EFB7F :103A8000192000F041FB0720000208900120069455 :103A90000A9040020B900994802007940E940D9098 :103AA00007200D4C0F900C9506A92046FFF7B6FD98 :103AB00060681021884360606068A8436060606847 :103AC0000902884308436060206840210843206061 :103AD00011B0F0BD000400480030014010B586B0C0 :103AE00014216846FDF77AFB1020FFF733FC002114 :103AF000112000F013FB112000F006FB2F20694677 :103B00000880002001900848084C02902046FFF7EA :103B1000B7FD2068802188432060E06801210843C8 :103B2000E06006B010BD0000E70300000010004098 :103B300070B501208EB08003FFF718FC032040020F :103B400007900220089003200024099001250920F5 :103B50000A9407A90C950B94C006FFF7BFFC3A4ED8 :103B6000102202213046FFF763FC0022022130467A :103B7000FFF742FC002202213046FFF785FC0022BD :103B800002213046FFF78EFC802202213046FFF7EB :103B90005FFC002202213046FFF792FC0022022146 :103BA0003046FFF763FC002203213046FFF740FC5C :103BB000002203213046FFF71FFC0022032130467C :103BC000FFF762FC002203213046FFF76BFC8022E6 :103BD00003213046FFF73CFC002203213046FFF76B :103BE0006FFC002203213046FFF740FC00211B2020 :103BF00000F094FA1B2000F087FA14486946006828 :103C00000090019402940394059406940C20104CA7 :103C100004902046FFF780FD606829050843606036 :103C20006068490003225205904308436060A06821 :103C300049120843A0602046FFF764FD206828432E :103C400020600EB070BD000000000240F4000020B3 :103C50000038014070B58EB01C216846FDF7BEFAF1 :103C6000182107A8FDF7BAFA012464042046FFF7DB :103C700071FB2046FFF762FB0E20079002200890A0 :103C8000032001250990002409200A9507A90C9515 :103C90000B94C006FFF722FC414E1022042130464F :103CA000FFF7C6FB002204213046FFF7A5FB0022E8 :103CB00004213046FFF7E8FB002204213046FFF7DD :103CC000F1FB802204213046FFF7C2FB00220421D1 :103CD0003046FFF7F5FB002204213046FFF7C6FB14 :103CE000002205213046FFF7A3FB002205213046C4 :103CF000FFF782FB002205213046FFF7C5FB0022BB :103D000005213046FFF7CEFB802205213046FFF724 :103D10009FFB002205213046FFF7D2FB0022052140 :103D20003046FFF7A3FB00211C2000F0F7F91C2010 :103D300000F0EAF9A61EFF21304600F0EFF9304608 :103D400000F0E2F91748EE03006800900194029435 :103D500003940C2004AA51C2134C69462046FFF775 :103D6000DBFCA06821140843A060A068B043304386 :103D7000A06020681F21490588430843206020680F :103D80004911884308432060A068A1140843A0603B :103D90002046FFF7B7FC2068284320600EB070BDB6 :103DA00000000240F80000200044004000B5084632 :103DB000042A02D80020C04300BD01787F2902D91F :103DC0000120C04300BD41784906490E1F2902D990 :103DD0000220C04300BD114601F0E8FF0028F9D0E1 :103DE000042000BDF7B588B00F460A9A0898FFF77F :103DF000DDFF0690002803D00020C0430BB0F0BDCB :103E0000BD483A7800783946824273D18C784A7836 :103E1000CB78B98824024DBAB8491C4308704A705F :103E200001200790200521070226000E090F13002C :103E300001F01EFD11A60A508DA7BFDDA6A6A6A6FD :103E4000A6A6A6A6E9F0A600E81DC008AB49039007 :103E50008870002038E00027012005970190009825 :103E6000C000049026E0210701222009090FD20298 :103E7000944207D24200A24812180920800110186B :103E8000808E05E042009E481018FF308130808A05 :103E9000FDF792FC002801D0019807430198641CAB :103EA0004006000E01900598A4B2401C0590082819 :103EB00004DA049805994018A842D4DB8F48009989 :103EC0004018C7700098401C039900908842C2DBDC :103ED000761854E0E81DC0088849039088700020D7 :103EE00030E0002000900120019002980027C000DF :103EF00004901DE0FDE02005000E420080482107EF :103F00001218092080011018090F808AFDF754FC4F :103F1000002803D001990098084300900198641C80 :103F20004006000E7F1CA4B20190082F03DA04980B :103F3000C019A842DFDB7149029A00988918C8703D :103F40000298401C039902908842CADBC0E76800CF :103F50006A498446887000200EE021184A006849AA :103F6000470052180921C9015118898E634A0B0A6A :103F7000BA18D3701171401CA842EEDB17E0761C12 :103F80008DE068005D4A8446907000200DE02118A5 :103F90004B005B4947005B18092189015918898A40 :103FA000BF180B0AFB703971401CA842EFDB664456 :103FB000E5E7002D12D0FF221202954207D1420000 :103FC0004F4812189D208000101800F077FF3946E6 :103FD0004A480A9AFDF7E9F80A9E85E042004848F7 :103FE00012189D208000101800F028FEEFE73879A5 :103FF0007979000208434249620052180921C90137 :1040000051188886E3E7E81DC0083C490390887092 :10401000002036E047E03818C07900900120019078 :10402000002005900298C000049024E0210701229E :104030002009090FD2029442009B019A07D21A402C :1040400043002F481B189D208000181805E01A40D7 :1040500043002B481818FF30953000F043FF0198BB :10406000641C4006000E01900598A4B2401C059007 :10407000082804DA049805994018A842D6DB02986B :10408000401C039902908842C5DB1C48B9788170B6 :10409000F978C1703979017179794171361D0698C5 :1040A000002814D025E000200EE04100C919CA798B :1040B000097A12020A4321184B0011495B180921A1 :1040C000C90159188A86401CA842EEDBDDE7079833 :1040D000002809D0B1B2094801F068FE07498855A7 :1040E000000A89194870B61C32460449089800F045 :1040F000C9FE002082E6000050010020A00A002036 :10410000A80D002070470000C106C90E012088409C :10411000014908607047000000E100E08307FF22CA :10412000DB0E9A408907090E994000280BDA000738 :10413000000F0838830808489B001818C369934388 :104140000B43C3617047830804489B001818036839 :1041500093430B430360704700ED00E000E400E090 :104160008307FF22DB0E9A408907090E9940002839 :104170000BDA0007000F0838830808489B0018185E :10418000C36993430B43C3617047830804489B0092 :104190001818036893430B430360704700ED00E079 :1041A00000E400E0F3B5074681B0002000903D78C0 :1041B000FF206E07EC08760FE40001F039FE802C3A :1041C00001D20020FEBD324601265C495C48130046 :1041D00001F04EFB0805313539898D91A1B0574961 :1041E0000978002903D0554949788C4220D181882B :1041F000544F491C81803D70504D3021A8780843B0 :104200007870E8780843B8703520F8700421384693 :10421000FDF7A8F83021084338710D20787111207E :1042200001F006FE0621384600F0F6FD6C702E7097 :104230004248067162E0C188491CC1805EE0018984 :10424000491C01815AE00A78002A02D04A78A24229 :1042500001D00E7152E042893849521C428100203F :10426000CA780EE04100C9194B7889781B0109070B :10427000090F5B1834490C181321490161180B759B :10428000401C2E4C9042EDDB2E4A002015702E4F24 :104290000FE009213B1889015B18197D0D094100C8 :1042A000891830354D701B7D1B071B0F30338B7009 :1042B000401CA1788842ECDB0806C00D401CC1B24E :1042C0002048FDF74FF830210843A1781D4A4900E6 :1042D0008A1850700D209070C91CC9B2194800F09E :1042E0009BFD26710AE08189491C818106E0C18914 :1042F000491CC18102E0018A491C01820298000721 :10430000C10E11480918132080010818818C491C1E :1043100081840098FEBD428A521C4282087800289F :1043200097D04878A04294D10120C0020922D20639 :1043300090618EE7028B521C02838AE77C01002089 :10434000681200207C150020A80D002010B5012067 :104350000449C006486004480168491C016000F037 :1043600005F810BD00ED00E0F000002070B50E482B :1043700001780024002905D004700C4801780C480D :10438000FFF710FF0B4DE86F00280BD00A4E0B49CA :1043900002203268FEF752FA3460EC678021074849 :1043A00001F040F970BD000094010020950100204B :1043B000BC1500205C0300200001002070040020D8 :1043C00010B50648054B00780021403B5A18403292 :1043D0005478491C14700F29F8DB10BDE80D00203B :1043E000F3B5FA4D85B0286800286FD068680028BA :1043F0001CD000220D21082000F08AFD0022114669 :10440000082000F085FD01221146082000F080FD03 :1044100000200146EE4A13184033401C1970102842 :10442000F8DB00260121144640347BE20122E1E75B :10443000B2000598059B805CD7187A780192012517 :104440007B8800931B2873D012DC0246030001F026 :104450000FFA1B5C7272727272723E3E3E3E3E3EBC :104460005C5C5CA7A7A73E3EBEBEBEBEBEBE5C00F7 :10447000342870D011DC01461C390B0001F0F8F92A :1044800018A7A7A7A7A7A7A7A7A7A7A745454545D3 :104490004545454545454545F7453A2873D008DC2F :1044A000014635390B0001F0E3F905E26E56E26E84 :1044B0003000DC2804D004DC3B28EFD0C82824D10D :1044C00020E1DD28FCD0FA28F9D11BE133E2D01F2E :1044D000030001F0CDF90E080A10181B1D1A1A1A54 :1044E0001A1A1A20261A207C4AE0FFF769FF0028D2 :1044F0001FD0207C3AE0FFF763FF002816D1207C14 :10450000002813D125E000F0C3FAF5E12078F7E7A1 :10451000FFF756FF1DE0207C00280AD0002905D0B7 :1045200007E0207C002804D1002902D0012010E0FF :104530004DE000200DE0130001F09AF9070C050E84 :10454000111B262E0C0000F0A3FA00990198FDF72C :1045500047F92074D0E11AE100F09AFA0CE0207CCF :104560000028E6D000990198FDF73AF90028E0D03C :10457000DCE7207C0028DCD000990198FDF730F9B9 :104580000028D6D1D2E758E1207C0028CED100996E :104590000198FDF725F9B3E7207C0028ECD0C5E7AA :1045A000102804D0112804D0122AAED10AE0227CAF :1045B00003E0207C0028A8D001220099019800F097 :1045C000A7FC99E1207C00289FD00022F5E7153850 :1045D0003D79030001F04CF9120A1215181B0F1E49 :1045E0003C4C5B6A2D798185898D7D9400F050FA71 :1045F00013E0207484E000F04BFA1DE000F048FA6C :1046000029E000F045FA36E000F042FA42E000F01E :104610003FFA4EE0207C002870D028460099FDF734 :1046200067F90546F9887879FDF762F9854263D024 :1046300064E0207C002861D028460099FDF758F9F5 :104640000546F9887879FDF753F9854254D155E04C :10465000207C002852D028460099FDF749F90546EC :10466000F9887879FDF744F9854245DB46E0B1E009 :10467000207C002842D028460099FDF739F90546EC :10468000F9887879FDF734F9854235DC36E0207C0D :10469000002833D028460099FDF72AF90546F98805 :1046A0007879FDF725F9854226DD27E0207C002872 :1046B00024D028460099FDF71BF90546F98878793A :1046C000FDF716F9854217DA18E0207C002813D18F :1046D000A3E7207C00280FD1AEE7207C00280BD177 :1046E000B9E7207C002807D1C5E7207C002803D14A :1046F000D0E7207C0028DCD001207AE7002078E792 :104700000225F9E03F791546C8280DD0DC2823D0D2 :10471000DD282AD0FA28F3D12D48E90008184030C6 :10472000007EC0062AD508E02948E9000818403074 :10473000007EC00601D4002121E0207C002822D088 :1047400038460099FDF7D4F80146284600F07EFA75 :10475000284600F0F5F84CE71D48E90008184030FD :10476000007EC006E9D4012109E01948E9000818D3 :104770004030007EC006E0D4022100E0032128463C :10478000FDF7CCFDD9E7284600F0B8FDE0E73F791A :104790000225342802D0372816D108E0207C0028D2 :1047A00012D038460099FDF7A3F8401C07E0207CA2 :1047B000002809D038460099FDF79AF8401E0246B5 :1047C0003846009900F01CFC96E00000200B002009 :1047D000A80D00203D7979790291F988019133285B :1047E00014D035281BD038288AD1207C002887D0C7 :1047F0000298FDF77DF8074628460099FDF778F8FE :104800003A1A0199029800F0FBFB79E7207C002816 :10481000FBD028460099FDF76BF80246F1E7207CB3 :104820000028F2D028460099FDF762F80546019964 :104830000298FDF75DF82A18E3E73A797979029151 :10484000F9880191797A03917D89362806D0392833 :1048500012D03A281FD03B284DD131E0207C0028CF :1048600049D010460099FDF743F807460199029890 :10487000FDF73EF83A180CE0207C00283BD01046AB :104880000099FDF735F8074601990298FDF730F8D1 :104890003A1A29462CE0207C00282CD0104600999A :1048A000FDF726F807B201990298FDF721F800B24A :1048B00047433A462946039800F0A2FB3A1416E013 :1048C000207C002817D010460099FDF711F807B298 :1048D00001990298FDF70CF801B23846FCF71AFC72 :1048E00002B20F462946039800F08AFB3A46691C3B :1048F000039800F085FB0325301141000F48012388 :1049000008183107090F02898B401946114000D061 :104910000121277C0830002F01D01A4300E09A4380 :10492000028076190698864200DA81E503494868D4 :10493000401C4860002007B0F0BD0000200B0020A4 :10494000FEB50746402802DB0020C043FEBD2C48D0 :10495000F9000E1800964036348BE10601D4002091 :10496000FEBDA1063CD561063FD4264909680098E2 :104970000A25406D0190081AA1070FD0A107890FE1 :10498000012905D0022905D0E143890705D005E0BA :10499000642503E07D25ED0000E01B4DA84224DBEB :1049A0002946FCF7B7FB014615487A0012180B2080 :1049B000800110188446808E019B401869435B1863 :1049C000009980B24B650D2189015118898E814271 :1049D00003D8084640210C4334836146888604E0AE :1049E000600602D5402084433483307EB9B240064D :1049F000C20F052000F08CFA307E4006C00FFEBDCD :104A0000A80D0020C401002010270000F7B50446BF :104A1000FCF749FF054602992068A942A16806DC17 :104A20004018029A0199FCF7C0FB029919E040185E :104A30002A460199FCF7B9FB29462046FCF77CFC85 :104A40002046FCF730FF06460298471BB7420DDCB4 :104A5000A16820683A46401801994919FCF7A5FB5E :104A600039462046FCF768FC0298FEBD002E0CDD9E :104A7000A16820683246401801994919FCF795FB56 :104A800031462046FCF758FCAD192846FEBD000013 :104A9000074A0F2011183F235B5C4031401E0B700A :104AA0000028F7DC02494031087C0870704700009C :104AB000A80D002010B50C460A4601460348FFF732 :104AC000A5FF00F097FD204610BD00002003002048 :104AD00010B50C460A4601460348FFF797FF00F061 :104AE00089FD204610BD00002003002010B50C46B3 :104AF00000F0E8FD204610BD04494968F02211404D :104B0000034A0909515CC840704700000010024088 :104B10009468000803494968034A4905490F515CF4 :104B2000C840704700100240A468000810B507484C :104B300041680C200140064805D0042904D008290A :104B400001D100F009F810BD024810BD001002406C :104B500000127A00001BB70010B50C4C61680122EE :104B600012040B48114002D0914200D10948E16A79 :104B70000907090F491CFCF7B7FA61680F22920474 :104B80001140890C891C484310BD000000100240F0 :104B900000093D00001BB70070B5D417A40F002317 :104BA000A418A51003E09C000E5906515B1C9D4201 :104BB000F9DCD40F6B00A418651003E05C000E5BF9 :104BC00006535B1C9D42F9DC104670BD0920C006EF :104BD000006901090F20884370470000F8B50023E1 :104BE00084468025DB431248002421462A464A4356 :104BF000121817880F4EB74209D17E26B75A0E4EAB :104C0000B74204D15288A24201DD0B461446491C2A :104C10000829EBDB082B06D26B431918802260466B :104C2000FFF7BAFF02E06046FEF7DCFD0020F8BDAA :104C300000C00008AA550000A55A00000B07028812 :104C40001B0F012199408A430280704730B54028EC :104C500002DB0020C04330BD0D4CC20013191A46C0 :104C60004032157EAD0611D4400000190D24A40178 :104C70000419A1860B240021A4010019818605488E :104C800000685865108B202108431083002030BD38 :104C9000A80D0020C401002010B500F001F810BDDF :104CA000F0B52D4FB868C007C00F4DD0F8682C4D37 :104CB000C4B22A48C16A491CC162018D491C0185E0 :104CC0002878002802D1204601F0B2F82878002682 :104CD000002819D12448234902788C540178491CB2 :104CE00001700D2C10D10446007801F0A1F8207855 :104CF0001E4908701E490120087026701D48067064 :104D000001201D4900074860287800281CD01B4955 :104D10000878401C08701A48026B521C026308781D :104D2000184A1278904210D30120C0020921C90606 :104D300088612E701449012008700E4908700A48D5 :104D40000670124980208862F0BD11480978405CE5 :104D5000387301F06DF8F0BD0030014028150020D7 :104D600084010020BC150020810100209501002055 :104D7000940100208001002000ED00E0830100206C :104D80002814002082010020960100200014004811 :104D90009C1500207047000070B51A4C6168491CD2 :104DA000616019490180A18841801849CA6C8280DC :104DB000496D8160112181831549C183A1684A0130 :104DC0001449511800250B462A469E5CFF2E04D13B :104DD000521C202AF9D3002D10D02022FCF79CFB76 :104DE000A0682060401CA0604001012189022030A1 :104DF000884201D90020A060002070BD202200F070 :104E0000FDFCEDE758010020AA5500002813002002 :104E1000A55A000000C8000870B503460E460807F2 :104E2000C10E1348002509180520C0010818818A01 :104E3000104C491C8182207A002817D1324619462D :104E40000D48FCF7B2F9A6710020E0710A48E1793B :104E5000405C0A4908730121217200F0E9FF08490A :104E60008020886100010921C9068862284670BD3A :104E7000A80D00207C0100209C150020003001407E :104E80000014004810B514460A46012802D0022832 :104E900006D00DE021461046FFF71AFE054804E053 :104EA00021461046FFF722FE0348816F491C8167A7 :104EB000204610BDC80200205C0300200B070288BA :104EC0001B0F012199400A43028070470907090F0F :104ED00001238B400188002A01D0194300E0994347 :104EE0000180704710B5002A02D0FFF7E7FF10BD20 :104EF000FFF7A4FE10BD0907090F01238B400188AD :104F0000002A01D0194300E0994301807047000056 :104F100070B50B051B0E204C5B000D071C192D0FE7 :104F2000030000F0A5FC09060B14191E22272C31E2 :104F30003600FF292DD89520800003E0FF2928D8CE :104F40009D20800020182946FFF7D5FF21E0FF298A :104F50001FD8A5208000F5E780291AD2FD20800007 :104F6000F0E7802915D20D48ECE7402911D2AD2099 :104F70008000E7E740290CD2B5208000E2E78029D5 :104F800007D206482030DDE7802902D2034880306E :104F9000D8E7002070BD0000A80D00201404000018 :104FA0000121C903034A002801D091627047916131 :104FB000704700000008004801218903034A0028C7 :104FC00001D091627047916170470000000800486D :104FD0000121C903034A002801D091617047916201 :104FE000704700000008004801214903034A0028D7 :104FF00001D091627047916170470000000800483D :10500000F0B5304C4B001C190923DB01E6180B23CB :10501000DB01E51892B28A283DD00EDC294F4B0007 :10502000DF1909239B01FF188338030000F020FCDF :105030000714181C21262D46480099283ED006DC6E :105040008B282CD08C2831D08D2839D133E0A12861 :1050500034D0FE2834D131E0102931DABA822FE081 :1050600010292DDABA862BE0102929DA0520C00193 :1050700008E0082924DA0F20800114E008291FDA4B :1050800001208002201882821AE0802918DAB28674 :1050900016E0AA8614E0802912DAB28210E04029D4 :1050A0000EDA0D2080012018828609E0402907DAF7 :1050B0000B208001F7E7402902DAE8E78029E8DBE6 :1050C0000020F0BDA80D0020F0B58DB0002500F047 :1050D0002BFEFCF779FC059010213A4800F086FE83 :1050E0000790FCF771FC04901021364800F028FE70 :1050F0000690FCF769FC03901021324800F03EFE58 :105100000190FCF761FC064610212E4800F04EFE8F :105110000090FCF759FC2C4A044690680121084392 :105120009060881E106129481061264B0021585C50 :105130001070491C1029FADB1768FCF745FC0B902E :105140000199009802970190214F0091781921A1AF :10515000069B079A00F078FB45190B98A11B001BD2 :1051600001910290039A04990398B21A431A00928B :1051700008460599421A781920A100F065FB4419E8 :1051800008A8FEF715FA26484268012000040240EC :105190003819134623A100F057FB0419381926A12A :1051A000089A00F051FB01193846FFF783FC0121F2 :1051B0000D20FEF753FB24490320886000200DB02A :1051C000F0BD0000906300080030024001A0000024 :1051D000C80100200D0A43524320202530345820B6 :1051E00020253034582020253034582020253034D4 :1051F000582020253034580D0A00000074696D6570 :10520000202530346420202530346420202530349B :10521000642020253034642020253034640D0A00B9 :10522000001002404D61696E536F757263652025F1 :1052300078202564200D0A00737973636C6B202538 :1052400064200D0A00000000C000002030B50021DD :10525000174D0846696042005219401C1181FF2811 :10526000F9DD00200522134CD20143001B199B18C5 :10527000401C99821028F8DB00200922D20143004B :105280001B199B18401C9986FF28F8DD002010226E :10529000C100091940310B8B401C93430B834028FC :1052A000F6DB0120044928604882002030BD000060 :1052B000200B0020A80D00205C15002010B5002157 :1052C0000C48092201600C4B084692014400E41886 :1052D000A418401CA1861028F8DB002001229202AD :1052E0004400E418A418401CA1820828F8DB002020 :1052F00010BD0000200B0020A80D002010B5402894 :1053000002DB0020C04310BD0B4BC100CA18114680 :1053100040310C7EA4060DD54000C0180B2300249C :105320009B01C0188486054800685065088B2022C0 :1053300090430883002010BDA80D0020C401002068 :1053400010B5FCF715FCFCF7BDFF10BD70B594B0AF :1053500030216846FBF742FF0024022501260E9407 :10536000E8030990009605200F94C0040D9401965F :105370000A900C9408950B956846FCF79BFD002855 :1053800003D0862115A000F05DFA07200C900E9442 :1053900001210D950F940CA8FCF7B0FC002803D058 :1053A00092210EA000F04EFA109610A81296FCF76B :1053B0002FFC002803D0A12108A000F043FA4B20C5 :1053C0008001FCF767FF0420FCF71EFF0022114656 :1053D000501EFCF719FC14B070BD00002E2E5C2E80 :1053E0002E2F436F6D4C69625C5372635C42535065 :1053F0002E630000134801680122114301604168D7 :10540000114A114041600168104A11400160016871 :10541000012292049143016041683F2212049143AA :105420004160C16A09090901C162016BFF2214329E :1054300091430163416B4908490041630021816048 :1054400070470000001002400CB8FF08FFFFF6FE96 :1054500004480169C907C90F02D00121C94301618C :105460007047000000100040034801224169920388 :105470005140416170470000000800480348012284 :1054800041695203514041617047000000080048E3 :1054900070B51B4CE0691B498006C00F11D01A4A39 :1054A00001201060194A10600869401C0861A28C34 :1054B0004868401C4860174B154D18682A54401C1A :1054C0001860E0690007C00F04D008202062C86996 :1054D000401CC8612068C006C00F07D0E069C00644 :1054E000C00F03D01020206200F03CF8E0694006B5 :1054F000C00F03D04020206200F074F870BD00009F :1055000000380140C80200200401002008010020EA :10551000F0030020FC00002010B5104CE069E069A9 :105520000007C00F05D0082020620D48C169491C42 :10553000C1612068C006C00F07D0E069C006C00F77 :1055400003D01020206200F09DF8E0694006C00FF3 :1055500003D04020206200F0E5F810BD0044004078 :105560005C0300200548416A491C416204490968FE :10557000002901DD0121C16770470000C802002039 :10558000FC000020F8B5144D0C46064602212846C2 :10559000FDF70EFF10200090104B324602212846E6 :1055A000FDF7F0FE224602212846FDF733FF0221D7 :1055B0002846FDF709FF0A480463012141720221D0 :1055C0002846FDF70DFF05482838816880221143E1 :1055D00081602046F8BD00000000024028380140EC :1055E000C80200200248016A491C0162704700009D :1055F000C802002010B50A48407A00280DD1084C96 :10560000206F5834002808D12046FCF739F90146AC :10561000E26820688018FFF7B5FF002010BD000089 :10562000C8020020F8B5144D0C4606460521284650 :10563000FDF7BEFE002000903346104A05212846A3 :10564000FDF7A0FE224605212846FDF7E3FE0521D1 :105650002846FDF7B9FE0A484463012181720521FD :105660002846FDF7BDFE05482438816840221143D5 :1056700081600020F8BD000000000240244400408A :105680005C0300200A480B4900794058802180B211 :10569000081A0949012208600849CA674A6A521C67 :1056A0004A62002803DD0120054900074860704771 :1056B000A063000804000240000100205C030020F9 :1056C00000ED00E0F8B5144D0C46064604212846CE :1056D000FDF76EFE10200090104B32460421284644 :1056E000FDF750FE224604212846FDF793FE0421D3 :1056F0002846FDF769FE0A4804630121417204212E :105700002846FDF76DFE0548283881688022114340 :1057100081602046F8BD000000000240284400409F :105720005C0300200248016A491C016270470000C6 :105730005C03002010B5054C0A46638821465B1CBB :105740004380FBF7E9FE002010BD0000007C00084C :1057500070B50C460B494118002B08D00A4D45196D :10576000012B03D0094B9B8A002B00D129468005D1 :10577000204603D000F042F8002070BDFBF7CCFEBD :10578000FAE700000080000800A000085C15002077 :10579000F8B54188174A491C4180154901807E218E :1057A00000250A52ED43802300221146124C0026A8 :1057B00059430C19314603E0675CFF2F04D1491CA3 :1057C0009942F9DB002E03D0521C082AEDDB00E0E1 :1057D0001546082D06D208495D436918802200F05D :1057E0000DF803E080220449FBF796FE0020F8BD87 :1057F000AA550000A55A000000C00008F7B50D46E4 :105800000646FCF79DF902980024870807E0A000EF :105810003258411900230220FCF754F9641CA742B6 :10582000F5D802987C00470807E06000325A411919 :1058300000230120FCF746F9641CA742F5D8FCF7C9 :1058400037F9FEBDFEE700000FB410B504A9074B01 :1058500002AA039800F028F8044602A9002000F0EC :105860005DFA204610BC08BC04B018471D5D000856 :1058700030B47446641E2578641CAB4200D21D46C9 :10588000635D5B00E31830BC184702E008C8121FD4 :1058900008C1002AFAD170477047002001E001C119 :1058A000121F002AFBD17047FFB591B00F46054685 :1058B000002606E025280AD0149A139990476D1CFB :1058C000761C28780028F5D1304615B0F0BD0024AC :1058D00000940121F34A029400E004436D1C2B78EC :1058E0000846203B98401042F7D128782A280ED04D :1058F000022128780246303A092A15D8009A0A234C :105900005A43303A80180C436D1C0090F1E701CFE8 :105910000090002805DA012040030443009840422B :105920000090022004436D1C28782E2815D10420F5 :10593000044368786D1C2A280AD101CF6D1C02909F :105940000BE002990A225143303940186D1C029035 :105950002878014630390929F3D928786C2810D0E5 :1059600006DC4C281AD068280ED06A2817D104E02B :10597000742813D07A2812D110E001204005044386 :105980000CE00121090501E0032109050C436978B8 :10599000814203D10120000524186D1C6D1C28785C :1059A00003906E281ED00CDC632831D004DC002864 :1059B0008AD0582811D1B2E064287BD069280CD154 :1059C00078E073282DD004DC6F2870D0702804D1C3 :1059D000A7E075286CD078286BD0149A139990475B :1059E000761C62E06002400F022807D003280AD02C :1059F000042838680AD006603F1D56E03868F11761 :105A000006604160F8E738680680F5E70670F3E75E :105A10003878694608740020487404A8039001206F :105A200003E0386803900020C0433F1D61070FD595 :105A3000002101E00199491C029A0191914213DA77 :105A40008142F7DB019A0399895C0029F2D10BE0CE :105A5000002101E00199491C01918142FADB019A80 :105A60000399895C0029F5D101990098139A401A8D :105A700000902146149B00F03BF9019980194618CB :105A800007E0039803990078491C0391149A13992D :105A900090470198401E0190401CF2D12146149B72 :105AA000139A009800F014F986196D1C09E741E07B :105AB00033E034E00A200021049005916002410F98 :105AC000022905D001CFC2179446032905D007E06B :105AD000FF1DFF08FF0003CF06E000B2C217944687 :105AE000042902D140B2C1178C4600226146944578 :105AF00006DA0A460021404291418C462D2102E0FF :105B0000210504D52B216A461176012103E0E10726 :105B100001D02021F7E7019154E00A200BE010208A :105B200009E010200490002104200443082005917E :105B3000029003E008200021059104906002410FCB :105B4000022905D001CF00229446032906D006E0A1 :105B5000FF1DFF08FF0003CF8C4603E080B204293D :105B600000D1C0B20021019121072BD503997029E2 :105B700006D0049A1021059B4A401A4305D00EE036 :105B800040216A461176012108E06146014306D0B2 :105B900030216A4611760399517602210191049AC7 :105BA0000821059B4A401A430CD16146014301D1AB :105BB000610707D530216A461176012101910299CA :105BC000491E02910399582904D037A103910FA9C6 :105BD0000F910DE039A1F9E76146059B049AFBF7A7 :105BE00012FB039B8C469B5C0F9A521E0F92137004 :105BF00061460143F0D10F9807A9081A203003909D :105C0000600704D5012000048443029801E00120CC :105C100002900399884201DD401A00E000204118FB :105C20000290019809180098401A0090E00306D4E9 :105C30002146149B139A009800F05AF88619002008 :105C4000049008E006A9085C149A139990470498F8 :105C5000401C761C049001998842F3DBE0030CD5CC :105C60002146149B139A009800F042F8861904E02C :105C7000149A302013999047761C0299481E02907E :105C80000029F5DC08E00F980F990078491C0F9166 :105C9000149A13999047761C0399481E0390002983 :105CA000F1DCFBE609280100303132333435363778 :105CB0003839616263646566000000003031323358 :105CC00034353637383941424344454600000000F8 :105CD000F8B5044600251E461746880404D405E09E :105CE00039462020B0476D1C641EF9D52846F8BD02 :105CF000FFB50446002581B01E46C80301D53027F4 :105D000000E02027880404D505E038460399B04711 :105D10006D1C641EF9D5284605B0F0BD0A68531CF9 :105D20000B6010707047000010B50A2101A0FEF74B :105D3000C1FE10BD1B5B324A1B5B303B304800008C :105D400030B503460B48002900D101210A4C491EF9 :105D50000ED31A7850400022C50702D04008604098 :105D600000E04008521CD2B2082AF5D35B1CEEE7D3 :105D700030BD0000FFFF000001A0000070B50A4D1B :105D8000FF23EE1D1A46F93605E0047854402A5DDB :105D90005A40335D401C0C46491E89B2002CF4D198 :105DA0001802104370BD0000A665000870B50446D7 :105DB0000C4800220C4E11E02378521C1D46454031 :105DC0002D07ED0E755B0009454018096840000776 :105DD000C00E305A2B09584092B2641C8A42EBD351 :105DE00070BD0000FFFF0000A667000810B5084A5C :105DF000084B07E0047854402406E40D1C5B120AAB :105E00006240401C491EF5D2D04380B210BD000054 :105E1000FFFF0000A663000806C00021016041608A :105E20008160C16001220261416108467047000043 :105E3000074910B54A8D0B464C3BD054488D401C49 :105E400080B24885642801D35120488510BD0000E8 :105E50002815002088B0FB48FDF79AFB0120FFF7CA :105E6000C3F80020FFF7A8F80024F74E25460127C5 :105E700035707770FBF7A8FD30610A20FDF7A2FCB2 :105E8000FFF7FCFAFFF7F0FA641C042CF0DD0020A9 :105E900080F31088ED48EE4B0783FF200530802209 :105EA0000090991AEB48FCF759FA4020EA4B024659 :105EB000191A0090E948FCF751FAFBF761FEE84A2D :105EC0000021602048438018456085600561456178 :105ED0008561C561056285624562C562491C0563CD :105EE0000929EEDBDF4CE0482567C06A6066DF48C1 :105EF0000068A066DE48406AE066FFF727FADE49E0 :105F0000DC480860FCF73AFAFDF7CEFCFDF7B8FC78 :105F1000FDF7DCF9D948FEF761FECC480783FEF7B0 :105F200055FE1021A06308430107090F6063D44A9E :105F3000C006D448117003D50770D348057002E03D :105F40000570D1480770D1480170FBF791FBCC4830 :105F5000CE4900780870CE4901200870E120CD4973 :105F600040020860FDF7E4FDFDF774FEFDF750FD0B :105F7000C9484168402739434160FDF72FFDFDF7CF :105F8000ADFDC6480168012211430160C4480168A3 :105F90002022114301600168102211430160016851 :105FA000394301608021BF48FFF73CFBBE480168D0 :105FB0001022114301600168394301600A20FBF798 :105FC00019FD0120FFF710F80020FEF7F5FF002073 :105FD000FEF7FEFFFFF778F8FBF7F6FC9B4F6066D5 :105FE0003D827D82A548C0883882388A01280AD13E :105FF000FCF76EF9208F202108407882788A0028EB :1060000001D0FFF723F9A94E01278F4D00202870FA :106010006F70FBF7D9FC2861FBF7A4FD0690FEF733 :10602000D5FD05468948008AC0070BD0A806208FF9 :1060300004D5800606D4FFF709F903E0800601D5F0 :10604000FFF73CF9A5630698E0630920C0060069E4 :10605000B08497480069F084964800693085964876 :1060600000697085FBF72CFBFBF7AEFC764D686191 :106070007648008A01280BD17448818A00291FD0F4 :106080008E49A960C18A8E480160A868FEF7A8F908 :10609000606E69696166081AA066E16E884200D286 :1060A000E066216F884200D92067FBF78DFCA8616C :1060B00074480078002818D0824900200B780BE043 :1060C0008149DEE7814913220918520189180A7DA6 :1060D0007F4909184A70401C9842F3DB6B480078EE :1060E000002802D00220FCF741FA0698800401D56E :1060F0002F7001E0002028700698000501D56F7010 :1061000001E0002068706048007800281AD0022062 :10611000FCF71CFC606C002801D16E4908706D48CA :1061200001786D4881866D490868800401D52F701B :1061300001E0002028700868000501D56F7001E0BB :1061400000206870606C002801D0401E6064A06C64 :10615000002801D0401EA0643C48018B00293FD09C :106160006878FEF741FF6878FEF726FF6878FEF74B :1061700017FF6878002801D1012000E00020FEF719 :1061800027FFFBF721FCE861FBF71EFC2862FBF709 :106190001BFC0A2168620846FAF796FF0020401CA3 :1061A0004028FCDB206C4E49401C20640868002815 :1061B00036DD284AD26F002A32D082B24949012006 :1061C000FDF710FE002805D0454846490268012029 :1061D000FCF7ECFC4249002008601E49C86788E0D3 :1061E000008A01280FD0606C002810D06878FEF774 :1061F000FBFEA06C00280CD06878FEF7DDFE687806 :10620000FEF7CEFEBAE7384800680028EFD02878BD :10621000EDE70020FEF7D0FE0020FEF7C1FEABE761 :1062200032496868884263D91D48416801221205D5 :1062300011434160416853000322520591431943C1 :10624000416057E000127A00980100205C150020A0 :106250005C160020C8020020A01700205C0300206C :10626000100600202813002080F7FF1FF0000020F8 :106270000010024010270000D4000020280D00204C :10628000100100200C0100200D010020170100204A :1062900011010020F40000200030014000100040F7 :1062A0000038014070040020004400402815002000 :1062B0000004004800080048000C004800A0000846 :1062C000540100207F01002000800008A80D00205C :1062D00000050020F0040020E80F00202801002025 :1062E000FC000020F0030020200B0020C027090044 :1062F000401C68601F480078002802D00020FBF78F :1063000079FB18221C496846FAF74FFF1B4D002005 :106310001B494200511840310A891105130B12071D :10632000090E120F002919D0002B02D0012B06D024 :1063300014E0144B591809239B01C91804E0114BB0 :106340005B18132149015918C97C3B4693401942F7 :1063500004D0820069468958A96103E08200694639 :106360008958A962401C0628D2DB08490648086003 :106370004BE600000D0100207C6800080004004886 :10638000280D0020A80D0020AAAA0000003000401F :10639000112233445566778899AABBCCDDEEFF0005 :1063A000081C304458000000891112239B322446F7 :1063B000AD573665BF74488CC19D5AAFD3BE6CCA09 :1063C000E5DB7EE9F7F88110080193331A22A55620 :1063D0002C47B7753E64C99C408DDBBF52AEEDDAE9 :1063E00064CBFFF976E802218B30100299132667FF :1063F000AF763444BD554AADC3BC588ED19F6EEBC9 :10640000E7FA7CC8F5D983310A2091121803A777DF :106410002E66B5543C45CBBD42ACD99E508FEFFBA8 :1064200066EAFDD874C904428D5316619F7020043A :10643000A9153227BB364CCEC5DF5EEDD7FC688888 :10644000E1997AABF3BA85520C4397711E60A1149F :106450002805B3373A26CDDE44CFDFFD56ECE99868 :106460006089FBBB72AA06638F7214409D5122257E :10647000AB343006B9174EEFC7FE5CCCD5DD6AA948 :10648000E3B8788AF19B87730E6295501C41A3355F :106490002A24B1163807CFFF46EEDDDC54CDEBB928 :1064A00062A8F99A708B088481951AA793B62CC2BA :1064B000A5D33EE1B7F04008C919522BDB3A644E30 :1064C000ED5F766DFF7C899400859BB712A6ADD2F7 :1064D00024C3BFF136E0C1184809D33B5A2AE55E10 :1064E0006C4FF77D7E6C0AA583B4188691972EE3D6 :1064F000A7F23CC0B5D14229CB38500AD91B666FF0 :10650000EF7E744CFD5D8BB502A499961087AFF3B6 :1065100026E2BDD034C1C3394A28D11A580BE77FCF :106520006E6EF55C7C4D0CC685D71EE597F4288011 :10653000A1913AA3B3B2444ACD5B5669DF78600CAF :10654000E91D722FFB3E8DD604C79FF516E4A99076 :106550002081BBB332A2C55A4C4BD7795E68E11C8F :10656000680DF33F7A2E0EE787F61CC495D52AA155 :10657000A3B03882B193466BCF7A5448DD59622D6F :10658000EB3C700EF91F8FF706E69DD414C5ABB136 :1065900022A0B9923083C77B4E6AD5585C49E33D4F :1065A0006A2CF11E780F00C1814001C0804101C0FA :1065B000804100C1814001C0804100C1814000C1D3 :1065C000814001C0804101C0804100C1814000C1C3 :1065D000814001C0804100C1814001C0804101C0B3 :1065E000804100C1814001C0804100C1814000C1A3 :1065F000814001C0804100C1814001C0804101C093 :10660000804100C1814000C1814001C0804101C082 :10661000804100C1814001C0804100C1814000C172 :10662000814001C0804101C0804100C1814000C162 :10663000814001C0804100C1814001C0804101C052 :10664000804100C1814000C1814001C0804101C042 :10665000804100C1814001C0804100C1814000C132 :10666000814001C0804100C1814001C0804101C022 :10667000804100C1814001C0804100C1814000C112 :10668000814001C0804101C0804100C1814000C102 :10669000814001C0804100C1814001C0804101C0F2 :1066A000804100C1814000C0C101C30302C2C606CF :1066B00007C705C5C404CC0C0DCD0FCFCE0E0ACA3A :1066C000CB0BC90908C8D81819D91BDBDA1A1EDE8A :1066D000DF1FDD1D1CDC14D4D515D71716D6D2123A :1066E00013D311D1D010F03031F133F3F23236F64A :1066F000F737F53534F43CFCFD3DFF3F3EFEFA3AFA :106700003BFB39F9F83828E8E929EB2B2AEAEE2E89 :106710002FEF2DEDEC2CE42425E527E7E62622E2F9 :10672000E323E12120E0A06061A163A3A26266A649 :10673000A767A56564A46CACAD6DAF6F6EAEAA6AB9 :106740006BAB69A9A86878B8B979BB7B7ABABE7E09 :106750007FBF7DBDBC7CB47475B577B7B67672B2B9 :10676000B373B17170B05090915193535292965649 :106770005797559594549C5C5D9D5F9F9E5E5A9A79 :106780009B5B99595898884849894B8B8A4A4E8E09 :106790008F4F8D4D4C8C4484854587474686824279 :1067A000438341818040000001CC01D8001401F0F6 :1067B000003C002801E401A0006C007801B4005006 :1067C000019C01880044030E07010001000104013F :1067D00000060000000000000000000006000000AD :1067E000AA550000000100000000000001000100A7 :1067F0000009000000000000000002000000000985 :106800000000000000000000000000000000000088 :1068100000000000000000001010101010101010F8 :106820001010101010101010100020003000400048 :10683000500060000300000004000000050000009C :10684000060000000700000008000000090000002A :106850000A0000000B0000000C0000001100A55A07 :10686000AA55000000000000000000000000000029 :10687000081C304458081C30445800000004000034 :106880000008000000100000002000000040000090 :10689000008000000000000000000000010203046E :1068A000060708090000000001020304CC68000884 :1068B000C0000020080100008A580008D4690008C0 :1068C000C8010020381A00009A5800080000000093 :1068D00000000000000000000000000001000000B7 :1068E0001027000000000000000000000000000071 :1068F0000000000000000000000000000000000098 :1069000000C2010040420F00000000000000000033 :106910000000000000000000000001000000000175 :106920000101000000000000000000000000000065 :106930000000000000000000000000000000000057 :106940000000000000000000000000000000000047 :106950000100000000000000000000000100000035 :1069600097000000FFFFFFFF000000000000000094 :106970000000000000000000000000000000000017 :1069800000000000000000000000080800000000F7 :1069900000000000000000000000000000000000F7 :1069A000000000000000000000000000008000085F :1069B00000000000000000000000000000000000D7 :1069C000000000000000000000000000001BB700F5 :0469D00000000000C3 :1013600008467047F0B50020174D0127144B154C67 :101370003F03E86017E0625A144EB24212D1EA68A5 :101380000919521CEA604A882E69B24205D92A61BD :10139000E8614A686A61421C2A624988994201D21E :1013A0000B46A861401C0101B942E4D3286A000140 :1013B0001030B84201D900202862E868F0BD000072 :1013C000FFC99A3B00D0000864010020AA55000024 :1013D00010B50421054800F0BFF8054800218161DF :1013E000C1610161C1600162084610BD00D0000802 :1013F0006401002070B5234DE86A401CE862224C6D :1014000020688006C00F11D02868296B401828601A :10141000296B28465830064600F058F820206060B6 :10142000B06900280AD0002028636872206880050F :10143000C00F02D001204002606070BD304600F055 :1014400027FB12494A78A3585B085B00A350F36856 :1014500032684E78D2180C4B0C33F2500A4B4A7853 :101460001B1DD658360C36040643D65049786258B0 :1014700001231A4362502863054881688022114382 :101480008160D3E758030020000002402D6A000865 :10149000003801400B49C86A401CC8620A4802680B :1014A0009204D20F05D001225203426000220A6347 :1014B0004A7201688903C90F02D0012149044160C1 :1014C00070470000EC0300200000024010B5002926 :1014D00010D0C26843685218934200DCD21A00232D :1014E0004361C2608468944204D1012282618360B6 :1014F000C360C361084610BDF8B516460F460546E1 :1015000002F020FA701E800A401C81B2384602F0B8 :10151000F1F90024761C76080EE06000421952783A :10152000295C120289188AB2C1190023022002F034 :10153000ADF9002802D0641CA642EED8054A116914 :10154000802319431161002801D00020F8BD01203B :10155000F8BD00000020024070B50C46054602F0C0 :10156000F1F9A1B2284602F0C5F9034801698022C9 :1015700011430161002070BD0020024010B500231E :101580001A4605E0845C2407240FE318DBB2521CE2 :101590008A42F7DB1807000F10BD000010B50300EA :1015A00004F072FA081717171717171705170A4AC2 :1015B0000A4B002041008C18C918248C401C0C8454 :1015C0001028F7DB002041005C5A401C54521028C0 :1015D000F9DB002010BD0000241B0020180C0020A7 :1015E000F3B5074681B0002000903D78FF206E07DC :1015F000EC08760FE40004F027FD802C01D20020D7 :10160000FEBD304601266349030004F03DFA08059B :10161000393D41969A9EAEBE5F480278002A02D0BC :101620004278A24229D18A885B4F521C8A80403F6F :101630003D7005468078302108437870E87808438B :10164000B8703520F87004213846FFF797FF302135 :10165000084338710D207871112004F0F5FC062143 :10166000384600F09FF86C702E70287E002804D059 :1016700000226B691146052098474848067067E0CC :10168000C888401CC88063E00889401C08815FE06E :10169000414A10780028F0D05078A042EDD1488916 :1016A0001446401C48810020D2780DE04100C91941 :1016B0004B7889781B010907090F5B1836491C31E3 :1016C000091820310B70401C8242EFDC207E00287C :1016D00004D0002263691146072098472E4A002053 :1016E000403A134615705C330BE0195C0D0941005C :1016F000891830354D701D5C2D072D0F30358D70DC :10170000401CA1788142F0DC0806C00D401CC1B22B :1017100021484038FFF732FF30210843A1781E4AA4 :101720004900403A8A1850700D2090701A48C91C20 :10173000C9B2403800F036F89FE78889401C88819C :1017400006E0C889401CC88102E0088A401C088263 :1017500002980007C10E124809181B2080010818C2 :10176000818C491C81840098FEBD488A401C4882B7 :1017700009480178002980D04078A042DCD10120BE :10178000C0020921C906886177E7088B401C0883DD :1017900073E70000B0170020081B0020DC000020C9 :1017A000F010002070B503460C460807C10E14481F :1017B000002509180520C0010818818A114E491C0E :1017C00081823078002819D1224619460E48FFF749 :1017D000ECFC0E4804700E48002101700A490078A4 :1017E000085C0C4908730121317004F02DFC0A4992 :1017F0008020886100010921C9068862284670BDE1 :10180000F0100020E200002018030020E00000207B :10181000E100002000300140001400480249486106 :101820000120087600207047081B002010B51349DE :1018300000200870124908701248134C00780028E4 :1018400015D0012816D0411CA170E0700120C00203 :101850000921C906886288620C49802088620A20B2 :1018600000F0D0F900F0B8F9E060002010BD0120D0 :10187000A070EAE70320A0700220E6E7E200002063 :10188000DC00002023010020081B00200014004879 :10189000F8B5404D01214902284602F0BBF801216C :1018A000C6B2009140213C4802F0B4F8C4B2012114 :1018B0000920C902C00602F0ADF84021284602F016 :1018C000A9F8C0B2354F002500281AD000203946AB :1018D0001C31FA7803E00B1820331D70401C824243 :1018E000F9DC387E00280CD000227B6911460520E7 :1018F0009847387E002804D000227B6911460720D3 :101900009847002E02D100F067F9F8603869002886 :101910000FD1002E0DD000F05FF9F968401A204970 :10192000884206DB0120C0020921C9068861012026 :101930003861002C06D1387A002803D01948018D6F :10194000C184058500981849184A00281AD0002C2F :101950001AD0387A00280BD1012010700D7014486D :10196000066840239E4306600D7006681E430660AD :1019700010480078002809D11078002806D10120ED :10198000107002E0002C01D115700D703C72002027 :10199000F8BD00000004004800140048081B0020A7 :1019A0001027000070180020DE000020DC0000205E :1019B00000380040E2000020024A9070D170002000 :1019C00070470000081B00200A07120F01219140F8 :1019D000014201D001207047002070470A07120F12 :1019E00001219140014201D0012070470020704741 :1019F000F8B50B051B0E254C5B001C1909239B0138 :101A0000E31800930523DB01E618012307469B0238 :101A10000A07E5180020120F3B0004F035F809060C :101A20000A0E12191D21282F2E00FF2928D80098F0 :101A30001BE0FF2924D8009808E0FF2920D8B08AAD :101A400018E080291CD20F2080012018808E11E020 :101A5000802915D2A88A0DE0402911D2B08E09E064 :101A600040290DD20B2080010EE0808A02E08029FF :101A700006D2A88E1146FFF7B1FFF8BD802901D329 :101A80000020F8BD0920C0012018EEE7F01000206A :101A9000C1688268914201DA501A7047914202DCB3 :101AA0004269002A02D04068401A704780690028C5 :101AB000FBD000207047C2688168914201DA501A59 :101AC0007047914202DC8269002A02D04068401AC5 :101AD000704740690028FBD000207047064901226A :101AE0008969120308180101914201D3FF380138B6 :101AF00002490001401870476401002000D000082E :101B0000F0B5334C4B001C190923DB01E5180B23FE :101B10000246DB010020E318892A25D00EDC2C4F79 :101B20002C4B4E00F619F618803A130003F0ACFF68 :101B3000091F1F152125292E333A15008D2A3FD064 :101B40000CDC8A2A33D08B2A35D08C2A05D1402947 :101B50003ADA0B2080012018808EF0BD992A03D03C :101B6000A12A01D0FE2AF8D180292DDA2EE00846DC :101B7000F0BD102928DAB08AF0BD102924DAB08E21 :101B8000F0BD102920DA0520C00108E008291BDA81 :101B90000F208001DFE7082916DA012080022018D3 :101BA000808AF0BD80290FDA3420285EF0BD8029BC :101BB0000ADAA88AF0BD402906DA0D208001CAE7BA :101BC000402901DAA88EF0BD0020F0BD988EF0BD4E :101BD000F01000204002000010B5074A1069074BC2 :101BE00099691469A04201D010699969044A514366 :101BF0000914401A10BD0000DC00002000E000E0E5 :101C00005505000031B500F00BF8009C0546601C3E :101C100000D0641C00F004F8401BA042FAD338BD89 :101C20000148006870470000B401002002480168C4 :101C3000491C016070470000B401002010B506483F :101C40000168102211430160002000F007F800F045 :101C500017F8002010BD00000020024010B5044617 :101C600000F040F97D21C900FFF73EFA00F070FB5B :101C700000222146501E00F025F8002010BD000073 :101C800008B50F48816901221143816181691140C2 :101C90000091C26901040A43C261C0690022084080 :101CA00000901146501F00F00DF800221146901EC2 :101CB00000F008F800221146501E00F003F808BD9D :101CC0000010024010B502F075FC10BDF8B50446D6 :101CD0000068364DC00354D5E8690026C00007D41B :101CE000E86929040843E861E86908400126009092 :101CF0002F480168C90511D4014608688A151043A8 :101D00000860FFF78DFF074604E0FFF789FFC01B5F :101D1000642823D826480068C005F6D5286A032120 :101D2000090208401FD062680A4082421BD0286A1C :101D30002A6A8843012109040A432A622A6A8A43DB :101D40002A622862C0070ED0FFF76AFF074607E045 :101D5000FFF766FFC11B1748814201D90320F8BD78 :101D6000286A8007F4D5286A03210902884361683C :101D700008432862002E04D0E8690121090788433E :101D8000E8612078C00705D0286BA1688008800032 :101D9000084328632078800605D5286B10218843E6 :101DA000E168084328630020F8BD000000100240ED :101DB0000070004088130000F8B5044644480E4601 :101DC0000068C007C00FB0420AD241480168490804 :101DD0004900314301600068C007C00FB0425CD1C8 :101DE00020783C4F800705D57868F0218843A168AA :101DF000084378602078C0073FD06068012813D07E :101E00003968022813D08907002946DA79688908D9 :101E1000890001437960FFF703FF054660680128E8 :101E20000DD0022817D024E039688903ECE7890136 :101E3000EAE7FFF7F5FE411B2748814217D878688B :101E40000007800F0128F4D117E0FFF7E9FE411BDE :101E5000214881420BD878680007800F0228F4D10E :101E60000BE0FFF7DDFE411B1B48814201D9032037 :101E7000F8BD78680007800FF3D115480168C907DD :101E8000C90FB1420BD901684908490031430160CB :101E90000068C007C00FB04201D00120F8BD207813 :101EA000400706D57868072109028843E16808439E :101EB000786000F01DF87968084A0906090F515C3E :101EC000C840074908600020FFF7C8FE0020F8BDA1 :101ED0000020024000100240881300004C6A0008F5 :101EE000B00100200148006870470000B0010020E8 :101EF00010B513A00FC888B06C460FC414A00FC84B :101F00000FC4174B5A680C2011460140154804298C :101F100002D0082902D0144808B010BD9102090F60 :101F20006C46645CD96A04AB0907090F595CD2039B :101F300003D5FFF7D9F86043EEE70C486043EBE7C1 :101F400002030405060708090A0B0C0D0E0F1010FA :101F50000102030405060708090A0B0C0D0E0F10F9 :101F600000100240001BB70000127A0000093D007B :101F7000FEB504460078D04DC00746D0686800071B :101F8000800F012807D068680007800F022809D158 :101F90006868C00306D52868800336D560680028C5 :101FA0007ED032E001216068090401280AD08A004D :101FB000002801D005280FD02868884328602868A9 :101FC000904301E02868084328606068002810D02A :101FD000FFF726FE064608E0286810432860F1E770 :101FE000FFF71EFE801B64286FD828688003F7D592 :101FF0000BE0FFF715FE064604E0FFF711FE801B1D :102000006428F1D828688003F7D420780126800757 :1020100000283BDA68680007800F07D0686800076F :10202000800F022809D16868C00306D42868800799 :1020300015D5E068012833D111E0E0680028286850 :1020400015D030432860FFF7EBFD074604E0FFF7AB :10205000E7FDC01B0228C7D828688007F7D5286885 :10206000F82188432169C900084328600EE0400830 :1020700040002860FFF7D4FD074604E0FFF7D0FDDD :10208000C01B0228B0D828688007F7D42078000742 :1020900024D5E0690028686A10D03043686200E007 :1020A00007E1FFF7BDFD074604E0FFF7B9FDC01BE0 :1020B000022899D8686A8007F7D50FE040084000E9 :1020C0006862FFF7ADFD074605E09DE0FFF7A8FD5C :1020D000C01B022888D8686A8007F7D420780427B4 :1020E0004007002860DA00200190E869C00008D4A9 :1020F000E969B8060143E961E969014001200091FD :1021000001906E480168C90511D401688215114318 :102110000160FFF785FD009005E0FFF781FD009964 :10212000401A642870D865480068C005F5D5A068D5 :1021300001280AD0002801D0052810D0286A4008BC :1021400040002862286AB84301E0286A30432862C8 :10215000A068002812D0FFF763FD00900AE0286A0B :1021600038432862F1E7FFF75BFD0099411A5448B4 :10217000814249D8286A8007F5D50DE0FFF750FD68 :10218000009006E0FFF74CFD0099411A4C4881424F :102190003AD8286A8007F5D40198002804D0E96964 :1021A000012000078143E9612078C00635D56069C8 :1021B00001280CD0401D686B23D038436863686BDE :1021C000400840006863FFF72BFD064622E0686B7D :1021D00038436863686B30436863FFF721FD064648 :1021E00004E0FFF71DFD801B02285BD8686B8007A9 :1021F000F7D5686BF8218843A169C9000843686373 :102200000BE0B8436863F4E74CE0FFF709FD801B7F :10221000022847D8686B8007F7D4206A002846D088 :1022200069680907890F022943D001273F06022860 :10223000286805D0B8432860FFF7F2FC044633E075 :10224000B8432860FFF7ECFC064604E0FFF7E8FC23 :10225000801B022826D828688001F7D4E86AE16A42 :10226000000900010843E862616AA06A08436968DE :102270003D2212049143084368602868384328606F :10228000FFF7CEFC044604E0FFF7CAFC001B02285F :1022900008D828688001F7D509E0FFF7C1FC001BCA :1022A000022801D90320FEBD28688001F5D4002052 :1022B000FEBD0120FEBD0000001002400070004085 :1022C00088130000042204490428086902D09043BE :1022D000086170471043FBE700E000E01548016823 :1022E0006431016014480168491C016013490868A1 :1022F000401C08601249134AC868401CC8609042DC :1023000016DB0020C8601048816D491C8165016D95 :10231000491C0165416D491C41650C49088B002829 :1023200006D0401E80B20883782801D9782008831F :1023300070470000EC000020E80000204C01002065 :10234000880100201027000070160020A41800202B :10235000094910B5401E884201D9012010BD074C23 :1023600060610321081F02F025F90020A061072009 :102370002061002010BD0000FFFFFF0000E000E032 :1023800010B5FFF7ABFF10BDFEE7000010B5002150 :102390000F4A0846516043009B18401C1981FF28D2 :1023A000F9DD002005230B4ADB014400A418E418E2 :1023B000401CA1821028F8DB00200923DB01440027 :1023C000A418E418401CA186FF28F8DD002010BDE9 :1023D000680E0020F010002010B5402802DB00201D :1023E000C04310BD10221143C200094B4000D21857 :1023F000C01858240D23A1529B010021C3189986AF :10240000E300C0188186034800685065084610BD87 :10241000F0100020B401002070B504461E4638308C :10242000049D03F005FE20462A463146583003F04D :10243000FFFD002070BD000070B5104D064601463E :102440002846FEF767FE0E4CE061FFF74BFD29467C :10245000FEF74AFE60610B48314600680546FEF70C :1024600043FEA0612A46002307480F21FEF766FEBF :102470002081E06964302061002070BD40420F007F :10248000DC000020B0010020000040420B0119498F :1024900030B55B18FF33097F113319700221597071 :1024A0001449002020310C7F9C704C7FDC708C7FA5 :1024B0001C71CC7F5C710C46203425789D71657849 :1024C000DD710B7F15795B190B774B7F55795B19A4 :1024D0004B778B7F95795B198B77CB7F157A5B195F :1024E000CB772178937AC91821706178D27A8918CC :1024F000617030BD000A0020034610B5002002467E :1025000002E09C5C6040521C8A42FADB10BD000075 :10251000F0B50B0003F0B8FA081D1D1D1D1D1D1D93 :10252000051D0D4E0D4D002041008A194919128CD0 :10253000401C0A841028F7DB0020094F0F239B0161 :102540004100CC19E4186A5AA286401C7252102825 :10255000F6DB0020F0BD0000241B0020180C00203A :10256000F0100020F8B508460D460978552901D02D :10257000252903D0012A01DD451C521E344F602459 :1025800079792B786143334C0919334C252B30D0A2 :10259000A3685B1CA360CB695B1CCB61B978002985 :1025A0000FD0F97800290FD001292C4913D0072327 :1025B0001B02C9180A7501462948FEF7F6FD0020DE :1025C000F8700020C043F8BD2549264B55390A75DF :1025D0000146224807E037235B01C9180A75014606 :1025E000204B1E482033C018FEF7DFFDF878401C52 :1025F000E6E76E79802E06DDE068401CE060086A40 :10260000401C0862DDE7334608339A4208D2086A64 :10261000401C0862E068401CE0600220C043F8BD36 :10262000B11DFFF769FFA919897981420DD0206991 :10263000401C206179796020414306480818416AAE :10264000491C41620320C043F8BD0020F8BD0000D2 :1026500018010020800600206C040020F0100020EB :1026600005180020D506000010B50020124C0346C6 :102670002071D2B2002905D021706370A370A272BC :10268000E37005E0237001216170A370A272E27013 :102690000A4C00226021514309194B608B600B6189 :1026A0004B618B61CB610B628B624B62CB62521CC4 :1026B0000B63092AEEDB10BD000A00208006002013 :1026C0000C20414307480818002150300180418008 :1026D000082202714271817101728172C1720846D1 :1026E00070470000000A0020F8B50E460446252079 :1026F000069F079D089920706270A670E37027718D :102700002F46002008376619372B30D01FDC332BBB :102710001CD006DC002B19D0312B28D0322B15D140 :1027200025E0342B12D0352B10D0362B0ED165710D :10273000002D03D02A46A01DFEF737FDA91D204617 :10274000FFF7DAFEB0710D20F0713846F8BD612B4D :102750000DD006DC382B0AD0412B08D0422BF5D106 :1027600005E0622B03D0632B01D0642BEED16571A1 :10277000E0E70000F1B584B0FFF752FA0546FFF735 :102780002BFA664E04463079002802D0012802D088 :1027900004E001203071049800F098F930790228A3 :1027A00001D1032030715E48C179002906D0017A39 :1027B000002903D0C168611A322905D8C1687D2279 :1027C000611AD200914266D95548007A55490028CD :1027D00064D053486023407901225843524B1A5029 :1027E000642048644E4E7079401CC0B27071F17A1A :1027F000884208D9706A7462201AB062B079401CAD :10280000B071012070714948727981184348CB7FBB :102810008038037020310B7843704B78837089784F :10282000C1700571290A4171290C8171290EC1718C :102830006B46F4601978B37989089B0789009B0F70 :1028400019436B4619706023374C5343E358002BF0 :1028500061D0EF2319406B46197008230193009152 :102860000290412300213248FFF73EFF02463049E3 :10287000049802F009FC707960214843001941680E :10288000491C4160C268F1688A1A4263C160002035 :102890003563F0713072002005B0F0BD204B186A2E :1028A000401C186223484268521C42605E796020D6 :1028B000374646431C4830180269521C026142697F :1028C000521C4261DB79002B02D1836A5B1C83625C :1028D00083699A4200D98261134B032A82D900206E :1028E0009851C8228A6411490E46C855183E307D59 :1028F000002800D176E7002337691A46052104989D :10290000B847307D0028F5D0002336691A460721E4 :102910000498B04766E7102319439CE7000A00209B :10292000180100207016002080060020180C0020DE :10293000800500206C040020F8B5844608780C4619 :10294000552801D0252802D0012A00DD4C1C6079D1 :102950003B4D00906979602041433A482B46091865 :102960008868401C8860DF6ADE68E078A278BE1B59 :102970009B69352821D002DC32281ED10AE0382894 :102980001BD002DC362818D115E0412815D042288A :1029900013D114E06E619E4200DDAE612A48A37936 :1029A00083540020CE624861086BB04200D20E63AF :1029B0000120287201E00120E8710020F8BD6E615D :1029C0009E4200DDAE61204BA17998180646203E5C :1029D000F177E1799954217A4170617A8170A17A15 :1029E000C170E17A0171217B4171617B817118466F :1029F0001838017D002905D0002306691A460721F1 :102A00006046B0476A79602042430E48002116189C :102A100071616869F062316B814200D23063009865 :102A20000E28C5DB2046E77B1030FEF7E2FBE17C99 :102A30000002000A09060843B90071188863B7E765 :102A40001801002080060020180C0020F7B515465C :102A50000C46FFF7C1F81A4EF06221780020552984 :102A600003D1012D01DD641C6D1E317800290FD0CA :102A70000127F7712A4621460098FFF773FD0028C9 :102A800005D137722A4621460098FFF755FFFEBD53 :102A900071780029FBD00B4E2A46B06B2146401CB2 :102AA000B063009800F060F80028F0D106482A468C :102AB000406C30652146009800F0CEF8FEBD000065 :102AC00018010020800600207016002070B5064610 :102AD0000025FFF7A5F8FFF77FF81D4C0122A1792B :102AE000002901D1A271A062E17900292DD1A16A4A :102AF0007D23411ADB00994227D90021A171216A67 :102B0000032902DAA271A0621FE003291DDD30460D :102B1000E169FFF7D5FDE1690C2048430219304611 :102B20005032FFF7B3FCE069401CE061A17A8842B3 :102B30000BDD022020710748017D002905D000230C :102B400004691A4605213046A047284670BD00009A :102B5000000A0020000C00200248016101210175DB :102B600000207047000C0020F0B508460D4609789B :102B7000552901D0252903D0012A01DD451C521E0B :102B8000297800231A4FDB431A4C252906D0A06868 :102B9000401CA060386C401C386409E014496E7910 :102BA000896C491C802E05DDE068401CE060B9643A :102BB0001846F0BD334608339A4206D2B964E0683D :102BC000401CE0600220C043F0BDB11DFFF794FC43 :102BD000A9198979814208D02069401C2061F86CCC :102BE000401CF8640320C043F0BD0020F0BD00008D :102BF000800600206C040020F8B5FEF7EDFF134BB3 :102C00001A69197900291FD05C7A1149002C05D066 :102C10007D20800148640020587215E00C4E0D4C58 :102C2000851A8036A54204D97D2292018A64012248 :102C300006E01219904207D97D2292018A6402228D :102C40008A67C867186930600020F8BD1801002045 :102C500070160020E02E0000F7B5087884B00C460E :102C6000552802D1012A00DD4C1C6D480168491C21 :102C70000160637960786B4903916B49694F0D7905 :102C80008037A84208D0FF2806D0786C401C7864B2 :102C90000020C04307B0F0BDA84201D0FF287DD17D :102CA0006148C26A026101214172E0785F493728B8 :102CB00074D00CDC3328FBD004DC0028F8D0312899 :102CC000EDD119E03428F3D0352867D125E0584BF1 :102CD000DD1DFF35FA352A7D2E6961285ED004DCC2 :102CE00038285BD0412859D120E0622856D063288B :102CF00054D0642852D17EE0A07908704B48203827 :102D00000078A071484802612179A01D01930091CB :102D1000322302900022294661E0002021793623E7 :102D20000091019002460290012158E0A0790870BC :102D3000E0794870207A8870607AC870E17AA07A69 :102D4000090240189863002A0DD000231A46062174 :102D50000498B047287D002805D000232D691A4625 :102D600007210498A84731482F4920388A7A0378E8 :102D7000A3714378E37183782372C3786372037914 :102D8000A3724379E37283792373C07960739000EF :102D9000E273C019038F2374038F00E03DE01B0A28 :102DA0006374836B521C1B0CA374806B000EE07465 :102DB000D0B288720A2801D30020887220796A462E :102DC0001070C00603D57D201A4A800190642079D6 :102DD000A31D0E226D460DC54223097900220398DA :102DE000FFF782FC0246F86B401CF86303990498D5 :102DF00002F04AF911E0E179A07909024018217A3C :102E0000647A09042406091940189863002A04D03A :102E100000231A4606210498B04700203AE7000034 :102E20006C0400200006002018010020380C00204F :102E3000000A002070160020034610B5002002464C :102E400002E09C5C6040521C8A42FADB10BD30B547 :102E50000D46084609781446252901D0012030BDC9 :102E6000062C01D2032030BD611EFFF7E5FF2919B2 :102E70002039C97F814201D0042030BD002030BDFF :102E800070B51E4604460B465520049D05992070DA :102E90006370A270E6702571EE2E10D02A46601D78 :102EA000FEF783F9691D2046FFF7C6FF61194871D7 :102EB000A81D052E02DA002E00D1002070BD0521CC :102EC0002046FFF7B9FF60710620F2E7FEB516460F :102ED0000F460546FFF7BBFF040014D0E0B2694679 :102EE0000872009002A90B4801910278401E0178F7 :102EF000EE230948FFF7C4FF02460749284602F0BF :102F0000C3F82046FEBD32463946284600F006F892 :102F1000FEBD000051010020E80C0020F7B588B08C :102F20004A78F848039242688260421C15788E788D :102F30002D0936072D01360F0B7935431570F24AEE :102F400002920078039A84460C46624501D0FF2A1B :102F50002FD12146E7780931EC4A002605914F2F01 :102F600074D02EDCEA480121192F70D016DC072F0F :102F700026D008DC002F1CD0012F55D0032F58D0AD :102F8000052F47D183E0112F71D0162F70D0E14962 :102F9000172F08686DD0182F3CD15CE2312F76D006 :102FA00008DC212F67D0222F70D0232FE3D0242FCD :102FB00030D14AE3322F03D0332F68D0342F29D1B8 :102FC000DAE00420642F7DD012DC562F7BD008DCA1 :102FD000502F79D0532F78D0542F77D0552F19D127 :102FE000B6E2572F73D0582F72D0632F12D1C9E297 :102FF000692F2DD008DC652F6BD0662F2DD0672F61 :1030000031D0682F06D1D6E26B2F24D0732F70D029 :10301000742F6FD002206946087404A90191EE2331 :103020002A460090614608E0641D00930194012344 :1030300049E2B9491820A6E203990298FFF720FF58 :1030400002460299089802F01FF8FEE237E220E2F9 :10305000B2490C2097E2B24995E2B14910395020AB :1030600091E23B462FE2E1790020A74A08E0C5E162 :10307000D3E1E9E10BE0EFE023185B7A1354401C45 :103080008842F9DBA04802F043FCC2E254E1A27995 :10309000617912028918E27989B2882B2BD0892BA9 :1030A0002DD08A2B2FD0832B32D0842B35D0852B5B :1030B00038D0862B3BD0872B3ED08B2B41D08C2B0E :1030C00044D007E062E24CE2F7E101E217E2FCE102 :1030D00050E268E2FE2B12D0A92B3CD0B32B3ED09D :1030E000992B3FD0A12B42D087481038401800922E :1030F000A5E179E290E2490009188A483AE04900DE :103100000918894836E0490009188648203831E016 :1031100049000918952080002CE0490009189D20DD :10312000800027E049000918A520800022E049001E :103130000918FD2080001DE0490009187948A038D1 :1031400018E049000918DD20800013E04900091843 :10315000BD2080000EE04900091874480AE04900CB :10316000734807E0734849000818001DBFE749008D :103170000120C0060818BAE7A279617912028918FD :10318000E27989B2882B23D0892B25D08A2B27D0AE :10319000832B2AD0842B2DD0852B30D0862B33D077 :1031A000872B36D08B2B39D08C2B3CD0FE2B40D0AC :1031B000A92B42D0B32B44D0992B45D0A12B46D07C :1031C00051481038401800220599FDF7EEFF20E223 :1031D0004900091853483DE049000918524839E0B0 :1031E000490009184F48203834E049000918952053 :1031F00080002FE0490009189D2080002AE0490046 :103200000918A520800025E049000918FD2080004C :1032100020E0490009184348A0381BE0490009187C :10322000DD20800003E049000918BD208000081857 :10323000C9E7490009183C48F9E7490009183B4823 :10324000F5E749003A48F2E749003A4802E0490008 :103250000120C0060818B7E76279A4792402121980 :103260000924A40192B2002B14D0012B19D0022BF7 :1032700023D0032B27D0042B2DD0052B31D0062BA8 :103280002FD0082B36D06846067404A8212300915D :10329000019018E113095B001818001930E00120B3 :1032A00025E013095B001818001912E013071B0F23 :1032B0000A469A401040F2D119E013095B00181831 :1032C0000523DB011BE013095B0018180F239B018A :1032D000C018808EEAE713095B00181801239B02CF :1032E0000DE0D20010184030007E4006C00F6A4644 :1032F0001074CAE713095B0018180923DB01C01812 :10330000808AD3E750010020E80C0020A418002098 :10331000F0100020680E00207E690008ACF7FF1F47 :10332000107C0008B4040000B4050000B4060000DE :103330008006002070100020A2796179120289189D :103340008DB2002B17D0012B1ED0022B25D0032BC2 :103350002CD0042B33D04021052B38D0062B36D06F :10336000072B3FD06846067404A80190B848009621 :103370000278222360E62B095B0029071B18090F3E :103380009520E279800035E02B095B0029071B18A6 :10339000090F9D20E27980002CE02B095B002907B2 :1033A0001B18090FA520E279800023E02B095B00A0 :1033B00029071B18090FFD20E27980001AE0290770 :1033C0002B09090F5B001B18E279A24812E0EA0002 :1033D00010184030028B8A43E179C907490E0A432D :1033E0000283C1E72B095B001B1829079948E27982 :1033F000090F8030181801F06BFEB5E7002B02D0E2 :10340000012B03D005E102F05BF802E102F020F8A5 :10341000FFE08F48E37802780EE6A179607909022F :103420004018E1798C4C80B2002B0AD08B4E012BD6 :1034300002D0928A002A04D04000801900910190A5 :103440000FE640000019F9E7002800D00E60009652 :103450001723019637E0002800D00E60A17960792B :103460000902401885B2E27900207D4903E027185F :103470007F7A0F54401C9042F9DB7949284602F0CC :103480006FFA093472480096019604940278182362 :10349000D2E5A37960791B02C018D082908A0028F7 :1034A00009D096826F4801F0AFFD694800960196F9 :1034B00002781923C0E59182F4E7138300E01683B4 :1034C00000960196E3782A46B6E5664920205AE040 :1034D000A179607909024018634980B20A18E1793C :1034E000121D782801D3002105E00B18782B02D992 :1034F0007821081A81B2C8B201920090B1E5A17991 :10350000607909024018584980B20B18E2791B1DF6 :10351000782801D3002205E01118782902D97821F2 :10352000081A82B218460599FDF73FFE00960196EB :103530004748E378027803990298FFF7A1FC024616 :103540000299089801F0A0FD474802F029FA7CE0B2 :10355000454802F025FA3E48009601960278552328 :103560006AE5404801F050FD39480096019602781E :10357000562361E5032109023C48FDF72FFE009622 :1035800001966EE53A49019100906AE5A17960796A :1035900009024018E17980B20D01FEF79FFAE9B205 :1035A0000091019035E7FDF713FF29480096019639 :1035B0000278652340E5009665232A460196039923 :1035C0000298FFF75DFC02460299089801F05CFD45 :1035D000012080F31088BFF34F8F27492548C8602A :1035E000BFF34F8F00BFFDE7A17960790902401852 :1035F00080B2E279059902F099F9002809D0C0B2A9 :10360000009004A9124801910278EE23401E01782F :1036100013E500960196FCE6A1796079090240184D :1036200080B20690E47900963B462A4601960399BB :103630000298FFF725FC02460299089801F024FD44 :1036400022460599069802F081F900200BB0F0BDE2 :1036500051010020140400000080000800A00008B0 :10366000E80C0020A4180020701000208006002024 :10367000E41600200400FA0500ED00E070B5FDF747 :1036800071FE164800F0E2FA154D164C6869A06507 :103690001248816861658188491C81808088E06466 :1036A0000E4801F0B1FC2868206768686067A86868 :1036B000A06701220C4B1146A06DFDF7F7FD2046D7 :1036C0008030E9680160A9694160E9698160296920 :1036D000C160296A0161002070BD0000A4180020AB :1036E00064010020701600203930000008B504493C :1036F0004A6902434A6149690140009108BD0000DE :103700000010024008B50449CA690243CA61C96988 :103710000140009108BD00000010024008B50449B6 :103720008A6902438A6189690140009108BD0000ED :103730000010024070B5094E04467618203E049DE4 :103740000C34F17F0830102D03D00A50F07F035164 :1037500070BD0A51F17F0B5070BD00005865000824 :10376000044A51182039C97F425852085200425029 :103770007047000058650008044A51182039C97F75 :10378000425801231A434250704700005865000810 :10379000044A51182039C97F425802231A43425023 :1037A0007047000058650008054B10B559182039BE :1037B000C97F435803242403A3431343435010BD3C :1037C000286A0008054B59182039C97F001D0B587D :1037D0001B0C1B0413430B50704700005865000876 :1037E000054B10B559182039C97F4358034C234065 :1037F0001343435010BD0000286A0008EFBFFFFFCD :10380000054B10B559182039C97F43588024A3436C :103810001343435010BD0000286A0008054B10B543 :1038200059182039C97F43580324A402A3431343E2 :10383000435010BD286A0008054B10B559182039AF :10384000C97F43582024A3431343435010BD0000B5 :10385000286A0008054B10B559182039C97F43580C :103860004024A3431343435010BD0000286A0008BE :10387000054B10B559182039C97F43580324240239 :10388000A3431343435010BD286A0008F0B51FB48A :103890000024022804D0012804D00425144F12E08B :1038A0000125FBE70225F9E7019861000E182201C6 :1038B00003990298FDF768FC3969012211433961C7 :1038C0003080641CE4B2AC42EED3F868C007C00F8D :1038D000FBD1F8688006C00F08D0F86820210843A3 :1038E000F8603869400840003861012005B0F0BD3B :1038F00000200240890210B50B1811491AE00C692A :10390000022214430C6148610A69402422430A617F :10391000CA68D207D20FFBD1CA689206D20F0DD067 :10392000CA6820242243CA600C69022294430C61B5 :10393000520280189842E2D3012010BD002010BD31 :10394000002002400748C168C907C90FFBD10169BF :103950008022114203D004494160044941600120A2 :10396000704700000020024023016745AB89EFCD7E :10397000F0B500233CE001249C40224037D04F6842 :1039800006681446544365006519AE4367433E43D9 :1039900006604E68012E01D0022E05D18F68866820 :1039A0006743AE433E4386600F69C668AE43254613 :1039B0007D432E43C6604D68022D18D14D69FF2A04 :1039C00009D8066A544354432201121B96436C43A0 :1039D000264306620BE0140A2246624362436243B6 :1039E0001401A61A446A6A43B443144344625B1C3C :1039F0000A681446DC40BED14A68012A01D0022A76 :103A000006D10A68C968436893434A431343436035 :103A10000120F0BD0069814301D0002070470120E2 :103A2000704710B5044601F0D3F9206001F0B6F9F3 :103A3000606001F0C1F9A06010BD0000014610B542 :103A4000002000290FD1104A116B8907890F012925 :103A50000AD0022911D0032909D001F0B9F901F0E7 :103A60009DF901F0A9F910BD01F0B2F910BD11687E :103A70008907C90FFAD0054810BD116A8907C90F17 :103A8000FAD00120C00310BD0010024000127A00DD :103A900010B5036800225B06DB0F25D10CC98C68CA :103AA0001A434B6823431A43CB681A430B691A43E2 :103AB0004B691A438B691A4303680C4C23401A4321 :103AC000026042680A4B1A40CB681B0C1A430B6811 :103AD0001A43426001238A695B0308399A4202D182 :103AE000898C89B201610122104610BD4000FFFFA0 :103AF000FBF0FFFFF0B50268194B1A4C984201D059 :103B0000A04203D17025AA434D682A43164D174E93 :103B1000174F98420AD0A04208D0164CA04205D0B8 :103B2000A84203D0B04201D0B84204D103242402F9 :103B3000A243CC68224302608A68C2620A88826219 :103B4000984205D0A84203D0B04201D0B84201D17A :103B5000097C016341690122114341611046F0BDB6 :103B6000002C01400004004000400140004401409E :103B7000004801400020004041680122D2029143E8 :103B8000416081680822914381607047FEB5044618 :103B900000680D460026C007C00F43D1E968686879 :103BA000AA69084329691143084321681E4A114044 :103BB00008432060A868616803221203914301430F :103BC00061606869A168121191430143A1601748BF :103BD000844203D10020FFF731FF06E014488442FD :103BE00020D16846FFF71DFF029800281AD02968E7 :103BF000002917D00126AA69F3039A420CD140008C :103C00004A088018FDF770FA0A4980B2014000079F :103C1000420F0A43E26005E04A081018FDF764FA13 :103C200080B2E0603046FEBDF369FFFF003801401E :103C300000440040F0FF000010B580220249FDF76B :103C4000B4FA002010BD000098690008F0B5154ACC :103C500000215514144C154F0CE0D65ABE4208D121 :103C60009B185B886668B34203D90AC44B1C236067 :103C7000083C491C4B01AB42EFD3216801230029CA :103C800005DB49018918202201F0D8F800E0838083 :103C9000A06840012030A84201D90020A060002087 :103CA000F0BD000000C8000864010020AA55000013 :103CB0001FB50B46024604A1684601F0D1FE01463D :103CC000684601F049F81FBD201B5B25643B256455 :103CD0004800000010B50120FFF708FD00210A2070 :103CE00000F046FC0A2000F039FC00210B2000F017 :103CF0003FFC0B2000F032FC10BD0000F0B50120AD :103D000087B04004FFF7F2FC01208004FFF7EEFCCF :103D10000120C004FFF7EAFC01208005FFF7E6FC64 :103D20000126C020002403256A46049631C20927D3 :103D3000FF0669463846FFF71BFE8020694631C101 :103D4000694638460494FFF713FE93200001009063 :103D5000039469460196029504943846FFF708FEDD :103D60003002B86168026A46049631C26946384634 :103D7000FFF7FEFD29486A46049631C26946284885 :103D8000FFF7F6FD274800900394694601960295D7 :103D900004942348FFF7ECFD0720400300900294B1 :103DA00003946946019604941F48FFF7E1FDF02053 :103DB0006A46049631C269463846FFF7D9FD30029B :103DC000B86140006A46049631C269461448FFF75C :103DD000CFFD40206A46049631C269461348FFF77A :103DE000C7FDF0020090694601960295049438469A :103DF000FFF7BEFD8020009069460196029504946D :103E00000A48FFF7B5FD40206A46049631C269466C :103E10000348FFF7ADFD07B0F0BD00000704000048 :103E200000040048C0FC00000008004800140048DE :103E30000848074901600849016004214160074AB8 :103E40008260C1684907FCD1026105490160704781 :103E5000CCCC00000030004055550000FF0F0000A2 :103E6000AAAA0000F0B591B0282106A8FDF7B6F97E :103E700018216846FDF7B2F901200003FFF74EFC58 :103E800001208004FFF732FC0024082502260327C6 :103E9000039404946A460594E0C269462248FFF7F9 :103EA00067FD102069460394C1C101200490694652 :103EB00005941D48FFF75CFD2020039404946A4696 :103EC0000594C1C269461848FFF752FD0021192028 :103ED00000F04EFB192000F041FB07200002089083 :103EE000012006940A9040020B90099480200794C8 :103EF0000E940D9007200D4C0F900C9506A92046AE :103F0000FFF7C6FD60681021884360606068A843C1 :103F1000606060680902884308436060206840214F :103F20000843206011B0F0BD00040048003001409B :103F300010B586B014216846FDF750F91020FFF740 :103F4000E1FB0021112000F013FB112000F006FB23 :103F50002F2069460880002001900848084C0290F4 :103F60002046FFF7C7FD2068802188432060E06875 :103F700001210843E06006B010BD0000E703000027 :103F80000010004070B501208EB08003FFF7C6FB23 :103F9000032040020790022008900320002409908B :103FA000012509200A9407A90C950B94C006FFF778 :103FB000DFFC3A4E102202213046FFF711FC0022AE :103FC00002213046FFF7F0FB002202213046FFF7C6 :103FD00033FC002202213046FFF73CFC8022022104 :103FE0003046FFF70DFC002202213046FFF740FC6F :103FF000002202213046FFF711FC00220321304647 :10400000FFF7EEFB002203213046FFF7CDFB002235 :1040100003213046FFF710FC002203213046FFF752 :1040200019FC802203213046FFF7EAFB002203211E :104030003046FFF71DFC002203213046FFF7EEFB60 :1040400000211B2000F094FA1B2000F087FA14488E :1040500069460068009001940294039405940694C4 :104060000C20104C04902046FFF790FD6068290555 :10407000084360606068490003225205904308438A :104080006060A06849120843A0602046FFF774FDF5 :104090002068284320600EB070BD00000000024080 :1040A000000100200038014070B58EB01C21684628 :1040B000FDF794F8182107A8FDF790F8012464048F :1040C0002046FFF71FFB2046FFF710FB0E2007904E :1040D00002200890032001250990002409200A9558 :1040E00007A90C950B94C006FFF742FC414E102225 :1040F00004213046FFF774FB002204213046FFF70D :1041000053FB002204213046FFF796FB00220421D6 :104110003046FFF79FFB802204213046FFF770FBFB :10412000002204213046FFF7A3FB00220421304681 :10413000FFF774FB002205213046FFF751FB0022F8 :1041400005213046FFF730FB002205213046FFF7FE :1041500073FB002205213046FFF77CFB80220521FE :104160003046FFF74DFB002205213046FFF780FB6C :10417000002205213046FFF751FB00211C2000F0F2 :10418000F7F91C2000F0EAF9A61EFF21304600F0E6 :10419000EFF9304600F0E2F91748EE0300680090AE :1041A0000194029403940C2004AA51C2134C694652 :1041B0002046FFF7EBFCA06821140843A060A0682C :1041C000B0433043A06020681F214905884308435D :1041D000206020684911884308432060A068A1142A :1041E0000843A0602046FFF7C7FC206828432060F2 :1041F0000EB070BD000002400401002000440040E9 :1042000000B50846042A02D80020C04300BD01784A :104210007F2902D90120C04300BD41784906490EDB :104220001F2902D90220C04300BD114601F0CAFE79 :104230000028F9D0042000BDF7B588B00F460A9ACF :104240000898FFF7DDFF0690002803D00020C04348 :104250000BB0F0BDBD483A7800783946824273D140 :104260008C784A78CB78B98824024DBAB8491C4377 :1042700008704A7001200790200521070226000ED1 :10428000090F130001F000FC11A60A508DA7BFDD35 :10429000A6A6A6A6A6A6A6A6E9F0A600E81DC008A2 :1042A000AB4903908870002038E000270120059773 :1042B00001900098C000049026E021070122200907 :1042C000090FD202944207D24200A24812180920D4 :1042D00080011018808E05E042009E481018FF30C3 :1042E0008130808AFDF770FB002801D001980743D8 :1042F0000198641C4006000E01900598A4B2401C71 :104300000590082804DA049805994018A842D4DBDF :104310008F4800994018C7700098401C039900907E :104320008842C2DB761854E0E81DC0088849039033 :104330008870002030E00020009001200190029859 :104340000027C00004901DE0FDE02005000E4200A3 :10435000804821071218092080011018090F808A4F :10436000FDF732FB002803D0019900980843009024 :104370000198641C4006000E7F1CA4B20190082F17 :1043800003DA0498C019A842DFDB7149029A009849 :104390008918C8700298401C039902908842CADBB1 :1043A000C0E768006A498446887000200EE0211842 :1043B0004A006849470052180921C9015118898EDD :1043C000634A0B0ABA18D3701171401CA842EEDB85 :1043D00017E0761C8DE068005D4A844690700020EE :1043E0000DE021184B005B4947005B18092189014A :1043F0005918898ABF180B0AFB703971401CA842F2 :10440000EFDB6644E5E7002D12D0FF221202954251 :1044100007D142004F4812189D208000101800F06C :104420004FFE39464A480A9AFCF7BFFE0A9E85E0CD :104430004200484812189D208000101800F050FDDE :10444000EFE738797979000208434249620052184F :104450000921C90151188886E3E7E81DC0083C49D5 :1044600003908870002036E047E03818C07900904B :1044700001200190002005900298C000049024E0E3 :10448000210701222009090FD2029442009B019AC0 :1044900007D21A4043002F481B189D20800018188F :1044A00005E01A4043002B481818FF30953000F003 :1044B0001BFE0198641C4006000E01900598A4B2F2 :1044C000401C0590082804DA049805994018A84271 :1044D000D6DB0298401C039902908842C5DB1C4839 :1044E000B9788170F978C170397901717979417140 :1044F000361D0698002814D025E000200EE041006B :10450000C919CA79097A12020A4321184B001149C4 :104510005B180921C90159188A86401CA842EEDBA4 :10452000DDE70798002809D0B1B2094801F04AFD3B :1045300007498855000A89194870B61C3246044953 :10454000089800F0A1FD002082E600005C01002038 :10455000E80D0020F010002070470000C106C90ED1 :1045600001208840014908607047000000E100E038 :104570008307FF22DB0E9A408907090E9940002825 :104580000BDA0007000F0838830808489B0018184A :10459000C36993430B43C3617047830804489B007E :1045A0001818036893430B430360704700ED00E065 :1045B00000E400E08307FF22DB0E9A408907090E22 :1045C000994000280BDA0007000F083883080848D4 :1045D0009B001818C36993430B43C361704783085A :1045E00004489B001818036893430B43036070470B :1045F00000ED00E000E400E010B501200449C00631 :10460000486004480168491C016000F005F810BDCD :1046100000ED00E0FC00002070B50D484178002559 :10462000002904D04570C1780A48FCF7D9FF0A4E2A :10463000F06F00280BD0094C094902202268FEF7D0 :1046400005FA2560F5678021054801F0D9F870BDAD :10465000DC000020D8020020EC0300200C01002028 :104660000005002010B50648054B00780021403BAE :104670005A1840325478491C14700F29F8DB10BDC9 :1046800030110020F3B5FA4D85B0286800286FD0AE :10469000686800281CD000220D21082000F03AFD97 :1046A00000221146082000F035FD012211460820A5 :1046B00000F030FD00200146EE4A13184033401C44 :1046C00019701028F8DB00260121144640347BE2E3 :1046D0000122E1E7B2000598059B805CD7187A7843 :1046E000019201257B8800931B2873D012DC0246BF :1046F000030001F0C9F91B5C7272727272723E3E65 :104700003E3E3E3E5C5C5CA7A7A73E3EBEBEBEBE34 :10471000BEBE5C00342870D011DC01461C390B0091 :1047200001F0B2F918A7A7A7A7A7A7A7A7A7A7A7A8 :10473000454545454545454545454545F7453A289F :1047400073D008DC014635390B0001F09DF905E214 :104750006E56E26E3000DC2804D004DC3B28EFD03B :10476000C82824D120E1DD28FCD0FA28F9D11BE1AA :1047700033E2D01F030001F087F90E080A10181B5E :104780001D1A1A1A1A1A1A20261A207C4AE0FFF754 :1047900069FF00281FD0207C3AE0FFF763FF002864 :1047A00016D1207C002813D125E000F0C3FAF5E1F2 :1047B0002078F7E7FFF756FF1DE0207C00280AD09D :1047C000002905D007E0207C002804D1002902D070 :1047D000012010E04DE000200DE0130001F054F93D :1047E000070C050E111B262E0C0000F0A3FA0099F1 :1047F0000198FDF7FDF82074D0E11AE100F09AFA73 :104800000CE0207C0028E6D000990198FDF7F0F834 :104810000028E0D0DCE7207C0028DCD0009901985B :10482000FDF7E6F80028D6D1D2E758E1207C002831 :10483000CED100990198FDF7DBF8B3E7207C002882 :10484000ECD0C5E7102804D0112804D0122AAED12C :104850000AE0227C03E0207C0028A8D001220099F5 :10486000019800F057FC99E1207C00289FD000229D :10487000F5E715383D79030001F006F9120A121523 :10488000181B0F1E3C4C5B6A2D798185898D7D94A8 :1048900000F050FA13E0207484E000F04BFA1DE0C1 :1048A00000F048FA29E000F045FA36E000F042FA5C :1048B00042E000F03FFA4EE0207C002870D028460D :1048C0000099FDF71DF90546F9887879FDF718F983 :1048D000854263D064E0207C002861D0284600999E :1048E000FDF70EF90546F9887879FDF709F9854253 :1048F00054D155E0207C002852D028460099FDF77D :10490000FFF80546F9887879FDF7FAF8854245DB26 :1049100046E0B1E0207C002842D028460099FDF70F :10492000EFF80546F9887879FDF7EAF8854235DC35 :1049300036E0207C002833D028460099FDF7E0F8C7 :104940000546F9887879FDF7DBF8854226DD27E012 :10495000207C002824D028460099FDF7D1F8054690 :10496000F9887879FDF7CCF8854217DA18E0207CD1 :10497000002813D1A3E7207C00280FD1AEE7207CCC :1049800000280BD1B9E7207C002807D1C5E7207C9F :10499000002803D1D0E7207C0028DCD001207AE772 :1049A000002078E70225F9E03F791546C8280DD0A8 :1049B000DC2823D0DD282AD0FA28F3D12D48E900BD :1049C00008184030007EC0062AD508E02948E900D2 :1049D00008184030007EC00601D4002121E0207C70 :1049E000002822D038460099FDF78AF8014628466B :1049F00000F07EFA284600F0F5F84CE71D48E90083 :104A000008184030007EC006E9D4012109E01948A9 :104A1000E90008184030007EC006E0D4022100E022 :104A200003212846FDF7D8FCD9E7284600F068FDA9 :104A3000E0E73F790225342802D0372816D108E074 :104A4000207C002812D038460099FDF759F8401C08 :104A500007E0207C002809D038460099FDF750F87F :104A6000401E02463846009900F0CCFB96E000005C :104A7000680E0020F01000203D7979790291F988C4 :104A80000191332814D035281BD038288AD1207CB6 :104A9000002887D00298FDF733F80746284600998A :104AA000FDF72EF83A1A0199029800F0ABFB79E76E :104AB000207C0028FBD028460099FDF721F802460B :104AC000F1E7207C0028F2D028460099FDF718F87D :104AD000054601990298FDF713F82A18E3E73A7999 :104AE00079790291F9880191797A03917D89362843 :104AF00006D0392812D03A281FD03B284DD131E0BA :104B0000207C002849D010460099FCF7F9FF0746A1 :104B100001990298FCF7F4FF3A180CE0207C002879 :104B20003BD010460099FCF7EBFF0746019902982D :104B3000FCF7E6FF3A1A29462CE0207C00282CD00E :104B400010460099FCF7DCFF07B201990298FCF7C8 :104B5000D7FF00B247433A462946039800F052FB7C :104B60003A1416E0207C002817D010460099FCF774 :104B7000C7FF07B201990298FCF7C2FF01B238469D :104B8000FCF7C8FA02B20F462946039800F03AFB38 :104B90003A46691C039800F035FB032530114100AB :104BA0000F48012308183107090F02898B40194665 :104BB000114000D00121277C0830002F01D01A437A :104BC00000E09A43028076190698864200DA81E571 :104BD00003494868401C4860002007B0F0BD000051 :104BE000680E0020FEB50746402802DB0020C043C7 :104BF000FEBD2C48F9000E1800964036348BE106B5 :104C000001D40020FEBDA1063CD561063FD4264953 :104C1000096800980A25406D0190081AA1070FD075 :104C2000A107890F012905D0022905D0E143890791 :104C300005D005E0642503E07D25ED0000E01B4D77 :104C4000A84224DB2946FCF765FA014615487A009C :104C500012180B20800110188446808E019B40188A :104C600069435B18009980B24B650D218901511889 :104C7000898E814203D8084640210C433483614623 :104C8000888604E0600602D5402084433483307E69 :104C9000B9B24006C20F052000F03CFA307E400653 :104CA000C00FFEBDF0100020B4010020102700004E :104CB000F7B50446FCF7FFFE054602992068A942B5 :104CC000A16806DC4018029A0199FCF76EFA029975 :104CD00019E040182A460199FCF767FA2946204650 :104CE000FCF72AFB2046FCF7E6FE06460298471B27 :104CF000B7420DDCA16820683A464018019949196D :104D0000FCF753FA39462046FCF716FB0298FEBD25 :104D1000002E0CDDA168206832464018019949191F :104D2000FCF743FA31462046FCF706FBAD1928464E :104D3000FEBD0000074A0F2011183F235B5C403185 :104D4000401E0B700028F7DC02494031087C0870D7 :104D500070470000F010002010B50C460A460146CE :104D60000348FFF7A5FF00F033FD204610BD00000B :104D7000B003002010B50C460A4601460348FFF771 :104D800097FF00F025FD204610BD0000B003002075 :104D900010B50C4600F084FD204610BD044949685A :104DA000F0221140034A0909515CC84070470000D5 :104DB000001002404C6A000803494968034A49054B :104DC000490F515CC8407047001002405C6A0008FF :104DD00010B5074841680C200140064805D0042959 :104DE00004D0082901D100F009F810BD024810BD17 :104DF0000010024000127A00001BB70010B50C4CE6 :104E00006168012212040B48114002D0914200D186 :104E10000948E16A0907090F491CFCF765F961684F :104E20000F2292041140890C891C484310BD0000D8 :104E30000010024000093D00001BB70070B5D417F8 :104E4000A40F0023A418A51003E09C000E590651DE :104E50005B1C9D42F9DCD40F6B00A418651003E0C5 :104E60005C000E5B06535B1C9D42F9DC104670BD76 :104E70000920C006006901090F208843704700001F :104E8000F8B5002384468025DB43124800242146E0 :104E90002A464A43121817880F4EB74209D17E2678 :104EA000B75A0E4EB74204D15288A24201DD0B46DA :104EB0001446491C0829EBDB082B06D26B43191852 :104EC00080226046FFF7BAFF02E06046FEF7B4FEBC :104ED0000020F8BD00C00008AA550000A55A000037 :104EE0000B0702881B0F012199408A4302807047FB :104EF00030B5402802DB0020C04330BD0D4CC2005D :104F000013191A464032157EAD0611D4400000191F :104F10000D24A4010419A1860B240021A401001969 :104F20008186054800685865108B2021084310834E :104F3000002030BDF0100020B401002010B500F0BA :104F400001F810BDF0B5284EB068C007C00F42D0C0 :104F5000F0682649C5B2C86A254C401CC862088D55 :104F6000401C0885A079002802D1284601F06CF881 :104F7000A0790027002813D11E48A1784554A078B5 :104F8000401CA0700D2D0BD1A07801F05DF8A07829 :104F9000E07001206070A770277017490007486013 :104FA000A079002817D06079401C60711348016B0C :104FB000491C01636079217988420DD30120C00228 :104FC0000921C9068861A7710120E0712070A770CE :104FD0000B4980208862F0BD064861794030405C12 :104FE000307301F031F8F0BD00300140701800203E :104FF000DC000020D802002000ED00E07017002047 :10500000001400487047000070B51A4C6168491CD4 :10501000616019490180A18841801849CA6C828069 :10502000496D8160112181831549C183A1684A01BD :105030001449511800250B462A469E5CFF2E04D1C8 :10504000521C202AF9D3002D10D02022FCF754FA4C :10505000A0682060401CA06040010121890220302E :10506000884201D90020A060002070BD202200F0FD :10507000CDFCEDE764010020AA5500007016002069 :10508000A55A000000C8000810B514460A460128B9 :1050900002D0022806D00DE021461046FFF76AFE36 :1050A000054804E021461046FFF772FE0348816F71 :1050B000491C8167204610BD58030020EC030020E6 :1050C0000B0702881B0F012199400A430280704799 :1050D0000907090F01238B400188002A01D01943D9 :1050E00000E099430180704710B5002A02D0FFF715 :1050F000E7FF10BDFFF7F4FE10BD0907090F0123FC :105100008B400188002A01D0194300E099430180B7 :105110007047000070B50B051B0E204C5B000D079F :105120001C192D0F030000F0AFFC09060B14191E0B :1051300022272C313600FF292DD89520800003E04E :10514000FF2928D89D20800020182946FFF7D5FF89 :1051500021E0FF291FD8A5208000F5E780291AD279 :10516000FD208000F0E7802915D20D48ECE74029AA :1051700011D2AD208000E7E740290CD2B520800095 :10518000E2E7802907D206482030DDE7802902D2F5 :1051900003488030D8E7002070BD0000F0100020E8 :1051A000140400000121C903034A002801D09162C0 :1051B0007047916170470000000800480121890391 :1051C000034A002801D09162704791617047000046 :1051D000000800480121C903034A002801D0916159 :1051E00070479162704700000008004801214903A0 :1051F000034A002801D09162704791617047000016 :1052000000080048F0B5304C4B001C190923DB01A5 :10521000E6180B23DB01E51892B28A283DD00EDC9C :10522000294F4B00DF1909239B01FF188338030026 :1052300000F02AFC0714181C21262D464800992846 :105240003ED006DC8B282CD08C2831D08D2839D14B :1052500033E0A12834D0FE2834D131E0102931DAEE :10526000BA822FE010292DDABA862BE0102929DA2C :105270000520C00108E0082924DA0F20800114E08D :1052800008291FDA01208002201882821AE0802972 :1052900018DAB28616E0AA8614E0802912DAB28201 :1052A00010E040290EDA0D2080012018828609E0E6 :1052B000402907DA0B208001F7E7402902DAE8E706 :1052C0008029E8DB0020F0BDF0100020F0B58DB0A3 :1052D000002500F035FEFCF77FFC059010213A48D0 :1052E00000F090FE0790FCF777FC04901021364800 :1052F00000F032FE0690FCF76FFC0390102132485C :1053000000F048FE0190FCF767FC064610212E488D :1053100000F058FE0090FCF75FFC2C4A04469068B1 :10532000012108439060881E106129481061264BB6 :105330000021585C1070491C1029FADB1768FCF733 :105340004BFC0B900199009802970190214F00911E :10535000781921A1069B079A00F082FB45190B984A :10536000A11B001B01910290039A04990398B21AA1 :10537000431A009208460599421A781920A100F0B4 :105380006FFB441908A8FEF74CFB26484268012031 :10539000000402403819134623A100F061FB0419F0 :1053A000381926A1089A00F05BFB01193846FFF76F :1053B000D3FC01210D20FEF77BFC244903208860EB :1053C00000200DB0F0BD000048650008003002402C :1053D00001A00000D80100200D0A435243202025DF :1053E000303458202025303458202025303458209F :1053F00020253034582020253034580D0A00000074 :1054000074696D6520253034642020253034642093 :105410002025303464202025303464202025303489 :10542000640D0A00001002404D61696E536F757281 :105430006365202578202564200D0A007379736345 :105440006C6B202564200D0A00000000C0000020C5 :1054500030B50021174D0846696042005219401CC2 :105460001181FF28F9DD00200522134CD2014300F1 :105470001B199B18401C99821028F8DB0020092278 :10548000D20143001B199B18401C9986FF28F8DDA8 :1054900000201022C100091940310B8B401C93439E :1054A0000B834028F6DB0120044928604882002055 :1054B00030BD0000680E0020F0100020A41800206D :1054C00010B500210C48092201600C4B08469201DE :1054D0004400E418A418401CA1861028F8DB002022 :1054E000012292024400E418A418401CA18208285A :1054F000F8DB002010BD0000680E0020F010002036 :1055000010B5402802DB0020C04310BD0B4BC1008A :10551000CA18114640310C7EA4060DD54000C018B3 :105520000B2300249B01C018848605480068506541 :10553000088B202290430883002010BDF01000202B :10554000B401002010B5FCF771FBFCF719FF10BD8A :1055500070B594B030216846FBF740FE0024022568 :1055600001260E94E8030990009605200F94C004CC :105570000D9401960A900C9408950B956846FCF7DB :10558000F7FC002803D0862115A000F067FA072059 :105590000C900E9401210D950F940CA8FCF70CFCB7 :1055A000002803D092210EA000F058FA109610A8FF :1055B0001296FCF78BFB002803D0A12108A000F075 :1055C0004DFA4B208001FCF7C3FE0420FCF77AFE65 :1055D00000221146501EFCF775FB14B070BD000090 :1055E0002E2E5C2E2E2F436F6D4C69625C537263BE :1055F0005C4253502E63000013480168012211439E :1056000001604168114A114041600168104A11402F :1056100001600168012292049143016041683F22C8 :10562000120491434160C16A09090901C162016B19 :10563000FF22143291430163416B490849004163E1 :105640000021816070470000001002400CB8FF0884 :10565000FFFFF6FE04480169C907C90F02D0012106 :10566000C9430161704700000010004070B51B4C39 :10567000E0691B498006C00F11D01A4A0120106052 :10568000194A10600869401C0861A28C4868401CD7 :105690004860174B154D18682A54401C1860E06983 :1056A0000007C00F04D008202062C869401CC861F0 :1056B0002068C006C00F07D0E069C006C00F03D045 :1056C0001020206200F03CF8E0694006C00F03D0D3 :1056D0004020206200F074F870BD000000380140E6 :1056E0005803002010010020140100208004002035 :1056F0000801002010B5104CE069E0690007C00FF8 :1057000005D0082020620D48C169491CC16120688C :10571000C006C00F07D0E069C006C00F03D010203C :10572000206200F09DF8E0694006C00F03D04020E1 :10573000206200F0E5F810BD00440040EC030020BA :105740000548416A491C416204490968002901DD94 :105750000121C167704700005803002008010020A4 :10576000F8B5144D0C46064602212846FDF7F8FF11 :1057700010200090104B324602212846FDF7DAFF38 :10578000224602212846FEF71DF802212846FDF791 :10579000F3FF0A4804630121417202212846FDF704 :1057A000F7FF054828388168802211438160204630 :1057B000F8BD0000000002402838014058030020D6 :1057C0000248016A491C016270470000580300202A :1057D00010B50A48407A00280DD1084C206F583483 :1057E000002808D12046FCF753F90146E2682068FA :1057F0008018FFF7B5FF002010BD000058030020FF :10580000F8B5144D0C46064605212846FDF7A8FFBD :10581000002000903346104A05212846FDF78AFFF4 :10582000224605212846FDF7CDFF05212846FDF734 :10583000A3FF0A4844630121817205212846FDF730 :10584000A7FF054824388168402211438160002069 :10585000F8BD00000000024024440040EC0300209A :105860000A480B4900794058802180B2081A09493A :10587000012208600849CA674A6A521C4A62002825 :1058800003DD01200549000748607047586500089E :10589000040002400C010020EC03002000ED00E0B9 :1058A000F8B5144D0C46064604212846FDF758FF6E :1058B00010200090104B324604212846FDF73AFF95 :1058C000224604212846FDF77DFF04212846FDF7E6 :1058D00053FF0A4804630121417204212846FDF761 :1058E00057FF05482838816880221143816020468F :1058F000F8BD00000000024028440040EC030020F6 :105900000248016A491C016270470000EC03002054 :1059100010B5054C0A46638821465B1C4380FBF7A3 :10592000EBFD002010BD0000007C00080B4610B508 :10593000054984054118002C184602D000F066F88D :1059400010BDFBF7D9FD10BD009000080B460349C0 :1059500010B541181846FBF7CFFD10BD00800008B8 :1059600070B50C460B494118002B08D00A4D45195B :10597000012B03D0094B9B8A002B00D129468005BF :10598000204603D000F042F8002070BDFBF7B4FDC4 :10599000FAE700000080000800A00008A41800201A :1059A000F8B54188174A491C4180154901807E217C :1059B00000250A52ED43802300221146124C002696 :1059C00059430C19314603E0675CFF2F04D1491C91 :1059D0009942F9DB002E03D0521C082AEDDB00E0CF :1059E0001546082D06D208495D436918802200F04B :1059F0000DF803E080220449FBF77EFD0020F8BD8E :105A0000AA550000A55A000000C00008F8B51646C7 :105A10000F460546FDF796FF0024761C76080EE03B :105A2000600042195278295C120289188AB2C119A1 :105A300000230220FDF72AFF002802D0641CA642A2 :105A4000EED8054A1169802319431161002801D05D :105A50000020F8BD0120F8BD00200240FEE7000054 :105A60000FB410B504A9074B02AA039800F028F858 :105A7000044602A9002000F05DFA204610BC08BCD4 :105A800004B01847355F000830B47446641E2578AA :105A9000641CAB4200D21D46635D5B00E31830BC62 :105AA000184702E008C8121F08C1002AFAD170473F :105AB0007047002001E001C1121F002AFBD170478E :105AC000FFB591B00F460546002606E025280AD00E :105AD000149A139990476D1C761C28780028F5D1EC :105AE000304615B0F0BD002400940121F34A029421 :105AF00000E004436D1C2B780846203B9840104280 :105B0000F7D128782A280ED0022128780246303A88 :105B1000092A15D8009A0A235A43303A80180C43B0 :105B20006D1C0090F1E701CF0090002805DA0120FC :105B300040030443009840420090022004436D1C3F :105B400028782E2815D10420044368786D1C2A2853 :105B50000AD101CF6D1C02900BE002990A22514339 :105B6000303940186D1C02902878014630390929D7 :105B7000F3D928786C2810D006DC4C281AD0682875 :105B80000ED06A2817D104E0742813D07A2812D1D5 :105B900010E00120400504430CE00121090501E06B :105BA000032109050C436978814203D101200005D6 :105BB00024186D1C6D1C287803906E281ED00CDCF8 :105BC000632831D004DC00288AD0582811D1B2E0F3 :105BD00064287BD069280CD178E073282DD004DCB0 :105BE0006F2870D0702804D1A7E075286CD0782871 :105BF0006BD0149A13999047761C62E06002400FB4 :105C0000022807D003280AD0042838680AD0066082 :105C10003F1D56E03868F11706604160F8E73868C4 :105C20000680F5E70670F3E73878694608740020C7 :105C3000487404A80390012003E038680390002012 :105C4000C0433F1D61070FD5002101E00199491CA8 :105C5000029A0191914213DA8142F7DB019A03998A :105C6000895C0029F2D10BE0002101E00199491C77 :105C700001918142FADB019A0399895C0029F5D1EF :105C800001990098139A401A00902146149B00F045 :105C90003BF901998019461807E0039803990078A9 :105CA000491C0391149A139990470198401E019042 :105CB000401CF2D12146149B139A009800F014F96D :105CC00086196D1C09E741E033E034E00A20002129 :105CD000049005916002410F022905D001CFC2173F :105CE0009446032905D007E0FF1DFF08FF0003CFFE :105CF00006E000B2C2179446042902D140B2C1178F :105D00008C4600226146944506DA0A46002140424C :105D100091418C462D2102E0210504D52B216A46B4 :105D20001176012103E0E10701D02021F7E701917D :105D300054E00A200BE0102009E01020049000211C :105D40000420044308200591029003E0082000216C :105D5000059104906002410F022905D001CF002275 :105D60009446032906D006E0FF1DFF08FF0003CF7D :105D70008C4603E080B2042900D1C0B20021019119 :105D800021072BD50399702906D0049A1021059B71 :105D90004A401A4305D00EE040216A46117601219F :105DA00008E06146014306D030216A461176039926 :105DB000517602210191049A0821059B4A401A4319 :105DC0000CD16146014301D1610707D530216A46F4 :105DD0001176012101910299491E029103995829D6 :105DE00004D037A103910FA90F910DE039A1F9E774 :105DF0006146059B049AFBF706FA039B8C469B5C65 :105E00000F9A521E0F92137061460143F0D10F9802 :105E100007A9081A20300390600704D50120000468 :105E20008443029801E0012002900399884201DD39 :105E3000401A00E0002041180290019809180098CB :105E4000401A0090E00306D42146149B139A009850 :105E500000F05AF886190020049008E006A9085CB2 :105E6000149A139990470498401C761C0490019949 :105E70008842F3DBE0030CD52146149B139A00986B :105E800000F042F8861904E0149A302013999047E4 :105E9000761C0299481E02900029F5DC08E00F9854 :105EA0000F990078491C0F91149A13999047761C0A :105EB0000399481E03900029F1DCFBE60928010044 :105EC0003031323334353637383961626364656670 :105ED0000000000030313233343536373839414232 :105EE0004344454600000000F8B5044600251E4620 :105EF0001746880404D405E039462020B0476D1CBD :105F0000641EF9D52846F8BDFFB50446002581B0CA :105F10001E46C80301D5302700E02027880404D599 :105F200005E038460399B0476D1C641EF9D5284634 :105F300005B0F0BD0A68531C0B601070704700007C :105F400010B50A2101A0FEF707FF10BD1B5B324A06 :105F50001B5B303B3048000030B503460B4800293E :105F600000D101210A4C491E0ED31A78504000225C :105F7000C50702D04008604000E04008521CD2B281 :105F8000082AF5D35B1CEEE730BD0000FFFF0000E0 :105F900001A0000070B50A4DFF23EE1D1A46F93628 :105FA00005E0047854402A5D5A40335D401C0C469D :105FB000491E89B2002CF4D11802104370BD0000B4 :105FC0005E67000870B504460C4800220C4E11E0D4 :105FD0002378521C1D4645402D07ED0E755B0009C8 :105FE0004540180968400007C00E305A2B09584038 :105FF00092B2641C8A42EBD370BD0000FFFF000028 :106000005E69000810B5084A084B07E00478544060 :106010002406E40D1C5B120A6240401C491EF5D2A6 :10602000D04380B210BD0000FFFF00005E65000895 :1060300006C00021016041608160C16001220261EF :106040004161084670470000074910B54A8D0B466C :106050004C3BD054488D401C80B24885642801D305 :106060005120488510BD00007018002088B0002025 :1060700080F31088F74E0127FF2037830530F64B59 :1060800080220090991AF548FCF7C6F94020F44B9D :106090000246191A0090F348FCF7BEF9FBF7CEFD53 :1060A000F14C0025F1482567C06A6066F048006839 :1060B000A066F048406AE066FFF74AFAEF49EE480A :1060C0000860FCF7B9F9FDF719FEFDF703FEFDF7CF :1060D000D5FAEB48FEF7D4FE3783FEF7C9FEA0637E :1060E0006063E848E84E027831780220FCF7BCFA99 :1060F000E6490220FCF730FD606B102108430107E0 :10610000090FE34A60631170C00603D5E148377098 :10611000057002E0DF4835700770DA480170FBF760 :1061200085FBDD48FBF77AFB05210820FBF744FCE3 :10613000D7480178D3480170D84901200870E12080 :10614000D74940020860FDF71DFFFDF7ADFFFDF7E1 :1061500089FED4484168402739434160FDF768FE15 :10616000FDF7E6FED0480168012211430160CF48E7 :10617000016820221143016001681022114301606F :106180000168394301608021C948FFF739FBC948DC :1061900001681022114301600168394301600A203F :1061A000FBF730FD0120FFF721F80020FFF706F88C :1061B0000020FFF70FF8FFF789F8FBF70DFDA54F5B :1061C00060663D827D82AE48C0883882388A012868 :1061D0000AD1FCF7DBF8208F202108407882788AEA :1061E000002801D0FFF734F9B34E0127B34D00204A :1061F00028706F70FBF7F0FC2861FBF711FD06902B :10620000FEF736FE05469348008AC0070BD0A80665 :10621000208F04D5800606D4FFF71AF903E0800624 :1062200001D5FFF74DF9A5630698E0630920C00684 :106230000069B084A2480069F084A24800693085F2 :10624000A14800697085FBF723FBFBF7C5FC9B4D5C :1062500068618048008A01280BD17E48818A002924 :106260001FD09A49A960C18A99480160A868FEF7C1 :1062700009FA606E69696166081AA066E16E884273 :1062800000D2E066216F884200D92067FBF7A4FCAA :10629000A8617D480078002817D08E490020CB786F :1062A0000AE08D49DEE78D49091820310A788C49CA :1062B000091820310A70401C8342F4DC71480078D0 :1062C000002802D00220FCF755FA0698800401D578 :1062D0002F7001E0002028700698000501D56F702E :1062E00001E0002068706B480078002811D002207F :1062F000FCF782FC7B490868800401D52F7001E01F :10630000002028700868000501D56F7001E00020AA :106310006870606C002801D0401E6064A06C00288A :1063200001D0401EA0644B48018B00293FD0687803 :10633000FEF75CFF6878FEF741FF6878FEF732FFF2 :106340006878002801D1012000E00020FEF742FF1C :10635000FBF742FCE861FBF73FFC2862FBF73CFCE3 :106360000A2168620846FAF7AFFE0020401C402868 :10637000FCDB206C5C49401C20640868002836DD8A :10638000364AD26F002A32D082B258490120FDF736 :1063900053FF002805D05448544902680120FCF7F7 :1063A00095FD5149002008602C49C86732E0008AF9 :1063B00001280FD0606C002810D06878FEF716FF17 :1063C000A06C00280CD06878FEF7F8FE6878FEF71D :1063D000E9FEBAE7464800680028EFD02878EDE7E4 :1063E0000020FEF7EBFE0020FEF7DCFEABE74149A4 :1063F000686888420DD92D48416801221205114371 :1064000041604168530003225205914319434160A2 :1064100001E0401C68601F480078002802D000207E :10642000FBF7F0FB182234496846FAF7BEFE244D0C :10643000002013494200511840310A891105130BFD :106440001207090E120F00296CD0002B56D0012B19 :1064500059D067E0A41800204419002058030020F8 :10646000881A0020EC0300207016002080F7FF1F20 :10647000FC0000200010024010270000D80000207F :1064800070100020230100201801002011250008B1 :106490001C010020190100209D1500081D0100208D :1064A0000001002000300140001000400038014091 :1064B00000050020004400407018002088010020E2 :1064C0000004004800080048000C004800A0000834 :1064D00060010020081B002000800008241B002011 :1064E000180C00204C01002008010020800400202E :1064F000680E0020C0270900346A00080F4B5918A5 :1065000009239B0103E00D4B591813235B01C918A4 :10651000C97C3B469340194204D0820069468958A1 :10652000A96103E0820069468958A962401C0628D7 :1065300000DA7EE703490248086057E6F0100020C1 :10654000AAAA000000300040112233445566778823 :1065500099AABBCCDDEEFF00081C304458000000B7 :10656000891112239B322446AD573665BF74488C7F :10657000C19D5AAFD3BE6CCAE5DB7EE9F7F8811046 :10658000080193331A22A5562C47B7753E64C99C5F :10659000408DDBBF52AEEDDA64CBFFF976E8022125 :1065A0008B30100299132667AF763444BD554AAD3F :1065B000C3BC588ED19F6EEBE7FA7CC8F5D9833106 :1065C0000A2091121803A7772E66B5543C45CBBD1F :1065D00042ACD99E508FEFFB66EAFDD874C90442E5 :1065E0008D5316619F702004A9153227BB364CCEFF :1065F000C5DF5EEDD7FC6888E1997AABF3BA8552C6 :106600000C4397711E60A1142805B3373A26CDDEDE :1066100044CFDFFD56ECE9986089FBBB72AA0663A4 :106620008F7214409D512225AB343006B9174EEFBE :10663000C7FE5CCCD5DD6AA9E3B8788AF19B877385 :106640000E6295501C41A3352A24B1163807CFFF9E :1066500046EEDDDC54CDEBB962A8F99A708B088464 :1066600081951AA793B62CC2A5D33EE1B7F0400896 :10667000C919522BDB3A644EED5F766DFF7C89942D :1066800000859BB712A6ADD224C3BFF136E0C11876 :106690004809D33B5A2AE55E6C4FF77D7E6C0AA50C :1066A00083B4188691972EE3A7F23CC0B5D1422956 :1066B000CB38500AD91B666FEF7E744CFD5D8BB5ED :1066C00002A499961087AFF326E2BDD034C1C33936 :1066D0004A28D11A580BE77F6E6EF55C7C4D0CC6CC :1066E00085D71EE597F42880A1913AA3B3B2444A16 :1066F000CD5B5669DF78600CE91D722FFB3E8DD6AD :1067000004C79FF516E4A9902081BBB332A2C55AF5 :106710004C4BD7795E68E11C680DF33F7A2E0EE78B :1067200087F61CC495D52AA1A3B03882B193466BD5 :10673000CF7A5448DD59622DEB3C700EF91F8FF76C :1067400006E69DD414C5ABB122A0B9923083C77BB5 :106750004E6AD5585C49E33D6A2CF11E780F00C1A2 :10676000814001C0804101C0804100C1814001C021 :10677000804100C1814000C1814001C0804101C011 :10678000804100C1814000C1814001C0804100C101 :10679000814001C0804101C0804100C1814001C0F1 :1067A000804100C1814000C1814001C0804100C1E1 :1067B000814001C0804101C0804100C1814000C1D1 :1067C000814001C0804101C0804100C1814001C0C1 :1067D000804100C1814000C1814001C0804101C0B1 :1067E000804100C1814000C1814001C0804100C1A1 :1067F000814001C0804101C0804100C1814000C191 :10680000814001C0804101C0804100C1814001C080 :10681000804100C1814000C1814001C0804100C170 :10682000814001C0804101C0804100C1814001C060 :10683000804100C1814000C1814001C0804101C050 :10684000804100C1814000C1814001C0804100C140 :10685000814001C0804101C0804100C1814000C031 :10686000C101C30302C2C60607C705C5C404CC0CD8 :106870000DCD0FCFCE0E0ACACB0BC90908C8D81848 :1068800019D91BDBDA1A1EDEDF1FDD1D1CDC14D458 :10689000D515D71716D6D21213D311D1D010F03088 :1068A00031F133F3F23236F6F737F53534F43CFC98 :1068B000FD3DFF3F3EFEFA3A3BFB39F9F83828E848 :1068C000E929EB2B2AEAEE2E2FEF2DEDEC2CE42418 :1068D00025E527E7E62622E2E323E12120E0A06088 :1068E00061A163A3A26266A6A767A56564A46CAC58 :1068F000AD6DAF6F6EAEAA6A6BAB69A9A86878B8C8 :10690000B979BB7B7ABABE7E7FBF7DBDBC7CB474D7 :1069100075B577B7B67672B2B373B17170B0509087 :1069200091519353529296565797559594549C5C17 :106930005D9D5F9F9E5E5A9A9B5B995958988848C7 :1069400049894B8B8A4A4E8E8F4F8D4D4C8C448497 :1069500085458747468682424383418180400000C7 :1069600001CC01D8001401F0003C002801E401A092 :10697000006C007801B40050019C01880044030EB3 :1069800009010201040104010006000000000000EA :106990000000000006000000AA55000000010000F1 :1069A00000000000010001000009000000000000DC :1069B00000000200000000090000000000000000CC :1069C00000000000000000000000000000000000C7 :1069D00010101010101010101010101010101010B7 :1069E0001000200030004000500060000300000054 :1069F0000400000005000000060000000700000081 :106A000008000000090000000A0000000B00000060 :106A10000C0000001100A55AAA550000000000005B :106A20000000000000000000081C304458081C3022 :106A3000445800000004000000080000001000009E :106A40000020000000400000008000000000000066 :106A5000000000000102030406070809000000000E :106A600001020304846A0008C0000020F80000004E :106A7000A25A00087C6B0008B8010020B01D00007D :106A8000B25A0008000000000000000000000000F2 :106A900000000000000000000100000010270000BE :106AA00000000000000000000000000000000000E6 :106AB00000000000000000000000000000000000D6 :106AC0000000000000C2010040420F000000000072 :106AD00000000000000000000000000000000100B5 :106AE00000000001010100000000000000000000A3 :106AF0000000000000000000000000000000000096 :106B00000000000000000000000000000000000085 :106B10000000000001000000000000000000000074 :106B20000100000097000000FFFFFFFF00000000D1 :106B30000000000000000000000000000000000055 :106B40000000000000000000000000000000000045 :106B500000000000008000080000000000000000AD :106B60000000000000000000000000000000000025 :0C6B700000000000001BB7000000000047 :04000005080010B52A :00000001FF C8T6_TestApp1/MDK-ARM/F030C8T6_TestApp1/F030C8T6_TestApp1.map
@@ -22,6 +22,7 @@ debug.o(i.ADCProcess) refers to debug.o(.data) for .data debug.o(i.ADCProcess) refers to kmachine.o(.bss) for KMem debug.o(i.ADCProcess) refers to kmachine.o(.data) for PowerDownEvent debug.o(i.ADCProcess) refers to debug.o(.bss) for .bss debug.o(i.FormatHex) refers to printf8.o(i.__0sprintf$8) for __2sprintf debug.o(i.Locate) refers to printf8.o(i.__0sprintf$8) for __2sprintf debug.o(i.Locate) refers to functions.o(i.PutStr) for PutStr @@ -70,12 +71,11 @@ functions.o(i.LL_DMA_EnableChannel) refers to functions.o(.constdata) for .constdata functions.o(i.LL_DMA_EnableIT_TC) refers to functions.o(.constdata) for .constdata functions.o(i.LL_DMA_SetDataLength) refers to functions.o(.constdata) for .constdata functions.o(i.PendSvCallBack) refers to fp0.o(i.ParseFP0Pkg) for ParseFP0Pkg functions.o(i.PendSvCallBack) refers to fpx.o(i.FPxParsePkt) for FPxParsePkt functions.o(i.PendSvCallBack) refers to kbus.o(i.KBusParsePacket) for KBusParsePacket functions.o(i.PendSvCallBack) refers to functions.o(i.Uart2RecvDMA) for Uart2RecvDMA functions.o(i.PendSvCallBack) refers to fp0.o(.data) for bSPI1RecvDone functions.o(i.PendSvCallBack) refers to fp0.o(.data) for nSPI1RecvLenInBuf functions.o(i.PendSvCallBack) refers to fp0.o(.bss) for SPI1RecvBuf functions.o(i.PendSvCallBack) refers to functions.o(.data) for .data functions.o(i.PendSvCallBack) refers to functions.o(.bss) for .bss functions.o(i.PendSvCallBack) refers to globaldef.o(.bss) for Uart2Stat functions.o(i.PendSvCallBack) refers to globaldef.o(.data) for Uart2RecvBuf1DataLen functions.o(i.PendSvCallBack) refers to globaldef.o(.bss) for Uart2RecvBuf1 @@ -92,12 +92,8 @@ functions.o(i.ReadConfig_5) refers to functions.o(i.Input165Cfg) for Input165Cfg functions.o(i.SPI1_IRQ_CallBack) refers to functions.o(i.logData) for logData functions.o(i.SPI1_IRQ_CallBack) refers to kmachine.o(.bss) for KMem functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.data) for bSPI1Sending functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.bss) for SPI1RecvBuf functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.data) for nSPI1RecvLenInBuf functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.data) for bSPI1RecvDone functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.data) for bSPI1SendDone functions.o(i.SPI1_IRQ_CallBack) refers to fp0.o(.bss) for SPI1SendBuf functions.o(i.SPI1_IRQ_CallBack) refers to functions.o(.data) for .data functions.o(i.SPI1_IRQ_CallBack) refers to functions.o(.bss) for .bss functions.o(i.SendPacket) refers to functions.o(i.PutStr1) for PutStr1 functions.o(i.SendPacket) refers to functions.o(i.PutStr2) for PutStr2 functions.o(i.SendPacket) refers to globaldef.o(.bss) for Uart1Stat @@ -140,30 +136,29 @@ functions.o(i.modbuscrc16test) refers to functions.o(i.crc16table) for crc16table functions.o(i.modbuscrc16test) refers to functions.o(i.crc16bitbybit) for crc16bitbybit functions.o(i.modbuscrc16test) refers to functions.o(.conststring) for .conststring kbus.o(i.KBusAddChildAddrByInfo) refers to kbus.o(.bss) for .bss kbus.o(i.KBusCheckPacket) refers to memcpya.o(.text) for __aeabi_memcpy kbus.o(i.KBusCheckPacket) refers to kbus.o(i.KBusBCC) for KBusBCC kbus.o(i.KBusCheckPacket) refers to kbus.o(.data) for .data kbus.o(i.KBusCheckPacket) refers to kbus.o(.bss) for .bss kbus.o(i.KBusCheckPacket) refers to globaldef.o(.bss) for Uart2Stat kbus.o(i.KBusCheckPacket) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusMakePacket) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kbus.o(i.KBusInit) refers to kbus.o(.bss) for .bss kbus.o(i.KBusMakeDefaultClildInfo) refers to kbus.o(.bss) for .bss kbus.o(i.KBusMakePacket) refers to memcpya.o(.text) for __aeabi_memcpy kbus.o(i.KBusMakePacket) refers to kbus.o(i.KBusBCC) for KBusBCC kbus.o(i.KBusMasterFunc) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick kbus.o(i.KBusMasterFunc) refers to functions.o(i.GetuS) for GetuS kbus.o(i.KBusMasterFunc) refers to kbus.o(i.KBusSearchChild) for KBusSearchChild kbus.o(i.KBusMasterFunc) refers to kbus.o(i.KBusMakePacket) for KBusMakePacket kbus.o(i.KBusMasterFunc) refers to functions.o(i.SendPacket) for SendPacket kbus.o(i.KBusMasterFunc) refers to kbus.o(.bss) for .bss kbus.o(i.KBusMasterFunc) refers to kbus.o(.data) for .data kbus.o(i.KBusMasterFunc) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusMasterFunc) refers to kbus.o(.bss) for .bss kbus.o(i.KBusMasterFunc) refers to globaldef.o(.bss) for Uart2Stat kbus.o(i.KBusMasterParsePacket) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kbus.o(i.KBusMasterParsePacket) refers to kbus.o(i.KBusMakePacket) for KBusMakePacket kbus.o(i.KBusMasterParsePacket) refers to functions.o(i.SendPacket) for SendPacket kbus.o(i.KBusMasterParsePacket) refers to uread4.o(.text) for __aeabi_uread4 kbus.o(i.KBusMasterParsePacket) refers to kbus.o(.data) for .data kbus.o(i.KBusMasterParsePacket) refers to kbus.o(.bss) for .bss kbus.o(i.KBusMasterParsePacket) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusParsePacket) refers to functions.o(i.GetuS) for GetuS kbus.o(i.KBusParsePacket) refers to kbus.o(i.KBusCheckPacket) for KBusCheckPacket kbus.o(i.KBusParsePacket) refers to kbus.o(i.KBusMasterParsePacket) for KBusMasterParsePacket @@ -175,19 +170,25 @@ kbus.o(i.KBusRepeaterFunc) refers to functions.o(i.ToggleRunLed) for ToggleRunLed kbus.o(i.KBusRepeaterFunc) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusRepeaterFunc) refers to kbus.o(.data) for .data kbus.o(i.KBusSearchChild) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick kbus.o(i.KBusSearchChild) refers to functions.o(i.GetuS) for GetuS kbus.o(i.KBusSearchChild) refers to kbus.o(i.KBusMakeDefaultClildInfo) for KBusMakeDefaultClildInfo kbus.o(i.KBusSearchChild) refers to kbus.o(i.KBusAddChildAddrByInfo) for KBusAddChildAddrByInfo kbus.o(i.KBusSearchChild) refers to kbus.o(.bss) for .bss kbus.o(i.KBusSetCallBackFunc) refers to kbus.o(.bss) for .bss kbus.o(i.KBusSlaveCheckPacket) refers to kbus.o(i.KBusBCC) for KBusBCC kbus.o(i.KBusSlaveCheckPacket) refers to kbus.o(.bss) for .bss kbus.o(i.KBusSlaveCheckPacket) refers to globaldef.o(.bss) for Uart2Stat kbus.o(i.KBusSlaveFunc) refers to functions.o(i.GetuS) for GetuS kbus.o(i.KBusSlaveFunc) refers to kbus.o(.data) for .data kbus.o(i.KBusSlaveFunc) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusSlaveParsePacket) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kbus.o(i.KBusSlaveParsePacket) refers to kbus.o(i.KBusMakePacket) for KBusMakePacket kbus.o(i.KBusSlaveParsePacket) refers to functions.o(i.SendPacket) for SendPacket kbus.o(i.KBusSlaveParsePacket) refers to globaldef.o(.bss) for Uart2Stat kbus.o(i.KBusSlaveParsePacket) refers to kbus.o(.bss) for .bss kbus.o(i.KBusSlaveParsePacket) refers to kbus.o(.data) for .data kbus.o(i.KBusSlaveParsePacket) refers to kmachine.o(.bss) for KMem kbus.o(i.KBusUpdateChildInfo) refers to kbus.o(.bss) for .bss klink.o(i.KLCheckPacket) refers to klink.o(i.KLBCC) for KLBCC klink.o(i.KLMakeRplyPacket) refers to memcpya.o(.text) for __aeabi_memcpy klink.o(i.KLMakeRplyPacket) refers to klink.o(i.KLBCC) for KLBCC @@ -197,30 +198,31 @@ klink.o(i.KLParsePacket) refers to klink.o(i.KLParseReqPacket) for KLParseReqPacket klink.o(i.KLParsePacket) refers to klink.o(.data) for .data klink.o(i.KLParsePacket) refers to klink.o(.bss) for .bss klink.o(i.KLParseReqPacket) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 klink.o(i.KLParseReqPacket) refers to klink.o(i.KLMakeRplyPacket) for KLMakeRplyPacket klink.o(i.KLParseReqPacket) refers to functions.o(i.SendPacket) for SendPacket klink.o(i.KLParseReqPacket) refers to kmachine.o(i.WriteFactoryData) for WriteFactoryData klink.o(i.KLParseReqPacket) refers to memcpya.o(.text) for __aeabi_memcpy klink.o(i.KLParseReqPacket) refers to klink.o(.data) for .data klink.o(i.KLParseReqPacket) refers to klink.o(.bss) for .bss klink.o(i.KLParseReqPacket) refers to kmachine.o(.bss) for KMem klink.o(i.KLParseReqPacket) refers to kmachine.o(.bss) for KMRunStat klink.o(i.KLParseReqPacket) refers to plcfunctions.o(.bss) for PLCMem klink.o(i.KLParseReqPacket) refers to kmachine.o(.constdata) for KMInfoBlock klink.o(i.KLParseReqPacket) refers to kbus.o(.bss) for KBusChnStats klink.o(i.KLParseReqPacket) refers to kmachine.o(.bss) for storedKMSysCfg klink.o(i.KLParseReqPacket) refers to klink.o(i.SetBitValue) for SetBitValue klink.o(i.KLParseReqPacket) refers to plcfunctions.o(i.StartPLC) for StartPLC klink.o(i.KLParseReqPacket) refers to plcfunctions.o(i.StopPLC) for StopPLC klink.o(i.KLParseReqPacket) refers to plcfunctions.o(i.StartPLC) for StartPLC klink.o(i.KLParseReqPacket) refers to kmachine.o(i.WriteProgram) for WriteProgram klink.o(i.KLParseReqPacket) refers to kmachine.o(i.SaveRunStat) for SaveRunStat klink.o(i.KLParseReqPacket) refers to klink.o(i.KLMakeRplyPacket) for KLMakeRplyPacket klink.o(i.KLParseReqPacket) refers to functions.o(i.SendPacket) for SendPacket klink.o(i.KLParseReqPacket) refers to kmachine.o(i.WriteSysCfgToFlash) for WriteSysCfgToFlash klink.o(i.KLParseReqPacket) refers to memseta.o(.text) for __aeabi_memclr4 klink.o(i.KLParseReqPacket) refers to kmachine.o(i.GetEventLogAddr) for GetEventLogAddr klink.o(i.KLParseReqPacket) refers to kmachine.o(i.ClearEventLog) for ClearEventLog klink.o(i.KLParseReqPacket) refers to kmachine.o(i.WriteNewApp) for WriteNewApp klink.o(i.KLParseReqPacket) refers to kmachine.o(i.WriteNewAppInfo) for WriteNewAppInfo modbusrtu.o(i.ModBusSlaveCheckPkg) refers to modbusrtu.o(i.crc16tablefast) for crc16tablefast modbusrtu.o(i.ModBusSlaveParsePkg) refers to modbusrtu.o(i.ModBusSlaveCheckPkg) for ModBusSlaveCheckPkg modbusrtu.o(i.ModBusSlaveParsePkg) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 modbusrtu.o(i.ModBusSlaveParsePkg) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 modbusrtu.o(i.ModBusSlaveParsePkg) refers to modbusrtu.o(i.GetBitValue) for GetBitValue modbusrtu.o(i.ModBusSlaveParsePkg) refers to modbusrtu.o(i.SetAddrBit) for SetAddrBit modbusrtu.o(i.ModBusSlaveParsePkg) refers to memcpya.o(.text) for __aeabi_memcpy @@ -253,7 +255,7 @@ plcfunctions.o(i.IsTimerOn) refers to kmachine.o(.bss) for KMem plcfunctions.o(i.PopOutVal) refers to kmachine.o(.bss) for KMem plcfunctions.o(i.ProcessPLCBinProg) refers to kmachine.o(i.SetCoilValue) for SetCoilValue plcfunctions.o(i.ProcessPLCBinProg) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 plcfunctions.o(i.ProcessPLCBinProg) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 plcfunctions.o(i.ProcessPLCBinProg) refers to plcfunctions.o(i.PopOutVal) for PopOutVal plcfunctions.o(i.ProcessPLCBinProg) refers to plcfunctions.o(i.PushInVal) for PushInVal plcfunctions.o(i.ProcessPLCBinProg) refers to kmachine.o(i.GetCoilValue) for GetCoilValue @@ -293,18 +295,16 @@ kmachine.o(i.CheckEventLog) refers to kmachine.o(.data) for .data kmachine.o(i.ClearEventLog) refers to kmachine.o(i.EraseFlashMem) for EraseFlashMem kmachine.o(i.ClearEventLog) refers to kmachine.o(.data) for .data kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock) for HAL_FLASH_Unlock kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase) for HAL_FLASHEx_Erase kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Program) for HAL_FLASH_Program kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock) for HAL_FLASH_Lock kmachine.o(i.EraseFlashMem) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock) for HAL_FLASH_Unlock kmachine.o(i.EraseFlashMem) refers to stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase) for HAL_FLASHEx_Erase kmachine.o(i.EraseFlashMem) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock) for HAL_FLASH_Lock kmachine.o(i.GetCoilValue) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_ll_flash.o(i.LL_Flash_Unlock) for LL_Flash_Unlock kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_ll_flash.o(i.LL_Flash_PageErase) for LL_Flash_PageErase kmachine.o(i.EraseAndWriteToFlashMem) refers to stm32f0xx_ll_flash.o(i.LL_FLASH_Program) for LL_FLASH_Program kmachine.o(i.EraseFlashMem) refers to stm32f0xx_ll_flash.o(i.LL_Flash_Unlock) for LL_Flash_Unlock kmachine.o(i.EraseFlashMem) refers to stm32f0xx_ll_flash.o(i.LL_Flash_PageErase) for LL_Flash_PageErase kmachine.o(i.GetCoilValue) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.GetCoilValue) refers to kmachine.o(i.GetBitValue) for GetBitValue kmachine.o(i.GetCoilValue) refers to kmachine.o(.bss) for .bss kmachine.o(i.GetEventLogAddr) refers to kmachine.o(.data) for .data kmachine.o(i.GetVarData) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.GetVarData) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.GetVarData) refers to kmachine.o(.bss) for .bss kmachine.o(i.KMachineInit) refers to kmachine.o(i.CheckEventLog) for CheckEventLog kmachine.o(i.KMachineInit) refers to kmachine.o(i.LoadRunStat) for LoadRunStat @@ -325,20 +325,22 @@ kmachine.o(i.SaveRunStat) refers to kmachine.o(i.WriteToFlashMemNoErase) for WriteToFlashMemNoErase kmachine.o(i.SaveRunStat) refers to kmachine.o(.data) for .data kmachine.o(i.SaveRunStat) refers to kmachine.o(.bss) for .bss kmachine.o(i.SetCoilValue) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.SetCoilValue) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.SetCoilValue) refers to kmachine.o(i.SetBitValue) for SetBitValue kmachine.o(i.SetCoilValue) refers to kmachine.o(.bss) for .bss kmachine.o(i.SetVarData) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.SetVarData) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 kmachine.o(i.SetVarData) refers to kmachine.o(.bss) for .bss kmachine.o(i.WriteFactoryData) refers to kmachine.o(i.EraseAndWriteToFlashMem) for EraseAndWriteToFlashMem kmachine.o(i.WriteNewApp) refers to kmachine.o(i.WriteToFlashMemNoErase) for WriteToFlashMemNoErase kmachine.o(i.WriteNewApp) refers to kmachine.o(i.EraseAndWriteToFlashMem) for EraseAndWriteToFlashMem kmachine.o(i.WriteNewAppInfo) refers to kmachine.o(i.EraseAndWriteToFlashMem) for EraseAndWriteToFlashMem kmachine.o(i.WriteProgram) refers to kmachine.o(i.WriteToFlashMemNoErase) for WriteToFlashMemNoErase kmachine.o(i.WriteProgram) refers to kmachine.o(i.EraseAndWriteToFlashMem) for EraseAndWriteToFlashMem kmachine.o(i.WriteProgram) refers to kmachine.o(.bss) for .bss kmachine.o(i.WriteSysCfgToFlash) refers to kmachine.o(i.WriteToFlashMemNoErase) for WriteToFlashMemNoErase kmachine.o(i.WriteSysCfgToFlash) refers to kmachine.o(i.EraseAndWriteToFlashMem) for EraseAndWriteToFlashMem kmachine.o(i.WriteToFlashMemNoErase) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock) for HAL_FLASH_Unlock kmachine.o(i.WriteToFlashMemNoErase) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Program) for HAL_FLASH_Program kmachine.o(i.WriteToFlashMemNoErase) refers to stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock) for HAL_FLASH_Lock kmachine.o(i.WriteToFlashMemNoErase) refers to stm32f0xx_ll_flash.o(i.LL_Flash_Unlock) for LL_Flash_Unlock kmachine.o(i.WriteToFlashMemNoErase) refers to stm32f0xx_ll_flash.o(i.LL_FLASH_Program) for LL_FLASH_Program kmachine.o(i.next_pow_of_2) refers to kmachine.o(i.is_pow_of_2) for is_pow_of_2 bsp.o(i.LL_DMA_SetChannelPriorityLevel) refers to bsp.o(.constdata) for .constdata bsp.o(i.LL_DMA_SetDataTransferDirection) refers to bsp.o(.constdata) for .constdata @@ -430,37 +432,17 @@ stm32f0xx_it.o(i.USART2_IRQHandler) refers to functions.o(i.Uart2RecvDone) for Uart2RecvDone stm32f0xx_it.o(i.USART2_IRQHandler) refers to functions.o(i.Uart2SendDone) for Uart2SendDone stm32f0xx_it.o(i.USART2_IRQHandler) refers to globaldef.o(.bss) for Uart2Stat fp0.o(i.FP0_Init) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay fp0.o(i.FP0_Init) refers to functions.o(i.GetuS) for GetuS fp0.o(i.FP0_Init) refers to fp0.o(.data) for .data fp0.o(i.FP0_Init) refers to kbus.o(.data) for nChilds fp0.o(i.FP0_Proc) refers to fp0.o(i.LL_GPIO_IsInputPinSet) for LL_GPIO_IsInputPinSet fp0.o(i.FP0_Proc) refers to functions.o(i.GetuS) for GetuS fp0.o(i.FP0_Proc) refers to fp0.o(.data) for .data fp0.o(i.FP0_Proc) refers to kmachine.o(.bss) for KMem fp0.o(i.ParseFP0Pkg) refers to functions.o(i.logData) for logData fp0.o(i.ParseFP0Pkg) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 fp0.o(i.ParseFP0Pkg) refers to fp0.o(i.CalFP0BCC) for CalFP0BCC fp0.o(i.ParseFP0Pkg) refers to fp0.o(i.SendFP0Pkg) for SendFP0Pkg fp0.o(i.ParseFP0Pkg) refers to fp0.o(.data) for .data fp0.o(i.ParseFP0Pkg) refers to kmachine.o(.bss) for KMem fp0.o(i.ParseFP0Pkg) refers to fp0.o(.bss) for .bss fp0.o(i.SendFP0Pkg) refers to memcpya.o(.text) for __aeabi_memcpy fp0.o(i.SendFP0Pkg) refers to functions.o(i.logData) for logData fp0.o(i.SendFP0Pkg) refers to kmachine.o(.bss) for KMem fp0.o(i.SendFP0Pkg) refers to fp0.o(.data) for .data fp0.o(i.SendFP0Pkg) refers to fp0.o(.bss) for .bss main.o(i.FPxCallBackFunc) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 main.o(i.FPxCallBackFunc) refers to fpx.o(.bss) for FPxMem main.o(i.FPxCallBackFunc) refers to kbus.o(.bss) for KBusMem main.o(i.HAL_SYSTICK_Callback) refers to functions.o(.data) for CurTickuS main.o(i.HAL_SYSTICK_Callback) refers to kbus.o(.data) for nSlaveTick main.o(i.HAL_SYSTICK_Callback) refers to main.o(.data) for .data main.o(i.HAL_SYSTICK_Callback) refers to kmachine.o(.bss) for KMem main.o(i.main) refers to stm32f0xx_ll_utils.o(i.LL_Init1msTick) for LL_Init1msTick main.o(i.main) refers to functions.o(i.SetRunLed) for SetRunLed main.o(i.main) refers to functions.o(i.SetErrLed) for SetErrLed main.o(i.main) refers to functions.o(i.GetuS) for GetuS main.o(i.main) refers to stm32f0xx_ll_utils.o(i.LL_mDelay) for LL_mDelay main.o(i.main) refers to functions.o(i.ToggleRunLed) for ToggleRunLed main.o(i.main) refers to functions.o(i.ToggleErrLed) for ToggleErrLed main.o(i.KBusCallBackFunc) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 main.o(i.KBusCallBackFunc) refers to fpx.o(.bss) for FPxMem main.o(i.KBusCallBackFunc) refers to kbus.o(.bss) for KBusMem main.o(i.KBusCallBackFunc) refers to kmachine.o(.bss) for KMem main.o(i.main) refers to functions.o(i.InitUartstat) for InitUartstat main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_Init) for HAL_Init main.o(i.main) refers to bsp.o(i.SystemClock_Config) for SystemClock_Config @@ -470,7 +452,11 @@ main.o(i.main) refers to kmachine.o(i.KMachineInit) for KMachineInit main.o(i.main) refers to kmachine.o(i.ReadSysCfgFromFlash) for ReadSysCfgFromFlash main.o(i.main) refers to functions.o(i.ReadJumperSW) for ReadJumperSW main.o(i.main) refers to fp0.o(i.FP0_Init) for FP0_Init main.o(i.main) refers to kbus.o(i.KBusInit) for KBusInit main.o(i.main) refers to kbus.o(i.KBusSetCallBackFunc) for KBusSetCallBackFunc main.o(i.main) refers to fpx.o(i.FPx_Init) for FPx_Init main.o(i.main) refers to fpx.o(i.FPxSetCallBackFunc) for FPxSetCallBackFunc main.o(i.main) refers to fpx.o(i.FPx_SetIOCount) for FPx_SetIOCount main.o(i.main) refers to bsp.o(i.MX_USART1_UART_Init) for MX_USART1_UART_Init main.o(i.main) refers to bsp.o(i.MX_USART2_UART_Init) for MX_USART2_UART_Init main.o(i.main) refers to bsp.o(i.MX_SPI1_Init) for MX_SPI1_Init @@ -478,13 +464,16 @@ main.o(i.main) refers to bsp.o(i.MX_TIM6_Init) for MX_TIM6_Init main.o(i.main) refers to functions.o(i.Uart2RecvDMA) for Uart2RecvDMA main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay main.o(i.main) refers to functions.o(i.SetRunLed) for SetRunLed main.o(i.main) refers to functions.o(i.SetErrLed) for SetErrLed main.o(i.main) refers to functions.o(i.SetOutStat) for SetOutStat main.o(i.main) refers to debug.o(i.ShowInitInfo) for ShowInitInfo main.o(i.main) refers to functions.o(i.GetuS) for GetuS main.o(i.main) refers to plcfunctions.o(i.InitPLC) for InitPLC main.o(i.main) refers to plcfunctions.o(i.StartPLC) for StartPLC main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick main.o(i.main) refers to plcfunctions.o(i.StopPLC) for StopPLC main.o(i.main) refers to fp0.o(i.FP0_Proc) for FP0_Proc main.o(i.main) refers to fpx.o(i.FPx_Proc) for FPx_Proc main.o(i.main) refers to plcfunctions.o(i.ProcessPLCBinProg) for ProcessPLCBinProg main.o(i.main) refers to kbus.o(i.KBusMasterFunc) for KBusMasterFunc main.o(i.main) refers to kbus.o(i.KBusSlaveFunc) for KBusSlaveFunc @@ -492,25 +481,52 @@ main.o(i.main) refers to debug.o(.emb_text) for add1 main.o(i.main) refers to modbusrtu.o(i.ModBusSlaveParsePkg) for ModBusSlaveParsePkg main.o(i.main) refers to klink.o(i.KLParsePacket) for KLParsePacket main.o(i.main) refers to main.o(.data) for .data main.o(i.main) refers to memcpya.o(.text) for __aeabi_memcpy4 main.o(i.main) refers to kmachine.o(.bss) for KMRunStat main.o(i.main) refers to main.o(.bss) for .bss main.o(i.main) refers to globaldef.o(.bss) for Uart1Stat main.o(i.main) refers to globaldef.o(.bss) for Uart2Stat main.o(i.main) refers to kbus.o(.bss) for KBusChnStats main.o(i.main) refers to globaldef.o(.data) for PendSvCount main.o(i.main) refers to functions.o(.data) for TickFreq main.o(i.main) refers to kmachine.o(.bss) for storedKMSysCfg main.o(i.main) refers to kbus.o(.data) for nStationID main.o(i.main) refers to kbus.o(.data) for nChilds main.o(i.main) refers to main.o(i.KBusCallBackFunc) for KBusCallBackFunc main.o(i.main) refers to main.o(i.FPxCallBackFunc) for FPxCallBackFunc main.o(i.main) refers to globaldef.o(.data) for Uart1Baud main.o(i.main) refers to globaldef.o(.bss) for Uart2RecvBuf1 main.o(i.main) refers to main.o(.data) for .data main.o(i.main) refers to plcfunctions.o(.data) for nSizeProg1 main.o(i.main) refers to fp0.o(.data) for nOutputBytes main.o(i.main) refers to fpx.o(.bss) for FPxStat main.o(i.main) refers to kbus.o(.bss) for KBusMem main.o(i.main) refers to kbus.o(.data) for nSlaveTick main.o(i.main) refers to globaldef.o(.data) for Uart1RecvBuf1DataLen main.o(i.main) refers to globaldef.o(.bss) for Uart1RecvBuf1 main.o(i.main) refers to plcfunctions.o(.bss) for PLCMem main.o(i.main) refers to memcpya.o(.text) for __aeabi_memcpy4 main.o(i.main) refers to main.o(.constdata) for .constdata fpx.o(i.FPxParsePkt) refers to functions.o(i.logData) for logData fpx.o(i.FPxParsePkt) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 fpx.o(i.FPxParsePkt) refers to fpx.o(i.FPxCalBCC) for FPxCalBCC fpx.o(i.FPxParsePkt) refers to fpx.o(i.FPxSendPkt) for FPxSendPkt fpx.o(i.FPxParsePkt) refers to kmachine.o(.bss) for KMem fpx.o(i.FPxParsePkt) refers to fpx.o(.bss) for .bss fpx.o(i.FPxParsePkt) refers to functions.o(.data) for bSPI1Recving fpx.o(i.FPxSendPkt) refers to memcpya.o(.text) for __aeabi_memcpy fpx.o(i.FPxSendPkt) refers to functions.o(i.logData) for logData fpx.o(i.FPxSendPkt) refers to kmachine.o(.bss) for KMem fpx.o(i.FPxSendPkt) refers to functions.o(.data) for bSPI1Sending fpx.o(i.FPxSendPkt) refers to functions.o(.bss) for SPI1SendBuf fpx.o(i.FPxSetCallBackFunc) refers to fpx.o(.bss) for .bss fpx.o(i.FPx_Init) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay fpx.o(i.FPx_Init) refers to functions.o(i.GetuS) for GetuS fpx.o(i.FPx_Init) refers to functions.o(.data) for bSPI1Sending fpx.o(i.FPx_Init) refers to kbus.o(.data) for nChilds fpx.o(i.FPx_Init) refers to fpx.o(.bss) for .bss fpx.o(i.FPx_Proc) refers to fpx.o(i.LL_GPIO_IsInputPinSet) for LL_GPIO_IsInputPinSet fpx.o(i.FPx_Proc) refers to functions.o(i.GetuS) for GetuS fpx.o(i.FPx_Proc) refers to fpx.o(.bss) for .bss fpx.o(i.FPx_Proc) refers to kmachine.o(.bss) for KMem fpx.o(i.FPx_Proc) refers to functions.o(.data) for nSPI1RecvPos fpx.o(i.FPx_SetIOCount) refers to fpx.o(.bss) for .bss system_stm32f0xx.o(i.SystemCoreClockUpdate) refers to uidiv.o(.text) for __aeabi_uidivmod system_stm32f0xx.o(i.SystemCoreClockUpdate) refers to system_stm32f0xx.o(.data) for .data system_stm32f0xx.o(i.SystemCoreClockUpdate) refers to system_stm32f0xx.o(.constdata) for .constdata @@ -746,7 +762,7 @@ stm32f0xx_hal_dma.o(i.HAL_DMA_PollForTransfer) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick stm32f0xx_hal_dma.o(i.HAL_DMA_Start) refers to stm32f0xx_hal_dma.o(i.DMA_SetConfig) for DMA_SetConfig stm32f0xx_hal_dma.o(i.HAL_DMA_Start_IT) refers to stm32f0xx_hal_dma.o(i.DMA_SetConfig) for DMA_SetConfig stm32f0xx_hal_dma.o(i.HAL_DMA_UnRegisterCallback) refers to kbus.o(i.__ARM_common_switch8) for __ARM_common_switch8 stm32f0xx_hal_dma.o(i.HAL_DMA_UnRegisterCallback) refers to modbusrtu.o(i.__ARM_common_switch8) for __ARM_common_switch8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) refers to stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) for NVIC_SetPriority stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) refers to stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) for NVIC_SetPriority stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) refers to main.o(i.HAL_SYSTICK_Callback) for HAL_SYSTICK_Callback @@ -815,6 +831,7 @@ stm32f0xx_ll_tim.o(i.LL_TIM_OC_Init) refers to stm32f0xx_ll_tim.o(i.OC1Config) for OC1Config stm32f0xx_ll_tim.o(i.LL_TIM_OC_Init) refers to stm32f0xx_ll_tim.o(i.OC2Config) for OC2Config stm32f0xx_ll_tim.o(i.LL_TIM_OC_Init) refers to stm32f0xx_ll_tim.o(i.OC3Config) for OC3Config stm32f0xx_ll_flash.o(i.LL_FLASH_Program) refers to llushr.o(.text) for __aeabi_llsr entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock @@ -1093,7 +1110,7 @@ Removing startup_stm32f030x8.o(HEAP), (512 bytes). Removing debug.o(.rev16_text), (4 bytes). Removing debug.o(.revsh_text), (4 bytes). Removing debug.o(i.ADCProcess), (164 bytes). Removing debug.o(i.ADCProcess), (240 bytes). Removing debug.o(i.FormatHex), (56 bytes). Removing debug.o(i.PowerDownProcess), (48 bytes). Removing debug.o(i.PowerRecoverProcess), (16 bytes). @@ -1122,7 +1139,9 @@ Removing functions.o(i.ReadConfig_4), (12 bytes). Removing functions.o(i.ReadConfig_5), (12 bytes). Removing functions.o(i.ToggleErr2Led), (20 bytes). Removing functions.o(i.ToggleErrLed), (20 bytes). Removing functions.o(i.ToggleOutStat), (20 bytes). Removing functions.o(i.ToggleRunLed), (20 bytes). Removing functions.o(i.TriggerPendSV), (16 bytes). Removing functions.o(i.Uart2SetDE), (10 bytes). Removing functions.o(i.Uart2TriggerSendDMA), (48 bytes). @@ -1142,9 +1161,12 @@ Removing globaldef.o(.data), (4 bytes). Removing kbus.o(.rev16_text), (4 bytes). Removing kbus.o(.revsh_text), (4 bytes). Removing kbus.o(i.KBusDataPoll), (4 bytes). Removing kbus.o(i.KBusLoopProcess), (4 bytes). Removing kbus.o(i.KBusRepeaterFunc), (48 bytes). Removing kbus.o(i.KBusStart), (4 bytes). Removing kbus.o(i.KBusUpdateChildInfo), (52 bytes). Removing kbus.o(.bss), (64 bytes). Removing kbus.o(.bss), (144 bytes). Removing kbus.o(.data), (1 bytes). Removing kbus.o(.data), (4 bytes). Removing kbus.o(.data), (4 bytes). @@ -1192,21 +1214,15 @@ Removing bsp.o(i.MX_SPI2_Init), (180 bytes). Removing stm32f0xx_it.o(.rev16_text), (4 bytes). Removing stm32f0xx_it.o(.revsh_text), (4 bytes). Removing fp0.o(.rev16_text), (4 bytes). Removing fp0.o(.revsh_text), (4 bytes). Removing fp0.o(i.CheckFP0Pkg), (4 bytes). Removing fp0.o(.bss), (32 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing fp0.o(.data), (1 bytes). Removing main.o(.rev16_text), (4 bytes). Removing main.o(.revsh_text), (4 bytes). Removing main.o(i.HexToInt), (40 bytes). Removing main.o(.constdata), (34 bytes). Removing fpx.o(.rev16_text), (4 bytes). Removing fpx.o(.revsh_text), (4 bytes). Removing fpx.o(i.FPxChecPkt), (4 bytes). Removing fpx.o(.data), (1 bytes). Removing fpx.o(.data), (1 bytes). Removing system_stm32f0xx.o(.rev16_text), (4 bytes). Removing system_stm32f0xx.o(.revsh_text), (4 bytes). Removing system_stm32f0xx.o(i.SystemCoreClockUpdate), (120 bytes). @@ -1420,20 +1436,30 @@ Removing stm32f0xx_hal_pwr_ex.o(.revsh_text), (4 bytes). Removing stm32f0xx_hal_flash.o(.rev16_text), (4 bytes). Removing stm32f0xx_hal_flash.o(.revsh_text), (4 bytes). Removing stm32f0xx_hal_flash.o(i.FLASH_Program_HalfWord), (32 bytes). Removing stm32f0xx_hal_flash.o(i.FLASH_SetErrorCode), (56 bytes). Removing stm32f0xx_hal_flash.o(i.FLASH_WaitForLastOperation), (80 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_EndOfOperationCallback), (2 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_GetError), (12 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_IRQHandler), (268 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock), (20 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_OB_Launch), (32 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_OB_Lock), (20 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_OB_Unlock), (36 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_OperationErrorCallback), (2 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_Program), (124 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_Program_IT), (96 bytes). Removing stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock), (36 bytes). Removing stm32f0xx_hal_flash.o(.bss), (32 bytes). Removing stm32f0xx_hal_flash_ex.o(.rev16_text), (4 bytes). Removing stm32f0xx_hal_flash_ex.o(.revsh_text), (4 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_MassErase), (36 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_OB_DisableWRP), (108 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_OB_EnableWRP), (108 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_OB_GetRDP), (32 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_OB_RDP_LevelConfig), (96 bytes). Removing stm32f0xx_hal_flash_ex.o(i.FLASH_PageErase), (36 bytes). Removing stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase), (160 bytes). Removing stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase_IT), (88 bytes). Removing stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_OBErase), (80 bytes). Removing stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_OBGetConfig), (36 bytes). @@ -1441,10 +1467,12 @@ Removing stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_OBProgram), (204 bytes). Removing stm32f0xx_ll_utils.o(.rev16_text), (4 bytes). Removing stm32f0xx_ll_utils.o(.revsh_text), (4 bytes). Removing stm32f0xx_ll_utils.o(i.LL_Init1msTick), (32 bytes). Removing stm32f0xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE), (104 bytes). Removing stm32f0xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI), (84 bytes). Removing stm32f0xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS), (44 bytes). Removing stm32f0xx_ll_utils.o(i.LL_SetSystemCoreClock), (12 bytes). Removing stm32f0xx_ll_utils.o(i.LL_mDelay), (32 bytes). Removing stm32f0xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem), (152 bytes). Removing stm32f0xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency), (24 bytes). Removing stm32f0xx_ll_utils.o(i.UTILS_PLL_IsBusy), (20 bytes). @@ -1469,6 +1497,8 @@ Removing stm32f0xx_ll_tim.o(i.OC2Config), (144 bytes). Removing stm32f0xx_ll_tim.o(i.OC3Config), (152 bytes). Removing stm32f0xx_ll_tim.o(i.OC4Config), (116 bytes). Removing stm32f0xx_ll_flash.o(.rev16_text), (4 bytes). Removing stm32f0xx_ll_flash.o(.revsh_text), (4 bytes). Removing dadd.o(.text), (356 bytes). Removing dmul.o(.text), (208 bytes). Removing ddiv.o(.text), (240 bytes). @@ -1478,7 +1508,7 @@ Removing functions.o(i.GetTick), (12 bytes). Removing depilogue.o(i.__ARM_clz), (46 bytes). 387 unused section(s) (total 22186 bytes) removed from the image. 400 unused section(s) (total 22869 bytes) removed from the image. ============================================================================== @@ -1510,37 +1540,37 @@ ../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c 0x00000000 Number 0 stm32f0xx_ll_spi.o ABSOLUTE ../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c 0x00000000 Number 0 stm32f0xx_ll_usart.o ABSOLUTE ../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c 0x00000000 Number 0 stm32f0xx_ll_utils.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 idiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 ldiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 idiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE ../clib/microlib/division.c 0x00000000 Number 0 ldiv.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE ../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE ../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE ../clib/microlib/stdio/fputc.c 0x00000000 Number 0 fputc.o ABSOLUTE ../clib/microlib/stdio/semi.s 0x00000000 Number 0 semi.o ABSOLUTE @@ -1548,8 +1578,8 @@ ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE ../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE ../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusesemip.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusesemip.o ABSOLUTE ../clib/microlib/unhosted.c 0x00000000 Number 0 uread4.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE @@ -1588,13 +1618,14 @@ ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_adc.c 0x00000000 Number 0 stm32f0xx_ll_adc.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_dma.c 0x00000000 Number 0 stm32f0xx_ll_dma.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_exti.c 0x00000000 Number 0 stm32f0xx_ll_exti.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_flash.c 0x00000000 Number 0 stm32f0xx_ll_flash.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_gpio.c 0x00000000 Number 0 stm32f0xx_ll_gpio.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_rcc.c 0x00000000 Number 0 stm32f0xx_ll_rcc.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_spi.c 0x00000000 Number 0 stm32f0xx_ll_spi.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_usart.c 0x00000000 Number 0 stm32f0xx_ll_usart.o ABSOLUTE ..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_utils.c 0x00000000 Number 0 stm32f0xx_ll_utils.o ABSOLUTE ..\Src\BoardType.c 0x00000000 Number 0 boardtype.o ABSOLUTE ..\Src\FP0.c 0x00000000 Number 0 fp0.o ABSOLUTE ..\Src\FPx.c 0x00000000 Number 0 fpx.o ABSOLUTE ..\Src\main.c 0x00000000 Number 0 main.o ABSOLUTE ..\\..\ComLib\\Src\\BSP.c 0x00000000 Number 0 bsp.o ABSOLUTE ..\\..\ComLib\\Src\\KBus.c 0x00000000 Number 0 kbus.o ABSOLUTE @@ -1607,7 +1638,8 @@ ..\\..\ComLib\\Src\\stm32f0xx_it.c 0x00000000 Number 0 stm32f0xx_it.o ABSOLUTE ..\\..\ComLib\\Src\\system_stm32f0xx.c 0x00000000 Number 0 system_stm32f0xx.o ABSOLUTE ..\\..\Drivers\\STM32F0xx_HAL_Driver\\Src\\stm32f0xx_ll_tim.c 0x00000000 Number 0 stm32f0xx_ll_tim.o ABSOLUTE ..\\Src\\FP0.c 0x00000000 Number 0 fp0.o ABSOLUTE ..\\..\\Drivers\\STM32F0xx_HAL_Driver\\Src\\stm32f0xx_ll_flash.c 0x00000000 Number 0 stm32f0xx_ll_flash.o ABSOLUTE ..\\Src\\FPx.c 0x00000000 Number 0 fpx.o ABSOLUTE ..\\Src\\main.c 0x00000000 Number 0 main.o ABSOLUTE cdrcmple.s 0x00000000 Number 0 cdrcmple.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE @@ -1639,275 +1671,269 @@ .text 0x0800128c Section 0 llshl.o(.text) i.AddEventLog 0x080012ac Section 0 kmachine.o(i.AddEventLog) i.AddSpace 0x08001338 Section 0 myqueue.o(i.AddSpace) i.CalFP0BCC 0x08001364 Section 0 fp0.o(i.CalFP0BCC) i.CheckEventLog 0x08001384 Section 0 kmachine.o(i.CheckEventLog) i.ClearEventLog 0x080013f0 Section 0 kmachine.o(i.ClearEventLog) i.DMA1_Channel2_3_IRQHandler 0x08001414 Section 0 stm32f0xx_it.o(i.DMA1_Channel2_3_IRQHandler) i.DMA1_Channel4_5_IRQHandler 0x080014b4 Section 0 stm32f0xx_it.o(i.DMA1_Channel4_5_IRQHandler) i.DelData 0x080014ec Section 0 myqueue.o(i.DelData) i.EraseAndWriteToFlashMem 0x08001518 Section 0 kmachine.o(i.EraseAndWriteToFlashMem) i.EraseFlashMem 0x0800155e Section 0 kmachine.o(i.EraseFlashMem) i.FLASH_MassErase 0x08001580 Section 0 stm32f0xx_hal_flash_ex.o(i.FLASH_MassErase) FLASH_MassErase 0x08001581 Thumb Code 26 stm32f0xx_hal_flash_ex.o(i.FLASH_MassErase) i.FLASH_PageErase 0x080015a4 Section 0 stm32f0xx_hal_flash_ex.o(i.FLASH_PageErase) i.FLASH_Program_HalfWord 0x080015c8 Section 0 stm32f0xx_hal_flash.o(i.FLASH_Program_HalfWord) FLASH_Program_HalfWord 0x080015c9 Thumb Code 22 stm32f0xx_hal_flash.o(i.FLASH_Program_HalfWord) i.FLASH_SetErrorCode 0x080015e8 Section 0 stm32f0xx_hal_flash.o(i.FLASH_SetErrorCode) FLASH_SetErrorCode 0x080015e9 Thumb Code 46 stm32f0xx_hal_flash.o(i.FLASH_SetErrorCode) i.FLASH_WaitForLastOperation 0x08001620 Section 0 stm32f0xx_hal_flash.o(i.FLASH_WaitForLastOperation) i.FP0_Init 0x08001670 Section 0 fp0.o(i.FP0_Init) i.FP0_Proc 0x080016c0 Section 0 fp0.o(i.FP0_Proc) i.GetBitValue 0x080017b8 Section 0 modbusrtu.o(i.GetBitValue) GetBitValue 0x080017b9 Thumb Code 20 modbusrtu.o(i.GetBitValue) i.GetBitValue 0x080017cc Section 0 kmachine.o(i.GetBitValue) GetBitValue 0x080017cd Thumb Code 20 kmachine.o(i.GetBitValue) i.GetCoilValue 0x080017e0 Section 0 kmachine.o(i.GetCoilValue) i.GetContinueData 0x08001880 Section 0 myqueue.o(i.GetContinueData) i.GetContinueEmptyRoom 0x080018a6 Section 0 myqueue.o(i.GetContinueEmptyRoom) i.GetEventLogAddr 0x080018cc Section 0 kmachine.o(i.GetEventLogAddr) i.GetVarData 0x080018f0 Section 0 kmachine.o(i.GetVarData) i.GetuS 0x080019c8 Section 0 functions.o(i.GetuS) i.HAL_Delay 0x080019f4 Section 0 stm32f0xx_hal.o(i.HAL_Delay) i.HAL_FLASHEx_Erase 0x08001a10 Section 0 stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase) i.HAL_FLASH_Lock 0x08001ab0 Section 0 stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock) i.HAL_FLASH_Program 0x08001ac4 Section 0 stm32f0xx_hal_flash.o(i.HAL_FLASH_Program) i.HAL_FLASH_Unlock 0x08001b40 Section 0 stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock) i.HAL_GetTick 0x08001b64 Section 0 stm32f0xx_hal.o(i.HAL_GetTick) i.HAL_IncTick 0x08001b70 Section 0 stm32f0xx_hal.o(i.HAL_IncTick) i.HAL_Init 0x08001b80 Section 0 stm32f0xx_hal.o(i.HAL_Init) i.HAL_InitTick 0x08001ba0 Section 0 stm32f0xx_hal.o(i.HAL_InitTick) i.HAL_MspInit 0x08001bc4 Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) i.HAL_NVIC_SetPriority 0x08001c08 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) i.HAL_RCCEx_PeriphCLKConfig 0x08001c10 Section 0 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) i.HAL_RCC_ClockConfig 0x08001cfc Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) i.HAL_RCC_GetHCLKFreq 0x08001e28 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) i.HAL_RCC_GetSysClockFreq 0x08001e34 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) i.HAL_RCC_OscConfig 0x08001eb4 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) i.HAL_SYSTICK_CLKSourceConfig 0x08002208 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) i.HAL_SYSTICK_Callback 0x08002220 Section 0 main.o(i.HAL_SYSTICK_Callback) i.HAL_SYSTICK_Config 0x08002294 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) i.HAL_SYSTICK_IRQHandler 0x080022c4 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) i.HardFault_Handler 0x080022cc Section 0 stm32f0xx_it.o(i.HardFault_Handler) i.InitPLC 0x080022d0 Section 0 plcfunctions.o(i.InitPLC) i.InitTimer 0x0800231c Section 0 plcfunctions.o(i.InitTimer) i.InitUartstat 0x0800235c Section 0 functions.o(i.InitUartstat) i.InituS 0x0800237c Section 0 functions.o(i.InituS) i.KBusBCC 0x080023d0 Section 0 kbus.o(i.KBusBCC) i.KBusCheckPacket 0x080023e8 Section 0 kbus.o(i.KBusCheckPacket) i.KBusMakePacket 0x080024ec Section 0 kbus.o(i.KBusMakePacket) i.KBusMasterFunc 0x0800256c Section 0 kbus.o(i.KBusMasterFunc) i.KBusMasterParsePacket 0x080026f4 Section 0 kbus.o(i.KBusMasterParsePacket) i.KBusParsePacket 0x0800283c Section 0 kbus.o(i.KBusParsePacket) i.KBusSlaveCheckPacket 0x080028bc Section 0 kbus.o(i.KBusSlaveCheckPacket) i.KBusSlaveFunc 0x0800294c Section 0 kbus.o(i.KBusSlaveFunc) i.KBusSlaveParsePacket 0x080029ac Section 0 kbus.o(i.KBusSlaveParsePacket) i.KLBCC 0x08002b28 Section 0 klink.o(i.KLBCC) i.KLCheckPacket 0x08002b3e Section 0 klink.o(i.KLCheckPacket) i.KLMakeRplyPacket 0x08002b70 Section 0 klink.o(i.KLMakeRplyPacket) i.KLParsePacket 0x08002bac Section 0 klink.o(i.KLParsePacket) i.KLParseReqPacket 0x08002bfc Section 0 klink.o(i.KLParseReqPacket) i.KMachineInit 0x080032cc Section 0 kmachine.o(i.KMachineInit) i.LL_AHB1_GRP1_EnableClock 0x0800333c Section 0 bsp.o(i.LL_AHB1_GRP1_EnableClock) LL_AHB1_GRP1_EnableClock 0x0800333d Thumb Code 18 bsp.o(i.LL_AHB1_GRP1_EnableClock) i.LL_APB1_GRP1_EnableClock 0x08003354 Section 0 bsp.o(i.LL_APB1_GRP1_EnableClock) LL_APB1_GRP1_EnableClock 0x08003355 Thumb Code 18 bsp.o(i.LL_APB1_GRP1_EnableClock) i.LL_APB1_GRP2_EnableClock 0x0800336c Section 0 bsp.o(i.LL_APB1_GRP2_EnableClock) LL_APB1_GRP2_EnableClock 0x0800336d Thumb Code 18 bsp.o(i.LL_APB1_GRP2_EnableClock) i.LL_DMA_ConfigAddresses 0x08003384 Section 0 functions.o(i.LL_DMA_ConfigAddresses) LL_DMA_ConfigAddresses 0x08003385 Thumb Code 38 functions.o(i.LL_DMA_ConfigAddresses) i.LL_DMA_DisableChannel 0x080033b0 Section 0 functions.o(i.LL_DMA_DisableChannel) LL_DMA_DisableChannel 0x080033b1 Thumb Code 18 functions.o(i.LL_DMA_DisableChannel) i.LL_DMA_EnableChannel 0x080033c8 Section 0 functions.o(i.LL_DMA_EnableChannel) LL_DMA_EnableChannel 0x080033c9 Thumb Code 18 functions.o(i.LL_DMA_EnableChannel) i.LL_DMA_EnableIT_TC 0x080033e0 Section 0 functions.o(i.LL_DMA_EnableIT_TC) LL_DMA_EnableIT_TC 0x080033e1 Thumb Code 18 functions.o(i.LL_DMA_EnableIT_TC) i.LL_DMA_SetChannelPriorityLevel 0x080033f8 Section 0 bsp.o(i.LL_DMA_SetChannelPriorityLevel) LL_DMA_SetChannelPriorityLevel 0x080033f9 Thumb Code 24 bsp.o(i.LL_DMA_SetChannelPriorityLevel) i.LL_DMA_SetDataLength 0x08003414 Section 0 functions.o(i.LL_DMA_SetDataLength) LL_DMA_SetDataLength 0x08003415 Thumb Code 22 functions.o(i.LL_DMA_SetDataLength) i.LL_DMA_SetDataTransferDirection 0x08003430 Section 0 bsp.o(i.LL_DMA_SetDataTransferDirection) LL_DMA_SetDataTransferDirection 0x08003431 Thumb Code 22 bsp.o(i.LL_DMA_SetDataTransferDirection) i.LL_DMA_SetMemoryIncMode 0x08003450 Section 0 bsp.o(i.LL_DMA_SetMemoryIncMode) LL_DMA_SetMemoryIncMode 0x08003451 Thumb Code 22 bsp.o(i.LL_DMA_SetMemoryIncMode) i.LL_DMA_SetMemorySize 0x0800346c Section 0 bsp.o(i.LL_DMA_SetMemorySize) LL_DMA_SetMemorySize 0x0800346d Thumb Code 24 bsp.o(i.LL_DMA_SetMemorySize) i.LL_DMA_SetMode 0x08003488 Section 0 bsp.o(i.LL_DMA_SetMode) LL_DMA_SetMode 0x08003489 Thumb Code 22 bsp.o(i.LL_DMA_SetMode) i.LL_DMA_SetPeriphIncMode 0x080034a4 Section 0 bsp.o(i.LL_DMA_SetPeriphIncMode) LL_DMA_SetPeriphIncMode 0x080034a5 Thumb Code 22 bsp.o(i.LL_DMA_SetPeriphIncMode) i.LL_DMA_SetPeriphSize 0x080034c0 Section 0 bsp.o(i.LL_DMA_SetPeriphSize) LL_DMA_SetPeriphSize 0x080034c1 Thumb Code 24 bsp.o(i.LL_DMA_SetPeriphSize) i.LL_GPIO_Init 0x080034dc Section 0 stm32f0xx_ll_gpio.o(i.LL_GPIO_Init) i.LL_GPIO_IsInputPinSet 0x08003580 Section 0 fp0.o(i.LL_GPIO_IsInputPinSet) LL_GPIO_IsInputPinSet 0x08003581 Thumb Code 14 fp0.o(i.LL_GPIO_IsInputPinSet) i.LL_Init1msTick 0x08003590 Section 0 stm32f0xx_ll_utils.o(i.LL_Init1msTick) i.LL_RCC_GetSystemClocksFreq 0x080035b0 Section 0 stm32f0xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) i.LL_RCC_GetUSARTClockFreq 0x080035c8 Section 0 stm32f0xx_ll_rcc.o(i.LL_RCC_GetUSARTClockFreq) i.LL_SPI_Init 0x0800361c Section 0 stm32f0xx_ll_spi.o(i.LL_SPI_Init) i.LL_TIM_Init 0x08003680 Section 0 stm32f0xx_ll_tim.o(i.LL_TIM_Init) i.LL_USART_ConfigAsyncMode 0x08003704 Section 0 bsp.o(i.LL_USART_ConfigAsyncMode) LL_USART_ConfigAsyncMode 0x08003705 Thumb Code 20 bsp.o(i.LL_USART_ConfigAsyncMode) i.LL_USART_Init 0x08003718 Section 0 stm32f0xx_ll_usart.o(i.LL_USART_Init) i.LL_mDelay 0x080037c4 Section 0 stm32f0xx_ll_utils.o(i.LL_mDelay) i.LoadDefaultSysCfg 0x080037e4 Section 0 kmachine.o(i.LoadDefaultSysCfg) i.LoadRunStat 0x080037f8 Section 0 kmachine.o(i.LoadRunStat) i.Locate 0x0800385c Section 0 debug.o(i.Locate) i.MX_DMA_Init 0x08003880 Section 0 bsp.o(i.MX_DMA_Init) i.MX_GPIO_Init 0x080038a8 Section 0 bsp.o(i.MX_GPIO_Init) i.MX_IWDG_Init 0x080039dc Section 0 bsp.o(i.MX_IWDG_Init) i.MX_SPI1_Init 0x08003a10 Section 0 bsp.o(i.MX_SPI1_Init) i.MX_TIM6_Init 0x08003adc Section 0 bsp.o(i.MX_TIM6_Init) i.MX_USART1_UART_Init 0x08003b30 Section 0 bsp.o(i.MX_USART1_UART_Init) i.MX_USART2_UART_Init 0x08003c54 Section 0 bsp.o(i.MX_USART2_UART_Init) i.ModBusSlaveCheckPkg 0x08003dac Section 0 modbusrtu.o(i.ModBusSlaveCheckPkg) i.ModBusSlaveParsePkg 0x08003de4 Section 0 modbusrtu.o(i.ModBusSlaveParsePkg) i.NMI_Handler 0x08004104 Section 0 stm32f0xx_it.o(i.NMI_Handler) i.NVIC_EnableIRQ 0x08004108 Section 0 bsp.o(i.NVIC_EnableIRQ) NVIC_EnableIRQ 0x08004109 Thumb Code 14 bsp.o(i.NVIC_EnableIRQ) i.NVIC_SetPriority 0x0800411c Section 0 bsp.o(i.NVIC_SetPriority) NVIC_SetPriority 0x0800411d Thumb Code 60 bsp.o(i.NVIC_SetPriority) i.NVIC_SetPriority 0x08004160 Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) NVIC_SetPriority 0x08004161 Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) i.ParseFP0Pkg 0x080041a4 Section 0 fp0.o(i.ParseFP0Pkg) i.PendSV_Handler 0x0800434c Section 0 stm32f0xx_it.o(i.PendSV_Handler) i.PendSvCallBack 0x0800436c Section 0 functions.o(i.PendSvCallBack) i.PopOutVal 0x080043c0 Section 0 plcfunctions.o(i.PopOutVal) i.ProcessPLCBinProg 0x080043e0 Section 0 plcfunctions.o(i.ProcessPLCBinProg) i.ProcessTimer 0x08004940 Section 0 plcfunctions.o(i.ProcessTimer) i.PushIn 0x08004a0c Section 0 myqueue.o(i.PushIn) i.PushInVal 0x08004a90 Section 0 plcfunctions.o(i.PushInVal) i.PutStr 0x08004ab4 Section 0 functions.o(i.PutStr) i.PutStr1 0x08004ad0 Section 0 functions.o(i.PutStr1) i.PutStr2 0x08004aec Section 0 functions.o(i.PutStr2) i.RCC_GetHCLKClockFreq 0x08004af8 Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) i.RCC_GetPCLK1ClockFreq 0x08004b14 Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) i.RCC_GetSystemClockFreq 0x08004b2c Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetSystemClockFreq) i.RCC_PLL_GetFreqDomain_SYS 0x08004b58 Section 0 stm32f0xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) i.ReadFlashMem 0x08004b98 Section 0 kmachine.o(i.ReadFlashMem) i.ReadJumperSW 0x08004bcc Section 0 functions.o(i.ReadJumperSW) i.ReadSysCfgFromFlash 0x08004bdc Section 0 kmachine.o(i.ReadSysCfgFromFlash) i.ResetBit 0x08004c3c Section 0 modbusrtu.o(i.ResetBit) ResetBit 0x08004c3d Thumb Code 16 modbusrtu.o(i.ResetBit) i.RunTimer 0x08004c4c Section 0 plcfunctions.o(i.RunTimer) i.SPI1_IRQHandler 0x08004c98 Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) i.SPI1_IRQ_CallBack 0x08004ca0 Section 0 functions.o(i.SPI1_IRQ_CallBack) i.SVC_Handler 0x08004d94 Section 0 stm32f0xx_it.o(i.SVC_Handler) i.SaveRunStat 0x08004d98 Section 0 kmachine.o(i.SaveRunStat) i.SendFP0Pkg 0x08004e18 Section 0 fp0.o(i.SendFP0Pkg) i.SendPacket 0x08004e84 Section 0 functions.o(i.SendPacket) i.SetAddrBit 0x08004ebc Section 0 modbusrtu.o(i.SetAddrBit) SetAddrBit 0x08004ebd Thumb Code 16 modbusrtu.o(i.SetAddrBit) i.SetBitValue 0x08004ecc Section 0 klink.o(i.SetBitValue) SetBitValue 0x08004ecd Thumb Code 24 klink.o(i.SetBitValue) i.SetBitValue 0x08004ee4 Section 0 modbusrtu.o(i.SetBitValue) SetBitValue 0x08004ee5 Thumb Code 18 modbusrtu.o(i.SetBitValue) i.SetBitValue 0x08004ef6 Section 0 kmachine.o(i.SetBitValue) SetBitValue 0x08004ef7 Thumb Code 24 kmachine.o(i.SetBitValue) i.SetCoilValue 0x08004f10 Section 0 kmachine.o(i.SetCoilValue) i.SetErr2Led 0x08004fa0 Section 0 functions.o(i.SetErr2Led) i.SetErrLed 0x08004fb8 Section 0 functions.o(i.SetErrLed) i.SetOutStat 0x08004fd0 Section 0 functions.o(i.SetOutStat) i.SetRunLed 0x08004fe8 Section 0 functions.o(i.SetRunLed) i.SetVarData 0x08005000 Section 0 kmachine.o(i.SetVarData) i.ShowInitInfo 0x080050c8 Section 0 debug.o(i.ShowInitInfo) i.StartPLC 0x0800524c Section 0 plcfunctions.o(i.StartPLC) i.StopPLC 0x080052bc Section 0 plcfunctions.o(i.StopPLC) i.StopTimer 0x080052fc Section 0 plcfunctions.o(i.StopTimer) i.SysTick_Handler 0x08005340 Section 0 stm32f0xx_it.o(i.SysTick_Handler) i.SystemClock_Config 0x0800534c Section 0 bsp.o(i.SystemClock_Config) i.SystemInit 0x080053f4 Section 0 system_stm32f0xx.o(i.SystemInit) i.TIM6_IRQHandler 0x08005450 Section 0 stm32f0xx_it.o(i.TIM6_IRQHandler) i.ToggleErrLed 0x08005468 Section 0 functions.o(i.ToggleErrLed) i.ToggleRunLed 0x0800547c Section 0 functions.o(i.ToggleRunLed) i.USART1_IRQHandler 0x08005490 Section 0 stm32f0xx_it.o(i.USART1_IRQHandler) i.USART2_IRQHandler 0x08005518 Section 0 stm32f0xx_it.o(i.USART2_IRQHandler) i.Uart1RecvDone 0x08005564 Section 0 functions.o(i.Uart1RecvDone) i.Uart1SendDMA 0x08005584 Section 0 functions.o(i.Uart1SendDMA) i.Uart1SendDone 0x080055e4 Section 0 functions.o(i.Uart1SendDone) i.Uart1TriggerSendDMA 0x080055f4 Section 0 functions.o(i.Uart1TriggerSendDMA) i.Uart2RecvDMA 0x08005624 Section 0 functions.o(i.Uart2RecvDMA) i.Uart2RecvDone 0x08005684 Section 0 functions.o(i.Uart2RecvDone) i.Uart2SendDMA 0x080056c4 Section 0 functions.o(i.Uart2SendDMA) i.Uart2SendDone 0x08005724 Section 0 functions.o(i.Uart2SendDone) i.WriteFactoryData 0x08005734 Section 0 kmachine.o(i.WriteFactoryData) i.WriteProgram 0x08005750 Section 0 kmachine.o(i.WriteProgram) i.WriteSysCfgToFlash 0x08005790 Section 0 kmachine.o(i.WriteSysCfgToFlash) i.WriteToFlashMemNoErase 0x080057fc Section 0 kmachine.o(i.WriteToFlashMemNoErase) i._Error_Handler 0x08005844 Section 0 main.o(i._Error_Handler) i.__0sprintf$8 0x08005848 Section 0 printf8.o(i.__0sprintf$8) i.__ARM_common_switch8 0x08005870 Section 0 kbus.o(i.__ARM_common_switch8) i.__scatterload_copy 0x0800588a Section 14 handlers.o(i.__scatterload_copy) i.__scatterload_null 0x08005898 Section 2 handlers.o(i.__scatterload_null) i.__scatterload_zeroinit 0x0800589a Section 14 handlers.o(i.__scatterload_zeroinit) i._printf_core 0x080058a8 Section 0 printf8.o(i._printf_core) _printf_core 0x080058a9 Thumb Code 1020 printf8.o(i._printf_core) i._printf_post_padding 0x08005cd0 Section 0 printf8.o(i._printf_post_padding) _printf_post_padding 0x08005cd1 Thumb Code 32 printf8.o(i._printf_post_padding) i._printf_pre_padding 0x08005cf0 Section 0 printf8.o(i._printf_pre_padding) _printf_pre_padding 0x08005cf1 Thumb Code 44 printf8.o(i._printf_pre_padding) i._sputc 0x08005d1c Section 0 printf8.o(i._sputc) _sputc 0x08005d1d Thumb Code 10 printf8.o(i._sputc) i.clearscreen 0x08005d28 Section 0 debug.o(i.clearscreen) i.crc16bitbybit 0x08005d40 Section 0 functions.o(i.crc16bitbybit) i.crc16table 0x08005d7c Section 0 functions.o(i.crc16table) i.crc16tablefast 0x08005dac Section 0 modbusrtu.o(i.crc16tablefast) i.crc_check 0x08005dec Section 0 functions.o(i.crc_check) i.initQueue 0x08005e18 Section 0 myqueue.o(i.initQueue) i.logData 0x08005e30 Section 0 functions.o(i.logData) i.main 0x08005e54 Section 0 main.o(i.main) .constdata 0x08006390 Section 16 debug.o(.constdata) .constdata 0x080063a0 Section 1030 functions.o(.constdata) CHANNEL_OFFSET_TAB 0x080063a0 Data 5 functions.o(.constdata) .constdata 0x080067a6 Section 32 modbusrtu.o(.constdata) .constdata 0x080067c6 Section 24 kmachine.o(.constdata) .constdata 0x080067e0 Section 144 kmachine.o(.constdata) .constdata 0x08006870 Section 5 bsp.o(.constdata) CHANNEL_OFFSET_TAB 0x08006870 Data 5 bsp.o(.constdata) .constdata 0x08006875 Section 5 stm32f0xx_it.o(.constdata) CHANNEL_OFFSET_TAB 0x08006875 Data 5 stm32f0xx_it.o(.constdata) .constdata 0x0800687c Section 24 main.o(.constdata) .constdata 0x08006894 Section 16 system_stm32f0xx.o(.constdata) .constdata 0x080068a4 Section 8 system_stm32f0xx.o(.constdata) .data 0x200000c0 Section 20 debug.o(.data) CurChannel 0x200000d0 Data 4 debug.o(.data) .data 0x200000d4 Section 4 functions.o(.data) .data 0x200000d8 Section 24 functions.o(.data) .data 0x200000f0 Section 4 globaldef.o(.data) .data 0x200000f4 Section 4 globaldef.o(.data) .data 0x200000f8 Section 4 globaldef.o(.data) i.CheckEventLog 0x08001364 Section 0 kmachine.o(i.CheckEventLog) i.ClearEventLog 0x080013d0 Section 0 kmachine.o(i.ClearEventLog) i.DMA1_Channel2_3_IRQHandler 0x080013f4 Section 0 stm32f0xx_it.o(i.DMA1_Channel2_3_IRQHandler) i.DMA1_Channel4_5_IRQHandler 0x08001494 Section 0 stm32f0xx_it.o(i.DMA1_Channel4_5_IRQHandler) i.DelData 0x080014cc Section 0 myqueue.o(i.DelData) i.EraseAndWriteToFlashMem 0x080014f8 Section 0 kmachine.o(i.EraseAndWriteToFlashMem) i.EraseFlashMem 0x08001558 Section 0 kmachine.o(i.EraseFlashMem) i.FPxCalBCC 0x0800157c Section 0 fpx.o(i.FPxCalBCC) i.FPxCallBackFunc 0x0800159c Section 0 main.o(i.FPxCallBackFunc) i.FPxParsePkt 0x080015e0 Section 0 fpx.o(i.FPxParsePkt) i.FPxSendPkt 0x080017a4 Section 0 fpx.o(i.FPxSendPkt) i.FPxSetCallBackFunc 0x0800181c Section 0 fpx.o(i.FPxSetCallBackFunc) i.FPx_Init 0x0800182c Section 0 fpx.o(i.FPx_Init) i.FPx_Proc 0x08001890 Section 0 fpx.o(i.FPx_Proc) i.FPx_SetIOCount 0x080019b8 Section 0 fpx.o(i.FPx_SetIOCount) i.GetBitValue 0x080019c8 Section 0 modbusrtu.o(i.GetBitValue) GetBitValue 0x080019c9 Thumb Code 20 modbusrtu.o(i.GetBitValue) i.GetBitValue 0x080019dc Section 0 kmachine.o(i.GetBitValue) GetBitValue 0x080019dd Thumb Code 20 kmachine.o(i.GetBitValue) i.GetCoilValue 0x080019f0 Section 0 kmachine.o(i.GetCoilValue) i.GetContinueData 0x08001a90 Section 0 myqueue.o(i.GetContinueData) i.GetContinueEmptyRoom 0x08001ab6 Section 0 myqueue.o(i.GetContinueEmptyRoom) i.GetEventLogAddr 0x08001adc Section 0 kmachine.o(i.GetEventLogAddr) i.GetVarData 0x08001b00 Section 0 kmachine.o(i.GetVarData) i.GetuS 0x08001bd8 Section 0 functions.o(i.GetuS) i.HAL_Delay 0x08001c04 Section 0 stm32f0xx_hal.o(i.HAL_Delay) i.HAL_GetTick 0x08001c20 Section 0 stm32f0xx_hal.o(i.HAL_GetTick) i.HAL_IncTick 0x08001c2c Section 0 stm32f0xx_hal.o(i.HAL_IncTick) i.HAL_Init 0x08001c3c Section 0 stm32f0xx_hal.o(i.HAL_Init) i.HAL_InitTick 0x08001c5c Section 0 stm32f0xx_hal.o(i.HAL_InitTick) i.HAL_MspInit 0x08001c80 Section 0 stm32f0xx_hal_msp.o(i.HAL_MspInit) i.HAL_NVIC_SetPriority 0x08001cc4 Section 0 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) i.HAL_RCCEx_PeriphCLKConfig 0x08001ccc Section 0 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) i.HAL_RCC_ClockConfig 0x08001db8 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) i.HAL_RCC_GetHCLKFreq 0x08001ee4 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) i.HAL_RCC_GetSysClockFreq 0x08001ef0 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) i.HAL_RCC_OscConfig 0x08001f70 Section 0 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) i.HAL_SYSTICK_CLKSourceConfig 0x080022c4 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) i.HAL_SYSTICK_Callback 0x080022dc Section 0 main.o(i.HAL_SYSTICK_Callback) i.HAL_SYSTICK_Config 0x08002350 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) i.HAL_SYSTICK_IRQHandler 0x08002380 Section 0 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) i.HardFault_Handler 0x08002388 Section 0 stm32f0xx_it.o(i.HardFault_Handler) i.InitPLC 0x0800238c Section 0 plcfunctions.o(i.InitPLC) i.InitTimer 0x080023d8 Section 0 plcfunctions.o(i.InitTimer) i.InitUartstat 0x08002418 Section 0 functions.o(i.InitUartstat) i.InituS 0x08002438 Section 0 functions.o(i.InituS) i.KBusAddChildAddrByInfo 0x0800248c Section 0 kbus.o(i.KBusAddChildAddrByInfo) i.KBusBCC 0x080024f8 Section 0 kbus.o(i.KBusBCC) i.KBusCallBackFunc 0x08002510 Section 0 main.o(i.KBusCallBackFunc) i.KBusCheckPacket 0x08002564 Section 0 kbus.o(i.KBusCheckPacket) i.KBusInit 0x08002668 Section 0 kbus.o(i.KBusInit) i.KBusMakeDefaultClildInfo 0x080026c0 Section 0 kbus.o(i.KBusMakeDefaultClildInfo) i.KBusMakePacket 0x080026e8 Section 0 kbus.o(i.KBusMakePacket) i.KBusMasterFunc 0x08002774 Section 0 kbus.o(i.KBusMasterFunc) i.KBusMasterParsePacket 0x08002938 Section 0 kbus.o(i.KBusMasterParsePacket) i.KBusParsePacket 0x08002a4c Section 0 kbus.o(i.KBusParsePacket) i.KBusSearchChild 0x08002acc Section 0 kbus.o(i.KBusSearchChild) i.KBusSetCallBackFunc 0x08002b58 Section 0 kbus.o(i.KBusSetCallBackFunc) i.KBusSlaveCheckPacket 0x08002b68 Section 0 kbus.o(i.KBusSlaveCheckPacket) i.KBusSlaveFunc 0x08002bf8 Section 0 kbus.o(i.KBusSlaveFunc) i.KBusSlaveParsePacket 0x08002c58 Section 0 kbus.o(i.KBusSlaveParsePacket) i.KLBCC 0x08002e38 Section 0 klink.o(i.KLBCC) i.KLCheckPacket 0x08002e4e Section 0 klink.o(i.KLCheckPacket) i.KLMakeRplyPacket 0x08002e80 Section 0 klink.o(i.KLMakeRplyPacket) i.KLParsePacket 0x08002ecc Section 0 klink.o(i.KLParsePacket) i.KLParseReqPacket 0x08002f1c Section 0 klink.o(i.KLParseReqPacket) i.KMachineInit 0x0800367c Section 0 kmachine.o(i.KMachineInit) i.LL_AHB1_GRP1_EnableClock 0x080036ec Section 0 bsp.o(i.LL_AHB1_GRP1_EnableClock) LL_AHB1_GRP1_EnableClock 0x080036ed Thumb Code 18 bsp.o(i.LL_AHB1_GRP1_EnableClock) i.LL_APB1_GRP1_EnableClock 0x08003704 Section 0 bsp.o(i.LL_APB1_GRP1_EnableClock) LL_APB1_GRP1_EnableClock 0x08003705 Thumb Code 18 bsp.o(i.LL_APB1_GRP1_EnableClock) i.LL_APB1_GRP2_EnableClock 0x0800371c Section 0 bsp.o(i.LL_APB1_GRP2_EnableClock) LL_APB1_GRP2_EnableClock 0x0800371d Thumb Code 18 bsp.o(i.LL_APB1_GRP2_EnableClock) i.LL_DMA_ConfigAddresses 0x08003734 Section 0 functions.o(i.LL_DMA_ConfigAddresses) LL_DMA_ConfigAddresses 0x08003735 Thumb Code 38 functions.o(i.LL_DMA_ConfigAddresses) i.LL_DMA_DisableChannel 0x08003760 Section 0 functions.o(i.LL_DMA_DisableChannel) LL_DMA_DisableChannel 0x08003761 Thumb Code 18 functions.o(i.LL_DMA_DisableChannel) i.LL_DMA_EnableChannel 0x08003778 Section 0 functions.o(i.LL_DMA_EnableChannel) LL_DMA_EnableChannel 0x08003779 Thumb Code 18 functions.o(i.LL_DMA_EnableChannel) i.LL_DMA_EnableIT_TC 0x08003790 Section 0 functions.o(i.LL_DMA_EnableIT_TC) LL_DMA_EnableIT_TC 0x08003791 Thumb Code 18 functions.o(i.LL_DMA_EnableIT_TC) i.LL_DMA_SetChannelPriorityLevel 0x080037a8 Section 0 bsp.o(i.LL_DMA_SetChannelPriorityLevel) LL_DMA_SetChannelPriorityLevel 0x080037a9 Thumb Code 24 bsp.o(i.LL_DMA_SetChannelPriorityLevel) i.LL_DMA_SetDataLength 0x080037c4 Section 0 functions.o(i.LL_DMA_SetDataLength) LL_DMA_SetDataLength 0x080037c5 Thumb Code 22 functions.o(i.LL_DMA_SetDataLength) i.LL_DMA_SetDataTransferDirection 0x080037e0 Section 0 bsp.o(i.LL_DMA_SetDataTransferDirection) LL_DMA_SetDataTransferDirection 0x080037e1 Thumb Code 22 bsp.o(i.LL_DMA_SetDataTransferDirection) i.LL_DMA_SetMemoryIncMode 0x08003800 Section 0 bsp.o(i.LL_DMA_SetMemoryIncMode) LL_DMA_SetMemoryIncMode 0x08003801 Thumb Code 22 bsp.o(i.LL_DMA_SetMemoryIncMode) i.LL_DMA_SetMemorySize 0x0800381c Section 0 bsp.o(i.LL_DMA_SetMemorySize) LL_DMA_SetMemorySize 0x0800381d Thumb Code 24 bsp.o(i.LL_DMA_SetMemorySize) i.LL_DMA_SetMode 0x08003838 Section 0 bsp.o(i.LL_DMA_SetMode) LL_DMA_SetMode 0x08003839 Thumb Code 22 bsp.o(i.LL_DMA_SetMode) i.LL_DMA_SetPeriphIncMode 0x08003854 Section 0 bsp.o(i.LL_DMA_SetPeriphIncMode) LL_DMA_SetPeriphIncMode 0x08003855 Thumb Code 22 bsp.o(i.LL_DMA_SetPeriphIncMode) i.LL_DMA_SetPeriphSize 0x08003870 Section 0 bsp.o(i.LL_DMA_SetPeriphSize) LL_DMA_SetPeriphSize 0x08003871 Thumb Code 24 bsp.o(i.LL_DMA_SetPeriphSize) i.LL_FLASH_Program 0x0800388c Section 0 stm32f0xx_ll_flash.o(i.LL_FLASH_Program) i.LL_Flash_PageErase 0x080038f4 Section 0 stm32f0xx_ll_flash.o(i.LL_Flash_PageErase) i.LL_Flash_Unlock 0x08003944 Section 0 stm32f0xx_ll_flash.o(i.LL_Flash_Unlock) i.LL_GPIO_Init 0x08003970 Section 0 stm32f0xx_ll_gpio.o(i.LL_GPIO_Init) i.LL_GPIO_IsInputPinSet 0x08003a14 Section 0 fpx.o(i.LL_GPIO_IsInputPinSet) LL_GPIO_IsInputPinSet 0x08003a15 Thumb Code 14 fpx.o(i.LL_GPIO_IsInputPinSet) i.LL_RCC_GetSystemClocksFreq 0x08003a22 Section 0 stm32f0xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) i.LL_RCC_GetUSARTClockFreq 0x08003a3c Section 0 stm32f0xx_ll_rcc.o(i.LL_RCC_GetUSARTClockFreq) i.LL_SPI_Init 0x08003a90 Section 0 stm32f0xx_ll_spi.o(i.LL_SPI_Init) i.LL_TIM_Init 0x08003af4 Section 0 stm32f0xx_ll_tim.o(i.LL_TIM_Init) i.LL_USART_ConfigAsyncMode 0x08003b78 Section 0 bsp.o(i.LL_USART_ConfigAsyncMode) LL_USART_ConfigAsyncMode 0x08003b79 Thumb Code 20 bsp.o(i.LL_USART_ConfigAsyncMode) i.LL_USART_Init 0x08003b8c Section 0 stm32f0xx_ll_usart.o(i.LL_USART_Init) i.LoadDefaultSysCfg 0x08003c38 Section 0 kmachine.o(i.LoadDefaultSysCfg) i.LoadRunStat 0x08003c4c Section 0 kmachine.o(i.LoadRunStat) i.Locate 0x08003cb0 Section 0 debug.o(i.Locate) i.MX_DMA_Init 0x08003cd4 Section 0 bsp.o(i.MX_DMA_Init) i.MX_GPIO_Init 0x08003cfc Section 0 bsp.o(i.MX_GPIO_Init) i.MX_IWDG_Init 0x08003e30 Section 0 bsp.o(i.MX_IWDG_Init) i.MX_SPI1_Init 0x08003e64 Section 0 bsp.o(i.MX_SPI1_Init) i.MX_TIM6_Init 0x08003f30 Section 0 bsp.o(i.MX_TIM6_Init) i.MX_USART1_UART_Init 0x08003f84 Section 0 bsp.o(i.MX_USART1_UART_Init) i.MX_USART2_UART_Init 0x080040a8 Section 0 bsp.o(i.MX_USART2_UART_Init) i.ModBusSlaveCheckPkg 0x08004200 Section 0 modbusrtu.o(i.ModBusSlaveCheckPkg) i.ModBusSlaveParsePkg 0x08004238 Section 0 modbusrtu.o(i.ModBusSlaveParsePkg) i.NMI_Handler 0x08004558 Section 0 stm32f0xx_it.o(i.NMI_Handler) i.NVIC_EnableIRQ 0x0800455c Section 0 bsp.o(i.NVIC_EnableIRQ) NVIC_EnableIRQ 0x0800455d Thumb Code 14 bsp.o(i.NVIC_EnableIRQ) i.NVIC_SetPriority 0x08004570 Section 0 bsp.o(i.NVIC_SetPriority) NVIC_SetPriority 0x08004571 Thumb Code 60 bsp.o(i.NVIC_SetPriority) i.NVIC_SetPriority 0x080045b4 Section 0 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) NVIC_SetPriority 0x080045b5 Thumb Code 60 stm32f0xx_hal_cortex.o(i.NVIC_SetPriority) i.PendSV_Handler 0x080045f8 Section 0 stm32f0xx_it.o(i.PendSV_Handler) i.PendSvCallBack 0x08004618 Section 0 functions.o(i.PendSvCallBack) i.PopOutVal 0x08004664 Section 0 plcfunctions.o(i.PopOutVal) i.ProcessPLCBinProg 0x08004684 Section 0 plcfunctions.o(i.ProcessPLCBinProg) i.ProcessTimer 0x08004be4 Section 0 plcfunctions.o(i.ProcessTimer) i.PushIn 0x08004cb0 Section 0 myqueue.o(i.PushIn) i.PushInVal 0x08004d34 Section 0 plcfunctions.o(i.PushInVal) i.PutStr 0x08004d58 Section 0 functions.o(i.PutStr) i.PutStr1 0x08004d74 Section 0 functions.o(i.PutStr1) i.PutStr2 0x08004d90 Section 0 functions.o(i.PutStr2) i.RCC_GetHCLKClockFreq 0x08004d9c Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) i.RCC_GetPCLK1ClockFreq 0x08004db8 Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) i.RCC_GetSystemClockFreq 0x08004dd0 Section 0 stm32f0xx_ll_rcc.o(i.RCC_GetSystemClockFreq) i.RCC_PLL_GetFreqDomain_SYS 0x08004dfc Section 0 stm32f0xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) i.ReadFlashMem 0x08004e3c Section 0 kmachine.o(i.ReadFlashMem) i.ReadJumperSW 0x08004e70 Section 0 functions.o(i.ReadJumperSW) i.ReadSysCfgFromFlash 0x08004e80 Section 0 kmachine.o(i.ReadSysCfgFromFlash) i.ResetBit 0x08004ee0 Section 0 modbusrtu.o(i.ResetBit) ResetBit 0x08004ee1 Thumb Code 16 modbusrtu.o(i.ResetBit) i.RunTimer 0x08004ef0 Section 0 plcfunctions.o(i.RunTimer) i.SPI1_IRQHandler 0x08004f3c Section 0 stm32f0xx_it.o(i.SPI1_IRQHandler) i.SPI1_IRQ_CallBack 0x08004f44 Section 0 functions.o(i.SPI1_IRQ_CallBack) i.SVC_Handler 0x08005004 Section 0 stm32f0xx_it.o(i.SVC_Handler) i.SaveRunStat 0x08005008 Section 0 kmachine.o(i.SaveRunStat) i.SendPacket 0x08005088 Section 0 functions.o(i.SendPacket) i.SetAddrBit 0x080050c0 Section 0 modbusrtu.o(i.SetAddrBit) SetAddrBit 0x080050c1 Thumb Code 16 modbusrtu.o(i.SetAddrBit) i.SetBitValue 0x080050d0 Section 0 klink.o(i.SetBitValue) SetBitValue 0x080050d1 Thumb Code 24 klink.o(i.SetBitValue) i.SetBitValue 0x080050e8 Section 0 modbusrtu.o(i.SetBitValue) SetBitValue 0x080050e9 Thumb Code 18 modbusrtu.o(i.SetBitValue) i.SetBitValue 0x080050fa Section 0 kmachine.o(i.SetBitValue) SetBitValue 0x080050fb Thumb Code 24 kmachine.o(i.SetBitValue) i.SetCoilValue 0x08005114 Section 0 kmachine.o(i.SetCoilValue) i.SetErr2Led 0x080051a4 Section 0 functions.o(i.SetErr2Led) i.SetErrLed 0x080051bc Section 0 functions.o(i.SetErrLed) i.SetOutStat 0x080051d4 Section 0 functions.o(i.SetOutStat) i.SetRunLed 0x080051ec Section 0 functions.o(i.SetRunLed) i.SetVarData 0x08005204 Section 0 kmachine.o(i.SetVarData) i.ShowInitInfo 0x080052cc Section 0 debug.o(i.ShowInitInfo) i.StartPLC 0x08005450 Section 0 plcfunctions.o(i.StartPLC) i.StopPLC 0x080054c0 Section 0 plcfunctions.o(i.StopPLC) i.StopTimer 0x08005500 Section 0 plcfunctions.o(i.StopTimer) i.SysTick_Handler 0x08005544 Section 0 stm32f0xx_it.o(i.SysTick_Handler) i.SystemClock_Config 0x08005550 Section 0 bsp.o(i.SystemClock_Config) i.SystemInit 0x080055f8 Section 0 system_stm32f0xx.o(i.SystemInit) i.TIM6_IRQHandler 0x08005654 Section 0 stm32f0xx_it.o(i.TIM6_IRQHandler) i.USART1_IRQHandler 0x0800566c Section 0 stm32f0xx_it.o(i.USART1_IRQHandler) i.USART2_IRQHandler 0x080056f4 Section 0 stm32f0xx_it.o(i.USART2_IRQHandler) i.Uart1RecvDone 0x08005740 Section 0 functions.o(i.Uart1RecvDone) i.Uart1SendDMA 0x08005760 Section 0 functions.o(i.Uart1SendDMA) i.Uart1SendDone 0x080057c0 Section 0 functions.o(i.Uart1SendDone) i.Uart1TriggerSendDMA 0x080057d0 Section 0 functions.o(i.Uart1TriggerSendDMA) i.Uart2RecvDMA 0x08005800 Section 0 functions.o(i.Uart2RecvDMA) i.Uart2RecvDone 0x08005860 Section 0 functions.o(i.Uart2RecvDone) i.Uart2SendDMA 0x080058a0 Section 0 functions.o(i.Uart2SendDMA) i.Uart2SendDone 0x08005900 Section 0 functions.o(i.Uart2SendDone) i.WriteFactoryData 0x08005910 Section 0 kmachine.o(i.WriteFactoryData) i.WriteNewApp 0x0800592c Section 0 kmachine.o(i.WriteNewApp) i.WriteNewAppInfo 0x0800594c Section 0 kmachine.o(i.WriteNewAppInfo) i.WriteProgram 0x08005960 Section 0 kmachine.o(i.WriteProgram) i.WriteSysCfgToFlash 0x080059a0 Section 0 kmachine.o(i.WriteSysCfgToFlash) i.WriteToFlashMemNoErase 0x08005a0c Section 0 kmachine.o(i.WriteToFlashMemNoErase) i._Error_Handler 0x08005a5c Section 0 main.o(i._Error_Handler) i.__0sprintf$8 0x08005a60 Section 0 printf8.o(i.__0sprintf$8) i.__ARM_common_switch8 0x08005a88 Section 0 modbusrtu.o(i.__ARM_common_switch8) i.__scatterload_copy 0x08005aa2 Section 14 handlers.o(i.__scatterload_copy) i.__scatterload_null 0x08005ab0 Section 2 handlers.o(i.__scatterload_null) i.__scatterload_zeroinit 0x08005ab2 Section 14 handlers.o(i.__scatterload_zeroinit) i._printf_core 0x08005ac0 Section 0 printf8.o(i._printf_core) _printf_core 0x08005ac1 Thumb Code 1020 printf8.o(i._printf_core) i._printf_post_padding 0x08005ee8 Section 0 printf8.o(i._printf_post_padding) _printf_post_padding 0x08005ee9 Thumb Code 32 printf8.o(i._printf_post_padding) i._printf_pre_padding 0x08005f08 Section 0 printf8.o(i._printf_pre_padding) _printf_pre_padding 0x08005f09 Thumb Code 44 printf8.o(i._printf_pre_padding) i._sputc 0x08005f34 Section 0 printf8.o(i._sputc) _sputc 0x08005f35 Thumb Code 10 printf8.o(i._sputc) i.clearscreen 0x08005f40 Section 0 debug.o(i.clearscreen) i.crc16bitbybit 0x08005f58 Section 0 functions.o(i.crc16bitbybit) i.crc16table 0x08005f94 Section 0 functions.o(i.crc16table) i.crc16tablefast 0x08005fc4 Section 0 modbusrtu.o(i.crc16tablefast) i.crc_check 0x08006004 Section 0 functions.o(i.crc_check) i.initQueue 0x08006030 Section 0 myqueue.o(i.initQueue) i.logData 0x08006048 Section 0 functions.o(i.logData) i.main 0x0800606c Section 0 main.o(i.main) .constdata 0x08006548 Section 16 debug.o(.constdata) .constdata 0x08006558 Section 1030 functions.o(.constdata) CHANNEL_OFFSET_TAB 0x08006558 Data 5 functions.o(.constdata) .constdata 0x0800695e Section 32 modbusrtu.o(.constdata) .constdata 0x0800697e Section 24 kmachine.o(.constdata) .constdata 0x08006998 Section 144 kmachine.o(.constdata) .constdata 0x08006a28 Section 5 bsp.o(.constdata) CHANNEL_OFFSET_TAB 0x08006a28 Data 5 bsp.o(.constdata) .constdata 0x08006a2d Section 5 stm32f0xx_it.o(.constdata) CHANNEL_OFFSET_TAB 0x08006a2d Data 5 stm32f0xx_it.o(.constdata) .constdata 0x08006a34 Section 24 main.o(.constdata) .constdata 0x08006a4c Section 16 system_stm32f0xx.o(.constdata) .constdata 0x08006a5c Section 8 system_stm32f0xx.o(.constdata) .data 0x200000c0 Section 24 debug.o(.data) CurChannel 0x200000d4 Data 4 debug.o(.data) .data 0x200000d8 Section 4 functions.o(.data) .data 0x200000dc Section 32 functions.o(.data) .data 0x200000fc Section 4 globaldef.o(.data) .data 0x20000100 Section 4 globaldef.o(.data) .data 0x20000104 Section 4 globaldef.o(.data) .data 0x20000108 Section 4 globaldef.o(.data) .data 0x2000010c Section 56 kbus.o(.data) .data 0x20000144 Section 12 klink.o(.data) .data 0x20000150 Section 1 modbusrtu.o(.data) .data 0x20000154 Section 4 plcfunctions.o(.data) .data 0x20000158 Section 36 kmachine.o(.data) .data 0x2000017c Section 24 fp0.o(.data) .data 0x20000194 Section 1 fp0.o(.data) .data 0x20000195 Section 1 fp0.o(.data) .data 0x20000196 Section 1 fp0.o(.data) .data 0x20000198 Section 40 main.o(.data) Count 0x200001a4 Data 4 main.o(.data) .data 0x200001c0 Section 4 system_stm32f0xx.o(.data) .data 0x200001c4 Section 4 stm32f0xx_hal.o(.data) .bss 0x200001c8 Section 256 debug.o(.bss) .bss 0x200002c8 Section 148 globaldef.o(.bss) .bss 0x2000035c Section 148 globaldef.o(.bss) .bss 0x200003f0 Section 128 globaldef.o(.bss) .bss 0x20000470 Section 128 globaldef.o(.bss) .bss 0x200004f0 Section 1184 kbus.o(.bss) .bss 0x20000990 Section 272 klink.o(.bss) .bss 0x20000aa0 Section 128 modbusrtu.o(.bss) .bss 0x20000b20 Section 520 plcfunctions.o(.bss) .bss 0x20000d28 Section 128 kmachine.o(.bss) .bss 0x20000da8 Section 2004 kmachine.o(.bss) .bss 0x2000157c Section 64 fp0.o(.bss) .bss 0x200015bc Section 32 fp0.o(.bss) .bss 0x200015dc Section 516 main.o(.bss) .bss 0x200017e0 Section 32 stm32f0xx_hal_flash.o(.bss) STACK 0x20001800 Section 1024 startup_stm32f030x8.o(STACK) .data 0x2000010c Section 4 globaldef.o(.data) .data 0x20000110 Section 4 globaldef.o(.data) .data 0x20000114 Section 4 globaldef.o(.data) .data 0x20000118 Section 52 kbus.o(.data) .data 0x2000014c Section 4 kbus.o(.data) .data 0x20000150 Section 12 klink.o(.data) .data 0x2000015c Section 1 modbusrtu.o(.data) .data 0x20000160 Section 4 plcfunctions.o(.data) .data 0x20000164 Section 36 kmachine.o(.data) .data 0x20000188 Section 40 main.o(.data) Count 0x20000194 Data 4 main.o(.data) .data 0x200001b0 Section 4 system_stm32f0xx.o(.data) .data 0x200001b4 Section 4 stm32f0xx_hal.o(.data) .bss 0x200001b8 Section 288 debug.o(.bss) .bss 0x200002d8 Section 128 functions.o(.bss) .bss 0x20000358 Section 148 globaldef.o(.bss) .bss 0x200003ec Section 148 globaldef.o(.bss) .bss 0x20000480 Section 128 globaldef.o(.bss) .bss 0x20000500 Section 128 globaldef.o(.bss) .bss 0x20000580 Section 1880 kbus.o(.bss) .bss 0x20000cd8 Section 272 klink.o(.bss) .bss 0x20000de8 Section 128 modbusrtu.o(.bss) .bss 0x20000e68 Section 520 plcfunctions.o(.bss) .bss 0x20001070 Section 128 kmachine.o(.bss) .bss 0x200010f0 Section 2004 kmachine.o(.bss) .bss 0x200018c4 Section 516 main.o(.bss) .bss 0x20001ac8 Section 156 fpx.o(.bss) STACK 0x20001b68 Section 1024 startup_stm32f030x8.o(STACK) Global Symbols @@ -2021,277 +2047,277 @@ _ll_shift_l 0x0800128d Thumb Code 0 llshl.o(.text) AddEventLog 0x080012ad Thumb Code 122 kmachine.o(i.AddEventLog) AddSpace 0x08001339 Thumb Code 44 myqueue.o(i.AddSpace) CalFP0BCC 0x08001365 Thumb Code 30 fp0.o(i.CalFP0BCC) CheckEventLog 0x08001385 Thumb Code 90 kmachine.o(i.CheckEventLog) ClearEventLog 0x080013f1 Thumb Code 28 kmachine.o(i.ClearEventLog) DMA1_Channel2_3_IRQHandler 0x08001415 Thumb Code 144 stm32f0xx_it.o(i.DMA1_Channel2_3_IRQHandler) DMA1_Channel4_5_IRQHandler 0x080014b5 Thumb Code 46 stm32f0xx_it.o(i.DMA1_Channel4_5_IRQHandler) DelData 0x080014ed Thumb Code 44 myqueue.o(i.DelData) EraseAndWriteToFlashMem 0x08001519 Thumb Code 70 kmachine.o(i.EraseAndWriteToFlashMem) EraseFlashMem 0x0800155f Thumb Code 32 kmachine.o(i.EraseFlashMem) FLASH_PageErase 0x080015a5 Thumb Code 28 stm32f0xx_hal_flash_ex.o(i.FLASH_PageErase) FLASH_WaitForLastOperation 0x08001621 Thumb Code 76 stm32f0xx_hal_flash.o(i.FLASH_WaitForLastOperation) FP0_Init 0x08001671 Thumb Code 68 fp0.o(i.FP0_Init) FP0_Proc 0x080016c1 Thumb Code 218 fp0.o(i.FP0_Proc) GetCoilValue 0x080017e1 Thumb Code 156 kmachine.o(i.GetCoilValue) GetContinueData 0x08001881 Thumb Code 38 myqueue.o(i.GetContinueData) GetContinueEmptyRoom 0x080018a7 Thumb Code 38 myqueue.o(i.GetContinueEmptyRoom) GetEventLogAddr 0x080018cd Thumb Code 28 kmachine.o(i.GetEventLogAddr) GetVarData 0x080018f1 Thumb Code 208 kmachine.o(i.GetVarData) GetuS 0x080019c9 Thumb Code 30 functions.o(i.GetuS) HAL_Delay 0x080019f5 Thumb Code 28 stm32f0xx_hal.o(i.HAL_Delay) HAL_FLASHEx_Erase 0x08001a11 Thumb Code 148 stm32f0xx_hal_flash_ex.o(i.HAL_FLASHEx_Erase) HAL_FLASH_Lock 0x08001ab1 Thumb Code 14 stm32f0xx_hal_flash.o(i.HAL_FLASH_Lock) HAL_FLASH_Program 0x08001ac5 Thumb Code 112 stm32f0xx_hal_flash.o(i.HAL_FLASH_Program) HAL_FLASH_Unlock 0x08001b41 Thumb Code 24 stm32f0xx_hal_flash.o(i.HAL_FLASH_Unlock) HAL_GetTick 0x08001b65 Thumb Code 6 stm32f0xx_hal.o(i.HAL_GetTick) HAL_IncTick 0x08001b71 Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) HAL_Init 0x08001b81 Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) HAL_InitTick 0x08001ba1 Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) HAL_MspInit 0x08001bc5 Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) HAL_NVIC_SetPriority 0x08001c09 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) HAL_RCCEx_PeriphCLKConfig 0x08001c11 Thumb Code 222 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) HAL_RCC_ClockConfig 0x08001cfd Thumb Code 280 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) HAL_RCC_GetHCLKFreq 0x08001e29 Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) HAL_RCC_GetSysClockFreq 0x08001e35 Thumb Code 80 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) HAL_RCC_OscConfig 0x08001eb5 Thumb Code 838 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) HAL_SYSTICK_CLKSourceConfig 0x08002209 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) HAL_SYSTICK_Callback 0x08002221 Thumb Code 86 main.o(i.HAL_SYSTICK_Callback) HAL_SYSTICK_Config 0x08002295 Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) HAL_SYSTICK_IRQHandler 0x080022c5 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) HardFault_Handler 0x080022cd Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) InitPLC 0x080022d1 Thumb Code 68 plcfunctions.o(i.InitPLC) InitTimer 0x0800231d Thumb Code 56 plcfunctions.o(i.InitTimer) InitUartstat 0x0800235d Thumb Code 30 functions.o(i.InitUartstat) InituS 0x0800237d Thumb Code 68 functions.o(i.InituS) KBusBCC 0x080023d1 Thumb Code 22 kbus.o(i.KBusBCC) KBusCheckPacket 0x080023e9 Thumb Code 234 kbus.o(i.KBusCheckPacket) KBusMakePacket 0x080024ed Thumb Code 126 kbus.o(i.KBusMakePacket) KBusMasterFunc 0x0800256d Thumb Code 358 kbus.o(i.KBusMasterFunc) KBusMasterParsePacket 0x080026f5 Thumb Code 306 kbus.o(i.KBusMasterParsePacket) KBusParsePacket 0x0800283d Thumb Code 114 kbus.o(i.KBusParsePacket) KBusSlaveCheckPacket 0x080028bd Thumb Code 134 kbus.o(i.KBusSlaveCheckPacket) KBusSlaveFunc 0x0800294d Thumb Code 84 kbus.o(i.KBusSlaveFunc) KBusSlaveParsePacket 0x080029ad Thumb Code 358 kbus.o(i.KBusSlaveParsePacket) KLBCC 0x08002b29 Thumb Code 22 klink.o(i.KLBCC) KLCheckPacket 0x08002b3f Thumb Code 50 klink.o(i.KLCheckPacket) KLMakeRplyPacket 0x08002b71 Thumb Code 60 klink.o(i.KLMakeRplyPacket) KLParsePacket 0x08002bad Thumb Code 70 klink.o(i.KLParsePacket) KLParseReqPacket 0x08002bfd Thumb Code 1704 klink.o(i.KLParseReqPacket) KMachineInit 0x080032cd Thumb Code 94 kmachine.o(i.KMachineInit) LL_GPIO_Init 0x080034dd Thumb Code 164 stm32f0xx_ll_gpio.o(i.LL_GPIO_Init) LL_Init1msTick 0x08003591 Thumb Code 26 stm32f0xx_ll_utils.o(i.LL_Init1msTick) LL_RCC_GetSystemClocksFreq 0x080035b1 Thumb Code 24 stm32f0xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) LL_RCC_GetUSARTClockFreq 0x080035c9 Thumb Code 76 stm32f0xx_ll_rcc.o(i.LL_RCC_GetUSARTClockFreq) LL_SPI_Init 0x0800361d Thumb Code 92 stm32f0xx_ll_spi.o(i.LL_SPI_Init) LL_TIM_Init 0x08003681 Thumb Code 108 stm32f0xx_ll_tim.o(i.LL_TIM_Init) LL_USART_Init 0x08003719 Thumb Code 156 stm32f0xx_ll_usart.o(i.LL_USART_Init) LL_mDelay 0x080037c5 Thumb Code 28 stm32f0xx_ll_utils.o(i.LL_mDelay) LoadDefaultSysCfg 0x080037e5 Thumb Code 14 kmachine.o(i.LoadDefaultSysCfg) LoadRunStat 0x080037f9 Thumb Code 86 kmachine.o(i.LoadRunStat) Locate 0x0800385d Thumb Code 24 debug.o(i.Locate) MX_DMA_Init 0x08003881 Thumb Code 38 bsp.o(i.MX_DMA_Init) MX_GPIO_Init 0x080038a9 Thumb Code 286 bsp.o(i.MX_GPIO_Init) MX_IWDG_Init 0x080039dd Thumb Code 32 bsp.o(i.MX_IWDG_Init) MX_SPI1_Init 0x08003a11 Thumb Code 196 bsp.o(i.MX_SPI1_Init) MX_TIM6_Init 0x08003add Thumb Code 74 bsp.o(i.MX_TIM6_Init) MX_USART1_UART_Init 0x08003b31 Thumb Code 278 bsp.o(i.MX_USART1_UART_Init) MX_USART2_UART_Init 0x08003c55 Thumb Code 332 bsp.o(i.MX_USART2_UART_Init) ModBusSlaveCheckPkg 0x08003dad Thumb Code 56 modbusrtu.o(i.ModBusSlaveCheckPkg) ModBusSlaveParsePkg 0x08003de5 Thumb Code 786 modbusrtu.o(i.ModBusSlaveParsePkg) NMI_Handler 0x08004105 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) ParseFP0Pkg 0x080041a5 Thumb Code 408 fp0.o(i.ParseFP0Pkg) PendSV_Handler 0x0800434d Thumb Code 24 stm32f0xx_it.o(i.PendSV_Handler) PendSvCallBack 0x0800436d Thumb Code 58 functions.o(i.PendSvCallBack) PopOutVal 0x080043c1 Thumb Code 28 plcfunctions.o(i.PopOutVal) ProcessPLCBinProg 0x080043e1 Thumb Code 1370 plcfunctions.o(i.ProcessPLCBinProg) ProcessTimer 0x08004941 Thumb Code 192 plcfunctions.o(i.ProcessTimer) PushIn 0x08004a0d Thumb Code 130 myqueue.o(i.PushIn) PushInVal 0x08004a91 Thumb Code 30 plcfunctions.o(i.PushInVal) PutStr 0x08004ab5 Thumb Code 22 functions.o(i.PutStr) PutStr1 0x08004ad1 Thumb Code 22 functions.o(i.PutStr1) PutStr2 0x08004aed Thumb Code 12 functions.o(i.PutStr2) RCC_GetHCLKClockFreq 0x08004af9 Thumb Code 18 stm32f0xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) RCC_GetPCLK1ClockFreq 0x08004b15 Thumb Code 16 stm32f0xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) RCC_GetSystemClockFreq 0x08004b2d Thumb Code 32 stm32f0xx_ll_rcc.o(i.RCC_GetSystemClockFreq) RCC_PLL_GetFreqDomain_SYS 0x08004b59 Thumb Code 50 stm32f0xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) ReadFlashMem 0x08004b99 Thumb Code 52 kmachine.o(i.ReadFlashMem) ReadJumperSW 0x08004bcd Thumb Code 14 functions.o(i.ReadJumperSW) ReadSysCfgFromFlash 0x08004bdd Thumb Code 84 kmachine.o(i.ReadSysCfgFromFlash) RunTimer 0x08004c4d Thumb Code 68 plcfunctions.o(i.RunTimer) SPI1_IRQHandler 0x08004c99 Thumb Code 8 stm32f0xx_it.o(i.SPI1_IRQHandler) SPI1_IRQ_CallBack 0x08004ca1 Thumb Code 184 functions.o(i.SPI1_IRQ_CallBack) SVC_Handler 0x08004d95 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) SaveRunStat 0x08004d99 Thumb Code 108 kmachine.o(i.SaveRunStat) SendFP0Pkg 0x08004e19 Thumb Code 88 fp0.o(i.SendFP0Pkg) SendPacket 0x08004e85 Thumb Code 48 functions.o(i.SendPacket) SetCoilValue 0x08004f11 Thumb Code 134 kmachine.o(i.SetCoilValue) SetErr2Led 0x08004fa1 Thumb Code 18 functions.o(i.SetErr2Led) SetErrLed 0x08004fb9 Thumb Code 18 functions.o(i.SetErrLed) SetOutStat 0x08004fd1 Thumb Code 18 functions.o(i.SetOutStat) SetRunLed 0x08004fe9 Thumb Code 18 functions.o(i.SetRunLed) SetVarData 0x08005001 Thumb Code 196 kmachine.o(i.SetVarData) ShowInitInfo 0x080050c9 Thumb Code 250 debug.o(i.ShowInitInfo) StartPLC 0x0800524d Thumb Code 98 plcfunctions.o(i.StartPLC) StopPLC 0x080052bd Thumb Code 54 plcfunctions.o(i.StopPLC) StopTimer 0x080052fd Thumb Code 60 plcfunctions.o(i.StopTimer) SysTick_Handler 0x08005341 Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) SystemClock_Config 0x0800534d Thumb Code 142 bsp.o(i.SystemClock_Config) SystemInit 0x080053f5 Thumb Code 78 system_stm32f0xx.o(i.SystemInit) TIM6_IRQHandler 0x08005451 Thumb Code 18 stm32f0xx_it.o(i.TIM6_IRQHandler) ToggleErrLed 0x08005469 Thumb Code 14 functions.o(i.ToggleErrLed) ToggleRunLed 0x0800547d Thumb Code 14 functions.o(i.ToggleRunLed) USART1_IRQHandler 0x08005491 Thumb Code 110 stm32f0xx_it.o(i.USART1_IRQHandler) USART2_IRQHandler 0x08005519 Thumb Code 68 stm32f0xx_it.o(i.USART2_IRQHandler) Uart1RecvDone 0x08005565 Thumb Code 22 functions.o(i.Uart1RecvDone) Uart1SendDMA 0x08005585 Thumb Code 82 functions.o(i.Uart1SendDMA) Uart1SendDone 0x080055e5 Thumb Code 10 functions.o(i.Uart1SendDone) Uart1TriggerSendDMA 0x080055f5 Thumb Code 42 functions.o(i.Uart1TriggerSendDMA) Uart2RecvDMA 0x08005625 Thumb Code 82 functions.o(i.Uart2RecvDMA) Uart2RecvDone 0x08005685 Thumb Code 44 functions.o(i.Uart2RecvDone) Uart2SendDMA 0x080056c5 Thumb Code 82 functions.o(i.Uart2SendDMA) Uart2SendDone 0x08005725 Thumb Code 10 functions.o(i.Uart2SendDone) WriteFactoryData 0x08005735 Thumb Code 22 kmachine.o(i.WriteFactoryData) WriteProgram 0x08005751 Thumb Code 50 kmachine.o(i.WriteProgram) WriteSysCfgToFlash 0x08005791 Thumb Code 96 kmachine.o(i.WriteSysCfgToFlash) WriteToFlashMemNoErase 0x080057fd Thumb Code 72 kmachine.o(i.WriteToFlashMemNoErase) _Error_Handler 0x08005845 Thumb Code 2 main.o(i._Error_Handler) __0sprintf$8 0x08005849 Thumb Code 36 printf8.o(i.__0sprintf$8) __1sprintf$8 0x08005849 Thumb Code 0 printf8.o(i.__0sprintf$8) __2sprintf 0x08005849 Thumb Code 0 printf8.o(i.__0sprintf$8) __ARM_common_switch8 0x08005871 Thumb Code 26 kbus.o(i.__ARM_common_switch8) __scatterload_copy 0x0800588b Thumb Code 14 handlers.o(i.__scatterload_copy) __scatterload_null 0x08005899 Thumb Code 2 handlers.o(i.__scatterload_null) __scatterload_zeroinit 0x0800589b Thumb Code 14 handlers.o(i.__scatterload_zeroinit) clearscreen 0x08005d29 Thumb Code 12 debug.o(i.clearscreen) crc16bitbybit 0x08005d41 Thumb Code 50 functions.o(i.crc16bitbybit) crc16table 0x08005d7d Thumb Code 42 functions.o(i.crc16table) crc16tablefast 0x08005dad Thumb Code 54 modbusrtu.o(i.crc16tablefast) crc_check 0x08005ded Thumb Code 34 functions.o(i.crc_check) initQueue 0x08005e19 Thumb Code 22 myqueue.o(i.initQueue) logData 0x08005e31 Thumb Code 30 functions.o(i.logData) main 0x08005e55 Thumb Code 1310 main.o(i.main) buf1 0x08006390 Data 16 debug.o(.constdata) crc16_table 0x080063a6 Data 512 functions.o(.constdata) crctablehi 0x080065a6 Data 256 functions.o(.constdata) crctablelo 0x080066a6 Data 256 functions.o(.constdata) crctalbeabs 0x080067a6 Data 32 modbusrtu.o(.constdata) KMInfoBlock 0x080067c6 Data 24 kmachine.o(.constdata) KMDefaultSysCfg 0x080067e0 Data 128 kmachine.o(.constdata) AHBPrescTable 0x08006894 Data 16 system_stm32f0xx.o(.constdata) APBPrescTable 0x080068a4 Data 8 system_stm32f0xx.o(.constdata) Region$$Table$$Base 0x080068ac Number 0 anon$$obj.o(Region$$Table) Region$$Table$$Limit 0x080068cc Number 0 anon$$obj.o(Region$$Table) CheckEventLog 0x08001365 Thumb Code 90 kmachine.o(i.CheckEventLog) ClearEventLog 0x080013d1 Thumb Code 28 kmachine.o(i.ClearEventLog) DMA1_Channel2_3_IRQHandler 0x080013f5 Thumb Code 144 stm32f0xx_it.o(i.DMA1_Channel2_3_IRQHandler) DMA1_Channel4_5_IRQHandler 0x08001495 Thumb Code 46 stm32f0xx_it.o(i.DMA1_Channel4_5_IRQHandler) DelData 0x080014cd Thumb Code 44 myqueue.o(i.DelData) EraseAndWriteToFlashMem 0x080014f9 Thumb Code 90 kmachine.o(i.EraseAndWriteToFlashMem) EraseFlashMem 0x08001559 Thumb Code 32 kmachine.o(i.EraseFlashMem) FPxCalBCC 0x0800157d Thumb Code 30 fpx.o(i.FPxCalBCC) FPxCallBackFunc 0x0800159d Thumb Code 58 main.o(i.FPxCallBackFunc) FPxParsePkt 0x080015e1 Thumb Code 434 fpx.o(i.FPxParsePkt) FPxSendPkt 0x080017a5 Thumb Code 92 fpx.o(i.FPxSendPkt) FPxSetCallBackFunc 0x0800181d Thumb Code 12 fpx.o(i.FPxSetCallBackFunc) FPx_Init 0x0800182d Thumb Code 80 fpx.o(i.FPx_Init) FPx_Proc 0x08001891 Thumb Code 258 fpx.o(i.FPx_Proc) FPx_SetIOCount 0x080019b9 Thumb Code 10 fpx.o(i.FPx_SetIOCount) GetCoilValue 0x080019f1 Thumb Code 156 kmachine.o(i.GetCoilValue) GetContinueData 0x08001a91 Thumb Code 38 myqueue.o(i.GetContinueData) GetContinueEmptyRoom 0x08001ab7 Thumb Code 38 myqueue.o(i.GetContinueEmptyRoom) GetEventLogAddr 0x08001add Thumb Code 28 kmachine.o(i.GetEventLogAddr) GetVarData 0x08001b01 Thumb Code 208 kmachine.o(i.GetVarData) GetuS 0x08001bd9 Thumb Code 30 functions.o(i.GetuS) HAL_Delay 0x08001c05 Thumb Code 28 stm32f0xx_hal.o(i.HAL_Delay) HAL_GetTick 0x08001c21 Thumb Code 6 stm32f0xx_hal.o(i.HAL_GetTick) HAL_IncTick 0x08001c2d Thumb Code 10 stm32f0xx_hal.o(i.HAL_IncTick) HAL_Init 0x08001c3d Thumb Code 26 stm32f0xx_hal.o(i.HAL_Init) HAL_InitTick 0x08001c5d Thumb Code 34 stm32f0xx_hal.o(i.HAL_InitTick) HAL_MspInit 0x08001c81 Thumb Code 64 stm32f0xx_hal_msp.o(i.HAL_MspInit) HAL_NVIC_SetPriority 0x08001cc5 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_NVIC_SetPriority) HAL_RCCEx_PeriphCLKConfig 0x08001ccd Thumb Code 222 stm32f0xx_hal_rcc_ex.o(i.HAL_RCCEx_PeriphCLKConfig) HAL_RCC_ClockConfig 0x08001db9 Thumb Code 280 stm32f0xx_hal_rcc.o(i.HAL_RCC_ClockConfig) HAL_RCC_GetHCLKFreq 0x08001ee5 Thumb Code 6 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetHCLKFreq) HAL_RCC_GetSysClockFreq 0x08001ef1 Thumb Code 80 stm32f0xx_hal_rcc.o(i.HAL_RCC_GetSysClockFreq) HAL_RCC_OscConfig 0x08001f71 Thumb Code 838 stm32f0xx_hal_rcc.o(i.HAL_RCC_OscConfig) HAL_SYSTICK_CLKSourceConfig 0x080022c5 Thumb Code 20 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_CLKSourceConfig) HAL_SYSTICK_Callback 0x080022dd Thumb Code 86 main.o(i.HAL_SYSTICK_Callback) HAL_SYSTICK_Config 0x08002351 Thumb Code 38 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_Config) HAL_SYSTICK_IRQHandler 0x08002381 Thumb Code 8 stm32f0xx_hal_cortex.o(i.HAL_SYSTICK_IRQHandler) HardFault_Handler 0x08002389 Thumb Code 2 stm32f0xx_it.o(i.HardFault_Handler) InitPLC 0x0800238d Thumb Code 68 plcfunctions.o(i.InitPLC) InitTimer 0x080023d9 Thumb Code 56 plcfunctions.o(i.InitTimer) InitUartstat 0x08002419 Thumb Code 30 functions.o(i.InitUartstat) InituS 0x08002439 Thumb Code 68 functions.o(i.InituS) KBusAddChildAddrByInfo 0x0800248d Thumb Code 104 kbus.o(i.KBusAddChildAddrByInfo) KBusBCC 0x080024f9 Thumb Code 22 kbus.o(i.KBusBCC) KBusCallBackFunc 0x08002511 Thumb Code 70 main.o(i.KBusCallBackFunc) KBusCheckPacket 0x08002565 Thumb Code 234 kbus.o(i.KBusCheckPacket) KBusInit 0x08002669 Thumb Code 80 kbus.o(i.KBusInit) KBusMakeDefaultClildInfo 0x080026c1 Thumb Code 34 kbus.o(i.KBusMakeDefaultClildInfo) KBusMakePacket 0x080026e9 Thumb Code 138 kbus.o(i.KBusMakePacket) KBusMasterFunc 0x08002775 Thumb Code 424 kbus.o(i.KBusMasterFunc) KBusMasterParsePacket 0x08002939 Thumb Code 264 kbus.o(i.KBusMasterParsePacket) KBusParsePacket 0x08002a4d Thumb Code 114 kbus.o(i.KBusParsePacket) KBusSearchChild 0x08002acd Thumb Code 130 kbus.o(i.KBusSearchChild) KBusSetCallBackFunc 0x08002b59 Thumb Code 12 kbus.o(i.KBusSetCallBackFunc) KBusSlaveCheckPacket 0x08002b69 Thumb Code 134 kbus.o(i.KBusSlaveCheckPacket) KBusSlaveFunc 0x08002bf9 Thumb Code 84 kbus.o(i.KBusSlaveFunc) KBusSlaveParsePacket 0x08002c59 Thumb Code 454 kbus.o(i.KBusSlaveParsePacket) KLBCC 0x08002e39 Thumb Code 22 klink.o(i.KLBCC) KLCheckPacket 0x08002e4f Thumb Code 50 klink.o(i.KLCheckPacket) KLMakeRplyPacket 0x08002e81 Thumb Code 76 klink.o(i.KLMakeRplyPacket) KLParsePacket 0x08002ecd Thumb Code 70 klink.o(i.KLParsePacket) KLParseReqPacket 0x08002f1d Thumb Code 1844 klink.o(i.KLParseReqPacket) KMachineInit 0x0800367d Thumb Code 94 kmachine.o(i.KMachineInit) LL_FLASH_Program 0x0800388d Thumb Code 100 stm32f0xx_ll_flash.o(i.LL_FLASH_Program) LL_Flash_PageErase 0x080038f5 Thumb Code 76 stm32f0xx_ll_flash.o(i.LL_Flash_PageErase) LL_Flash_Unlock 0x08003945 Thumb Code 30 stm32f0xx_ll_flash.o(i.LL_Flash_Unlock) LL_GPIO_Init 0x08003971 Thumb Code 164 stm32f0xx_ll_gpio.o(i.LL_GPIO_Init) LL_RCC_GetSystemClocksFreq 0x08003a23 Thumb Code 24 stm32f0xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) LL_RCC_GetUSARTClockFreq 0x08003a3d Thumb Code 76 stm32f0xx_ll_rcc.o(i.LL_RCC_GetUSARTClockFreq) LL_SPI_Init 0x08003a91 Thumb Code 92 stm32f0xx_ll_spi.o(i.LL_SPI_Init) LL_TIM_Init 0x08003af5 Thumb Code 108 stm32f0xx_ll_tim.o(i.LL_TIM_Init) LL_USART_Init 0x08003b8d Thumb Code 156 stm32f0xx_ll_usart.o(i.LL_USART_Init) LoadDefaultSysCfg 0x08003c39 Thumb Code 14 kmachine.o(i.LoadDefaultSysCfg) LoadRunStat 0x08003c4d Thumb Code 86 kmachine.o(i.LoadRunStat) Locate 0x08003cb1 Thumb Code 24 debug.o(i.Locate) MX_DMA_Init 0x08003cd5 Thumb Code 38 bsp.o(i.MX_DMA_Init) MX_GPIO_Init 0x08003cfd Thumb Code 286 bsp.o(i.MX_GPIO_Init) MX_IWDG_Init 0x08003e31 Thumb Code 32 bsp.o(i.MX_IWDG_Init) MX_SPI1_Init 0x08003e65 Thumb Code 196 bsp.o(i.MX_SPI1_Init) MX_TIM6_Init 0x08003f31 Thumb Code 74 bsp.o(i.MX_TIM6_Init) MX_USART1_UART_Init 0x08003f85 Thumb Code 278 bsp.o(i.MX_USART1_UART_Init) MX_USART2_UART_Init 0x080040a9 Thumb Code 332 bsp.o(i.MX_USART2_UART_Init) ModBusSlaveCheckPkg 0x08004201 Thumb Code 56 modbusrtu.o(i.ModBusSlaveCheckPkg) ModBusSlaveParsePkg 0x08004239 Thumb Code 786 modbusrtu.o(i.ModBusSlaveParsePkg) NMI_Handler 0x08004559 Thumb Code 2 stm32f0xx_it.o(i.NMI_Handler) PendSV_Handler 0x080045f9 Thumb Code 24 stm32f0xx_it.o(i.PendSV_Handler) PendSvCallBack 0x08004619 Thumb Code 56 functions.o(i.PendSvCallBack) PopOutVal 0x08004665 Thumb Code 28 plcfunctions.o(i.PopOutVal) ProcessPLCBinProg 0x08004685 Thumb Code 1370 plcfunctions.o(i.ProcessPLCBinProg) ProcessTimer 0x08004be5 Thumb Code 192 plcfunctions.o(i.ProcessTimer) PushIn 0x08004cb1 Thumb Code 130 myqueue.o(i.PushIn) PushInVal 0x08004d35 Thumb Code 30 plcfunctions.o(i.PushInVal) PutStr 0x08004d59 Thumb Code 22 functions.o(i.PutStr) PutStr1 0x08004d75 Thumb Code 22 functions.o(i.PutStr1) PutStr2 0x08004d91 Thumb Code 12 functions.o(i.PutStr2) RCC_GetHCLKClockFreq 0x08004d9d Thumb Code 18 stm32f0xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) RCC_GetPCLK1ClockFreq 0x08004db9 Thumb Code 16 stm32f0xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) RCC_GetSystemClockFreq 0x08004dd1 Thumb Code 32 stm32f0xx_ll_rcc.o(i.RCC_GetSystemClockFreq) RCC_PLL_GetFreqDomain_SYS 0x08004dfd Thumb Code 50 stm32f0xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) ReadFlashMem 0x08004e3d Thumb Code 52 kmachine.o(i.ReadFlashMem) ReadJumperSW 0x08004e71 Thumb Code 14 functions.o(i.ReadJumperSW) ReadSysCfgFromFlash 0x08004e81 Thumb Code 84 kmachine.o(i.ReadSysCfgFromFlash) RunTimer 0x08004ef1 Thumb Code 68 plcfunctions.o(i.RunTimer) SPI1_IRQHandler 0x08004f3d Thumb Code 8 stm32f0xx_it.o(i.SPI1_IRQHandler) SPI1_IRQ_CallBack 0x08004f45 Thumb Code 164 functions.o(i.SPI1_IRQ_CallBack) SVC_Handler 0x08005005 Thumb Code 2 stm32f0xx_it.o(i.SVC_Handler) SaveRunStat 0x08005009 Thumb Code 108 kmachine.o(i.SaveRunStat) SendPacket 0x08005089 Thumb Code 48 functions.o(i.SendPacket) SetCoilValue 0x08005115 Thumb Code 134 kmachine.o(i.SetCoilValue) SetErr2Led 0x080051a5 Thumb Code 18 functions.o(i.SetErr2Led) SetErrLed 0x080051bd Thumb Code 18 functions.o(i.SetErrLed) SetOutStat 0x080051d5 Thumb Code 18 functions.o(i.SetOutStat) SetRunLed 0x080051ed Thumb Code 18 functions.o(i.SetRunLed) SetVarData 0x08005205 Thumb Code 196 kmachine.o(i.SetVarData) ShowInitInfo 0x080052cd Thumb Code 250 debug.o(i.ShowInitInfo) StartPLC 0x08005451 Thumb Code 98 plcfunctions.o(i.StartPLC) StopPLC 0x080054c1 Thumb Code 54 plcfunctions.o(i.StopPLC) StopTimer 0x08005501 Thumb Code 60 plcfunctions.o(i.StopTimer) SysTick_Handler 0x08005545 Thumb Code 12 stm32f0xx_it.o(i.SysTick_Handler) SystemClock_Config 0x08005551 Thumb Code 142 bsp.o(i.SystemClock_Config) SystemInit 0x080055f9 Thumb Code 78 system_stm32f0xx.o(i.SystemInit) TIM6_IRQHandler 0x08005655 Thumb Code 18 stm32f0xx_it.o(i.TIM6_IRQHandler) USART1_IRQHandler 0x0800566d Thumb Code 110 stm32f0xx_it.o(i.USART1_IRQHandler) USART2_IRQHandler 0x080056f5 Thumb Code 68 stm32f0xx_it.o(i.USART2_IRQHandler) Uart1RecvDone 0x08005741 Thumb Code 22 functions.o(i.Uart1RecvDone) Uart1SendDMA 0x08005761 Thumb Code 82 functions.o(i.Uart1SendDMA) Uart1SendDone 0x080057c1 Thumb Code 10 functions.o(i.Uart1SendDone) Uart1TriggerSendDMA 0x080057d1 Thumb Code 42 functions.o(i.Uart1TriggerSendDMA) Uart2RecvDMA 0x08005801 Thumb Code 82 functions.o(i.Uart2RecvDMA) Uart2RecvDone 0x08005861 Thumb Code 44 functions.o(i.Uart2RecvDone) Uart2SendDMA 0x080058a1 Thumb Code 82 functions.o(i.Uart2SendDMA) Uart2SendDone 0x08005901 Thumb Code 10 functions.o(i.Uart2SendDone) WriteFactoryData 0x08005911 Thumb Code 22 kmachine.o(i.WriteFactoryData) WriteNewApp 0x0800592d Thumb Code 28 kmachine.o(i.WriteNewApp) WriteNewAppInfo 0x0800594d Thumb Code 16 kmachine.o(i.WriteNewAppInfo) WriteProgram 0x08005961 Thumb Code 50 kmachine.o(i.WriteProgram) WriteSysCfgToFlash 0x080059a1 Thumb Code 96 kmachine.o(i.WriteSysCfgToFlash) WriteToFlashMemNoErase 0x08005a0d Thumb Code 76 kmachine.o(i.WriteToFlashMemNoErase) _Error_Handler 0x08005a5d Thumb Code 2 main.o(i._Error_Handler) __0sprintf$8 0x08005a61 Thumb Code 36 printf8.o(i.__0sprintf$8) __1sprintf$8 0x08005a61 Thumb Code 0 printf8.o(i.__0sprintf$8) __2sprintf 0x08005a61 Thumb Code 0 printf8.o(i.__0sprintf$8) __ARM_common_switch8 0x08005a89 Thumb Code 26 modbusrtu.o(i.__ARM_common_switch8) __scatterload_copy 0x08005aa3 Thumb Code 14 handlers.o(i.__scatterload_copy) __scatterload_null 0x08005ab1 Thumb Code 2 handlers.o(i.__scatterload_null) __scatterload_zeroinit 0x08005ab3 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) clearscreen 0x08005f41 Thumb Code 12 debug.o(i.clearscreen) crc16bitbybit 0x08005f59 Thumb Code 50 functions.o(i.crc16bitbybit) crc16table 0x08005f95 Thumb Code 42 functions.o(i.crc16table) crc16tablefast 0x08005fc5 Thumb Code 54 modbusrtu.o(i.crc16tablefast) crc_check 0x08006005 Thumb Code 34 functions.o(i.crc_check) initQueue 0x08006031 Thumb Code 22 myqueue.o(i.initQueue) logData 0x08006049 Thumb Code 30 functions.o(i.logData) main 0x0800606d Thumb Code 1232 main.o(i.main) buf1 0x08006548 Data 16 debug.o(.constdata) crc16_table 0x0800655e Data 512 functions.o(.constdata) crctablehi 0x0800675e Data 256 functions.o(.constdata) crctablelo 0x0800685e Data 256 functions.o(.constdata) crctalbeabs 0x0800695e Data 32 modbusrtu.o(.constdata) KMInfoBlock 0x0800697e Data 24 kmachine.o(.constdata) KMDefaultSysCfg 0x08006998 Data 128 kmachine.o(.constdata) AHBPrescTable 0x08006a4c Data 16 system_stm32f0xx.o(.constdata) APBPrescTable 0x08006a5c Data 8 system_stm32f0xx.o(.constdata) Region$$Table$$Base 0x08006a64 Number 0 anon$$obj.o(Region$$Table) Region$$Table$$Limit 0x08006a84 Number 0 anon$$obj.o(Region$$Table) sprintftime 0x200000c0 Data 4 debug.o(.data) putstrtime 0x200000c4 Data 4 debug.o(.data) LineCount 0x200000c8 Data 4 debug.o(.data) Uart1baudval 0x200000cc Data 4 debug.o(.data) TickFreq 0x200000d4 Data 4 functions.o(.data) ClkuS 0x200000d8 Data 2 functions.o(.data) nCurTick 0x200000dc Data 4 functions.o(.data) CurTickuS 0x200000e0 Data 4 functions.o(.data) CoreClkMHz 0x200000e4 Data 4 functions.o(.data) TickPriodClk 0x200000e8 Data 4 functions.o(.data) TickPrioduS 0x200000ec Data 4 functions.o(.data) PendSvCount 0x200000f0 Data 4 globaldef.o(.data) Uart1Baud 0x200000f4 Data 4 globaldef.o(.data) Uart2Baud 0x200000f8 Data 4 globaldef.o(.data) Uart1RecvBuf1DataLen 0x200000fc Data 4 globaldef.o(.data) Uart2RecvBuf1DataLen 0x20000100 Data 4 globaldef.o(.data) Uart1BaudGot 0x20000104 Data 4 globaldef.o(.data) Uart1BaudFirstGot 0x20000108 Data 4 globaldef.o(.data) bKBusMaster 0x2000010c Data 1 kbus.o(.data) bKBusSlave 0x2000010d Data 1 kbus.o(.data) KBusDiagnosis 0x2000010e Data 1 kbus.o(.data) KBusSnapPos 0x2000010f Data 1 kbus.o(.data) nStationID 0x20000110 Data 1 kbus.o(.data) nCurPollId 0x20000111 Data 1 kbus.o(.data) nSeq 0x20000112 Data 1 kbus.o(.data) KBusMasterRecved 0x20000113 Data 1 kbus.o(.data) KBusMasterRecvOK 0x20000114 Data 1 kbus.o(.data) KBusSlaveRecved 0x20000115 Data 1 kbus.o(.data) nClientDataIndex 0x20000116 Data 1 kbus.o(.data) nChilds 0x20000117 Data 1 kbus.o(.data) KBusSendTimeuS 0x20000118 Data 4 kbus.o(.data) KBusRecvTimeuS 0x2000011c Data 4 kbus.o(.data) KBusDelayuS 0x20000120 Data 4 kbus.o(.data) KBusMaxDelayuS 0x20000124 Data 4 kbus.o(.data) nSlaveTick 0x20000128 Data 4 kbus.o(.data) nCount2 0x2000012c Data 4 kbus.o(.data) TimeOutCount 0x20000130 Data 4 kbus.o(.data) LastCircleStartTime 0x20000134 Data 4 kbus.o(.data) CircleTime 0x20000138 Data 4 kbus.o(.data) ThisuS 0x2000013c Data 4 kbus.o(.data) SendTime 0x20000140 Data 4 kbus.o(.data) nKLStationId 0x20000144 Data 1 klink.o(.data) nKLStatus 0x20000145 Data 1 klink.o(.data) KLThisuS 0x20000148 Data 4 klink.o(.data) KLRecvTimeuS 0x2000014c Data 4 klink.o(.data) MyAddr 0x20000150 Data 1 modbusrtu.o(.data) nSizeProg1 0x20000154 Data 4 plcfunctions.o(.data) nMaxRunStatIndex 0x20000158 Data 4 kmachine.o(.data) nMaxRunStatSeq 0x2000015c Data 4 kmachine.o(.data) nNextRunStatSpace 0x20000160 Data 4 kmachine.o(.data) nEventCount 0x20000164 Data 4 kmachine.o(.data) nEventMaxSeq 0x20000168 Data 4 kmachine.o(.data) nMaxCurTime 0x2000016c Data 4 kmachine.o(.data) nEventMinIndex 0x20000170 Data 4 kmachine.o(.data) nEventMaxIndex 0x20000174 Data 4 kmachine.o(.data) nEventNextSpace 0x20000178 Data 4 kmachine.o(.data) bConfiged 0x2000017c Data 1 fp0.o(.data) nConfigStationId 0x2000017d Data 1 fp0.o(.data) nInputBytes 0x2000017e Data 1 fp0.o(.data) nOutputBytes 0x2000017f Data 1 fp0.o(.data) bSPI1Recving 0x20000180 Data 1 fp0.o(.data) nSPI1RecvPos 0x20000181 Data 1 fp0.o(.data) nSPI1ToSendLen 0x20000182 Data 1 fp0.o(.data) nSPI1SentLen 0x20000183 Data 1 fp0.o(.data) bSPI1Sending 0x20000184 Data 1 fp0.o(.data) oldSYN 0x20000188 Data 4 fp0.o(.data) bFirstReq 0x2000018c Data 4 fp0.o(.data) RSTCount0 0x20000190 Data 4 fp0.o(.data) bSPI1RecvDone 0x20000194 Data 1 fp0.o(.data) nSPI1RecvLenInBuf 0x20000195 Data 1 fp0.o(.data) bSPI1SendDone 0x20000196 Data 1 fp0.o(.data) SlowFlicker 0x20000198 Data 1 main.o(.data) FastFlicker 0x20000199 Data 1 main.o(.data) Uart1IdelTimer 0x2000019c Data 4 main.o(.data) pProgs 0x200001a0 Data 4 main.o(.data) us1 0x200001a8 Data 4 main.o(.data) us2 0x200001ac Data 4 main.o(.data) us3 0x200001b0 Data 4 main.o(.data) us4 0x200001b4 Data 4 main.o(.data) us5 0x200001b8 Data 4 main.o(.data) us6 0x200001bc Data 4 main.o(.data) SystemCoreClock 0x200001c0 Data 4 system_stm32f0xx.o(.data) uwTick 0x200001c4 Data 4 stm32f0xx_hal.o(.data) str1 0x200001c8 Data 256 debug.o(.bss) Uart1Stat 0x200002c8 Data 148 globaldef.o(.bss) Uart2Stat 0x2000035c Data 148 globaldef.o(.bss) Uart1RecvBuf1 0x200003f0 Data 128 globaldef.o(.bss) Uart2RecvBuf1 0x20000470 Data 128 globaldef.o(.bss) BufferIn 0x200004f0 Data 16 kbus.o(.bss) BufferOut 0x20000500 Data 16 kbus.o(.bss) PacketBuf1 0x20000510 Data 128 kbus.o(.bss) PacketBuf2 0x20000590 Data 128 kbus.o(.bss) KBusChnStats 0x20000610 Data 768 kbus.o(.bss) Datas 0x20000910 Data 128 kbus.o(.bss) KLBufferOut 0x20000990 Data 16 klink.o(.bss) KLPacketBuf2 0x200009a0 Data 256 klink.o(.bss) Pkgbuf 0x20000aa0 Data 128 modbusrtu.o(.bss) PLCMem 0x20000b20 Data 520 plcfunctions.o(.bss) storedKMSysCfg 0x20000d28 Data 128 kmachine.o(.bss) KMem 0x20000da8 Data 1972 kmachine.o(.bss) KMRunStat 0x2000155c Data 32 kmachine.o(.bss) PkgBuf2 0x2000157c Data 32 fp0.o(.bss) SPI1SendBuf 0x2000159c Data 32 fp0.o(.bss) SPI1RecvBuf 0x200015bc Data 32 fp0.o(.bss) Uart1RxBuf 0x200015dc Data 128 main.o(.bss) Uart1TxBuf 0x2000165c Data 260 main.o(.bss) Uart2RxBuf 0x20001760 Data 64 main.o(.bss) Uart2TxBuf 0x200017a0 Data 64 main.o(.bss) pFlash 0x200017e0 Data 32 stm32f0xx_hal_flash.o(.bss) __initial_sp 0x20001c00 Data 0 startup_stm32f030x8.o(STACK) nCount5 0x200000d0 Data 4 debug.o(.data) TickFreq 0x200000d8 Data 4 functions.o(.data) bSPI1Recving 0x200000dc Data 1 functions.o(.data) bSPI1RecvDone 0x200000dd Data 1 functions.o(.data) nSPI1RecvPos 0x200000de Data 1 functions.o(.data) nSPI1RecvLenInBuf 0x200000df Data 1 functions.o(.data) nSPI1ToSendLen 0x200000e0 Data 1 functions.o(.data) nSPI1SentLen 0x200000e1 Data 1 functions.o(.data) bSPI1Sending 0x200000e2 Data 1 functions.o(.data) bSPI1SendDone 0x200000e3 Data 1 functions.o(.data) ClkuS 0x200000e4 Data 2 functions.o(.data) nCurTick 0x200000e8 Data 4 functions.o(.data) CurTickuS 0x200000ec Data 4 functions.o(.data) CoreClkMHz 0x200000f0 Data 4 functions.o(.data) TickPriodClk 0x200000f4 Data 4 functions.o(.data) TickPrioduS 0x200000f8 Data 4 functions.o(.data) PendSvCount 0x200000fc Data 4 globaldef.o(.data) Uart1Baud 0x20000100 Data 4 globaldef.o(.data) Uart2Baud 0x20000104 Data 4 globaldef.o(.data) Uart1RecvBuf1DataLen 0x20000108 Data 4 globaldef.o(.data) Uart2RecvBuf1DataLen 0x2000010c Data 4 globaldef.o(.data) Uart1BaudGot 0x20000110 Data 4 globaldef.o(.data) Uart1BaudFirstGot 0x20000114 Data 4 globaldef.o(.data) bKBusMaster 0x20000118 Data 1 kbus.o(.data) bKBusSlave 0x20000119 Data 1 kbus.o(.data) KBusDiagnosis 0x2000011a Data 1 kbus.o(.data) KBusSnapPos 0x2000011b Data 1 kbus.o(.data) nStationID 0x2000011c Data 1 kbus.o(.data) nCurPollId 0x2000011d Data 1 kbus.o(.data) nSeq 0x2000011e Data 1 kbus.o(.data) KBusMasterRecved 0x2000011f Data 1 kbus.o(.data) KBusMasterRecvOK 0x20000120 Data 1 kbus.o(.data) KBusSlaveRecved 0x20000121 Data 1 kbus.o(.data) nClientDataIndex 0x20000122 Data 1 kbus.o(.data) nChilds 0x20000123 Data 1 kbus.o(.data) KBusSendTimeuS 0x20000124 Data 4 kbus.o(.data) KBusRecvTimeuS 0x20000128 Data 4 kbus.o(.data) KBusDelayuS 0x2000012c Data 4 kbus.o(.data) KBusMaxDelayuS 0x20000130 Data 4 kbus.o(.data) nCount2 0x20000134 Data 4 kbus.o(.data) TimeOutCount 0x20000138 Data 4 kbus.o(.data) LastCircleStartTime 0x2000013c Data 4 kbus.o(.data) CircleTime 0x20000140 Data 4 kbus.o(.data) ThisuS 0x20000144 Data 4 kbus.o(.data) SendTime 0x20000148 Data 4 kbus.o(.data) nSlaveTick 0x2000014c Data 4 kbus.o(.data) nKLStationId 0x20000150 Data 1 klink.o(.data) nKLStatus 0x20000151 Data 1 klink.o(.data) KLThisuS 0x20000154 Data 4 klink.o(.data) KLRecvTimeuS 0x20000158 Data 4 klink.o(.data) MyAddr 0x2000015c Data 1 modbusrtu.o(.data) nSizeProg1 0x20000160 Data 4 plcfunctions.o(.data) nMaxRunStatIndex 0x20000164 Data 4 kmachine.o(.data) nMaxRunStatSeq 0x20000168 Data 4 kmachine.o(.data) nNextRunStatSpace 0x2000016c Data 4 kmachine.o(.data) nEventCount 0x20000170 Data 4 kmachine.o(.data) nEventMaxSeq 0x20000174 Data 4 kmachine.o(.data) nMaxCurTime 0x20000178 Data 4 kmachine.o(.data) nEventMinIndex 0x2000017c Data 4 kmachine.o(.data) nEventMaxIndex 0x20000180 Data 4 kmachine.o(.data) nEventNextSpace 0x20000184 Data 4 kmachine.o(.data) SlowFlicker 0x20000188 Data 1 main.o(.data) FastFlicker 0x20000189 Data 1 main.o(.data) Uart1IdelTimer 0x2000018c Data 4 main.o(.data) pProgs 0x20000190 Data 4 main.o(.data) us1 0x20000198 Data 4 main.o(.data) us2 0x2000019c Data 4 main.o(.data) us3 0x200001a0 Data 4 main.o(.data) us4 0x200001a4 Data 4 main.o(.data) us5 0x200001a8 Data 4 main.o(.data) us6 0x200001ac Data 4 main.o(.data) SystemCoreClock 0x200001b0 Data 4 system_stm32f0xx.o(.data) uwTick 0x200001b4 Data 4 stm32f0xx_hal.o(.data) ADC_TEMP 0x200001b8 Data 32 debug.o(.bss) str1 0x200001d8 Data 256 debug.o(.bss) SPI1RecvBuf 0x200002d8 Data 64 functions.o(.bss) SPI1SendBuf 0x20000318 Data 64 functions.o(.bss) Uart1Stat 0x20000358 Data 148 globaldef.o(.bss) Uart2Stat 0x200003ec Data 148 globaldef.o(.bss) Uart1RecvBuf1 0x20000480 Data 128 globaldef.o(.bss) Uart2RecvBuf1 0x20000500 Data 128 globaldef.o(.bss) PacketBuf1 0x20000580 Data 128 kbus.o(.bss) PacketBuf2 0x20000600 Data 128 kbus.o(.bss) KBusChnStats 0x20000680 Data 768 kbus.o(.bss) Datas 0x20000980 Data 128 kbus.o(.bss) KBus1 0x20000a00 Data 536 kbus.o(.bss) KBusMem 0x20000c18 Data 192 kbus.o(.bss) KLBufferOut 0x20000cd8 Data 16 klink.o(.bss) KLPacketBuf2 0x20000ce8 Data 256 klink.o(.bss) Pkgbuf 0x20000de8 Data 128 modbusrtu.o(.bss) PLCMem 0x20000e68 Data 520 plcfunctions.o(.bss) storedKMSysCfg 0x20001070 Data 128 kmachine.o(.bss) KMem 0x200010f0 Data 1972 kmachine.o(.bss) KMRunStat 0x200018a4 Data 32 kmachine.o(.bss) Uart1RxBuf 0x200018c4 Data 128 main.o(.bss) Uart1TxBuf 0x20001944 Data 260 main.o(.bss) Uart2RxBuf 0x20001a48 Data 64 main.o(.bss) Uart2TxBuf 0x20001a88 Data 64 main.o(.bss) PktBuf2 0x20001ac8 Data 64 fpx.o(.bss) FPxStat 0x20001b08 Data 28 fpx.o(.bss) FPxMem 0x20001b24 Data 64 fpx.o(.bss) __initial_sp 0x20001f68 Data 0 startup_stm32f030x8.o(STACK) @@ -2301,295 +2327,291 @@ Image Entry point : 0x080010b5 Load Region LR_IROM1 (Base: 0x08001000, Size: 0x000059d4, Max: 0x0000f000, ABSOLUTE) Load Region LR_IROM1 (Base: 0x08001000, Size: 0x00005b7c, Max: 0x0000f000, ABSOLUTE) Execution Region ER_IROM1 (Base: 0x08001000, Size: 0x000058cc, Max: 0x0000f000, ABSOLUTE) Execution Region ER_IROM1 (Base: 0x08001000, Size: 0x00005a84, Max: 0x0000f000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x08001000 0x000000b4 Data RO 3 RESET startup_stm32f030x8.o 0x080010b4 0x00000000 Code RO 3998 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) 0x080010b4 0x00000004 Code RO 4278 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) 0x080010b8 0x00000004 Code RO 4281 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) 0x080010bc 0x00000000 Code RO 4283 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) 0x080010bc 0x00000000 Code RO 4285 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) 0x080010bc 0x00000008 Code RO 4286 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) 0x080010c4 0x00000000 Code RO 4288 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) 0x080010c4 0x00000000 Code RO 4290 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) 0x080010c4 0x00000004 Code RO 4279 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x080010b4 0x00000000 Code RO 4162 * .ARM.Collect$$$$00000000 mc_p.l(entry.o) 0x080010b4 0x00000004 Code RO 4442 .ARM.Collect$$$$00000001 mc_p.l(entry2.o) 0x080010b8 0x00000004 Code RO 4445 .ARM.Collect$$$$00000004 mc_p.l(entry5.o) 0x080010bc 0x00000000 Code RO 4447 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o) 0x080010bc 0x00000000 Code RO 4449 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o) 0x080010bc 0x00000008 Code RO 4450 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o) 0x080010c4 0x00000000 Code RO 4452 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o) 0x080010c4 0x00000000 Code RO 4454 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o) 0x080010c4 0x00000004 Code RO 4443 .ARM.Collect$$$$00002712 mc_p.l(entry2.o) 0x080010c8 0x00000004 Code RO 12 .emb_text debug.o 0x080010cc 0x0000001c Code RO 4 .text startup_stm32f030x8.o 0x080010e8 0x0000002c Code RO 4001 .text mc_p.l(uidiv.o) 0x08001114 0x00000028 Code RO 4003 .text mc_p.l(idiv.o) 0x0800113c 0x0000004c Code RO 4005 .text mc_p.l(ldiv.o) 0x08001188 0x00000022 Code RO 4007 .text mc_p.l(llushr.o) 0x080011aa 0x00000024 Code RO 4009 .text mc_p.l(memcpya.o) 0x080011ce 0x00000024 Code RO 4011 .text mc_p.l(memseta.o) 0x080011f2 0x00000014 Code RO 4276 .text mc_p.l(uread4.o) 0x08001206 0x00000060 Code RO 4295 .text mc_p.l(uldiv.o) 0x080010e8 0x0000002c Code RO 4165 .text mc_p.l(uidiv.o) 0x08001114 0x00000028 Code RO 4167 .text mc_p.l(idiv.o) 0x0800113c 0x0000004c Code RO 4169 .text mc_p.l(ldiv.o) 0x08001188 0x00000022 Code RO 4171 .text mc_p.l(llushr.o) 0x080011aa 0x00000024 Code RO 4173 .text mc_p.l(memcpya.o) 0x080011ce 0x00000024 Code RO 4175 .text mc_p.l(memseta.o) 0x080011f2 0x00000014 Code RO 4440 .text mc_p.l(uread4.o) 0x08001206 0x00000060 Code RO 4459 .text mc_p.l(uldiv.o) 0x08001266 0x00000002 PAD 0x08001268 0x00000024 Code RO 4308 .text mc_p.l(init.o) 0x0800128c 0x00000020 Code RO 4311 .text mc_p.l(llshl.o) 0x080012ac 0x0000008c Code RO 1428 i.AddEventLog kmachine.o 0x08001338 0x0000002c Code RO 1130 i.AddSpace myqueue.o 0x08001364 0x0000001e Code RO 1993 i.CalFP0BCC fp0.o 0x08001382 0x00000002 PAD 0x08001384 0x0000006c Code RO 1429 i.CheckEventLog kmachine.o 0x080013f0 0x00000024 Code RO 1431 i.ClearEventLog kmachine.o 0x08001414 0x000000a0 Code RO 1899 i.DMA1_Channel2_3_IRQHandler stm32f0xx_it.o 0x080014b4 0x00000038 Code RO 1900 i.DMA1_Channel4_5_IRQHandler stm32f0xx_it.o 0x080014ec 0x0000002c Code RO 1132 i.DelData myqueue.o 0x08001518 0x00000046 Code RO 1432 i.EraseAndWriteToFlashMem kmachine.o 0x0800155e 0x00000020 Code RO 1433 i.EraseFlashMem kmachine.o 0x0800157e 0x00000002 PAD 0x08001580 0x00000024 Code RO 3716 i.FLASH_MassErase stm32f0xx_hal_flash_ex.o 0x080015a4 0x00000024 Code RO 3721 i.FLASH_PageErase stm32f0xx_hal_flash_ex.o 0x080015c8 0x00000020 Code RO 3617 i.FLASH_Program_HalfWord stm32f0xx_hal_flash.o 0x080015e8 0x00000038 Code RO 3618 i.FLASH_SetErrorCode stm32f0xx_hal_flash.o 0x08001620 0x00000050 Code RO 3619 i.FLASH_WaitForLastOperation stm32f0xx_hal_flash.o 0x08001670 0x00000050 Code RO 1995 i.FP0_Init fp0.o 0x080016c0 0x000000f8 Code RO 1996 i.FP0_Proc fp0.o 0x080017b8 0x00000014 Code RO 1054 i.GetBitValue modbusrtu.o 0x080017cc 0x00000014 Code RO 1434 i.GetBitValue kmachine.o 0x080017e0 0x000000a0 Code RO 1435 i.GetCoilValue kmachine.o 0x08001880 0x00000026 Code RO 1134 i.GetContinueData myqueue.o 0x080018a6 0x00000026 Code RO 1135 i.GetContinueEmptyRoom myqueue.o 0x080018cc 0x00000024 Code RO 1436 i.GetEventLogAddr kmachine.o 0x080018f0 0x000000d8 Code RO 1437 i.GetVarData kmachine.o 0x080019c8 0x0000002c Code RO 596 i.GetuS functions.o 0x080019f4 0x0000001c Code RO 2671 i.HAL_Delay stm32f0xx_hal.o 0x08001a10 0x000000a0 Code RO 3722 i.HAL_FLASHEx_Erase stm32f0xx_hal_flash_ex.o 0x08001ab0 0x00000014 Code RO 3623 i.HAL_FLASH_Lock stm32f0xx_hal_flash.o 0x08001ac4 0x0000007c Code RO 3628 i.HAL_FLASH_Program stm32f0xx_hal_flash.o 0x08001b40 0x00000024 Code RO 3630 i.HAL_FLASH_Unlock stm32f0xx_hal_flash.o 0x08001b64 0x0000000c Code RO 2675 i.HAL_GetTick stm32f0xx_hal.o 0x08001b70 0x00000010 Code RO 2679 i.HAL_IncTick stm32f0xx_hal.o 0x08001b80 0x00000020 Code RO 2680 i.HAL_Init stm32f0xx_hal.o 0x08001ba0 0x00000022 Code RO 2681 i.HAL_InitTick stm32f0xx_hal.o 0x08001bc2 0x00000002 PAD 0x08001bc4 0x00000044 Code RO 1395 i.HAL_MspInit stm32f0xx_hal_msp.o 0x08001c08 0x00000008 Code RO 3429 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o 0x08001c10 0x000000ec Code RO 2636 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o 0x08001cfc 0x0000012c Code RO 2543 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o 0x08001e28 0x0000000c Code RO 2548 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o 0x08001e34 0x00000080 Code RO 2551 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o 0x08001eb4 0x00000354 Code RO 2554 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o 0x08002208 0x00000018 Code RO 3431 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o 0x08002220 0x00000074 Code RO 2076 i.HAL_SYSTICK_Callback main.o 0x08002294 0x00000030 Code RO 3433 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o 0x080022c4 0x00000008 Code RO 3434 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o 0x080022cc 0x00000002 Code RO 1901 i.HardFault_Handler stm32f0xx_it.o 0x080022ce 0x00000002 PAD 0x080022d0 0x0000004c Code RO 1209 i.InitPLC plcfunctions.o 0x0800231c 0x00000040 Code RO 1210 i.InitTimer plcfunctions.o 0x0800235c 0x0000001e Code RO 245 i.InitUartstat functions.o 0x0800237a 0x00000002 PAD 0x0800237c 0x00000054 Code RO 246 i.InituS functions.o 0x080023d0 0x00000016 Code RO 745 i.KBusBCC kbus.o 0x080023e6 0x00000002 PAD 0x080023e8 0x00000104 Code RO 746 i.KBusCheckPacket kbus.o 0x080024ec 0x0000007e Code RO 747 i.KBusMakePacket kbus.o 0x0800256a 0x00000002 PAD 0x0800256c 0x00000188 Code RO 748 i.KBusMasterFunc kbus.o 0x080026f4 0x00000148 Code RO 749 i.KBusMasterParsePacket kbus.o 0x0800283c 0x00000080 Code RO 750 i.KBusParsePacket kbus.o 0x080028bc 0x00000090 Code RO 752 i.KBusSlaveCheckPacket kbus.o 0x0800294c 0x00000060 Code RO 753 i.KBusSlaveFunc kbus.o 0x080029ac 0x0000017c Code RO 754 i.KBusSlaveParsePacket kbus.o 0x08002b28 0x00000016 Code RO 896 i.KLBCC klink.o 0x08002b3e 0x00000032 Code RO 897 i.KLCheckPacket klink.o 0x08002b70 0x0000003c Code RO 898 i.KLMakeRplyPacket klink.o 0x08002bac 0x00000050 Code RO 899 i.KLParsePacket klink.o 0x08002bfc 0x000006d0 Code RO 900 i.KLParseReqPacket klink.o 0x080032cc 0x00000070 Code RO 1438 i.KMachineInit kmachine.o 0x0800333c 0x00000018 Code RO 1714 i.LL_AHB1_GRP1_EnableClock bsp.o 0x08003354 0x00000018 Code RO 1715 i.LL_APB1_GRP1_EnableClock bsp.o 0x0800336c 0x00000018 Code RO 1716 i.LL_APB1_GRP2_EnableClock bsp.o 0x08003384 0x0000002c Code RO 251 i.LL_DMA_ConfigAddresses functions.o 0x080033b0 0x00000018 Code RO 252 i.LL_DMA_DisableChannel functions.o 0x080033c8 0x00000018 Code RO 253 i.LL_DMA_EnableChannel functions.o 0x080033e0 0x00000018 Code RO 254 i.LL_DMA_EnableIT_TC functions.o 0x080033f8 0x0000001c Code RO 1717 i.LL_DMA_SetChannelPriorityLevel bsp.o 0x08003414 0x0000001c Code RO 255 i.LL_DMA_SetDataLength functions.o 0x08003430 0x00000020 Code RO 1718 i.LL_DMA_SetDataTransferDirection bsp.o 0x08003450 0x0000001c Code RO 1719 i.LL_DMA_SetMemoryIncMode bsp.o 0x0800346c 0x0000001c Code RO 1720 i.LL_DMA_SetMemorySize bsp.o 0x08003488 0x0000001c Code RO 1721 i.LL_DMA_SetMode bsp.o 0x080034a4 0x0000001c Code RO 1722 i.LL_DMA_SetPeriphIncMode bsp.o 0x080034c0 0x0000001c Code RO 1723 i.LL_DMA_SetPeriphSize bsp.o 0x080034dc 0x000000a4 Code RO 2193 i.LL_GPIO_Init stm32f0xx_ll_gpio.o 0x08003580 0x0000000e Code RO 1997 i.LL_GPIO_IsInputPinSet fp0.o 0x0800358e 0x00000002 PAD 0x08003590 0x00000020 Code RO 3797 i.LL_Init1msTick stm32f0xx_ll_utils.o 0x080035b0 0x00000018 Code RO 2481 i.LL_RCC_GetSystemClocksFreq stm32f0xx_ll_rcc.o 0x080035c8 0x00000054 Code RO 2482 i.LL_RCC_GetUSARTClockFreq stm32f0xx_ll_rcc.o 0x0800361c 0x00000064 Code RO 2367 i.LL_SPI_Init stm32f0xx_ll_spi.o 0x08003680 0x00000084 Code RO 3886 i.LL_TIM_Init stm32f0xx_ll_tim.o 0x08003704 0x00000014 Code RO 1724 i.LL_USART_ConfigAsyncMode bsp.o 0x08003718 0x000000ac Code RO 2435 i.LL_USART_Init stm32f0xx_ll_usart.o 0x080037c4 0x00000020 Code RO 3802 i.LL_mDelay stm32f0xx_ll_utils.o 0x080037e4 0x00000014 Code RO 1440 i.LoadDefaultSysCfg kmachine.o 0x080037f8 0x00000064 Code RO 1442 i.LoadRunStat kmachine.o 0x0800385c 0x00000024 Code RO 15 i.Locate debug.o 0x08003880 0x00000026 Code RO 1726 i.MX_DMA_Init bsp.o 0x080038a6 0x00000002 PAD 0x080038a8 0x00000134 Code RO 1727 i.MX_GPIO_Init bsp.o 0x080039dc 0x00000034 Code RO 1728 i.MX_IWDG_Init bsp.o 0x08003a10 0x000000cc Code RO 1729 i.MX_SPI1_Init bsp.o 0x08003adc 0x00000054 Code RO 1731 i.MX_TIM6_Init bsp.o 0x08003b30 0x00000124 Code RO 1732 i.MX_USART1_UART_Init bsp.o 0x08003c54 0x00000158 Code RO 1733 i.MX_USART2_UART_Init bsp.o 0x08003dac 0x00000038 Code RO 1056 i.ModBusSlaveCheckPkg modbusrtu.o 0x08003de4 0x00000320 Code RO 1057 i.ModBusSlaveParsePkg modbusrtu.o 0x08004104 0x00000002 Code RO 1902 i.NMI_Handler stm32f0xx_it.o 0x08004106 0x00000002 PAD 0x08004108 0x00000014 Code RO 1734 i.NVIC_EnableIRQ bsp.o 0x0800411c 0x00000044 Code RO 1735 i.NVIC_SetPriority bsp.o 0x08004160 0x00000044 Code RO 3435 i.NVIC_SetPriority stm32f0xx_hal_cortex.o 0x080041a4 0x000001a8 Code RO 1998 i.ParseFP0Pkg fp0.o 0x0800434c 0x00000020 Code RO 1903 i.PendSV_Handler stm32f0xx_it.o 0x0800436c 0x00000054 Code RO 258 i.PendSvCallBack functions.o 0x080043c0 0x00000020 Code RO 1212 i.PopOutVal plcfunctions.o 0x080043e0 0x00000560 Code RO 1213 i.ProcessPLCBinProg plcfunctions.o 0x08004940 0x000000cc Code RO 1214 i.ProcessTimer plcfunctions.o 0x08004a0c 0x00000082 Code RO 1138 i.PushIn myqueue.o 0x08004a8e 0x00000002 PAD 0x08004a90 0x00000024 Code RO 1215 i.PushInVal plcfunctions.o 0x08004ab4 0x0000001c Code RO 261 i.PutStr functions.o 0x08004ad0 0x0000001c Code RO 262 i.PutStr1 functions.o 0x08004aec 0x0000000c Code RO 263 i.PutStr2 functions.o 0x08004af8 0x0000001c Code RO 2483 i.RCC_GetHCLKClockFreq stm32f0xx_ll_rcc.o 0x08004b14 0x00000018 Code RO 2484 i.RCC_GetPCLK1ClockFreq stm32f0xx_ll_rcc.o 0x08004b2c 0x0000002c Code RO 2485 i.RCC_GetSystemClockFreq stm32f0xx_ll_rcc.o 0x08004b58 0x00000040 Code RO 2486 i.RCC_PLL_GetFreqDomain_SYS stm32f0xx_ll_rcc.o 0x08004b98 0x00000034 Code RO 1444 i.ReadFlashMem kmachine.o 0x08004bcc 0x0000000e Code RO 271 i.ReadJumperSW functions.o 0x08004bda 0x00000002 PAD 0x08004bdc 0x00000060 Code RO 1446 i.ReadSysCfgFromFlash kmachine.o 0x08004c3c 0x00000010 Code RO 1058 i.ResetBit modbusrtu.o 0x08004c4c 0x0000004c Code RO 1217 i.RunTimer plcfunctions.o 0x08004c98 0x00000008 Code RO 1904 i.SPI1_IRQHandler stm32f0xx_it.o 0x08004ca0 0x000000f4 Code RO 272 i.SPI1_IRQ_CallBack functions.o 0x08004d94 0x00000002 Code RO 1905 i.SVC_Handler stm32f0xx_it.o 0x08004d96 0x00000002 PAD 0x08004d98 0x00000080 Code RO 1447 i.SaveRunStat kmachine.o 0x08004e18 0x0000006c Code RO 1999 i.SendFP0Pkg fp0.o 0x08004e84 0x00000038 Code RO 273 i.SendPacket functions.o 0x08004ebc 0x00000010 Code RO 1059 i.SetAddrBit modbusrtu.o 0x08004ecc 0x00000018 Code RO 901 i.SetBitValue klink.o 0x08004ee4 0x00000012 Code RO 1060 i.SetBitValue modbusrtu.o 0x08004ef6 0x00000018 Code RO 1448 i.SetBitValue kmachine.o 0x08004f0e 0x00000002 PAD 0x08004f10 0x00000090 Code RO 1449 i.SetCoilValue kmachine.o 0x08004fa0 0x00000018 Code RO 274 i.SetErr2Led functions.o 0x08004fb8 0x00000018 Code RO 275 i.SetErrLed functions.o 0x08004fd0 0x00000018 Code RO 276 i.SetOutStat functions.o 0x08004fe8 0x00000018 Code RO 277 i.SetRunLed functions.o 0x08005000 0x000000c8 Code RO 1450 i.SetVarData kmachine.o 0x080050c8 0x00000184 Code RO 18 i.ShowInitInfo debug.o 0x0800524c 0x00000070 Code RO 1219 i.StartPLC plcfunctions.o 0x080052bc 0x00000040 Code RO 1220 i.StopPLC plcfunctions.o 0x080052fc 0x00000044 Code RO 1221 i.StopTimer plcfunctions.o 0x08005340 0x0000000c Code RO 1906 i.SysTick_Handler stm32f0xx_it.o 0x0800534c 0x000000a8 Code RO 1736 i.SystemClock_Config bsp.o 0x080053f4 0x0000005c Code RO 2157 i.SystemInit system_stm32f0xx.o 0x08005450 0x00000018 Code RO 1907 i.TIM6_IRQHandler stm32f0xx_it.o 0x08005468 0x00000014 Code RO 279 i.ToggleErrLed functions.o 0x0800547c 0x00000014 Code RO 281 i.ToggleRunLed functions.o 0x08005490 0x00000088 Code RO 1908 i.USART1_IRQHandler stm32f0xx_it.o 0x08005518 0x0000004c Code RO 1909 i.USART2_IRQHandler stm32f0xx_it.o 0x08005564 0x00000020 Code RO 283 i.Uart1RecvDone functions.o 0x08005584 0x00000060 Code RO 284 i.Uart1SendDMA functions.o 0x080055e4 0x00000010 Code RO 285 i.Uart1SendDone functions.o 0x080055f4 0x00000030 Code RO 286 i.Uart1TriggerSendDMA functions.o 0x08005624 0x00000060 Code RO 287 i.Uart2RecvDMA functions.o 0x08005684 0x00000040 Code RO 288 i.Uart2RecvDone functions.o 0x080056c4 0x00000060 Code RO 289 i.Uart2SendDMA functions.o 0x08005724 0x00000010 Code RO 290 i.Uart2SendDone functions.o 0x08005734 0x0000001c Code RO 1451 i.WriteFactoryData kmachine.o 0x08005750 0x00000040 Code RO 1452 i.WriteProgram kmachine.o 0x08005790 0x0000006c Code RO 1453 i.WriteSysCfgToFlash kmachine.o 0x080057fc 0x00000048 Code RO 1454 i.WriteToFlashMemNoErase kmachine.o 0x08005844 0x00000002 Code RO 2078 i._Error_Handler main.o 0x08005846 0x00000002 PAD 0x08005848 0x00000028 Code RO 4224 i.__0sprintf$8 mc_p.l(printf8.o) 0x08005870 0x0000001a Code RO 825 i.__ARM_common_switch8 kbus.o 0x0800588a 0x0000000e Code RO 4322 i.__scatterload_copy mc_p.l(handlers.o) 0x08005898 0x00000002 Code RO 4323 i.__scatterload_null mc_p.l(handlers.o) 0x0800589a 0x0000000e Code RO 4324 i.__scatterload_zeroinit mc_p.l(handlers.o) 0x080058a8 0x00000428 Code RO 4229 i._printf_core mc_p.l(printf8.o) 0x08005cd0 0x00000020 Code RO 4230 i._printf_post_padding mc_p.l(printf8.o) 0x08005cf0 0x0000002c Code RO 4231 i._printf_pre_padding mc_p.l(printf8.o) 0x08005d1c 0x0000000a Code RO 4233 i._sputc mc_p.l(printf8.o) 0x08005d26 0x00000002 PAD 0x08005d28 0x00000018 Code RO 20 i.clearscreen debug.o 0x08005d40 0x0000003c Code RO 294 i.crc16bitbybit functions.o 0x08005d7c 0x00000030 Code RO 295 i.crc16table functions.o 0x08005dac 0x00000040 Code RO 1061 i.crc16tablefast modbusrtu.o 0x08005dec 0x0000002c Code RO 296 i.crc_check functions.o 0x08005e18 0x00000016 Code RO 1140 i.initQueue myqueue.o 0x08005e2e 0x00000002 PAD 0x08005e30 0x00000024 Code RO 298 i.logData functions.o 0x08005e54 0x0000053c Code RO 2079 i.main main.o 0x08006390 0x00000010 Data RO 22 .constdata debug.o 0x080063a0 0x00000406 Data RO 300 .constdata functions.o 0x080067a6 0x00000020 Data RO 1064 .constdata modbusrtu.o 0x080067c6 0x00000018 Data RO 1459 .constdata kmachine.o 0x080067de 0x00000002 PAD 0x080067e0 0x00000090 Data RO 1460 .constdata kmachine.o 0x08006870 0x00000005 Data RO 1737 .constdata bsp.o 0x08006875 0x00000005 Data RO 1910 .constdata stm32f0xx_it.o 0x0800687a 0x00000002 PAD 0x0800687c 0x00000018 Data RO 2082 .constdata main.o 0x08006894 0x00000010 Data RO 2158 .constdata system_stm32f0xx.o 0x080068a4 0x00000008 Data RO 2159 .constdata system_stm32f0xx.o 0x080068ac 0x00000020 Data RO 4320 Region$$Table anon$$obj.o 0x08001268 0x00000024 Code RO 4472 .text mc_p.l(init.o) 0x0800128c 0x00000020 Code RO 4475 .text mc_p.l(llshl.o) 0x080012ac 0x0000008c Code RO 1522 i.AddEventLog kmachine.o 0x08001338 0x0000002c Code RO 1193 i.AddSpace myqueue.o 0x08001364 0x0000006c Code RO 1523 i.CheckEventLog kmachine.o 0x080013d0 0x00000024 Code RO 1525 i.ClearEventLog kmachine.o 0x080013f4 0x000000a0 Code RO 2015 i.DMA1_Channel2_3_IRQHandler stm32f0xx_it.o 0x08001494 0x00000038 Code RO 2016 i.DMA1_Channel4_5_IRQHandler stm32f0xx_it.o 0x080014cc 0x0000002c Code RO 1195 i.DelData myqueue.o 0x080014f8 0x00000060 Code RO 1526 i.EraseAndWriteToFlashMem kmachine.o 0x08001558 0x00000024 Code RO 1527 i.EraseFlashMem kmachine.o 0x0800157c 0x0000001e Code RO 2204 i.FPxCalBCC fpx.o 0x0800159a 0x00000002 PAD 0x0800159c 0x00000044 Code RO 2109 i.FPxCallBackFunc main.o 0x080015e0 0x000001c4 Code RO 2206 i.FPxParsePkt fpx.o 0x080017a4 0x00000078 Code RO 2207 i.FPxSendPkt fpx.o 0x0800181c 0x00000010 Code RO 2208 i.FPxSetCallBackFunc fpx.o 0x0800182c 0x00000064 Code RO 2209 i.FPx_Init fpx.o 0x08001890 0x00000128 Code RO 2210 i.FPx_Proc fpx.o 0x080019b8 0x00000010 Code RO 2211 i.FPx_SetIOCount fpx.o 0x080019c8 0x00000014 Code RO 1112 i.GetBitValue modbusrtu.o 0x080019dc 0x00000014 Code RO 1528 i.GetBitValue kmachine.o 0x080019f0 0x000000a0 Code RO 1529 i.GetCoilValue kmachine.o 0x08001a90 0x00000026 Code RO 1197 i.GetContinueData myqueue.o 0x08001ab6 0x00000026 Code RO 1198 i.GetContinueEmptyRoom myqueue.o 0x08001adc 0x00000024 Code RO 1530 i.GetEventLogAddr kmachine.o 0x08001b00 0x000000d8 Code RO 1531 i.GetVarData kmachine.o 0x08001bd8 0x0000002c Code RO 600 i.GetuS functions.o 0x08001c04 0x0000001c Code RO 2800 i.HAL_Delay stm32f0xx_hal.o 0x08001c20 0x0000000c Code RO 2804 i.HAL_GetTick stm32f0xx_hal.o 0x08001c2c 0x00000010 Code RO 2808 i.HAL_IncTick stm32f0xx_hal.o 0x08001c3c 0x00000020 Code RO 2809 i.HAL_Init stm32f0xx_hal.o 0x08001c5c 0x00000022 Code RO 2810 i.HAL_InitTick stm32f0xx_hal.o 0x08001c7e 0x00000002 PAD 0x08001c80 0x00000044 Code RO 1489 i.HAL_MspInit stm32f0xx_hal_msp.o 0x08001cc4 0x00000008 Code RO 3558 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o 0x08001ccc 0x000000ec Code RO 2765 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o 0x08001db8 0x0000012c Code RO 2672 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o 0x08001ee4 0x0000000c Code RO 2677 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o 0x08001ef0 0x00000080 Code RO 2680 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o 0x08001f70 0x00000354 Code RO 2683 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o 0x080022c4 0x00000018 Code RO 3560 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o 0x080022dc 0x00000074 Code RO 2110 i.HAL_SYSTICK_Callback main.o 0x08002350 0x00000030 Code RO 3562 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o 0x08002380 0x00000008 Code RO 3563 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o 0x08002388 0x00000002 Code RO 2017 i.HardFault_Handler stm32f0xx_it.o 0x0800238a 0x00000002 PAD 0x0800238c 0x0000004c Code RO 1272 i.InitPLC plcfunctions.o 0x080023d8 0x00000040 Code RO 1273 i.InitTimer plcfunctions.o 0x08002418 0x0000001e Code RO 248 i.InitUartstat functions.o 0x08002436 0x00000002 PAD 0x08002438 0x00000054 Code RO 249 i.InituS functions.o 0x0800248c 0x0000006c Code RO 749 i.KBusAddChildAddrByInfo kbus.o 0x080024f8 0x00000016 Code RO 750 i.KBusBCC kbus.o 0x0800250e 0x00000002 PAD 0x08002510 0x00000054 Code RO 2112 i.KBusCallBackFunc main.o 0x08002564 0x00000104 Code RO 751 i.KBusCheckPacket kbus.o 0x08002668 0x00000058 Code RO 753 i.KBusInit kbus.o 0x080026c0 0x00000028 Code RO 755 i.KBusMakeDefaultClildInfo kbus.o 0x080026e8 0x0000008a Code RO 756 i.KBusMakePacket kbus.o 0x08002772 0x00000002 PAD 0x08002774 0x000001c4 Code RO 757 i.KBusMasterFunc kbus.o 0x08002938 0x00000114 Code RO 758 i.KBusMasterParsePacket kbus.o 0x08002a4c 0x00000080 Code RO 759 i.KBusParsePacket kbus.o 0x08002acc 0x0000008c Code RO 761 i.KBusSearchChild kbus.o 0x08002b58 0x00000010 Code RO 762 i.KBusSetCallBackFunc kbus.o 0x08002b68 0x00000090 Code RO 763 i.KBusSlaveCheckPacket kbus.o 0x08002bf8 0x00000060 Code RO 764 i.KBusSlaveFunc kbus.o 0x08002c58 0x000001e0 Code RO 765 i.KBusSlaveParsePacket kbus.o 0x08002e38 0x00000016 Code RO 951 i.KLBCC klink.o 0x08002e4e 0x00000032 Code RO 952 i.KLCheckPacket klink.o 0x08002e80 0x0000004c Code RO 953 i.KLMakeRplyPacket klink.o 0x08002ecc 0x00000050 Code RO 954 i.KLParsePacket klink.o 0x08002f1c 0x00000760 Code RO 955 i.KLParseReqPacket klink.o 0x0800367c 0x00000070 Code RO 1532 i.KMachineInit kmachine.o 0x080036ec 0x00000018 Code RO 1830 i.LL_AHB1_GRP1_EnableClock bsp.o 0x08003704 0x00000018 Code RO 1831 i.LL_APB1_GRP1_EnableClock bsp.o 0x0800371c 0x00000018 Code RO 1832 i.LL_APB1_GRP2_EnableClock bsp.o 0x08003734 0x0000002c Code RO 254 i.LL_DMA_ConfigAddresses functions.o 0x08003760 0x00000018 Code RO 255 i.LL_DMA_DisableChannel functions.o 0x08003778 0x00000018 Code RO 256 i.LL_DMA_EnableChannel functions.o 0x08003790 0x00000018 Code RO 257 i.LL_DMA_EnableIT_TC functions.o 0x080037a8 0x0000001c Code RO 1833 i.LL_DMA_SetChannelPriorityLevel bsp.o 0x080037c4 0x0000001c Code RO 258 i.LL_DMA_SetDataLength functions.o 0x080037e0 0x00000020 Code RO 1834 i.LL_DMA_SetDataTransferDirection bsp.o 0x08003800 0x0000001c Code RO 1835 i.LL_DMA_SetMemoryIncMode bsp.o 0x0800381c 0x0000001c Code RO 1836 i.LL_DMA_SetMemorySize bsp.o 0x08003838 0x0000001c Code RO 1837 i.LL_DMA_SetMode bsp.o 0x08003854 0x0000001c Code RO 1838 i.LL_DMA_SetPeriphIncMode bsp.o 0x08003870 0x0000001c Code RO 1839 i.LL_DMA_SetPeriphSize bsp.o 0x0800388c 0x00000068 Code RO 4129 i.LL_FLASH_Program stm32f0xx_ll_flash.o 0x080038f4 0x00000050 Code RO 4130 i.LL_Flash_PageErase stm32f0xx_ll_flash.o 0x08003944 0x0000002c Code RO 4131 i.LL_Flash_Unlock stm32f0xx_ll_flash.o 0x08003970 0x000000a4 Code RO 2322 i.LL_GPIO_Init stm32f0xx_ll_gpio.o 0x08003a14 0x0000000e Code RO 2212 i.LL_GPIO_IsInputPinSet fpx.o 0x08003a22 0x00000018 Code RO 2610 i.LL_RCC_GetSystemClocksFreq stm32f0xx_ll_rcc.o 0x08003a3a 0x00000002 PAD 0x08003a3c 0x00000054 Code RO 2611 i.LL_RCC_GetUSARTClockFreq stm32f0xx_ll_rcc.o 0x08003a90 0x00000064 Code RO 2496 i.LL_SPI_Init stm32f0xx_ll_spi.o 0x08003af4 0x00000084 Code RO 4015 i.LL_TIM_Init stm32f0xx_ll_tim.o 0x08003b78 0x00000014 Code RO 1840 i.LL_USART_ConfigAsyncMode bsp.o 0x08003b8c 0x000000ac Code RO 2564 i.LL_USART_Init stm32f0xx_ll_usart.o 0x08003c38 0x00000014 Code RO 1534 i.LoadDefaultSysCfg kmachine.o 0x08003c4c 0x00000064 Code RO 1536 i.LoadRunStat kmachine.o 0x08003cb0 0x00000024 Code RO 15 i.Locate debug.o 0x08003cd4 0x00000026 Code RO 1842 i.MX_DMA_Init bsp.o 0x08003cfa 0x00000002 PAD 0x08003cfc 0x00000134 Code RO 1843 i.MX_GPIO_Init bsp.o 0x08003e30 0x00000034 Code RO 1844 i.MX_IWDG_Init bsp.o 0x08003e64 0x000000cc Code RO 1845 i.MX_SPI1_Init bsp.o 0x08003f30 0x00000054 Code RO 1847 i.MX_TIM6_Init bsp.o 0x08003f84 0x00000124 Code RO 1848 i.MX_USART1_UART_Init bsp.o 0x080040a8 0x00000158 Code RO 1849 i.MX_USART2_UART_Init bsp.o 0x08004200 0x00000038 Code RO 1114 i.ModBusSlaveCheckPkg modbusrtu.o 0x08004238 0x00000320 Code RO 1115 i.ModBusSlaveParsePkg modbusrtu.o 0x08004558 0x00000002 Code RO 2018 i.NMI_Handler stm32f0xx_it.o 0x0800455a 0x00000002 PAD 0x0800455c 0x00000014 Code RO 1850 i.NVIC_EnableIRQ bsp.o 0x08004570 0x00000044 Code RO 1851 i.NVIC_SetPriority bsp.o 0x080045b4 0x00000044 Code RO 3564 i.NVIC_SetPriority stm32f0xx_hal_cortex.o 0x080045f8 0x00000020 Code RO 2019 i.PendSV_Handler stm32f0xx_it.o 0x08004618 0x0000004c Code RO 261 i.PendSvCallBack functions.o 0x08004664 0x00000020 Code RO 1275 i.PopOutVal plcfunctions.o 0x08004684 0x00000560 Code RO 1276 i.ProcessPLCBinProg plcfunctions.o 0x08004be4 0x000000cc Code RO 1277 i.ProcessTimer plcfunctions.o 0x08004cb0 0x00000082 Code RO 1201 i.PushIn myqueue.o 0x08004d32 0x00000002 PAD 0x08004d34 0x00000024 Code RO 1278 i.PushInVal plcfunctions.o 0x08004d58 0x0000001c Code RO 264 i.PutStr functions.o 0x08004d74 0x0000001c Code RO 265 i.PutStr1 functions.o 0x08004d90 0x0000000c Code RO 266 i.PutStr2 functions.o 0x08004d9c 0x0000001c Code RO 2612 i.RCC_GetHCLKClockFreq stm32f0xx_ll_rcc.o 0x08004db8 0x00000018 Code RO 2613 i.RCC_GetPCLK1ClockFreq stm32f0xx_ll_rcc.o 0x08004dd0 0x0000002c Code RO 2614 i.RCC_GetSystemClockFreq stm32f0xx_ll_rcc.o 0x08004dfc 0x00000040 Code RO 2615 i.RCC_PLL_GetFreqDomain_SYS stm32f0xx_ll_rcc.o 0x08004e3c 0x00000034 Code RO 1538 i.ReadFlashMem kmachine.o 0x08004e70 0x0000000e Code RO 274 i.ReadJumperSW functions.o 0x08004e7e 0x00000002 PAD 0x08004e80 0x00000060 Code RO 1540 i.ReadSysCfgFromFlash kmachine.o 0x08004ee0 0x00000010 Code RO 1116 i.ResetBit modbusrtu.o 0x08004ef0 0x0000004c Code RO 1280 i.RunTimer plcfunctions.o 0x08004f3c 0x00000008 Code RO 2020 i.SPI1_IRQHandler stm32f0xx_it.o 0x08004f44 0x000000c0 Code RO 275 i.SPI1_IRQ_CallBack functions.o 0x08005004 0x00000002 Code RO 2021 i.SVC_Handler stm32f0xx_it.o 0x08005006 0x00000002 PAD 0x08005008 0x00000080 Code RO 1541 i.SaveRunStat kmachine.o 0x08005088 0x00000038 Code RO 276 i.SendPacket functions.o 0x080050c0 0x00000010 Code RO 1117 i.SetAddrBit modbusrtu.o 0x080050d0 0x00000018 Code RO 956 i.SetBitValue klink.o 0x080050e8 0x00000012 Code RO 1118 i.SetBitValue modbusrtu.o 0x080050fa 0x00000018 Code RO 1542 i.SetBitValue kmachine.o 0x08005112 0x00000002 PAD 0x08005114 0x00000090 Code RO 1543 i.SetCoilValue kmachine.o 0x080051a4 0x00000018 Code RO 277 i.SetErr2Led functions.o 0x080051bc 0x00000018 Code RO 278 i.SetErrLed functions.o 0x080051d4 0x00000018 Code RO 279 i.SetOutStat functions.o 0x080051ec 0x00000018 Code RO 280 i.SetRunLed functions.o 0x08005204 0x000000c8 Code RO 1544 i.SetVarData kmachine.o 0x080052cc 0x00000184 Code RO 18 i.ShowInitInfo debug.o 0x08005450 0x00000070 Code RO 1282 i.StartPLC plcfunctions.o 0x080054c0 0x00000040 Code RO 1283 i.StopPLC plcfunctions.o 0x08005500 0x00000044 Code RO 1284 i.StopTimer plcfunctions.o 0x08005544 0x0000000c Code RO 2022 i.SysTick_Handler stm32f0xx_it.o 0x08005550 0x000000a8 Code RO 1852 i.SystemClock_Config bsp.o 0x080055f8 0x0000005c Code RO 2286 i.SystemInit system_stm32f0xx.o 0x08005654 0x00000018 Code RO 2023 i.TIM6_IRQHandler stm32f0xx_it.o 0x0800566c 0x00000088 Code RO 2024 i.USART1_IRQHandler stm32f0xx_it.o 0x080056f4 0x0000004c Code RO 2025 i.USART2_IRQHandler stm32f0xx_it.o 0x08005740 0x00000020 Code RO 286 i.Uart1RecvDone functions.o 0x08005760 0x00000060 Code RO 287 i.Uart1SendDMA functions.o 0x080057c0 0x00000010 Code RO 288 i.Uart1SendDone functions.o 0x080057d0 0x00000030 Code RO 289 i.Uart1TriggerSendDMA functions.o 0x08005800 0x00000060 Code RO 290 i.Uart2RecvDMA functions.o 0x08005860 0x00000040 Code RO 291 i.Uart2RecvDone functions.o 0x080058a0 0x00000060 Code RO 292 i.Uart2SendDMA functions.o 0x08005900 0x00000010 Code RO 293 i.Uart2SendDone functions.o 0x08005910 0x0000001c Code RO 1545 i.WriteFactoryData kmachine.o 0x0800592c 0x00000020 Code RO 1546 i.WriteNewApp kmachine.o 0x0800594c 0x00000014 Code RO 1547 i.WriteNewAppInfo kmachine.o 0x08005960 0x00000040 Code RO 1548 i.WriteProgram kmachine.o 0x080059a0 0x0000006c Code RO 1549 i.WriteSysCfgToFlash kmachine.o 0x08005a0c 0x00000050 Code RO 1550 i.WriteToFlashMemNoErase kmachine.o 0x08005a5c 0x00000002 Code RO 2113 i._Error_Handler main.o 0x08005a5e 0x00000002 PAD 0x08005a60 0x00000028 Code RO 4388 i.__0sprintf$8 mc_p.l(printf8.o) 0x08005a88 0x0000001a Code RO 1170 i.__ARM_common_switch8 modbusrtu.o 0x08005aa2 0x0000000e Code RO 4486 i.__scatterload_copy mc_p.l(handlers.o) 0x08005ab0 0x00000002 Code RO 4487 i.__scatterload_null mc_p.l(handlers.o) 0x08005ab2 0x0000000e Code RO 4488 i.__scatterload_zeroinit mc_p.l(handlers.o) 0x08005ac0 0x00000428 Code RO 4393 i._printf_core mc_p.l(printf8.o) 0x08005ee8 0x00000020 Code RO 4394 i._printf_post_padding mc_p.l(printf8.o) 0x08005f08 0x0000002c Code RO 4395 i._printf_pre_padding mc_p.l(printf8.o) 0x08005f34 0x0000000a Code RO 4397 i._sputc mc_p.l(printf8.o) 0x08005f3e 0x00000002 PAD 0x08005f40 0x00000018 Code RO 20 i.clearscreen debug.o 0x08005f58 0x0000003c Code RO 297 i.crc16bitbybit functions.o 0x08005f94 0x00000030 Code RO 298 i.crc16table functions.o 0x08005fc4 0x00000040 Code RO 1119 i.crc16tablefast modbusrtu.o 0x08006004 0x0000002c Code RO 299 i.crc_check functions.o 0x08006030 0x00000016 Code RO 1203 i.initQueue myqueue.o 0x08006046 0x00000002 PAD 0x08006048 0x00000024 Code RO 301 i.logData functions.o 0x0800606c 0x000004dc Code RO 2114 i.main main.o 0x08006548 0x00000010 Data RO 22 .constdata debug.o 0x08006558 0x00000406 Data RO 304 .constdata functions.o 0x0800695e 0x00000020 Data RO 1122 .constdata modbusrtu.o 0x0800697e 0x00000018 Data RO 1555 .constdata kmachine.o 0x08006996 0x00000002 PAD 0x08006998 0x00000090 Data RO 1556 .constdata kmachine.o 0x08006a28 0x00000005 Data RO 1853 .constdata bsp.o 0x08006a2d 0x00000005 Data RO 2026 .constdata stm32f0xx_it.o 0x08006a32 0x00000002 PAD 0x08006a34 0x00000018 Data RO 2117 .constdata main.o 0x08006a4c 0x00000010 Data RO 2287 .constdata system_stm32f0xx.o 0x08006a5c 0x00000008 Data RO 2288 .constdata system_stm32f0xx.o 0x08006a64 0x00000020 Data RO 4484 Region$$Table anon$$obj.o Execution Region RW_IRAM1 (Base: 0x200000c0, Size: 0x00001b40, Max: 0x00001f40, ABSOLUTE) Execution Region RW_IRAM1 (Base: 0x200000c0, Size: 0x00001ea8, Max: 0x00001f40, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x200000c0 0x00000014 Data RW 24 .data debug.o 0x200000d4 0x00000004 Data RW 303 .data functions.o 0x200000d8 0x00000018 Data RW 304 .data functions.o 0x200000f0 0x00000004 Data RW 718 .data globaldef.o 0x200000f4 0x00000004 Data RW 719 .data globaldef.o 0x200000f8 0x00000004 Data RW 720 .data globaldef.o 0x200000fc 0x00000004 Data RW 721 .data globaldef.o 0x200000c0 0x00000018 Data RW 24 .data debug.o 0x200000d8 0x00000004 Data RW 307 .data functions.o 0x200000dc 0x00000020 Data RW 308 .data functions.o 0x200000fc 0x00000004 Data RW 722 .data globaldef.o 0x20000100 0x00000004 Data RW 723 .data globaldef.o 0x20000104 0x00000004 Data RW 725 .data globaldef.o 0x20000108 0x00000004 Data RW 726 .data globaldef.o 0x2000010c 0x00000038 Data RW 758 .data kbus.o 0x20000144 0x0000000c Data RW 905 .data klink.o 0x20000150 0x00000001 Data RW 1065 .data modbusrtu.o 0x20000151 0x00000003 PAD 0x20000154 0x00000004 Data RW 1224 .data plcfunctions.o 0x20000158 0x00000024 Data RW 1461 .data kmachine.o 0x2000017c 0x00000018 Data RW 2005 .data fp0.o 0x20000194 0x00000001 Data RW 2007 .data fp0.o 0x20000195 0x00000001 Data RW 2008 .data fp0.o 0x20000196 0x00000001 Data RW 2009 .data fp0.o 0x20000197 0x00000001 PAD 0x20000198 0x00000028 Data RW 2083 .data main.o 0x200001c0 0x00000004 Data RW 2160 .data system_stm32f0xx.o 0x200001c4 0x00000004 Data RW 2686 .data stm32f0xx_hal.o 0x200001c8 0x00000100 Zero RW 21 .bss debug.o 0x200002c8 0x00000094 Zero RW 712 .bss globaldef.o 0x2000035c 0x00000094 Zero RW 713 .bss globaldef.o 0x200003f0 0x00000080 Zero RW 714 .bss globaldef.o 0x20000470 0x00000080 Zero RW 716 .bss globaldef.o 0x200004f0 0x000004a0 Zero RW 755 .bss kbus.o 0x20000990 0x00000110 Zero RW 903 .bss klink.o 0x20000aa0 0x00000080 Zero RW 1063 .bss modbusrtu.o 0x20000b20 0x00000208 Zero RW 1222 .bss plcfunctions.o 0x20000d28 0x00000080 Zero RW 1457 .bss kmachine.o 0x20000da8 0x000007d4 Zero RW 1458 .bss kmachine.o 0x2000157c 0x00000040 Zero RW 2001 .bss fp0.o 0x200015bc 0x00000020 Zero RW 2002 .bss fp0.o 0x200015dc 0x00000204 Zero RW 2080 .bss main.o 0x200017e0 0x00000020 Zero RW 3631 .bss stm32f0xx_hal_flash.o 0x20001800 0x00000400 Zero RW 1 STACK startup_stm32f030x8.o 0x20000104 0x00000004 Data RW 724 .data globaldef.o 0x20000108 0x00000004 Data RW 725 .data globaldef.o 0x2000010c 0x00000004 Data RW 727 .data globaldef.o 0x20000110 0x00000004 Data RW 729 .data globaldef.o 0x20000114 0x00000004 Data RW 730 .data globaldef.o 0x20000118 0x00000034 Data RW 770 .data kbus.o 0x2000014c 0x00000004 Data RW 772 .data kbus.o 0x20000150 0x0000000c Data RW 960 .data klink.o 0x2000015c 0x00000001 Data RW 1123 .data modbusrtu.o 0x2000015d 0x00000003 PAD 0x20000160 0x00000004 Data RW 1287 .data plcfunctions.o 0x20000164 0x00000024 Data RW 1557 .data kmachine.o 0x20000188 0x00000028 Data RW 2118 .data main.o 0x200001b0 0x00000004 Data RW 2289 .data system_stm32f0xx.o 0x200001b4 0x00000004 Data RW 2815 .data stm32f0xx_hal.o 0x200001b8 0x00000120 Zero RW 21 .bss debug.o 0x200002d8 0x00000080 Zero RW 303 .bss functions.o 0x20000358 0x00000094 Zero RW 716 .bss globaldef.o 0x200003ec 0x00000094 Zero RW 717 .bss globaldef.o 0x20000480 0x00000080 Zero RW 718 .bss globaldef.o 0x20000500 0x00000080 Zero RW 720 .bss globaldef.o 0x20000580 0x00000758 Zero RW 768 .bss kbus.o 0x20000cd8 0x00000110 Zero RW 958 .bss klink.o 0x20000de8 0x00000080 Zero RW 1121 .bss modbusrtu.o 0x20000e68 0x00000208 Zero RW 1285 .bss plcfunctions.o 0x20001070 0x00000080 Zero RW 1553 .bss kmachine.o 0x200010f0 0x000007d4 Zero RW 1554 .bss kmachine.o 0x200018c4 0x00000204 Zero RW 2115 .bss main.o 0x20001ac8 0x0000009c Zero RW 2213 .bss fpx.o 0x20001b64 0x00000004 PAD 0x20001b68 0x00000400 Zero RW 1 STACK startup_stm32f030x8.o ============================================================================== @@ -2600,38 +2622,36 @@ Code (inc. data) RO Data RW Data ZI Data Debug Object Name 1870 184 5 0 0 82975 bsp.o 452 162 16 20 256 267019 debug.o 904 88 0 27 96 20068 fp0.o 1556 324 1030 28 0 240243 functions.o 452 162 16 24 288 266384 debug.o 1044 124 0 0 156 20932 fpx.o 1456 274 1030 36 128 240218 functions.o 0 0 0 28 552 2525 globaldef.o 1902 180 0 56 1184 13887 kbus.o 1980 112 0 12 272 11173 klink.o 1966 226 168 36 2132 28954 kmachine.o 1458 232 24 40 516 60567 main.o 990 44 32 1 128 9041 modbusrtu.o 2388 160 0 56 1880 16047 kbus.o 2140 106 0 12 272 201231 klink.o 2056 248 168 36 2132 202670 kmachine.o 1514 254 24 40 516 61836 main.o 1016 44 32 1 128 9113 modbusrtu.o 316 0 0 0 0 5527 myqueue.o 2108 204 0 4 520 16362 plcfunctions.o 2108 204 0 4 520 24057 plcfunctions.o 28 8 180 0 1024 628 startup_stm32f030x8.o 122 18 0 4 0 3635 stm32f0xx_hal.o 156 22 0 0 0 9451 stm32f0xx_hal_cortex.o 348 54 0 0 32 4754 stm32f0xx_hal_flash.o 232 30 0 0 0 3081 stm32f0xx_hal_flash_ex.o 68 4 0 0 0 12850 stm32f0xx_hal_msp.o 1292 88 0 0 0 4486 stm32f0xx_hal_rcc.o 236 14 0 0 0 1420 stm32f0xx_hal_rcc_ex.o 510 74 5 0 0 55105 stm32f0xx_it.o 228 22 0 0 0 5154 stm32f0xx_ll_flash.o 164 0 0 0 0 6711 stm32f0xx_ll_gpio.o 268 52 0 0 0 16728 stm32f0xx_ll_rcc.o 100 8 0 0 0 11270 stm32f0xx_ll_spi.o 132 24 0 0 0 30594 stm32f0xx_ll_tim.o 172 16 0 0 0 16964 stm32f0xx_ll_usart.o 64 10 0 0 0 5485 stm32f0xx_ll_utils.o 92 14 24 4 0 1179 system_stm32f0xx.o ---------------------------------------------------------------------- 19518 2192 1520 264 6712 942682 Object Totals 19958 2124 1520 248 7600 1309690 Object Totals 0 0 32 0 0 0 (incl. Generated) 32 0 4 4 0 0 (incl. Padding) 30 0 4 3 4 0 (incl. Padding) ---------------------------------------------------------------------- @@ -2678,15 +2698,15 @@ Code (inc. data) RO Data RW Data ZI Data Debug 21212 2256 1520 264 6712 935798 Grand Totals 21212 2256 1520 264 6712 935798 ELF Image Totals 21212 2256 1520 264 0 0 ROM Totals 21652 2188 1520 248 7600 1302762 Grand Totals 21652 2188 1520 248 7600 1302762 ELF Image Totals 21652 2188 1520 248 0 0 ROM Totals ============================================================================== Total RO Size (Code + RO Data) 22732 ( 22.20kB) Total RW Size (RW Data + ZI Data) 6976 ( 6.81kB) Total ROM Size (Code + RO Data + RW Data) 22996 ( 22.46kB) Total RO Size (Code + RO Data) 23172 ( 22.63kB) Total RW Size (RW Data + ZI Data) 7848 ( 7.66kB) Total ROM Size (Code + RO Data + RW Data) 23420 ( 22.87kB) ============================================================================== C8T6_TestApp1/MDK-ARM/RTE/_F030C8T6_TestApp1/RTE_Components.h
@@ -3,7 +3,7 @@ * Auto generated Run-Time-Environment Component Configuration File * *** Do not modify ! *** * * Project: 'F030C8T6_TestApp1' * Project: 'F030C8T6_Ext_FPx_New' * Target: 'F030C8T6_TestApp1' */ C8T6_TestApp1/Src/BoardType.c
@@ -0,0 +1,34 @@ #include "BoardType.h" #include "KBusDefine.h" const stDeviceInfo MyDeviceInfo={ (BOARD_TYPE<<8) + BOARD_VER, //nDeviceTypeVer // unsigned short ClientType; // 子机类型 0x0109, //ProgVer // unsigned short ClientVer; // 子机版本 DINPUT, // unsigned char InBitCount; // 输入开关量数量 DOUTPUT, // unsigned char OutBitCount; // 输出开关量数量 0, // unsigned char InDWCount; // 输入数据字数 0, // unsigned char OutDWCount; // 输出数据字数 0, // unsigned char AIWCount; // 输入模拟量通道(字)数 // 16位为一个字(通道) 0, // unsigned char AQWCount; // 输出模拟量通道(字)数 // 16位为一个字(通道) // 0, // unsigned char AIBits; // 每通道位数 // 16位以下 // 0, // unsigned char AQbits; // 每通道位数 // 16位以下 }; const stExDeviceInfo MyExDeviceInfo ={ (BOARD_TYPE<<8) + BOARD_VER, //nDeviceTypeVer // unsigned short ClientType; // 子机类型 0x0109, //ProgVer // unsigned short ClientVer; // 子机版本 DINPUT, // unsigned char InBitCount; // 输入开关量数量 DOUTPUT, // unsigned char OutBitCount; // 输出开关量数量 0, // unsigned char InDWCount; // 输入数据字数 0, // unsigned char OutDWCount; // 输出数据字数 0, // unsigned char AIWCount; // 输入模拟量通道(字)数 // 16位为一个字(通道) 0, // unsigned char AQWCount; // 输出模拟量通道(字)数 // 16位为一个字(通道) // 0, // unsigned char AIBits; // 每通道位数 // 16位以下 // 0, // unsigned char AQbits; // 每通道位数 // 16位以下 }; C8T6_TestApp1/Src/FP0.c
File was deleted C8T6_TestApp1/Src/FPx.c
New file @@ -0,0 +1,304 @@ /** ****************************************************************************** * @file : FPx.c * @brief : FPx funcstions program body ****************************************************************************** */ #include "globaldef.h" #include "FPx.h" #include "string.h" #include "functions.h" // uint8_t PktBuf1[64]; uint8_t PktBuf2[64]; uint8_t PktLen1=0; uint8_t PktLen2=0; /* uint8_t bReceiving; uint8_t nReceivedLen; uint8_t bSending; uint8_t bSentLen; uint8_t bConfiged=0; uint8_t nConfigStationId=0; uint8_t nInputBytes=8; uint8_t nOutputBytes=8; uint8_t nIndex=0; volatile uint8_t oldSYN=0; int RSTCount0; uint8_t bFirstReq = 0; FPxCBFuncDef FPxCBFunc; uint8_t bFPxCallBackFuncSet = 0; */ stFPxStat FPxStat; stFPxMem FPxMem; uint8_t FPx_Init(int nChilds) { bSPI1Sending=0; bSPI1Recving=0; if (nChilds==0) { FPxStat.nInputBytes=1; //根据子机数量,报告扩展容量 FPxStat.nOutputBytes=1; } else if (nChilds ==1) { FPxStat.nInputBytes=3; //只有一个子机也分配一个完整DT FPxStat.nOutputBytes=2; } else { FPxStat.nInputBytes=nChilds+1; //根据子机数量,报告扩展容量 FPxStat.nOutputBytes=nChilds; } SetACKPin_0(); SetACKPin_0(); SetFPxDEPin_0(); HAL_Delay(10); FPxStat.RSTCount0=GetuS(); return 0; } uint8_t FPx_SetIOCount(int nInputBytes, int nOutputBytes) { FPxStat.nInputBytes=nInputBytes; //设置扩展容量,字节单位 FPxStat.nOutputBytes=nOutputBytes; return 0; } int FPxSetCallBackFunc(FPxCBFuncDef func1) { FPxStat.FPxCBFunc = func1; FPxStat.bFPxCallBackFuncSet = 1; return 0; } uint8_t FPx_Proc() { uchar CurRST=GetRSTPin(); uchar CurSEL=GetSELPin(); uchar CurSYN=GetSYNPin(); uchar CurACK=GetACKPin(); uchar CurOE=GetOEPin(); // KMem.WY[4]=CurRST; // KMem.WY[5]=CurSEL; // KMem.WY[6]=CurSYN; // KMem.WY[7]=CurACK; if (CurOE) { for (int j=0;j<FPxStat.nOutputBytes;j++) { FPxMem.WLYB[j]=0; } if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxStateChange,0,0); if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxDataUpdate,0,0); } if (!CurRST) {FPxStat.RSTCount0=GetuS();} if (!FPxStat.bFirstReq && CurRST) { int RSTCount = GetuS() - FPxStat.RSTCount0 ; if (RSTCount>=10000) { SetACKPin_1(); FPxStat.bFirstReq=1; // RSTCount=0; // bSPI1Recving=1; // KMem.WX[7]=RSTCount/1000; } } if (CurSYN ==0 && FPxStat.oldSYN != 0) { KMem.WDT[121] = KMem.WDT[122]; KMem.WDT[122]=0; } if (CurSEL && CurSYN !=0 && FPxStat.oldSYN == 0){ bSPI1Recving=1; nSPI1RecvPos=0; LL_SPI_Disable(SPI2); nSPI1RecvPos=0; LL_SPI_Enable(SPI2); } if (CurSEL && CurSYN && !bSPI1Sending && !bSPI1Recving) { bSPI1Recving=1; nSPI1RecvPos=0; } if (CurSYN == 0){ bSPI1Recving=0; nSPI1RecvPos=0; } FPxStat.oldSYN=CurSYN; /* if (bSPI1RecvDone) { bSPI1RecvDone=0; ParsePkt(SPI1RecvBuf,nSPI1RecvLenInBuf); } // */ return 0; } uint8_t FPxCalBCC(uint8_t* pBuf, uint8_t len1) { uint8_t BCC=0; for (int i=0;i<len1;i++) { BCC+=pBuf[i]&0x0f; } BCC&=0x0f; return BCC; } uint8_t FPxChecPkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; return res; } uint8_t FPxParsePkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; uint8_t nST=pBuf[0]; uint8_t nCMD=nST&0x7; uint8_t nStationID=nST&0xf8; logData(0xff); if (nStationID<0x80) return 0; switch (nCMD) { case CMD_0_QUERY: if (!FPxStat.bConfiged || (FPxStat.bConfiged && nStationID == FPxStat.nConfigStationId)) { KMem.WDT[8]++; pFPxQuRplyPkt p1 = (pFPxQuRplyPkt)PktBuf2; p1->Hdr1=nST; p1->nInputBytes=0x30|FPxStat.nInputBytes; p1->nOutputBytes=0x30|FPxStat.nOutputBytes; p1->nParam1=0x30|0x05; p1->nBCC= 0x30|FPxCalBCC(PktBuf2,4); p1->End1=0x0d; logData(0x11); FPxSendPkt(PktBuf2,sizeof(stFPxQuRplyPkt)); FPxStat.nConfigStationId=nStationID; FPxStat.bConfiged=1; if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxStateChange,0,0); } bSPI1Recving=1; break; case CMD_1: KMem.WDT[9]++; // bSPI1Recving=1; break; case CMD_2: KMem.WDT[10]++; // bSPI1Recving=1; break; case CMD_3_EXCHG: if (!FPxStat.bConfiged || FPxStat.nConfigStationId != nStationID) { bSPI1Recving=1; break; } KMem.WDT[11]++; { for (int j=0;j<FPxStat.nOutputBytes;j++) { FPxMem.WLYB[j]=((pBuf[j*2 + 1]&0xf)<<4) + ((pBuf[j*2 + 2]&0xf)<<0); } /* test for (int j=0;j<nOutputBytes;j++) { KMem.WYB[j]=(0xff); } // */ if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxDataUpdate,0,0); // KMem.WDT[2]=((pBuf[1]&0xf)<<4) + ((pBuf[2]&0xf)<<0) + ((pBuf[3]&0xf)<<12) + ((pBuf[4]&0xf)<<8); pFPxEXGRplyPkt p1 = (pFPxEXGRplyPkt)PktBuf2; p1->Hdr1=nST; for (int j=0;j<FPxStat.nInputBytes;j++) { p1->nInputBytes[j*2 + 0]=0x30|HiHofB(FPxMem.WLXB[j]); //((KMem.DT[0]>>4)&0x0f); p1->nInputBytes[j*2 + 1]=0x30|LoHofB(FPxMem.WLXB[j]); //((KMem.DT[0]>>0)&0x0f); } //p1->nInputBytes[0]=0x30|HiHofB(LoBofW(KMem.DT[0])); //((KMem.DT[0]>>4)&0x0f); //p1->nInputBytes[1]=0x30|LoHofB(LoBofW(KMem.DT[0])); //((KMem.DT[0]>>0)&0x0f); //p1->nInputBytes[2]=0x30|HiHofB(HiBofW(KMem.DT[0])); //((KMem.DT[0]>>12)&0x0f); //p1->nInputBytes[3]=0x30|LoHofB(HiBofW(KMem.DT[0])); //((KMem.DT[0]>>8)&0x0f); //p1->nInputBytes[4]=0x30|((KMem.DT[1]>>4)&0x0f); //p1->nInputBytes[5]=0x30|((KMem.DT[1]>>0)&0x0f); PktBuf2[FPxStat.nInputBytes*2 + 1 ]=0x30|FPxCalBCC(PktBuf2,FPxStat.nInputBytes*2+1); // p1->nBCC= 0x30|CalBCC(PktBuf2,7); PktBuf2[FPxStat.nInputBytes*2 + 2 ]=0x0d; // p1->End1=0x0d; FPxSendPkt(PktBuf2,FPxStat.nInputBytes*2 + 3); } bSPI1Recving=1; break; case CMD_4: KMem.WDT[12]++; // bSPI1Recving=1; break; case CMD_5: KMem.WDT[13]++; // bSPI1Recving=1; break; case CMD_6: KMem.WDT[14]++; // bSPI1Recving=1; break; case CMD_7_END: KMem.WDT[15]++; if (FPxStat.bConfiged && FPxStat.nConfigStationId == nStationID) { //SetFPxDEPin_0(); SetACKPin_1(); } bSPI1Recving=1; break; default: KMem.WDT[18]++; bSPI1Recving=1; break; } KMem.WDT[24+(len1&0x0f)]++; return res; } uint8_t FPxSendPkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; KMem.WR[len1&0x0f]++; if (!bSPI1Sending) { uint8_t value; memcpy(SPI1SendBuf,pBuf,len1); nSPI1ToSendLen=len1; nSPI1SentLen=0; // SetFPxDEPin_1(); // SetACKPin_0(); value = SPI1SendBuf[nSPI1SentLen]; LL_SPI_TransmitData8(SPI1,value); bSPI1Sending=1; logData(value); // passive mode SetFPxDEPin_1(); SetACKPin_0(); } return res; } C8T6_TestApp1/Src/main.c
@@ -56,7 +56,7 @@ #include "../src/Ethernet/socket.h" #include "../src/Ethernet/loopback.h" #elif (BOARD_TYPE == 14) #include "FP0.h" #include "FPx.h" #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) #include "KWireless.h" //#include "user.h" @@ -87,9 +87,23 @@ uint32_t us1,us2,us3,us4,us5,us6; stKBusDef KBus1; #define RAM_START_ADDR 0x20000000 #define VECTOR_SIZE 45 #define ApplicationAddress 0x08001000 //应用程序首地址定义 /* static void RemapIrqVector(void) { memcpy((void*)RAM_START_ADDR, (void *)ApplicationAddress, VECTOR_SIZE * 4); LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); }*/ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ @@ -118,7 +132,7 @@ static int Count=0; CurTickuS += 100; nCurTick++; nSlaveTick++; KBus1.nSlaveTick++; Count++; if (Count>=10000) { @@ -132,16 +146,102 @@ return; } #define RAM_START_ADDR 0x20000000 #define VECTOR_SIZE 45 #define ApplicationAddress 0x08001000 //应用程序首地址定义 static void RemapIrqVector(void) void PendSvCallBack() { memcpy((void*)RAM_START_ADDR, (void *)ApplicationAddress, VECTOR_SIZE * 4); LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); #if (BOARD_TYPE == 14) ///* if (bSPI1RecvDone) { bSPI1RecvDone=0; FPxParsePkt(SPI1RecvBuf,nSPI1RecvLenInBuf); } //*/ #endif if (Uart2Stat.bPacketRecved) { KBusParsePacket(&KBus1, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); Uart2RecvBuf1DataLen=0; Uart2Stat.bPacketRecved=0; Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); } } /* FPx通讯回调函数,当通讯状态改变或数据更新时被调用。 */ void * FPxCallBackFunc(int nEvent, void * pBuf, int nLen1) { switch (nEvent){ case evFPxNone: break; case evFPxCreate: break; case evFPxConnected: break; case evFPxDisConnected: break; case evFPxClosed: break; case evFPxStateChange: break; case evFPxTimeSync: break; case evFPxDataUpdate: for (int i=0;i<16;i++){ KBusMem.WLY[i]=FPxMem.WLY[i]; } for (int i=0;i<16;i++) { FPxMem.WLX[i]=KBusMem.WLX[i]; } // KBusMem.WLY[0]=0x0301; break; default: break; } return 0; } /* KBus通讯回调函数,当通讯状态改变或数据更新时被调用。 或者系统请求时。 */ void * KBusEvCallBackFunc(void* pParam, int nEvent, void *pBuf, int nLen1) { switch (nEvent){ case KBusEvNone: break; case KBusEvCreate: break; case KBusEvConnected: break; case KBusEvDisConnected: break; case KBusEvClosed: break; case KBusEvStateChange: break; case KBusEvTimeSync: break; case KBusEvDataUpdate: for (int i=0;i<16;i++){ KBusMem.WLY[i]=FPxMem.WLY[i]; } for (int i=0;i<16;i++) { KMem.WLX[i]=KBusMem.WLX[i]; FPxMem.WLX[i]=KBusMem.WLX[i]; } // KBusMem.WLY[0]=0x0301; break; default: break; } return 0; } /* USER CODE END 0 */ @@ -155,28 +255,6 @@ /* USER CODE BEGIN 1 */ // RemapIrqVector(); ///* LL_Init1msTick(8000000); // MX_GPIO_Init(); SetRunLed(1); //Turn On Run Led SetErrLed(0); //Turn Off Err Led int nCount=0; while (1) { SlowFlicker=0; FastFlicker=1; us1=GetuS(); LL_mDelay(10); ToggleRunLed(); ToggleErrLed(); // ToggleErr2Led(); // LL_IWDG_ReloadCounter(IWDG); nCount++; if (nCount >4) break; } //while (1) ; //*/ __set_PRIMASK(0); //打开全局中断 KMRunStat.bLEDFlick = 1; @@ -192,22 +270,7 @@ /* USER CODE BEGIN Init */ for (int i=0;i<9;i++) { // memset(KBusChnStats[i],0,0); KBusChnStats[i].SendPackets=0; KBusChnStats[i].RecvPackets=0; KBusChnStats[i].LostPackets=0; KBusChnStats[i].CtnLstPkts=0; KBusChnStats[i].MaxCtnLstPkts=0; KBusChnStats[i].NotPkgErr=0; KBusChnStats[i].PkgLenErr=0; KBusChnStats[i].TimeOutErr=0; KBusChnStats[i].BCCErr=0; KBusChnStats[i].Delay=0; KBusChnStats[i].MaxDelay=0; } KMem.LastScanTime=0; KMem.ScanTimeuS=0; KMem.MinScanTimeuS=99999; @@ -240,23 +303,31 @@ MX_DMA_Init(); KMachineInit(); ReadSysCfgFromFlash(&storedKMSysCfg); KMRunStat.bLEDFlick = 1; int bKBusMaster,bKBusSlave,bKBusRepeater;; int nChilds; KMem.CurJumperSW=ReadJumperSW(); KMem.EffJumperSW=KMem.CurJumperSW; nChilds=KMem.EffJumperSW&0x0f; // Uart2Baud = AlterUart2Baud; KBusSetEvCallBackFunc(&KBus1, &KBusEvCallBackFunc), KBusInitMaster(&KBus1, (KBusSendPktFuncDef)PutStr2, nChilds); #if (BOARD_TYPE == 14) KMem.EffJumperSW|=0x10; nStationID=KMem.EffJumperSW&0x0f; nChilds=KMem.EffJumperSW&0x0f; if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} nChilds=nStationID; FP0_Init(); FPxSetCallBackFunc(&FPxCallBackFunc); FPx_Init(nChilds); FPx_SetIOCount(8,5); #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) nStationID=1 ;//KMem.EffJumperSW&0x0f; // if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;} @@ -269,8 +340,7 @@ else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} #endif nChilds=nStationID; nCurPollId=1; //if (KMem.EffJumperSW == 0x00) Uart1Baud = DefaultUart1Baud; MX_USART1_UART_Init(); @@ -406,7 +476,7 @@ #if (BOARD_TYPE == 14) // KMem.WX[0]= GetInput(); FP0_Proc(); FPx_Proc(); // KMem.WYB[0]++; // KMem.WYB[1]++; @@ -479,19 +549,10 @@ if (bKBusMaster) { #if (BOARD_TYPE == 14) for (int i=0;i<nOutputBytes;i++) {BufferOut[i+1]=KMem.WYB[i];} #else // BufferOut[1]=KMem.WX[0]&0xff; // BufferOut[2]=(KMem.WX[0]>>8)&0xff; for (int i=0;i<FPxStat.nOutputBytes;i++) {KBusMem.WLYB[i]=FPxMem.WLYB[i];} #endif if (nChilds>0) { KBusMasterFunc(2); } #if (BOARD_TYPE == 14) // KMem.WX[0]=BufferIn[1]+(BufferIn[2]<<8); #else // KMem.WY[0]=BufferIn[1]+(BufferIn[2]<<8); #endif if (nChilds>0) { KBusMasterFunc(&KBus1); } } if (haltick&0x00002000) SlowFlicker=1; @@ -501,21 +562,12 @@ if (bKBusSlave) { // BufferOut[0]=KMem.WX[0]; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) // KBusSlaveFunc(2); // if (! KMem.RunStat) {BufferIn[0]=0;} // KMem.WY[0]=BufferIn[0]; #else KBusSlaveFunc(2); if (! KMem.RunStat) {BufferIn[0]=0;} KMem.WY[0]=BufferIn[0]; #endif if (nSlaveTick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (nSlaveTick&0x00000800) FastFlicker=1; else FastFlicker=0; KBusSlaveFunc(&KBus1); if (KBus1.nSlaveTick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (KBus1.nSlaveTick&0x00000800) FastFlicker=1; else FastFlicker=0; } // KMem.WY[0]=nCount2>>5; @@ -537,10 +589,10 @@ else {SetRunLed(0);} } else { if (!KMem.RunStat) SetRunLed(SlowFlicker); if (!KBus1.RunStat) SetRunLed(SlowFlicker); else SetRunLed(FastFlicker); } if (!KMem.ErrStat) if (!KBus1.ErrStat) { SetErrLed(0); SetErr2Led(0); @@ -551,7 +603,6 @@ SetErrLed(FastFlicker); SetErr2Led(FastFlicker); SetOutStat(0); } } CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f030xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f031x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f038xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f042x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f048xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f051x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f058xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f070xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f071xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f072xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f078xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f091xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/arm/startup_stm32f098xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f030xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f031x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f038xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f042x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f048xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f051x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f058xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f070xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f071xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f072xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f078xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f091xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/gcc/startup_stm32f098xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x6_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030x8_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f030xc_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f031x6_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f038xx_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f042x6_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f048xx_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f051x8_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f058xx_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070x6_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f070xb_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f071xb_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f072xb_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f078xx_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f091xc_sram.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_flash.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/linker/stm32f098xx_sram.icf
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f030xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f031x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f038xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f042x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f048xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f051x8.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f058xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070x6.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f070xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f071xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f072xb.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f078xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f091xc.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/iar/startup_stm32f098xx.s
File was deleted CCT6_BootLoader/Drivers/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.c
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/arm_common_tables.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/arm_const_structs.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/arm_math.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/cmsis_armcc.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/cmsis_armcc_V6.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/cmsis_gcc.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cm0.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cm0plus.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cm3.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cm4.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cm7.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cmFunc.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cmInstr.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_cmSimd.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_sc000.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Include/core_sc300.h
File was deleted CCT6_BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0b_math.libBinary files differ
CCT6_BootLoader/Drivers/CMSIS/Lib/ARM/arm_cortexM0l_math.libBinary files differ
CCT6_BootLoader/Drivers/CMSIS/Lib/GCC/libarm_cortexM0l_math.aBinary files differ
CCT6_BootLoader/Drivers/CMSIS/RTOS/Template/cmsis_os.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32_assert_template.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_adc_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_can.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cec.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_comp.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_conf_template.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_crc_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dac_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2s.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_irda_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_iwdg.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pcd_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_pwr_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rtc_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smartcard_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_smbus.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_spi_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tsc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_usart_ex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_wwdg.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_bus.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_comp.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_cortex.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_crs.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dac.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_dma.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_exti.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_gpio.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_i2c.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_iwdg.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_pwr.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rcc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_rtc.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_spi.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_system.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_tim.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_usart.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_utils.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_wwdg.h
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_adc_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_can.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cec.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_comp.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_crc_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dac_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2s.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_irda.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_iwdg.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_msp_template.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pcd_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rtc_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smartcard_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_smbus.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_spi_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_alarm_template.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_rtc_wakeup_template.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_timebase_tim_template.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tsc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart_ex.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_usart.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_wwdg.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_comp.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_crs.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dac.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_i2c.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_pwr.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rtc.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_tim.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c
File was deleted CCT6_BootLoader/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c
File was deleted CCT6_BootLoader/MDK-ARM/CCT6_BtLdr.uvprojx
@@ -335,7 +335,7 @@ <MiscControls></MiscControls> <Define>USE_FULL_LL_DRIVER,USE_HAL_DRIVER</Define> <Undefine></Undefine> <IncludePath>../Inc;../Src; ../Drivers/STM32F0xx_HAL_Driver/Inc; ../Drivers/CMSIS/Device/ST/STM32F0xx/Include; ../Drivers/CMSIS/Include; ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy</IncludePath> <IncludePath>../Inc;../Src; ../../Drivers/STM32F0xx_HAL_Driver/Inc; ../../Drivers/CMSIS/Device/ST/STM32F0xx/Include; ../../Drivers/CMSIS/Include; ../../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy</IncludePath> </VariousControls> </Cads> <Aads> @@ -447,152 +447,152 @@ <File> <FileName>stm32f0xx_ll_gpio.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_exti.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_exti.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_adc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_adc.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_dma.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_spi.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_spi.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_tim_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_usart.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_usart.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_rcc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_rcc_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_i2c_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_i2c_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_gpio.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_gpio.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_dma.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_cortex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_cortex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_pwr_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_pwr_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash.c</FilePath> </File> <File> <FileName>stm32f0xx_hal_flash_ex.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_flash_ex.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_utils.c</FileName> <FileType>1</FileType> <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> <FilePath>../../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_tim.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_comp.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_comp.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_comp.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_crc.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crc.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crc.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_crs.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crs.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_crs.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_dac.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_dac.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_dac.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_i2c.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_i2c.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_i2c.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_pwr.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_pwr.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_pwr.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_rtc.c</FileName> <FileType>1</FileType> <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_rtc.c</FilePath> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_rtc.c</FilePath> </File> </Files> </Group> CCT6_BootLoader/Src/main.c
@@ -71,6 +71,62 @@ /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ /* Table of CRC values for high-order byte */ const uint8_t crctablehi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; /* Table of CRC values for low-order byte */ const uint8_t crctablelo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; uint16_t crc16table(const uint8_t *ptr, uint16_t len) { uint8_t crchi = 0xff; uint8_t crclo = 0xff; uint16_t index; while (len--) { index = crclo ^ *ptr++; crclo = crchi ^ crctablehi[index]; crchi = crctablelo[index]; } return (crchi << 8 | crclo); } void HAL_SYSTICK_Callback(void) { @@ -87,7 +143,7 @@ #define ApplicationAddress 0x08001000 //应用程序首地址定义 #define NewAppInfoBlockAddress 0x08020000 // 存储的新应用程序信息块的地址 #define NewAppAddress 0x08021000 // 存储的新应用程序的地址 #define FLASH_PAGESIZE (0x00000400) //Page Size = 1K //#define FLASH_PAGESIZE (0x00000400) //Page Size = 1K typedef struct tagNewAppInfoBlock @@ -105,26 +161,26 @@ /*跳转到应用程序处理函数*/ static void JumpToApplication(void) { uint32_t StackAddr; //应用程序栈地址 uint32_t ResetVector; //应用程序中断向量表的地址 uint32_t AppStackAddr; //应用程序栈地址 uint32_t AppResetVector; //应用程序中断向量表的地址 pFunction JumpToApp; //定义跳转函数指针 __set_PRIMASK(1); //关闭全局中断 StackAddr = *(__IO uint32_t*)ApplicationAddress; //0x08001000; ResetVector = *(__IO uint32_t*)(ApplicationAddress + 4); //0x08001004; AppStackAddr = *(__IO uint32_t*)ApplicationAddress; //0x08001000; AppResetVector = *(__IO uint32_t*)(ApplicationAddress + 4); //0x08001004; if((StackAddr&0x2FFC0000)==0x20000000) //检查栈顶地址是否合法. if((AppStackAddr&0x2FFC0000)==0x20000000) //检查栈顶地址是否合法. { __disable_irq(); memcpy((void *)0x20000000,(void *)ApplicationAddress,0xc0); __set_MSP(StackAddr); //初始化应用程序栈指针 __set_MSP(AppStackAddr); //初始化应用程序栈指针 LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); // SYSCFG JumpToApp = (pFunction)ResetVector; JumpToApp = (pFunction)AppResetVector; JumpToApp(); } } @@ -150,15 +206,16 @@ res = HAL_FLASH_Unlock(); uint32_t ErrNo; FLASH_EraseInitTypeDef erase1; erase1.NbPages= (nByteSize-1) / FLASH_PAGESIZE + 1; erase1.NbPages= (nByteSize-1) / FLASH_PAGE_SIZE + 1; erase1.PageAddress=(unsigned int)pAddrFlash; erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = HAL_FLASHEx_Erase(&erase1,&ErrNo); res = HAL_FLASHEx_Erase(&erase1,&ErrNo); for (int i=0;i<nByteSize/2;i++) for (int i=0;i<(nByteSize+1)/2;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); if ((i&0x7ff) == 0) {ToggleRunLed(); ToggleErrLed();} } res = HAL_FLASH_Lock(); @@ -217,11 +274,11 @@ { //check length and CRC; int length = ptheNewAppInfoBlock->Length; // int nCRC = CalCRC((void *)NewAppAddress,length); // if (nCRC == ptheNewAppInfoBlock->nCRC) int nCRC = crc16table((uint8_t *)NewAppAddress,length); if (nCRC == ptheNewAppInfoBlock->nCRC) { // copy program EraseAndWriteToFlashMem((void*)ApplicationAddress,(void *)NewAppAddress,length); EraseAndWriteToFlashMem((void *)NewAppAddress,(void*)ApplicationAddress,length); // verify copyed program //int nCRC2 = CalCRC((void *)NewAppAddress,length); CCT6_TestApp1/Inc/LindarPos.hcopy from Ext_FP0/Src/BoardType.c copy to CCT6_TestApp1/Inc/LindarPos.h
CCT6_TestApp1/Inc/OrdLidar.h
New file @@ -0,0 +1,174 @@ /** ****************************************************************************** * @file : OrdLidar.h * @brief : Header for OrdLidar.c file. * This file contains the Lidar defines of the application. ****************************************************************************** */ #ifndef __ORDLIDAR_H__ #define __ORDLIDAR_H__ #define ORDLIDAR_VER (0x100) #pragma anon_unions #include <stdint.h> #include <stdlib.h> #define TMPBUFF_SIZE (1024) #define MAX_BLOCK_POINT_NUM (100) #define MAX_BLOCK_SIZE (MAX_BLOCK_POINT_NUM * 4) #define POINT_CIRCLE_MAX_SIZE (4096) #define POINT_PKG_MAX_SIZE (200) #define POINT_PER_PACK (12) #define SET_TIME_OUT (10) //unit:s #define HEAD_FLAG (0xF5A5) #define TAIL_FLAG (0x31F2) #define HEAD_LEN (5) typedef enum { ORADAR_MS200 = 1, ORADAR_MS300 = 2, }oradar_lidar_type_id; typedef enum { ORADAR_TYPE_SERIAL = 0x0,/**< serial type.*/ ORADAR_TYPC_UDP = 0x1,/**< socket udp type.*/ ORADAR_TYPE_TCP = 0x1,/**< socket tcp type.*/ } device_type_id; typedef enum { SET_ROTATION_SPEED = 0xA1, SET_RUN_MODE = 0xA2, }CMD; typedef enum { WRITE_PARAM = 0xC1, WRITE_PARAM_RESPONSE = 0xC2, READ_PARAM = 0xC3, READ_PARAM_RESPONSE = 0xC4, }CMD_TYPE; typedef struct uart_comm_st { uint16_t head_flag; uint8_t cmd; uint8_t cmd_type; uint8_t payload_len; uint8_t data[10]; }uart_comm_t; typedef struct point_data_st { unsigned short distance; unsigned short intensity; float angle; } point_data_t; typedef enum frame_head_flag_et { HEAD_FLAG_NONE, HEAD_FLAG_OK, } frame_head_flag_t; typedef enum protocol_version_et { VERSION_NONE = 0, VERSION_MS200, } protocol_version_t; typedef struct __attribute__((packed)) { uint16_t distance; uint8_t confidence; } OradarLidarPoint; typedef struct __attribute__((packed)) { uint8_t header; uint8_t ver_len; uint16_t speed; uint16_t start_angle; OradarLidarPoint point[POINT_PER_PACK]; uint16_t end_angle; uint16_t timestamp; uint8_t crc8; } OradarLidarFrame; typedef struct LidarDotData { unsigned char intensity; unsigned char s1; /* struct { unsigned char flag:2; unsigned char s1:6; }; */ unsigned char s2; }stLidarDotData; typedef struct tagLidarDotsPkt { unsigned short StSign; unsigned char CT; unsigned char LSN; unsigned short FSA; unsigned short LSA; unsigned short CS; stLidarDotData LidarDotDatas[40]; }stLidarDotsPkt, *pLidarDotsPkt; typedef struct tagLidarVector { int intensit; int angle; int value; }stLidarVector; typedef struct tagLidarDot { int x; int y; unsigned int distance; }stLidarDot; extern int nPosX; extern int nPosY; extern int nPosZ; extern int nPosZ1, nPosZ2; extern int pCount1; extern int pCount2; extern int eCount1; extern int eCount2; extern int dCount1; extern int dCount2; extern int vCount1; extern int vCount2; extern int results[32]; int OrdLidarStart(int nIdx); /* Start LiDar Running , nIde = 0 , 1 , -1 == ALL */ int OrdLidarStop(int nIdx); /* stop Lidar Running , nIde = 0 , 1 , -1 == ALL */ int OrdLidarParsePkt(int nLidarIdx, OradarLidarFrame * pLindarPkt, int len1); int ProcessPos(int nLidarIdx, stLidarDot * pLindarDots, int nCount); #endif /* __ORDLIDAR_H__ */ CCT6_TestApp1/Inc/SLP.h
@@ -25,7 +25,7 @@ extern uchar SLPoutputB; extern uchar SLPErrSign; void SLPparsePacket(char * pBuf, uchar len1); void SLPparsePacket(void * pBuf, uchar len1); void SLPMasterSendPacket(void); void SLPProcess(void); CCT6_TestApp1/Inc/functions.h
@@ -45,6 +45,9 @@ }; }shortbits; #define RX1BUFSIZE 160 #define TX1BUFSIZE 260 #define UART3RXBUFSIZE 256 #define UART3TXBUFSIZE 64 @@ -117,9 +120,9 @@ void Uart6SendDone(void); void Uart6RecvDone(void); void Uart6SendPacket(char * str, int len); void Uart6SendPacket(void * str, int len); void SLPSendPacket(char * str, uchar len); void SLPSendPacket(void * str, uchar len); int PutStr(char * str1, int len1); int SendPacket(int nChn, void * pBuf,int len1); CCT6_TestApp1/Inc/main.h
@@ -59,6 +59,7 @@ #include "stm32f0xx_ll_tim.h" #include "stm32f0xx_ll_utils.h" #include "stm32f0xx_ll_pwr.h" #include "stm32f0xx_ll_flash.h" /* USER CODE BEGIN Includes */ CCT6_TestApp1/Inc/stm32f0xx_hal_conf.h
@@ -76,7 +76,7 @@ /*#define HAL_EXTI_MODULE_ENABLED */ #define HAL_CORTEX_MODULE_ENABLED #define HAL_DMA_MODULE_ENABLED #define HAL_FLASH_MODULE_ENABLED #define HAL_FLASH_MODULE_ENABLED #define HAL_GPIO_MODULE_ENABLED #define HAL_PWR_MODULE_ENABLED #define HAL_RCC_MODULE_ENABLED CCT6_TestApp1/MDK-ARM/CCT6_TestApp1/F030CCT6_TestApp1.hex
@@ -1,19 +1,19 @@ :020000040800F2 :1010000038390020D1100008754300086923000812 :10100000B8490020D110000809440008A5200008B4 :1010100000000000000000000000000000000000D0 :10102000000000000000000000000000E14F000888 :101030000000000000000000454400081D550008A5 :101020000000000000000000000000000D56000855 :101030000000000000000000B5480008495B0008FF :10104000E310000800000000E3100008E3100008AF :10105000E3100008E3100008E3100008E3100008A4 :1010600000000000E3100008C51500086516000820 :1010600000000000E310000825150008C515000861 :10107000E3100008E3100008E3100008000000007F :10108000E310000825560008E3100008E3100008EC :10108000E3100008515C0008E3100008E3100008BA :10109000E3100008E3100008E3100008E310000864 :1010A000E3100008C54F0008E31000083D56000893 :1010B000C5560008115700080348854600F03AF964 :1010C00000480047F9650008383900200844F04717 :1010A000E3100008F1550008E3100008695C00082F :1010B000E55C0008395D00080348854600F0D6F875 :1010C00000480047F9680008B84900200844F04784 :1010D0000448804704480047FEE7FEE7FEE7FEE7D6 :1010E000FEE7FEE7C9550008B910000830B50B4609 :1010E000FEE7FEE7F55B0008B910000830B50B46D7 :1010F000014600202022012409E00D46D5409D42F2 :1011000005D31D469540491B254695404019154677 :10111000521E002DF1DC30BD70B50024254600289C @@ -21,7 +21,7 @@ :10113000DDFFAC4200D04042002C00D0494270BDDF :10114000F8B500242546002904DA0E4601240021C2 :101150004042B141002B04DA1E46002352420125D1 :10116000B34100F076F88C4617461E46AC4203D0D9 :10116000B34100F052F88C4617461E46AC4203D0FD :10117000002540428D41AC46002C02D0002657424B :101180009E4161463A46334601B0F0BD10B5202A73 :1011900004DB0846203AD040002110BD0B46D34066 @@ -31,1600 +31,1690 @@ :1011D0007047D2B201E00270401C491EFBD270473A :1011E0000022F6E710B513460A4604461946FFF7F3 :1011F000F0FF204610BD0321001D401E037812029F :101200001A43491EF9D510467047C217C10F504006 :1012100010B54018CA079623002100F052F810BDFF :10122000C20F410040020123400ADB05D207090E2C :10123000C0187F2901DA00207047962903DC962325 :10124000591AC84001E096398840002AF4D040423B :101250007047F0B51FB40646002082B00546402412 :10126000019100901BE0019922460F463046FFF79E :101270008DFF049A059B801A994110D31046194698 :10128000224600F069F8361A8F4101972246012064 :101290000021009F00F060F838184D410090204672 :1012A000641E0028DFDC019B00982946324607B007 :1012B000F0BD002904DA401C490001D1400840007B :1012C000704770B40024050C05D11024000402D12D :1012D000002921D01124050E01D100020834050F88 :1012E00001D10001241D850F01D18000A41C00281C :1012F00001DB4000641C002908D020252E1B0D4670 :10130000F540A14000D001212943084301061B1BE1 :10131000000ADB1D02D5002070BC7047DB051818E1 :1013200080180029F8DA401C4900F5D170BC40084B :1013300040007047064C0125064E05E0E36807CCE7 :101340002B430C3C98471034B442F7D3FFF7B8FE58 :101350001C7200083C72000810B5202A04DB01460C :10136000203A9140002010BD914020239C1A034652 :10137000E3401943904010BD70B58D180478401CAF :10138000A207920F01D10278401C231106D10378E5 :10139000401C03E006780E70401C491C521EF9D117 :1013A000002B15D002780C268A1A3440401C0C2CD5 :1013B00003D0A401121B9B1C08E004782402121B1A :1013C000401CF8E714780C70491C521C5B1EF9D5C0 :1013D000A942D3D3002070BDF0B51C4CA0684007D3 :1013E000C00F31D1206C1B4D82B219481A490369D4 :1013F0000120DE07002E0AD08A82184B18492846A1 :101400009A4201D2012200E000220A6012E09D43CC :1014100006D0144D9D4306D0134D9D4306D009E0E0 :101420000A83124806E00A84114803E04A84114AFC :10143000528BCA834103490BA162A1680E4A114035 :10144000091DA160024908610020F0BD002401408F :10145000C000002000010020C419002098080000EE :10146000640100200000014000000244000001C0AF :10147000000002C4A0F7FF1FE8FFFF7FF0B51E4F7A :1014800085B03D691D4C6D1C3D612668A4680294C1 :1014900000966C4665800190218162810393386AD1 :1014A00001011748091800220B4610461C5CFF2C4E :1014B00004D1401C1028F9D3002A17D01022684606 :1014C00000F00CF9386AF861401C38620001012113 :1014D00009031030884201D900203862F8680949B0 :1014E000401CF8604867002005B0F0BD1022684637 :1014F00004F0A8FBE6E7000040010020E46D0008CE :1015000000D0000844190020002911D08268521828 :1015100082604368934200DCD21A00238361C3686F :10152000934201D101234361826002695218026132 :1015300008467047F0B50020174D0127144B154C95 :101540003F03E86017E0625A144EB24212D1EA68D3 :101550000919521CEA604A882E69B24205D92A61EB :10156000E8614A686A61421C2A624988994201D24C :101570000B46A861401C0101B942E4D3286A00016E :101580001030B84201D900202862E868F0BD0000A0 :10159000FFC99A3B00D0000840010020AA55000076 :1015A00010B50421054800F0BCF805480021816110 :1015B000C1610161C1600162084610BD00D0000830 :1015C0004001002070B5234DE86A401CE862224CBF :1015D00020688006C00F11D02868296B4018286049 :1015E000296B28465830064600F058F820206060E5 :1015F000B06900280AD0002028636872206880053E :10160000C00F02D001204002606070BD304600F083 :1016100075F912494A78A3585B085B00A350F36838 :1016200032684E78D2180C4B0C33F2500A4B4A7881 :101630001B1DD658360C36040643D65049786258DE :1016400001231A43625028630548816880221143B0 :101650008160D3E7E408002000000240FF71000829 :10166000003801400B49C86A401CC8620A48026839 :101670009204D20F05D001225203426000220A6375 :101680004A7201688903C90F02D0012149044160EF :1016900070470000780900200000024010B50029C2 :1016A00010D0C26843685218934200DCD21A00235B :1016B0004361C2608468944204D1012282618360E4 :1016C000C360C361084610BDFF2109220131D20663 :1016D000002801D09162704791617047F0B585B0E4 :1016E00016460D46074600F06FFA701E800A401C31 :1016F000029000200090019503A9684600F0CCF903 :101700000024760807E060003A5A411900230120BE :1017100000F01CFA641CA642F5D800F00DFA05B0E2 :10172000F0BD7FB50D46044600F04EFA00206A4633 :1017300031C203A9684600F0AFF900F0FDF904B02A :1017400070BD000006490020C861064801690422F6 :10175000114301610169402211430161704700009A :101760001835002000200240064A0021D1610649B8 :101770000A6902231A430A6148610869402210433A :1017800008617047183500200020024010B5054B55 :101790000022DA61044A13690124234313610180A2 :1017A00010BD0000183500200020024010B50B4A83 :1017B0000020D168CB060A4904D5C8690223184322 :1017C000C8611020D3685B0705D5CB69012423438A :1017D000CB6104210843D06010BD0000002002400E :1017E0001835002070B5044600F000FA0546104E8A :1017F0000AE0601C08D0002C04D000F0F7F9401B70 :10180000A04201D9032070BDF068C007F1D1F06893 :10181000800601D52020F060F068C00602D4F06890 :10182000400703D5FFF7C2FF012070BD002070BD47 :10183000002002400A07120F01219140014201D00D :1018400001207047002070470A07120F01219140C4 :10185000014201D00120704700207047F8B50B0508 :101860001B0E254C5B001C1909239B01E3180093F8 :101870000523DB01E618012307469B020A07E5184A :101880000020120F3B0004F0CFFB09060A0E1219CC :101890001D21282F2E00FF2928D800981BE0FF29A2 :1018A00024D8009808E0FF2920D8B08A18E08029C1 :1018B0001CD20F2080012018808E11E0802915D2C3 :1018C000A88A0DE0402911D2B08E09E040290DD23E :1018D0000B2080010EE0808A02E0802906D2A88ECB :1018E0001146FFF7B1FFF8BD802901D30020F8BDF4 :1018F0000920C0012018EEE7C4130020C1688268E7 :10190000914201DA501A7047914202DC4269002A82 :1019100002D04068401A704780690028FBD0002040 :101920007047C2688168914201DA501A704791424B :1019300002DC8269002A02D04068401A7047406980 :101940000028FBD000207047064901228969120354 :1019500008180101914201D3FF3801380249000102 :10196000401870474001002000D0000800B5082052 :1019700000F07CFD00BD0000F0B5334C4B001C199D :101980000923DB01E5180B230246DB010020E318E5 :10199000892A25D00EDC2C4F2C4B4E00F619F61858 :1019A000803A130004F040FB091F1F152125292E42 :1019B000333A15008D2A3FD00CDC8A2A33D08B2A8B :1019C00035D08C2A05D140293ADA0B208001201825 :1019D000808EF0BD992A03D0A12A01D0FE2AF8D129 :1019E00080292DDA2EE00846F0BD102928DAB08AC9 :1019F000F0BD102924DAB08EF0BD102920DA0520C0 :101A0000C00108E008291BDA0F208001DFE7082960 :101A100016DA012080022018808AF0BD80290FDAB2 :101A20003420285EF0BD80290ADAA88AF0BD40295A :101A300006DA0D208001CAE7402901DAA88EF0BD40 :101A40000020F0BD988EF0BDC413002040020000BD :101A500010B5074A106A074B9969146AA04201D071 :101A6000106A9969044A51430914401A10BD0000D4 :101A70007001002000E000E05505000031B500F0E5 :101A8000B5F8009C0546601C00D0641C00F0AEF860 :101A9000401BA042FAD338BDF8B5054623480F468F :101AA000017E012601290BD0012101762868204CF6 :101AB000012807D02046FFF795FE002813D030E01C :101AC0000220F8BD2046FFF78DFE002829D1FFF740 :101AD00039FE2046FFF786FE0646164801690422B5 :101AE000914301611DE00020C04338606C6812E042 :101AF0002046FFF739FE0E48FFF774FE06460D48F4 :101B00000169022291430161002E01D03C6008E08E :101B10000120C0022418A8686968C0024018A042C9 :101B2000E6D80248002101763046F8BD183500207D :101B300050C3000000200240034801698022114385 :101B4000016100207047000000200240F0B51FB482 :101B500005461A480024017E16461F46012907D073 :101B6000012101761648FFF73DFE002803D021E051 :101B7000022005B0F0BD012D1AD0022D18D0042589 :101B800016E0220130463946FFF700FB81B201988A :101B900062001018FFF7FAFD0948FFF723FE094914 :101BA0000A69520852000A61002803D1641CE4B299 :101BB000AC42E6D3014900220A76DAE71835002064 :101BC00050C300000020024005480169090605D500 :101BD000044941600449416000207047012070477A :101BE0000020024023016745AB89EFCD0148006822 :101BF00070470000E007002002480168491C0160AE :101C000070470000E007002010B506480168102268 :101C100011430160002000F007F800F017F80020E1 :101C200010BD00000020024010B5044600F040F94D :101C30007D21C900FFF75AFA00F07AFB0022214605 :101C4000501E00F025F8002010BD000008B50F4818 :101C50008169012211438161816911400091C2694A :101C600001040A43C261C069002208400090114685 :101C7000501F00F00DF800221146901E00F008F8E9 :101C800000221146501E00F003F808BD001002406B :101C900010B502F09DFB10BDF8B504460068364D46 :101CA000C00354D5E8690026C00007D4E8692904B8 :101CB0000843E861E8690840012600902F48016860 :101CC000C90511D4014608688A1510430860FFF75A :101CD0008DFF074604E0FFF789FFC01B642823D867 :101CE00026480068C005F6D5286A03210902084085 :101CF0001FD062680A4082421BD0286A2A6A884341 :101D0000012109040A432A622A6A8A432A62286254 :101D1000C0070ED0FFF76AFF074607E0FFF766FF30 :101D2000C11B1748814201D90320F8BD286A8007EA :101D3000F4D5286A032109028843616808432862B0 :101D4000002E04D0E869012109078843E861207862 :101D5000C00705D0286BA16880088000084328636D :101D60002078800605D5286B10218843E168084358 :101D700028630020F8BD0000001002400070004001 :101D800088130000F8B5044644480E460068C007B2 :101D9000C00FB0420AD241480168490849003143A6 :101DA00001600068C007C00FB0425CD120783C4F92 :101DB000800705D57868F0218843A16808437860DA :101DC0002078C0073FD06068012813D03968022806 :101DD00013D08907002946DA796889088900014308 :101DE0007960FFF703FF0546606801280DD00228DF :101DF00017D024E039688903ECE78901EAE7FFF7A7 :101E0000F5FE411B2748814217D878680007800FEC :101E10000128F4D117E0FFF7E9FE411B2148814278 :101E20000BD878680007800F0228F4D10BE0FFF789 :101E3000DDFE411B1B48814201D90320F8BD7868B3 :101E40000007800FF3D115480168C907C90FB142D7 :101E50000BD9016849084900314301600068C00797 :101E6000C00FB04201D00120F8BD2078400706D550 :101E70007868072109028843E1680843786000F028 :101E80001DF87968084A0906090F515CC8400749DE :101E900008600020FFF7C8FE0020F8BD00200240C7 :101EA000001002408813000004720008DC070020C4 :101EB0000148006870470000DC07002030B514A01E :101EC0000FC889B06C460FC415A00FC80FC4184DB9 :101ED0006A680C2011460140164B042910D01648A0 :101EE00008290ED19102090F6C46645CE96A04ADC1 :101EF0000907090FD203695C920F022A03D003E09D :101F0000184609B030BD1846FFF7F0F86043F8E70F :101F100002030405060708090A0B0C0D0E0F10102A :101F20000102030405060708090A0B0C0D0E0F1029 :101F300000100240001BB70000127A00FEB50446F4 :101F40000078D54DC00748D068680007800F012889 :101F500019D068680007800F022804D16868C003A0 :101F6000800F02280FD0012160680904012811D0D8 :101F70008A00002801D0052816D0286888432860E8 :101F80002868904308E02868800326D56068002808 :101F900073D022E02868084328606068002810D0C9 :101FA000FFF724FE064608E0286810432860F1E7A2 :101FB000FFF71CFE801B642870D828688003F7D5C3 :101FC0000BE0FFF713FE064604E0FFF70FFE801B51 :101FD0006428F1D828688003F7D420780126800788 :101FE00000283DDA68680007800F13D06868000792 :101FF000800F022804D16868C003800F012809D02F :10200000E068002828681CD030432860FFF7EEFD08 :1020100007460BE0286880070BD5E06801282CD123 :1020200007E0FFF7E3FDC01B0228C5D8286880073A :10203000F7D52868F82188432169C900084328603A :102040000EE0400840002860FFF7D0FD074604E09E :10205000FFF7CCFDC01B0228AED828688007F7D454 :102060002078000723D5E0690028686A0FD0304344 :102070006862FFF7BBFD074605E00AE1FFF7B6FD22 :10208000C01B022898D8686A8007F7D50FE040087F :1020900040006862FFF7AAFD074605E0A4E0FFF7ED :1020A000A5FDC01B022887D8686A8007F7D420786E :1020B00004274007002860DA00200190E869C0008A :1020C00008D4E869B9060843E861E8690840009067 :1020D0000120019071480168C90511D40168821579 :1020E00011430160FFF782FD009005E0FFF77EFDE0 :1020F0000099401A642877D868480068C005F5D56B :10210000A06801280AD0002801D0052810D0286A2C :10211000400840002862286AB84301E0286A30433A :102120002862A068002812D0FFF760FD00900AE046 :10213000286A38432862F1E7FFF758FD0099411AF1 :102140005748814250D8286A8007F5D50DE0FFF73F :102150004DFD009006E0FFF749FD0099411A5048F7 :10216000814241D8286A8007F5D40198002804D01C :10217000E869012109078843E8612078C0063CD559 :10218000606901280CD0401D686B23D03843686318 :10219000686B400840006863FFF728FD064629E0A9 :1021A000686B38436863686B30436863FFF71EFDF4 :1021B000064604E0FFF71AFD801B022862D8686B10 :1021C0008007F7D5686BF8218843A169C9000843E7 :1021D000686312E0B8436863696BF8208143A069C3 :1021E000C0000143696308E04CE0FFF7FFFC801B7F :1021F000022847D8686B8007F7D4206A002846D0A9 :1022000069680907890F022943D001273F06022880 :10221000286805D0B8432860FFF7E8FC044633E09F :10222000B8432860FFF7E2FC064604E0FFF7DEFC57 :10223000801B022826D828688001F7D4E86AE16A62 :10224000000900010843E862616AA06A08436968FE :102250007B22D20391430843686028683843286092 :10226000FFF7C4FC044604E0FFF7C0FC001B022893 :1022700008D828688001F7D509E0FFF7B7FC001BF4 :10228000022801D90320FEBD28688001F5D4002072 :10229000FEBD0120FEBD00000010024000700040A5 :1022A00088130000042204490428086902D09043DE :1022B000086170471043FBE700E000E01548016843 :1022C0006431016014480168491C016013490868C1 :1022D000401C08601249134AC868401CC8609042FC :1022E00016DB0020C8601048816D491C8165016DB6 :1022F000491C0165416D491C41650C49088B00284A :1023000006D0401E80B20883782801D9782008833F :1023100070470000900100208C0100200C0100207B :10232000B00100201027000044190020781B002075 :10233000094910B5401E884201D9012010BD074C43 :1023400060610321081F02F043F80020A06107200C :102350002061002010BD0000FFFFFF0000E000E052 :1023600010B5FFF7ABFF10BDFEE7000010B5002170 :102370000F4A0846516043009B18401C1981FF28F2 :10238000F9DD002005230B4ADB014400A418E41802 :10239000401CA1821028F8DB00200923DB01440047 :1023A000A418E418401CA186FF28F8DD002010BD09 :1023B0003C110020C413002010B5402802DB00208F :1023C000C04310BD10221143C200094B4000D21877 :1023D000C01858240D23A1529B010021C3189986CF :1023E000E300C0188186034800685065084610BDA8 :1023F000C4130020E007002070B504461E463830A4 :10240000049D04F0EDF820462A463146583004F089 :10241000E7F8002070BD000070B5104D064601467B :102420002846FEF779FE0E4CE062FFF741FD294693 :10243000FEF75CFE60620B48314600680546FEF719 :1024400055FEA0622A46002307480F21FEF778FEBA :102450002080E06A64302062002070BD40420F009E :1024600070010020DC07002000004042F8B572B681 :10247000012212030921C9068A6200BF00BF00BF02 :1024800000BF8A61C117490F0818C0108446002098 :10249000104E0346009017E008200E4C00228021C9 :1024A0008502103C37687F0400D50A43A5624908BD :1024B00000BF00BF00BF00BF00BFA561401EF1D13B :1024C000D0436946C8545B1C6345E5DB62B600989F :1024D000F8BD000010040048034610B50020024675 :1024E00002E09C5C6040521C8A42FADB10BD000096 :1024F000F8B508460D460978552901D0252903D09D :10250000012A01DD451C521E344F602479792B7855 :102510006143334C0919334C252B30D0A3685B1C25 :10252000A360CB695B1CCB61B97800290FD0F97827 :1025300000290FD001292C4913D007231B02C918E9 :102540000A7501462948FEF732FE0020F870002087 :10255000C043F8BD2549264B55390A750146224826 :1025600007E037235B01C9180A750146204B1E4856 :102570002033C018FEF71BFEF878401CE6E76E79A2 :10258000802E06DDE068401CE060086A401C08629E :10259000DDE7334608339A4208D2086A401C0862D5 :1025A000E068401CE0600220C043F8BDB11DFFF7A9 :1025B00093FFA919897981420DD02069401C2061BF :1025C00079796020414306480818416A491C4162F4 :1025D0000320C043F8BD0020F8BD0000F00000203B :1025E0002C0C0020F8090020C4130020D91A002068 :1025F000D5060000F8B50E4604462520069F079D27 :10260000089920706270A670E37027712F46002031 :1026100008376619372B1AD009DC1A46303A1300EE :1026200003F002FD07261515262626172600612B26 :102630000DD006DC382B0AD0412B08D0422B17D105 :1026400005E0622B03D0632B01D0642B10D16571A0 :1026500002E06571002D03D02A46A01DFEF7A7FDFC :10266000A91D2046FFF738FFB0710D20F0713846E4 :10267000F8BD0000F1B584B0FFF7B8FA0546FFF7E2 :10268000E7F9604E0446F079002806D0307A002839 :1026900003D0F068201A322805D8F0687D21201A6E :1026A000C90088427ED9307A574A00281DD07179F6 :1026B00060235943554B0120585064205064707971 :1026C000401CC0B27071F17A884208D9B06AB46215 :1026D000201AF062B079401CB071012070714C4832 :1026E000008A4C4F002830D038E0706A401C70627D :1026F00049484168491C4160717960200B46434359 :1027000042489C46181803695B1C036143695B1CC3 :102710004361F779002F02D1876A7F1C876287693E :10272000BB4200D983613948032BC8D900236746CF :10273000C351C8209064394843544800384941186F :102740000F20800108188386B9E7FFF70FF9354994 :1027500080B28882C1B2F982000A38832F49B87DDD :1027600010314870387E887072792F488B5C037006 :10277000891849784170602113464B43234900274B :10278000C9588170C77005712B0A43712B0C837176 :102790002B0EC371F4606C462378B4799B089B00C0 :1027A000A40700E028E0A40F23436C46237000290F :1027B00025D0EF210B402370029008211748009389 :1027C0000191412300212030FFF714FF13490246F5 :1027D0002031049802F046FC7179602041430B4897 :1027E00008184168491C4160C268F1688A1A42634E :1027F000C1607563F7713772002005B0F0BD10211C :102800000B43D8E7F0000020441900202C0C0020D6 :10281000781B0020C4170020F80900200C0B0020B2 :10282000C4130020041600202C0F0020F7B50878F0 :1028300086B00C46552801D0252802D0012A00DD9B :102840004C1C4C4D627968796021049048434A4998 :102850002B4640188168491C8160474980390391A3 :102860001F6BDB68E678FF1A2B46A1789B69303E28 :102870000093330003F0D8FB13420B174242422966 :10288000424242424242424242422C4542003B487E :10289000A37943542179A01D322301920091029023 :1028A0000021049A22E06F61009A974200DDAF6137 :1028B000324AA37953540021C7624161016BB94286 :1028C00000D207630120287218E00120E87115E0AA :1028D0002A48A179017010300078A0712179A01DDB :1028E0000192009102904223297900220398FFF778 :1028F00081FE02460399069802F0B4FB002009B05D :10290000F0BD6F610098874200DDAF611B4AA0797E :1029100050541B4A490089180F2292018918888651 :102920001848008A002809D11748C18E008F00027C :102930000818164980B2888602F048F96A79602042 :1029400042430D480021161871616869F062316BCD :10295000814200D230632046677A0A30FEF74BFC92 :10296000617B0002000A09060843B90071188863F8 :10297000A8E70000F00000202C0C00200C0B002029 :10298000C4130020781B00208417002004160020A8 :10299000F7B515460C46FFF75BF81A4E3063217801 :1029A0000020552903D1012D01DD641C6D1E3178F5 :1029B00000290FD00127F7712A4621460098FFF71A :1029C00097FD002805D137722A4621460098FFF767 :1029D0002DFFFEBD71780029FBD00B4E2A46B06B4F :1029E0002146401CB063009800F012F80028F0D196 :1029F00006482A46406C30652146009800F080F871 :102A0000FEBD0000F00000202C0C00204419002026 :102A1000F0B508460D460978552901D0252903D07F :102A2000012A01DD451C521E297800231A4FDB4381 :102A30001A4C252906D0A068401CA060386C401CA8 :102A4000386409E014496E79896C491C802E05DDD3 :102A5000E068401CE060B9641846F0BD33460833B6 :102A60009A4206D2B964E068401CE0600220C0438C :102A7000F0BDB11DFFF730FDA9198979814208D059 :102A80002069401C2061F86C401CF8640320C0439E :102A9000F0BD0020F0BD00002C0C0020F809002043 :102AA000F8B5FEF7D5FF134B1A69197900291FD025 :102AB0005C7A1149002C05D07D20800148640020FB :102AC000587215E00C4E0D4C851A8036A54204D97B :102AD0007D2292018A64012206E01219904207D9F0 :102AE0007D2292018A6402228A67C8671869306071 :102AF0000020F8BDF000002044190020E02E000066 :102B0000F7B5087884B00C46552802D1012A00DDBB :102B10004C1C5B480168491C016065796078594923 :102B2000594A0391574E11798036884208D0FF28C0 :102B300006D0706C401C70640020C04307B0F0BD2C :102B4000884201D0FF287DD1106B009010610120D8 :102B500050724C4FE078A03F372873D007DC3038F4 :102B6000030003F061FA068B138B8B8B238B612898 :102B700068D004DC382865D041287FD11FE0622866 :102B80007CD063287AD0642878D16CE0A079387042 :102B90003C4890380078A071009810612279A01DFF :102BA0003223009201950290002250E0002021790A :102BB00036230091019002460290012147E0A0795E :102BC0003870E179314B79705975E37AA17A1B023B :102BD000CB182D49CB6101F0F9FF2B48877AFEF71E :102BE000C5FE2849294A90390870203A527D4A701A :102BF000A0714878E071B80067728019018FA172E6 :102C0000018F090AE172816B090C2173806B1E49E7 :102C1000000E60731C48807A401CC0B288720A287B :102C200001D300208872207969460870C00603D558 :102C30007D20174980018864A01D2179422300224C :102C4000019500E01AE002900F4800910179039885 :102C5000FFF7D0FC0246F06B401CF0630399049828 :102C600002F000FA0AE0E179A07909024018217A1D :102C7000637A09041B06C9184018D06100205DE77B :102C8000F8090020AC0B0020F000002024160020E2 :102C900044190020034610B50020024602E09C5C67 :102CA0006040521C8A42FADB10BD30B50D46084622 :102CB00009781446252901D0012030BD062C01D207 :102CC000032030BD611EFFF7E5FF29192039C97FB8 :102CD000814201D0042030BD002030BDF8B51E4631 :102CE0000B465527069D0799077043708270C67082 :102CF000044605712A46401DFEF759FA691D204613 :102D0000FFF7C8FF014660194171A81D052E02DAC0 :102D1000002E00D10020F8BDFEB516460F46054630 :102D2000FFF7C3FF040014D068460472042000902B :102D300002A90B4801910278401E0178EE23094850 :102D4000FFF7CCFF02460749284602F08BF92046E0 :102D5000FEBD32463946284600F006F8FEBD0000AA :102D60002D010020BC0F0020F7B5FA4886B04F783F :102D700042688260421C15788E782D0936072D0135 :102D8000360F0B7935431570F34A029200780C46E2 :102D90000490874201D0FF2F77D12146E678093190 :102DA000EE488C46332E72D028DCED49182E0A6886 :102DB0006CD012DC072E20D008DC002E65D0012E4E :102DC0003ED0032E41D0052E7ED160E0112E7CD066 :102DD000162E7BD0172EF7D13FE2232EEED006DC45 :102DE000192E74D0212E73D0222EEDD18FE1242EF6 :102DF000E4D0312E4BD0322EE6D1BFE0582E68D031 :102E000012DC542E66D008DC342E71D04F2E70D0D8 :102E1000502E6FD0532ED7D16EE2552E6BD0562E3A :102E20006AD0572ED0D164E23046633804210300C3 :102E300003F0FAF809F0EFEE171D4A104A154A00A0 :102E4000641D00930194012351E2C649182003E058 :102E50003946C7E2C4490C200191009005E0C348FF :102E6000F6E1C24910395020F6E733463FE2E179F6 :102E70000020B94A03E023185B7A1354401C8842AF :102E8000F9DBB54802F07AFEA3E075E2EEE1A27943 :102E9000617912028918E27989B2882B2DD0892BA9 :102EA0002FD08A2B31D0832B34D0842B37D0852B55 :102EB0003AD0862B3DD0872B40D08B2B43D08C2B08 :102EC00046D0FE2B1DD006E097E29FE1AEE1EDE19A :102ED000C9E066E227E2A92B3FD0B32B41D0992B62 :102EE00042D0A12B45D09C481038401800925FE298 :102EF00044E0F6E1F1E140E249E2490009189C486A :102F00003AE0490009189B4836E0490009189848FA :102F1000203831E049000918952080002CE0490054 :102F200009189D20800027E049000918A52080008D :102F300022E049000918FD2080001DE04900091821 :102F40008B48A03818E049000918DD20800013E004 :102F500049000918BD2080000EE049000918864884 :102F60000AE04900854807E0854849000818001D27 :102F7000BCE749000120C0060818B7E7A2796179CB :102F800012028918E27989B2882B25D0892B27D0A3 :102F90008A2B29D0832B2CD0842B2FD0852B32D079 :102FA000862B38D0872B3BD08B2B3ED08C2B41D01F :102FB000FE2B45D0A92B47D0B32B49D0992B4AD013 :102FC000A12B4BD064481038401800226146FEF710 :102FD000EEF80020009024E149000918644840E020 :102FE0004900091863483CE0490009186048203846 :102FF00037E0490009189520800032E0490009189F :103000009D2080002DE049000918A520800028E0BF :10301000DFE1D2E1CEE149000918FD20800020E087 :10302000490009185248A0381BE049000918DD2062 :10303000800003E049000918BD2080000818C4E79B :10304000490009184B48F9E7490009184A48F5E7CB :1030500049004A48F2E74900494802E04900012096 :10306000C0060818B2E7A27961791202891809220C :10307000920189B2002B0FD0012B13D0022B1CD050 :10308000032B20D0042B26D0052B2AD0062B28D0AA :10309000082B34D000202AE00B095B00181833E01D :1030A000012024E00B095B00181811E00A07120F39 :1030B000012191400840F3D119E00A09520010188B :1030C0000522D20120E00A09520010180F229201B5 :1030D0008018808EEAE70A09520010180122920235 :1030E00012E0C90008184030007E4006C00F694653 :1030F0000873012003A9212301910090F7E00A0938 :10310000520010180922D2018018808ACEE7A279D5 :1031100061791202891889B2002B33D0012B3AD081 :10312000022B41D0032B48D0042B4FD04022052B3B :1031300054D0062B52D0072B5BD000206946087371 :1031400000200090034803A9401C0191027822232B :103150007EE600002C010020BC0F0020C4130020DC :103160003C1100204C6D0008ACF7FF1F107C0008DC :10317000B4040000B4050000B40600002C0C0020CC :10318000441300200B070909490009181B0F95205B :10319000E279800035E00B070909490009181B0F87 :1031A0009D20E27980002CE00B07090949000918ED :1031B0001B0FA520E279800023E00B0709094900D5 :1031C00009181B0FFD20E27980001AE00B0709099E :1031D0001B0F49000918E2798D4812E0C900081850 :1031E0004030018B9143E279D207520E11430183A3 :1031F000A6E70B070909490009188548E2791B0F62 :1032000080300818194601F051FF99E7002B05D0CE :10321000012B00D0DDE602F007F9DAE602F03CF916 :10322000D7E601907B48E378027811E6A1796079CE :1032300009024018E179784A80B2002B0AD0774C15 :10324000012B03D0764B9B8A002B03D04000001942 :103250000091ADE040008018FAE7002A01D000207C :103260000860002000901723019040E0002A01D060 :1032700000200860A17960790902401885B2E279DE :103280000020684903E02618767A0E54401C9042CC :10329000F9DB6449284602F07FFC002009340090E5 :1032A00001905C48039402781823D1E5A1796079F4 :1032B000090241185A48C182818A00290BD0002195 :1032C0008182574801F08EFE002000900190514805 :1032D00019230278BCE50121F2E75148038300205D :1032E00002E04F490020088300900190E3782A46CD :1032F000AEE54B492020AFE5A1796079090240187D :10330000494980B20A18E179121D782801D30021B9 :1033100005E00B18782B02D97821081A81B2C8B2BF :1033200001920090A1E5A1796079090240183E4917 :1033300080B20B18E2791B1D782801D3002205E02A :103340001118782902D97821081A82B261461846E4 :10335000FDF72DFF0020009001902E48E3780278C1 :1033600039460298FFF7BAFC02460299069801F026 :1033700079FE2D4802F030FC3CE02B4802F02CFC9A :1033800000200090019023485523027860E52448EE :1033900001F028FE0020009001901E48562302787C :1033A00056E5032109022148FDF71AFF002000908D :1033B00001905AE51E481F4A4DE7A179607909023C :1033C0004018E17980B20D01FEF7BEFAE9B2009132 :1033D00027E7FEF7E5F80020009001900D486523EF :1033E000027835E50298FFF779FC024602990698C3 :1033F00001F038FE002009B0F0BD022069460873D4 :1034000003A901200191EE232A4600900499E9E7DF :10341000140400002D0100200080000800A0000816 :10342000781B0020BC0F0020441300202C0C00202F :10343000C4130020F405000070B5FEF77BF81648B1 :1034400000F078FA154D164C6869A065124881683D :1034500061658188491C81808088E0640E4801F0A4 :10346000C1FD2868206768686067A868A0670122B6 :103470000C4B1146A06DFEF701F820468030E9683C :103480000160A9694160E96981602969C160296AAF :103490000161002070BD0000781B00204001002069 :1034A000441900203930000030B5836801221340F0 :1034B00002D00022104630BD8C684B68C968234397 :1034C000C468034D2C4021430B43C360F2E7000066 :1034D000C73FFFFF30B583680122134002D00022AE :1034E000104630BD18C94D6823430C6889682C43C9 :1034F00023430B43C168024C21400B43C360EFE7F9 :103500003CC2FEFF08B504494A6902434A61496961 :103510000140009108BD00000010024008B50449B8 :10352000CA690243CA61C9690140009108BD00002F :103530000010024008B504498A6902438A6189691A :103540000140009108BD00000010024070B5094E16 :1035500004467618203E049D0C34F17F0830102D6F :1035600003D00A50F07F035170BD0A51F17F0B5018 :1035700070BD0000F46D0008044A51182039C97F5D :10358000425852085200425070470000F46D000843 :10359000044A51182039C97F425801231A43425026 :1035A00070470000F46D0008044A51182039C97FA3 :1035B000425802231A43425070470000F46D00083D :1035C000054B10B559182039C97F435803242403EB :1035D000A3431343435010BDFA710008054B59181B :1035E0002039C97F001D0B581B0C1B0413430B50C3 :1035F00070470000F46D0008054B10B559182039CC :10360000C97F4358034C23401343435010BD00006F :10361000FA710008EFBFFFFF054B10B559182039AC :10362000C97F43588024A3431343435010BD000077 :10363000FA710008054B10B559182039C97F435855 :103640000324A402A3431343435010BDFA7100089E :10365000054B10B559182039C97F43582024A3437E :103660001343435010BD0000FA710008054B10B51C :1036700059182039C97F43584024A343134343506A :1036800010BD0000FA710008054B10B5591820391B :10369000C97F435803242402A3431343435010BD5E :1036A000FA710008F0B500233CE001249C40224060 :1036B00037D04F6806681446544365006519AE4319 :1036C00067433E4306604E68012E01D0022E05D1AD :1036D0008F6886686743AE433E4386600F69C6685D :1036E000AE4325467D432E43C6604D68022D18D15A :1036F0004D69FF2A09D8066A544354432201121B1C :1037000096436C43264306620BE0140A224662434A :10371000624362431401A61A446A6A43B4431443E1 :1037200044625B1C0A681446DC40BED14A68012A28 :1037300001D0022A06D10A68C968436893434A4304 :10374000134343600120F0BD10B5044601F07EFA3A :10375000206001F061FA606001F06CFAA06010BDB9 :10376000014610B5002000290FD1104A116B8907BE :10377000890F01290AD0022911D0032909D001F0AB :1037800065FA01F049FA01F055FA10BD01F05EFA50 :1037900010BD11688907C90FFAD0054810BD116A1C :1037A0008907C90FFAD00120C00310BD00100240E4 :1037B00000127A00F0B50268194B1A4C984201D0F9 :1037C000A04203D17025AA434D682A43164D174ED7 :1037D000174F98420AD0A04208D0164CA04205D0FC :1037E000A84203D0B04201D0B84204D1032424023D :1037F000A243CC68224302608A68C2620A8882625D :10380000984205D0A84203D0B04201D0B84201D1BD :10381000097C016341690122114341611046F0BDF9 :10382000002C0140000400400040014000440140E1 :10383000004801400020004041680122D20291432B :10384000416081680822914381607047FEB504465B :1038500000680D460026C007C00F4FD1E9686868B0 :10386000AA6908432969114308432168244A114081 :1038700008432060A8686168032212039143014352 :1038800061606869A168121191430143A1601D48FC :10389000844203D10020FFF763FF12E01A488442FC :1038A0000BD01A48844208D01948844205D01948E0 :1038B000844202D01848844220D16846FFF744FF72 :1038C000029800281AD02968002917D00126AA6971 :1038D000F3039A420CD140004A088018FDF706FC19 :1038E0000E4980B201400007420F0A43E26005E042 :1038F0004A081018FDF7FAFB80B2E0603046FEBDC2 :10390000F369FFEF003801400044004000480040E8 :10391000004C00400050004000140140F0FF000047 :1039200010B580220249FDF742FC002010BD0000C6 :10393000646D0008F0B5154A00215514144C154F5C :103940000CE0D65ABE4208D19B185B886668B34229 :1039500003D90AC44B1C2360083C491C4B01AB42F1 :10396000EFD321680123002905DB490189182022B2 :1039700001F006FA00E08380A06840012030A842F0 :1039800001D90020A0600020F0BD000000C80008A0 :1039900040010020AA5500001FB50B46024604A1B5 :1039A000684602F02DFB0146684601F013F91FBD81 :1039B000201B5B25643B25644800000070B5012096 :1039C0008AB04002FFF7B6FD224CA06A03263043BE :1039D000A0622149B0050A68824302430A60A26AD4 :1039E00083111A43A2620A68824302430A600025D7 :1039F00005950695079505A920460895FFF754FDFE :103A00000120039000950195029569460495204692 :103A1000FFF760FDE16804208143E1606169C90846 :103A2000C9003143616161680143616060680821D8 :103A300088436060A06817218843C9070843A060D5 :103A4000A068C00FFCD1A06804490840401CA060D9 :103A50000AB070BD0024014008270140E8FFFF7F45 :103A600010B50120FFF74EFD00210A2000F08EFC6A :103A70000A2000F081FC00210B2000F087FC0B20C5 :103A800000F07AFC10BD0000F0B5012087B04004C2 :103A9000FFF738FD01208004FFF734FD0120C0044A :103AA000FFF730FD01208005FFF72CFD1C480125A4 :103AB000002403266A46049551C20927FF06694679 :103AC0003846FFF7EFFD1920000203946A4604947C :103AD00061C269463846FFF7E5FD2802B861114822 :103AE0006A46049551C2104F69463846FFF7DAFD21 :103AF0000B20000303946A46049461C26946384669 :103B0000FFF7D0FD0720400300900294039469461C :103B1000019504940548FFF7C5FD07B0F0BD00000E :103B2000C0800000E743000000040048000800488F :103B30000848074901600849016004214160074ABB :103B40008260C1684907FCD1026105490160704784 :103B5000CCCC00000030004055550000FF0F0000A5 :103B6000AAAA000010B586B014216846FDF738FBFC :103B70001020FFF7D3FC0021112000F007FC1120DA :103B800000F0FAFB2F2069460880002001900848C9 :103B9000084C02902046FFF70DFE206880218843E4 :103BA0002060E06801210843E06006B010BD00001D :103BB000E70300000010004070B501208EB08003C4 :103BC000FFF7B8FC03204002079002200890032072 :103BD00000240990012509200A9407A90C950B944B :103BE000C006FFF75FFD3A4E102202213046FFF774 :103BF00003FD002202213046FFF7E2FC00220221F1 :103C00003046FFF725FD002202213046FFF72EFD4A :103C1000802202213046FFF7FFFC002202213046BD :103C2000FFF732FD002202213046FFF703FD00229C :103C300003213046FFF7E0FC002203213046FFF766 :103C4000BFFC002203213046FFF702FD00220321C2 :103C50003046FFF70BFD802203213046FFF7DCFCE6 :103C6000002203213046FFF70FFD002203213046DA :103C7000FFF7E0FC00211B2000F088FB1B2000F078 :103C80007BFB1448694600680090019402940394F9 :103C9000059406940C20104C04902046FFF7D6FDA6 :103CA0006068290508436060606849000322520586 :103CB000904308436060A06849120843A060204612 :103CC000FFF7BAFD2068284320600EB070BD0000E9 :103CD00000000240D800002000380140F0B58DB04F :103CE0001C2106A8FDF77CFA18216846FDF778FA32 :103CF000012464042046FFF711FC2046FFF702FC74 :103D0000012500240E200226032703956A46059507 :103D10000494C1C209206946C006FFF7C3FC00969F :103D20000920039504956946C006029701960595FA :103D3000FFF7B8FC464E102204213046FFF75CFC2A :103D4000002204213046FFF73BFC002204213046CC :103D5000FFF77EFC002204213046FFF787FC80221B :103D600004213046FFF758FC002204213046FFF7BB :103D70008BFC002204213046FFF75CFC0022052169 :103D80003046FFF739FC002205213046FFF718FCCA :103D9000002205213046FFF75BFC0022052130465A :103DA000FFF764FC802205213046FFF735FC002236 :103DB00005213046FFF768FC002205213046FFF759 :103DC00039FC00211C2000F0E1FA1C2000F0D4FA9C :103DD000A61EFF21304600F0D9FA304600F0CCFA9A :103DE0001C48EE03006806900794089409940C2080 :103DF0000AAA51C2184C06A92046FFF727FDA06861 :103E000021140843A060A068B0433043A06020683C :103E10001F214905884308432060206849118843D1 :103E200008432060606829050843606060684900B5 :103E30007A05904308436060A06849120843A06077 :103E40002046FFF7F9FC2068284320600DB0F0BD44 :103E500000000240DC0000200044004010B58EB09D :103E60001C216846FDF7BCF9182107A8FDF7B8F931 :103E70000124A4042046FFF751FB2046FFF742FB34 :103E800018200790022008900320099000240420A5 :103E90000C900A940B9407A91348FFF703FC002128 :103EA0001D2000F073FA1D2000F066FAE120800268 :103EB00000900C2004900194029403940594012036 :103EC000C0030A4C069069462046FFF7BFFCA06875 :103ED000A1140843A0602046FFF7AEFC2068012132 :103EE000084320600EB010BD0004004800480040A8 :103EF00010B58EB01C216846FDF772F9182107A88D :103F0000FDF76EF901200005FFF708FB0120800492 :103F1000FFF7F8FA18200790022008900320099074 :103F2000002404200C900A940B9407A91348FFF76F :103F3000B9FB00211D2000F029FA1D2000F01CFA19 :103F4000E120800200900C200490019402940394DC :103F500005940120C0030A4C069069462046FFF7ED :103F600075FCA068A1140843A0602046FFF764FC1C :103F700020680121084320600EB010BD00040048F5 :103F80000050004030B58DB01C216846FDF728F97F :103F9000182107A8FDF724F92020FFF7CBFA01200C :103FA0004004FFF7AFFA302007900220089003206A :103FB0000990052000240C9009200A940B9407A96D :103FC000C006FFF76FFB00211D2000F0DFF91D2068 :103FD00000F0D2F9E1200002009001250194029442 :103FE00003940C20ED0304AA31C20B4C6946204611 :103FF000FFF72CFC6068A84328436060A068A11408 :104000000843A0602046FFF717FC20680121084301 :1040100020600DB030BD00000014014000B508461E :10402000042A02D80020C04300BD01787F2902D9AC :104030000120C04300BD41784906490E1F2902D91D :104040000220C04300BD114602F094FA0028F9D0C6 :10405000042000BDF7B588B00F460A9A0898FFF70C :10406000DDFF0690002803D00020C0430BB0F0BD58 :10407000BD483A7800783946824273D18C784A78C4 :10408000CB78B98824024DBAB8491C4308704A70ED :1040900001200790200521070226000E090F1300BA :1040A00001F0C2FF11A60A508DA7BFDDA6A6A6A6E5 :1040B000A6A6A6A6E9F0A600E81DC008AB49039095 :1040C0008870002038E000270120059701900098B3 :1040D000C000049026E0210701222009090FD20226 :1040E000944207D24200A2481218092080011018F9 :1040F000808E05E042009E481018FF308130808A93 :10410000FDF798FB002801D0019807430198641C33 :104110004006000E01900598A4B2401C05900828A6 :1041200004DA049805994018A842D4DB8F48009916 :104130004018C7700098401C039900908842C2DB69 :10414000761854E0E81DC008884903908870002064 :1041500030E0002000900120019002980027C0006C :1041600004901DE0FDE02005000E4200804821077C :104170001218092080011018090F808AFDF75AFBD8 :10418000002803D001990098084300900198641C0E :104190004006000E7F1CA4B20190082F03DA049899 :1041A000C019A842DFDB7149029A00988918C870CB :1041B0000298401C039902908842CADBC0E768005D :1041C0006A498446887000200EE021184A00684938 :1041D000470052180921C9015118898E634A0B0AF8 :1041E000BA18D3701171401CA842EEDB17E0761CA0 :1041F0008DE068005D4A8446907000200DE0211833 :104200004B005B4947005B18092189015918898ACD :10421000BF180B0AFB703971401CA842EFDB6644E3 :10422000E5E7002D12D0FF221202954207D142008D :104230004F4812189D208000101800F02FFF3946BB :104240004A480A9AFCF7B3FF0A9E85E042004848B4 :1042500012189D208000101800F0E0FDEFE738797B :104260007979000208434249620052180921C901C4 :1042700051188886E3E7E81DC0083C490390887020 :10428000002036E047E03818C07900900120019006 :10429000002005900298C000049024E0210701222C :1042A0002009090FD2029442009B019A07D21A40BA :1042B00043002F481B189D208000181805E01A4065 :1042C00043002B481818FF30953000F0FBFE019892 :1042D000641C4006000E01900598A4B2401C059095 :1042E000082804DA049805994018A842D6DB0298F9 :1042F000401C039902908842C5DB1C48B978817044 :10430000F978C1703979017179794171361D069852 :10431000002814D025E000200EE04100C919CA7918 :10432000097A12020A4321184B0011495B1809212E :10433000C90159188A86401CA842EEDBDDE70798C0 :10434000002809D0B1B2094802F014F9074988558C :10435000000A89194870B61C32460449089800F0D2 :1043600081FE002082E6000038010020BC10002001 :10437000C413002070470000C106C90E0120884008 :10438000014908607047000000E100E08307FF2258 :10439000DB0E9A408907090E994000280BDA0007C6 :1043A000000F0838830808489B001818C369934316 :1043B0000B43C3617047830804489B0018180368C7 :1043C00093430B430360704700ED00E000E400E01E :1043D0008307FF22DB0E9A408907090E99400028C7 :1043E0000BDA0007000F0838830808489B001818EC :1043F000C36993430B43C3617047830804489B0020 :104400001818036893430B430360704700ED00E006 :1044100000E400E070B572B60125094A2D039561EC :1044200080210C028B019362084201D0946100E06C :10443000946249089361F6D19562956162B670BD48 :104440000004004810B501200449C0064860044833 :104450000168491C016000F005F810BD00ED00E0A6 :10446000D400002070B5094DE86F00280CD0084C2E :10447000084902202268FEF78BFA00202060E867D6 :104480008021044801F086FA70BD00007809002000 :10449000E40000208C0A002010B50648054B007887 :1044A0000021403B5A1840325478491C14700F299F :1044B000F8DB10BD0414002010B5084C084B012295 :1044C0000221A06DFCF7DAFF064800F08BFDE06DDD :1044D000401CE065A06D2066002010BD441900203E :1044E00039300000781B00200248C16D491CC165AD :1044F0000020704744190020F3B5FA4D85B02868B4 :1045000000286FD0686800281CD000220D210820E8 :1045100000F0EEFD00221146082000F0E9FD012226 :104520001146082000F0E4FD00200146EE4A131871 :104530004033401C19701028F8DB00260121144676 :1045400040347BE20122E1E7B2000598059B805CE4 :10455000D7187A78019201257B8800931B2873D0A5 :1045600012DC0246030001F05FFD1B5C7272727286 :1045700072723E3E3E3E3E3E5C5C5CA7A7A73E3E5E :10458000BEBEBEBEBEBE5C00342870D011DC01468B :104590001C390B0001F048FD18A7A7A7A7A7A7A7DC :1045A000A7A7A7A745454545454545454545454533 :1045B000F7453A2873D008DC014635390B0001F085 :1045C00033FD05E26E56E26E3000DC2804D004DCD8 :1045D0003B28EFD0C82824D120E1DD28FCD0FA28E0 :1045E000F9D11BE133E2D01F030001F01DFD0E08DD :1045F0000A10181B1D1A1A1A1A1A1A20261A207CB9 :104600004AE0FFF749FF00281FD0207C3AE0FFF77F :1046100043FF002816D1207C002813D125E000F0AC :10462000C3FAF5E12078F7E7FFF736FF1DE0207CBD :1046300000280AD0002905D007E0207C002804D1FA :10464000002902D0012010E04DE000200DE0130011 :1046500001F0EAFC070C050E111B262E0C0000F0E1 :10466000A3FA00990198FDF7F9F82074D0E11AE156 :1046700000F09AFA0CE0207C0028E6D0009901981E :10468000FDF7ECF80028E0D0DCE7207C0028DCD047 :1046900000990198FDF7E2F80028D6D1D2E758E159 :1046A000207C0028CED100990198FDF7D7F8B3E718 :1046B000207C0028ECD0C5E7102804D0112804D0B5 :1046C000122AAED10AE0227C03E0207C0028A8D088 :1046D00001220099019800F00BFD99E1207C00284F :1046E0009FD00022F5E715383D79030001F09CFCCE :1046F000120A1215181B0F1E3C4C5B6A2D7981851E :10470000898D7D9400F050FA13E0207484E000F06D :104710004BFA1DE000F048FA29E000F045FA36E0D7 :1047200000F042FA42E000F03FFA4EE0207C002820 :1047300070D028460099FDF71FF90546F988787969 :10474000FDF71AF9854263D064E0207C002861D02F :1047500028460099FDF710F90546F9887879FDF7A4 :104760000BF9854254D155E0207C002852D02846D0 :104770000099FDF701F90546F9887879FDF7FCF80D :10478000854245DB46E0B1E0207C002842D0284647 :104790000099FDF7F1F80546F9887879FDF7ECF80E :1047A000854235DC36E0207C002833D0284600994D :1047B000FDF7E2F80546F9887879FDF7DDF88542DE :1047C00026DD27E0207C002824D028460099FDF72C :1047D000D3F80546F9887879FDF7CEF8854217DADF :1047E00018E0207C002813D1A3E7207C00280FD1FB :1047F000AEE7207C00280BD1B9E7207C002807D148 :10480000C5E7207C002803D1D0E7207C0028DCD03D :1048100001207AE7002078E70225F9E03F79154684 :10482000C8280DD0DC2823D0DD282AD0FA28F3D1DF :104830002D48E90008184030007EC0062AD508E05F :104840002948E90008184030007EC00601D4002144 :1048500021E0207C002822D038460099FDF78CF812 :104860000146284600F0E2FA284600F0F5F84CE749 :104870001D48E90008184030007EC006E9D4012137 :1048800009E01948E90008184030007EC006E0D46D :10489000022100E003212846FDF78EFDD9E72846D6 :1048A00000F01AFEE0E73F790225342802D03728CD :1048B00016D108E0207C002812D038460099FDF778 :1048C0005BF8401C07E0207C002809D0384600999E :1048D000FDF752F8401E02463846009900F07EFC73 :1048E00096E000003C110020C41300203D79797946 :1048F0000291F9880191332814D035281BD038282B :104900008AD1207C002887D00298FDF735F8074629 :1049100028460099FDF730F83A1A0199029800F0FC :104920005DFC79E7207C0028FBD028460099FDF744 :1049300023F80246F1E7207C0028F2D028460099AF :10494000FDF71AF8054601990298FDF715F82A189F :10495000E3E73A7979790291F9880191797A0391BB :104960007D89362806D0392812D03A281FD03B2816 :104970004DD131E0207C002849D010460099FCF749 :10498000FBFF074601990298FCF7F6FF3A180CE086 :10499000207C00283BD010460099FCF7EDFF07462D :1049A00001990298FCF7E8FF3A1A29462CE0207C8E :1049B00000282CD010460099FCF7DEFF07B20199C1 :1049C0000298FCF7D9FF00B247433A4629460398BC :1049D00000F004FC3A1416E0207C002817D01046A2 :1049E0000099FCF7C9FF07B201990298FCF7C4FFD0 :1049F00001B23846FCF790FB02B20F4629460398F5 :104A000000F0ECFB3A46691C039800F0E7FB032535 :104A1000301141000F48012308183107090F02899E :104A20008B401946114000D00121277C0830002F0F :104A300001D01A4300E09A43028076190698864214 :104A400000DA81E503494868401C4860002007B04F :104A5000F0BD00003C110020FEB50746402802DBF7 :104A60000020C043FEBD2C48F9000E1800964036C9 :104A7000348BE10601D40020FEBDA1063CD56106C1 :104A80003FD42649096800980A25406D0190081A0C :104A9000A1070FD0A107890F012905D0022905D050 :104AA000E143890705D005E0642503E07D25ED009D :104AB00000E01B4DA84224DB2946FCF72DFB0146F4 :104AC00015487A0012180B20800110188446808E39 :104AD000019B401869435B18009980B24B650D211A :104AE00089015118898E814203D8084640210C4320 :104AF00034836146888604E0600602D54020844302 :104B00003483307EB9B24006C20F052000F0F0FABF :104B1000307E4006C00FFEBDC4130020E007002019 :104B200010270000F7B50446FCF7FBFE0546029986 :104B30002068A942A16806DC4018029A0199FCF796 :104B400036FB029919E040182A460199FCF72FFB21 :104B500029462046FCF7D8FC2046FCF7E2FE064634 :104B60000298471BB7420DDCA16820683A464018FE :104B700001994919FCF71BFB39462046FCF7C4FC98 :104B80000298FEBD002E0CDDA16820683246401858 :104B900001994919FCF70BFB31462046FCF7B4FCA0 :104BA000AD192846FEBD0000074A0F2011183F230B :104BB0005B5C4031401E0B700028F7DC024940313D :104BC000087C087070470000C413002000B5FFF790 :104BD00021FC00BD10B50C460A4601460348FFF70C :104BE000A1FF00F0BFFE204610BD00003C090020E0 :104BF00010B50C460A4601460348FFF793FF00F044 :104C0000B1FE204610BD00003C09002010B50C4646 :104C100000F010FF204610BD04494968F022114001 :104C2000034A0909515CC840704700000010024067 :104C30000472000803494968034A4905490F515C59 :104C4000C8407047001002401472000810B50748B1 :104C500041680C200140064805D0042904D00829E9 :104C600001D100F009F810BD024810BD001002404B :104C700000127A00001BB70010B50D4C60680321CC :104C8000C90301220840D203811A0A4802D0914286 :104C900000D10948E16A0907090F491CFCF726FA07 :104CA00061680F2292041140890C891C484310BD91 :104CB0000010024000127A00001BB7000920C00655 :104CC00000694106C90FC943C907CA0D012149023C :104CD0008A430106C90FC943C907890D0A43012147 :104CE000C00B8902C043C0078A43400D02432248DB :104CF00001690120C00282438807C00FC043C0077A :104D0000000D02430120000382434807C00FC04347 :104D1000C007C00C024350088A06D30F012240008E :104D20009A431043022290434A06D20FD243D2073D :104D3000920F1043042290430A06D20FD243D207A7 :104D4000520F104308229043CA05D20FD243D20714 :104D5000120F8905C90F1043C9431022C907904398 :104D6000C90E0843054909695202C90BC943C9075D :104D70009043890C0843704700040048000800482D :104D800070B5D417A40F0023A418A51003E09C004D :104D90000E5906515B1C9D42F9DCD40F6B00A41820 :104DA000651003E05C000E5B06535B1C9D42F9DC62 :104DB000104670BD00B5FFF781FF00BDF8B50023B8 :104DC00084468025DB431248002421462A464A4374 :104DD000121817880F4EB74209D17E26B75A0E4EC9 :104DE000B74204D15288A24201DD0B461446491C49 :104DF0000829EBDB082B06D26B431918802260468A :104E0000FFF7BEFF02E06046FEF78AFD0020F8BD16 :104E100000C00008AA550000A55A00000B07028830 :104E20001B0F012199408A430280704730B540280A :104E300002DB0020C04330BD0D4CC20013191A46DE :104E40004032157EAD0611D4400000190D24A40196 :104E50000419A1860B240021A401001981860548AC :104E600000685865108B202108431083002030BD56 :104E7000C4130020E0070020034610B500200246BE :104E800004E09C5C2018521CC0B2D2B28A42F8D313 :104E900010BD000010B50B4C20461E388278611FF3 :104EA0004A704922227000796070085CA07003216A :104EB0002046FFF7E1FFE0700421204600F040F8B3 :104EC00010BD0000F601002010B51C4C2078002811 :104ED00024D0207B80062DD1607901220023002878 :104EE00006D0A271E07900280AD0401EE07107E0E8 :104EF000A068401CA0600A2802D91420E071A371A8 :104F00006078002816D02179491CC9B221718142EC :104F100000D922716371FFF7BDFF0BE02069401CCF :104F20002061C82801D9642003E0E079002801D07D :104F3000401EE071E068401CE06010BDD801002018 :104F400010B500F005FE10BD70B5044604291AD155 :104F50000321FFF791FFE178884214D1184900221C :104F60000878002820780FD00B461433692808D120 :104F700065780879854204D101254D718A60A2784F :104F80001A545878C87070BD4928FCD10C4D60780F :104F90004B781E359842F6D1A078C87069200A6116 :104FA0002870487868708878A87003212846FFF731 :104FB00063FFE87004212846FFF7C2FF70BD0000C0 :104FC000D801002010B500F001F810BD0348816839 :104FD000C907C90F00D0C068704700000030014009 :104FE0007047000070B51A4C6168491C616019492E :104FF0000180A18841801849CA6C8280496D816016 :10500000112181831549C183A1684A0114495118AE :1050100000250B462A469E5CFF2E04D1521C202AF6 :10502000F9D3002D10D02022FCF758FBA068206097 :10503000401CA0604001012189022030884201D932 :105040000020A060002070BD202200F0FBFDEDE7F5 :1050500040010020AA55000044190020A55A000074 :1050600000C8000810B514460A46012802D00228DC :1050700006D00DE021461046FFF7BAFD054804E0D2 :1050800021461046FFF7C2FD0348816F491C816726 :10509000204610BDE4080020780900200B07028894 :1050A0001B0F012199400A43028070470907090F2D :1050B00001238B400188002A01D0194300E0994365 :1050C0000180704710B5002A02D0FFF7E7FF10BD3E :1050D000FFF7A4FE10BD0907090F01238B400188CB :1050E000002A01D0194300E0994301807047000075 :1050F00070B50B051B0E204C5B000D071C192D0F06 :10510000030000F091FF09060B14191E22272C3111 :105110003600FF292DD89520800003E0FF2928D8EC :105120009D20800020182946FFF7D5FF21E0FF29A8 :105130001FD8A5208000F5E780291AD2FD20800025 :10514000F0E7802915D20D48ECE7402911D2AD20B7 :105150008000E7E740290CD2B5208000E2E78029F3 :1051600007D206482030DDE7802902D2034880308C :10517000D8E7002070BD0000C41300201404000014 :105180000121C903034A002801D09162704791614F :10519000704700000008004801218903034A0028E5 :1051A00001D091627047916170470000000800488B :1051B00001210922C902D206002801D0916170475D :1051C0009162704701214903034A002801D091628E :1051D000704791617047000000080048F0B5304CFE :1051E0004B001C190923DB01E6180B23DB01E51832 :1051F00092B28A283DD00EDC294F4B00DF190923DB :105200009B01FF188338030000F00EFF0714181CE1 :1052100021262D46480099283ED006DC8B282CD02C :105220008C2831D08D2839D133E0A12834D0FE2804 :1052300034D131E0102931DABA822FE010292DDA89 :10524000BA862BE0102929DA0520C00108E00829D8 :1052500024DA0F20800114E008291FDA01208002DF :10526000201882821AE0802918DAB28616E0AA860F :1052700014E0802912DAB28210E040290EDA0D2003 :1052800080012018828609E0402907DA0B2080017E :10529000F7E7402902DAE8E78029E8DB0020F0BDE3 :1052A000C4130020F0B58DB0002501F019F9FCF70A :1052B000CFFB059010213A4801F07CF90790FCF7EC :1052C000C7FB04901021364801F01EF90690FCF748 :1052D000BFFB03901021324801F034F90190FCF734 :1052E000B7FB064610212E4801F044F90090FCF768 :1052F000AFFB2C4A04469068012108439060881E49 :10530000106129481061264B0021585C1070491C1F :105310001029FADB1768FCF79BFB0B9001990098AA :1053200002970190214F0091781921A1069B079ABD :1053300000F066FE45190B98A11B001B019102901D :10534000039A04990398B21A431A009208460599E1 :10535000421A781920A100F053FE441908A8FEF75C :10536000F3F9264842680320C00302403819134667 :1053700023A100F045FE0419381926A1089A00F06F :105380003FFE01193846FFF725FC01210D20FEF7ED :1053900003FB24490320886000200DB0F0BD00000D :1053A0001C6D00080030024001A00000E40700204E :1053B0000D0A435243202025303458202025303414 :1053C00058202025303458202025303458202025DE :1053D0003034580D0A00000074696D6520253034A2 :1053E000642020253034642020253034642020259A :1053F0003034642020253034640D0A00001002404F :105400004D61696E536F7572636520257820256440 :10541000200D0A00737973636C6B202564200D0ADC :1054200000000000C000002030B50021174D0846E4 :10543000696042005219401C1181FF28F9DD0020EB :105440000522134CD20143001B199B18401C998262 :105450001028F8DB00200922D20143001B199B18F9 :10546000401C9986FF28F8DD00201022C100091990 :1054700040310B8B401C93430B834028F6DB01200B :10548000044928604882002030BD00003C11002003 :10549000C4130020781B002010B500210C480922FD :1054A00001600C4B084692014400E418A418401C0B :1054B000A1861028F8DB0020012292024400E418A3 :1054C000A418401CA1820828F8DB002010BD0000B1 :1054D0003C110020C413002010B5402802DB00203E :1054E000C04310BD0B4BC100CA18114640310C7EA1 :1054F000A4060DD54000C0180B2300249B01C01842 :105500008486054800685065088B202290430883F4 :10551000002010BDC4130020E007002010B5FCF7E8 :105520006BFBFCF71DFF10BD70B594B030216846D1 :10553000FBF756FE0024022501260E94E80309908D :10554000009605200F94C0040D9401960A900C94C7 :1055500008950B956846FCF7F1FC002803D08621DE :1055600015A000F04BFD07200C900E9401210D9525 :105570000F940CA8FCF706FC002803D092210EA083 :1055800000F03CFD109610A81296FCF785FB002851 :1055900003D0A12108A000F031FD4B208001FCF7D1 :1055A000C7FE0420FCF77EFE00221146501EFCF7C9 :1055B0006FFB14B070BD00002E2E5C5372635C4212 :1055C00053502E630000000013480168012211436C :1055D00001604168114A114041600168104A114060 :1055E00001600168012292049143016041683F22F9 :1055F000120491434160C16A09090901C162016B4A :10560000FF22143291430163416B49084900416311 :105610000021816070470000001002400CB8FF08B4 :10562000FFFFF6FE04480169C907C90F02D0012136 :10563000C9430161704700000010004070B51B4C69 :10564000E0691B498006C00F11D01A4A0120106082 :10565000194A10600869401C0861A28C4868401C07 :105660004860174B154D18682A54401C1860E069B3 :105670000007C00F04D008202062C869401CC86120 :105680002068C006C00F07D0E069C006C00F03D075 :105690001020206200F01EF9E0694006C00F03D020 :1056A0004020206200F056F970BD00000038014033 :1056B000E4080020E8000020EC0000200C0A002094 :1056C000E000002010B5104CE069E0690007C00F51 :1056D00005D0082020620D48C169491CC1612068BD :1056E000C006C00F07D0E069C006C00F03D010206D :1056F000206200F07FF9E0694006C00F03D040202F :10570000206200F0C7F910BD004400407809002075 :10571000F8B55E4CE0698006C00F09D0A08C5C4AE9 :10572000C1B21068FF2803D25A4B1954401C1060B4 :10573000E06900250006C00F8026002810D05649D9 :10574000564A08681368984205D30D6015602068B2 :10575000B043206004E0524A125C401C086022857D :10576000E0690007C00F01D0082020622068C00651 :10577000C00F07D0E069C006C00F03D01020206220 :1057800000F090F9E06940274006C00F002802D0E1 :10579000276200F093F9434CE0698006C00F09D0FE :1057A000A08C414AC1B21068FF2803D23F4B195464 :1057B000401C1060E0690006C00F10D03C493D4B12 :1057C00008681A68904205D30D601D602068B043D8 :1057D000206004E0384A125C401C08602285E069C1 :1057E0000007C00F01D0082020622068C006C00F4B :1057F00007D0E069C006C00F03D01020206200F07F :1058000075F9E0694006C00F02D0276200F07AF90E :105810002A4CE0698006C00F09D0A08C284AC1B28A :1058200010683F2803D2274B1954401C1060E069D0 :105830000006C00F10D02449244B08681A68904213 :1058400005D30D601D602068B043206004E0204A4D :10585000125C401C08602285E0690007C00F01D07F :10586000082020622068C006C00F07D0E069C0068B :10587000C00F03D01020206200F05CF9E069400600 :10588000C00F02D0276200F061F9F8BD0048004067 :1058900074010020141E0020A001002078010020C7 :1058A000541D0020005000407C010020141F0020E7 :1058B000A401002080010020941D0020001401405C :1058C0008401002014200020A8010020880100206D :1058D000D41D00200548416A491C416204490968F9 :1058E000002901DD0121C16770470000E4080020A4 :1058F000E0000020F8B5144D0C460646022128466B :10590000FDF73AFE10200090104B32460221284647 :10591000FDF71CFE224602212846FDF75FFE02210C :105920002846FDF735FE0A48046301214172022131 :105930002846FDF739FE0548283881688022114342 :1059400081602046F8BD0000000002402838014078 :10595000E40800200248016A491C01627047000007 :10596000E408002010B50A48407A00280DD1084C00 :10597000206F5834002808D12046FBF7BFFF0146AE :10598000E26820688018FFF7B5FF002010BD000016 :10599000E4080020F8B5144D0C46064605212846BB :1059A000FDF7EAFD002000903346104A0521284605 :1059B000FDF7CCFD224605212846FDF70FFE052107 :1059C0002846FDF7E5FD0A4844630121817205215F :1059D0002846FDF7E9FD0548243881684022114337 :1059E00081600020F8BD0000000002402444004017 :1059F000780900200A480B4900794058802180B27C :105A0000081A0949012208600849CA674A6A521CF3 :105A10004A62002803DD01200549000748607047FD :105A2000F46D000804000240E40000207809002022 :105A300000ED00E0F8B5144D0C460646042128465A :105A4000FDF79AFD10200090104B324604212846A5 :105A5000FDF77CFD224604212846FDF7BFFD042109 :105A60002846FDF795FD0A4804630121417204218F :105A70002846FDF799FD05482838816880221143A2 :105A800081602046F8BD000000000240284400402C :105A9000780900200248016A491C01627047000031 :105AA0007809002003484068002802D002490120FC :105AB000C867704770010020981B002070470000E5 :105AC00010B50C460A4601460548FBF770FB054831 :105AD00084600548016880221143016010BD000008 :105AE000541D002070010020004800400348C06899 :105AF000002802D002490120C867704770010020C9 :105B00002C1C00207047000010B50C460A460146C8 :105B10000548FBF74CFB05480461054801688022F5 :105B20001143016010BD0000941D00207001002091 :105B30000050004003484069002802D0024901207B :105B4000C867704770010020C01C0020704700002B :105B500010B50C460A4601460548FBF728FB0548E8 :105B600084610548016880221143016010BD000076 :105B7000D41D0020700100200014014010B5054C18 :105B80000A46638821465B1C4380FBF7A7FD002083 :105B900010BD0000007C000870B50C460B49411890 :105BA000002B08D00A4D4519012B03D0094B9B8AC5 :105BB000002B00D129468005204603D000F042F892 :105BC000002070BDFBF78AFDFAE7000000800008A6 :105BD00000A00008781B0020F8B54188174A491C2E :105BE0004180154901807E2100250A52ED43802322 :105BF00000221146124C002659430C19314603E08D :105C0000675CFF2F04D1491C9942F9DB002E03D0B9 :105C1000521C082AEDDB00E01546082D06D2084983 :105C20005D436918802200F00DF803E080220449EA :105C3000FBF754FD0020F8BDAA550000A55A00004E :105C400000C00008F7B50D460646FBF7BDFF0298F9 :105C50000024870807E0A0003258411900230220E1 :105C6000FBF774FF641CA742F5D802987C00470834 :105C700007E06000325A411900230120FBF766FF5C :105C8000641CA742F5D8FBF757FFFEBDF7B588B0F7 :105C90000020069009980188C34881420FD10998D5 :105CA0008078C0070BD10998C178022907D3808872 :105CB000420809980092C0884008824202DB002016 :105CC0000BB0F0BD0291801A491EFBF725FA059032 :105CD0000898002870D1B5488168491C002481606B :105CE00092E0600021180998009A0818059961430C :105CF0008D18AE490A69521C0A61872189018D42BB :105D000002DAAA4A01211170A9496A18A9498A42EE :105D100024D2017BC07A890180080E182D20C00191 :105D2000281A074600F0B2FF70430190384600F091 :105D3000E3FB9E4F70433A6A84460C20134643436C :105D40009D4819188E60019EC65060464860C72A5B :105D500001DA521C3A62B969491CB961E12080013B :105D6000854250DD91480078012848D18F4B1A6A4E :105D7000002A44DD914D68422E46002117E00C2395 :105D80000F465F438C4BFB189C469B688C4FBB4275 :105D90000CDB63465B68002B03DDAB4206DA1D4675 :105DA00004E0002B02DA834200DD1846491C9142D0 :105DB000E5DB00218C4609E02CE00C230F465F4315 :105DC0007D4BDB59B34200DA1E46491C9142F4DB9D :105DD000002D09D0002807D07D2128180901FBF7E4 :105DE0009BF9FBF712FA84466046FBF719FA6F4DF0 :105DF0007D21A862C9003046FBF78EF968636B48C5 :105E0000002101700162641C0298844202DA282C8D :105E100000DA66E7089801287ED16448C168491C09 :105E20000024C160ADE0600021180998009A0818AC :105E3000059961438D185D494A69521C4A61872161 :105E400089018D4202DA594A0121517058496A1874 :105E500058498A4223D2017BC07A890180080E18F2 :105E60002D20C001281A019000F010FF074677434B :105E7000019800F041FB02464C480C21406A514B0E :105E800084464843C1188E601F5072434A60604682 :105E90004649401C48620846C069401CC861E12070 :105EA000800185426CDD41484078012864D13F4A39 :105EB000506A049000285FDD002003903F48424B69 :105EC00041420191844600213E4F1CE00C220D46C8 :105ED0005543EE19B2681E2A14DB9A4201DA1346C2 :105EE00003917A59824200DA10467268002A03DD73 :105EF000624507DA944605E0002A03DA019DAA42CA :105F000000DD0192491C049A9142DFDB00231D460B :105F10001A4619462D4E00E039E08619079616E01C :105F20000C270E467E43274FF719BF681E2F0DDB47 :105F3000244FBF59079EB74205DD052B06DD052A14 :105F400004DA6D1C02E0002D2BD0521C491C049E6B :105F5000B142E5DB7D27FF00144E3946FBF7DCF844 :105F6000706303980C21484316494018406839462D :105F7000FBF7D2F8B563F0620C4900204870486224 :105F8000641C0298844202DA282C00DA4BE70749A5 :105F90008A6B486B8018C20F10184010086306986F :105FA0008EE65B1CD2E70000AA550000000200202C :105FB0003FDEFFFF7F1600005822002040420F0006 :105FC00088130000B82B0020FFE0F50550C3000047 :105FD00010B5040001D0601C03D102210648FFF770 :105FE0006FFD012C01D0641C03D102210248FFF790 :105FF0008BFD002010BD000002020020FEE7000023 :106000000FB410B504A9074B02AA039800F028F8B2 :10601000044602A9002000F05DFA204610BC08BC2E :1060200004B01847D564000830B47446641E25785F :10603000641CAB4200D21D46635D5B00E31830BCBC :10604000184702E008C8121F08C1002AFAD1704799 :106050007047002001E001C1121F002AFBD17047E8 :10606000FFB591B00F460546002606E025280AD068 :10607000149A139990476D1C761C28780028F5D146 :10608000304615B0F0BD002400940121F34A02947B :1060900000E004436D1C2B780846203B98401042DA :1060A000F7D128782A280ED0022128780246303AE3 :1060B000092A15D8009A0A235A43303A80180C430B :1060C0006D1C0090F1E701CF0090002805DA012057 :1060D00040030443009840420090022004436D1C9A :1060E00028782E2815D10420044368786D1C2A28AE :1060F0000AD101CF6D1C02900BE002990A22514394 :10610000303940186D1C0290287801463039092931 :10611000F3D928786C2810D006DC4C281AD06828CF :106120000ED06A2817D104E0742813D07A2812D12F :1061300010E00120400504430CE00121090501E0C5 :10614000032109050C436978814203D10120000530 :1061500024186D1C6D1C287803906E281ED00CDC52 :10616000632831D004DC00288AD0582811D1B2E04D :1061700064287BD069280CD178E073282DD004DC0A :106180006F2870D0702804D1A7E075286CD07828CB :106190006BD0149A13999047761C62E06002400F0E :1061A000022807D003280AD0042838680AD00660DD :1061B0003F1D56E03868F11706604160F8E738681F :1061C0000680F5E70670F3E7387869460874002022 :1061D000487404A80390012003E03868039000206D :1061E000C0433F1D61070FD5002101E00199491C03 :1061F000029A0191914213DA8142F7DB019A0399E5 :10620000895C0029F2D10BE0002101E00199491CD1 :1062100001918142FADB019A0399895C0029F5D149 :1062200001990098139A401A00902146149B00F09F :106230003BF901998019461807E003980399007803 :10624000491C0391149A139990470198401E01909C :10625000401CF2D12146149B139A009800F014F9C7 :1062600086196D1C09E741E033E034E00A20002183 :10627000049005916002410F022905D001CFC21799 :106280009446032905D007E0FF1DFF08FF0003CF58 :1062900006E000B2C2179446042902D140B2C117E9 :1062A0008C4600226146944506DA0A4600214042A7 :1062B00091418C462D2102E0210504D52B216A460F :1062C0001176012103E0E10701D02021F7E70191D8 :1062D00054E00A200BE0102009E010200490002177 :1062E0000420044308200591029003E008200021C7 :1062F000059104906002410F022905D001CF0022D0 :106300009446032906D006E0FF1DFF08FF0003CFD7 :106310008C4603E080B2042900D1C0B20021019173 :1063200021072BD50399702906D0049A1021059BCB :106330004A401A4305D00EE040216A4611760121F9 :1063400008E06146014306D030216A461176039980 :10635000517602210191049A0821059B4A401A4373 :106360000CD16146014301D1610707D530216A464E :106370001176012101910299491E02910399582930 :1063800004D037A103910FA90F910DE039A1F9E7CE :106390006146059B049AFAF75CFF039B8C469B5C65 :1063A0000F9A521E0F92137061460143F0D10F985D :1063B00007A9081A20300390600704D501200004C3 :1063C0008443029801E0012002900399884201DD94 :1063D000401A00E000204118029001980918009826 :1063E000401A0090E00306D42146149B139A0098AB :1063F00000F05AF886190020049008E006A9085C0D :10640000149A139990470498401C761C04900199A3 :106410008842F3DBE0030CD52146149B139A0098C5 :1064200000F042F8861904E0149A3020139990473E :10643000761C0299481E02900029F5DC08E00F98AE :106440000F990078491C0F91149A13999047761C64 :106450000399481E03900029F1DCFBE6092801009E :1064600030313233343536373839616263646566CA :10647000000000003031323334353637383941428C :106480004344454600000000F8B5044600251E467A :106490001746880404D405E039462020B0476D1C17 :1064A000641EF9D52846F8BDFFB50446002581B025 :1064B0001E46C80301D5302700E02027880404D5F4 :1064C00005E038460399B0476D1C641EF9D528468F :1064D00005B0F0BD0A68531C0B60107070470000D7 :1064E00010B50A2101A0FEF775FB10BD1B5B324AF7 :1064F0001B5B303B304800002D2110B5C90140180E :1065000000F0C4FB10BD000030B503460B48002965 :1065100000D101210A4C491E0ED31A7850400022A6 :10652000C50702D04008604000E04008521CD2B2CB :10653000082AF5D35B1CEEE730BD0000FFFF00002A :1065400001A0000070B50A4DFF23EE1D1A46F93672 :1065500005E0047854402A5D5A40335D401C0C46E7 :10656000491E89B2002CF4D11802104370BD0000FE :10657000FA6F000870B504460C4800220C4E11E07A :106580002378521C1D4645402D07ED0E755B000912 :106590004540180968400007C00E305A2B09584082 :1065A00092B2641C8A42EBD370BD0000FFFF000072 :1065B0002C6D000810B5084A084B07E004785440D9 :1065C0002406E40D1C5B120A6240401C491EF5D2F1 :1065D000D04380B210BD0000FFFF0000FA6D00083C :1065E00006C00021016041608160C160012202613A :1065F00041610846704700008AB0002080F310888F :10660000FE4F0126FF203E830530FD4B8022009087 :10661000991AFC48FBF7F0FE4020FB4B0246191A82 :106620000090FA48FBF7E8FEFBF7EEFA0021F84A83 :106630000D466020484380184560856005614561CE :106640008561C561056285624562C562491C056355 :106650000929EEDBEF4CF0482567C06A6066EF4819 :106660000068A066EE48406AE066FEF75DFFEE490E :10667000EC480860FBF7D0FEFDF706FA0320039014 :10668000049501A902960595E848FDF70BF8FDF77A :10669000E7F9FCF7D1FEE648FEF790FBD748068302 :1066A000FEF788FBA063E34960630E70E249E34AAA :1066B0000E700107090FE24F11701F2805D0C006A8 :1066C00006D5E04806703D7005E0DF480670F8E743 :1066D000DC4805703E70DD480170DD49012008701E :1066E000E121DC4849020160FDF766FAFDF7F6FAA0 :1066F000FDF7B4FBD848006820210843D64908605C :106700000868102630430860FDF7F2FBD3480168A3 :10671000202211430160016831430160FDF732FC22 :10672000CF480168202211430160016831430160B4 :10673000FDF744F9FDF7FCF9FDF714FAC9480168C3 :10674000012211430160C848016820221143016001 :1067500001683143016001684022114301608021DA :10676000C248FFF717F9C248016831430160016868 :106770004022114301600A20FBF780F90120FEF757 :1067800021FD0020FEF708FD0020FEF71FFA012082 :10679000FAF79AFF0020FEF70BFDFEF783FDFBF7EB :1067A00057F96066954D002028826882A048C0880D :1067B0002882288A01280AD1FBF7D8FD208F2021C2 :1067C00008406882688A002801D0FEF72DFEA94E95 :1067D0005A2070840020C043FFF7FAFB0121A6482D :1067E0008902411808910F218901411809911B2143 :1067F000890145180F21C901401800909F4F0020C2 :10680000387001207870FBF723F93861FBF7EEF957 :106810000790FEF7CFFA07467848008AC0070BD0EA :10682000B806208F04D5800606D4FEF7FDFD03E0F0 :10683000800601D5FEF730FEA7630798E0630920C4 :10684000C00600690099888478480069C8848C482B :10685000006908858B4800694885FBF787F8307523 :10686000FBF7F6F8854F786187480068002801D06B :106870000020B082206CC006C00E02281CD1FAF79E :10688000ABFD8148016800290ED00021B1827F490B :106890000A68002A10D1006808607D4800687D49B8 :1068A0000860FDF709FE07E078490A68002A03D06E :1068B00000680860FDF718FE5048008A01280BD1D7 :1068C0004E48818A002927D07349B960C18A73482C :1068D0000160B868FDF710FE606E79696166081A9C :1068E000A066E16E884200D2E066216F884200D93E :1068F0002067FBF7ADF8B86152480078002806D051 :1069000052480078002802D00220FBF7B3FE079817 :10691000800403D5012002E06149D6E700203870E9 :106920000798000501D5012000E000207870444858 :10693000007800281DD00220FCF7B2F8606C002817 :1069400001D158490870574801784078000208186A :106950000899888254490868800401D5012000E024 :10696000002038700868000501D5012000E00020F3 :106970007870606C002801D0401E6064A06C002814 :1069800001D0401EA0641D48018B002934D07878C6 :10699000FEF718FC7878FEF7FFFB7878FEF7F0FB3F :1069A0007878002801D1012000E00020FEF700FCEB :1069B000FBF74EF8F8610998B18A81860898808AB9 :1069C000B086FBF745F83862FBF742F80A21786297 :1069D0000846FAF77BFB0020401C4028FCDB206CBB :1069E0003249401C20640868002806DD054AD26F41 :1069F000002A02D082B25BE06CE08BE0781B0020C2 :106A0000D4200020E408002018220020780900206B :106A10002C0C00204419002080F7FF1FD400002018 :106A20000010024010270000AC01002000040048C4 :106A300044130020D8010020D9010020F4000020D8 :106A4000F1000020F000002028010020FB000020C1 :106A5000F5000020D8000020004800400050004011 :106A60000014014000100040003801408C0A002052 :106A70000044004004160020C4130020B001002090 :106A800000080048000C0048640100206801002054 :106A90008C0100206C01002000A000083C010020B7 :106AA000008000080C0B00200C010020E0000020FA :106AB00056490120FDF7CEFA002805D05448534925 :106AC00002680120FCF728F951490020086051496B :106AD000C86732E0008A01280FD0606C002810D00F :106AE0007878FEF76FFBA06C00280CD07878FEF762 :106AF00053FB7878FEF744FB57E7474800680028C7 :106B0000EFD03878EDE70020FEF746FB0020FEF7D7 :106B100037FB48E74149786888420DD940484168C9 :106B200001221205114341604168520003235B05B5 :106B300099431143416001E0401C78603948007876 :106B4000002802D00020FAF799FF374FF86F00288D :106B500008D0364801783648FEF7F6F93349002068 :106B60000860F86733483449407D0870FEF7ACF997 :106B70003248007870753248C06F00280CD0A88861 :106B8000304F401CA880304900203A68FFF77EF85B :106B900000202B493860C8672C480088E8802C48C2 :106BA000008828812B48008868812B48C06F002806 :106BB0000CD0A88A294F401CA882294901203A6894 :106BC000FFF764F8002024493860C867254800882A :106BD000E882254800882883244800886883244860 :106BE0000088A88423480088E884234800882885F2 :106BF00022480088688522480088A885B08EFDF765 :106C0000E5FF21491F480860F8E500000C0A002054 :106C1000E0000020E40800203C110020C02709000B :106C200000380140F1000020C01C00208401002039 :106C30001420002024160020DA010020DB010020AF :106C4000981B002074010020141E00200802002060 :106C500010020020180200202C1C00207C010020C3 :106C6000141F00200C020020140200201C0200202F :106C7000280200202C0200203002002034020020D4 :106C800038020020AAAA00000030004010B52D21D3 :106C90004902FAF741FAC817800E4018821180099C :106CA0008001081A1B4B40245A2A04DA91005A58D2 :106CB000C918496808E0B42A0FDAB421891A890092 :106CC0005A58C9188039C96F231A534348431818B2 :106CD000C117890E0818801110BDFF210F318A429B :106CE00006DA0D49920051185A58C918496807E048 :106CF000FF216931891A89005A58C9188039C96F2A :106D0000231A534348431818C117890E08188011D5 :106D1000404210BD3C02002030FDFFFF11223344F1 :106D20005566778899AABBCCDDEEFF00000001CC48 :106D300001D8001401F0003C002801E401A0006C1F :106D4000007801B40050019C018800440111070142 :106D5000000100010401000000000000000000002C :106D600000000600AA55000000010000000000001D :106D70000100010000090000000000000000020006 :106D800000000009000000000000000000000000FA :106D900000000000000000000000000010101010B3 :106DA00010101010101010101010101010002000F3 :106DB00030004000500060000300000004000000AC :106DC00005000000060000000700000008000000A9 :106DD000090000000A0000000B0000000C00000089 :106DE0001100A55AAA550000000000000000000094 :106DF00000000000081C30445800000089111223D4 :106E00009B322446AD573665BF74488CC19D5AAF3E :106E1000D3BE6CCAE5DB7EE9F7F881100801933335 :106E20001A22A5562C47B7753E64C99C408DDBBF1E :106E300052AEEDDA64CBFFF976E802218B30100216 :106E400099132667AF763444BD554AADC3BC588EFE :106E5000D19F6EEBE7FA7CC8F5D983310A209112F5 :106E60001803A7772E66B5543C45CBBD42ACD99EDE :106E7000508FEFFB66EAFDD874C904428D5316614A :106E80009F702004A9153227BB364CCEC5DF5EEDBE :106E9000D7FC6888E1997AABF3BA85520C439771B5 :106EA0001E60A1142805B3373A26CDDE44CFDFFD9E :106EB00056ECE9986089FBBB72AA06638F72144096 :106EC0009D512225AB343006B9174EEFC7FE5CCC7E :106ED000D5DD6AA9E3B8788AF19B87730E62955075 :106EE0001C41A3352A24B1163807CFFF46EEDDDC5E :106EF00054CDEBB962A8F99A708B088481951AA7D2 :106F000093B62CC2A5D33EE1B7F04008C919522B65 :106F1000DB3A644EED5F766DFF7C899400859BB70C :106F200012A6ADD224C3BFF136E0C1184809D33B45 :106F30005A2AE55E6C4FF77D7E6C0AA583B41886ED :106F400091972EE3A7F23CC0B5D14229CB38500A25 :106F5000D91B666FEF7E744CFD5D8BB502A49996CC :106F60001087AFF326E2BDD034C1C3394A28D11A05 :106F7000580BE77F6E6EF55C7C4D0CC685D71EE521 :106F800097F42880A1913AA3B3B2444ACD5B5669E5 :106F9000DF78600CE91D722FFB3E8DD604C79FF58C :106FA00016E4A9902081BBB332A2C55A4C4BD779C5 :106FB0005E68E11C680DF33F7A2E0EE787F61CC46D :106FC00095D52AA1A3B03882B193466BCF7A5448A5 :106FD000DD59622DEB3C700EF91F8FF706E69DD44C :106FE00014C5ABB122A0B9923083C77B4E6AD55885 :106FF0005C49E33D6A2CF11E780F00C1814001C05D :10700000804101C0804100C1814001C0804100C178 :10701000814000C1814001C0804101C0804100C168 :10702000814000C1814001C0804100C1814001C058 :10703000804101C0804100C1814001C0804100C148 :10704000814000C1814001C0804100C1814001C038 :10705000804101C0804100C1814000C1814001C028 :10706000804101C0804100C1814001C0804100C118 :10707000814000C1814001C0804101C0804100C108 :10708000814000C1814001C0804100C1814001C0F8 :10709000804101C0804100C1814000C1814001C0E8 :1070A000804101C0804100C1814001C0804100C1D8 :1070B000814000C1814001C0804100C1814001C0C8 :1070C000804101C0804100C1814001C0804100C1B8 :1070D000814000C1814001C0804101C0804100C1A8 :1070E000814000C1814001C0804100C1814001C098 :1070F000804101C0804100C1814000C0C101C30383 :1071000002C2C60607C705C5C404CC0C0DCD0FCFFF :10711000CE0E0ACACB0BC90908C8D81819D91BDB6F :10712000DA1A1EDEDF1FDD1D1CDC14D4D515D717BF :1071300016D6D21213D311D1D010F03031F133F36F :10714000F23236F6F737F53534F43CFCFD3DFF3FBF :107150003EFEFA3A3BFB39F9F83828E8E929EB2BEF :107160002AEAEE2E2FEF2DEDEC2CE42425E527E77F :10717000E62622E2E323E12120E0A06061A163A3EF :10718000A26266A6A767A56564A46CACAD6DAF6F7F :107190006EAEAA6A6BAB69A9A86878B8B979BB7BEF :1071A0007ABABE7E7FBF7DBDBC7CB47475B577B73F :1071B000B67672B2B373B17170B05090915193536F :1071C000529296565797559594549C5C5D9D5F9F3F :1071D0009E5E5A9A9B5B99595898884849894B8B6F :1071E0008A4A4E8E8F4F8D4D4C8C448485458747FF :1071F00046868242438341818040081C30445808BF :107200001C3044580000000000000000010203048C :107210000607080900000000010203043C72000890 :10722000C00000202407000078130008A87500089B :10723000E40700205431000052600008D2000162CF :107240000109000810C2010040420F000131220074 :10725000052F0101010001D2014612976712FF01BB :10726000026500019310270D0004448000085600B9 :107270000538A560A5653E12118B12238F12349339 :1072800012469712579B12699F167A20128B5E1630 :107290009C8B16AE8F16BF2C16D03016E13412F22E :1072A000CC160341121404122404123504124604AD :1072B00012560412660412770412870412970412FD :1072C000A70412B60412C60412D50412E50412F47F :1072D0003C1006030200001204122104122F0412B3 :1072E0003E04124C04125A041268041275041283EC :1072F00004129004129D0412AA0412B70412C304CB :1073000012CF0412DB0412E70412F30412FE4C1332 :107310000903901104121F04122904123304123DB0 :1073200004124704125004125904126204126B042E :10733000127304127B04128304128A041292041240 :107340009904129F0412A60412AC0412B20412B7DC :107350000412BC0412C10412C60412CA0412CE04E0 :1073600012D20412D60412D90412DC0412DE041262 :10737000E10412E30412E40412E60452E70492E882 :1073800004611452E62852E33852DE4852D958526A :10739000D26852CA7852C18852B79852ACA8529F4C :1073A000B85292C85283D85273E85262F8565008C5 :1073B000563D185629282530253856FE4856E75898 :1073C00056CF6856B778569D885683985668A85603 :1073D0004CB8562FC825D025D856F4E856D5F85ABB :1073E000B6085A97185A77285A56385A35482950A5 :1073F00029585AF2685AD0785AAE885A8B985A69E6 :10740000A85A46B85A23C82D37041EEFD10312DDFF :107410000412CC0412BA0412A904129704128604AE :107420001275041264041252041241041230041240 :107430001F041E0E05041006FDFEFFFFEC0412DC07 :107440000412CB0412BA0412AA04129A0412890478 :10745000127904126904125904124A04123A0412ED :107460002B04121B04120C3C1006FDFDFFFFEE0462 :1074700012DF0412D10412C20412B40412A60412C0 :107480009804128B04127D041270041263041256C5 :1074900004124904123D0412310412250412190485 :1074A000120D0412024C13F7FC90110412E10412A5 :1074B000D70412CD0412C30412B90412B00412A7E7 :1074C00004129E04129504128D04128504127D0488 :1074D000127604126E04126704126104125A041226 :1074E0005404124E04124904124404123F04123A86 :1074F00004123604123204122E04122A0412270433 :10750000122404122204121F04121D04121C04125D :107510001A045219049218046114521A28521D3880 :10752000522248522758522E68523678523F88527B :1075300049985254A85261B8526EC8527DD8528DA3 :10754000E8529EF856B00856C31856D7282530255D :107550003856024856195856316856497856638845 :10756000567D985698A856B4B856D1C825D025D877 :10757000560CE8562BF85A4A085A69185A89285A5C :10758000AA385ACB48295029585A0E685A30785A86 :1075900052885A75985A97A85ABAB829C029C83C2F :0875A00004001BB79B0600006C :101200001A43491EF9D510467047F0B51FB406467B :10121000002082B005464024019100901BE0019916 :1012200022460F463046FFF7B1FF049A059B801A0D :10123000994110D310461946224600F029F8361A73 :101240008F410197224601200021009F00F020F8E5 :1012500038184D4100902046641E0028DFDC019BB9 :1012600000982946324607B0F0BD0000064C012523 :10127000064E05E0E36807CC2B430C3C984710343E :10128000B442F7D3FFF71CFFF87A0008187B000878 :1012900010B5202A04DB0146203A9140002010BD01 :1012A000914020239C1A0346E3401943904010BD0F :1012B00030B58C180278401C13071B0F01D103783E :1012C000401C120906D10278401C03E005780D701D :1012D000401C491C5B1EF9D101E00B70491C521ED9 :1012E000FBD1A142E6D3002030BD0000F0B52C4870 :1012F00081684907C90F50D1006C2A4D82B26B69D1 :101300000120DC07284E2949002C0AD08A82284B6C :10131000284930469A4201D2012200E000220A60A8 :1013200031E0254F9E433C880CD0244E9E430DD087 :10133000234C9C431DD0234C9C431DD0224C9C43EA :101340001DD020E0A01838801C481CE07888801848 :1013500082B27A802869401C2861082807DBE008EF :101360004883D0088883002038807880286114481A :1013700009E0CA83154806E00A84154803E04A8458 :10138000144A528B8A8442030549520B8A628A6846 :10139000114B1A40121D8A6068610020F0BD0000E8 :1013A00000240140C00000208000001C0017002025 :1013B000DC05000060010020480200200001002040 :1013C000000200240000014000000244000001C0AF :1013D000000002C4A0F7FF1FE8FFFF7FF0B51E4F1B :1013E00085B03D691D4C6D1C3D612668A468029462 :1013F00000966C4665800190218162810393386A72 :1014000001011748091800220B4610461C5CFF2CEE :1014100004D1401C1028F9D3002A17D010226846A6 :1014200000F00CF9386AF861401C386200010121B3 :1014300049031030884201D900203862F868094910 :10144000401CF8604867002005B0F0BD10226846D7 :1014500004F02CFFE6E700003C01002020710008AA :1014600000D0000880160020002911D08268521890 :1014700082604368934200DCD21A00238361C36810 :10148000934201D1012343618260026952180261D3 :1014900008467047F0B50020174D0127144B154C36 :1014A0007F03E86017E0625A144EB24212D1EA6834 :1014B0000919521CEA604A882E69B24205D92A618C :1014C000E8614A686A61421C2A624988994201D2ED :1014D0000B46A861401C0101B942E4D3286A00010F :1014E0001030B84201D900202862E868F0BD000041 :1014F000FFC99A3B00D000083C010020AA5500001B :1015000010B50421054800F0C9F8054800218161A3 :10151000C1610161C1600162084610BD00D00008D0 :101520003C01002070B5234DE86A401CE862224C63 :1015300020688006C00F11D02868296B40182860E9 :10154000296B28465830064600F058F82020606085 :10155000B06900280AD000202863687220688005DE :10156000C00F02D001204002606070BD304600F024 :101570000BF912494A78A3585B085B00A350F36843 :1015800032684E78D2180C4B0C33F2500A4B4A7822 :101590001B1DD658360C36040643D650497862587F :1015A00001231A4362502863054881688022114351 :1015B0008160D3E768030020000002403B7500080B :1015C000003801400B49C86A401CC8620A480268DA :1015D0009204D20F05D001225203426000220A6316 :1015E0004A7201688903C90F02D001214904416090 :1015F00070470000FC0300200000024010B50029E5 :1016000010D0C26843685218934200DCD21A0023FB :101610004361C2608468944204D101228261836084 :10162000C360C361084610BDFF2109220131D20603 :10163000002801D09162704791617047F8B5164655 :101640000F46054602F062F8701EC00A401C81B2C7 :10165000384602F033F80024761C76080EE060006D :1016600042195278295C120289188AB2C1190023E2 :10167000022001F0EFFF002802D0641CA642EED841 :10168000054A1169802319431161002801D0002007 :10169000F8BD0120F8BD00000020024070B50C46E6 :1016A000054602F033F8A1B2284602F007F80348D5 :1016B0000169802211430161002070BD00200240B9 :1016C0000A07120F01219140014201D00120704709 :1016D000002070470A07120F01219140014201D0FA :1016E0000120704700207047F8B50B051B0E254CF4 :1016F0005B001C1909239B01E31800930523DB0100 :10170000E618012307469B020A07E5180020120F7E :101710003B0004F009FE09060A0E12191D21282FAC :101720002E00FF2928D800981BE0FF2924D8009814 :1017300008E0FF2920D8B08A18E080291CD20F20A9 :1017400080012018808E11E0802915D2A88A0DE032 :10175000402911D2B08E09E040290DD20B20800122 :101760000EE0808A02E0802906D2A88E1146FFF79B :10177000B1FFF8BD802901D30020F8BD0920C001C8 :101780002018EEE700110020C1688268914201DA5A :10179000501A7047914202DC4269002A02D0406828 :1017A000401A704780690028FBD000207047C2684B :1017B0008168914201DA501A7047914202DC8269D5 :1017C000002A02D04068401A704740690028FBD0C8 :1017D0000020704707490122896952030818010156 :1017E000914202D3FF38FF38023803490001401804 :1017F000704700003C01002000D0000800B5082020 :1018000000F0D2FC00BD0000F0B5334C4B001C19B9 :101810000923DB01E5180B230246DB010020E31856 :10182000892A25D00EDC2C4F2C4B4E00F619F618C9 :10183000803A130004F078FD091F1F152125292E79 :10184000333A15008D2A3FD00CDC8A2A33D08B2AFC :1018500035D08C2A05D140293ADA0B208001201896 :10186000808EF0BD992A03D0A12A01D0FE2AF8D19A :1018700080292DDA2EE00846F0BD102928DAB08A3A :10188000F0BD102924DAB08EF0BD102920DA052031 :10189000C00108E008291BDA0F208001DFE70829D2 :1018A00016DA012080022018808AF0BD80290FDA24 :1018B0003420285EF0BD80290ADAA88AF0BD4029CC :1018C00006DA0D208001CAE7402901DAA88EF0BDB2 :1018D0000020F0BD988EF0BD0011002040020000F5 :1018E00010B5074A106A074B9969146AA04201D0E3 :1018F000106A9969044A51430914401A10BD000046 :101900006C01002000E000E05505000031B500F05A :101910000BF8009C0546601C00D0641C00F004F825 :10192000401BA042FAD338BD014800687047000050 :101930004402002002480168491C01607047000011 :101940004402002010B506480168102211430160CE :10195000002000F007F800F017F8002010BD00008C :101960000020024010B5044600F040F97D21C90076 :10197000FFF7BCFB00F07AFB00222146501E00F06E :1019800025F8002010BD000008B50F48816901222C :1019900011438161816911400091C26901040A43C8 :1019A000C261C0690022084000901146501F00F03B :1019B0000DF800221146901E00F008F80022114692 :1019C000501E00F003F808BD0010024010B502F0F0 :1019D00049FD10BDF8B504460068364DC00354D526 :1019E000E8690026C00007D4E86929040843E861D3 :1019F000E8690840012600902F480168C90511D404 :101A0000014608688A1510430860FFF78DFF0746F6 :101A100004E0FFF789FFC01B642823D8264800682C :101A2000C005F6D5286A0321090208401FD0626864 :101A30000A4082421BD0286A2A6A8843012109048D :101A40000A432A622A6A8A432A622862C0070ED0A1 :101A5000FFF76AFF074607E0FFF766FFC11B17485D :101A6000814201D90320F8BD286A8007F4D5286A8D :101A7000032109028843616808432862002E04D0CC :101A8000E869012109078843E8612078C00705D08B :101A9000286BA168800880000843286320788006AE :101AA00005D5286B10218843E1680843286300208E :101AB000F8BD0000001002400070004088130000D4 :101AC000F8B5044644480E460068C007C00FB0424F :101AD0000AD2414801684908490031430160006861 :101AE000C007C00FB0425CD120783C4F800705D5BD :101AF0007868F0218843A168084378602078C0079F :101B00003FD06068012813D03968022813D08907B4 :101B1000002946DA79688908890001437960FFF76E :101B200003FF0546606801280DD0022817D024E085 :101B300039688903ECE78901EAE7FFF7F5FE411B05 :101B40002748814217D878680007800F0128F4D110 :101B500017E0FFF7E9FE411B214881420BD8786866 :101B60000007800F0228F4D10BE0FFF7DDFE411BD8 :101B70001B48814201D90320F8BD78680007800F17 :101B8000F3D115480168C907C90FB1420BD90168E3 :101B900049084900314301600068C007C00FB042E6 :101BA00001D00120F8BD2078400706D578680721CC :101BB00009028843E1680843786000F01DF87968FD :101BC000084A0906090F515CC8400749086000200F :101BD000FFF7C8FE0020F8BD0020024000100240C0 :101BE00088130000E07A00084002002001480068E5 :101BF000704700004002002030B514A00FC889B023 :101C00006C460FC415A00FC80FC4184D6A680C208D :101C100011460140164B042910D0164808290ED150 :101C20009102090F6C46645CE96A04AD0907090F6B :101C3000D203695C920F022A03D003E0184609B070 :101C400030BD1846FFF752FA6043F8E70203040577 :101C5000060708090A0B0C0D0E0F101001020304F1 :101C600005060708090A0B0C0D0E0F1000100240A4 :101C7000001BB70000127A00FEB504460078D54D6F :101C8000C00748D068680007800F012819D068682D :101C90000007800F022804D16868C003800F022863 :101CA0000FD0012160680904012811D08A000028A2 :101CB00001D0052816D028688843286028689043FA :101CC00008E02868800326D56068002873D022E0E9 :101CD0002868084328606068002810D0FFF724FEB9 :101CE000064608E0286810432860F1E7FFF71CFE6D :101CF000801B642870D828688003F7D50BE0FFF7B5 :101D000013FE064604E0FFF70FFE801B6428F1D89F :101D100028688003F7D420780126800700283DDA60 :101D200068680007800F13D068680007800F0228DA :101D300004D16868C003800F012809D0E06800283A :101D400028681CD030432860FFF7EEFD07460BE003 :101D5000286880070BD5E06801282CD107E0FFF741 :101D6000E3FDC01B0228C5D828688007F7D528687E :101D7000F82188432169C900084328600EE0400823 :101D800040002860FFF7D0FD074604E0FFF7CCFDD8 :101D9000C01B0228AED828688007F7D42078000737 :101DA00023D5E0690028686A0FD030436862FFF7E6 :101DB000BBFD074605E00AE1FFF7B6FDC01B0228A0 :101DC00098D8686A8007F7D50FE04008400068623D :101DD000FFF7AAFD074605E0A4E0FFF7A5FDC01B3D :101DE000022887D8686A8007F7D42078042740073C :101DF000002860DA00200190E869C00008D4E86992 :101E0000B9060843E861E8690840009001200190A4 :101E100071480168C90511D4016882151143016038 :101E2000FFF782FD009005E0FFF77EFD0099401A64 :101E3000642877D868480068C005F5D5A0680128EF :101E40000AD0002801D0052810D0286A4008400098 :101E50002862286AB84301E0286A30432862A068F3 :101E6000002812D0FFF760FD00900AE0286A38438E :101E70002862F1E7FFF758FD0099411A574881425F :101E800050D8286A8007F5D50DE0FFF74DFD00908A :101E900006E0FFF749FD0099411A5048814241D8B8 :101EA000286A8007F5D40198002804D0E869012148 :101EB00009078843E8612078C0063CD5606901289D :101EC0000CD0401D686B23D038436863686B4008B2 :101ED00040006863FFF728FD064629E0686B384339 :101EE0006863686B30436863FFF71EFD064604E0D5 :101EF000FFF71AFD801B022862D8686B8007F7D5B0 :101F0000686BF8218843A169C9000843686312E03F :101F1000B8436863696BF8208143A069C00001433E :101F2000696308E04CE0FFF7FFFC801B022847D8FC :101F3000686B8007F7D4206A002846D069680907D3 :101F4000890F022943D001273F060228286805D0BF :101F5000B8432860FFF7E8FC044633E0B843286044 :101F6000FFF7E2FC064604E0FFF7DEFC801B0228D8 :101F700026D828688001F7D4E86AE16A00090001E0 :101F80000843E862616AA06A084369687B22D20359 :101F9000914308436860286838432860FFF7C4FC11 :101FA000044604E0FFF7C0FC001B022808D828689C :101FB0008001F7D509E0FFF7B7FC001B022801D923 :101FC0000320FEBD28688001F5D40020FEBD01205D :101FD000FEBD0000001002400070004088130000A9 :101FE000042204490428086902D09043086170471C :101FF0001043FBE700E000E0154801686431016030 :1020000014480168491C016013490868401C0860B5 :102010001249134AC868401CC860904216DB002071 :10202000C8601048816D491C8165016D491C0165BE :10203000416D491C41650C49088B002806D0401EA3 :1020400080B20883782801D978200883704700007F :102050008C0100208801002024010020AC01002018 :102060001027000080160020B4180020094910B580 :10207000401E884201D9012010BD074C6061032138 :10208000081F02F0EFF90020A06107202061002066 :1020900010BD0000FFFFFF0000E000E010B5FFF7FB :1020A000ABFF10BDFEE7000010B500210F4A084647 :1020B000516043009B18401C1981FF28F9DD002066 :1020C00005230B4ADB014400A418E418401CA1823C :1020D0001028F8DB00200923DB014400A418E418D1 :1020E000401CA186FF28F8DD002010BD780E0020DE :1020F0000011002010B5402802DB0020C04310BDB5 :1021000010221143C200094B4000D218C0185824B5 :102110000D23A1529B010021C3189986E300C0182A :102120008186034800685065084610BD00110020F4 :102130004402002070B504461E463830049D04F069 :10214000CFFB20462A463146583004F0C9FB002018 :1021500070BD000070B5104D064601462846FEF7DA :10216000DBFF0E4CE062FFF741FD2946FEF7BEFFA4 :1021700060620B48314600680546FEF7B7FFA06273 :102180002A46002307480F21FEF7DAFF2080E06A85 :1021900064302062002070BD40420F006C010020BE :1021A0004002002000004042F8B572B6012212033E :1021B0000921C9068A6200BF00BF00BF00BF8A6153 :1021C000C117490F0818C01084460020104E03465E :1021D000009017E008200E4C002280218502103C60 :1021E00037687F0400D50A43A562490800BF00BFD5 :1021F00000BF00BF00BFA561401EF1D1D0436946BA :10220000C8545B1C6345E5DB62B60098F8BD00006E :10221000100400480B01194930B55B18FF33097FE2 :1022200011331970022159701449002020310C7F9C :102230009C704C7FDC708C7F1C71CC7F5C710C4679 :10224000203425789D716578DD710B7F15795B19D8 :102250000B774B7F55795B194B778B7F95795B19A2 :102260008B77CB7F157A5B19CB772178937AC91856 :1022700021706178D27A8918617030BD100A00200F :10228000034610B50020024602E09C5C6040521CF0 :102290008A42FADB10BD000000B50B0004F044F8E0 :1022A00008111111111111110511074907480A8C64 :1022B0008286828A0A80C28A4A80028B8A80408B08 :1022C000C880002000BD0000280C00204013002022 :1022D000F8B508460D460978552901D0252903D0BF :1022E000012A01DD451C521E344F602479792B7878 :1022F0006143334C0919334C252B30D0A3685B1C48 :10230000A360CB695B1CCB61B97800290FD0F97849 :1023100000290FD001292C4913D007231B02C9180B :102320000A7501462948FEF742FF0020F870002098 :10233000C043F8BD2549264B55390A750146224848 :1023400007E037235B01C9180A750146204B1E4878 :102350002033C018FEF72BFFF878401CE6E76E79B3 :10236000802E06DDE068401CE060086A401C0862C0 :10237000DDE7334608339A4208D2086A401C0862F7 :10238000E068401CE0600220C043F8BDB11DFFF7CB :1023900077FFA919897981420DD02069401C2061FD :1023A00079796020414306480818416A491C416216 :1023B0000320C043F8BD0020F8BD0000EC00002061 :1023C000900600207C040020001100201518002039 :1023D000D506000010B50020124C03462071D2B281 :1023E000002905D021706370A370A272E37005E02C :1023F000237001216170A370A272E2700A4C002266 :102400006021514309194B608B600B614B618B61FB :10241000CB610B628B624B62CB62521C0B63092A4D :10242000EEDB10BD100A0020900600200C20414376 :1024300007480818002150300180418008220271AD :102440004271817101728172C17208467047000049 :10245000100A0020F8B50E4604462520069F079D69 :10246000089920706270A670E37027712F460020D3 :1024700008376619372B30D01FDC332B1CD006DC15 :10248000002B19D0312B28D0322B15D125E0342B3D :1024900012D0352B10D0362B0ED16571002D03D004 :1024A0002A46A01DFEF783FEA91D2046FFF7E8FE81 :1024B000B0710D20F0713846F8BD612B0DD006DCEF :1024C000382B0AD0412B08D0422BF5D105E0622BE6 :1024D00003D0632B01D0642BEED16571E0E70000DF :1024E000F1B584B0FFF720FA0546FFF7F9F9664E1B :1024F00004463079002802D0012802D004E00120EF :102500003071049800F098F93079022801D1032045 :1025100030715E48C179002906D0017A002903D0C4 :10252000C168611A322905D8C1687D22611AD200BA :10253000914266D95548007A5549002864D05348DD :102540006023407901225843524B1A50642048645A :102550004E4E7079401CC0B27071F17A884208D931 :10256000706A7462201AB062B079401CB0710120A8 :1025700070714948727981184348CB7F8038037065 :1025800020310B7843704B7883708978C170057166 :10259000290A4171290C8171290EC1716B46F460C1 :1025A0001978B37989089B0789009B0F19436B46FB :1025B00019706023374C5343E358002B61D0EF234D :1025C00019406B4619700823019300910290412332 :1025D00000213248FFF73EFF02463049049803F0DD :1025E00057F870796021484300194168491C4160DF :1025F000C268F1688A1A4263C16000203563F071D5 :102600003072002005B0F0BD204B186A401C1862E3 :1026100023484268521C42605E7960203746464338 :102620001C4830180269521C02614269521C426106 :10263000DB79002B02D1836A5B1C836283699A4237 :1026400000D98261134B032A82D900209851C822F5 :102650008A6411490E46C855183E307D002800D1C5 :1026600076E7002337691A4605210498B847307D7C :102670000028F5D0002336691A4607210498B04790 :1026800066E7102319439CE7100A0020EC000020A5 :102690008016002090060020280C002090050020C5 :1026A0007C040020F8B5844608780C46552801D0F3 :1026B000252802D0012A00DD4C1C60793B4D00909A :1026C0006979602041433A482B4609188868401CC4 :1026D0008860DF6ADE68E078A278BE1B9B693528D7 :1026E00021D002DC32281ED10AE038281BD002DCBF :1026F000362818D115E0412815D0422813D114E00E :102700006E619E4200DDAE612A48A37983540020A9 :10271000CE624861086BB04200D20E63012028727D :1027200001E00120E8710020F8BD6E619E4200DDED :10273000AE61204BA17998180646203EF177E179E9 :102740009954217A4170617A8170A17AC170E17ADD :102750000171217B4171617B817118461838017DBF :10276000002905D0002306691A4607216046B047B4 :102770006A79602042430E48002116187161686929 :10278000F062316B814200D2306300980E28C5DBC5 :102790002046E77B1030FEF72EFDE17C0002000AA8 :1027A00009060843B90071188863B7E7EC000020F8 :1027B00090060020280C0020F7B515460C46FFF7C0 :1027C0008FF81A4EF06221780020552903D1012D8F :1027D00001DD641C6D1E317800290FD00127F771CF :1027E0002A4621460098FFF773FD002805D137726D :1027F0002A4621460098FFF755FFFEBD7178002953 :10280000FBD00B4E2A46B06B2146401CB0630098AB :1028100000F060F80028F0D106482A46406C306588 :102820002146009800F0CEF8FEBD0000EC0000202C :10283000900600208016002070B506460025FFF7A0 :1028400073F8FFF74DF81D4C0122A179002901D141 :10285000A271A062E17900292DD1A16A7D23411ADC :10286000DB00994227D90021A171216A032902DAEC :10287000A271A0621FE003291DDD3046E169FFF768 :10288000D5FDE1690C204843021930465032FFF76C :10289000C1FCE069401CE061A17A88420BDD0220A6 :1028A00020710748017D002905D0002304691A46DC :1028B00005213046A047284670BD0000100A0020C0 :1028C000100C0020024801610121017500207047B1 :1028D000100C0020F0B508460D460978552901D0A6 :1028E000252903D0012A01DD451C521E2978002329 :1028F0001A4FDB431A4C252906D0A068401CA06063 :10290000386C401C386409E014496E79896C491CA4 :10291000802E05DDE068401CE060B9641846F0BD1B :10292000334608339A4206D2B964E068401CE0603E :102930000220C043F0BDB11DFFF7A2FCA91989799F :10294000814208D02069401C2061F86C401CF8646A :102950000320C043F0BD0020F0BD00009006002021 :102960007C040020F8B5FEF7BBFF134B1A691979F8 :1029700000291FD05C7A1149002C05D07D208001F0 :1029800048640020587215E00C4E0D4C851A8036B4 :10299000A54204D97D2292018A64012206E012191F :1029A000904207D97D2292018A6402228A67C86711 :1029B000186930600020F8BDEC000020801600206F :1029C000E02E0000F7B5087884B00C46552802D1F7 :1029D000012A00DD4C1C6D480168491C01606379C7 :1029E00060786B4903916B49694F0D798037A84234 :1029F00008D0FF2806D0786C401C78640020C043C3 :102A000007B0F0BDA84201D0FF287DD16148C26A5D :102A1000026101214172E0785F49372874D00CDCF3 :102A20003328FBD004DC0028F8D03128EDD119E0A0 :102A30003428F3D0352867D125E0584BDD1DFF350C :102A4000FA352A7D2E6961285ED004DC38285BD0F7 :102A5000412859D120E0622856D0632854D06428F8 :102A600052D17EE0A07908704B4820380078A071E0 :102A7000484802612179A01D019300913223029000 :102A80000022294661E0002021793623009101903F :102A900002460290012158E0A0790870E079487060 :102AA000207A8870607AC870E17AA07A09024018AA :102AB0009863002A0DD000231A4606210498B047D7 :102AC000287D002805D000232D691A460721049887 :102AD000A84731482F4920388A7A0378A371437870 :102AE000E37183782372C37863720379A3724379A5 :102AF000E37283792373C07960739000E273C01925 :102B0000038F2374038F00E03DE01B0A6374836B23 :102B1000521C1B0CA374806B000EE074D0B2887240 :102B20000A2801D30020887220796A461070C006F6 :102B300003D57D201A4A800190642079A31D0E22BE :102B40006D460DC54223097900220398FFF782FCE8 :102B50000246F86B401CF8630399049802F098FD54 :102B600011E0E179A07909024018217A647A090418 :102B70002406091940189863002A04D000231A4635 :102B800006210498B04700203AE700007C040020AA :102B900010060020EC000020480C0020100A002045 :102BA00080160020034610B50020024602E09C5C1F :102BB0006040521C8A42FADB10BD30B50D46084613 :102BC00009781446252901D0012030BD062C01D2F8 :102BD000032030BD611EFFF7E5FF29192039C97FA9 :102BE000814201D0042030BD002030BD70B51E46AA :102BF00004460B465520049D059920706370A27011 :102C0000E6702571EE2E10D02A46601DFEF7CFFA31 :102C1000691D2046FFF7C6FF61194871A81D052EE2 :102C200002DA002E00D1002070BD05212046FFF7FA :102C3000B9FF60710620F2E7FEB516460F4605465D :102C4000FFF7BBFF040014D0E0B2694608720090A1 :102C500002A90B4801910278401E0178EE23094831 :102C6000FFF7C4FF02460749284602F011FD20463F :102C7000FEBD32463946284600F006F8FEBD00008B :102C800029010020F80C0020F7B588B04A78F848F0 :102C9000039242688260421C15788E782D093607AF :102CA0002D01360F0B7935431570F24A02920078E8 :102CB000039A84460C46624501D0FF2A2FD1214653 :102CC000E7780931EC4A002605914F2F74D02EDCAD :102CD000EA480121192F70D016DC072F26D008DC16 :102CE000002F1CD0012F55D0032F58D0052F47D1CE :102CF00083E0112F71D0162F70D0E149172F08688B :102D00006DD0182F3CD15CE2312F76D008DC212F1A :102D100067D0222F70D0232FE3D0242F30D14AE365 :102D2000322F03D0332F68D0342F29D1DAE004209A :102D3000642F7DD012DC562F7BD008DC502F79D049 :102D4000532F78D0542F77D0552F19D1B6E2572F63 :102D500073D0582F72D0632F12D1C9E2692F2DD0B2 :102D600008DC652F6BD0662F2DD0672F31D0682FF0 :102D700006D1D6E26B2F24D0732F70D0742F6FD072 :102D800002206946087404A90191EE232A460090A6 :102D9000614608E0641D00930194012349E2B949AA :102DA0001820A6E203990298FFF720FF0246029935 :102DB000089802F06DFCFEE237E220E2B2490C20F6 :102DC00097E2B24995E2B1491039502091E23B4671 :102DD0002FE2E1790020A74A08E0C5E1D3E1E9E16B :102DE0000BE0EFE023185B7A1354401C8842F9DBB8 :102DF000A04803F0DDF9C2E254E1A2796179120240 :102E00008918E27989B2882B2BD0892B2DD08A2B77 :102E10002FD0832B32D0842B35D0852B38D0862BE6 :102E20003BD0872B3ED08B2B41D08C2B44D007E05E :102E300062E24CE2F7E101E217E2FCE150E268E213 :102E4000FE2B12D0A92B3CD0B32B3ED0992B3FD0D8 :102E5000A12B42D08748103840180092A5E179E2B2 :102E600090E2490009188A483AE04900091889485F :102E700036E0490009188648203831E04900091831 :102E8000952080002CE0490009189D20800027E053 :102E900049000918A520800022E049000918FD20FA :102EA00080001DE0490009187948A03818E0490061 :102EB0000918DD20800013E049000918BD208000BA :102EC0000EE04900091874480AE04900734807E019 :102ED000734849000818001DBFE749000120C006DB :102EE0000818BAE7A279617912028918E27989B2E1 :102EF000882B23D0892B25D08A2B27D0832B2AD02F :102F0000842B2DD0852B30D0862B33D0872B36D0F9 :102F10008B2B39D08C2B3CD0FE2B40D0A92B42D010 :102F2000B32B44D0992B45D0A12B46D05148103813 :102F3000401800220599FEF73AF920E249000918E5 :102F400053483DE049000918524839E04900091842 :102F50004F48203834E049000918952080002FE0C0 :102F6000490009189D2080002AE049000918A52081 :102F7000800025E049000918FD20800020E049007C :102F800009184348A0381BE049000918DD208000DB :102F900003E049000918BD2080000818C9E749006E :102FA00009183C48F9E7490009183B48F5E749008A :102FB0003A48F2E749003A4802E049000120C006D9 :102FC0000818B7E76279A479240212190924A40128 :102FD00092B2002B14D0012B19D0022B23D0032B3B :102FE00027D0042B2DD0052B31D0062B2FD0082B2A :102FF00036D06846067404A821230091019018E198 :1030000013095B001818001930E0012025E01309AE :103010005B001818001912E013071B0F0A469A40AC :103020001040F2D119E013095B0018180523DB01E9 :103030001BE013095B0018180F239B01C018808E3A :10304000EAE713095B00181801239B020DE0D20088 :1030500010184030007E4006C00F6A461074CAE760 :1030600013095B0018180923DB01C018808AD3E715 :1030700028010020F80C0020B418002000110020C6 :10308000780E002088700008ACF7FF1F107C000845 :10309000B4040000B4050000B4060000900600204F :1030A00080100020A2796179120289188DB2002B5C :1030B00017D0012B1ED0022B25D0032B2CD0042B94 :1030C00033D04021052B38D0062B36D0072B3FD0EC :1030D0006846067404A80190B84800960278222336 :1030E00060E62B095B0029071B18090F9520E27980 :1030F000800035E02B095B0029071B18090F9D2074 :10310000E27980002CE02B095B0029071B18090FCE :10311000A520E279800023E02B095B0029071B181A :10312000090FFD20E27980001AE029072B09090F19 :103130005B001B18E279A24812E0EA001018403048 :10314000028B8A43E179C907490E0A430283C1E72A :103150002B095B001B1829079948E279090F803079 :10316000181802F0B9FAB5E7002B02D0012B03D0F2 :1031700005E102F0A7FC02E102F06CFCFFE08F48E1 :10318000E37802780EE6A179607909024018E179C6 :103190008C4C80B2002B0AD08B4E012B02D0928A2D :1031A000002A04D040008019009101900FE64000F1 :1031B0000019F9E7002800D00E6000961723019649 :1031C00037E0002800D00E60A1796079090240182C :1031D00085B2E27900207D4903E027187F7A0F54F9 :1031E000401C9042F9DB7949284603F009F809347C :1031F000724800960196049402781823D2E5A379C8 :1032000060791B02C018D082908A002809D096826B :103210006F4802F0FDF9694800960196027819237B :10322000C0E59182F4E7138300E0168300960196CF :10323000E3782A46B6E5664920205AE0A17960790C :1032400009024018634980B20A18E179121D7828F2 :1032500001D3002105E00B18782B02D97821081A38 :1032600081B2C8B201920090B1E5A17960790902FA :103270004018584980B20B18E2791B1D782801D3F9 :10328000002205E01118782902D97821081A82B2A3 :1032900018460599FDF78BFF009601964748E3789D :1032A000027803990298FFF7A1FC02460299089858 :1032B00002F0EEF9474802F0C3FF7CE0454802F017 :1032C000BFFF3E4800960196027855236AE54048C4 :1032D00002F09EF93948009601960278562361E57E :1032E000032109023C48FDF77BFF009601966EE53D :1032F0003A49019100906AE5A17960790902401884 :10330000E17980B20D01FEF765FAE9B20091019012 :1033100035E7FEF7F5F8294800960196027865230F :1033200040E5009665232A46019603990298FFF727 :103330005DFC02460299089802F0AAF9012080F388 :103340001088BFF34F8F27492548C860BFF34F8FC0 :1033500000BFFDE7A17960790902401880B2E279E7 :10336000059902F033FF002809D0C0B2009004A9EB :10337000124801910278EE23401E017813E5009671 :103380000196FCE6A17960790902401880B20690A6 :10339000E47900963B462A46019603990298FFF786 :1033A00025FC02460299089802F072F92246059916 :1033B000069802F01BFF00200BB0F0BD2901002091 :1033C000140400000080000800A00008F80C002091 :1033D000B41800208010002090060020F416002071 :1033E0000400FA0500ED00E070B5FEF753F816484A :1033F00000F0EAFA154D164C6869A065124881681C :1034000061658188491C81808088E0640E4802F0F3 :10341000FFF82868206768686067A868A0670122CD :103420000C4B1146A06DFDF7D9FF20468030E968AE :103430000160A9694160E96981602969C160296AFF :103440000161002070BD0000B41800203C01002084 :10345000801600203930000030B583680122134007 :1034600002D00022104630BD8C684B68C9682343E7 :10347000C468034D2C4021430B43C360F2E70000B6 :10348000C73FFFFF30B583680122134002D00022FE :10349000104630BD18C94D6823430C6889682C4319 :1034A00023430B43C168024C21400B43C360EFE749 :1034B0003CC2FEFF08B504494A6902434A614969B2 :1034C0000140009108BD00000010024008B5044909 :1034D000CA690243CA61C9690140009108BD000080 :1034E0000010024008B504498A6902438A6189696B :1034F0000140009108BD00000010024070B5094E67 :1035000004467618203E049D0C34F17F0830102DBF :1035100003D00A50F07F035170BD0A51F17F0B5068 :1035200070BD000030710008044A51182039C97F6D :103530004258520852004250704700003071000853 :10354000044A51182039C97F425801231A43425076 :103550007047000030710008044A51182039C97FB3 :10356000425802231A43425070470000307100084D :10357000054B10B559182039C97F4358032424033B :10358000A3431343435010BD36750008054B59182B :103590002039C97F001D0B581B0C1B0413430B5013 :1035A0007047000030710008054B10B559182039DC :1035B000C97F4358034C23401343435010BD0000C0 :1035C00036750008EFBFFFFF054B10B559182039BD :1035D000C97F43588024A3431343435010BD0000C8 :1035E00036750008054B10B559182039C97F435866 :1035F0000324A402A3431343435010BD36750008AF :10360000054B10B559182039C97F43582024A343CE :103610001343435010BD000036750008054B10B52C :1036200059182039C97F43584024A34313434350BA :1036300010BD000036750008054B10B5591820392B :10364000C97F435803242402A3431343435010BDAE :1036500036750008F0B51FB40024022804D00128F4 :1036600004D00425144F12E00125FBE70225F9E7F9 :10367000019861000E18220103990298FDF786FD5A :1036800039690122114339613080641CE4B2AC42D3 :10369000EED3F868C007C00FFBD1F8688006C00FF2 :1036A00008D0F86820210843F860386940084000D5 :1036B0003861012005B0F0BD00200240C90210B5FC :1036C0000B1811491AE00C69022214430C6148617D :1036D0000A69402422430A61CA68D207D20FFBD18B :1036E000CA689206D20F0DD0CA6820242243CA604D :1036F0000C69022294430C61920280189842E2D332 :10370000012010BD002010BD002002400748C16804 :10371000C907C90FFBD101698022114203D00449B6 :1037200041600449416001207047000000200240D0 :1037300023016745AB89EFCDF0B500233CE00124C0 :103740009C40224037D04F680668144654436500B9 :103750006519AE4367433E4306604E68012E01D0B3 :10376000022E05D18F6886686743AE433E4386606C :103770000F69C668AE4325467D432E43C6604D683B :10378000022D18D14D69FF2A09D8066A54435443C3 :103790002201121B96436C43264306620BE0140A77 :1037A00022466243624362431401A61A446A6A4392 :1037B000B443144344625B1C0A681446DC40BED127 :1037C0004A68012A01D0022A06D10A68C9684368FA :1037D00093434A43134343600120F0BD10B50446B0 :1037E00001F04AFD206001F02DFD606001F038FD20 :1037F000A06010BD014610B5002000290FD1104A6D :10380000116B8907890F01290AD0022911D00329D8 :1038100009D001F031FD01F015FD01F021FD10BDD1 :1038200001F02AFD10BD11688907C90FFAD00548BB :1038300010BD116A8907C90FFAD00120C00310BD5D :103840000010024000127A00F0B50268194B1A4CC1 :10385000984201D0A04203D17025AA434D682A4363 :10386000164D174E174F98420AD0A04208D0164C5A :10387000A04205D0A84203D0B04201D0B84204D142 :1038800003242402A243CC68224302608A68C262F5 :103890000A888262984205D0A84203D0B04201D083 :1038A000B84201D1097C01634169012211434161A0 :1038B0001046F0BD002C01400004004000400140D3 :1038C00000440140004801400020004041680122BE :1038D000D202914341608168082291438160704720 :1038E000FEB5044600680D460026C007C00F4FD144 :1038F000E9686868AA69084329691143084321688F :10390000244A114008432060A8686168032212031A :103910009143014361606869A168121191430143B9 :10392000A1601D48844203D10020FFF763FF12E02D :103930001A4884420BD01A48844208D0194884425D :1039400005D01948844202D01848844220D16846E4 :10395000FFF744FF029800281AD02968002917D0E1 :103960000126AA69F3039A420CD140004A08801844 :10397000FDF7BCFB0E4980B201400007420F0A432D :10398000E26005E04A081018FDF7B0FB80B2E06085 :103990003046FEBDF369FFEF0038014000440040AF :1039A00000480040004C004000500040001401401E :1039B000F0FF000010B580220249FDF7F8FB00205F :1039C00010BD0000A0700008F0B5154A00211514C4 :1039D000144C154F0CE0D65ABE4208D19B185B8898 :1039E0006668B34203D90AC44B1C2360083C491CD7 :1039F0004B01AB42EFD321680123002905DB4901CC :103A00008918202201F0D2FC00E08380A0684001E8 :103A10002030A84201D90020A0600020F0BD0000A5 :103A200000C800083C010020AA5500001FB50B4645 :103A3000024604A1684602F063FC0146684601F0B4 :103A4000DFFB1FBD201B5B25643B25644800000095 :103A500070B501208AB04002FFF744FD224CA06AF5 :103A600003263043A0622149B0050A68824302431D :103A70000A60A26A83111A43A2620A68824302435F :103A80000A60002505950695079505A92046089525 :103A9000FFF7E2FC0120039000950195029569462D :103AA00004952046FFF7EEFCE16804208143E160C5 :103AB0006169C908C900314361616168014361609E :103AC0006068082188436060A06817218843C9079F :103AD0000843A060A068C00FFCD1A068044908405A :103AE000401CA0600AB070BD0024014008270140BE :103AF000E8FFFF7F10B50120FFF7DCFC00210A2062 :103B000000F08EFC0A2000F081FC00210B2000F068 :103B100087FC0B2000F07AFC10BD0000F0B50120FE :103B200087B04004FFF7C6FC01208004FFF7C2FC09 :103B30000120C004FFF7BEFC01208005FFF7BAFC9E :103B40001C480125002403266A46049551C2092712 :103B5000FF0669463846FFF7EFFD1920000203947F :103B60006A46049461C269463846FFF7E5FD2802BB :103B7000B86111486A46049551C2104F69463846EB :103B8000FFF7DAFD0B20000303946A46049461C238 :103B900069463846FFF7D0FD0720400300900294A5 :103BA00003946946019504940548FFF7C5FD07B0E5 :103BB000F0BD0000C0800000E743000000040048A2 :103BC00000080048084807490160084901600421CD :103BD0004160074A8260C1684907FCD1026105491A :103BE00001607047CCCC000000300040555500000B :103BF000FF0F0000AAAA000010B586B01421684685 :103C0000FDF7EEFA1020FFF761FC0021112000F013 :103C100007FC112000F0FAFB2F20694608800020E5 :103C200001900848084C02902046FFF70DFE2068DE :103C3000802188432060E06801210843E06006B0ED :103C400010BD0000E70300000010004070B5012027 :103C50008EB08003FFF746FC03204002079002204D :103C60000890032000240990012509200A9407A93F :103C70000C950B94C006FFF75FFD3A4E102202210F :103C80003046FFF791FC002202213046FFF770FC1E :103C9000002202213046FFF7B3FC00220221304609 :103CA000FFF7BCFC802202213046FFF78DFC00228A :103CB00002213046FFF7C0FC002202213046FFF708 :103CC00091FC002203213046FFF76EFC0022032105 :103CD0003046FFF74DFC002203213046FFF790FCF1 :103CE000002203213046FFF799FC80220321304651 :103CF000FFF76AFC002203213046FFF79DFC0022FB :103D000003213046FFF76EFC00211B2000F088FBEA :103D10001B2000F07BFB144869460068009001946A :103D200002940394059406940C20104C04902046B1 :103D3000FFF7D6FD606829050843606060684900A8 :103D400003225205904308436060A068491208436B :103D5000A0602046FFF7BAFD2068284320600EB01F :103D600070BD000000000240DC000020003801406F :103D7000F0B58DB01C2106A8FDF732FA182168466F :103D8000FDF72EFA012464042046FFF79FFB20462E :103D9000FFF790FB012500240E2002260327039540 :103DA0006A4605950494C1C209206946C006FFF71A :103DB000C3FC00960920039504956946C006029746 :103DC00001960595FFF7B8FC464E102204213046B7 :103DD000FFF7EAFB002204213046FFF7C9FB00226F :103DE00004213046FFF70CFC002204213046FFF787 :103DF00015FC802204213046FFF7E6FB0022042157 :103E00003046FFF719FC002204213046FFF7EAFB99 :103E1000002205213046FFF7C7FB0022052130466E :103E2000FFF7A6FB002205213046FFF7E9FB002241 :103E300005213046FFF7F2FB802205213046FFF7CF :103E4000C3FB002205213046FFF7F6FB00220521C7 :103E50003046FFF7C7FB00211C2000F0E1FA1C20D0 :103E600000F0D4FAA61EFF21304600F0D9FA304601 :103E700000F0CCFA1C48EE03006806900794089402 :103E800009940C200AAA51C2184C06A92046FFF733 :103E900027FDA06821140843A060A068B043304308 :103EA000A06020681F2149058843084320602068DE :103EB0004911884308432060606829050843606011 :103EC000606849007A05904308436060A068491221 :103ED0000843A0602046FFF7F9FC206828432060D3 :103EE0000DB0F0BD00000240E000002000440040A2 :103EF00030B58DB01C216846FDF772F9182107A86E :103F0000FDF76EF90124A4042046FFF7DFFA2046EE :103F1000FFF7D0FA032080020790022008900320C8 :103F20000024012509A931C104200C9007A91348D8 :103F3000FFF702FC00211D2000F072FA1D2000F0A6 :103F400065FAE120800200900C2001940294039411 :103F500005940490E8030A4C069069462046FFF752 :103F6000BFFCA068A1140843A0602046FFF7AEFC88 :103F70002068284320600DB030BD000000040048D8 :103F80000048004010B58EB01C216846FDF728F9A6 :103F9000182107A8FDF724F901200005FFF796FA7C :103FA00001208004FFF786FA18200790022008906D :103FB00003200990002404200C900A940B9407A974 :103FC0001348FFF7B9FB00211D2000F029FA1D203E :103FD00000F01CFAE120800200900C200490019473 :103FE0000294039405940120C0030A4C069069468C :103FF0002046FFF775FCA068A1140843A060204686 :10400000FFF764FC20680121084320600EB010BD5A :10401000000400480050004030B58DB01C216846B7 :10402000FDF7DEF8182107A8FDF7DAF82020FFF7E2 :1040300059FA01204004FFF73DFA30200790022092 :10404000089003200990052000240C9009200A9470 :104050000B9407A9C006FFF76FFB00211D2000F09D :10406000DFF91D2000F0D2F9E120000200900125C7 :104070000194029403940C20ED0304AA31C20B4C6A :1040800069462046FFF72CFC6068A843284360601F :10409000A068A1140843A0602046FFF717FC206821 :1040A0000121084320600DB030BD00000014014024 :1040B00000B50846042A02D80020C04300BD01789C :1040C0007F2902D90120C04300BD41784906490E2D :1040D0001F2902D90220C04300BD114602F0CAFBCD :1040E0000028F9D0042000BDF7B588B00F460A9A21 :1040F0000898FFF7DDFF0690002803D00020C0439A :104100000BB0F0BDBD483A7800783946824273D191 :104110008C784A78CB78B98824024DBAB8491C43C8 :1041200008704A7001200790200521070226000E22 :10413000090F130002F0F8F811A60A508DA7BFDD91 :10414000A6A6A6A6A6A6A6A6E9F0A600E81DC008F3 :10415000AB4903908870002038E0002701200597C4 :1041600001900098C000049026E021070122200958 :10417000090FD202944207D24200A2481218092025 :1041800080011018808E05E042009E481018FF3014 :104190008130808AFDF794FA002801D00198074306 :1041A0000198641C4006000E01900598A4B2401CC2 :1041B0000590082804DA049805994018A842D4DB31 :1041C0008F4800994018C7700098401C03990090D0 :1041D0008842C2DB761854E0E81DC0088849039085 :1041E0008870002030E000200090012001900298AB :1041F0000027C00004901DE0FDE02005000E4200F5 :10420000804821071218092080011018090F808AA0 :10421000FDF756FA002803D0019900980843009052 :104220000198641C4006000E7F1CA4B20190082F68 :1042300003DA0498C019A842DFDB7149029A00989A :104240008918C8700298401C039902908842CADB02 :10425000C0E768006A498446887000200EE0211893 :104260004A006849470052180921C9015118898E2E :10427000634A0B0ABA18D3701171401CA842EEDBD6 :1042800017E0761C8DE068005D4A8446907000203F :104290000DE021184B005B4947005B18092189019B :1042A0005918898ABF180B0AFB703971401CA84243 :1042B000EFDB6644E5E7002D12D0FF2212029542A3 :1042C00007D142004F4812189D208000101801F0BD :1042D000FBF939464A480A9AFCF769FF0A9E85E0CD :1042E0004200484812189D208000101801F0ACF8D8 :1042F000EFE73879797900020843424962005218A1 :104300000921C90151188886E3E7E81DC0083C4926 :1043100003908870002036E047E03818C07900909C :1043200001200190002005900298C000049024E034 :10433000210701222009090FD2029442009B019A11 :1043400007D21A4043002F481B189D2080001818E0 :1043500005E01A4043002B481818FF30953001F053 :10436000C7F90198641C4006000E01900598A4B29C :10437000401C0590082804DA049805994018A842C2 :10438000D6DB0298401C039902908842C5DB1C488A :10439000B9788170F978C170397901717979417191 :1043A000361D0698002814D025E000200EE04100BC :1043B000C919CA79097A12020A4321184B00114916 :1043C0005B180921C90159188A86401CA842EEDBF6 :1043D000DDE70798002809D0B1B2094802F04AFA8F :1043E00007498855000A89194870B61C32460449A5 :1043F000089801F04DF9002082E600003401002009 :10440000F80D00200011002070470000C106C90E01 :1044100001208840014908607047000000E100E089 :104420008307FF22DB0E9A408907090E9940002876 :104430000BDA0007000F0838830808489B0018189B :10444000C36993430B43C3617047830804489B00CF :104450001818036893430B430360704700ED00E0B6 :1044600000E400E08307FF22DB0E9A408907090E73 :10447000994000280BDA0007000F08388308084825 :104480009B001818C36993430B43C36170478308AB :1044900004489B001818036893430B43036070475C :1044A00000ED00E000E400E0F7B58CB000200B90D8 :1044B0000D98007854280ED10D984078C006C00E93 :1044C0004100411805900020C0430B31914203D1B7 :1044D0000598022802DA00200FB0F0BD0D9841794E :1044E00002790802104380016421FCF7FFFD069069 :1044F0000D982230417A027A08021043800164212B :10450000FCF7F4FD0699814204DBCD48816B491C20 :104510008163E0E7401A0599491EFCF7FDFD0A900A :104520000C98002863D1C6488168491C002481602A :1045300058E0600021180D98069A08180A996143FE :104540008D18BF490A69521C0A613721C9018D4281 :1045500002DABB4B01221A706A1A232109028A422D :104560002CD2017A1E293CD3C17980790E020643F0 :10457000284602F025FD7D27FF0070433946FCF7F1 :10458000CBFD0090284602F037F971424843394686 :10459000FCF7C2FD0146AA483746006A0C220346D2 :1045A000A84E53439A199760009FF7505160FF211E :1045B0009031884202DAA249401C08627D20C00185 :1045C00085420EDD9E4D2878012807D12A6A002AEF :1045D00004DD9C490020AA6100F076FC00202870D0 :1045E0002862641C0598844201DA282CA1DB0C980F :1045F00001287DD19248C168491C0024C1600BE1AB :104600000A9A069B62436000D51821188C4B0D98BE :104610005A690818521C3726017AF6015A61B542C8 :1046200002DA874A012353702322AB1B1202934202 :104630002DD21E297ED3C17980790E0206432D200A :104640000002281A009002F0BBFC7D217043C900D3 :10465000FCF762FD0746009802F0CEF87D2170431A :10466000C900FCF759FD024675480C23416A08460B :104670005843754B8446C018866066469F51426019 :10468000FF209030814202DA6D48491C41627D2052 :10469000C00185424EDD6A48407801287ED1684DD0 :1046A000686A0990002879DDE86168480390002075 :1046B00008907D20C000424200238446049201926B :1046C000009063491A46184607931BE00C255E4E7E :1046D0004543AF19BE680296322E12D37F685A4EF8 :1046E000282F0EDB75595B4EC835B54209D200E064 :1046F00098E08F4200DA3946039E029DB54200D20F :104700000395401C099DA842E0DB00254EE00C20EB :104710002E464D4F4643B859F71903907E680296CE :10472000BE68322E41DB029E282E3EDB0646C8368E :10473000484F00E06FE0BE4237D20E46029F32364D :10474000B7420BDD002B01DD002A03D0002A2CDD4F :10475000002B2AD10798401C079026E0089E3D4F69 :10476000761C08960646C736BF1EBE4207D2009F7B :10477000B84200DA0090019FB84200DD0190FF27A7 :104780002C37BE4205D2049F039EBE4200DD04903A :104790005B1C0646C93EFF272C3700E037E0BE42CF :1047A00003D2604500DA8446521C6D1C099885428C :1047B00003DAFF20F5308142A9DB0020002B07DD62 :1047C000002A05DD079A002A02DD6046049A04E00B :1047D000089A0A2A05DD019A00988018C20F10185D :1047E0004010174B9A6A550052191018C217920FB1 :1047F0001018801098621648814208DA586B4200FF :1048000080184018C117890F0818801058630C4988 :10481000002048704862641C0598844202DA282C03 :1048200000DAEDE606494A6B086B8018CA6A520046 :104830008018C217920F10188010C8620B984BE6B0 :10484000FC01002034200020F432002003D90000B5 :104850000F270000BD02000010B5040001D0601C4D :1048600003D10221064801F045FC012C01D0641C53 :1048700003D10221024801F061FC002010BD0000BC :10488000FE01002070B572B60125094A2D0395611D :1048900080210C028B019362084201D0946100E0F8 :1048A000946249089361F6D19562956162B670BDD4 :1048B0000004004810B501200449C00648600448BF :1048C0000168491C016000F005F810BD00ED00E032 :1048D000D800002070B5094DE86F00280CD0084CB6 :1048E000084902202268FDF767FF00202060E86782 :1048F0008021044801F068FB70BD0000FC0300202B :10490000E80000201005002010B50648054B00788F :104910000021403B5A1840325478491C14700F292A :10492000F8DB10BD4011002010B5084C084B0122E7 :104930000221A06DFCF752FD064800F069FEE06D13 :10494000401CE065A06D2066002010BD8016002090 :1049500039300000B41800200248C16D491CC165FF :104960000020704780160020F3B5FA4D85B0286806 :1049700000286FD0686800281CD000220D21082074 :1049800000F0CCFE00221146082000F0C7FE0122F4 :104990001146082000F0C2FE00200146EE4A13181E :1049A0004033401C19701028F8DB00260121144602 :1049B00040347BE20122E1E7B2000598059B805C70 :1049C000D7187A78019201257B8800931B2873D031 :1049D00012DC0246030001F0A7FC1B5C72727272CB :1049E00072723E3E3E3E3E3E5C5C5CA7A7A73E3EEA :1049F000BEBEBEBEBEBE5C00342870D011DC014617 :104A00001C390B0001F090FC18A7A7A7A7A7A7A720 :104A1000A7A7A7A7454545454545454545454545BE :104A2000F7453A2873D008DC014635390B0001F010 :104A30007BFC05E26E56E26E3000DC2804D004DC1C :104A40003B28EFD0C82824D120E1DD28FCD0FA286B :104A5000F9D11BE133E2D01F030001F065FC0E0821 :104A60000A10181B1D1A1A1A1A1A1A20261A207C44 :104A70004AE0FFF749FF00281FD0207C3AE0FFF70B :104A800043FF002816D1207C002813D125E000F038 :104A9000A1FBF5E12078F7E7FFF736FF1DE0207C6A :104AA00000280AD0002905D007E0207C002804D186 :104AB000002902D0012010E04DE000200DE013009D :104AC00001F032FC070C050E111B262E0C0000F025 :104AD00081FB00990198FCF707FE2074D0E11AE1F0 :104AE00000F078FB0CE0207C0028E6D000990198CB :104AF000FCF7FAFD0028E0D0DCE7207C0028DCD0C1 :104B000000990198FCF7F0FD0028D6D1D2E758E1D2 :104B1000207C0028CED100990198FCF7E5FDB3E791 :104B2000207C0028ECD0C5E7102804D0112804D040 :104B3000122AAED10AE0227C03E0207C0028A8D013 :104B400001220099019800F0E9FD99E1207C0028FC :104B50009FD00022F5E715383D79030001F0E4FB12 :104B6000120A1215181B0F1E3C4C5B6A2D798185A9 :104B7000898D7D9400F02EFB13E0207484E000F01A :104B800029FB1DE000F026FB29E000F023FB36E0C6 :104B900000F020FB42E000F01DFB4EE0207C0028EE :104BA00070D028460099FCF72FFE0546F9887879E1 :104BB000FCF72AFE854263D064E0207C002861D0A7 :104BC00028460099FCF720FE0546F9887879FCF71D :104BD0001BFE854254D155E0207C002852D0284647 :104BE0000099FCF711FE0546F9887879FCF70CFE70 :104BF000854245DB46E0B1E0207C002842D02846D3 :104C00000099FCF701FE0546F9887879FCF7FCFD70 :104C1000854235DC36E0207C002833D028460099D8 :104C2000FCF7F2FD0546F9887879FCF7EDFD854241 :104C300026DD27E0207C002824D028460099FCF7B8 :104C4000E3FD0546F9887879FCF7DEFD854217DA41 :104C500018E0207C002813D1A3E7207C00280FD186 :104C6000AEE7207C00280BD1B9E7207C002807D1D3 :104C7000C5E7207C002803D1D0E7207C0028DCD0C9 :104C800001207AE7002078E70225F9E03F79154610 :104C9000C8280DD0DC2823D0DD282AD0FA28F3D16B :104CA0002D48E90008184030007EC0062AD508E0EB :104CB0002948E90008184030007EC00601D40021D0 :104CC00021E0207C002822D038460099FCF79CFD8A :104CD0000146284600F0C0FB284600F0D3F94CE717 :104CE0001D48E90008184030007EC006E9D40121C3 :104CF00009E01948E90008184030007EC006E0D4F9 :104D0000022100E003212846FDF7F4F9D9E72846FF :104D100000F0F8FEE0E73F790225342802D037287A :104D200016D108E0207C002812D038460099FCF704 :104D30006BFD401C07E0207C002809D03846009914 :104D4000FCF762FD401E02463846009900F05CFD0B :104D500096E00000780E0020001100203D7979795E :104D60000291F9880191332814D035281BD03828B6 :104D70008AD1207C002887D00298FCF745FD0746A1 :104D800028460099FCF740FD3A1A0199029800F074 :104D90003BFD79E7207C0028FBD028460099FCF7F2 :104DA00033FD0246F1E7207C0028F2D02846009926 :104DB000FCF72AFD054601990298FCF725FD2A1803 :104DC000E3E73A7979790291F9880191797A039147 :104DD0007D89362806D0392812D03A281FD03B28A2 :104DE0004DD131E0207C002849D010460099FCF7D5 :104DF0000BFD074601990298FCF706FD3A180CE0F6 :104E0000207C00283BD010460099FCF7FDFC0746AB :104E100001990298FCF7F8FC3A1A29462CE0207C0C :104E200000282CD010460099FCF7EEFC07B201993F :104E30000298FCF7E9FC00B247433A46294603983A :104E400000F0E2FC3A1416E0207C002817D010464F :104E50000099FCF7D9FC07B201990298FCF7D4FC41 :104E600001B23846FCF758F902B20F4629460398BA :104E700000F0CAFC3A46691C039800F0C5FC032503 :104E8000301141000F48012308183107090F02892A :104E90008B401946114000D00121277C0830002F9B :104EA00001D01A4300E09A430280761906988642A0 :104EB00000DA81E503494868401C4860002007B0DB :104EC000F0BD0000780E0020F7B586B005927D2277 :104ED00065480024D2008646504200900490039218 :104EE00001926348029404606049234622462046AA :104EF00019E00C254543079E2F46AD19AE68B44610 :104F0000322E0FD36D68282D0CDB3E46079FBE590D :104F1000584FC836BE4205D28D4200DA2946F445C4 :104F200000D2E646401C059DA842E2DB681E57E021 :104F300070460C25079E45437059AD196E68AD68E3 :104F4000B446322D4ADB6646282E47DB0646494FDB :104F5000C836BE4242D20E463236B4450BDB002B79 :104F600001DD002A03D0002A38DD002B36D102985B :104F7000401C029032E0282C07DA3F4EA700BF19F0 :104F800007263602BE19B580F0803A4E0546C73571 :104F9000B61E641CB54207D2039EB04200DA0390ED :104FA000049EB04200DD0490FF272C37BD4208D29A :104FB0000D462835AC4504DA009DA84200DD00907E :104FC0005B1C0546C93DBD4208D20E462836B44595 :104FD00004DA019DA84200DA0190521C7046401E7E :104FE0008646002803DBFF20F5308142A0DB204805 :104FF00004604360029D8560C260039D0561009D61 :105000004561019D8561049DC5610020002B08DD7F :10501000002A06DD029A002A03DD019A0098101882 :1050200004E00A2C05DD049A03988018C20F1018BA :105030004010124B1A68540012191018C217920F20 :105040001018801018600948401E814209DA0C4A85 :1050500010684300C0184018C117890F0818801045 :105060001060002009B0F0BD03D900001027000037 :10507000B41F0020BD0200000011002038020020F3 :105080002C020020FEB50746402802DB0020C0436A :10509000FEBD2C48F9000E1800964036348BE10610 :1050A00001D40020FEBDA1063CD561063FD42649AF :1050B000096800980A25406D0190081AA1070FD0D1 :1050C000A107890F012905D0022905D0E1438907ED :1050D00005D005E0642503E07D25ED0000E01B4DD3 :1050E000A84224DB2946FCF717F8014615487A0048 :1050F00012180B20800110188446808E019B4018E6 :1051000069435B18009980B24B650D2189015118E4 :10511000898E814203D8084640210C43348361467E :10512000888604E0600602D5402084433483307EC4 :10513000B9B24006C20F052000F0F0FA307E4006FA :10514000C00FFEBD00110020440200201027000007 :10515000F7B50446FCF72BFB054602992068A942E7 :10516000A16806DC4018029A0199FCF720F8029920 :1051700019E040182A460199FCF719F829462046FB :10518000FCF772F92046FCF712FB06460298471B13 :10519000B7420DDCA16820683A46401801994919C8 :1051A000FCF705F839462046FCF75EF90298FEBD8B :1051B000002E0CDDA168206832464018019949197B :1051C000FBF7F5FF31462046FCF74EF9AD192846AE :1051D000FEBD0000074A0F2011183F235B5C4031E1 :1051E000401E0B700028F7DC02494031087C087033 :1051F000704700000011002000B5FFF743FB00BD21 :1052000010B50C460A4601460348FFF7A1FF00F01F :10521000C3FE204610BD0000C003002010B50C46A0 :105220000A4601460348FFF793FF00F0B5FE20460B :1052300010BD0000C003002010B50C4600F014FFA4 :10524000204610BD04494968F0221140034A09096B :10525000515CC8407047000000100240E07A00082E :1052600003494968034A4905490F515CC8407047E2 :1052700000100240F07A000810B5074841680C2081 :105280000140064805D0042904D0082901D100F0C6 :1052900009F810BD024810BD0010024000127A004B :1052A000001BB70010B50D4C60680321C903012233 :1052B0000840D203811A0A4802D0914200D109481D :1052C000E16A0907090F491CFBF710FF61680F220B :1052D00092041140890C891C484310BD0010024003 :1052E00000127A00001BB7000920C00600694106C1 :1052F000C90FC943C907CA0D012149028A430106E2 :10530000C90FC943C907890D0A430121C00B89028E :10531000C043C0078A43400D02432248016901206F :10532000C00282438807C00FC043C007000D02437C :105330000120000382434807C00FC043C007C00CD0 :10534000024350088A06D30F012240009A431043BB :10535000022290434A06D20FD243D207920F104343 :10536000042290430A06D20FD243D207520F1043B1 :1053700008229043CA05D20FD243D207120F8905E3 :10538000C90F1043C9431022C9079043C90E0843EF :10539000054909695202C90BC943C9079043890CE1 :1053A00008437047000400480008004870B5D4174F :1053B000A40F0023A418A51003E09C000E59065169 :1053C0005B1C9D42F9DCD40F6B00A418651003E050 :1053D0005C000E5B06535B1C9D42F9DC104670BD01 :1053E00000B5FFF781FF00BDF8B500238446802596 :1053F000DB431248002421462A464A4312181788E4 :105400000F4EB74209D17E26B75A0E4EB74204D18D :105410005288A24201DD0B461446491C0829EBDBE9 :10542000082B06D26B43191880226046FFF7BEFF97 :1054300002E06046FEF7BEFA0020F8BD00C000089A :10544000AA550000A55A00000B0702881B0F012176 :1054500099408A430280704730B5402802DB002023 :10546000C04330BD0D4CC20013191A464032157EA0 :10547000AD0611D4400000190D24A4010419A18621 :105480000B240021A4010019818605480068586595 :10549000108B202108431083002030BD0011002014 :1054A00044020020034610B50020024604E09C5C44 :1054B0002018521CC0B2D2B28A42F8D310BD0000EC :1054C00010B50B4C20461E388278611F4A70492265 :1054D000227000796070085CA07003212046FFF7FD :1054E000E1FFE0700421204600F040F810BD00000C :1054F000F201002010B51C4C2078002824D0207B1D :1055000080062DD1607901220023002806D0A271E7 :10551000E07900280AD0401EE07107E0A068401C36 :10552000A0600A2802D91420E071A37160780028D5 :1055300016D02179491CC9B22171814200D922714A :105540006371FFF7BDFF0BE02069401C2061C82894 :1055500001D9642003E0E079002801D0401EE07109 :10556000E068401CE06010BDD401002010B500F0E0 :1055700009FE10BD70B5044604291AD10321FFF7B6 :1055800091FFE178884214D1184900220878002858 :1055900020780FD00B461433692808D16578087934 :1055A000854204D101254D718A60A2781A54587839 :1055B000C87070BD4928FCD10C4D60784B781E3501 :1055C0009842F6D1A078C87069200A61287048789E :1055D00068708878A87003212846FFF763FFE87099 :1055E00004212846FFF7C2FF70BD0000D40100204F :1055F00010B500F001F810BD03488168C907C90F54 :1056000000D0C068704700000030014070470000C3 :1056100070B51A4C6168491C616019490180A18804 :1056200041801849CA6C8280496D81601121818353 :105630001549C183A1684A011449511800250B4638 :105640002A469E5CFF2E04D1521C202AF9D3002D3D :1056500010D02022FBF7F2FFA0682060401CA06061 :1056600040010121C9022030884201D90020A060F8 :10567000002070BD202200F019FEEDE73C01002063 :10568000AA55000080160020A55A000000C8000896 :1056900010B514460A46012802D0022806D00DE0B3 :1056A00021461046FFF7BAFD054804E021461046A2 :1056B000FFF7C2FD0348816F491C8167204610BD7A :1056C00068030020FC0300200B0702881B0F012148 :1056D00099400A43028070470907090F01238B4054 :1056E0000188002A01D0194300E0994301807047E6 :1056F00010B5002A02D0FFF7E7FF10BDFFF7A4FEA8 :1057000010BD0907090F01238B400188002A01D031 :10571000194300E0994301807047000070B50B0504 :105720001B0E204C5B000D071C192D0F030000F011 :10573000FBFD09060B14191E22272C313600FF2908 :105740002DD89520800003E0FF2928D89D208000D7 :1057500020182946FFF7D5FF21E0FF291FD8A520F3 :105760008000F5E780291AD2FD208000F0E780292B :1057700015D20D48ECE7402911D2AD208000E7E7B3 :1057800040290CD2B5208000E2E7802907D20648E4 :105790002030DDE7802902D203488030D8E700209E :1057A00070BD000000110020140400000121C90395 :1057B000034A002801D09162704791617047000050 :1057C0000008004801218903034A002801D09162A2 :1057D00070479161704700000008004801210922CC :1057E000C902D206002801D09161704791627047CA :1057F00001214903034A002801D091627047916159 :105800007047000000080048F0B5304C4B001C19F0 :105810000923DB01E6180B23DB01E51892B28A2885 :105820003DD00EDC294F4B00DF1909239B01FF18E7 :105830008338030000F078FD0714181C21262D463C :10584000480099283ED006DC8B282CD08C2831D0FB :105850008D2839D133E0A12834D0FE2834D131E06D :10586000102931DABA822FE010292DDABA862BE01E :10587000102929DA0520C00108E0082924DA0F20C0 :10588000800114E008291FDA01208002201882829A :105890001AE0802918DAB28616E0AA8614E0802978 :1058A00012DAB28210E040290EDA0D2080012018B1 :1058B000828609E0402907DA0B208001F7E74029BA :1058C00002DAE8E78029E8DB0020F0BD00110020C3 :1058D000F0B58DB0002500F083FFFCF701F80590CE :1058E00010213A4800F0E6FF0790FBF7F9FF04901B :1058F0001021364800F088FF0690FBF7F1FF039077 :105900001021324800F09EFF0190FBF7E9FF0646A8 :1059100010212E4800F0AEFF0090FBF7E1FF2C4A6B :1059200004469068012108439060881E1061294850 :105930001061264B0021585C1070491C1029FADBBD :105940001768FBF7CDFF0B90019900980297019023 :10595000214F0091781921A1069B079A00F0D0FCF5 :1059600045190B98A11B001B01910290039A049901 :105970000398B21A431A009208460599421A7819F8 :1059800020A100F0BDFC441908A8FDF727FF264818 :1059900042680320C00302403819134623A100F0D7 :1059A000AFFC0419381926A1089A00F0A9FC0119C6 :1059B0003846FFF725FC01210D20FEF737F8244972 :1059C0000320886000200DB0F0BD00005870000872 :1059D0000030024001A00000680200200D0A43527E :1059E00043202025303458202025303458202025CD :1059F0003034582020253034582020253034580D9C :105A00000A00000074696D6520253034642020256B :105A10003034642020253034642020253034642044 :105A200020253034640D0A00001002404D61696E7B :105A3000536F75726365202578202564200D0A0058 :105A4000737973636C6B202564200D0A00000000DD :105A5000C000002030B50021174D084669604200A3 :105A60005219401C1181FF28F9DD00200522134C3A :105A7000D20143001B199B18401C99821028F8DBA7 :105A800000200922D20143001B199B18401C998653 :105A9000FF28F8DD00201022C100091940310B8BCE :105AA000401C93430B834028F6DB01200449286007 :105AB0004882002030BD0000780E00200011002038 :105AC000B418002010B500210C48092201600C4BCD :105AD000084692014400E418A418401CA18610282E :105AE000F8DB0020012292024400E418A418401CB4 :105AF000A1820828F8DB002010BD0000780E0020ED :105B00000011002010B5402802DB0020C04310BD6A :105B10000B4BC100CA18114640310C7EA4060DD5AE :105B20004000C0180B2300249B01C0188486054840 :105B300000685065088B202290430883002010BD28 :105B4000001100204402002010B5FBF7F3FEFCF723 :105B5000A5FA10BD70B594B030216846FBF740FB44 :105B60000024022501260E94E803099000960520E2 :105B70000F94C0040D9401960A900C9408950B950F :105B80006846FCF779F8002803D0862115A000F0BC :105B9000B5FB07200C900E9401210D950F940CA8D5 :105BA000FBF78EFF002803D092210EA000F0A6FB89 :105BB000109610A81296FBF70DFF002803D0A12124 :105BC00008A000F09BFB4B208001FCF74FFA04205B :105BD000FCF706FA00221146501EFBF7F7FE14B040 :105BE00070BD00002E2E5C5372635C4253502E63D6 :105BF0000000000013480168012211430160416860 :105C0000114A114041600168104A11400160016869 :105C1000012292049143016041683F2212049143A2 :105C20004160C16A09090901C162016BFF22143296 :105C300091430163416B4908490041630021816040 :105C400070470000001002400CB8FF08FFFFF6FE8E :105C500004480169C907C90F02D00121C943016184 :105C6000704700000010004070B51A4CE0691A4BF4 :105C70008006C00F0BD0A18C5868401C5860184A91 :105C8000164D106829549F2801DA401C1060E06905 :105C90000007C00F09D008202062A0680121090375 :105CA0000843A060D869401CD8612068C006C00FB6 :105CB00007D0E069C006C00F03D01020206200F0BA :105CC00023F9E0694006C00F03D04020206200F0B5 :105CD0005BF970BD0038014068030020900400208B :105CE000E400002010B5124CE069E0690007C00F25 :105CF00009D008202062A068A1140843A0600D48C4 :105D0000C169491CC1612068C006C00F07D0E069A5 :105D1000C006C00F03D01020206200F085F9E069B2 :105D20004006C00F03D04020206200F0CDF910BD26 :105D300000440040FC030020F8B5614CE069800697 :105D4000C00F09D0A08C5F4AC1B21068FF2803D2EF :105D50005D4B1954401C1060E06900250006C00F1F :105D60008026002810D05949594A0868136898427B :105D700005D30D6015602068B043206004E0554AEB :105D8000125C401C08602285E0690007C00F06D045 :105D900008202062A068012109030843A060206850 :105DA000C006C00F07D0E069C006C00F03D01020A6 :105DB000206200F091F9E06940274006C00F0028FA :105DC00002D0276200F094F9434CE0698006C00FCE :105DD00009D0A08C414AC1B21068FF2803D2404BC1 :105DE0001954401C1060E0690006C00F10D03D49F6 :105DF0003D4B08681A68904205D30D601D6020680D :105E0000B043206004E0394A125C401C08602285DF :105E1000E0690007C00F01D0082020622068C0069A :105E2000C00F07D0E069C006C00F03D01020206269 :105E300000F076F9E0694006C00F02D0276200F05A :105E40007BF92B4CE0698006C00F09D0A08C294A51 :105E5000C1B210683F2803D2274B1954401C106070 :105E6000E0690006C00F10D02449254B08681A6865 :105E7000904205D30D601D602068B043206004E0AF :105E8000204A125C401C08602285E0690007C00FB0 :105E900001D0082020622068C006C00F07D0E0694A :105EA000C006C00F03D01020206200F05DF9E06949 :105EB0004006C00F02D0276200F062F9F8BD000072 :105EC0000048004070010020501B00209C01002071 :105ED00074010020901A002000500040780100203A :105EE000501C0020A00100207C010020D01A0020BE :105EF0000014014080010020501D0020A40100205A :105F000084010020101B00200548416A491C4162A1 :105F100004490968002901DD0121C16770470000BB :105F200068030020E4000020F8B5144D0C46064636 :105F300002212846FDF7F8FA10200090104B324657 :105F400002212846FDF7DAFA224602212846FDF70B :105F50001DFB02212846FDF7F3FA0A4804630121DC :105F6000417202212846FDF7F7FA05482838816872 :105F70008022114381602046F8BD000000000240ED :105F800028380140680300200248016A491C016268 :105F9000704700006803002010B50A48407A0028C6 :105FA0000DD1084C206F5834002808D12046FBF74B :105FB000EBFB0146E26820688018FFF7B5FF002080 :105FC00010BD000068030020F8B5144D0C460646CD :105FD00005212846FDF7A8FA002000903346104A14 :105FE00005212846FDF78AFA224605212846FDF7B5 :105FF000CDFA05212846FDF7A3FA0A48446301219A :10600000817205212846FDF7A7FA054824388168E2 :106010004022114381600020F8BD000000000240D2 :1060200024440040FC0300200A480B4900794058F2 :10603000802180B2081A0949012208600849CA670C :106040004A6A521C4A62002803DD01200549000704 :10605000486070473071000804000240E8000020EA :10606000FC03002000ED00E0F8B5144D0C46064698 :1060700004212846FDF758FA10200090104B3246B4 :1060800004212846FDF73AFA224604212846FDF766 :106090007DFA04212846FDF753FA0A4804630121DA :1060A000417204212846FDF757FA054828388168CF :1060B0008022114381602046F8BD000000000240AC :1060C00028440040FC0300200248016A491C016288 :1060D00070470000FC03002003484068002802D0FD :1060E00002490120C86770476C010020D4180020C5 :1060F0007047000010B50C460A4601460548FBF7FC :1061000056F8054884600548016880221143016003 :1061100010BD0000901A00206C01002000480040D3 :106120000348C068002802D002490120C8677047B0 :106130006C010020681900207047000010B50C4663 :106140000A4601460548FBF732F805480461054850 :10615000016880221143016010BD0000D01A0020A8 :106160006C0100200050004003484069002802D024 :1061700002490120C86770476C010020FC1900200B :106180007047000010B50C460A4601460548FBF76B :106190000EF80548846105480168802211430160BA :1061A00010BD0000101B00206C01002000140140F5 :1061B00010B5054C0A46638821465B1C4380FBF7FB :1061C0003DFA002010BD0000007C00080B4610B511 :1061D000054944054118002C184602D000F066F825 :1061E00010BDFBF72BFA10BD001002080B46034947 :1061F00010B541181846FBF721FA10BD000002083F :1062000070B50C460B494118002B08D00A4D4519B2 :10621000012B03D0094B9B8A002B00D12946400556 :10622000204603D000F042F8002070BDFBF706FACC :10623000FAE700000080000800A00008B418002061 :10624000F8B54188174A491C4180154901807E21D3 :1062500000250A52ED43802300221146124C0026ED :1062600059430C19314603E0675CFF2F04D1491CE8 :106270009942F9DB002E03D0521C082AEDDB00E026 :106280001546082D06D208495D436918802200F0A2 :106290000DF803E080220449FBF7D0F90020F8BD97 :1062A000AA550000A55A000000C00008F8B516461F :1062B0000F460546FDF72AFA0024761C76080EE004 :1062C000600042195278295C120289188AB2C119F9 :1062D00000230220FDF7BEF9002802D0641CA6426C :1062E000EED8054A1169802319431161002801D0B5 :1062F0000020F8BD0120F8BD00200240FEE70000AC :106300000FB410B504A9074B02AA039800F028F8AF :10631000044602A9002000F05DFA204610BC08BC2B :1063200004B01847D567000830B47446641E257859 :10633000641CAB4200D21D46635D5B00E31830BCB9 :10634000184702E008C8121F08C1002AFAD1704796 :106350007047002001E001C1121F002AFBD17047E5 :10636000FFB591B00F460546002606E025280AD065 :10637000149A139990476D1C761C28780028F5D143 :10638000304615B0F0BD002400940121F34A029478 :1063900000E004436D1C2B780846203B98401042D7 :1063A000F7D128782A280ED0022128780246303AE0 :1063B000092A15D8009A0A235A43303A80180C4308 :1063C0006D1C0090F1E701CF0090002805DA012054 :1063D00040030443009840420090022004436D1C97 :1063E00028782E2815D10420044368786D1C2A28AB :1063F0000AD101CF6D1C02900BE002990A22514391 :10640000303940186D1C029028780146303909292E :10641000F3D928786C2810D006DC4C281AD06828CC :106420000ED06A2817D104E0742813D07A2812D12C :1064300010E00120400504430CE00121090501E0C2 :10644000032109050C436978814203D1012000052D :1064500024186D1C6D1C287803906E281ED00CDC4F :10646000632831D004DC00288AD0582811D1B2E04A :1064700064287BD069280CD178E073282DD004DC07 :106480006F2870D0702804D1A7E075286CD07828C8 :106490006BD0149A13999047761C62E06002400F0B :1064A000022807D003280AD0042838680AD00660DA :1064B0003F1D56E03868F11706604160F8E738681C :1064C0000680F5E70670F3E738786946087400201F :1064D000487404A80390012003E03868039000206A :1064E000C0433F1D61070FD5002101E00199491C00 :1064F000029A0191914213DA8142F7DB019A0399E2 :10650000895C0029F2D10BE0002101E00199491CCE :1065100001918142FADB019A0399895C0029F5D146 :1065200001990098139A401A00902146149B00F09C :106530003BF901998019461807E003980399007800 :10654000491C0391149A139990470198401E019099 :10655000401CF2D12146149B139A009800F014F9C4 :1065600086196D1C09E741E033E034E00A20002180 :10657000049005916002410F022905D001CFC21796 :106580009446032905D007E0FF1DFF08FF0003CF55 :1065900006E000B2C2179446042902D140B2C117E6 :1065A0008C4600226146944506DA0A4600214042A4 :1065B00091418C462D2102E0210504D52B216A460C :1065C0001176012103E0E10701D02021F7E70191D5 :1065D00054E00A200BE0102009E010200490002174 :1065E0000420044308200591029003E008200021C4 :1065F000059104906002410F022905D001CF0022CD :106600009446032906D006E0FF1DFF08FF0003CFD4 :106610008C4603E080B2042900D1C0B20021019170 :1066200021072BD50399702906D0049A1021059BC8 :106630004A401A4305D00EE040216A4611760121F6 :1066400008E06146014306D030216A46117603997D :10665000517602210191049A0821059B4A401A4370 :106660000CD16146014301D1610707D530216A464B :106670001176012101910299491E0291039958292D :1066800004D037A103910FA90F910DE039A1F9E7CB :106690006146059B049AFAF7B8FD039B8C469B5C08 :1066A0000F9A521E0F92137061460143F0D10F985A :1066B00007A9081A20300390600704D501200004C0 :1066C0008443029801E0012002900399884201DD91 :1066D000401A00E000204118029001980918009823 :1066E000401A0090E00306D42146149B139A0098A8 :1066F00000F05AF886190020049008E006A9085C0A :10670000149A139990470498401C761C04900199A0 :106710008842F3DBE0030CD52146149B139A0098C2 :1067200000F042F8861904E0149A3020139990473B :10673000761C0299481E02900029F5DC08E00F98AB :106740000F990078491C0F91149A13999047761C61 :106750000399481E03900029F1DCFBE6092801009B :1067600030313233343536373839616263646566C7 :106770000000000030313233343536373839414289 :106780004344454600000000F8B5044600251E4677 :106790001746880404D405E039462020B0476D1C14 :1067A000641EF9D52846F8BDFFB50446002581B022 :1067B0001E46C80301D5302700E02027880404D5F1 :1067C00005E038460399B0476D1C641EF9D528468C :1067D00005B0F0BD0A68531C0B60107070470000D4 :1067E00010B50A2101A0FEF70BFD10BD1B5B324A5C :1067F0001B5B303B304800002D2110B5C90140180B :1068000000F0DEFB10BD000030B503460B48002948 :1068100000D101210A4C491E0ED31A7850400022A3 :10682000C50702D04008604000E04008521CD2B2C8 :10683000082AF5D35B1CEEE730BD0000FFFF000027 :1068400001A0000070B50A4DFF23EE1D1A46F9366F :1068500005E0047854402A5D5A40335D401C0C46E4 :10686000491E89B2002CF4D11802104370BD0000FB :106870003673000870B504460C4800220C4E11E037 :106880002378521C1D4645402D07ED0E755B00090F :106890004540180968400007C00E305A2B0958407F :1068A00092B2641C8A42EBD370BD0000FFFF00006F :1068B0006870000810B5084A084B07E00478544097 :1068C0002406E40D1C5B120A6240401C491EF5D2EE :1068D000D04380B210BD0000FFFF000036710008F9 :1068E00006C00021016041608160C1600122026137 :1068F000416108467047000088B0002080F310888E :10690000FE4F0125FF203D830530FD4BA022009066 :10691000991AFC48FBF70EFC4020FB4B0246191A63 :106920000090FA48FBF706FCFBF70CF8F84C002641 :10693000F8482667C06A6066F7480068A066F748AE :10694000406AE066FFF706F9F649F5480860FBF78C :1069500001FCFDF7E3F803200390049601A90596D6 :106960000295F148FCF7E8FEFDF7C4F8FCF73CFDA2 :10697000EE48FEF739FD3D83FEF732FDA063EC499A :1069800060630D70EB4902070D70EB49120F0A703E :10699000EA49EB4F1F2804D0C00605D50D703E70A4 :1069A00004E0E8480570F9E70E703D70E6480278AB :1069B000E24801780220FBF70DFDE4490220FBF7D5 :1069C00081FFDD48E04900780870E1490120087046 :1069D000E120E04940020860FDF738F9FDF7C8F909 :1069E000FDF786FADC48006820210843DA49086090 :1069F0000868102528430860FDF7C4FAD7480068E6 :106A000020210843D5490860086828430860FDF73D :106A100003FBD34801682022114301600168294328 :106A20000160FDF715F8FDF7CDF8FDF7E5F8CD4865 :106A30000168012211430160CB4801682022114303 :106A4000016001682943016001684022114301602F :106A50008021C648FFF7B8FAC5480168294301609C :106A600001684022114301600A20FAF74FFF01201C :106A7000FEF7BEFE0020FEF7A5FE0020FEF7BCFBE1 :106A80000120FAF7D1FD0020FEF7A8FEFEF720FF57 :106A9000FAF726FF6066994D002028826882A34895 :106AA000C0882882288A01280AD1FBF7FDFA208FA6 :106AB000202108406882688A002801D0FEF7CAFFBA :106AC000AC4E5A2070840020C043FDF7C5FE1B2148 :106AD000A948890145180F21C90140180090A74F06 :106AE0000020387001207870FAF7FAFE3861FAF762 :106AF0001BFF0790FEF774FC07468048008AC0071A :106B00000BD0B806208F04D5800606D4FEF7A2FF6E :106B100003E0800601D5FEF7D5FFA7630798E06381 :106B20000920C0060069009988847F480069C884EC :106B3000934800690885934800694885FAF75EFE26 :106B40003075FAF7CDFE8D4F78618F4800680028C8 :106B500001D00020B082206CC006C00E02281CD1DB :106B6000FAF7C4FB8848016800290ED00021B182E1 :106B700086490A68002A10D10068086084480068C5 :106B800084490860FDF7D0FE07E080490A68002AC2 :106B900003D000680860FDF7DFFE5848008A01282E :106BA0000BD15648818A002927D07B49B960C18A18 :106BB0007A480160B868FDF7D7FE606E7969616652 :106BC000081AA066E16E884200D2E066216F884212 :106BD00000D92067FAF784FEB86158480078002889 :106BE00006D059480078002802D00220FBF778FC34 :106BF0000798800403D5012002E06949D6E7002008 :106C000038700798000501D5012000E00020787059 :106C10004B48007800281AD00220FBF7A3FE606CD6 :106C2000002801D15F4908845E485F49008C888252 :106C30005E490868800401D5012000E0002038701A :106C40000868000501D5012000E000207870554853 :106C5000B18A0180018CB186F18A4180318B8180BB :106C6000718BC180606C002801D0401E6064A06CF4 :106C7000002801D0401EA0642048018B00293BD091 :106C80007878FEF7B5FD7878FEF79CFD7878FEF70A :106C90008DFD7878002801D1012000E00020FEF76A :106CA0009DFDFAF71DFEF861FAF71AFE3862FAF751 :106CB00017FE0A2178620846FAF708FA0020401CFD :106CC0004028FCDB206C401C20640E48C06F00286C :106CD00013D037480268002A0FDD3648007825288F :106CE0006AD092B233490120FDF7FEF90549002030 :106CF000C8672F49086098E05FE083E0B41800207F :106D0000301E002068030020741F0020FC030020B8 :106D10008016002080F7FF1FD800002000100240DE :106D200010270000A8010020000400488010002067 :106D3000D4010020D5010020F0000020EC0000204C :106D4000ED00002020010020F7000020992200081B :106D5000F1000020DC00002000480040005000400E :106D600000140140001000400038014010050020D0 :106D7000004400404013002000110020AC0100201E :106D800000080048000C0048600100206401002059 :106D9000880100206801002000A0000838010020C0 :106DA00000800008280C002000150020240100208D :106DB000E4000020900400201FE0008A01280FD08A :106DC000606C002810D07878FEF712FDA06C0028C7 :106DD0000CD07878FEF7F6FC7878FEF7E7FC5DE7F4 :106DE000554800680028EFD03878EDE70020FEF71E :106DF000E9FC0020FEF7DAFC4EE750490120FBF7E2 :106E00001BFF73E74E49786888420DD94D484168A9 :106E100001221205114341604168520003235B05C2 :106E200099431143416001E0401C78604648007876 :106E3000002802D00020FAF769FD444FF86F0028BF :106E400008D0434801784348FEF794FB40490020AE :106E50000860F86740484149407D0870FEF74AFBEA :106E60003F48007870753F48C06F00280CD0A88854 :106E70003D4F401CA8803D4900203A68FDF714FBB7 :106E8000002038493860C86739480088E8803948A8 :106E90000088288138480088688138480088A8819F :106EA00037480088E8813748C06F00280CD0A88A8E :106EB000354F401CA882354901203A68FDF7F4FAA5 :106EC000002030493860C86731483A4B0088E88272 :106ED0003048008828833048008868832F4800881D :106EE000A88486462E480088E88484462D48018878 :106EF0002D482985008868852C480088A8852C485D :106F00000288AA868288EA8602892A8782896A8715 :106F1000028AAA87828AEA87028B1A80808B58802D :106F20007046F082604630837183B08EFEF764F95C :106F3000224921480860D2E5780E00209004002004 :106F4000C027090000380140ED000020FC19002096 :106F500080010020501D002060130020D601002079 :106F6000D7010020D418002070010020501B002001 :106F7000040200200C020020140200203402002031 :106F80003C0200206819002078010020501C0020DD :106F90000802002010020020180200203802002001 :106FA00024020020280200202C02002030020020B1 :106FB000B41F002000180020AAAA000000300040E2 :106FC0002D2110B54902002800DA4018FAF7A4F87C :106FD000C817800E4018821180098001081A1C4BC6 :106FE00040245A2A04DA91005A58C918496808E01E :106FF000B42A0FDAB421891A89005A58C91880397D :10700000C96F231A534348431818C117890E08182B :10701000801110BDFF210F318A4206DA0D4992001E :1070200051185A58C918496807E0FF216931891A6F :1070300089005A58C9188039C96F231A53434843E5 :107040001818C117890E08188011404210BD0000A1 :107050004075000830FDFFFF1122334455667788E4 :1070600099AABBCCDDEEFF00000001CC01D80014D2 :1070700001F0003C002801E401A0006C007801B49C :107080000050019C01880044011109010201040122 :1070900004010000000000000000000000000600E5 :1070A000AA550000000100000000000001000100DE :1070B00000090000000000000000020000000009BC :1070C00000000000000000000000000000000000C0 :1070D0000000000000000000101010101010101030 :1070E0001010101010101010100020003000400080 :1070F00050006000030000000400000005000000D4 :107100000600000007000000080000000900000061 :107110000A0000000B0000000C0000001100A55A3E :10712000AA55000000000000000000000000000060 :10713000081C304458000000891112239B32244659 :10714000AD573665BF74488CC19D5AAFD3BE6CCA6B :10715000E5DB7EE9F7F88110080193331A22A55682 :107160002C47B7753E64C99C408DDBBF52AEEDDA4B :1071700064CBFFF976E802218B3010029913266761 :10718000AF763444BD554AADC3BC588ED19F6EEB2B :10719000E7FA7CC8F5D983310A2091121803A77742 :1071A0002E66B5543C45CBBD42ACD99E508FEFFB0B :1071B00066EAFDD874C904428D5316619F7020049D :1071C000A9153227BB364CCEC5DF5EEDD7FC6888EB :1071D000E1997AABF3BA85520C4397711E60A11402 :1071E0002805B3373A26CDDE44CFDFFD56ECE998CB :1071F0006089FBBB72AA06638F7214409D512225E1 :10720000AB343006B9174EEFC7FE5CCCD5DD6AA9AA :10721000E3B8788AF19B87730E6295501C41A335C1 :107220002A24B1163807CFFF46EEDDDC54CDEBB98A :1072300062A8F99A708B088481951AA793B62CC21C :10724000A5D33EE1B7F04008C919522BDB3A644E92 :10725000ED5F766DFF7C899400859BB712A6ADD259 :1072600024C3BFF136E0C1184809D33B5A2AE55E72 :107270006C4FF77D7E6C0AA583B4188691972EE338 :10728000A7F23CC0B5D14229CB38500AD91B666F52 :10729000EF7E744CFD5D8BB502A499961087AFF319 :1072A00026E2BDD034C1C3394A28D11A580BE77F32 :1072B0006E6EF55C7C4D0CC685D71EE597F4288074 :1072C000A1913AA3B3B2444ACD5B5669DF78600C12 :1072D000E91D722FFB3E8DD604C79FF516E4A990D9 :1072E0002081BBB332A2C55A4C4BD7795E68E11CF2 :1072F000680DF33F7A2E0EE787F61CC495D52AA1B8 :10730000A3B03882B193466BCF7A5448DD59622DD1 :10731000EB3C700EF91F8FF706E69DD414C5ABB198 :1073200022A0B9923083C77B4E6AD5585C49E33DB1 :107330006A2CF11E780F00C1814001C0804101C05C :10734000804100C1814001C0804100C1814000C135 :10735000814001C0804101C0804100C1814000C125 :10736000814001C0804100C1814001C0804101C015 :10737000804100C1814001C0804100C1814000C105 :10738000814001C0804100C1814001C0804101C0F5 :10739000804100C1814000C1814001C0804101C0E5 :1073A000804100C1814001C0804100C1814000C1D5 :1073B000814001C0804101C0804100C1814000C1C5 :1073C000814001C0804100C1814001C0804101C0B5 :1073D000804100C1814000C1814001C0804101C0A5 :1073E000804100C1814001C0804100C1814000C195 :1073F000814001C0804100C1814001C0804101C085 :10740000804100C1814001C0804100C1814000C174 :10741000814001C0804101C0804100C1814000C164 :10742000814001C0804100C1814001C0804101C054 :10743000804100C1814000C0C101C30302C2C60631 :1074400007C705C5C404CC0C0DCD0FCFCE0E0ACA9C :10745000CB0BC90908C8D81819D91BDBDA1A1EDEEC :10746000DF1FDD1D1CDC14D4D515D71716D6D2129C :1074700013D311D1D010F03031F133F3F23236F6AC :10748000F737F53534F43CFCFD3DFF3F3EFEFA3A5C :107490003BFB39F9F83828E8E929EB2B2AEAEE2EEC :1074A0002FEF2DEDEC2CE42425E527E7E62622E25C :1074B000E323E12120E0A06061A163A3A26266A6AC :1074C000A767A56564A46CACAD6DAF6F6EAEAA6A1C :1074D0006BAB69A9A86878B8B979BB7B7ABABE7E6C :1074E0007FBF7DBDBC7CB47475B577B7B67672B21C :1074F000B373B17170B050909151935352929656AC :107500005797559594549C5C5D9D5F9F9E5E5A9ADB :107510009B5B99595898884849894B8B8A4A4E8E6B :107520008F4F8D4D4C8C44848545874746868242DB :10753000438341818040081C304458081C30445823 :1075400000000000110000002300000034000000D3 :107550004600000057000000690000007A000000AB :107560008B0000009C000000AE000000BF00000087 :10757000D0000000E1000000F20000000301000064 :107580001401000024010000350100004601000044 :10759000560100006601000077010000870100002D :1075A00097010000A7010000B6010000C60100001D :1075B000D5010000E5010000F40100000302000015 :1075C00012020000210200002F0200003E02000013 :1075D0004C0200005A020000680200007502000020 :1075E00083020000900200009D020000AA02000039 :1075F000B7020000C3020000CF020000DB0200005F :10760000E7020000F3020000FE0200000903000090 :10761000140300001F0300002903000033030000CF :107620003D03000047030000500300005903000021 :10763000620300006B030000730300007B03000083 :10764000830300008A0300009203000099030000F6 :107650009F030000A6030000AC030000B20300007B :10766000B7030000BC030000C1030000C603000014 :10767000CA030000CE030000D2030000D6030000BE :10768000D9030000DC030000DE030000E10300007A :10769000E3030000E4030000E6030000E70300004A :1076A000E7030000E8030000E8030000E80300002F :1076B000E7030000E7030000E6030000E403000026 :1076C000E3030000E1030000DE030000DC03000030 :1076D000D9030000D6030000D2030000CE0300004F :1076E000CA030000C6030000C1030000BC03000081 :1076F000B7030000B2030000AC030000A6030000C3 :107700009F03000099030000920300008A03000019 :10771000830300007B030000730300006B03000081 :1077200062030000590300005003000047030000FB :107730003D03000033030000290300001F03000085 :107740001403000009030000FE020000F302000021 :10775000E7020000DB020000CF020000C3020000CD :10776000B7020000AA0200009D0200009002000083 :107770008302000075020000680200005A02000047 :107780004C0200003E0200002F0200002102000017 :107790001202000003020000F4010000E5010000F5 :1077A000D5010000C6010000B6010000A7010000DD :1077B00097010000870100007701000066010000CA :1077C00056010000460100003501000024010000C0 :1077D0001401000003010000F2000000E1000000BD :1077E000D0000000BF000000AE0000009C000000C0 :1077F0008B0000007A0000006900000057000000C4 :1078000046000000340000002300000011000000CA :1078100000000000EFFFFFFFDDFFFFFFCCFFFFFFD9 :10782000BAFFFFFFA9FFFFFF97FFFFFF86FFFFFFE4 :1078300075FFFFFF64FFFFFF52FFFFFF41FFFFFFE8 :1078400030FFFFFF1FFFFFFF0EFFFFFFFDFEFFFFEB :10785000ECFEFFFFDCFEFFFFCBFEFFFFBAFEFFFFEB :10786000AAFEFFFF9AFEFFFF89FEFFFF79FEFFFFE2 :1078700069FEFFFF59FEFFFF4AFEFFFF3AFEFFFFD2 :107880002BFEFFFF1BFEFFFF0CFEFFFFFDFDFFFFBA :10789000EEFDFFFFDFFDFFFFD1FDFFFFC2FDFFFF9C :1078A000B4FDFFFFA6FDFFFF98FDFFFF8BFDFFFF6F :1078B0007DFDFFFF70FDFFFF63FDFFFF56FDFFFF36 :1078C00049FDFFFF3DFDFFFF31FDFFFF25FDFFFFF0 :1078D00019FDFFFF0DFDFFFF02FDFFFFF7FCFFFF9E :1078E000ECFCFFFFE1FCFFFFD7FCFFFFCDFCFFFF3F :1078F000C3FCFFFFB9FCFFFFB0FCFFFFA7FCFFFFCD :107900009EFCFFFF95FCFFFF8DFCFFFF85FCFFFF4A :107910007DFCFFFF76FCFFFF6EFCFFFF67FCFFFFB7 :1079200061FCFFFF5AFCFFFF54FCFFFF4EFCFFFF12 :1079300049FCFFFF44FCFFFF3FFCFFFF3AFCFFFF59 :1079400036FCFFFF32FCFFFF2EFCFFFF2AFCFFFF8F :1079500027FCFFFF24FCFFFF22FCFFFF1FFCFFFFB3 :107960001DFCFFFF1CFCFFFF1AFCFFFF19FCFFFFC3 :1079700019FCFFFF18FCFFFF18FCFFFF18FCFFFFBE :1079800019FCFFFF19FCFFFF1AFCFFFF1CFCFFFFA7 :107990001DFCFFFF1FFCFFFF22FCFFFF24FCFFFF7D :1079A00027FCFFFF2AFCFFFF2EFCFFFF32FCFFFF3E :1079B00036FCFFFF3AFCFFFF3FFCFFFF44FCFFFFEC :1079C00049FCFFFF4EFCFFFF54FCFFFF5AFCFFFF8A :1079D00061FCFFFF67FCFFFF6EFCFFFF76FCFFFF13 :1079E0007DFCFFFF85FCFFFF8DFCFFFF95FCFFFF8B :1079F0009EFCFFFFA7FCFFFFB0FCFFFFB9FCFFFFF1 :107A0000C3FCFFFFCDFCFFFFD7FCFFFFE1FCFFFF46 :107A1000ECFCFFFFF7FCFFFF02FDFFFF0DFDFFFF8A :107A200019FDFFFF25FDFFFF31FDFFFF3DFDFFFFBE :107A300049FDFFFF56FDFFFF63FDFFFF70FDFFFFE8 :107A40007DFDFFFF8BFDFFFF98FDFFFFA6FDFFFF04 :107A5000B4FDFFFFC2FDFFFFD1FDFFFFDFFDFFFF14 :107A6000EEFDFFFFFDFDFFFF0CFEFFFF1BFEFFFF16 :107A70002BFEFFFF3AFEFFFF4AFEFFFF59FEFFFF0E :107A800069FEFFFF79FEFFFF89FEFFFF9AFEFFFF01 :107A9000AAFEFFFFBAFEFFFFCBFEFFFFDCFEFFFFEB :107AA000ECFEFFFFFDFEFFFF0EFFFFFF1FFFFFFFCE :107AB00030FFFFFF41FFFFFF52FFFFFF64FFFFFFAB :107AC00075FFFFFF86FFFFFF97FFFFFFA9FFFFFF87 :107AD000BAFFFFFFCCFFFFFFDDFFFFFFEFFFFFFF60 :107AE000000000000000000001020304060708096E :107AF0000000000001020304187B0008C000002001 :107B000088010000B0120008487B000848020020ED :107B1000704700005263000801159201C7C20100BE :107B200040420F52010433010101C2014201429758 :107B30000569FFFFFFFFC3102704478000080540C9 :087B4000A560A565631BB700F9 :04000005080010B926 :00000001FF CCT6_TestApp1/MDK-ARM/F030CCT6_TestApp1.uvprojx
@@ -545,9 +545,14 @@ <FilePath>..\Inc\stm32f0xx_it.h</FilePath> </File> <File> <FileName>YDLidar.h</FileName> <FileName>OrdLidar.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\YDLidar.h</FilePath> <FilePath>..\Inc\OrdLidar.h</FilePath> </File> <File> <FileName>LindarPos.h</FileName> <FileType>5</FileType> <FilePath>..\Inc\LindarPos.h</FilePath> </File> </Files> </Group> @@ -590,9 +595,14 @@ <FilePath>..\Src\stm32f0xx_it.c</FilePath> </File> <File> <FileName>YDLidar.c</FileName> <FileName>OrdLidar.c</FileName> <FileType>1</FileType> <FilePath>..\Src\YDLidar.c</FilePath> <FilePath>..\Src\OrdLidar.c</FilePath> </File> <File> <FileName>LidarPos.c</FileName> <FileType>1</FileType> <FilePath>..\Src\LidarPos.c</FilePath> </File> </Files> </Group> @@ -724,6 +734,11 @@ <FileType>1</FileType> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> </File> <File> <FileName>stm32f0xx_ll_flash.c</FileName> <FileType>1</FileType> <FilePath>..\..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_flash.c</FilePath> </File> </Files> </Group> <Group> CCT6_TestApp1/Src/BSP.c
@@ -141,7 +141,7 @@ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_ACR_LATENCY) != HAL_OK) { Error_Handler(); } @@ -718,11 +718,11 @@ PB3 ------> USART3_TX PB4 ------> USART3_RX */ GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_4; GPIO_InitStruct.Pin = LL_GPIO_PIN_10|LL_GPIO_PIN_11; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_NO; GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; GPIO_InitStruct.Alternate = LL_GPIO_AF_4; LL_GPIO_Init(GPIOB, &GPIO_InitStruct); CCT6_TestApp1/Src/LidarPos.c
New file @@ -0,0 +1,94 @@ #include "LindarPos.h" #include "OrdLidar.h" #include "KMachine.h" int ProcessPos(int nLidarIdx, stLidarDot * pLindarDots, int nCount) { int nValidCount0 = nCount; int minDisIndex = 0; int minDistance = 55555; int minZ = 10000; int minZIndex= -1; int planeCount =0; // 最底层平面的点数量。 int firstmin = 1000,firstmax = -1000; int secondmin = 1000, secondmax = -1000; int firstCount=0; int secondCount =0; int midCount =0; results[0]=0; // 求 minZ 和 minDistance; for (int j = 0;j < nValidCount0;j++){ if (pLindarDots[j].distance < 50) continue; // skip too small points; if (pLindarDots[j].y < 40) continue; // skip too small points; if (pLindarDots[j].x < -200 || pLindarDots[j].x > 500) continue; if (pLindarDots[j].y < minZ) { minZIndex = j; minZ = pLindarDots[j].y; } if (pLindarDots[j].distance < minDistance) { minDisIndex = j; minDistance = pLindarDots[j].distance; } } for (int j = nValidCount0 -1 ;j>=0 && minZ < 500;j--) { int x = pLindarDots[j].x; int y = pLindarDots[j].y; int d = pLindarDots[j].distance; if (d < 50) continue; // skip too small points; if (y < 40) continue; // skip too small points; if (x < -200 || x > 500) continue; // 只查找 底部 50mm 数据 //results[0]++; if (y >= minZ + 50) { if ((firstCount >0 && secondCount == 0) || (secondCount >0 && firstCount == 0)) { midCount++; } continue; } if (planeCount < 40) { KMem.WDT[40+2 * planeCount]=d; KMem.WDT[40+2 * planeCount +1 ]=x; } planeCount++; if (x > -200 && x < 500) { if (x < firstmin) firstmin = x; if (x > secondmax) secondmax = x; } // 后沿 if (x > -200 && x < 100 && y < minZ + 40 ) { if (x > firstmax) firstmax = x; firstCount++; } // 前沿 if (x > 200 && x < 500 && y < minZ + 40 ) { if (x < secondmin) secondmin = x; secondCount ++; } } results[0]=planeCount; results[1]=firstCount; results[2]=midCount; results[3]=secondCount; results[4]=firstmin; results[5]=firstmax; results[6]=secondmin; results[7]=secondmax; int avg=0; if (firstCount > 0 && secondCount > 0 && midCount > 0 ){ avg = (secondmin + firstmax) / 2; }else if (planeCount>10) { avg = (firstmin + secondmax) /2; } nPosX = (nPosX *3 + avg) /4; if (minZ < 9999) nPosZ1 = (minZ + nPosZ1 * 3)/4; return 0; } CCT6_TestApp1/Src/OrdLidar.c
New file @@ -0,0 +1,348 @@ #include "OrdLidar.h" #include "KMachine.h" int nPosX; int nPosY; int nPosZ; int nPosZ1,nPosZ2; int pCount1=0; int pCount2=0; int eCount1; int eCount2; int dCount1=0; int dCount2=0; int vCount1=0; int vCount2=0; int results[32]; void Uart3SendPacket(char * str, int len); void Uart5SendPacket(char * str, int len); //正弦表,0 - 360 代表 0 - 2PI,结果0 - 1000 表示0 - 1,表中只有0 - PI/2即1/4周期的数据,其他的数据用对称和镜像得到。 const int SinTable[] = { 0,17,35, 52, 70, 87, 105, 122, 139, 156, 174, 191, 208, 225, 242, 259, 276, 292, 309, 326, 342, 358, 375, 391, 407, 423, 438, 454, 469, 485, 500, 515, 530, 545, 559, 574, 588, 602, 616, 629, 643, 656, 669, 682, 695, 707, 719, 731, 743, 755, 766, 777, 788, 799, 809, 819, 829, 839, 848, 857, 866, 875, 883, 891, 899, 906, 914, 921, 927, 934, 940, 946, 951, 956, 961, 966, 970, 974, 978, 982, 985, 988, 990, 993, 995, 996, 998, 999, 999, 1000, 1000, 1000, 999, 999, 998, 996, 995, 993, 990, 988, 985, 982, 978, 974, 970, 966, 961, 956, 951, 946, 940, 934, 927, 921, 914, 906, 899, 891, 883, 875, 866, 857, 848, 839, 829, 819, 809, 799, 788, 777, 766, 755, 743, 731, 719, 707, 695, 682, 669, 656, 643, 629, 616, 602, 588, 574, 559, 545, 530, 515, 500, 485, 469, 454, 438, 423, 407, 391, 375, 358, 342, 326, 309, 292, 276, 259, 242, 225, 208, 191, 174, 156, 139, 122, 105, 87, 70, 52, 35, 17, 0, -17, -35, -52, -70, -87, -105, -122, -139, -156, -174, -191, -208, -225, -242, -259, -276, -292, -309, -326, -342, -358, -375, -391, -407, -423, -438, -454, -469, -485, -500, -515, -530, -545, -559, -574, -588, -602, -616, -629, -643, -656, -669, -682, -695, -707, -719, -731, -743, -755, -766, -777, -788, -799, -809, -819, -829, -839, -848, -857, -866, -875, -883, -891, -899, -906, -914, -921, -927, -934, -940, -946, -951, -956, -961, -966, -970, -974, -978, -982, -985, -988, -990, -993, -995, -996, -998, -999, -999, -1000, -1000, -1000, -999, -999, -998, -996, -995, -993, -990, -988, -985, -982, -978, -974, -970, -966, -961, -956, -951, -946, -940, -934, -927, -921, -914, -906, -899, -891, -883, -875, -866, -857, -848, -839, -829, -819, -809, -799, -788, -777, -766, -755, -743, -731, -719, -707, -695, -682, -669, -656, -643, -629, -616, -602, -588, -574, -559, -545, -530, -515, -500, -485, -469, -454, -438, -423, -407, -391, -375, -358, -342, -326, -309, -292, -276, -259, -242, -225, -208, -191, -174, -156, -139, -122, -105, -87, -70, -52, -35, -17 }; char StartCMD[2] = { 0xA5,0x60 }; char StopCMD[2] = { 0xA5,0x65 }; int StartAngle; int EndAngle; int OrdLidarStart(int nIdx) { if (nIdx == 0 || nIdx == -1 ) { Uart3SendPacket(StartCMD,sizeof(StartCMD)); } if (nIdx == 1 || nIdx == -1) { Uart5SendPacket(StartCMD,sizeof(StartCMD)); } return 0; }; int OrdLidarStop(int nIdx){ if (nIdx == 0 || nIdx == -1 ) { Uart3SendPacket(StopCMD,sizeof(StopCMD)); } if (nIdx == 1 || nIdx == -1) { Uart5SendPacket(StopCMD,sizeof(StopCMD)); } return 0; }; char startFlag0 = 0; char startFlag1 = 0; #define VALID_DATA_MAX 400 stLidarDot validData0[400]; stLidarDot validData1[400]; int nValidCount0 = 0; int nValidCount1 = 0; #define ORG_SUB_DEGREE 100 #define SUB_DEGREE 64 //64 #define START_DEGREE 110 #define END_DEGREE 250 #define MAX_DISTANCE 500 //mm //整数求SIN值,带线性插值功能, 输入0 - 360*64 为 0 - 2PI,一个周期;输出-1000 至 +1000,代表-1到+1; int sini(int a) { if (a <0) {a += 360 * SUB_DEGREE;} a = a % (360 * SUB_DEGREE); int b; b=a / SUB_DEGREE; int xx = a % SUB_DEGREE; if (b< 90 ) { int d1= SinTable[b ]; int d2 =SinTable[b+1 ]; int d; d = ((SUB_DEGREE-xx) * d1 + xx * d2 ) / SUB_DEGREE; return (d); } else if (b<180 ) { int c; c=180-b; int d1= SinTable[c ]; int d2 =SinTable[c-1 ]; int d; d = ((SUB_DEGREE-xx) * d1 + xx * d2 ) / SUB_DEGREE; return (d); } else if (b<270) { int c; c=b-180; int d1= SinTable[c ]; int d2 =SinTable[c+1 ]; int d; d = ((SUB_DEGREE-xx) * d1 + xx * d2 ) / SUB_DEGREE; return (-d); } else { int c; c=360 -b; int d1= SinTable[c ]; int d2 =SinTable[c-1 ]; int d; d = ((SUB_DEGREE-xx) * d1 + xx * d2 ) / SUB_DEGREE; return (-d); } // return a; } int cosi(int a) { return sini(a+90*SUB_DEGREE); } int OrdLidarParsePkt(int nLidarIdx, OradarLidarFrame * pLindarPkt, int len1) { int iRet = 0; if (pLindarPkt->header != 0x54) return 0; // check for start sign int nDotNum = pLindarPkt->ver_len &0x1f; if (len1 != nDotNum*3 +11) return -1; if (nDotNum<2) return 0; int startAngle = (pLindarPkt->start_angle) * SUB_DEGREE / ORG_SUB_DEGREE; // degree * 100; int endAngle = (pLindarPkt->end_angle ) * SUB_DEGREE / ORG_SUB_DEGREE; // degree * 100; if (startAngle >= endAngle) {eCount1++; return 0;} int diffAngle = (endAngle - startAngle); int eachAngle = diffAngle / (nDotNum - 1); if (nLidarIdx == 0) { pCount1++; for (int i = 0;i < nDotNum && i < 40 ;i++) { unsigned char confidence = pLindarPkt->point[i].confidence; int angle = eachAngle * i + startAngle; // degree * 64 dCount1++; if (angle < START_DEGREE * SUB_DEGREE ) startFlag0 = 1; if (angle >= START_DEGREE * SUB_DEGREE && angle < END_DEGREE * SUB_DEGREE) // &&x>100000&&x<250000) { if (pLindarPkt->point[i].confidence < 30) continue; int value = pLindarPkt->point[i].distance; // distance int x = value * sini(angle )/1000; // mm int z = -value * cosi(angle )/1000; // mm //vectorX.push_back(x); //vectorY.push_back(y); validData0[nValidCount0].distance = value; validData0[nValidCount0].x = x; validData0[nValidCount0].y = z; if (nValidCount0 < VALID_DATA_MAX - 1 ) nValidCount0 ++; //vCount1++; } if (angle > END_DEGREE * SUB_DEGREE) { if (startFlag0 == 1 && nValidCount0 > 0) { vCount1 = nValidCount0; ProcessPos(0,validData0,nValidCount0); } startFlag0 = 0; nValidCount0 = 0; } } } if (nLidarIdx == 1) { pCount2++; for (int i = 0;i < nDotNum && i < 40 ;i++) { unsigned char confidence = pLindarPkt->point[i].confidence; int angle = eachAngle * i + startAngle; dCount2++; if (angle < START_DEGREE * SUB_DEGREE) startFlag1 = 1; if (angle >= START_DEGREE * SUB_DEGREE && angle < END_DEGREE * SUB_DEGREE ) // &&x>100000&&x<250000) { if (confidence < 30) continue; int value = pLindarPkt->point[i].distance; // distance int x = value * sini(angle - 180 * SUB_DEGREE )/1000; // mm int y = value * cosi(angle - 180 * SUB_DEGREE )/1000; // mm //vectorX.push_back(x); //vectorY.push_back(y); validData1[nValidCount1].distance = value; validData1[nValidCount1].x = x; validData1[nValidCount1].y = y; if (nValidCount1 < VALID_DATA_MAX - 1 ) nValidCount1 ++; //vCount2 ++; } if (angle > END_DEGREE * SUB_DEGREE) { if (startFlag1 == 1 && nValidCount1 > 0 ) { vCount2 = nValidCount1; int minDisIndex = 0; int minDistance = 55555; int minZ = 9999; int minZIndex= -1; int planeCount =0; int firstmin =1000, firstmax = -1000; int secondmin = 1000, secondmax = -1000; int firstCount=0; int secondCount =0; int midCount =0; // 求 minZ 和 minDistance; for (int j = 0;j < nValidCount1;j++){ if (validData1[j].distance < 50) continue; // skip too small points; if (validData1[j].y < 40) continue; // skip too small points; if (validData1[j].x < -200 || validData1[j].x > 500) continue; if (validData1[j].y < minZ) { minZIndex = j; minZ = validData1[j].y; } if (validData1[j].distance < minDistance) { minDisIndex = j; minDistance = validData1[j].distance; } } for (int j = 0;j < nValidCount1 && minZ<500;j++) { int x = validData1[j].x; int y = validData1[j].y; int d = validData1[j].distance; if (d < 50) continue; // skip too small points; if (y < 40) continue; // skip too small points; if (x < -200 || x > 500) continue; // 只查找 底部 50mm 数据 if (y > minZ + 50) { if ((firstCount >0 && secondCount ==0) || (secondCount >0 && firstCount ==0)) { midCount++; } continue; } planeCount++; if (x > -200 && x < 500) { if (x < firstmin) firstmin = x; if (x > secondmax) secondmax = x; } // 后沿 if (x > -200 && x < 100) { if (validData1[j].x > firstmax) firstmax =x; firstCount++; } // 前沿 if (x > 200 && x < 500 ) { if (x < secondmin) secondmin = x; secondCount++; } } int avg=0; if (firstCount > 0 && secondCount > 0 && midCount > 0 ){ avg = (secondmin + firstmax) / 2; }else if (planeCount>10) { avg = (firstmin + secondmax) /2; } nPosY = (nPosY *3 + avg) /4; if (minZ < 9999) { nPosZ2 = (minZ + nPosZ2 *3)/4; } else { // results[4]= nValidCount1; // results[5]= minDistance; } // nPosY = validData1[minDisIndex].x /1000; // nPosZ2 = validData1[minDisIndex].x /1000; // nPosZ2 = midcount; } startFlag1 = 0; nValidCount1 = 0; } } } nPosZ = ((nPosZ1 + nPosZ2) + nPosZ *2)/4; // nPosX = pCount1; // nPosY = pCount2; return iRet; } CCT6_TestApp1/Src/SLP.c
@@ -1,7 +1,7 @@ #include "SLP.h" void SLPSendPacket(char * buf, uchar len1); void SLPSendPacket(void * buf, uchar len1); uchar bSLPMaster; uchar nStation; uchar SLPinputB; @@ -20,7 +20,7 @@ uchar SLPOKSign; uchar SLPErrSign; uchar SLPBCC(char * pBuf, uchar len1) uchar SLPBCC(uchar * pBuf, uchar len1) { uchar i; uchar BCC=0; @@ -31,7 +31,7 @@ return BCC; } void SLPparsePacket(char * pRecvBuf, uchar len1) void SLPparsePacket(void * pRecvBuf, uchar len1) { stSLPPacket * pPacket = (stSLPPacket *)pRecvBuf; CCT6_TestApp1/Src/YDLidar.c
@@ -20,7 +20,7 @@ void Uart5SendPacket(char * str, int len); //正弦表,0 - 360 代表 0 - 2PI,结果0 - 1000 表示0 - 1,表中只有0 - PI/2即1/4周期的数据,其他的数据用对称和镜像得到。 int SinTable[] = const int SinTable[] = { 0,17,35, 52, 70, 87, 105, 122, 139, 156, 174, 191, 208, 225, 242, 259, 276, 292, 309, 326, 342, 358, 375, 391, 407, 423, 438, 454, 469, 485, 500, 515, 530, 545, @@ -49,7 +49,7 @@ -423, -407, -391, -375, -358, -342, -326, -309, -292, -276, -259, -242, -225, -208, -191, -174, -156, -139, -122, -105, -87, -70, -52, -35, -17 }; int CosTable[] = const int CosTable[] = { 1000 ,999 ,999 ,998 ,996 ,995 ,993 ,990 ,988 ,985 ,982 ,978 ,974 ,970 ,966 ,961 ,956 ,951 ,946 ,940 ,934 ,927 ,921 ,914 ,906 ,899 ,891 ,883 ,875 ,866 ,857 ,848 @@ -79,7 +79,7 @@ }; unsigned char sintab[256]={ //正弦表,0 - 1024代表 0 - 2PI,结果0 - 255表示0 - 1,表中只有0 - PI/2即1/4周期的数据,其他的数据用对称和镜像得到。 const unsigned char sintab[256]={ //正弦表,0 - 1024代表 0 - 2PI,结果0 - 255表示0 - 1,表中只有0 - PI/2即1/4周期的数据,其他的数据用对称和镜像得到。 0, 1, 3, 4, 6, 7, 9, 10, 12, 14, 15, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 32, 34, 36, 37, 39, 40, 42, 43, 45, 46, 48, 49, 51, 53, 54, 56, 57, 59, 60, 62, 63, 65, 66, 68, 69, 71, 72, 74, 75, 77, 78, 80, 81, 83, 84, 86, 87, 89, 90, 92, 93, 95, 96, 97, 99, 100, 102, 103, 105, 106, 108, 109, 110, 112, 113, 115, 116, 117, 119, 120, 122, 123, 124, @@ -195,7 +195,7 @@ return (-d); } return a; // return a; } int cosi(int a) CCT6_TestApp1/Src/functions.c
@@ -366,7 +366,6 @@ bSPI1RecvDone=1; nSPI1RecvPos=0; bSPI1Recving=0; TriggerPendSV(); } @@ -508,7 +507,7 @@ // Uart1RecvBuf1DataLen=0; } } void Uart6SendPacket(char * str, int len) void Uart6SendPacket(void * str, int len) { memcpy(Uart6TxBuf,str,len); Uart6ToSendLen = len; @@ -516,7 +515,7 @@ LL_USART_EnableIT_TXE(USART6); } void SLPSendPacket(char * str, uchar len) void SLPSendPacket(void * str, uchar len) { Uart6SendPacket(str,len); } CCT6_TestApp1/Src/main.c
@@ -56,14 +56,15 @@ #include "../src/Ethernet/socket.h" #include "../src/Ethernet/loopback.h" #elif (BOARD_TYPE == 14) #include "FP0.h" #include "FPx.h" #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) #include "KWireless.h" //#include "user.h" //#include "../src/radio/inc/sx126x-board.h" #endif #include "SLP.h" #include "YDLidar.h" //#include "YDLidar.h" #include "OrdLidar.h" /* USER CODE END Includes */ @@ -76,8 +77,8 @@ #define TX2BUFSIZE 64 unsigned char Uart1RxBuf[128]; unsigned char Uart1TxBuf[260]; unsigned char Uart1RxBuf[RX1BUFSIZE]; unsigned char Uart1TxBuf[TX1BUFSIZE]; unsigned char Uart2RxBuf[RX2BUFSIZE]; unsigned char Uart2TxBuf[TX2BUFSIZE]; @@ -135,17 +136,51 @@ return; } #define RAM_START_ADDR 0x20000000 void * KBusCallBackFunc(int nChn, int nEvent, void *pBuf, int nLen1) { switch (nEvent){ case KBusEvNone: break; case KBusEvCreate: break; case KBusEvConnected: break; case KBusEvDisConnected: break; case KBusEvClosed: break; case KBusEvStateChange: break; case KBusEvTimeSync: break; case KBusEvDataUpdate: KMem.WY[0]=KBusMem.WLY[0]; //KBus Slave KBusMem.WLX[0]=KMem.WX[0]; KBusMem.WLX[1]=KMem.WX[1]; KBusMem.WLX[2]=KMem.WX[2]; KBusMem.WLX[3]=KMem.WX[3]; break; case KBusEvCmdResponse: break; default: break; } return 0; } //#define RAM_START_ADDR 0x20000000 // SRAM_BASE #define VECTOR_SIZE 46 #define ApplicationAddress 0x08001000 //应用程序首地址定义 /* static void RemapIrqVector(void) { memcpy((void*)RAM_START_ADDR, (void *)ApplicationAddress, VECTOR_SIZE * 4); LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); } */ /* USER CODE END 0 */ /** @@ -172,21 +207,6 @@ /* USER CODE BEGIN Init */ for (int i=0;i<9;i++) { // memset(KBusChnStats[i],0,0); KBusChnStats[i].SendPackets=0; KBusChnStats[i].RecvPackets=0; KBusChnStats[i].LostPackets=0; KBusChnStats[i].CtnLstPkts=0; KBusChnStats[i].MaxCtnLstPkts=0; KBusChnStats[i].NotPkgErr=0; KBusChnStats[i].PkgLenErr=0; KBusChnStats[i].TimeOutErr=0; KBusChnStats[i].BCCErr=0; KBusChnStats[i].Delay=0; KBusChnStats[i].MaxDelay=0; } KMem.LastScanTime=0; KMem.ScanTimeuS=0; @@ -239,13 +259,15 @@ // Uart2Baud = AlterUart2Baud; #if (BOARD_TYPE == 14) KMem.EffJumperSW|=0x10; nStationID=KMem.EffJumperSW&0x0f; if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} nChilds=nStationID; FP0_Init(); FPx_Init(); #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) nStationID=1 ;//KMem.EffJumperSW&0x0f; @@ -259,6 +281,10 @@ else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} #endif KBusInit(2, bKBusMaster, nChilds); KBusSetCallBackFunc(2, &KBusCallBackFunc), nChilds=nStationID; nCurPollId=1; //if (KMem.EffJumperSW == 0x00) @@ -368,7 +394,7 @@ KWireLessStart(); #endif YdLidarStart(-1); OrdLidarStart(-1); while (1) { @@ -410,21 +436,12 @@ a = LL_GPIO_ReadInputPort(GPIOD); KMem.WDT[123]=a; #if (BOARD_TYPE == 14) // KMem.WX[0]= GetInput(); FP0_Proc(); #else KMem.WXB[0]= GetInput(); #endif if (GetBoardType() == 7 || GetBoardType() ==8 || GetBoardType() == 9 || GetBoardType() ==10 || GetBoardType() ==15 || GetBoardType() ==16) { displayInput(KMem.WX[0]); } us2=GetuS(); if (PowerDownEvent) { KMem.WX[0]=0;} ///* // /* if ((KMem.nRunCount &0x1f) == 0x02) { ADCProcess(); @@ -447,13 +464,7 @@ } } } //*/ #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) Radio.IrqProcess( ); // Process Radio IRQ KWL_Process(1); #endif // */ // pProgs = (stBinProg1 *) STORE_PRG_BASE; @@ -481,20 +492,8 @@ if (bKBusMaster) { #if (BOARD_TYPE == 14) for (int i=0;i<nOutputBytes;i++) {BufferOut[i+1]=KMem.WYB[i];} #else // BufferOut[1]=KMem.WX[0]&0xff; // BufferOut[2]=(KMem.WX[0]>>8)&0xff; #endif if (nChilds>0) { KBusMasterFunc(2); } #if (BOARD_TYPE == 14) // KMem.WX[0]=BufferIn[1]+(BufferIn[2]<<8); #else // KMem.WY[0]=BufferIn[1]+(BufferIn[2]<<8); #endif if (nChilds>0) { KBusMasterFunc(2); } } if (haltick&0x00002000) SlowFlicker=1; @@ -504,23 +503,23 @@ if (bKBusSlave) { // BufferOut[0]=KMem.WX[0]; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) // KBusSlaveFunc(2); // if (! KMem.RunStat) {BufferIn[0]=0;} // KMem.WY[0]=BufferIn[0]; #else KBusSlaveFunc(2); if (! KMem.RunStat) {BufferIn[0]=0;} KMem.WLY[0]=BufferIn[0] + (BufferIn[1] <<8); #endif if (! KMem.RunStat) {KBusMem.WLY[0]=0;} KMem.WLY[0]=KBusMem.WLY[0]; if (nSlaveTick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (nSlaveTick&0x00000800) FastFlicker=1; else FastFlicker=0; } KBusMem.WLX[0]=KMem.WX[0]; KMem.WY[0]=KBusMem.WLY[0]; KBusMem.WLX[1]=KMem.WX[1]; KBusMem.WLX[2]=KMem.WX[2]; KBusMem.WLX[3]=KMem.WX[3]; // KMem.WY[0]=nCount2>>5; if (KMem.RunStat) {KMem.RunStat--;} if (KMem.ErrStat) {KMem.ErrStat--;} @@ -564,21 +563,6 @@ us4=GetuS(); // EffJumperSW = GetInput(20)&0xff; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) if ((KMem.EffJumperSW&0x10)==0x10) { KMem.WFY[1]=KMem.WLY[0]; KMem.WLX[0]=KMem.WFX[1]; }else { KMem.WFY[1]=KMem.WX[0]; KMem.WY[0]=KMem.WFX[1]; } // KMem.WY[0]=KMem.WLY[0]; #else KMem.WLX[0]=KMem.WX[0]; KMem.WY[0]=KMem.WLY[0]; #endif us5=GetuS(); @@ -600,16 +584,16 @@ // memcpy(&KMem.SDT[64+nSize/2],&KBusChnStats[2],nSize); // for (int i=0;i<128;i++) { SDT[i]=i; } // SDT[48]=55; if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved) if (Uart1Stat.bPacketRecved && Uart1RecvBuf1DataLen >0) { int res1 = -1; res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); if (res1 !=0) { KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); if (Uart1RecvBuf1[0] == KLSignStart) { res1 = KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); }else { res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); } Uart1RecvBuf1DataLen=0; Uart1Stat.bPacketRecved=0; Uart1RecvBuf1DataLen=0; Uart1IdelTimer = 0; }else { if (Uart1IdelTimer>600000) { // 超过60秒没有数据传输,重新进入自适应波特率状态 @@ -635,17 +619,20 @@ if (Uart3Stat.bPacketRecved){ KMem.WDT[8]++; YdLidarParsePkt(0,(stLidarDotsPkt *)Uart3RxBuf,Uart3RecvBuf1DataLen); OrdLidarParsePkt(0,(OradarLidarFrame *)Uart3RxBuf,Uart3RecvBuf1DataLen); Uart3RecvBuf1DataLen =0; Uart3Stat.bPacketRecved = 0; } KMem.WDT[9]=pCount1; KMem.WDT[10]=dCount1; KMem.WDT[11]=vCount1; KMem.WDT[12] = eCount1; KMem.WDT[13] = eCount2; if (Uart5Stat.bPacketRecved){ KMem.WDT[16]++; YdLidarParsePkt(1,(stLidarDotsPkt *)Uart5RxBuf,Uart5RecvBuf1DataLen); OrdLidarParsePkt(1,(OradarLidarFrame *)Uart5RxBuf,Uart5RecvBuf1DataLen); Uart5RecvBuf1DataLen =0; Uart5Stat.bPacketRecved = 0; } @@ -662,79 +649,25 @@ KMem.WDT[27]=nPosZ1; KMem.WDT[28]=nPosZ2; KMem.WDT[32]=results[0]; KMem.WDT[33]=results[1]; KMem.WDT[34]=results[2]; KMem.WDT[35]=results[3]; KMem.WDT[36]=results[4]; KMem.WDT[37]=results[5]; KMem.WDT[38]=results[6]; KMem.WDT[39]=results[7]; /* if ((KMem.nRunCount&0x7f)==1) { SLPSendPacket("ABCDEF",6); }; */ /* if (!IsEmpty(&Uart1Stat.QRx)) { unsigned char k=PopOne(&Uart1Stat.QRx); if (k=='L') { clearscreen(); } } */ #if (BOARD_TYPE == 14) // PutOutput (KMem.WY[0]); #else PutOutput (KMem.WY[0]); KMem.WX[1] = nPosX ; KMem.WX[2] = nPosY ; KMem.WX[3] = nPosZ; // KMem.WX[1]++ ; // KMem.WX[2]++; #endif #if (BOARD_TYPE == 14) const unsigned int pins[6]= { LL_GPIO_PIN_10,LL_GPIO_PIN_11,LL_GPIO_PIN_12,LL_GPIO_PIN_13,LL_GPIO_PIN_14,LL_GPIO_PIN_15}; //process 6 output { // mapping bits. for (int i=0;i<6;i++) { USHORT bitaddr = storedKMSysCfg.theKMSysCfg.OutMappings[i]; UCHAR type = (bitaddr&0xf000) >>12; USHORT byteaddr = (bitaddr&0x0ff0) >>4; UCHAR bitpos = bitaddr &0x0f; UCHAR bitvalue = 0 ; if (byteaddr>0) { if (type == 0) bitvalue = KMem.WXB[byteaddr-1] & ( 1 << bitpos ); else if (type == 1 ) bitvalue = KMem.WYB[byteaddr-1] & ( 1 << bitpos ); } if (bitvalue){ LL_GPIO_SetOutputPin(GPIOB,pins[i]);} else {LL_GPIO_ResetOutputPin(GPIOB,pins[i]);} } } #endif /* { unsigned char pos,seg; unsigned short val; pos=((KMem.nRunCount)&0x3); //val=(KMem.nRunCount)&0xfff; val=KMem.ErrStat; char buf5[20]; sprintf(buf5,"%4d",val); val=buf5[3-pos]; if (val <'0' || val >'9') {seg=0;} else {seg=LEDSEGTAB[val-'0'];} pos=1<<pos; //pos=1; //seg=2; seg=~seg; // PutOutputSPI1(pos|(seg<<8)); } */ #if (BOARD_TYPE == 13) w5500_network_info_show(); // loopback_tcps(0,str1,5000); #endif PutOutput (KMem.WY[0]); LL_IWDG_ReloadCounter(IWDG); CCT6_TestApp1/Src/stm32f0xx_it.c
@@ -247,18 +247,22 @@ if (LL_USART_IsActiveFlag_RXNE(USART1)) { Uart1BaudGot=1; Uart1BaudFirstGot=1; Uart1Stat.RXNECount++; // Uart1BaudGot=1; // Uart1BaudFirstGot=1; // Uart1Stat.RXNECount++; unsigned char ch=LL_USART_ReceiveData8(USART1); // PushOne(&Uart1Stat.QRx,ch); Uart1Stat.RecvBytes++; Uart1RecvBuf1[Uart1RecvBuf1DataLen++]=ch; Uart1RecvBuf1[Uart1RecvBuf1DataLen]=ch; if (Uart1RecvBuf1DataLen <RX1BUFSIZE -1 ) { Uart1RecvBuf1DataLen++; } //LL_USART_TransmitData8(USART1,ch); } if (LL_USART_IsActiveFlag_ORE(USART1)) { LL_USART_ClearFlag_ORE(USART1); LL_USART_DisableOverrunDetect(USART1); Uart1Stat.OverRunCount++; } if (LL_USART_IsEnabledIT_IDLE(USART1)&&LL_USART_IsActiveFlag_IDLE(USART1)) @@ -294,6 +298,7 @@ if (LL_USART_IsActiveFlag_ORE(USART2)) { LL_USART_ClearFlag_ORE(USART2); LL_USART_DisableOverrunDetect(USART2); Uart2Stat.OverRunCount++; } if (LL_USART_IsEnabledIT_IDLE(USART2)&&LL_USART_IsActiveFlag_IDLE(USART2)) @@ -340,6 +345,7 @@ if (LL_USART_IsActiveFlag_ORE(USART3)) { LL_USART_ClearFlag_ORE(USART3); LL_USART_DisableOverrunDetect(USART3); // Uart3Stat.OverRunCount++; } if (LL_USART_IsEnabledIT_IDLE(USART3)&&LL_USART_IsActiveFlag_IDLE(USART3)) CleanUp2.bat
@@ -1,3 +1,14 @@ REM Remove Temp Keil Files REM ******************************* del /s *.crf del /s *.o del /s *.d del /s *.axf del /s *.sct del /s *.dep del /s *.lnp del /s *.map del /s *.lst del /s *.hex del /s *.uvguix.* ComLib/Inc/KBus.h
@@ -14,61 +14,220 @@ #define KBUS_VER (0x104) #define MAX_CLIENT 16 //最大支持子机数量 //#define SYN_PREFIX 1 typedef unsigned char uchar; typedef volatile unsigned char vuchar; typedef unsigned short ushort; extern unsigned char bKBusMaster,bKBusSlave,bKBusRepeater;; extern unsigned char PacketBuf1[MaxPacketLength]; extern unsigned char PacketBuf2[MaxPacketLength]; extern unsigned char BufferIn[16]; extern unsigned char BufferOut[16]; extern unsigned char nStationID; extern unsigned char nChilds; extern int ChildStat[16]; extern unsigned char nCurPollId; extern unsigned char nSeq; extern volatile unsigned char KBusMasterRecved; extern volatile unsigned char KBusMasterRecvOK; extern volatile unsigned char KBusSlaveRecved; extern unsigned int KBusSendTimeuS; extern volatile int KBusRecvTimeuS; extern int KBusDelayuS; extern int KBusMaxDelayuS; extern volatile unsigned int nSlaveTick; extern stChnStat KBusChnStats[8]; /* static inline char KWInit(int nPortNum) { }; static inline char KWStart(int nPortNum) { }; static inline char KWGetClientNum(int nPortNum) { }; static inline char KWGetClientInfo(int nPortNum, int nClientId) { }; static inline char KWGetClientInCount(int nPortNum,int nClientId) {}; #pragma anon_unions typedef struct tagKBusDef // KBus 工作内存 { uchar bMaster; //KBus, 是否主机 uchar bSlave; //KBus, 是否子机 uchar bRepeater; //KBus, 是否转发器,中继器 uchar nStationId; //KBus 站号 static inline char KWisSafeState(int nPortNum) { }; static inline char KWisRunState(int nPortNum) { }; static inline char KWGetState(int nPortNum) { }; static inline char KWChangeState(int nPortNum, int nNewState){ }; */ vuchar MyStat; //KBus, 状态机状态 vuchar nSeq; //KBus, 包序列号 vuchar bMasterSent; // 状态 主机已发送 vuchar bMasterRecved; // 状态 主机已接收 回包 vuchar bMasterRecvOK; // 状态 主机接收回包正确 vuchar bSlaveRecved; // 状态 子机已接收包 vuchar nChildCount; // 子机数量 uchar nCurPollId; // 当前轮询子机 号 ushort ErrStat; ushort RunStat; int SendTimeuS; // 发包时刻 int RecvTimeuS; // 收包时刻 int DelayuS; // 包循环延迟 int nMaxDelayuS; // 最大包循环延迟 int nSlaveTick; // 子机时间 tick int ThisuS; //volatile unsigned int nSlaveTick; //=0; int Clk3; //=0; int SendTime,Latancy,LatancyClk,SendClk; //volatile int nCount2; //=0; int TimeOutCount; //=0; int LastCircleStartTime; //=0; int CircleTime; //=0; unsigned char KBusBCC(void * pData, int nSize); // KBusSendPktFuncDef KBusSendPacket; // 发送数据包函数指针 KBusEvCBFuncDef KBusEvCBFunc; // 事件回调函数指针 KMSvCBDef KBusSvCBFunc; // 服务请求回调指针 stDeviceInfo* pMyDeviceInfo; uchar RetryCount; // 重试次数 uchar nTimeOutCount; // 超时计数 vuchar step; // 当前步骤 uchar ChildStat[MAX_CLIENT]; // 子机状态(们) uchar CurXBitAddr; // 已分配 X 位 地址 uchar CurYBitAddr; // 已分配 Y 位 地址 uchar CurAIWAddr; // 已分配 模拟量入 字 地址 uchar CurAQWAddr; // 已分配 模拟量出 字 地址 uchar CurDIWAddr; // 已分配 数据入 字 地址 uchar CurDOWAddr; // 已分配 数据出 字 地址 uchar MyYStartBitAddress; // 本机 起始 Y 位地址 uchar MyAQWStartWordAddress; // 本机 起始 模拟量 出 字 地址 uchar MyDWStartWordAddress; // 本机 起始 数据出 字 地址 stDeviceInfo DeviceInfos[MAX_CLIENT]; // 子机信息(们) stClientCfg ClientCfg[MAX_CLIENT]; // 子机配置(们) stChnStat KBusChnStats[MAX_CLIENT]; // uchar bKBusEvCBFuncSet; // 事件回调函数是否已经设置 // uchar bKBusSvCBFuncSet; // 事件回调函数是否已经设置 uchar PacketBuf1[KBMaxPacketLength]; uchar PacketBuf2[KBMaxPacketLength]; unsigned char Datas[128]; volatile int PacketLength; // = 0; unsigned char KBusDiagnosis; // =1; // Kbus 诊断模式 unsigned char KBusSnapPos; // = 0; // 抓取 Kbus 包 // unsigned char nStationID; //=0; // unsigned char nChilds; //int ChildStat[16]; // unsigned char nCurPollId; //=0; // unsigned char nSeq; //=0; unsigned char nClientDataIndex; //=0; }stKBusDef,*pstKBusDef; typedef struct tagKBusMem { union{ ushort WLX[16]; uchar WLXB[32]; }; union{ ushort WLY[16]; uchar WLYB[32]; }; ushort AIW[16]; ushort AOW[16]; ushort DIW[16]; ushort DOW[16]; }stKBusMem, *pstKBusMem; //extern stKBus KBus1; extern stKBusMem KBusMem; typedef struct tagKBusDiag { int Stat; unsigned int SendPackets; unsigned int RecvPackets; unsigned int LastSentTimeuS; unsigned int LostPackets; unsigned int CtnLstPkts; unsigned int MaxCtnLstPkts; unsigned int NotPkgErr; unsigned int PkgLenErr; unsigned int BCCErr; unsigned int TimeOutErr; unsigned int Delay; unsigned int MaxDelay; unsigned int SendTimeInterval; union { unsigned int ClientDatas[10]; struct { unsigned int ClientRecvPkts; // unsigned int ClientSendPkts; // unsigned int ClientNotPktErr; // unsigned int ClientMisIdPkts; // // unsigned int ClientNoEndErr; // unsigned int ClientPkgLenErr; // unsigned int ClientBccErr; // unsigned int ClientTimeOutErr; // }; }; }stKBusDiag, *pstKBusDiag; //extern unsigned char bKBusMaster,bKBusSlave,bKBusRepeater;; //extern unsigned char PacketBuf1[KBMaxPacketLength]; //extern unsigned char PacketBuf2[KBMaxPacketLength]; //extern unsigned char nStationID; //extern unsigned char nChilds; //extern unsigned char nCurPollId; //extern unsigned char nSeq; //extern volatile unsigned char KBusMasterRecved; //extern volatile unsigned char KBusMasterRecvOK; //extern volatile unsigned char KBusSlaveRecved; //extern unsigned int KBusSendTimeuS; //extern volatile int KBusRecvTimeuS; //extern int KBusDelayuS; //extern int KBusMaxDelayuS; int KBusInit(stKBusDef * pKbusDef, KBusSendPktFuncDef KBusSendPacket, int bMaster, int nChildCount); int KBusInitMaster(stKBusDef * pKbusDef, KBusSendPktFuncDef KBusSendPacket, int nChildCount); int KBusInitSlave(stKBusDef * pKbusDef, KBusSendPktFuncDef KBusSendPacket, int nStationId, stDeviceInfo *pClientInfo); int KBusLoadSavedConfig(stKBusDef * pKbusDef); int KBusSetEvCallBackFunc(stKBusDef * pKbusDef, KBusEvCBFuncDef CBFunc); // Set Event CallBack function int KBusSetSvCallBackFunc(stKBusDef * pKbusDef, KMSvCBDef CBFunc); // Set ServiceReq CallBack Function int KBusStart(stKBusDef * pKbusDef) ; int KBusStop(stKBusDef * pKbusDef) ; int KBusDataPoll(stKBusDef * pKbusDef); int KBusLoopProcess(stKBusDef * pKbusDef); int KBusMasterFunc(stKBusDef * pKbusDef); int KBusSlaveFunc(stKBusDef * pKbusDef); int KBusRepeaterFunc(stKBusDef * pKbusDef); /* Make a Packet and return Packet Length */ int KBusMakePacket(pKBPacket p1,uchar Src, uchar Dst, uchar nType, uchar nStatus, uchar DataLen, void *pData ); /* */ int KBusCheckPacket(int nChn, pKBPacket p1, int len1); int KBusCheckPacket(stKBusDef * pKbusDef, pKBPacket p1, int len1); /* */ int KBusParsePacket(int nChn, pKBPacket p1, int Len1); int KBusParsePacket(stKBusDef * pKbusDef, pKBPacket p1, int Len1); /* static inline char KBGetClientNum(int nChn) { }; static inline char KBGetClientInfo(int nChn, int nClientId) { }; static inline char KBGetClientIOCount(int nChn,int nClientId) {}; int KBGetClientStatus(int nChn); static inline char KBisSafeState(int nPortNum) { }; static inline char KBisRunState(int nPortNum) { }; static inline char KBGetState(int nPortNum) { }; static inline char KBChangeState(int nPortNum, int nNewState){ }; */ unsigned char KBusBCC(void * pData, int nSize); // /* int InitMachine(stMachineConfig * pConfig); @@ -87,9 +246,7 @@ int GetStat(void); */ int KBusRepeaterFunc(int nChn); int KBusMasterFunc(int nChn); int KBusSlaveFunc(int nChn); #endif /* __KBUS_H__ */ ComLib/Inc/KBusDefine.h
@@ -15,26 +15,67 @@ typedef unsigned char uchar; enum enKBusStationType enum enKBusStationType // KBus工作类型 { KBNone = 0, KBusMaster = 1, KBusSlave = 2, KBusRepeater = 3, KBNone = 0, // 0,未定义 KBusMaster = 1, // 1,主机 KBusSlave = 2, // 2,子机 KBusRepeater = 3, // 3,转发器,中继器 }; // diagnosis enum enKBusStats { KBusStatIdel, KBusStatConfig, KBusStatRunning, KBusStatError, KBusStatUnInited, // 未初始化状态 KBusStatInited, // 已初始化状态 KBusStatConfig, // 已配置状态 KBusStatReady, // 就绪状态 KBusStatRunning, // 运行状态 KBusStatIdel, // 暂停状态 KBusStatSafe, // 安全状态 KBusStatError, // 错误状态 }; /* enum enKBusStage { KBusStageInit, KBusStageFindChild, KBusStageConfigChild, KBusStagePoll, }; */ enum { KB_SYN = 0x55, KBStartSign='%', KBEndSign=0x0D, KBMaxPacketLength=128, }; enum enCMDs { cmdNone = '0', //Nothing cmdNone = 0x00, //Nothing cmdQuery = 0x01, //Query basic Info cmdQueryRply = 0x81, //Query Info Reply cmdSetCfg = 0x02, // Set Configuration cmdSetCfgRply = 0x82, // Set Configuration Response cmdToRunMode = 0x03, cmdToRunModeRply = 0x83, cmdBroadCastCfg = 0x04, // cmdMuExchgData = 0x05, // cmdMuExchgDataRply = 0x85, // cmdToSafeMode = 0x06, cmdHeartBeat = 0x07, // cmdReHeartBeat = 0x87, // cmdPing = '1', //Ping cmdPingReply = '2', //PingReply cmdRead = '3', //Read @@ -44,7 +85,7 @@ cmdGetVersion = '7', //GetVersion cmdVerInfo = '8', //VersionReply cmdExChgData='A', //ExChangeData, = Wirte + Read cmdUniExChgData='A', //ExChangeData, = Wirte + Read cmdExChgDataReply, //ExchangeData Reply cmdSyncRead='a', //SyncRead @@ -53,69 +94,92 @@ cmdSyncTime, //SyncTime }; enum { SYN = 0x55, StartSign='%', EndSign=0x0D, MaxPacketLength=128, }; typedef struct tagKBusRunStat { unsigned char bMaster; unsigned char nStationID; unsigned char nChildren; unsigned char nCurPollId; unsigned char nSeq; unsigned char bMaster; // 是否主机 unsigned char nStationID; // 子机地址 unsigned char nChildren; // 子机数量 unsigned char nCurPollId; // 当前轮询到的子机 地址。 unsigned char nSeq; // 包序列号 unsigned char bMasterRecved; unsigned char bMasterRecvOK; unsigned char bSlaveRecved; unsigned int nSendTimeuS; unsigned char bMasterRecved; // 状态, 主机已接收到返回的数据包 unsigned char bMasterRecvOK; // 状态, 主机接收到的返回的数据包正确 unsigned char bSlaveRecved; // 状态, 子机接受到数据包。 unsigned int nSendTimeuS; // 数据包发出时刻。 }stKBusRunStat , * pstKBusRunStat; typedef struct tagVerInfo typedef struct tagVerInfo // KBus 版本信息 { unsigned char nMainVer; unsigned char nSubVer; }stVerInfo; typedef struct tagMasterStat typedef struct tagMasterStat // KBus 主机状态? { unsigned int CycleTime; } stMasterStat; typedef struct tagClientInfo typedef struct tagDeviceInfo // KBus 子机基本信息 { unsigned short ClientType; unsigned short ClientVer; unsigned short DeviceType; // 子机类型 unsigned short DeviceVer; // 子机版本 unsigned char InBitCount; // 输入开关量数量 unsigned char OutBitCount; // 输出开关量数量 unsigned char DWStartAddr; // 输出数据字数 unsigned char OutDWCount; // 输出数据字数 unsigned char AIWCount; // 输入模拟量通道(字)数 // 16位为一个字(通道) unsigned char AQWCount; // 输出模拟量通道(字)数 // 16位为一个字(通道) // unsigned char AIBits; // 每通道位数 // 16位以下 // unsigned char AQbits; // 每通道位数 // 16位以下 }stDeviceInfo; typedef struct tagExDeviceInfo // 子机扩展信息 { unsigned short DeviceType; // 子机类型 unsigned short DeviceVer; // 子机版本 unsigned char UID[12]; // 12字节 UUID unsigned char Name[16]; // 16字节 名称 // stVerInfo ClientVer; unsigned char InBitCount; unsigned char InBitCount; unsigned char OutBitCount; unsigned char AICount; unsigned char AIBits; unsigned char AQCount; unsigned char AQbits; unsigned char InDWCount; unsigned char DWStartAddr; unsigned char OutDWCount; unsigned char bOnline; }stClientInfo; unsigned char AIWCount; unsigned char AQWCount; // unsigned char AIBits; // unsigned char AQbits; typedef struct tagClientCfg }stExDeviceInfo; enum enKBusConfigStat { unsigned char nGroup; unsigned char Addr; unsigned char InStartAddrBit; unsigned char OutStartAddrBit; unsigned char InAWStartAddrByte; unsigned char OutAWStartAddrByte; unsigned char InDWStartAddrByte; unsigned char OutDWStartAddrByte; unsigned int KeepOut; //Keep Output when comm err; KBusUnConfiged = 0, KBusDefaultConfiged =1, KBusConfiged = 2, }; typedef struct tagClientCfg // 子机配置 { unsigned char Addr; // 子机地址 unsigned char Configed; // 是否已配置 unsigned char bOnline; //当前在线状态 unsigned char InStartAddrBit; //输入起始位地址 unsigned char OutStartAddrBit; //输出起始位地址 unsigned char AIWStartAddrByte; //模拟入起始字地址 unsigned char AQWStartAddrByte; //模拟出起始字地址 unsigned char DIWStartAddrByte; //数据入起始字地址 unsigned char DOWStartAddrByte; //数据出起始字地址 unsigned char KeepOut; //Keep Output when comm err; }stClientCfg; /* typedef struct ServerStatus { unsigned char Addr; @@ -125,15 +189,15 @@ unsigned short output[16]; }stServerStatus,*pServerStatus; typedef struct tagMachineState */ typedef struct tagMachineState // 本机状态 { unsigned char Addr; unsigned char state; unsigned char InStartAddrBit; unsigned char OutStartAddrBit; unsigned char InDWStartAddrByte; unsigned char OutDWStartAddrByte; unsigned char Addr; // 地址 unsigned char state; //״̬ unsigned char InStartAddrBit; //输入起始位地址 unsigned char OutStartAddrBit; //输出起始位地址 unsigned char InDWStartAddrByte; //字输入起始字地址 unsigned char OutDWStartAddrByte; //字输出起始字地址 }ClientState; @@ -141,32 +205,32 @@ #pragma anon_unions typedef struct tagChnStat { unsigned int Stat; unsigned int SendPackets; unsigned int RecvPackets; unsigned int LastSentTimeuS; unsigned int LostPackets; unsigned int CtnLstPkts; unsigned int MaxCtnLstPkts; unsigned int NotPkgErr; unsigned int PkgLenErr; unsigned int BCCErr; unsigned int TimeOutErr; unsigned int Delay; unsigned int MaxDelay; unsigned int SendTimeInterval; unsigned short Stat; unsigned short SendPackets; unsigned short RecvPackets; unsigned short LastSentTimeuS; unsigned short LostPackets; unsigned short CtnLstPkts; unsigned short MaxCtnLstPkts; unsigned short NotPkgErr; unsigned short PkgLenErr; unsigned short BCCErr; unsigned short TimeOutErr; unsigned short Delay; unsigned short MaxDelay; unsigned short SendTimeInterval; union { unsigned int ClientDatas[10]; unsigned short ClientDatas[10]; struct { unsigned int ClientRecvPkts; // unsigned int ClientSendPkts; // unsigned int ClientNotPktErr; // unsigned int ClientMisIdPkts; // unsigned short ClientRecvPkts; // unsigned short ClientSendPkts; // unsigned short ClientNotPktErr; // unsigned short ClientMisIdPkts; // // unsigned int ClientNoEndErr; // unsigned int ClientPkgLenErr; // unsigned int ClientBccErr; // unsigned int ClientTimeOutErr; // unsigned short ClientPkgLenErr; // unsigned short ClientBccErr; // unsigned short ClientTimeOutErr; // }; }; } stChnStat; @@ -263,6 +327,13 @@ }stKBInfoBlockV1, *pKBInfoBlockV1; enum eResult { S_OK =0, S_ERR=1, S_TIMEOUT=2 } ; /* typedef struct tagKBPacketV10 @@ -305,25 +376,27 @@ unsigned char data[1]; //数据载荷,最末尾是BCC,数据长度为0时,实际也有一个数据。 }stKBPacketV20,* pKBPacketV20; */ typedef void *(*CBFuncDef) (void*, void *, int); //callback func ,prama s is void *,void *,int; return void *; enum eResult { S_OK =0, S_ERR=1, S_TIMEOUT=2 } ; enum enumCallBackEvent { evNone = 0, evCreate = 1, evConnected = 2, evDisConnected = 3, evClosed = 4, KBusEvNone = 0, KBusEvCreate = 1, KBusEvConnected = 2, KBusEvDisConnected = 3, KBusEvClosed = 4, KBusEvStateChange =5, KBusEvTimeSync=6, KBusEvDataUpdate =7, KBusEvCmdResponse = 8, }; typedef int (*KBusSendPktFuncDef) (uchar * pBuf, int nLen); // SendPacket CallBack func for KBus typedef void *(*KBusEvCBFuncDef) (void * , int nEvent, void *, int); //callback func ,prama s is void *,void *,int; return void *; typedef int (*KBusSvCBFuncDef) (void *, int nSvType, int ,void *, int); //Service Req callback func ,param is int ,int, int, void *,int; return int; #endif /* __KBUSDEFINE_H__ */ ComLib/Inc/KLink.h
@@ -31,7 +31,7 @@ enum {KLSignStart='%', //0x25 KLSignReply='U', //0x55 KLSignEnd=0x0D, KLMaxPacketLength=64, KLMaxPacketLength=128, }; enum enKLCMDs { @@ -60,10 +60,10 @@ KLCmdChkPass, KLCmdSetPass, KLCmdEraseAll, KLCmdReadProgram, KLCmdStartProgram, KLCmdWriteProgram, KLCmdFinishProgram, KLCmdReadPLCProgram, KLCmdStartPLCProgram, KLCmdWritePLCProgram, KLCmdFinishPLCProgram, KLCmdRead1Bit = 0x21, //ReadSingleBit KLCmdWrite1Bit = 0x22, //WriteSingleBit @@ -116,7 +116,8 @@ KLCmdMD, KLCmdMG, KLCmdWriteFirmware, KLCmdWriteFirmInfo, KLCmdErrRply=0xEE, //ERRORReply }; @@ -236,6 +237,9 @@ /* */ int KLParsePacket(int nChn, void * pBuf1, int Len1); typedef void *(*KLinkEvCBDef) (int nChn, int nEvent, void *, int); //Event callback func ,prama s is void *,void *,int; return void *; typedef int (*KLinkSvCBDef) (int nChn, int nSvType, int ,void *, int); //Service Req callback func ,param is int ,int, int, void *,int; return int; //int ReadData(void); //int WriteData(void); ComLib/Inc/KMachine.h
@@ -8,36 +8,34 @@ #ifndef __KMACHINE_H__ #define __KMACHINE_H__ #define FLASH_PAGESIZE (0x00000400) //Page Size = 1K #define FACTORY_DATA_BASE (FLASH_BASE + 0x00007C00) //31k //and #define FACTORY_DATA_PAGESIZE (0x00000400) //Page Size = 1K //#define FACTORY_DATA_PAGESIZE (0x00000400) //Page Size = 1K #define FACOTRY_DATA_PAGES 1 // use 1 page(s) #define STORE_PRG_BASE (FLASH_BASE + 0x00008000) //32k //and FLASH_BANK1_END #define STORE_PRG_PAGESIZE (0x00000400) //Page Size = 1K //#define STORE_PRG_PAGESIZE (0x00000400) //Page Size = 1K #define STORE_PRG_PAGES 8 //use 4 pages #define ALT_PRG_BASE (FLASH_BASE + 0x0000A000) //40k //and FLASH_BANK1_END #define ALT_PRG_PAGESIZE (0x00000400) //Page Size = 1K //#define ALT_PRG_PAGESIZE (0x00000400) //Page Size = 1K #define ALT_PRG_PAGES 8 //use 4 pages #define STORE_SYSREG_BASE (FLASH_BASE + 0x0000C000) //48k //and #define STORE_SYSREG_PAGESIZE (0x00000400) //Page Size = 1K //#define STORE_SYSREG_PAGESIZE (0x00000400) //Page Size = 1K #define STORE_SYSREG_PAGES 1 //use 1 pages #define STORE_RUNSTAT_BASE (FLASH_BASE + 0x0000C800) //50k K //and #define STORE_RUNSTAT_PAGESIZE (0x00000400) //Page Size = 1K //#define STORE_RUNSTAT_PAGESIZE (0x00000400) //Page Size = 1K #define STORE_RUNSTAT_PAGES 1 //use 1 pages #define STORE_LOG_BASE (FLASH_BASE + 0x0000D000) //52k and FLASH_BANK1_END #define STORE_LOG_PAGESIZE (0x00000400) //Page Size = 1K //#define STORE_LOG_PAGESIZE (0x00000400) //Page Size = 1K #define STORE_LOG_PAGES 4 //use 4 pages typedef unsigned char uchar; typedef unsigned char UCHAR; typedef unsigned short ushort; typedef unsigned short USHORT; typedef unsigned int UINT; typedef unsigned int uint32_t; @@ -120,6 +118,14 @@ }stFactoryData,* pFactoryData; typedef struct tagNewAppInfoBlock { unsigned short Sign; unsigned short Version; unsigned int Length; unsigned int nCRC; }stNewAppInfoBlock,*pNewAppInfoBlock; enum enStoreCfg { @@ -361,6 +367,8 @@ KLDataTypeWDT = 41 | TYPEDATA, //调试监控数据 KLDataTypeKBD = 51 | TYPEDATA, //KBus 调试数据 KLDataTypeKWLD = 52 | TYPEDATA, //无线调试数据 KLDataTypeNewApp = 61 | TYPEDATA, // New FirmWare KLDataTypeNewAppInfo = 62 | TYPEDATA, // New Firmware Info Block; KLDataTypeTest = 254 | TYPEDATA, }; @@ -508,6 +516,71 @@ }stKMem; // 通信端口, 注册到 KMachine 里, 统一管理 typedef struct tagPortAbility { ushort ChildList:1; ushort AccessChild:1; ushort TranProg:1; ushort TranCfg:1; ushort Diag:1; ushort TranOutBandData:1; ushort Tunnel:1; ushort TranFirmware:1; ushort TranBlink:1; }stPortAbility; enum enServiceReqs { ReqNone, ReqInit, ReqReset, ReqStop, ReqRun, ReqBlink, ReqStartDiag, ReqStopDiag, ReqTransFirmware, ReqTransCfg, ReqTransProg, ReqTransData, ReqTransBlink, ReqTransChild, ReqTransInfo, ReqTransOutBandData, ReqRead1Bit, ReqWrite1Bit, ReqReadBits, ReqWriteBits, ReqReadData, ReqWriteData, ReqRemoteTran, }; // 各端口 互联 通信 typedef int (*CommFunc)(int n , void *, int len1); typedef struct tagPortReg { ushort nType; ushort nVer; // func1 GetInfo; // func2 CommReq; ushort ability; //能力, 获取子机信息等。 }stPortReg; typedef struct tagInterComm { int nId; }stInterComm; extern stKMem KMem; extern const stKMInfoBlock KMInfoBlock; extern const stStoredKMSysCfg KMDefaultSysCfg; @@ -518,8 +591,8 @@ int KMachineInit(void); int ReadFlashMem(void * pBuf, void * pAddrFlash, int nByteSize); int WriteToFlashMemNoErase(void * pBuf, void * pAddrFlash, unsigned int nByteSize); int EraseAndWriteToFlashMem(void * pBuf, void * pAddrFlash, unsigned int nByteSize); int WriteToFlashMemNoErase(void * pBuf, void * pAddrFlash, unsigned int nByteSize); int ReadFactoryData(void * pDatabuf, int nByteCount); int WriteFactoryData(void * pDataBuf, int nByteCount); @@ -537,10 +610,15 @@ int LoadRunStat(pRunStat theRunStat); int SaveRunStat(pRunStat theRunStat); int WriteNewApp(int nProgByteAddr, void *pBuf, int nByteSize); int WriteNewAppInfo(int nProgByteAddr, void *pBuf, int nByteSize); unsigned char GetCoilValue(unsigned char nCoilType, unsigned short nCoilAddr); int SetCoilValue(unsigned char nCoilType, unsigned short nCoilAddr, unsigned char nCoilValue); int GetVarData(int nDataType, int nDataAddr); int SetVarData(int nDataType, int nDataAddr, int nDataValue); #endif /* __KLPROTOCOL_H__ */ typedef int (*KMSvCBDef) (int nChn, int nSvType, int ,void *, int); //Service Req callback func ,param is int ,int, int, void *,int; return int; #endif /* __KMACHINE_H__ */ ComLib/Inc/functions.h
@@ -23,6 +23,21 @@ //extern volatile unsigned int TotalRunTime; //extern volatile unsigned int PwrCount; //开机次数 extern unsigned char SPI1RecvBuf[64]; extern unsigned char SPI1SendBuf[64]; extern volatile unsigned char bSPI1Recving; extern volatile unsigned char bSPI1RecvDone; extern volatile unsigned char nSPI1RecvPos; extern volatile unsigned char nSPI1RecvLenInBuf; extern volatile unsigned char nSPI1ToSendLen; extern volatile unsigned char nSPI1SentLen; extern volatile unsigned char bSPI1Sending; extern volatile unsigned char bSPI1SendDone; typedef unsigned char uint8_t; typedef unsigned char uchar; typedef unsigned short uint16_t; @@ -53,6 +68,8 @@ void Uart2SendDone(void); void Uart2RecvDone(void); int PutStr(char * str1, int len1); int PutStr1(char * str1, int len1); int PutStr2(char * str1, int len1); int SendPacket(int nChn, void * pBuf,int len1); //int SendPacket1(void * pBuf,int len1); //int SendPacket2(pKBPacket p1,int len1); ComLib/Src/BSP.c
@@ -13,7 +13,7 @@ #include "Globaldef.h" #include "Functions.h" #if (BOARD_TYPE == 14) #include "fp0.h" #include "fpx.h" #endif /* ComLib/Src/KBus.c
@@ -9,212 +9,413 @@ #include "string.h" #include "stm32f0xx.h" unsigned char bKBusMaster=0,bKBusSlave=0,bKBusRepeater=0;; //unsigned char bKBusMaster=0,bKBusSlave=0,bKBusRepeater=0;; unsigned char PacketBuf1[128]; unsigned char PacketBuf2[128]; stKBusMem KBusMem; unsigned char BufferIn[16]={0}; unsigned char BufferOut[16]={0}; unsigned char KBusDiagnosis =1; unsigned char KBusSnapPos = 0; stChnStat KBusChnStats[8]; unsigned char nStationID=0; unsigned char nChilds; int ChildStat[16]; unsigned char nCurPollId=0; unsigned char nSeq=0; volatile unsigned char KBusMasterRecved=1; volatile unsigned char KBusMasterRecvOK=1; volatile unsigned char KBusSlaveRecved=1; unsigned int KBusSendTimeuS=0; volatile int KBusRecvTimeuS=0; int KBusDelayuS=0; int KBusMaxDelayuS=0; int ThisuS; volatile unsigned int nSlaveTick=0; int Clk3=0; int SendTime,Latancy,LatancyClk,SendClk; volatile int nCount2=0; int TimeOutCount=0; int LastCircleStartTime=0; int CircleTime=0; unsigned char Datas[128]; volatile int PacketLength = 0; stClientInfo ClientInfo[16]; unsigned char KBusBCC(void * pData, int nSize) int KBusLoadSavedConfig(stKBusDef * pKBus) { unsigned char k; k=0; for (int i=0;i<nSize;i++) { k^=((unsigned char *)pData)[i]; } return k; int iRet=0; return iRet; } int KBusMakePacket(pKBPacket p1,unsigned char src, uchar dst, uchar nType,unsigned char nStatus, unsigned char DataLen,void * pData ) int KBusSaveConfig(int nChn) { p1->Sign=StartSign; p1->DstHost=dst; p1->SrcAddr=src; p1->nCMD=nType; p1->nStatus=nStatus; int PacketLenth=0; switch (nType) int iRet=0; return iRet; } int KBusInitMaster(stKBusDef * pKBus,KBusSendPktFuncDef KBusSendPacket, int nChildCount) { int iRet =0; pKBus->MyStat = KBusStatInited; pKBus->bMaster = 1; pKBus->bSlave = 0; pKBus->bRepeater =0; pKBus->nChildCount = nChildCount; pKBus->nStationId = 0; pKBus->KBusEvCBFunc=0; memset(pKBus->KBusChnStats,0,sizeof(pKBus->KBusChnStats)); pKBus->KBusEvCBFunc=NULL; pKBus->KBusSvCBFunc=NULL; pKBus->KBusSendPacket = KBusSendPacket; pKBus->nCurPollId = 1; return iRet; }; int KBusInitSlave(stKBusDef * pKBus,KBusSendPktFuncDef KBusSendPacket, int nStationId, stDeviceInfo * pDeviceInfo) { int iRet =0; pKBus->MyStat = KBusStatInited; pKBus->bMaster = 0; pKBus->bSlave = 1; pKBus->bRepeater = 0; pKBus->nChildCount = 0; pKBus->nStationId = nStationId; pKBus->pMyDeviceInfo = pDeviceInfo; pKBus->KBusEvCBFunc = NULL; pKBus->KBusSvCBFunc=NULL; pKBus->KBusSendPacket = KBusSendPacket; for (int i=0;i<MAX_CLIENT;i++) { case cmdNone: break; case cmdPing: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; memset(&pKBus->KBusChnStats[i],0,sizeof(stChnStat)); } return iRet; } int KBusInit(stKBusDef * pKBus,KBusSendPktFuncDef KBusSendPacket, int bMaster, int nChildCount) { int iRet =0; pKBus->MyStat = KBusStatInited; if (bMaster ) { KBusInitMaster(pKBus,KBusSendPacket,nChildCount); }else { KBusInitSlave(pKBus,KBusSendPacket,nChildCount,0); } // memset(pKBus->KBusChnStats,0,sizeof(pKBus->KBusChnStats)); return iRet; } int KBusSetEvCallBackFunc(stKBusDef * pKBus, KBusEvCBFuncDef CBFunc) { pKBus->KBusEvCBFunc = CBFunc; // pKBus->bKBusEvCBFuncSet=1; return 0; } int KBusStart(stKBusDef * pKBus) { int iRet = 0; return iRet; } int KBusLoopProcess(stKBusDef * pKBus) { int iRet = 0; if (pKBus->bMaster) { } if (pKBus->bSlave) { } if (pKBus->bRepeater) { } return iRet; } int KBusRepeaterFunc(stKBusDef * pKBus) { if ((KMem.nRunCount &0x7f) == 88) { ToggleRunLed(); } return 0; } int KBusUpdateChildInfo(stKBusDef * pKBus, int nCild, stDeviceInfo * pInfoBlock) { stDeviceInfo * pDeviceInfo = &pKBus->DeviceInfos[nCild]; pDeviceInfo->DeviceType = pInfoBlock->DeviceType; pDeviceInfo->DeviceVer = pInfoBlock->DeviceVer; pDeviceInfo->InBitCount = pInfoBlock->InBitCount; pDeviceInfo->OutBitCount = pInfoBlock->OutBitCount ; pDeviceInfo->AIWCount = pInfoBlock->AIWCount; pDeviceInfo->AQWCount = pInfoBlock->AQWCount; pDeviceInfo->DWStartAddr = pInfoBlock->DWStartAddr; pDeviceInfo->OutDWCount = pInfoBlock->OutDWCount; return 0; } int KBusMakeDefaultClildInfo(stKBusDef * pKBus, int nCild) { unsigned DefaultInBitCount = 8; unsigned DefaultOutBitCount = 8; stDeviceInfo * pDeviceInfo = &pKBus->DeviceInfos[nCild]; pDeviceInfo->DeviceType = 0; pDeviceInfo->DeviceVer = 0; pDeviceInfo->InBitCount = DefaultInBitCount; pDeviceInfo->OutBitCount = DefaultOutBitCount; pDeviceInfo->AIWCount = 0; pDeviceInfo->AQWCount = 0; pDeviceInfo->DWStartAddr = 0; pDeviceInfo->OutDWCount = 0; return 0; } //int KBusSetChildCfg(int nChn, int nChild, ) int KBusAddChildAddrByInfo(stKBusDef * pKBus, int nChild, stDeviceInfo * pDeviceInfo) { int iRet = 0; stClientCfg * pClientCfg = &pKBus->ClientCfg[nChild]; pClientCfg->Addr = pKBus->nCurPollId; pClientCfg->Configed = KBusConfiged; pClientCfg->InStartAddrBit = pKBus->CurXBitAddr; pClientCfg->OutStartAddrBit = pKBus->CurYBitAddr; pClientCfg->AIWStartAddrByte = pKBus->CurAIWAddr; pClientCfg->AQWStartAddrByte = pKBus->CurAQWAddr; pClientCfg->DIWStartAddrByte = pKBus->CurDIWAddr; pClientCfg->DOWStartAddrByte = pKBus->CurDOWAddr; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdPingReply: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdRead: break; case cmdReadReply: break; case cmdWrite: break; case cmdWriteReply: p1->DataLen=DataLen; if (DataLen !=0 ) memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdGetVersion: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdVerInfo: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdExChgData: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdExChgDataReply: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; pKBus->CurXBitAddr += pDeviceInfo->InBitCount; pKBus->CurYBitAddr += pDeviceInfo->OutBitCount; pKBus->CurAIWAddr += pDeviceInfo->AIWCount; pKBus->CurAQWAddr += pDeviceInfo->AQWCount; return iRet; } int KBusSearchChildProc(stKBusDef * pKBus) { int iRet = 0; uint32_t tick1=HAL_GetTick(); uint32_t thisuS=GetuS(); pKBus->MyStat = KBusStatReady; return iRet; if (!pKBus->bMasterSent) { // Sent Query Packet for CurPollId; //pKBus->nCurPollId; pKBus->bMasterSent=1; pKBus->SendTimeuS = thisuS; } if (pKBus->bMasterSent) { if (pKBus->bMasterRecved) { } if (!pKBus->bMasterRecved && thisuS- pKBus->SendTimeuS > 1000) { // timeOut, pKBus->bMasterSent=0; // no wait any more; if (pKBus->RetryCount <3) { // resent query packet for curPollId; pKBus->bMasterSent=1; pKBus->SendTimeuS = thisuS; } if (pKBus->RetryCount >3 ) { // Set Cur Child As Default KBusMakeDefaultClildInfo(pKBus,pKBus->nCurPollId); KBusAddChildAddrByInfo(pKBus,pKBus->nCurPollId,&pKBus->DeviceInfos[pKBus->nCurPollId]); case cmdSyncRead: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; // Next Child; pKBus->nCurPollId++; if (pKBus->nCurPollId > pKBus->nChildCount) { // all query done, next stage pKBus->MyStat = KBusStatReady; // CallBack if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvStateChange,0,0); } } } } return iRet; } int KBusMasterFunc(stKBusDef * pKBus) { switch (pKBus->MyStat){ case KBusStatUnInited: KBusLoadSavedConfig(pKBus); pKBus->MyStat = KBusStatInited; break; case cmdSyncWrite: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; case KBusStatInited: pKBus->MyStat = KBusStatConfig; break; case cmdSequenRead: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdSyncTime: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=EndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; case KBusStatConfig: KBusSearchChildProc(pKBus); break; case KBusStatReady: pKBus->MyStat = KBusStatRunning; break; case KBusStatRunning: KBusDataPoll(pKBus); break; default: break; } return PacketLenth; return 0; } int KBusCheckPacket(int nChn, pKBPacket p1, int nLen1) int KBusDataPoll(stKBusDef * pKBus) { int iRet = 0; uint32_t tick1=HAL_GetTick(); uint32_t thisuS=GetuS(); int len1=0; int nThisPollId = pKBus->nCurPollId; stChnStat * pChnStat = &pKBus->KBusChnStats[nThisPollId]; if ((pKBus->bMasterRecved && pKBus->bMasterRecvOK && thisuS-pKBus->SendTimeuS>50) || thisuS-pKBus->SendTimeuS>1000u) { if (!pKBus->bMasterRecvOK) { pKBus->TimeOutCount++; Uart2Stat.TimeOutErr++; pChnStat->LostPackets++; pChnStat->CtnLstPkts++; if (!pKBus->bMasterRecved) {pChnStat->TimeOutErr++;} if (pChnStat->CtnLstPkts > pChnStat->MaxCtnLstPkts) {pChnStat->MaxCtnLstPkts = pChnStat->CtnLstPkts;} if (pChnStat->CtnLstPkts>3) { pChnStat->Stat = 0; pKBus->ErrStat=200; KBusMem.WLXB[nThisPollId]=0; if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvStateChange,0,0); if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvDataUpdate,0,0); } // LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7); }else { pChnStat->Stat=1; pKBus->RunStat=100; } if (pKBus->DeviceInfos[nThisPollId].InBitCount >8 || pKBus->DeviceInfos[nThisPollId].OutBitCount > 8) { //nThisPollId += 2; nThisPollId ++; }else { nThisPollId ++; } if (nThisPollId > pKBus->nChildCount) { // 数据轮询完, 周期间隙,插入其他处理数据. 每次处理的时间间隙, 一问 一答 时间. // 分成几种类型, 轮流进行 // 时间同步, 查询新子机, 处理带外数据, ,处理额外的事情, 或者跳过. pKBus->CircleTime=thisuS-pKBus->LastCircleStartTime; pKBus->LastCircleStartTime=thisuS; pKBus->nSeq++; nThisPollId=1; } pKBus->nCurPollId = nThisPollId; pKBus->Datas[0]=KBusMem.WLYB[nThisPollId -1 ]; pKBus->Datas[1]=KBusMem.WLYB[nThisPollId ];; pKBus->Datas[2]=KBusMem.WLYB[nThisPollId + 1 ]; //KBusChnStats[nCurPollId].Stat; pKBus->Datas[3]=KBusMem.WLYB[nThisPollId + 2 ]; pKBus->Datas[4]=tick1&0xff; pKBus->Datas[5]=(tick1>>8)&0xff; pKBus->Datas[6]=(tick1>>16)&0xff; pKBus->Datas[7]=(tick1>>24)&0xff; pKBus->SendTimeuS=thisuS; unStatus nStatus; nStatus.nSeq = pKBus->nSeq; nStatus.nErr1 = (pKBus->KBusChnStats[nThisPollId].Stat==0); len1=KBusMakePacket((pKBPacket)pKBus->PacketBuf1,0,nThisPollId,cmdUniExChgData,nStatus.nStatus,8,pKBus->Datas); // LL_USART_SetBaudRate(USART2,48000000,LL_USART_OVERSAMPLING_8,DefaultUart2Baud); pKBus->KBusSendPacket(pKBus->PacketBuf1, len1); pKBus->KBusChnStats[pKBus->nCurPollId].SendPackets++; pKBus->KBusChnStats[pKBus->nCurPollId].SendTimeInterval=pKBus->SendTimeuS-pKBus->KBusChnStats[pKBus->nCurPollId].LastSentTimeuS; pKBus->KBusChnStats[pKBus->nCurPollId].LastSentTimeuS=pKBus->SendTimeuS; // PacketLength = len1; pKBus->SendTime=tick1; pKBus->bMasterRecved=0; pKBus->bMasterRecvOK=0; // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5); //ToggleErrLed(); // ToggleOut8(); } return iRet; } int KBusSlaveFunc(stKBusDef * pKBus) { int ThisuS=GetuS(); int thisRecvTime=pKBus->RecvTimeuS; if (pKBus->nStationId >0) { if (pKBus->bSlaveRecved) { pKBus->RunStat=8000; pKBus->bSlaveRecved=0; }else if ((ThisuS - thisRecvTime) >12000u) { pKBus->ErrStat=8000; }else if ( ThisuS > (thisRecvTime + 12000u)) { pKBus->ErrStat=8000; } } return 0; } int KBusCheckPacket(stKBusDef * pKBus, pKBPacket p1, int nLen1) { unsigned char * p2 = (unsigned char *)p1; pKBPacket p3=p1; if ((p2[0] == SYN || p2[0] != StartSign) && nLen1 > 1) if ((p2[0] == KB_SYN || p2[0] != KBStartSign) && nLen1 > 1) { p3=(pKBPacket)(p2+1); nLen1--; } if (p3->Sign != StartSign) if (p3->Sign != KBStartSign) { Uart2Stat.NotPacketErr++; KBusChnStats[nCurPollId].NotPkgErr++; if (KBusDiagnosis) { if (KBusSnapPos == 0) { pKBus->KBusChnStats[pKBus->nCurPollId].NotPkgErr++; if (pKBus->KBusDiagnosis) { if (pKBus->KBusSnapPos == 0) { KMem.WDB[0x20]=nLen1; memcpy(&KMem.WDB[0x21],p1,nLen1); KBusSnapPos++; } else if (KBusSnapPos==1) { pKBus->KBusSnapPos++; } else if (pKBus->KBusSnapPos==1) { KMem.WDB[0x40]=nLen1; memcpy(&KMem.WDB[0x41],p1,nLen1); KBusSnapPos++; pKBus->KBusSnapPos++; } else { KMem.WDB[0x60]=nLen1; memcpy(&KMem.WDB[0x61],p1,nLen1); KBusSnapPos=0; pKBus->KBusSnapPos=0; } } return -1; } int DataLen=p3->DataLen; if (DataLen>MaxPacketLength) if (DataLen>KBMaxPacketLength) { Uart2Stat.LengthErr++; KBusChnStats[nCurPollId].PkgLenErr++; pKBus->KBusChnStats[pKBus->nCurPollId].PkgLenErr++; return -1; } if (nLen1<DataLen+sizeof(stKBPacket)+1) { //len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stKBPacket)); //PutStr(str3,len4); KBusChnStats[nCurPollId].PkgLenErr++; pKBus->KBusChnStats[pKBus->nCurPollId].PkgLenErr++; Uart2Stat.LengthErr++; return -3; //not long enough } @@ -228,40 +429,40 @@ if (thisBCC != p3->data[DataLen]) {//BCC Error; Uart2Stat.BCCerr++; KBusChnStats[nCurPollId].BCCErr++; pKBus->KBusChnStats[pKBus->nCurPollId].BCCErr++; return -4; } return 0; } int KBusSlaveCheckPacket(int nChn, pKBPacket p1, int nLen1) int KBusSlaveCheckPacket(stKBusDef * pKBus, pKBPacket p1, int nLen1) { unsigned char * p2 = (unsigned char *)p1; pKBPacket p3=p1; if ((p2[0] == SYN || p2[0] != StartSign) && nLen1 > 1) if ((p2[0] == KB_SYN || p2[0] != KBStartSign) && nLen1 > 1) { p3=(pKBPacket)(p2+1); nLen1--; } if (p3->Sign != StartSign) if (p3->Sign != KBStartSign) { Uart2Stat.NotPacketErr++; KBusChnStats[0].ClientNotPktErr++; pKBus->KBusChnStats[0].ClientNotPktErr++; return -1; } int DataLen=p3->DataLen; if (DataLen>MaxPacketLength) if (DataLen>KBMaxPacketLength) { Uart2Stat.LengthErr++; KBusChnStats[0].ClientPkgLenErr++; pKBus->KBusChnStats[0].ClientPkgLenErr++; return -1; } if (nLen1<DataLen+sizeof(stKBPacket)+1) { //len4=sprintf(str3,"%d < %d + %d \r\n",len2,DataLen,sizeof(stKBPacket)); //PutStr(str3,len4); KBusChnStats[0].ClientPkgLenErr++; pKBus->KBusChnStats[0].ClientPkgLenErr++; Uart2Stat.LengthErr++; return -3; //not long enough } @@ -275,52 +476,69 @@ if (thisBCC != p3->data[DataLen]) {//BCC Error; Uart2Stat.BCCerr++; KBusChnStats[0].ClientBccErr++; pKBus->KBusChnStats[0].ClientBccErr++; return -4; } return 0; } int KBusMasterParsePacket(int nChn, pKBPacket p1, int Len1) int KBusMasterParsePacket(stKBusDef * pKBus, pKBPacket p1, int Len1) { unsigned char * p6 = (unsigned char *)p1; if ((p6[0] == SYN || p6[0] != StartSign) && Len1 > 1) if ((p6[0] == KB_SYN || p6[0] != KBStartSign) && Len1 > 1) { p1=(pKBPacket)(p6+1); Len1--; } int DataLen=p1->DataLen; KBusChnStats[nCurPollId].RecvPackets++; pKBPacket p2=(pKBPacket)PacketBuf2; int PacketLen=0; pKBus->KBusChnStats[pKBus->nCurPollId].RecvPackets++; // pKBPacket p2=(pKBPacket)PacketBuf2; // int PacketLen=0; //LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_6); int nCurPollId = pKBus->nCurPollId; int ChildId=p1->SrcAddr; int ThisuS = GetuS(); unsigned char nIndex; switch (p1->nCMD) { case cmdNone: break; case cmdQueryRply: DataLen=sizeof(stDeviceInfo); KBusUpdateChildInfo(pKBus,pKBus->nCurPollId,(stDeviceInfo *)&p1->data[0]); pKBus->KBusChnStats[0].ClientSendPkts++; break; case cmdSetCfgRply: break; case cmdToRunModeRply: break; case cmdBroadCastCfg: break; case cmdMuExchgDataRply: break; case cmdToSafeMode: break; case cmdReHeartBeat: break; case cmdPing: BufferIn[ChildId]=p1->data[0]; PacketLen=KBusMakePacket(p2,0,nCurPollId,cmdPingReply,p1->nStatus,DataLen,p1->data); SendPacket(nChn, p2, PacketLen); break; case cmdPingReply: KBusDelayuS=ThisuS-KBusSendTimeuS; if (KBusDelayuS > KBusMaxDelayuS) KBusMaxDelayuS = KBusDelayuS; pKBus->DelayuS=ThisuS-pKBus->SendTimeuS; if (pKBus->DelayuS > pKBus->nMaxDelayuS) pKBus->nMaxDelayuS = pKBus->DelayuS; BufferIn[ChildId]=p1->data[0]; KBusMem.WLXB[ChildId]=p1->data[0]; //RunStat=100; KBusChnStats[nCurPollId].CtnLstPkts=0; KBusChnStats[nCurPollId].Delay=KBusDelayuS; if (KBusDelayuS > KBusChnStats[nCurPollId].MaxDelay) KBusChnStats[nCurPollId].MaxDelay=KBusDelayuS; pKBus->KBusChnStats[pKBus->nCurPollId].CtnLstPkts=0; pKBus->KBusChnStats[pKBus->nCurPollId].Delay=pKBus->DelayuS; if (pKBus->DelayuS > pKBus->KBusChnStats[pKBus->nCurPollId].MaxDelay) pKBus->KBusChnStats[pKBus->nCurPollId].MaxDelay=pKBus->DelayuS; //PutOutput(outputvalue); KBusMasterRecvOK=1; pKBus->bMasterRecvOK=1; break; case cmdRead: break; @@ -329,58 +547,42 @@ case cmdWrite: break; case cmdWriteReply: KBusMasterRecved=1; pKBus->bMasterRecved=1; break; case cmdGetVersion: break; case cmdVerInfo: break; case cmdExChgData: BufferIn[0]=p1->data[0]; //PutOutput(outputvalue); //memcpy(DispBuf,p1->data+2,8); p1->data[0]=BufferOut[0]; PacketLen=KBusMakePacket(p2,nStationID,0,cmdExChgDataReply,p1->nStatus,DataLen,p1->data); SendPacket(nChn, p2, PacketLen); case cmdUniExChgData: break; case cmdExChgDataReply: KBusDelayuS=ThisuS-KBusSendTimeuS; if (KBusDelayuS > KBusMaxDelayuS) KBusMaxDelayuS = KBusDelayuS; pKBus->DelayuS=ThisuS-pKBus->SendTimeuS; if (pKBus->DelayuS > pKBus->nMaxDelayuS) pKBus->nMaxDelayuS = pKBus->DelayuS; #if (BOARD_TYPE == 14) BufferIn[ChildId]=p1->data[0]; BufferIn[ChildId + 1] = p1->data[1]; BufferIn[ChildId + 2 ] = p1->data[2]; KBusMem.WLXB[ChildId-1]=p1->data[0];; KBusMem.WLXB[ChildId ]=p1->data[1]; KBusMem.WLXB[ChildId+1]=p1->data[2]; KBusMem.WLXB[ChildId+2]=p1->data[3];; KBusMem.WLXB[ChildId+3]=p1->data[4]; KBusMem.WLXB[ChildId+4]=p1->data[5]; KBusMem.WLXB[ChildId+5]=p1->data[6]; KBusMem.WLXB[ChildId+6]=p1->data[7]; KMem.WXB[ChildId-1]=BufferIn[ChildId]; KMem.WXB[ChildId]=BufferIn[ChildId+1]; KMem.WXB[ChildId+1]=BufferIn[ChildId+2]; if (KMRunStat.WorkMode==0) { // KMem.WY[0]= KMem.WX[1]+(KMem.WX[2]<<8) ; // PutOutput (KMem.WY[0]); } #else BufferIn[ChildId]=p1->data[0]; KMem.WLX[ChildId]=BufferIn[ChildId]; if (KMRunStat.WorkMode==0) { KMem.WY[0]= KMem.WLX[1]+(KMem.WLX[2]<<8) ; PutOutput (KMem.WY[0]); } #endif //Call Back if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvDataUpdate,0,0); //RunStat=100; KBusChnStats[nCurPollId].CtnLstPkts=0; KBusChnStats[nCurPollId].Delay=KBusDelayuS; if (KBusDelayuS > KBusChnStats[nCurPollId].MaxDelay) KBusChnStats[nCurPollId].MaxDelay=KBusDelayuS; pKBus->KBusChnStats[nCurPollId].CtnLstPkts=0; pKBus->KBusChnStats[nCurPollId].Delay=pKBus->DelayuS; if (pKBus->DelayuS > pKBus->KBusChnStats[nCurPollId].MaxDelay) pKBus->KBusChnStats[nCurPollId].MaxDelay=pKBus->DelayuS; //PutOutput(outputvalue); nIndex=p1->data[3]; KBusChnStats[nCurPollId].ClientDatas[nIndex]=p1->data[4]|(p1->data[5]<<8)|(p1->data[6]<<16)|(p1->data[7]<<24); KBusMasterRecvOK=1; if (DataLen>=14) { nIndex=p1->data[9]; pKBus->KBusChnStats[nCurPollId].ClientDatas[nIndex]=p1->data[10]|(p1->data[11]<<8)|(p1->data[12]<<16)|(p1->data[13]<<24); } pKBus->bMasterRecvOK=1; break; @@ -395,11 +597,10 @@ return 0; } unsigned char nClientDataIndex=0; int KBusSlaveParsePacket(int nChn, pKBPacket p1, int Len1) int KBusSlaveParsePacket(stKBusDef * pKBus, pKBPacket p1, int Len1) { unsigned char * p3 = (unsigned char *)p1; if (p3[0] == SYN && Len1 > 1) if (p3[0] == KB_SYN && Len1 > 1) { p1=(pKBPacket)(p3+1); Len1--; @@ -413,32 +614,52 @@ // KBusRecvTimeuS=ThisuS; // KBusSlaveRecved=1; pKBPacket p2=(pKBPacket)PacketBuf2; pKBPacket p2=(pKBPacket)pKBus->PacketBuf2; int PacketLen=0; unsigned char nIndex;// = p1->nStatus & 0x07; if (nDstHost!=nStationID && nDstHost != 0xff) if (nDstHost!=pKBus->nStationId && nDstHost != 0xff) { KBusChnStats[0].ClientMisIdPkts++; pKBus->KBusChnStats[0].ClientMisIdPkts++; return -1; } if (nDstHost==nStationID || nDstHost==0xff) int ThisuS = GetuS(); if (nDstHost==pKBus->nStationId || nDstHost==0xff) { KBusRecvTimeuS=ThisuS; KBusSlaveRecved=1; pKBus->RecvTimeuS=ThisuS; pKBus->bSlaveRecved=1; switch (p1->nCMD) { case cmdNone: break; case cmdQuery: DataLen=sizeof(stDeviceInfo); PacketLen=KBusMakePacket(p2,pKBus->nStationId,0,cmdQueryRply,p1->nStatus,DataLen,pKBus->pMyDeviceInfo); pKBus->KBusChnStats[0].ClientSendPkts++; pKBus->KBusSendPacket((uchar *)p2, PacketLen); break; case cmdSetCfg: break; case cmdToRunMode: break; case cmdBroadCastCfg: break; case cmdMuExchgData: break; case cmdToSafeMode: break; case cmdHeartBeat: break; case cmdPing: BufferIn[0]=p1->data[0]; KBusMem.WLYB[0]=p1->data[0]; //PutOutput(outputvalue); //memcpy(DispBuf,p1->data+2,8); p1->data[0]=BufferOut[0]; KBusRecvTimeuS=ThisuS; PacketLen=KBusMakePacket(p2,nStationID,0,cmdPingReply,p1->nStatus,DataLen,p1->data); KBusChnStats[0].ClientSendPkts++; SendPacket(nChn, p2, PacketLen); p1->data[0]=KBusMem.WLXB[0]; pKBus->RecvTimeuS=ThisuS; PacketLen=KBusMakePacket(p2,pKBus->nStationId,0,cmdPingReply,p1->nStatus,DataLen,p1->data); pKBus->KBusChnStats[0].ClientSendPkts++; pKBus->KBusSendPacket((uchar *)p2, PacketLen); break; case cmdPingReply: break; @@ -449,8 +670,8 @@ case cmdWrite: //memcpy(DispBuf,p1->data,DataLen); PacketLen=KBusMakePacket(p2,1,0,cmdWriteReply,p1->nStatus,0,0); KBusChnStats[0].ClientSendPkts++; SendPacket(nChn, p2, PacketLen); pKBus->KBusChnStats[0].ClientSendPkts++; pKBus->KBusSendPacket((uchar *)p2, PacketLen); break; case cmdWriteReply: break; @@ -458,47 +679,42 @@ break; case cmdVerInfo: break; case cmdExChgData: BufferIn[0]=p1->data[0]; BufferIn[1]=p1->data[1]; // KMem.WLYB[1] = BufferIn[1]; KMem.WYB[1] = BufferIn[1]; nSlaveTick=p1->data[4]+(p1->data[5]<<8);//+(p1->data[6]<<16)+(p1->data[7]<<24); #if (BOARD_TYPE == 14) // PutOutput(BufferIn[0]); //PutOutput(outputvalue); //memcpy(DispBuf,p1->data+2,8); nIndex=nClientDataIndex; // KBusChnStats[0].ClientDatas[7]++; // BufferOut[0]=GetInput(); // BufferOut[0]=GetInput(); #else PutOutput(BufferIn[0]); //PutOutput(outputvalue); //memcpy(DispBuf,p1->data+2,8); nIndex=nClientDataIndex; // KBusChnStats[0].ClientDatas[7]++; // BufferOut[0]=GetInput(); BufferOut[0]=GetInput(); BufferOut[1]=KMem.WXB[1]; #endif p1->data[0]=BufferOut[0]; p1->data[1]=BufferOut[1]; p1->data[3]=nIndex; p1->data[4]=KBusChnStats[0].ClientDatas[nIndex]; p1->data[5]=KBusChnStats[0].ClientDatas[nIndex]>>8; p1->data[6]=KBusChnStats[0].ClientDatas[nIndex]>>16; p1->data[7]=KBusChnStats[0].ClientDatas[nIndex]>>24; nClientDataIndex++; if (nClientDataIndex >= 10) { nClientDataIndex=0;} case cmdUniExChgData: KBusMem.WLYB[0]=p1->data[0]; KBusMem.WLYB[1]=p1->data[1]; KBusMem.WLYB[2]=p1->data[2]; KBusMem.WLYB[3]=p1->data[3]; pKBus->nSlaveTick=p1->data[4]+(p1->data[5]<<8);//+(p1->data[6]<<16)+(p1->data[7]<<24); if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvTimeSync,0,0); if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvDataUpdate,0,0); nIndex=pKBus->nClientDataIndex; p1->data[0]=KBusMem.WLXB[0]; p1->data[1]=KBusMem.WLXB[1]; p1->data[2]=KBusMem.WLXB[2]; p1->data[3]=KBusMem.WLXB[3]; p1->data[4]=KBusMem.WLXB[4]; p1->data[5]=KBusMem.WLXB[5]; p1->data[6]=KBusMem.WLXB[6]; p1->data[7]=KBusMem.WLXB[7]; p1->data[9]=nIndex; p1->data[10]=pKBus->KBusChnStats[0].ClientDatas[nIndex]; p1->data[11]=pKBus->KBusChnStats[0].ClientDatas[nIndex]>>8; p1->data[12]=pKBus->KBusChnStats[0].ClientDatas[nIndex]>>16; p1->data[13]=pKBus->KBusChnStats[0].ClientDatas[nIndex]>>24; pKBus->nClientDataIndex++; DataLen = 14; if (pKBus->nClientDataIndex >= 10) { pKBus->nClientDataIndex=0;} unStatus nStatus; nStatus.nStatus = p1->nStatus; if (nStatus.nErr1) { KMem.ErrStat=8000;} PacketLen=KBusMakePacket(p2,nStationID,0,cmdExChgDataReply,p1->nStatus,DataLen,p1->data); KBusChnStats[0].ClientSendPkts++; SendPacket(nChn, p2, PacketLen); if (nStatus.nErr1) { pKBus->ErrStat=8000;} PacketLen=KBusMakePacket(p2,pKBus->nStationId,0,cmdExChgDataReply,p1->nStatus,DataLen,p1->data); pKBus->KBusChnStats[0].ClientSendPkts++; pKBus->KBusSendPacket((uchar *)p2, PacketLen); break; case cmdExChgDataReply: break; @@ -511,7 +727,8 @@ case cmdSequenRead: break; case cmdSyncTime: nSlaveTick=p1->data[0]+(p1->data[1]<<8)+(p1->data[2]<<16)+(p1->data[3]<<24); pKBus->nSlaveTick=p1->data[0]+(p1->data[1]<<8)+(p1->data[2]<<16)+(p1->data[3]<<24); if (pKBus->KBusEvCBFunc) pKBus->KBusEvCBFunc(pKBus, KBusEvTimeSync,0,0); break; default: break; @@ -520,39 +737,39 @@ return 0; } int KBusParsePacket(int nChn, pKBPacket p1, int Len1) int KBusParsePacket(stKBusDef * pKBus, pKBPacket p1, int Len1) { ThisuS=GetuS(); int ThisuS=GetuS(); int Result=0; unsigned char * p2 = (unsigned char *)p1; if (p2[0] == SYN && Len1 > 1) if (p2[0] == KB_SYN && Len1 > 1) { p1=(pKBPacket)(p2+1); Len1--; } if (bKBusMaster) if (pKBus->bMaster) { KBusMasterRecved=1; Result=KBusCheckPacket(nChn, p1, Len1); pKBus->bMasterRecved=1; Result=KBusCheckPacket(pKBus, p1, Len1); if (Result != S_OK) { return Result; } KBusMasterRecvOK=1; Result=KBusMasterParsePacket(nChn, p1, Len1); pKBus->bMasterRecvOK=1; Result=KBusMasterParsePacket(pKBus, p1, Len1); return Result; } if (bKBusSlave) if (pKBus->bSlave) { KBusChnStats[0].ClientRecvPkts++; Result=KBusSlaveCheckPacket(nChn, p1, Len1); pKBus->KBusChnStats[0].ClientRecvPkts++; Result=KBusSlaveCheckPacket(pKBus, p1, Len1); if (Result != S_OK) { return Result; } KBusChnStats[0].ClientTimeOutErr=KMem.RunStat; Result=KBusSlaveParsePacket(nChn, p1, Len1); pKBus->KBusChnStats[0].ClientTimeOutErr=pKBus->RunStat; Result=KBusSlaveParsePacket(pKBus, p1, Len1); return Result; } //int len1=p1->PacketLen; @@ -604,146 +821,127 @@ return S_OK; } */ int KBusRepeaterFunc(int nChn) unsigned char KBusBCC(void * pData, int nSize) { KMem.WY[0]=KMem.WX[0]; if ((KMem.nRunCount &0x7f) == 88) { nCount2++; ToggleRunLed(); // int len1=sprintf(str1,"%d %d Cfg %02X Input %02X \r\n",nCount,nCount2,EffJumperSW,MyKeyStat1); // PutStr(str1,len1); } return 0; } int KBusMasterFunc(int nChn) { uint32_t tick1=HAL_GetTick(); uint32_t thisuS=GetuS(); int len1=0; if ((KBusMasterRecved && KBusMasterRecvOK && thisuS-KBusSendTimeuS>50) || thisuS-KBusSendTimeuS>1000u) { if (!KBusMasterRecvOK) { TimeOutCount++; Uart2Stat.TimeOutErr++; KBusChnStats[nCurPollId].LostPackets++; KBusChnStats[nCurPollId].CtnLstPkts++; if (!KBusMasterRecved) {KBusChnStats[nCurPollId].TimeOutErr++;} if (KBusChnStats[nCurPollId].CtnLstPkts>KBusChnStats[nCurPollId].MaxCtnLstPkts) {KBusChnStats[nCurPollId].MaxCtnLstPkts=KBusChnStats[nCurPollId].CtnLstPkts;} if (KBusChnStats[nCurPollId].CtnLstPkts>3) { KBusChnStats[nCurPollId].Stat=0; KMem.ErrStat=200; #if (BOARD_TYPE == 14) BufferIn[nCurPollId]=0; KMem.WXB[nCurPollId-1]=BufferIn[nCurPollId]; #else {BufferIn[nCurPollId]=0; KMem.WLX[nCurPollId]=BufferIn[nCurPollId]; } #endif } // LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7); }else { KBusChnStats[nCurPollId].Stat=1; KMem.RunStat=100; } nCurPollId ++; if (nCurPollId > nChilds) { CircleTime=thisuS-LastCircleStartTime; LastCircleStartTime=thisuS; nSeq++; nCurPollId=1; } #if (BOARD_TYPE == 14) if (KMRunStat.WorkMode==0) { // KMem.WX[0]= GetInput(); // KMem.WY[1]=KMem.WX[0]&0xff; // KMem.WY[2]=(KMem.WX[0]>>8)&0xff; } // BufferOut[1]=KMem.WY[1]; // BufferOut[2]=KMem.WY[2]; #else if (KMRunStat.WorkMode==0) { KMem.WX[0]= GetInput(); KMem.WLY[1]=KMem.WX[0]&0xff; KMem.WLY[2]=(KMem.WX[0]>>8)&0xff; } BufferOut[1]=KMem.WLY[1]; BufferOut[2]=KMem.WLY[2]; #endif Datas[0]=BufferOut[nCurPollId]; Datas[1]=BufferOut[nCurPollId+1];; Datas[2]=KBusChnStats[nCurPollId].Stat; Datas[3]=0; Datas[4]=tick1&0xff; Datas[5]=(tick1>>8)&0xff; Datas[6]=(tick1>>16)&0xff; Datas[7]=(tick1>>24)&0xff; KBusSendTimeuS=thisuS; unStatus nStatus; nStatus.nSeq = nSeq; nStatus.nErr1 = (KBusChnStats[nCurPollId].Stat==0); len1=KBusMakePacket((pKBPacket)PacketBuf1,0,nCurPollId,cmdExChgData,nStatus.nStatus,8,Datas); // LL_USART_SetBaudRate(USART2,48000000,LL_USART_OVERSAMPLING_8,DefaultUart2Baud); SendPacket(nChn, (pKBPacket)PacketBuf1, len1); KBusChnStats[nCurPollId].SendPackets++; KBusChnStats[nCurPollId].SendTimeInterval=KBusSendTimeuS-KBusChnStats[nCurPollId].LastSentTimeuS; KBusChnStats[nCurPollId].LastSentTimeuS=KBusSendTimeuS; // PacketLength = len1; SendTime=tick1; KBusMasterRecved=0; KBusMasterRecvOK=0; // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5); //ToggleErrLed(); // ToggleOut8(); } // Clk3=SysTick->VAL; // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_4); // HAL_Delay(1); return 0; } int KBusSlaveFunc(int nChn) { int ThisuS=GetuS(); int thisRecvTime=KBusRecvTimeuS; if (nStationID >0) { if (KBusSlaveRecved) { KMem.RunStat=8000; KBusSlaveRecved=0; }else if ((ThisuS - thisRecvTime) >12000u) { KMem.ErrStat=8000; KMem.SDD[17]=1; KMem.SDD[18]=ThisuS; KMem.SDD[19]=KBusRecvTimeuS; }else if ( ThisuS > (thisRecvTime + 12000u)) { KMem.ErrStat=8000; KMem.SDD[17]=2; KMem.SDD[18]=ThisuS; KMem.SDD[19]=KBusRecvTimeuS; } unsigned char k; k=0; for (int i=0;i<nSize;i++) { k^=((unsigned char *)pData)[i]; } return 0; return k; } int KBusMakePacket(pKBPacket p1,unsigned char src, uchar dst, uchar nType,unsigned char nStatus, unsigned char DataLen,void * pData ) { p1->Sign=KBStartSign; p1->DstHost=dst; p1->SrcAddr=src; p1->nCMD=nType; p1->nStatus=nStatus; int PacketLenth=0; switch (nType) { case cmdNone: break; case cmdPing: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdPingReply: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdRead: break; case cmdReadReply: break; case cmdWrite: break; case cmdWriteReply: p1->DataLen=DataLen; if (DataLen !=0 ) memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdGetVersion: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdVerInfo: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdUniExChgData: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdExChgDataReply: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdSyncRead: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdSyncWrite: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdSequenRead: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; case cmdSyncTime: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; default: p1->DataLen=DataLen; memcpy(p1->data,pData,DataLen); p1->data[DataLen]=KBusBCC(p1,sizeof(stKBPacket)+DataLen-1); p1->data[DataLen+1]=KBEndSign; PacketLenth=sizeof(stKBPacket)+DataLen+1; break; } return PacketLenth; } ComLib/Src/KLink.c
@@ -9,6 +9,8 @@ #include "string.h" #include "PLCFunctions.h" #include "stm32f0xx_hal.h" #include "main.h" #ifdef KWLESS #include "KWireless.h" #endif @@ -47,10 +49,16 @@ p1->nStatus=Status; p1->nRplyCMD=nCmd; p1->nSize1=DataLen; memcpy(p1->Datas,pData,DataLen); p1->Datas[DataLen]=KLBCC(p1,sizeof(stKLRplyPktHdr)+DataLen-1); PacketLenth=sizeof(stKLRplyPktHdr)+DataLen; if (nCmd == KLCmdErrRply) { DataLen = 0; p1->Datas[DataLen]=KLBCC(p1,sizeof(stKLRplyPktHdr)+DataLen-1); PacketLenth=sizeof(stKLRplyPktHdr)+DataLen; } else { memcpy(p1->Datas,pData,DataLen); p1->Datas[DataLen]=KLBCC(p1,sizeof(stKLRplyPktHdr)+DataLen-1); PacketLenth=sizeof(stKLRplyPktHdr)+DataLen; } switch (nCmd) { @@ -74,6 +82,7 @@ break; default: break; } @@ -147,7 +156,7 @@ void * pData=0; pKLRplyPktHdr p2=(pKLRplyPktHdr)KLPacketBuf2; char rData[4]; int res = 0 ; int PacketLen=0; KLRecvTimeuS=KLThisuS; if (nDstHost==nKLStationId || nDstHost==0xff) @@ -216,7 +225,7 @@ else if (nDataType == KLDataTypeEV) { pData=KMem.EV+nWordAddr; } else if (nDataType == KLDataTypeTest) { pData=KMem.SDT+nWordAddr; } else if (nDataType == KLDataTypeWDT) { pData=KMem.WDT+nWordAddr; } else if (nDataType == KLDataTypeKBD) { pData=(unsigned short *)&KBusChnStats +nWordAddr; } else if (nDataType == KLDataTypeKBD) { pData=(unsigned short *)&KBus1.KBusChnStats +nWordAddr; } #ifdef KWLESS else if (nDataType == KLDataTypeKWLD) { pData=(unsigned short *)&KwRunStat +nWordAddr; } #endif @@ -249,7 +258,7 @@ else if (nDataType == KLDataTypeEV) { pData=KMem.EV+nWordAddr; DataLen=0;} else if (nDataType == KLDataTypeTest) { pData=KMem.SDT+nWordAddr; DataLen=0;} else if (nDataType == KLDataTypeWDT) { pData=KMem.WDT+nWordAddr; DataLen=0;} else if (nDataType == KLDataTypeKBD) { pData=(unsigned short *)KBusChnStats +nWordAddr; DataLen=0;} else if (nDataType == KLDataTypeKBD) { pData=(unsigned short *)KBus1.KBusChnStats +nWordAddr; DataLen=0;} #ifdef KWLESS else if (nDataType == KLDataTypeKWLD) { pData=(unsigned short *)&KwRunStat +nWordAddr; } #endif @@ -307,7 +316,7 @@ PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0); SendPacket(nChn, p2, PacketLen); break; case KLCmdReadProgram: case KLCmdReadPLCProgram: nWordAddr=p1->Params[0]+ (p1->Params[1]<<8); DataLen= p1->Params[2]; if (nDataType==0){ @@ -323,17 +332,17 @@ SendPacket(nChn, p2, PacketLen); break; case KLCmdStartProgram: case KLCmdStartPLCProgram: DataLen=nDataType; // KLBufferIn[0]=p1->Params[0]; // p1->Params[0]=KLBufferOut[0]; if (PLCMem.bPLCRunning) PLCMem.bPLCRunning=0; PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdStartProgram,0,0); PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdStartPLCProgram,0,0); SendPacket(nChn, p2, PacketLen); break; case KLCmdWriteProgram: case KLCmdWritePLCProgram: if (PLCMem.bPLCRunning) PLCMem.bPLCRunning=0; nWordAddr=p1->Params[0]+ (p1->Params[1]<<8); DataLen= p1->Params[2]; @@ -344,10 +353,10 @@ WriteProgram(nWordAddr, KLPacketBuf2, DataLen,nDataType); DataLen=4; *((int *)(&rData[0]))=(long)(p1->Params+4); PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdWriteProgram,0,0); PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdWritePLCProgram,0,0); SendPacket(nChn, p2, PacketLen); break; case KLCmdFinishProgram: case KLCmdFinishPLCProgram: nWordAddr=p1->Params[0]+ (p1->Params[1]<<8); //Program Size; DataLen=nDataType; KMRunStat.nBinProgSize=nWordAddr; @@ -357,7 +366,7 @@ //PLCMem.bPLCRunning=1; // KLBufferIn[0]=p1->Params[0]; // p1->Params[0]=KLBufferOut[0]; PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdFinishProgram,0,0); PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdFinishPLCProgram,0,0); SendPacket(nChn, p2, PacketLen); break; @@ -418,7 +427,7 @@ SendPacket(nChn, p2, PacketLen); break; case KLCmdClearRunStat: memset(KBusChnStats,0,sizeof(KBusChnStats)); memset(KBus1.KBusChnStats,0,sizeof(KBus1.KBusChnStats)); PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0); SendPacket(nChn, p2, PacketLen); break; @@ -440,8 +449,37 @@ PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdClearEventLog,0,0); SendPacket(nChn, p2, PacketLen); break; case KLCmdResetMachine: PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdClearEventLog,0,0); SendPacket(nChn, p2, PacketLen); __set_PRIMASK(1); //关闭全局中断 NVIC_SystemReset(); break; case KLCmdWriteFirmware: nByteAddr=p1->Params[0]+ (p1->Params[1]<<8); //pData=(UCHAR *)(&storedKMSysCfg.theKMSysCfg)+nByteAddr; DataLen = p1->Params[2]; res = WriteNewApp(nByteAddr,p1->Params+4,DataLen); if (res) { PacketLen=KLMakeRplyPacket(p2,nKLStationId,nKLStatus.StatByte,KLCmdErrRply,res,rData); }else { PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0); } SendPacket(nChn, p2, PacketLen); break; case KLCmdWriteFirmInfo: nByteAddr=p1->Params[0]+ (p1->Params[1]<<8); //pData=(UCHAR *)(&storedKMSysCfg.theKMSysCfg)+nByteAddr; DataLen = p1->Params[2]; PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0); SendPacket(nChn, p2, PacketLen); WriteNewAppInfo(nByteAddr,p1->Params+4,DataLen); break; default: DataLen=1; //DataLen=1; DataLen=KL_UNKNOWN; rData[0]=KL_UNKNOWN; PacketLen=KLMakeRplyPacket(p2,nKLStationId,nKLStatus.StatByte,KLCmdErrRply,DataLen,rData); SendPacket(nChn, p2, PacketLen); @@ -462,7 +500,7 @@ int DataLen=4; char rData[4]; rData[0]=Result; DataLen = Result; PacketLen=KLMakeRplyPacket(KLPacketBuf2,nKLStationId,nKLStatus.StatByte,KLCmdErrRply,DataLen,rData); // PacketLen=KLMakePacket(p2,0,nAddr,cmdKLPing,p1->nSEQ,DataLen,rData); SendPacket(nChn, KLPacketBuf2, PacketLen); ComLib/Src/KMachine.c
@@ -6,13 +6,31 @@ */ #include "KMachine.h" #include "KBus.h" #include "string.h" #include "Globaldef.h" #include "stm32f0xx_hal.h" #include "stm32f0xx.h" #include "stm32f0xx_ll_flash.h" //#include "stm32f0xx_hal.h" //#define OB_BASE ((uint32_t)0x1FFFF800U) /*!< FLASH Option Bytes base address */ //#define FLASHSIZE_BASE ((uint32_t)0x1FFFF7CCU) /*!< FLASH Size register base address */ //#define UID_BASE ((uint32_t)0x1FFFF7ACU) /*!< Unique device ID register base address */ //#define FLASH_BASE //#define FLASH_PAGE_SIZE 0x00000400U //#define FLASH_BANK1_END ((uint32_t)0x0800FFFFU) /*!< FLASH END address of bank1 */ #define ApplicationAddress 0x08001000 //应用程序首地址定义 #if defined(STM32F030x8) #define NewAppInfoBlockAddress 0x08008000 // 存储的新应用程序信息块的地址 #define NewAppAddress ((uint32_t)0x08009000U) // 存储的新应用程序的地址 #endif /* STM32F030x6 || STM32F030x8 || STM32F031x6 || STM32F051x8 || STM32F042x6 || STM32F048xx || STM32F058xx || STM32F070x6 */ #if defined(STM32F030xC) #define NewAppInfoBlockAddress 0x08020000 // 存储的新应用程序信息块的地址 #define NewAppAddress ((uint32_t)0x08021000U) // 存储的新应用程序的地址 #endif /* STM32F071xB || STM32F072xB || STM32F078xx || STM32F091xC || STM32F098xx || STM32F030xC */ stStoredKMSysCfg storedKMSysCfg ; @@ -30,9 +48,9 @@ { // sizeof(stKMInfoBlock), (BOARD_TYPE<<8) + BOARD_VER, //nDeviceType BOARD_VER, //nDevieVer 0x0107, //ProgVer 0x0100, //KLinkVer 0x0100, //KBusVer 0x0109, //ProgVer 0x0102, //KLinkVer KBUS_VER, //KBusVer // 0x0100, //KNetVer // 0x0100, //KWLVer @@ -139,72 +157,54 @@ } int EraseFlashMem(void * pAddrFlash, unsigned int Pages) { HAL_StatusTypeDef res; res = HAL_FLASH_Unlock(); uint32_t ErrNo; FLASH_EraseInitTypeDef erase1; erase1.NbPages=Pages; erase1.PageAddress=(unsigned int)pAddrFlash; erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = HAL_FLASHEx_Erase(&erase1,&ErrNo); res = HAL_FLASH_Lock(); return res; ErrorStatus res; res = LL_Flash_Unlock(); // uint32_t ErrNo; res = LL_Flash_PageErase(pAddrFlash,Pages); LL_FLASH_Lock(FLASH); return 0; } int WriteToFlashMemNoErase(void * pBuf, void * pAddrFlash, unsigned int nByteSize) { HAL_StatusTypeDef res; res = HAL_FLASH_Unlock(); /* for (int i=0;i<nSize/2;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); } */ ErrorStatus res; res = LL_Flash_Unlock(); // __disable_irq(); ///* for (int i=0;i<nByteSize/4;i++) for (int i=0;i<(nByteSize+1)/2;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, (uint32_t)pAddrFlash + i*4, ((uint32_t *)pBuf)[i]); unsigned short value = ((uint8_t *)pBuf)[i*2] + (((uint8_t *)pBuf)[i*2 +1] << 8); res = LL_FLASH_Program(ProgaraType_DATA16, (uint32_t)pAddrFlash + i*2, value); if (res == ERROR) break; } for (int i = nByteSize/4 * 2 ; i < nByteSize/2 ; i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); } //*/ res = HAL_FLASH_Lock(); return res; // */ // __enable_irq(); LL_FLASH_Lock(FLASH); if (res == ERROR) return 1; return 0; } int EraseAndWriteToFlashMem(void * pBuf, void * pAddrFlash, unsigned int nByteSize) { HAL_StatusTypeDef res; res = HAL_FLASH_Unlock(); uint32_t ErrNo; FLASH_EraseInitTypeDef erase1; erase1.NbPages=(nByteSize-1) / FLASH_PAGESIZE + 1;; erase1.PageAddress=(unsigned int)pAddrFlash; erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = HAL_FLASHEx_Erase(&erase1,&ErrNo); for (int i=0;i<nByteSize/2;i++) ErrorStatus res; res = LL_Flash_Unlock(); // __disable_irq(); int NbPages = (nByteSize-1) / FLASH_PAGE_SIZE + 1; // FLASH_EraseInitTypeDef erase1; // erase1.NbPages=(nByteSize-1) / FLASH_PAGE_SIZE + 1;; // erase1.PageAddress=(unsigned int)pAddrFlash; // erase1.TypeErase=FLASH_TYPEERASE_PAGES; res = LL_Flash_PageErase(pAddrFlash,NbPages); for (int i=0;i<(nByteSize+1)/2;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); unsigned short value = ((uint8_t *)pBuf)[i*2] + (((uint8_t *)pBuf)[i*2 +1] << 8); res = LL_FLASH_Program(ProgaraType_DATA16, (uint32_t)pAddrFlash + i*2, value); if (res == ERROR) break; } /* for (int i=0;i<nSize/4;i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, (uint32_t)pAddrFlash + i*4, ((uint32_t *)pBuf)[i]); } for (int i = nSize/4 * 2 ; i < nSize/2 ; i++) { res = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, (uint32_t)pAddrFlash + i*2, ((uint16_t *)pBuf)[i]); } */ res = HAL_FLASH_Lock(); return res; // __enable_irq(); LL_FLASH_Lock(FLASH); if (res == ERROR) return 1; return 0; } int ReadFactoryData(void * pDatabuf, int nByteCount) @@ -249,7 +249,7 @@ }else{ progByteAddr=(void *)(STORE_PRG_BASE+nProgAddress); } if ( (nProgAddress & (STORE_PRG_PAGESIZE - 1)) ==0) { if ( (nProgAddress & (FLASH_PAGE_SIZE - 1)) ==0) { EraseAndWriteToFlashMem(pBuf, progByteAddr, nByteSize); }else{ WriteToFlashMemNoErase(pBuf, progByteAddr, nByteSize); @@ -456,7 +456,7 @@ pRunStat pStoreRunStats = (pRunStat)pRunStatStore; // int s = sizeof(stRunStat); for (int i=0;i * sizeof(stRunStat) < (STORE_RUNSTAT_PAGESIZE * STORE_RUNSTAT_PAGES) ;i++) for (int i=0;i * sizeof(stRunStat) < (FLASH_PAGE_SIZE * STORE_RUNSTAT_PAGES) ;i++) { if (pStoreRunStats[i].Sign1 == START_SIGN ) { @@ -477,7 +477,7 @@ // find Next Space // if Same Page with MaxSeq Index, then not erase, skip and skip. // if next Page of MaxSeq Index, then earse if not empty; if ((nNextRunStatSpace + 1) * sizeof(stRunStat) > STORE_RUNSTAT_PAGESIZE * STORE_RUNSTAT_PAGES) { if ((nNextRunStatSpace + 1) * sizeof(stRunStat) > FLASH_PAGE_SIZE * STORE_RUNSTAT_PAGES) { nNextRunStatSpace=0; } return 0; @@ -509,13 +509,31 @@ } nMaxRunStatIndex=nNextRunStatSpace; nNextRunStatSpace++; if ((nNextRunStatSpace+1) * sizeof(stRunStat) > STORE_RUNSTAT_PAGESIZE * STORE_RUNSTAT_PAGES) if ((nNextRunStatSpace+1) * sizeof(stRunStat) > FLASH_PAGE_SIZE * STORE_RUNSTAT_PAGES) { nNextRunStatSpace=0; } return 0; } int WriteNewApp(int nProgByteAddr, void *pBuf, int nByteSize) { int res = -1; if ((nProgByteAddr&(FLASH_PAGE_SIZE-1)) ==0){ // EraseFlashMem((void *)(NewAppAddress + nProgByteAddr),1); res = EraseAndWriteToFlashMem(pBuf,(void *)(NewAppAddress + nProgByteAddr),nByteSize); }else { // if (nByteSize>64) return 0; res = WriteToFlashMemNoErase(pBuf,(void *)(NewAppAddress + nProgByteAddr),nByteSize); } return res; } int WriteNewAppInfo(int nProgByteAddr, void *pBuf, int nByteSize) { int res = EraseAndWriteToFlashMem(pBuf,(void *)(NewAppInfoBlockAddress + nProgByteAddr),nByteSize); return res; } int nEventCount=0; int nEventMinIndex; @@ -537,7 +555,7 @@ // int s = sizeof(stEventLog); nEventCount=0; for (int i=0;i * sizeof(stEventLog) < (STORE_LOG_PAGESIZE * STORE_LOG_PAGES) ;i++) for (int i=0;i * sizeof(stEventLog) < (FLASH_PAGE_SIZE * STORE_LOG_PAGES) ;i++) { if (theEventLog[i].Sign1 == START_SIGN ) { @@ -559,7 +577,7 @@ // find Next Space // if Same Page with MaxSeq Index, then not erase, skip and skip. // if next Page of MaxSeq Index, then earse if not empty; if ((nEventNextSpace + 1) * sizeof(stEventLog) > STORE_LOG_PAGESIZE * STORE_LOG_PAGES) { if ((nEventNextSpace + 1) * sizeof(stEventLog) > FLASH_PAGE_SIZE * STORE_LOG_PAGES) { nEventNextSpace=0; } @@ -587,7 +605,7 @@ } nEventMaxIndex=nEventNextSpace; nEventNextSpace++; if ((nEventNextSpace+1) * sizeof(stEventLog) > STORE_LOG_PAGESIZE * STORE_LOG_PAGES) if ((nEventNextSpace+1) * sizeof(stEventLog) > FLASH_PAGE_SIZE * STORE_LOG_PAGES) { nEventNextSpace=0; } @@ -600,9 +618,9 @@ { int nEventIndex=nEventMinIndex + nIndex; if (nEventIndex * sizeof(stEventLog) >= (STORE_LOG_PAGESIZE * STORE_LOG_PAGES)) if (nEventIndex * sizeof(stEventLog) >= (FLASH_PAGE_SIZE * STORE_LOG_PAGES)) { nEventIndex -= (STORE_LOG_PAGESIZE * STORE_LOG_PAGES)/sizeof(stEventLog); nEventIndex -= (FLASH_PAGE_SIZE * STORE_LOG_PAGES)/sizeof(stEventLog); } unsigned char *pFlash = (unsigned char *)(STORE_LOG_BASE + nEventIndex*sizeof(stEventLog)); @@ -904,3 +922,61 @@ return 0; } int KMachineSvFunc (int nChn, int nSvType, int nParam,void * pBuf, int nLen1) { int iRet =0; switch (nSvType){ case ReqNone: break; case ReqInit: break; case ReqReset: break; case ReqStop: break; case ReqRun: break; case ReqBlink: break; case ReqStartDiag: break; case ReqStopDiag: break; case ReqTransFirmware: break; case ReqTransCfg: break; case ReqTransProg: break; case ReqTransData: break; case ReqTransBlink: break; case ReqTransChild: break; case ReqTransInfo: break; case ReqTransOutBandData: break; case ReqRead1Bit: break; case ReqWrite1Bit: break; case ReqReadBits: break; case ReqWriteBits: break; case ReqReadData: break; case ReqWriteData: break; case ReqRemoteTran: break; default: iRet = -1; break; } return iRet; } ComLib/Src/debug.c
@@ -191,8 +191,8 @@ int timeus1; int timeus2; len1=sprintf((char *)str1," N %8d Tk %8d %9u CFG %02X R %d M %d S %d %4d IN %04X OUT %04X \r\n", KMem.nRunCount, haltick, theUs, KMem.EffJumperSW, bKBusRepeater, bKBusMaster, bKBusSlave, Clk2, KMem.WX[0],KMem.WY[0]); // len1=sprintf((char *)str1," N %8d Tk %8d %9u CFG %02X R %d M %d S %d %4d IN %04X OUT %04X \r\n", // KMem.nRunCount, haltick, theUs, KMem.EffJumperSW, bKBusRepeater, bKBusMaster, bKBusSlave, Clk2, KMem.WX[0],KMem.WY[0]); //len1=sprintf((char *)str1,"U%02X%02XA",x2,x2); // Locate(10,1); timeus1=GetuS(); @@ -216,6 +216,10 @@ return 0; } #define AVGCount 8 int nCount5 = 0; unsigned short ADC_TEMP[16] ={0}; int ADCProcess() { @@ -233,7 +237,9 @@ // 16 -- Temp --> 6 // 17 -- Vref --> 7 uint16_t ADC_ConvertedValue=0; uint16_t ADC_ConvertedValue=0; static int CurChannel=LL_ADC_CHANNEL_0; //static int waitcount = 0; @@ -250,17 +256,45 @@ if ((channels & LL_ADC_CHANNEL_0) == LL_ADC_CHANNEL_0) { KMem.ADCValues[0] = ADC_ConvertedValue; nextchannel = LL_ADC_CHANNEL_8; if (KMem.ADCValues[0] < 2200) nextchannel = LL_ADC_CHANNEL_7; if (KMem.ADCValues[0] < 1500) { PowerDownEvent=1; }else { PowerDownEvent=0; } }else if ((channels & LL_ADC_CHANNEL_8) == LL_ADC_CHANNEL_8) } else if ((channels & LL_ADC_CHANNEL_7) == LL_ADC_CHANNEL_7) { KMem.ADCValues[2] = ADC_ConvertedValue; ADC_TEMP[0] += ADC_ConvertedValue; nextchannel = LL_ADC_CHANNEL_8; } else if ((channels & LL_ADC_CHANNEL_8) == LL_ADC_CHANNEL_8) { ADC_TEMP[1] += ADC_ConvertedValue; nCount5++; if (nCount5 >= AVGCount) { KMem.ADCValues[3] = ADC_TEMP[0]/AVGCount; KMem.ADCValues[4] = ADC_TEMP[1]/AVGCount; ADC_TEMP[0]=0; ADC_TEMP[1]=0; nCount5 = 0 ; } // KMem.ADCValues[3] = 255;//ADC_TEMP[0]/16; // KMem.ADCValues[4] = 768; //ADC_TEMP[1]/16; nextchannel = LL_ADC_CHANNEL_9; }else if ((channels & LL_ADC_CHANNEL_9) == LL_ADC_CHANNEL_9) { KMem.ADCValues[5] = ADC_ConvertedValue; nextchannel = LL_ADC_CHANNEL_TEMPSENSOR; }else if ((channels & LL_ADC_CHANNEL_16) == LL_ADC_CHANNEL_16) @@ -270,7 +304,7 @@ }else if ((channels & LL_ADC_CHANNEL_17) == LL_ADC_CHANNEL_17) { KMem.ADCValues[7] = ADC_ConvertedValue; KMem.ADCValues[5] = *((unsigned short *)ADCrefAddr); KMem.ADCValues[8] = *((unsigned short *)ADCrefAddr); nextchannel = LL_ADC_CHANNEL_0; }else ComLib/Src/functions.c
@@ -9,7 +9,7 @@ #include "string.h" #include "stm32f0xx_hal.h" #if (BOARD_TYPE == 14) #include "fp0.h" #include "fpx.h" #endif extern __IO uint32_t uwTick; //#include "Myprotocol.h" @@ -23,6 +23,22 @@ //volatile unsigned int TotalRunTime=0; //总开机时间 //volatile unsigned int PwrCount=0; //开机次数 unsigned short ClkuS; //每个Clk的nS数, unsigned char SPI1RecvBuf[64]; unsigned char SPI1SendBuf[64]; volatile unsigned char bSPI1Recving=0; volatile unsigned char bSPI1RecvDone =0; volatile unsigned char nSPI1RecvPos =0; volatile unsigned char nSPI1RecvLenInBuf=0; volatile unsigned char nSPI1ToSendLen=0; volatile unsigned char nSPI1SentLen=0; volatile unsigned char bSPI1Sending=0; volatile unsigned char bSPI1SendDone=0; int InituS(int TickFreq1) { @@ -297,26 +313,6 @@ SCB->ICSR=SCB_ICSR_PENDSVSET_Msk; //1<<SCB_ICSR_PENDSVSET_Pos; } void PendSvCallBack() { #if (BOARD_TYPE == 14) ///* if (bSPI1RecvDone) { bSPI1RecvDone=0; ParseFP0Pkg(SPI1RecvBuf,nSPI1RecvLenInBuf); } //*/ #endif if (Uart2Stat.bPacketRecved) { KBusParsePacket(2, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); Uart2RecvBuf1DataLen=0; Uart2Stat.bPacketRecved=0; Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); } } void SPI1_IRQ_CallBack() { uint8_t value; @@ -360,7 +356,7 @@ bSPI1SendDone=1; bSPI1Recving=1; nSPI1RecvPos=0; SetFP0DEPin_0(); SetFPxDEPin_0(); } else { value = SPI1SendBuf[nSPI1SentLen]; @@ -427,6 +423,7 @@ // LL_USART_EnableIT_TXE(USART1); // LL_USART_EnableIT_TC(USART1); Uart1TriggerSendDMA(); Uart1Stat.SentPacket++; return len1; } int PutStr2(char * str1, int len1) @@ -436,6 +433,7 @@ // LL_USART_EnableIT_TXE(USART1); // LL_USART_EnableIT_TC(USART1); // Uart2TriggerSendDMA(); Uart2Stat.SentPacket++; return len1; } @@ -445,12 +443,12 @@ PutStr1((char *)pBuf,len1); // PushIn(&Uart1Stat.QTx,p1,len1); // Uart1TriggerSendDMA(); Uart1Stat.SentPacket++; }else if (nChn==2){ PutStr2((char *)pBuf,len1); // PushIn(&Uart2Stat.QTx,p1,len1); // Uart2TriggerSendDMA(); Uart2Stat.SentPacket++; } return len1; } @@ -653,7 +651,7 @@ case 13: return Input165_R(16); case 14: return 0; //FP0 return 0; //FPx case 15: return Input165_R(16); case 16: @@ -748,7 +746,7 @@ case 13: return ReadConfig_5(); case 14: return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f; //FP0 return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f; //FPx case 15: case 16: return ReadConfig_5(); //Wireless Master Slave 8 in 8 o Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_flash.h
New file @@ -0,0 +1,140 @@ #ifndef __STM32F0xx_LL_FLASH_EX_H #define __STM32F0xx_LL_FLASH_EX_H #include "stm32f0xx.h" #define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */ #define FLASH_FLAG_PGERR FLASH_SR_PGERR /*!< FLASH Programming error flag */ #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */ #define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Operation flag */ #define LL_FLASH_TYPEERASE_PAGES FLASH_CR_PER /*!< FLASH_CR_PER */ #define LL_FLASH_TYPEERASE_MASSERASE FLASH_CR_MER /*!< MASSERASE */ #if defined(STM32F030x6) || defined(STM32F030x8) || defined(STM32F031x6) || defined(STM32F038xx) \ || defined(STM32F051x8) || defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F058xx) || defined(STM32F070x6) #define FLASH_PAGE_SIZE 0x400U #endif /* STM32F030x6 || STM32F030x8 || STM32F031x6 || STM32F051x8 || STM32F042x6 || STM32F048xx || STM32F058xx || STM32F070x6 */ #if defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F070xB) \ || defined(STM32F091xC) || defined(STM32F098xx) || defined(STM32F030xC) #define FLASH_PAGE_SIZE 0x800U #endif /* STM32F071xB || STM32F072xB || STM32F078xx || STM32F091xC || STM32F098xx || STM32F030xC */ typedef enum { ProgaraType_DATA64, ProgaraType_DATA32, ProgaraType_DATA16 }ProgaramDataType; typedef enum {\ FLASH_Lock=1U,Flash_Unlock=!FLASH_Lock\ }FlashStates; /* Set the OBL_Launch bit to launch the option byte loading */ __STATIC_INLINE void LL_FLASH_SET_OBL_Launch(FLASH_TypeDef *FLASHx) { SET_BIT(FLASHx->CR, FLASH_CR_OBL_LAUNCH); } __STATIC_INLINE void LL_FLASH_Lock(FLASH_TypeDef *FLASHx) { SET_BIT(FLASHx->CR, FLASH_CR_LOCK); } /* @brief Set flash erase type. * @param FLASH_TYPEERASE specifies the FLASH flags to clear. * This parameter can be any combination of the following values: * @arg @ref FLASH_TYPEERASE_PAGES PAGES Erase * @arg @ref FLASH_TYPEERASE_MASSERASE FLASH Write protected error flag * @retval none*/ __STATIC_INLINE void LL_FLASH_SetTypeErase(FLASH_TypeDef *FLASHx,uint32_t FLASH_TYPEERASE) { SET_BIT(FLASHx->CR, FLASH_TYPEERASE); } /* @brief Set flash erase ADDR. * This parameter can be any combination of the following values: * @arg @ref EraseADDR uint32_t value * @retval none*/ __STATIC_INLINE void LL_FLASH_SetEraseADDR(FLASH_TypeDef *FLASHx,uint32_t EraseADDR) { WRITE_REG(FLASHx->AR, EraseADDR); } /* @brief Set flash erase ADDR. * This parameter can be any combination of the following values: * @arg @ref EraseADDR uint32_t value * @retval none*/ __STATIC_INLINE void LL_FLASH_StartErase(FLASH_TypeDef *FLASHx) { SET_BIT(FLASHx->CR, FLASH_CR_STRT); } /* @brief Clear the specified FLASH flag. * @param __FLAG__ specifies the FLASH flags to clear. * This parameter can be any combination of the following values: * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag * @arg @ref FLASH_FLAG_PGERR FLASH Programming error flag * @retval none*/ __STATIC_INLINE void LL_FLASH_ClearFlag(FLASH_TypeDef *FLASHx,uint32_t STATE_FLAG) { WRITE_REG(FLASHx->SR, STATE_FLAG); } /*get bit flash bsy*/ __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_BSY(FLASH_TypeDef *FLASHx) { return (READ_BIT(FLASHx->SR, FLASH_SR_BSY) == (FLASH_SR_BSY)); } /*get end of operation bilt*/ __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_EOP(FLASH_TypeDef *FLASHx) { return (READ_BIT(FLASHx->SR, FLASH_SR_EOP) == (FLASH_SR_EOP)); } /*clear end of operation bilt*/ __STATIC_INLINE void LL_FLASH_ClearFlag_EOP(FLASH_TypeDef *FLASHx) { SET_BIT(FLASHx->SR, FLASH_SR_EOP);//EOP bit Set clear } /* @brief Set flash erase type. * @param FLASH_TYPEERASE specifies the FLASH flags to clear. * This parameter can be any combination of the following values: * @arg @ref FLASH_TYPEERASE_PAGES PAGES Erase * @arg @ref FLASH_TYPEERASE_MASSERASE FLASH Write protected error flag * @retval none*/ __STATIC_INLINE void LL_FLASH_DisenableErase(FLASH_TypeDef *FLASHx,uint32_t FLASH_TYPEERASE) { CLEAR_BIT(FLASHx->CR, FLASH_TYPEERASE); } /*EnableProgram*/ __STATIC_INLINE void LL_FLASH_EnableProgram(FLASH_TypeDef *FLASHx) { SET_BIT(FLASHx->CR,FLASH_CR_PG); } /*DisenableProgram*/ __STATIC_INLINE void LL_FLASH_DisenableProgram(FLASH_TypeDef *FLASHx) { CLEAR_BIT(FLASHx->CR,FLASH_CR_PG); } /*read flash's states of lock or unlock*/ __STATIC_INLINE FlashStates LL_FLASH_LockState(FLASH_TypeDef *FLASHx) { return (FlashStates)(READ_BIT(FLASHx->CR,FLASH_CR_LOCK)); } /*set key for flash*/ __STATIC_INLINE void LL_FLASh_SetKey(FLASH_TypeDef *FLASHx,uint32_t key) { WRITE_REG(FLASH->KEYR,key); } ErrorStatus LL_Flash_Unlock(void); ErrorStatus LL_Flash_PageErase(void * page_addr,uint16_t NbPages); ErrorStatus LL_FLASH_Program(ProgaramDataType ProgramType,uint32_t flash_addr,uint64_t data); #endif /* __STM32F0xx_LL_FLASH_EX_H */ Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_flash.c
New file @@ -0,0 +1,78 @@ #include "stm32f0xx_ll_flash.h" void static LL_FLASH_Program_TwoBtye(uint32_t flash_addr,uint16_t data) { LL_FLASH_EnableProgram(FLASH); *(__IO uint16_t*)(flash_addr) = data; } ErrorStatus LL_Flash_Unlock(void) { while (LL_FLASH_IsActiveFlag_BSY(FLASH)) { } if (LL_FLASH_LockState(FLASH)) { LL_FLASh_SetKey(FLASH,FLASH_KEY1); LL_FLASh_SetKey(FLASH,FLASH_KEY2); } return SUCCESS; } ErrorStatus LL_Flash_PageErase(void * page_addr,uint16_t Nb) { uint32_t End_addr = Nb* FLASH_PAGE_SIZE + (uint32_t)page_addr; uint32_t Start_addr = (uint32_t)page_addr; for(;Start_addr < End_addr;(Start_addr += FLASH_PAGE_SIZE)) { LL_FLASH_SetTypeErase(FLASH,LL_FLASH_TYPEERASE_PAGES); LL_FLASH_SetEraseADDR(FLASH,Start_addr); LL_FLASH_StartErase(FLASH); while (LL_FLASH_IsActiveFlag_BSY(FLASH)) { } if (LL_FLASH_IsActiveFlag_EOP(FLASH)) { LL_FLASH_ClearFlag_EOP(FLASH);; } else { return ERROR; } LL_FLASH_DisenableErase(FLASH,LL_FLASH_TYPEERASE_PAGES); } return SUCCESS; } ErrorStatus LL_FLASH_Program(ProgaramDataType ProgramType,uint32_t flash_addr,uint64_t data) { uint8_t index = 0U; uint8_t nbiterations = 0U; if(ProgramType == ProgaraType_DATA16) nbiterations = 1U; else if(ProgramType == ProgaraType_DATA32) nbiterations = 2U; else nbiterations = 4U; for(index = 0U; index < nbiterations; index++) { LL_FLASH_Program_TwoBtye((flash_addr + (2U*index)), (uint16_t)(data >> (16U*index))); } while (LL_FLASH_IsActiveFlag_BSY(FLASH)) { } if (LL_FLASH_IsActiveFlag_EOP(FLASH)) { LL_FLASH_ClearFlag_EOP(FLASH); } else { return ERROR; } LL_FLASH_DisenableProgram(FLASH); return SUCCESS; } Ext_FP0/Inc/FP0.h
File was deleted Ext_FP0/Src/FP0.c
File was deleted Ext_FP0/Src/main.c
File was deleted Ext_FPx/Inc/BoardType.h
Ext_FPx/Inc/FPx.h
New file @@ -0,0 +1,165 @@ /** ****************************************************************************** * @file : FPx.h * @brief : Header for FPx.c file. * This file contains the function defines of the FPx . ****************************************************************************** */ #ifndef __FPX_H__ #define __FPX_H__ #include "main.h" enum enCMD_TYPE { CMD_0_QUERY =0, CMD_1=0x1, // CMD_2=0x2, // CMD_3_EXCHG=0x3, // CMD_4=0x4, // CMD_5=0x5, // CMD_6=0x6, // CMD_7_END=0x7, // }; typedef struct tagFPxPinStat { unsigned short OE:1; unsigned short RST:1; unsigned short SYN:1; unsigned short ACK:1; unsigned short SEL:1; }stFPxPinStat; #define RST_PORT GPIOB #define RST_PIN LL_GPIO_PIN_9 #define SYN_PORT GPIOF #define SYN_PIN LL_GPIO_PIN_6 #define ACK_PORT GPIOA #define ACK_PIN LL_GPIO_PIN_11 #define FPxDE_PORT GPIOF #define FPxDE_PIN LL_GPIO_PIN_7 #define OE_PORT GPIOB #define OE_PIN LL_GPIO_PIN_6 #define SEL_PORT GPIOB #define SEL_PIN LL_GPIO_PIN_8 #define FPX_WX_NUM 16 #define FPX_WY_NUM 16 #define GetRSTPin() LL_GPIO_IsInputPinSet(RST_PORT,RST_PIN) #define GetSYNPin() LL_GPIO_IsInputPinSet(SYN_PORT,SYN_PIN) #define GetOEPin() LL_GPIO_IsInputPinSet(OE_PORT,OE_PIN) #define GetSELPin() (1) //LL_GPIO_IsInputPinSet(SEL_PORT,SEL_PIN) #define GetACKPin() LL_GPIO_IsInputPinSet(ACK_PORT,ACK_PIN) #define SetACKPin_0() LL_GPIO_ResetOutputPin(ACK_PORT,ACK_PIN) #define SetACKPin_1() LL_GPIO_SetOutputPin(ACK_PORT,ACK_PIN) #define SetFPxDEPin_0() LL_GPIO_ResetOutputPin(FPxDE_PORT,FPxDE_PIN) #define SetFPxDEPin_1() LL_GPIO_SetOutputPin(FPxDE_PORT,FPxDE_PIN) typedef void *(*FPxCBFuncDef) (int nEvent, void * pBuf, int); //callback func ,prama s is void *,void *,int; return void *; // extern uint8_t PktBuf1[64]; extern uint8_t PktBuf2[64]; extern uint8_t PktLen1; extern uint8_t PktLen2; typedef struct tagFPxStat{ uint8_t bConfiged; uint8_t nConfigStationId; uint8_t nInputBytes; uint8_t nOutputBytes; uint8_t bReceiving; uint8_t nReceivedLen; uint8_t bSending; uint8_t bSentLen; volatile uint8_t oldSYN; int RSTCount0; int bFirstReq; FPxCBFuncDef FPxCBFunc; uint8_t bFPxCallBackFuncSet; }stFPxStat; extern stFPxStat FPxStat; #pragma anon_unions typedef struct tagFPxMem{ union { unsigned short WLX[16]; //虚拟的X和Y,远程通讯时映射用。 unsigned char WLXB[32]; //虚拟的X和Y,远程通讯时映射用。 }; union { unsigned short WLY[16]; //虚拟的X和Y,远程通讯时映射用。 unsigned char WLYB[32]; //虚拟的X和Y,远程通讯时映射用。 }; }stFPxMem; extern stFPxMem FPxMem; typedef struct tagFPxQuRplyPkt { uint8_t Hdr1; uint8_t nInputBytes; uint8_t nOutputBytes; uint8_t nParam1; uint8_t nBCC; uint8_t End1; }stFPxQuRplyPkt, *pFPxQuRplyPkt; typedef struct tagFPxEXGRplyPkt { uint8_t Hdr1; uint8_t nInputBytes[6]; uint8_t nBCC; uint8_t End1; }stFPxEXGRplyPkt, * pFPxEXGRplyPkt; uint8_t FPx_Init(int nChilds); uint8_t FPx_SetIOCount(int nInputBytes, int nOutputBytes); uint8_t FPx_Proc(void); uint8_t FPxCalBCC(uint8_t* pBuf, uint8_t len1); uint8_t FPxCheckPkt(uint8_t * pBuf, uint8_t len1); uint8_t FPxParsePkt(uint8_t * pBuf, uint8_t len1); uint8_t FPxSendPkt(uint8_t * pBuf, uint8_t len1); int FPxSetCallBackFunc(FPxCBFuncDef Func1); enum enumFPxCallBackEvent { evFPxNone = 0, evFPxCreate = 1, evFPxConnected = 2, evFPxDisConnected = 3, evFPxClosed = 4, evFPxStateChange =5, evFPxTimeSync=6, evFPxDataUpdate =7, }; #endif /* __FPX_H__ */ Ext_FPx/Inc/main.h
New file @@ -0,0 +1,94 @@ /** ****************************************************************************** * @file : main.h * @brief : Header for main.c file. * This file contains the common defines of the application. ****************************************************************************** ** This notice applies to any and all portions of this file * that are not between comment pairs USER CODE BEGIN and * USER CODE END. Other portions of this file, whether * inserted by the user or by software development tools * are owned by their respective copyright owners. * * COPYRIGHT(c) 2018 STMicroelectronics * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __MAIN_H__ #define __MAIN_H__ /* Includes ------------------------------------------------------------------*/ #include "BoardType.h" #include "stm32f0xx_ll_adc.h" #include "stm32f0xx_ll_iwdg.h" #include "stm32f0xx_ll_crc.h" #include "stm32f0xx_ll_dma.h" #include "stm32f0xx_ll_spi.h" #include "stm32f0xx_ll_usart.h" #include "stm32f0xx_ll_rcc.h" #include "stm32f0xx_ll_system.h" #include "stm32f0xx_ll_gpio.h" #include "stm32f0xx_ll_exti.h" #include "stm32f0xx_ll_bus.h" #include "stm32f0xx_ll_cortex.h" #include "stm32f0xx_ll_tim.h" #include "stm32f0xx_ll_utils.h" #include "stm32f0xx_ll_pwr.h" /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private define ------------------------------------------------------------*/ /* ########################## Assert Selection ############################## */ /** * @brief Uncomment the line below to expanse the "assert_param" macro in the * HAL drivers code */ /* #define USE_FULL_ASSERT 1U */ /* USER CODE BEGIN Private defines */ #include "KBus.h" extern stKBusDef KBus1; /* USER CODE END Private defines */ #ifdef __cplusplus extern "C" { #endif void _Error_Handler(char *, int); #define Error_Handler() _Error_Handler(__FILE__, __LINE__) #ifdef __cplusplus } #endif #endif /* __MAIN_H__ */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ Ext_FPx/Inc/stm32f0xx_hal_conf.h
Ext_FPx/Inc/stm32f0xx_ll_rcc.h
Ext_FPx/Src/BoardType.c
Ext_FPx/Src/FPx.c
New file @@ -0,0 +1,304 @@ /** ****************************************************************************** * @file : FPx.c * @brief : FPx funcstions program body ****************************************************************************** */ #include "globaldef.h" #include "FPx.h" #include "string.h" #include "functions.h" // uint8_t PktBuf1[64]; uint8_t PktBuf2[64]; uint8_t PktLen1=0; uint8_t PktLen2=0; /* uint8_t bReceiving; uint8_t nReceivedLen; uint8_t bSending; uint8_t bSentLen; uint8_t bConfiged=0; uint8_t nConfigStationId=0; uint8_t nInputBytes=8; uint8_t nOutputBytes=8; uint8_t nIndex=0; volatile uint8_t oldSYN=0; int RSTCount0; uint8_t bFirstReq = 0; FPxCBFuncDef FPxCBFunc; uint8_t bFPxCallBackFuncSet = 0; */ stFPxStat FPxStat; stFPxMem FPxMem; uint8_t FPx_Init(int nChilds) { bSPI1Sending=0; bSPI1Recving=0; if (nChilds==0) { FPxStat.nInputBytes=1; //根据子机数量,报告扩展容量 FPxStat.nOutputBytes=1; } else if (nChilds ==1) { FPxStat.nInputBytes=3; //只有一个子机也分配一个完整DT FPxStat.nOutputBytes=2; } else { FPxStat.nInputBytes=nChilds+1; //根据子机数量,报告扩展容量 FPxStat.nOutputBytes=nChilds; } SetACKPin_0(); SetACKPin_0(); SetFPxDEPin_0(); HAL_Delay(10); FPxStat.RSTCount0=GetuS(); return 0; } uint8_t FPx_SetIOCount(int nInputBytes, int nOutputBytes) { FPxStat.nInputBytes=nInputBytes; //设置扩展容量,字节单位 FPxStat.nOutputBytes=nOutputBytes; return 0; } int FPxSetCallBackFunc(FPxCBFuncDef func1) { FPxStat.FPxCBFunc = func1; FPxStat.bFPxCallBackFuncSet = 1; return 0; } uint8_t FPx_Proc() { uchar CurRST=GetRSTPin(); uchar CurSEL=GetSELPin(); uchar CurSYN=GetSYNPin(); uchar CurACK=GetACKPin(); uchar CurOE=GetOEPin(); // KMem.WY[4]=CurRST; // KMem.WY[5]=CurSEL; // KMem.WY[6]=CurSYN; // KMem.WY[7]=CurACK; if (CurOE) { for (int j=0;j<FPxStat.nOutputBytes;j++) { FPxMem.WLYB[j]=0; } if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxStateChange,0,0); if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxDataUpdate,0,0); } if (!CurRST) {FPxStat.RSTCount0=GetuS();} if (!FPxStat.bFirstReq && CurRST) { int RSTCount = GetuS() - FPxStat.RSTCount0 ; if (RSTCount>=10000) { SetACKPin_1(); FPxStat.bFirstReq=1; // RSTCount=0; // bSPI1Recving=1; // KMem.WX[7]=RSTCount/1000; } } if (CurSYN ==0 && FPxStat.oldSYN != 0) { KMem.WDT[121] = KMem.WDT[122]; KMem.WDT[122]=0; } if (CurSEL && CurSYN !=0 && FPxStat.oldSYN == 0){ bSPI1Recving=1; nSPI1RecvPos=0; LL_SPI_Disable(SPI2); nSPI1RecvPos=0; LL_SPI_Enable(SPI2); } if (CurSEL && CurSYN && !bSPI1Sending && !bSPI1Recving) { bSPI1Recving=1; nSPI1RecvPos=0; } if (CurSYN == 0){ bSPI1Recving=0; nSPI1RecvPos=0; } FPxStat.oldSYN=CurSYN; /* if (bSPI1RecvDone) { bSPI1RecvDone=0; ParsePkt(SPI1RecvBuf,nSPI1RecvLenInBuf); } // */ return 0; } uint8_t FPxCalBCC(uint8_t* pBuf, uint8_t len1) { uint8_t BCC=0; for (int i=0;i<len1;i++) { BCC+=pBuf[i]&0x0f; } BCC&=0x0f; return BCC; } uint8_t FPxChecPkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; return res; } uint8_t FPxParsePkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; uint8_t nST=pBuf[0]; uint8_t nCMD=nST&0x7; uint8_t nStationID=nST&0xf8; logData(0xff); if (nStationID<0x80) return 0; switch (nCMD) { case CMD_0_QUERY: if (!FPxStat.bConfiged || (FPxStat.bConfiged && nStationID == FPxStat.nConfigStationId)) { KMem.WDT[8]++; pFPxQuRplyPkt p1 = (pFPxQuRplyPkt)PktBuf2; p1->Hdr1=nST; p1->nInputBytes=0x30|FPxStat.nInputBytes; p1->nOutputBytes=0x30|FPxStat.nOutputBytes; p1->nParam1=0x30|0x05; p1->nBCC= 0x30|FPxCalBCC(PktBuf2,4); p1->End1=0x0d; logData(0x11); FPxSendPkt(PktBuf2,sizeof(stFPxQuRplyPkt)); FPxStat.nConfigStationId=nStationID; FPxStat.bConfiged=1; if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxStateChange,0,0); } bSPI1Recving=1; break; case CMD_1: KMem.WDT[9]++; // bSPI1Recving=1; break; case CMD_2: KMem.WDT[10]++; // bSPI1Recving=1; break; case CMD_3_EXCHG: if (!FPxStat.bConfiged || FPxStat.nConfigStationId != nStationID) { bSPI1Recving=1; break; } KMem.WDT[11]++; { for (int j=0;j<FPxStat.nOutputBytes;j++) { FPxMem.WLYB[j]=((pBuf[j*2 + 1]&0xf)<<4) + ((pBuf[j*2 + 2]&0xf)<<0); } /* test for (int j=0;j<nOutputBytes;j++) { KMem.WYB[j]=(0xff); } // */ if (FPxStat.bFPxCallBackFuncSet) FPxStat.FPxCBFunc(evFPxDataUpdate,0,0); // KMem.WDT[2]=((pBuf[1]&0xf)<<4) + ((pBuf[2]&0xf)<<0) + ((pBuf[3]&0xf)<<12) + ((pBuf[4]&0xf)<<8); pFPxEXGRplyPkt p1 = (pFPxEXGRplyPkt)PktBuf2; p1->Hdr1=nST; for (int j=0;j<FPxStat.nInputBytes;j++) { p1->nInputBytes[j*2 + 0]=0x30|HiHofB(FPxMem.WLXB[j]); //((KMem.DT[0]>>4)&0x0f); p1->nInputBytes[j*2 + 1]=0x30|LoHofB(FPxMem.WLXB[j]); //((KMem.DT[0]>>0)&0x0f); } //p1->nInputBytes[0]=0x30|HiHofB(LoBofW(KMem.DT[0])); //((KMem.DT[0]>>4)&0x0f); //p1->nInputBytes[1]=0x30|LoHofB(LoBofW(KMem.DT[0])); //((KMem.DT[0]>>0)&0x0f); //p1->nInputBytes[2]=0x30|HiHofB(HiBofW(KMem.DT[0])); //((KMem.DT[0]>>12)&0x0f); //p1->nInputBytes[3]=0x30|LoHofB(HiBofW(KMem.DT[0])); //((KMem.DT[0]>>8)&0x0f); //p1->nInputBytes[4]=0x30|((KMem.DT[1]>>4)&0x0f); //p1->nInputBytes[5]=0x30|((KMem.DT[1]>>0)&0x0f); PktBuf2[FPxStat.nInputBytes*2 + 1 ]=0x30|FPxCalBCC(PktBuf2,FPxStat.nInputBytes*2+1); // p1->nBCC= 0x30|CalBCC(PktBuf2,7); PktBuf2[FPxStat.nInputBytes*2 + 2 ]=0x0d; // p1->End1=0x0d; FPxSendPkt(PktBuf2,FPxStat.nInputBytes*2 + 3); } bSPI1Recving=1; break; case CMD_4: KMem.WDT[12]++; // bSPI1Recving=1; break; case CMD_5: KMem.WDT[13]++; // bSPI1Recving=1; break; case CMD_6: KMem.WDT[14]++; // bSPI1Recving=1; break; case CMD_7_END: KMem.WDT[15]++; if (FPxStat.bConfiged && FPxStat.nConfigStationId == nStationID) { //SetFPxDEPin_0(); SetACKPin_1(); } bSPI1Recving=1; break; default: KMem.WDT[18]++; bSPI1Recving=1; break; } KMem.WDT[24+(len1&0x0f)]++; return res; } uint8_t FPxSendPkt(uint8_t * pBuf, uint8_t len1) { uint8_t res=0; KMem.WR[len1&0x0f]++; if (!bSPI1Sending) { uint8_t value; memcpy(SPI1SendBuf,pBuf,len1); nSPI1ToSendLen=len1; nSPI1SentLen=0; // SetFPxDEPin_1(); // SetACKPin_0(); value = SPI1SendBuf[nSPI1SentLen]; LL_SPI_TransmitData8(SPI1,value); bSPI1Sending=1; logData(value); // passive mode SetFPxDEPin_1(); SetACKPin_0(); } return res; } Ext_FPx/Src/main.c
New file @@ -0,0 +1,794 @@ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** ** This notice applies to any and all portions of this file * that are not between comment pairs USER CODE BEGIN and * USER CODE END. Other portions of this file, whether * inserted by the user or by software development tools * are owned by their respective copyright owners. * * COPYRIGHT(c) 2018 STMicroelectronics * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f0xx_hal.h" /* USER CODE BEGIN Includes */ #include "Globaldef.h" #include "debug.h" #include "Functions.h" #include "KMachine.h" #include "PLCfunctions.h" //#include "KBus.h" #include "KLink.h" #include "string.h" #include "BSP.h" #include "ModbusRTU.h" #if (BOARD_TYPE == 13) #include "w5500_port.h" #include "../src/Ethernet/socket.h" #include "../src/Ethernet/loopback.h" #elif (BOARD_TYPE == 14) #include "FPx.h" #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) #include "KWireless.h" //#include "user.h" //#include "../src/radio/inc/sx126x-board.h" #endif /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ #define RX2BUFSIZE 64 #define TX2BUFSIZE 64 unsigned char Uart1RxBuf[128]; unsigned char Uart1TxBuf[260]; unsigned char Uart2RxBuf[RX2BUFSIZE]; unsigned char Uart2TxBuf[TX2BUFSIZE]; unsigned char SlowFlicker=0; unsigned char FastFlicker=0; unsigned int Uart1IdelTimer = 0; stBinProg1 * pProgs = (stBinProg1 *)STORE_PRG_BASE; uint32_t us1,us2,us3,us4,us5,us6; stKBusDef KBus1; #define RAM_START_ADDR 0x20000000 #define VECTOR_SIZE 45 #define ApplicationAddress 0x08001000 //应用程序首地址定义 /* static void RemapIrqVector(void) { memcpy((void*)RAM_START_ADDR, (void *)ApplicationAddress, VECTOR_SIZE * 4); LL_APB1_GRP2_EnableClock(LL_APB1_GRP2_PERIPH_SYSCFG); LL_SYSCFG_SetRemapMemory(LL_SYSCFG_REMAP_SRAM); }*/ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ const unsigned char LEDSEGTAB[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, //0-F 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1, //0.-F. 0x00,0x40, // ,-,_,~,o,n,N,<,>,J,r, }; /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ int HexToInt(char ch) { if (ch>='0' && ch <='9') return ch-'0'; if (ch>='A' && ch <='F') return ch-'A'+10; if (ch>='a' && ch <='f') return ch-'a'+10; return 0; } void HAL_SYSTICK_Callback(void) { static int Count=0; CurTickuS += 100; nCurTick++; KBus1.nSlaveTick++; Count++; if (Count>=10000) { Count=0; KMem.CurTimeSec++; KMem.ThisRunTime++; KMem.TotalRunTime++; if (KMRunStat.bLEDFlick) KMRunStat.bLEDFlick--; if (KMRunStat.bLEDFlick >120) KMRunStat.bLEDFlick=120; } return; } void PendSvCallBack() { #if (BOARD_TYPE == 14) ///* if (bSPI1RecvDone) { bSPI1RecvDone=0; FPxParsePkt(SPI1RecvBuf,nSPI1RecvLenInBuf); } //*/ #endif if (Uart2Stat.bPacketRecved) { KBusParsePacket(&KBus1, (pKBPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); Uart2RecvBuf1DataLen=0; Uart2Stat.bPacketRecved=0; Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); } } /* FPx通讯回调函数,当通讯状态改变或数据更新时被调用。 */ void * FPxCallBackFunc(int nEvent, void * pBuf, int nLen1) { switch (nEvent){ case evFPxNone: break; case evFPxCreate: break; case evFPxConnected: break; case evFPxDisConnected: break; case evFPxClosed: break; case evFPxStateChange: break; case evFPxTimeSync: break; case evFPxDataUpdate: for (int i=0;i<16;i++){ KBusMem.WLY[i]=FPxMem.WLY[i]; } for (int i=0;i<16;i++) { FPxMem.WLX[i]=KBusMem.WLX[i]; } // KBusMem.WLY[0]=0x0301; break; default: break; } return 0; } /* KBus通讯回调函数,当通讯状态改变或数据更新时被调用。 或者系统请求时。 */ void * KBusEvCallBackFunc(void* pParam, int nEvent, void *pBuf, int nLen1) { switch (nEvent){ case KBusEvNone: break; case KBusEvCreate: break; case KBusEvConnected: break; case KBusEvDisConnected: break; case KBusEvClosed: break; case KBusEvStateChange: break; case KBusEvTimeSync: break; case KBusEvDataUpdate: for (int i=0;i<16;i++){ KBusMem.WLY[i]=FPxMem.WLY[i]; } for (int i=0;i<16;i++) { KMem.WLX[i]=KBusMem.WLX[i]; FPxMem.WLX[i]=KBusMem.WLX[i]; } // KBusMem.WLY[0]=0x0301; break; default: break; } return 0; } /* USER CODE END 0 */ /** * @brief The application entry point. * * @retval None */ int main(void) { /* USER CODE BEGIN 1 */ // RemapIrqVector(); ///* __set_PRIMASK(0); //打开全局中断 KMRunStat.bLEDFlick = 1; InitUartstat(&Uart1Stat,Uart1RxBuf,sizeof(Uart1RxBuf),Uart1TxBuf,sizeof(Uart1TxBuf)); InitUartstat(&Uart2Stat,Uart2RxBuf,sizeof(Uart2RxBuf),Uart2TxBuf,sizeof(Uart2TxBuf)); /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ KMem.LastScanTime=0; KMem.ScanTimeuS=0; KMem.MinScanTimeuS=99999; KMem.MaxScanTimeuS=0; // KMem.SDD[14]=(unsigned int)&KMStoreSysCfg; // KMem.SDD[15]=(unsigned int)&KMStoreSysCfg1; KMem.SDD[12]=((uint32_t *)UID_BASE)[0]; // KMem.SDD[13]=((uint32_t *)UID_BASE)[1]; // KMem.SDD[14]=((uint32_t *)UID_BASE)[2]; KMem.SDD[13]=PendSvCount; KMem.SDD[14]=RCC->CSR; // KMem.SDD[15]=*(uint32_t *)FLASHSIZE_BASE; // KMem.SDD[16]=(unsigned int)&KMSysCfg; /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ TickFreq=10000; //Tick频率 InituS(TickFreq); // HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/TickFreq); //重新定义SysTick的频率 /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); KMachineInit(); ReadSysCfgFromFlash(&storedKMSysCfg); KMRunStat.bLEDFlick = 1; int bKBusMaster,bKBusSlave,bKBusRepeater;; int nChilds; KMem.CurJumperSW=ReadJumperSW(); KMem.EffJumperSW=KMem.CurJumperSW; nChilds=KMem.EffJumperSW&0x0f; // Uart2Baud = AlterUart2Baud; KBusSetEvCallBackFunc(&KBus1, &KBusEvCallBackFunc), KBusInitMaster(&KBus1, (KBusSendPktFuncDef)PutStr2, nChilds); #if (BOARD_TYPE == 14) KMem.EffJumperSW|=0x10; nChilds=KMem.EffJumperSW&0x0f; if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} FPxSetCallBackFunc(&FPxCallBackFunc); FPx_Init(nChilds); FPx_SetIOCount(8,5); #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) nStationID=1 ;//KMem.EffJumperSW&0x0f; // if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;} // else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} // else {bKBusMaster=0;bKBusSlave=1;} #else nStationID=KMem.EffJumperSW&0x0f; if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;} else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} #endif //if (KMem.EffJumperSW == 0x00) Uart1Baud = DefaultUart1Baud; MX_USART1_UART_Init(); MX_USART2_UART_Init(); MX_SPI1_Init(); LL_SPI_EnableIT_RXNE(SPI1); #if (BOARD_TYPE == 14) // MX_SPI2_Init(); // MX_ADC_Init(); #else MX_SPI2_Init(); MX_ADC_Init(); #endif MX_IWDG_Init(); MX_TIM6_Init(); LL_TIM_EnableCounter(TIM6); /* USER CODE BEGIN 2 */ LL_USART_EnableIT_RXNE(USART1); LL_USART_EnableIT_IDLE(USART1); LL_USART_EnableIT_TC(USART1); // LL_USART_EnableIT_RXNE(USART2); Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); LL_USART_EnableIT_IDLE(USART2); LL_USART_EnableIT_TC(USART2); #if (BOARD_TYPE == 13) int res; res = w5500_init(); KMem.SDD[28]=res; // res=socket(0,Sn_MR_TCP,5000,0); KMem.SDD[29]=res; // res = listen(0); #endif // if (bKBusSlave) { // LL_USART_EnableAutoBaudRate(USART1); // LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); // LL_USART_EnableAutoBaudRate(USART2); // LL_USART_SetAutoBaudRateMode(USART2, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); } //LL_USART_EnableIT_TXE(USART1); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ HAL_Delay(10); SetRunLed(1); //Turn On Run Led SetErrLed(0); //Turn Off Err Led #if (BOARD_TYPE == 14) // PutOutput (0); //Clear all Output // Enable595(1); //Enable 595 Output #else PutOutput (0); //Clear all Output Enable595(1); //Enable 595 Output #endif if (GetBoardType() == 7 || GetBoardType() ==8 || GetBoardType() == 9 || GetBoardType() ==10 ||GetBoardType() ==13 ||GetBoardType() ==15 || BOARD_TYPE == 16) { displayInput(0xffff); // EnableDisIn(1); //Input Diaplay Enable 595 } SetOutStat(0); //OK Good, signal ShowInitInfo(); KMem.LastScanTime = GetuS(); KMRunStat.WorkMode=0; KMRunStat.WorkMode2=0; KMRunStat.WorkMode = storedKMSysCfg.theKMSysCfg.workmode; if (KMRunStat.WorkMode == 1){ InitPLC(); KMRunStat.WorkMode2 = KMem.CurJumperSW&0x20 ; if (KMRunStat.WorkMode2) { StartPLC(); } } #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) KWireLessInit(KMem.EffJumperSW&0x20,KMem.EffJumperSW&0x0f); KWireLessStart(); #endif while (1) { //int MyKeyStat1,MyKeyStat2; //MyKeyStat1=GetInput(); //*((unsigned int *)&(PLCMem.SDT[10]))=nRunCount; // KMem.nRunCount=nRunCount; SlowFlicker=0; FastFlicker=1; us1=GetuS(); int haltick=HAL_GetTick(); int thisJumperSW=ReadJumperSW(); if (KMRunStat.WorkMode&1){ if (thisJumperSW&0x20 && !(KMem.CurJumperSW&0x20)) // Run 开关 正 跳变。 {StartPLC();} if (!(thisJumperSW&0x20) && (KMem.CurJumperSW&0x20)) // Run 开关 负 跳变。 {StopPLC();} } KMem.CurJumperSW=thisJumperSW; KMem.haltick=haltick; // KMem.TotalRunTime=TotalRunTime; // KMem.ThisRunTime=ThisRunTime; // *((unsigned int *)&(PLCMem.SDT[2]))=nChilds; // KMem.SDD[13]=PendSvCount; // KMem.SDD[14]=RCC->CSR; int a; a = LL_GPIO_ReadInputPort(GPIOA); KMem.WDT[120]=a; a = LL_GPIO_ReadInputPort(GPIOB); KMem.WDT[121]=a; a = LL_GPIO_ReadInputPort(GPIOC); KMem.WDT[122]=a; a = LL_GPIO_ReadInputPort(GPIOD); KMem.WDT[123]=a; #if (BOARD_TYPE == 14) // KMem.WX[0]= GetInput(); FPx_Proc(); // KMem.WYB[0]++; // KMem.WYB[1]++; #else KMem.WX[0]= GetInput(); #endif if (GetBoardType() == 7 || GetBoardType() ==8 || GetBoardType() == 9 || GetBoardType() ==10 || GetBoardType() ==15 || GetBoardType() ==16) { displayInput(KMem.WX[0]); } us2=GetuS(); /* if (PowerDownEvent) { KMem.WX[0]=0;} if ((KMem.nRunCount &0x1f) == 0x02) { ADCProcess(); if (PowerDownEvent) { KMem.WX[0]=0; if (!OldPowerDownEvent) { OldPowerDownEvent = PowerDownEvent; OldPowerDownEventTime = nCurTick; PowerDownProcess(); } }else { if (OldPowerDownEvent) { OldPowerDownEvent=PowerDownEvent; PowerRecoverProcess(); } } } // */ #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) Radio.IrqProcess( ); // Process Radio IRQ KWL_Process(1); #endif // pProgs = (stBinProg1 *) STORE_PRG_BASE; if ( KMRunStat.WorkMode==1 ) //&& bKBusMaster) { if (KMRunStat.nBinProgBank == 0){ pProgs=(stBinProg1 *)STORE_PRG_BASE; }else { pProgs=(stBinProg1 *)ALT_PRG_BASE; } nSizeProg1=KMRunStat.nBinProgSize; // pProgs=(stBinProg1 *)prog1; ProcessPLCBinProg(pProgs, nSizeProg1); } KMem.ScanTimeuS=us2-KMem.LastScanTime; KMem.LastScanTime = us2; if (KMem.ScanTimeuS < KMem.MinScanTimeuS) {KMem.MinScanTimeuS = KMem.ScanTimeuS;} if (KMem.ScanTimeuS > KMem.MaxScanTimeuS) {KMem.MaxScanTimeuS = KMem.ScanTimeuS;} // if (bKBusRepeater) { KBusRepeaterFunc(); } us3=GetuS(); if (bKBusMaster) { #if (BOARD_TYPE == 14) for (int i=0;i<FPxStat.nOutputBytes;i++) {KBusMem.WLYB[i]=FPxMem.WLYB[i];} #endif if (nChilds>0) { KBusMasterFunc(&KBus1); } } if (haltick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (haltick&0x00000800) FastFlicker=1; else FastFlicker=0; if (bKBusSlave) { KBusSlaveFunc(&KBus1); if (KBus1.nSlaveTick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (KBus1.nSlaveTick&0x00000800) FastFlicker=1; else FastFlicker=0; } // KMem.WY[0]=nCount2>>5; if (KMem.RunStat) {KMem.RunStat--;} if (KMem.ErrStat) {KMem.ErrStat--;} if (KMRunStat.bLEDFlick) { SetRunLed(FastFlicker); SetErrLed(FastFlicker); SetErr2Led(FastFlicker); SetOutStat(!FastFlicker); //KMRunStat.bLEDFlick-- ; } else { if (KMRunStat.WorkMode==1 ) { if (PLCMem.bPLCRunning){SetRunLed(SlowFlicker);} else {SetRunLed(0);} } else { if (!KBus1.RunStat) SetRunLed(SlowFlicker); else SetRunLed(FastFlicker); } if (!KBus1.ErrStat) { SetErrLed(0); SetErr2Led(0); SetOutStat(1); } else { SetErrLed(FastFlicker); SetErr2Led(FastFlicker); SetOutStat(0); } } // SetRunLed(RunStat); // SetErrLed(ErrStat); us4=GetuS(); // EffJumperSW = GetInput(20)&0xff; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) if ((KMem.EffJumperSW&0x10)==0x10) { KMem.WFY[1]=KMem.WLY[0]; KMem.WLX[0]=KMem.WFX[1]; }else { KMem.WFY[1]=KMem.WX[0]; KMem.WY[0]=KMem.WFX[1]; } // KMem.WY[0]=KMem.WLY[0]; #elif (BOARD_TYPE == 14) #else KMem.WLX[0]=KMem.WX[0]; KMem.WY[0]=KMem.WLY[0]; #endif us5=GetuS(); #if (BOARD_TYPE == 14) // PutOutput (KMem.WY[0]); #else PutOutput (KMem.WY[0]); #endif //PutOutput (KMem.nRunCount>>8); //PutOutput(0x0f70); // if (bKBusMaster) ShowInfo(); // if (bKBusSlave) ShowInfo(); us6=GetuS(); add1(10,10); for (int i=0;i<64;i++) { // ProcessTimer(i); } KMem.nRunCount++; // int nSize=sizeof(stKBusChnStat); // memcpy(&KMem.SDT[64],&KBusChnStats[1],nSize); // memcpy(&KMem.SDT[64+nSize/2],&KBusChnStats[2],nSize); // for (int i=0;i<128;i++) { SDT[i]=i; } // SDT[48]=55; if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved) { int res1 = -1; res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); if (res1 !=0) { KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); } Uart1RecvBuf1DataLen=0; Uart1Stat.bPacketRecved=0; Uart1IdelTimer = 0; }else { if (Uart1IdelTimer>600000) { // 超过60秒没有数据传输,重新进入自适应波特率状态 LL_USART_EnableAutoBaudRate(USART1); LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); }else { Uart1IdelTimer++; } } if (bKBusSlave) HAL_Delay(0); /* if (!IsEmpty(&Uart1Stat.QRx)) { unsigned char k=PopOne(&Uart1Stat.QRx); if (k=='L') { clearscreen(); } } */ #if (BOARD_TYPE == 14) const unsigned int pins[6]= { LL_GPIO_PIN_10,LL_GPIO_PIN_11,LL_GPIO_PIN_12,LL_GPIO_PIN_13,LL_GPIO_PIN_14,LL_GPIO_PIN_15}; //process 6 output { // mapping bits. for (int i=0;i<6;i++) { USHORT bitaddr = storedKMSysCfg.theKMSysCfg.OutMappings[i]; UCHAR type = (bitaddr&0xf000) >>12; USHORT byteaddr = (bitaddr&0x0ff0) >>4; UCHAR bitpos = bitaddr &0x0f; UCHAR bitvalue = 0 ; if (byteaddr>0) { if (type == 0) bitvalue = KMem.WXB[byteaddr-1] & ( 1 << bitpos ); else if (type == 1 ) bitvalue = KMem.WYB[byteaddr-1] & ( 1 << bitpos ); } if (bitvalue){ LL_GPIO_SetOutputPin(GPIOB,pins[i]);} else {LL_GPIO_ResetOutputPin(GPIOB,pins[i]);} } } #endif /* { unsigned char pos,seg; unsigned short val; pos=((KMem.nRunCount)&0x3); //val=(KMem.nRunCount)&0xfff; val=KMem.ErrStat; char buf5[20]; sprintf(buf5,"%4d",val); val=buf5[3-pos]; if (val <'0' || val >'9') {seg=0;} else {seg=LEDSEGTAB[val-'0'];} pos=1<<pos; //pos=1; //seg=2; seg=~seg; // PutOutputSPI1(pos|(seg<<8)); } */ #if (BOARD_TYPE == 13) w5500_network_info_show(); // loopback_tcps(0,str1,5000); #endif LL_IWDG_ReloadCounter(IWDG); } //while (1) ; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /** * @brief This function is executed in case of error occurrence. * @param file: The file name as string. * @param line: The line in file as a number. * @retval None */ void _Error_Handler(char *file, int line) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ Ext_FPx/Src/main.c.old
New file @@ -0,0 +1,705 @@ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** ** This notice applies to any and all portions of this file * that are not between comment pairs USER CODE BEGIN and * USER CODE END. Other portions of this file, whether * inserted by the user or by software development tools * are owned by their respective copyright owners. * * COPYRIGHT(c) 2018 STMicroelectronics * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "stm32f0xx_hal.h" /* USER CODE BEGIN Includes */ #include "Globaldef.h" #include "debug.h" #include "Functions.h" #include "KMachine.h" #include "PLCfunctions.h" //#include "KBus.h" #include "KLink.h" #include "string.h" #include "BSP.h" #include "ModbusRTU.h" #if (BOARD_TYPE == 13) #include "w5500_port.h" #include "../src/Ethernet/socket.h" #include "../src/Ethernet/loopback.h" #elif (BOARD_TYPE == 14) #include "FPx.h" #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) #include "KWireless.h" //#include "user.h" //#include "../src/radio/inc/sx126x-board.h" #endif /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ #define RX2BUFSIZE 64 #define TX2BUFSIZE 64 unsigned char Uart1RxBuf[128]; unsigned char Uart1TxBuf[260]; unsigned char Uart2RxBuf[RX2BUFSIZE]; unsigned char Uart2TxBuf[TX2BUFSIZE]; unsigned char SlowFlicker=0; unsigned char FastFlicker=0; unsigned int Uart1IdelTimer = 0; stBinProg1 * pProgs = (stBinProg1 *)STORE_PRG_BASE; uint32_t us1,us2,us3,us4,us5,us6; stKBusDef KBus1; /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN PFP */ /* Private function prototypes -----------------------------------------------*/ const unsigned char LEDSEGTAB[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71, //0-F 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1, //0.-F. 0x00,0x40, // ,-,_,~,o,n,N,<,>,J,r, }; /* USER CODE END PFP */ /* USER CODE BEGIN 0 */ int HexToInt(char ch) { if (ch>='0' && ch <='9') return ch-'0'; if (ch>='A' && ch <='F') return ch-'A'+10; if (ch>='a' && ch <='f') return ch-'a'+10; return 0; } void HAL_SYSTICK_Callback(void) { static int Count=0; CurTickuS += 100; nCurTick++; KBus1.nSlaveTick++; Count++; if (Count>=10000) { Count=0; KMem.CurTimeSec++; KMem.ThisRunTime++; KMem.TotalRunTime++; if (KMRunStat.bLEDFlick) KMRunStat.bLEDFlick--; if (KMRunStat.bLEDFlick >120) KMRunStat.bLEDFlick=120; } return; } /* USER CODE END 0 */ /** * @brief The application entry point. * * @retval None */ int main(void) { /* USER CODE BEGIN 1 */ KMRunStat.bLEDFlick = 1; InitUartstat(&Uart1Stat,Uart1RxBuf,sizeof(Uart1RxBuf),Uart1TxBuf,sizeof(Uart1TxBuf)); InitUartstat(&Uart2Stat,Uart2RxBuf,sizeof(Uart2RxBuf),Uart2TxBuf,sizeof(Uart2TxBuf)); /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ for (int i=0;i<9;i++) { // memset(KBusChnStats[i],0,0); KBusChnStats[i].SendPackets=0; KBusChnStats[i].RecvPackets=0; KBusChnStats[i].LostPackets=0; KBusChnStats[i].CtnLstPkts=0; KBusChnStats[i].MaxCtnLstPkts=0; KBusChnStats[i].NotPkgErr=0; KBusChnStats[i].PkgLenErr=0; KBusChnStats[i].TimeOutErr=0; KBusChnStats[i].BCCErr=0; KBusChnStats[i].Delay=0; KBusChnStats[i].MaxDelay=0; } KMem.LastScanTime=0; KMem.ScanTimeuS=0; KMem.MinScanTimeuS=99999; KMem.MaxScanTimeuS=0; // KMem.SDD[14]=(unsigned int)&KMStoreSysCfg; // KMem.SDD[15]=(unsigned int)&KMStoreSysCfg1; KMem.SDD[12]=((uint32_t *)UID_BASE)[0]; // KMem.SDD[13]=((uint32_t *)UID_BASE)[1]; // KMem.SDD[14]=((uint32_t *)UID_BASE)[2]; KMem.SDD[13]=PendSvCount; KMem.SDD[14]=RCC->CSR; // KMem.SDD[15]=*(uint32_t *)FLASHSIZE_BASE; // KMem.SDD[16]=(unsigned int)&KMSysCfg; /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ TickFreq=10000; //Tick频率 InituS(TickFreq); // HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/TickFreq); //重新定义SysTick的频率 /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); KMachineInit(); ReadSysCfgFromFlash(&storedKMSysCfg); KMRunStat.bLEDFlick = 1; KMem.CurJumperSW=ReadJumperSW(); KMem.EffJumperSW=KMem.CurJumperSW; // Uart2Baud = AlterUart2Baud; #if (BOARD_TYPE == 14) KMem.EffJumperSW|=0x10; nStationID=KMem.EffJumperSW&0x0f; if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} nChilds=nStationID; FP0_Init(); #elif (BOARD_TYPE == 15 || BOARD_TYPE == 16) nStationID=1 ;//KMem.EffJumperSW&0x0f; // if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;} // else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} // else {bKBusMaster=0;bKBusSlave=1;} #else nStationID=KMem.EffJumperSW&0x0f; if (KMem.EffJumperSW == 0x1f) {bKBusRepeater=1;bKBusMaster=1;bKBusSlave=0;} else if ((KMem.EffJumperSW&0x10)!=0) {bKBusMaster=1;bKBusSlave=0;} else{bKBusMaster=0;bKBusSlave=1;} #endif nChilds=nStationID; nCurPollId=1; //if (KMem.EffJumperSW == 0x00) Uart1Baud = DefaultUart1Baud; MX_USART1_UART_Init(); MX_USART2_UART_Init(); MX_SPI1_Init(); LL_SPI_EnableIT_RXNE(SPI1); #if (BOARD_TYPE == 14) // MX_SPI2_Init(); // MX_ADC_Init(); #else MX_SPI2_Init(); MX_ADC_Init(); #endif MX_IWDG_Init(); MX_TIM6_Init(); LL_TIM_EnableCounter(TIM6); /* USER CODE BEGIN 2 */ LL_USART_EnableIT_RXNE(USART1); LL_USART_EnableIT_IDLE(USART1); LL_USART_EnableIT_TC(USART1); // LL_USART_EnableIT_RXNE(USART2); Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1)); LL_USART_EnableIT_IDLE(USART2); LL_USART_EnableIT_TC(USART2); #if (BOARD_TYPE == 13) int res; res = w5500_init(); KMem.SDD[28]=res; // res=socket(0,Sn_MR_TCP,5000,0); KMem.SDD[29]=res; // res = listen(0); #endif // if (bKBusSlave) { // LL_USART_EnableAutoBaudRate(USART1); // LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); // LL_USART_EnableAutoBaudRate(USART2); // LL_USART_SetAutoBaudRateMode(USART2, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); } //LL_USART_EnableIT_TXE(USART1); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ HAL_Delay(10); SetRunLed(1); //Turn On Run Led SetErrLed(0); //Turn Off Err Led #if (BOARD_TYPE == 14) // PutOutput (0); //Clear all Output // Enable595(1); //Enable 595 Output #else PutOutput (0); //Clear all Output Enable595(1); //Enable 595 Output #endif if (GetBoardType() == 7 || GetBoardType() ==8 || GetBoardType() == 9 || GetBoardType() ==10 ||GetBoardType() ==13 ||GetBoardType() ==15 || BOARD_TYPE == 16) { displayInput(0xffff); // EnableDisIn(1); //Input Diaplay Enable 595 } SetOutStat(0); //OK Good, signal ShowInitInfo(); KMem.LastScanTime = GetuS(); KMRunStat.WorkMode=0; KMRunStat.WorkMode2=0; KMRunStat.WorkMode = storedKMSysCfg.theKMSysCfg.workmode; if (KMRunStat.WorkMode == 1){ InitPLC(); KMRunStat.WorkMode2 = KMem.CurJumperSW&0x20 ; if (KMRunStat.WorkMode2) { StartPLC(); } } #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) KWireLessInit(KMem.EffJumperSW&0x20,KMem.EffJumperSW&0x0f); KWireLessStart(); #endif while (1) { //int MyKeyStat1,MyKeyStat2; //MyKeyStat1=GetInput(); //*((unsigned int *)&(PLCMem.SDT[10]))=nRunCount; // KMem.nRunCount=nRunCount; SlowFlicker=0; FastFlicker=1; us1=GetuS(); int haltick=HAL_GetTick(); int thisJumperSW=ReadJumperSW(); if (KMRunStat.WorkMode&1){ if (thisJumperSW&0x20 && !(KMem.CurJumperSW&0x20)) // Run 开关 正 跳变。 {StartPLC();} if (!(thisJumperSW&0x20) && (KMem.CurJumperSW&0x20)) // Run 开关 负 跳变。 {StopPLC();} } KMem.CurJumperSW=thisJumperSW; KMem.haltick=haltick; // KMem.TotalRunTime=TotalRunTime; // KMem.ThisRunTime=ThisRunTime; // *((unsigned int *)&(PLCMem.SDT[2]))=nChilds; // KMem.SDD[13]=PendSvCount; // KMem.SDD[14]=RCC->CSR; int a; a = LL_GPIO_ReadInputPort(GPIOA); KMem.WDT[120]=a; a = LL_GPIO_ReadInputPort(GPIOB); KMem.WDT[121]=a; a = LL_GPIO_ReadInputPort(GPIOC); KMem.WDT[122]=a; a = LL_GPIO_ReadInputPort(GPIOD); KMem.WDT[123]=a; #if (BOARD_TYPE == 14) // KMem.WX[0]= GetInput(); FP0_Proc(); #else KMem.WX[0]= GetInput(); #endif if (GetBoardType() == 7 || GetBoardType() ==8 || GetBoardType() == 9 || GetBoardType() ==10 || GetBoardType() ==15 || GetBoardType() ==16) { displayInput(KMem.WX[0]); } us2=GetuS(); /* if (PowerDownEvent) { KMem.WX[0]=0;} if ((KMem.nRunCount &0x1f) == 0x02) { ADCProcess(); if (PowerDownEvent) { KMem.WX[0]=0; if (!OldPowerDownEvent) { OldPowerDownEvent = PowerDownEvent; OldPowerDownEventTime = nCurTick; PowerDownProcess(); } }else { if (OldPowerDownEvent) { OldPowerDownEvent=PowerDownEvent; PowerRecoverProcess(); } } } //*/ #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) Radio.IrqProcess( ); // Process Radio IRQ KWL_Process(1); #endif // pProgs = (stBinProg1 *) STORE_PRG_BASE; if ( KMRunStat.WorkMode==1 ) //&& bKBusMaster) { if (KMRunStat.nBinProgBank == 0){ pProgs=(stBinProg1 *)STORE_PRG_BASE; }else { pProgs=(stBinProg1 *)ALT_PRG_BASE; } nSizeProg1=KMRunStat.nBinProgSize; // pProgs=(stBinProg1 *)prog1; ProcessPLCBinProg(pProgs, nSizeProg1); } KMem.ScanTimeuS=us2-KMem.LastScanTime; KMem.LastScanTime = us2; if (KMem.ScanTimeuS < KMem.MinScanTimeuS) {KMem.MinScanTimeuS = KMem.ScanTimeuS;} if (KMem.ScanTimeuS > KMem.MaxScanTimeuS) {KMem.MaxScanTimeuS = KMem.ScanTimeuS;} // if (bKBusRepeater) { KBusRepeaterFunc(); } us3=GetuS(); if (bKBusMaster) { #if (BOARD_TYPE == 14) for (int i=0;i<nOutputBytes;i++) {BufferOut[i+1]=KMem.WYB[i];} #else // BufferOut[1]=KMem.WX[0]&0xff; // BufferOut[2]=(KMem.WX[0]>>8)&0xff; #endif if (nChilds>0) { KBusMasterFunc(2); } #if (BOARD_TYPE == 14) // KMem.WX[0]=BufferIn[1]+(BufferIn[2]<<8); #else // KMem.WY[0]=BufferIn[1]+(BufferIn[2]<<8); #endif } if (haltick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (haltick&0x00000800) FastFlicker=1; else FastFlicker=0; if (bKBusSlave) { // BufferOut[0]=KMem.WX[0]; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) // KBusSlaveFunc(2); // if (! KMem.RunStat) {BufferIn[0]=0;} // KMem.WY[0]=BufferIn[0]; #else KBusSlaveFunc(2); if (! KMem.RunStat) {BufferIn[0]=0;} KMem.WY[0]=BufferIn[0]; #endif if (nSlaveTick&0x00002000) SlowFlicker=1; else SlowFlicker=0; if (nSlaveTick&0x00000800) FastFlicker=1; else FastFlicker=0; } // KMem.WY[0]=nCount2>>5; if (KMem.RunStat) {KMem.RunStat--;} if (KMem.ErrStat) {KMem.ErrStat--;} if (KMRunStat.bLEDFlick) { SetRunLed(FastFlicker); SetErrLed(FastFlicker); SetErr2Led(FastFlicker); SetOutStat(!FastFlicker); //KMRunStat.bLEDFlick-- ; } else { if (KMRunStat.WorkMode==1 ) { if (PLCMem.bPLCRunning){SetRunLed(SlowFlicker);} else {SetRunLed(0);} } else { if (!KMem.RunStat) SetRunLed(SlowFlicker); else SetRunLed(FastFlicker); } if (!KMem.ErrStat) { SetErrLed(0); SetErr2Led(0); SetOutStat(1); } else { SetErrLed(FastFlicker); SetErr2Led(FastFlicker); SetOutStat(0); } } // SetRunLed(RunStat); // SetErrLed(ErrStat); us4=GetuS(); // EffJumperSW = GetInput(20)&0xff; #if (BOARD_TYPE == 15 || BOARD_TYPE == 16) if ((KMem.EffJumperSW&0x10)==0x10) { KMem.WFY[1]=KMem.WLY[0]; KMem.WLX[0]=KMem.WFX[1]; }else { KMem.WFY[1]=KMem.WX[0]; KMem.WY[0]=KMem.WFX[1]; } // KMem.WY[0]=KMem.WLY[0]; #elif (BOARD_TYPE == 14) #else KMem.WLX[0]=KMem.WX[0]; KMem.WY[0]=KMem.WLY[0]; #endif us5=GetuS(); #if (BOARD_TYPE == 14) // PutOutput (KMem.WY[0]); #else PutOutput (KMem.WY[0]); #endif //PutOutput (KMem.nRunCount>>8); //PutOutput(0x0f70); // if (bKBusMaster) ShowInfo(); // if (bKBusSlave) ShowInfo(); us6=GetuS(); add1(10,10); for (int i=0;i<64;i++) { // ProcessTimer(i); } KMem.nRunCount++; // int nSize=sizeof(stKBusChnStat); // memcpy(&KMem.SDT[64],&KBusChnStats[1],nSize); // memcpy(&KMem.SDT[64+nSize/2],&KBusChnStats[2],nSize); // for (int i=0;i<128;i++) { SDT[i]=i; } // SDT[48]=55; if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved) { int res1 = -1; res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); if (res1 !=0) { KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen); } Uart1RecvBuf1DataLen=0; Uart1Stat.bPacketRecved=0; Uart1IdelTimer = 0; }else { if (Uart1IdelTimer>600000) { // 超过60秒没有数据传输,重新进入自适应波特率状态 LL_USART_EnableAutoBaudRate(USART1); LL_USART_SetAutoBaudRateMode(USART1, LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE); }else { Uart1IdelTimer++; } } if (bKBusSlave) HAL_Delay(0); /* if (!IsEmpty(&Uart1Stat.QRx)) { unsigned char k=PopOne(&Uart1Stat.QRx); if (k=='L') { clearscreen(); } } */ #if (BOARD_TYPE == 14) const unsigned int pins[6]= { LL_GPIO_PIN_10,LL_GPIO_PIN_11,LL_GPIO_PIN_12,LL_GPIO_PIN_13,LL_GPIO_PIN_14,LL_GPIO_PIN_15}; //process 6 output { // mapping bits. for (int i=0;i<6;i++) { USHORT bitaddr = storedKMSysCfg.theKMSysCfg.OutMappings[i]; UCHAR type = (bitaddr&0xf000) >>12; USHORT byteaddr = (bitaddr&0x0ff0) >>4; UCHAR bitpos = bitaddr &0x0f; UCHAR bitvalue = 0 ; if (byteaddr>0) { if (type == 0) bitvalue = KMem.WXB[byteaddr-1] & ( 1 << bitpos ); else if (type == 1 ) bitvalue = KMem.WYB[byteaddr-1] & ( 1 << bitpos ); } if (bitvalue){ LL_GPIO_SetOutputPin(GPIOB,pins[i]);} else {LL_GPIO_ResetOutputPin(GPIOB,pins[i]);} } } #endif /* { unsigned char pos,seg; unsigned short val; pos=((KMem.nRunCount)&0x3); //val=(KMem.nRunCount)&0xfff; val=KMem.ErrStat; char buf5[20]; sprintf(buf5,"%4d",val); val=buf5[3-pos]; if (val <'0' || val >'9') {seg=0;} else {seg=LEDSEGTAB[val-'0'];} pos=1<<pos; //pos=1; //seg=2; seg=~seg; // PutOutputSPI1(pos|(seg<<8)); } */ #if (BOARD_TYPE == 13) w5500_network_info_show(); // loopback_tcps(0,str1,5000); #endif LL_IWDG_ReloadCounter(IWDG); } //while (1) ; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /** * @brief This function is executed in case of error occurrence. * @param file: The file name as string. * @param line: The line in file as a number. * @retval None */ void _Error_Handler(char *file, int line) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ while(1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ KAD/Ethernet/W5500/w5500.c
New file @@ -0,0 +1,367 @@ //***************************************************************************** // //! \file w5500.c //! \brief W5500 HAL Interface. //! \version 1.0.2 //! \date 2013/10/21 //! \par Revision history //! <2014/05/01> V1.0.2 //! 1. Implicit type casting -> Explicit type casting. Refer to M20140501 //! Fixed the problem on porting into under 32bit MCU //! Issued by Mathias ClauBen, wizwiki forum ID Think01 and bobh //! Thank for your interesting and serious advices. //! <2013/12/20> V1.0.1 //! 1. Remove warning //! 2. WIZCHIP_READ_BUF WIZCHIP_WRITE_BUF in case _WIZCHIP_IO_MODE_SPI_FDM_ //! for loop optimized(removed). refer to M20131220 //! <2013/10/21> 1st Release //! \author MidnightCow //! \copyright //! //! Copyright (c) 2013, WIZnet Co., LTD. //! All rights reserved. //! //! Redistribution and use in source and binary forms, with or without //! modification, are permitted provided that the following conditions //! are met: //! //! * Redistributions of source code must retain the above copyright //! notice, this list of conditions and the following disclaimer. //! * Redistributions in binary form must reproduce the above copyright //! notice, this list of conditions and the following disclaimer in the //! documentation and/or other materials provided with the distribution. //! * Neither the name of the <ORGANIZATION> nor the names of its //! contributors may be used to endorse or promote products derived //! from this software without specific prior written permission. //! //! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" //! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE //! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE //! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE //! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR //! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF //! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS //! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN //! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) //! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF //! THE POSSIBILITY OF SUCH DAMAGE. // //***************************************************************************** //#include <stdio.h> #include "w5500.h" #define _W5500_SPI_VDM_OP_ 0x00 #define _W5500_SPI_FDM_OP_LEN1_ 0x01 #define _W5500_SPI_FDM_OP_LEN2_ 0x02 #define _W5500_SPI_FDM_OP_LEN4_ 0x03 //////////////////////////////////////////////////// uint8_t WIZCHIP_READ(uint32_t AddrSel) { uint8_t ret; WIZCHIP_CRITICAL_ENTER(); WIZCHIP.CS._select(); #if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) #if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_ ) AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_VDM_OP_); #elif( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_ ) AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_FDM_OP_LEN1_); #else #error "Unsupported _WIZCHIP_IO_SPI_ in W5500 !!!" #endif WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); ret = WIZCHIP.IF.SPI._read_byte(); #elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) #if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) #elif(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) #else #error "Unsupported _WIZCHIP_IO_MODE_BUS_ in W5500 !!!" #endif #else #error "Unknown _WIZCHIP_IO_MODE_ in W5000. !!!" #endif WIZCHIP.CS._deselect(); WIZCHIP_CRITICAL_EXIT(); return ret; } void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ) { WIZCHIP_CRITICAL_ENTER(); WIZCHIP.CS._select(); #if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) #if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_ ) AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_VDM_OP_); #elif( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_ ) AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_FDM_OP_LEN1_); #else #error "Unsupported _WIZCHIP_IO_SPI_ in W5500 !!!" #endif WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); WIZCHIP.IF.SPI._write_byte(wb); #elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) #if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) #elif(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) #else #error "Unsupported _WIZCHIP_IO_MODE_BUS_ in W5500 !!!" #endif #else #error "Unknown _WIZCHIP_IO_MODE_ in W5500. !!!" #endif WIZCHIP.CS._deselect(); WIZCHIP_CRITICAL_EXIT(); } void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len) { uint16_t i = 0; uint16_t j = 0; WIZCHIP_CRITICAL_ENTER(); WIZCHIP.CS._select(); #if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) #if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_ ) AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_VDM_OP_); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); for(i = 0; i < len; i++,j) pBuf[i] = WIZCHIP.IF.SPI._read_byte(); #elif( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_ ) AddrSel |= (_W5500_SPI_READ_ | _W5500_SPI_FDM_OP_LEN4_); for(i = 0; i < len/4; i++, j) { WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); pBuf[i*4] = WIZCHIP.IF.SPI._read_byte(); pBuf[i*4+1] = WIZCHIP.IF.SPI._read_byte(); pBuf[i*4+2] = WIZCHIP.IF.SPI._read_byte(); pBuf[i*4+3] = WIZCHIP.IF.SPI._read_byte(); AddrSel = WIZCHIP_OFFSET_INC(AddrSel,4); } len %= 4; // for the rest data // M20131220 : remove for loop i *= 4; if(len >= 2) { AddrSel -= 1; // change _W5500_SPI_FDM_OP_LEN4_ to _W5500_SPI_FDM_OP_LEN2_ //for(j = 0; j < len/2 ; j++) { WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); pBuf[i] = WIZCHIP.IF.SPI._read_byte(); pBuf[i+1] = WIZCHIP.IF.SPI._read_byte(); i += 2; AddrSel = WIZCHIP_OFFSET_INC(AddrSel,2); } } len %= 2; if(len) { AddrSel -= 1; // change _W5500_SPI_FDM_OP_LEN2_ to _W5500_SPI_FDM_OP_LEN1_ WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); pBuf[i] = WIZCHIP.IF.SPI._read_byte(); } #else #error "Unsupported _WIZCHIP_IO_MODE_SPI_ in W5500 !!!" #endif #elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) #if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) #elif(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) #else #error "Unsupported _WIZCHIP_IO_MODE_BUS_ in W5500 !!!" #endif #else #error "Unknown _WIZCHIP_IO_MODE_ in W5500. !!!!" #endif WIZCHIP.CS._deselect(); WIZCHIP_CRITICAL_EXIT(); } void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len) { uint16_t i = 0; uint16_t j = 0; WIZCHIP_CRITICAL_ENTER(); WIZCHIP.CS._select(); #if( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_SPI_)) #if ( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_VDM_ ) AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_VDM_OP_); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); for(i = 0; i < len; i++,j) WIZCHIP.IF.SPI._write_byte(pBuf[i]); #elif( _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_SPI_FDM_ ) AddrSel |= (_W5500_SPI_WRITE_ | _W5500_SPI_FDM_OP_LEN4_); for(i = 0; i < len/4; i++, j) { WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); WIZCHIP.IF.SPI._write_byte(pBuf[i*4] ); WIZCHIP.IF.SPI._write_byte(pBuf[i*4+1]); WIZCHIP.IF.SPI._write_byte(pBuf[i*4+2]); WIZCHIP.IF.SPI._write_byte(pBuf[i*4+3]); AddrSel = WIZCHIP_OFFSET_INC(AddrSel,4); } len %= 4; // for the rest data // M20131220 : Remove for loop i *= 4; if(len >= 2) { AddrSel -= 1; // change _W5500_SPI_FDM_OP_LEN4_ to _W5500_SPI_FDM_OP_LEN2_ //for(j = 0; j < len/2 ; j++) { WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); WIZCHIP.IF.SPI._write_byte(pBuf[i] ); WIZCHIP.IF.SPI._write_byte(pBuf[i+1]); i += 2; AddrSel = WIZCHIP_OFFSET_INC(AddrSel, 2); } len %= 2; if(len) { AddrSel -= 1; // change _W5500_SPI_FDM_OP_LEN2_ to _W5500_SPI_FDM_OP_LEN1_ WIZCHIP.IF.SPI._write_byte((AddrSel & 0x00FF0000) >> 16); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x0000FF00) >> 8); WIZCHIP.IF.SPI._write_byte((AddrSel & 0x000000FF) >> 0); WIZCHIP.IF.SPI._write_byte(pBuf[i]); } } #else #error "Unsupported _WIZCHIP_IO_SPI_ in W5500 !!!" #endif #elif ( (_WIZCHIP_IO_MODE_ & _WIZCHIP_IO_MODE_BUS_) ) #if (_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_DIR_) #elif(_WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_) #else #error "Unsupported _WIZCHIP_IO_MODE_BUS_ in W5500 !!!" #endif #else #error "Unknown _WIZCHIP_IO_MODE_ in W5500. !!!!" #endif WIZCHIP.CS._deselect(); WIZCHIP_CRITICAL_EXIT(); } uint16_t getSn_TX_FSR(uint8_t sn) { uint16_t val=0,val1=0; do { val1 = WIZCHIP_READ(Sn_TX_FSR(sn)); val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); if (val1 != 0) { val = WIZCHIP_READ(Sn_TX_FSR(sn)); val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_FSR(sn),1)); } }while (val != val1); return val; } uint16_t getSn_RX_RSR(uint8_t sn) { uint16_t val=0,val1=0; do { val1 = WIZCHIP_READ(Sn_RX_RSR(sn)); val1 = (val1 << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); if (val1 != 0) { val = WIZCHIP_READ(Sn_RX_RSR(sn)); val = (val << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RSR(sn),1)); } }while (val != val1); return val; } void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len) { uint16_t ptr = 0; uint32_t addrsel = 0; if(len == 0) return; ptr = getSn_TX_WR(sn); //M20140501 : implict type casting -> explict type casting //addrsel = (ptr << 8) + (WIZCHIP_TXBUF_BLOCK(sn) << 3); addrsel = ((uint32_t)ptr << 8) + (WIZCHIP_TXBUF_BLOCK(sn) << 3); // WIZCHIP_WRITE_BUF(addrsel,wizdata, len); ptr += len; setSn_TX_WR(sn,ptr); } void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len) { uint16_t ptr = 0; uint32_t addrsel = 0; if(len == 0) return; ptr = getSn_RX_RD(sn); //M20140501 : implict type casting -> explict type casting //addrsel = ((ptr << 8) + (WIZCHIP_RXBUF_BLOCK(sn) << 3); addrsel = ((uint32_t)ptr << 8) + (WIZCHIP_RXBUF_BLOCK(sn) << 3); // WIZCHIP_READ_BUF(addrsel, wizdata, len); ptr += len; setSn_RX_RD(sn,ptr); } void wiz_recv_ignore(uint8_t sn, uint16_t len) { uint16_t ptr = 0; ptr = getSn_RX_RD(sn); ptr += len; setSn_RX_RD(sn,ptr); } KAD/Ethernet/W5500/w5500.h
New file @@ -0,0 +1,2054 @@ //***************************************************************************** // //! \file w5500.h //! \brief W5500 HAL Header File. //! \version 1.0.0 //! \date 2013/10/21 //! \par Revision history //! <2013/10/21> 1st Release //! \author MidnightCow //! \copyright //! //! Copyright (c) 2013, WIZnet Co., LTD. //! All rights reserved. //! //! Redistribution and use in source and binary forms, with or without //! modification, are permitted provided that the following conditions //! are met: //! //! * Redistributions of source code must retain the above copyright //! notice, this list of conditions and the following disclaimer. //! * Redistributions in binary form must reproduce the above copyright //! notice, this list of conditions and the following disclaimer in the //! documentation and/or other materials provided with the distribution. //! * Neither the name of the <ORGANIZATION> nor the names of its //! contributors may be used to endorse or promote products derived //! from this software without specific prior written permission. //! //! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" //! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE //! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE //! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE //! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR //! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF //! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS //! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN //! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) //! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF //! THE POSSIBILITY OF SUCH DAMAGE. // //***************************************************************************** #ifndef _W5500_H_ #define _W5500_H_ #include <stdint.h> #include "Ethernet/wizchip_conf.h" #define _W5500_IO_BASE_ 0x00000000 #define _W5500_SPI_READ_ (0x00 << 2) //< SPI interface Read operation in Control Phase #define _W5500_SPI_WRITE_ (0x01 << 2) //< SPI interface Write operation in Control Phase #define WIZCHIP_CREG_BLOCK 0x00 //< Common register block #define WIZCHIP_SREG_BLOCK(N) (1+4*N) //< Socket N register block #define WIZCHIP_TXBUF_BLOCK(N) (2+4*N) //< Socket N Tx buffer address block #define WIZCHIP_RXBUF_BLOCK(N) (3+4*N) //< Socket N Rx buffer address block #define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + (N<<8)) //< Increase offset address /////////////////////////////////////// // Definition For Legacy Chip Driver // /////////////////////////////////////// #define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR) ///< The defined for legacy chip driver #define IINCHIP_WRITE(ADDR,VAL) WIZCHIP_WRITE(ADDR,VAL) ///< The defined for legacy chip driver #define IINCHIP_READ_BUF(ADDR,BUF,LEN) WIZCHIP_READ_BUF(ADDR,BUF,LEN) ///< The defined for legacy chip driver #define IINCHIP_WRITE_BUF(ADDR,BUF,LEN) WIZCHIP_WRITE(ADDR,BUF,LEN) ///< The defined for legacy chip driver ////////////////////////////// //-------------------------- defgroup --------------------------------- /** * @defgroup W5500 W5500 * * @brief WHIZCHIP register defines and I/O functions of @b W5500. * * - @ref WIZCHIP_register : @ref Common_register_group and @ref Socket_register_group * - @ref WIZCHIP_IO_Functions : @ref Basic_IO_function, @ref Common_register_access_function and @ref Socket_register_access_function */ /** * @defgroup WIZCHIP_register WIZCHIP register * @ingroup W5500 * * @brief WHIZCHIP register defines register group of @b W5500. * * - @ref Common_register_group : Common register group * - @ref Socket_register_group : \c SOCKET n register group */ /** * @defgroup WIZCHIP_IO_Functions WIZCHIP I/O functions * @ingroup W5500 * * @brief This supports the basic I/O functions for @ref WIZCHIP_register. * * - <b> Basic I/O function </b> \n * WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() \n\n * * - @ref Common_register_group <b>access functions</b> \n * -# @b Mode \n * getMR(), setMR() * -# @b Interrupt \n * getIR(), setIR(), getIMR(), setIMR(), getSIR(), setSIR(), getSIMR(), setSIMR(), getINTLEVEL(), setINTLEVEL() * -# <b> Network Information </b> \n * getSHAR(), setSHAR(), getGAR(), setGAR(), getSUBR(), setSUBR(), getSIPR(), setSIPR() * -# @b Retransmission \n * getRCR(), setRCR(), getRTR(), setRTR() * -# @b PPPoE \n * getPTIMER(), setPTIMER(), getPMAGIC(), getPMAGIC(), getPSID(), setPSID(), getPHAR(), setPHAR(), getPMRU(), setPMRU() * -# <b> ICMP packet </b>\n * getUIPR(), getUPORTR() * -# @b etc. \n * getPHYCFGR(), setPHYCFGR(), getVERSIONR() \n\n * * - \ref Socket_register_group <b>access functions</b> \n * -# <b> SOCKET control</b> \n * getSn_MR(), setSn_MR(), getSn_CR(), setSn_CR(), getSn_IMR(), setSn_IMR(), getSn_IR(), setSn_IR() * -# <b> SOCKET information</b> \n * getSn_SR(), getSn_DHAR(), setSn_DHAR(), getSn_PORT(), setSn_PORT(), getSn_DIPR(), setSn_DIPR(), getSn_DPORT(), setSn_DPORT() * getSn_MSSR(), setSn_MSSR() * -# <b> SOCKET communication </b> \n * getSn_RXBUF_SIZE(), setSn_RXBUF_SIZE(), getSn_TXBUF_SIZE(), setSn_TXBUF_SIZE() \n * getSn_TX_RD(), getSn_TX_WR(), setSn_TX_WR() \n * getSn_RX_RD(), setSn_RX_RD(), getSn_RX_WR() \n * getSn_TX_FSR(), getSn_RX_RSR(), getSn_KPALVTR(), setSn_KPALVTR() * -# <b> IP header field </b> \n * getSn_FRAG(), setSn_FRAG(), getSn_TOS(), setSn_TOS() \n * getSn_TTL(), setSn_TTL() */ /** * @defgroup Common_register_group Common register * @ingroup WIZCHIP_register * * @brief Common register group\n * It set the basic for the networking\n * It set the configuration such as interrupt, network information, ICMP, etc. * @details * @sa MR : Mode register. * @sa GAR, SUBR, SHAR, SIPR * @sa INTLEVEL, IR, IMR, SIR, SIMR : Interrupt. * @sa RTR, RCR : Data retransmission. * @sa PTIMER, PMAGIC, PHAR, PSID, PMRU : PPPoE. * @sa UIPR, UPORTR : ICMP message. * @sa PHYCFGR, VERSIONR : etc. */ /** * @defgroup Socket_register_group Socket register * @ingroup WIZCHIP_register * * @brief Socket register group.\n * Socket register configures and control SOCKETn which is necessary to data communication. * @details * @sa Sn_MR, Sn_CR, Sn_IR, Sn_IMR : SOCKETn Control * @sa Sn_SR, Sn_PORT, Sn_DHAR, Sn_DIPR, Sn_DPORT : SOCKETn Information * @sa Sn_MSSR, Sn_TOS, Sn_TTL, Sn_KPALVTR, Sn_FRAG : Internet protocol. * @sa Sn_RXBUF_SIZE, Sn_TXBUF_SIZE, Sn_TX_FSR, Sn_TX_RD, Sn_TX_WR, Sn_RX_RSR, Sn_RX_RD, Sn_RX_WR : Data communication */ /** * @defgroup Basic_IO_function Basic I/O function * @ingroup WIZCHIP_IO_Functions * @brief These are basic input/output functions to read values from register or write values to register. */ /** * @defgroup Common_register_access_function Common register access functions * @ingroup WIZCHIP_IO_Functions * @brief These are functions to access <b>common registers</b>. */ /** * @defgroup Socket_register_access_function Socket register access functions * @ingroup WIZCHIP_IO_Functions * @brief These are functions to access <b>socket registers</b>. */ //------------------------------- defgroup end -------------------------------------------- //----------------------------- W5500 Common Registers IOMAP ----------------------------- /** * @ingroup Common_register_group * @brief Mode Register address(R/W)\n * @ref MR is used for S/W reset, ping block mode, PPPoE mode and etc. * @details Each bit of @ref MR defined as follows. * <table> * <tr> <td>7</td> <td>6</td> <td>5</td> <td>4</td> <td>3</td> <td>2</td> <td>1</td> <td>0</td> </tr> * <tr> <td>RST</td> <td>Reserved</td> <td>WOL</td> <td>PB</td> <td>PPPoE</td> <td>Reserved</td> <td>FARP</td> <td>Reserved</td> </tr> * </table> * - \ref MR_RST : Reset * - \ref MR_WOL : Wake on LAN * - \ref MR_PB : Ping block * - \ref MR_PPPOE : PPPoE mode * - \ref MR_FARP : Force ARP mode */ #define MR (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Gateway IP Register address(R/W) * @details @ref GAR configures the default gateway address. */ #define GAR (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Subnet mask Register address(R/W) * @details @ref SUBR configures the subnet mask address. */ #define SUBR (_W5500_IO_BASE_ + (0x0005 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Source MAC Register address(R/W) * @details @ref SHAR configures the source hardware address. */ #define SHAR (_W5500_IO_BASE_ + (0x0009 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Source IP Register address(R/W) * @details @ref SIPR configures the source IP address. */ #define SIPR (_W5500_IO_BASE_ + (0x000F << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Set Interrupt low level timer register address(R/W) * @details @ref INTLEVEL configures the Interrupt Assert Time. */ #define INTLEVEL (_W5500_IO_BASE_ + (0x0013 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Interrupt Register(R/W) * @details @ref IR indicates the interrupt status. Each bit of @ref IR will be still until the bit will be written to by the host. * If @ref IR is not equal to x00 INTn PIN is asserted to low until it is x00\n\n * Each bit of @ref IR defined as follows. * <table> * <tr> <td>7</td> <td>6</td> <td>5</td> <td>4</td> <td>3</td> <td>2</td> <td>1</td> <td>0</td> </tr> * <tr> <td>CONFLICT</td> <td>UNREACH</td> <td>PPPoE</td> <td>MP</td> <td>Reserved</td> <td>Reserved</td> <td>Reserved</td> <td>Reserved</td> </tr> * </table> * - \ref IR_CONFLICT : IP conflict * - \ref IR_UNREACH : Destination unreachable * - \ref IR_PPPoE : PPPoE connection close * - \ref IR_MP : Magic packet */ #define IR (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Interrupt mask register(R/W) * @details @ref IMR is used to mask interrupts. Each bit of @ref IMR corresponds to each bit of @ref IR. * When a bit of @ref IMR is and the corresponding bit of @ref IR is an interrupt will be issued. In other words, * if a bit of @ref IMR is an interrupt will not be issued even if the corresponding bit of @ref IR is \n\n * Each bit of @ref IMR defined as the following. * <table> * <tr> <td>7</td> <td>6</td> <td>5</td> <td>4</td> <td>3</td> <td>2</td> <td>1</td> <td>0</td> </tr> * <tr> <td>IM_IR7</td> <td>IM_IR6</td> <td>IM_IR5</td> <td>IM_IR4</td> <td>Reserved</td> <td>Reserved</td> <td>Reserved</td> <td>Reserved</td> </tr> * </table> * - \ref IM_IR7 : IP Conflict Interrupt Mask * - \ref IM_IR6 : Destination unreachable Interrupt Mask * - \ref IM_IR5 : PPPoE Close Interrupt Mask * - \ref IM_IR4 : Magic Packet Interrupt Mask */ #define IMR (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Socket Interrupt Register(R/W) * @details @ref SIR indicates the interrupt status of Socket.\n * Each bit of @ref SIR be still until @ref Sn_IR is cleared by the host.\n * If @ref Sn_IR is not equal to x00 the n-th bit of @ref SIR is and INTn PIN is asserted until @ref SIR is x00 */ #define SIR (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Socket Interrupt Mask Register(R/W) * @details Each bit of @ref SIMR corresponds to each bit of @ref SIR. * When a bit of @ref SIMR is and the corresponding bit of @ref SIR is Interrupt will be issued. * In other words, if a bit of @ref SIMR is an interrupt will be not issued even if the corresponding bit of @ref SIR is */ #define SIMR (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Timeout register address( 1 is 100us )(R/W) * @details @ref RTR configures the retransmission timeout period. The unit of timeout period is 100us and the default of @ref RTR is x07D0or 000 * And so the default timeout period is 200ms(100us X 2000). During the time configured by @ref RTR, W5500 waits for the peer response * to the packet that is transmitted by \ref Sn_CR (CONNECT, DISCON, CLOSE, SEND, SEND_MAC, SEND_KEEP command). * If the peer does not respond within the @ref RTR time, W5500 retransmits the packet or issues timeout. */ #define RTR (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Retry count register(R/W) * @details @ref RCR configures the number of time of retransmission. * When retransmission occurs as many as ref RCR+1 Timeout interrupt is issued (@ref Sn_IR[TIMEOUT] = . */ #define RCR (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PPP LCP Request Timer register in PPPoE mode(R/W) * @details @ref PTIMER configures the time for sending LCP echo request. The unit of time is 25ms. */ #define PTIMER (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PPP LCP Magic number register in PPPoE mode(R/W) * @details @ref PMAGIC configures the 4bytes magic number to be used in LCP negotiation. */ #define PMAGIC (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PPP Destination MAC Register address(R/W) * @details @ref PHAR configures the PPPoE server hardware address that is acquired during PPPoE connection process. */ #define PHAR (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PPP Session Identification Register(R/W) * @details @ref PSID configures the PPPoE sever session ID acquired during PPPoE connection process. */ #define PSID (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PPP Maximum Segment Size(MSS) register(R/W) * @details @ref PMRU configures the maximum receive unit of PPPoE. */ #define PMRU (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Unreachable IP register address in UDP mode(R) * @details W5500 receives an ICMP packet(Destination port unreachable) when data is sent to a port number * which socket is not open and @ref UNREACH bit of @ref IR becomes and @ref UIPR & @ref UPORTR indicates * the destination IP address & port number respectively. */ #define UIPR (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief Unreachable Port register address in UDP mode(R) * @details W5500 receives an ICMP packet(Destination port unreachable) when data is sent to a port number * which socket is not open and @ref UNREACH bit of @ref IR becomes and @ref UIPR & @ref UPORTR * indicates the destination IP address & port number respectively. */ #define UPORTR (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief PHY Status Register(R/W) * @details @ref PHYCFGR configures PHY operation mode and resets PHY. In addition, @ref PHYCFGR indicates the status of PHY such as duplex, Speed, Link. */ #define PHYCFGR (_W5500_IO_BASE_ + (0x002E << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0031 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0032 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0033 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0034 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0035 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0036 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0037 << 8) + (WIZCHIP_CREG_BLOCK << 3)) // Reserved (_W5500_IO_BASE_ + (0x0038 << 8) + (WIZCHIP_CREG_BLOCK << 3)) /** * @ingroup Common_register_group * @brief chip version register address(R) * @details @ref VERSIONR always indicates the W5500 version as @b 0x04. */ #define VERSIONR (_W5500_IO_BASE_ + (0x0039 << 8) + (WIZCHIP_CREG_BLOCK << 3)) //----------------------------- W5500 Socket Registers IOMAP ----------------------------- /** * @ingroup Socket_register_group * @brief socket Mode register(R/W) * @details @ref Sn_MR configures the option or protocol type of Socket n.\n\n * Each bit of @ref Sn_MR defined as the following. * <table> * <tr> <td>7</td> <td>6</td> <td>5</td> <td>4</td> <td>3</td> <td>2</td> <td>1</td> <td>0</td> </tr> * <tr> <td>MULTI/MFEN</td> <td>BCASTB</td> <td>ND/MC/MMB</td> <td>UCASTB/MIP6B</td> <td>Protocol[3]</td> <td>Protocol[2]</td> <td>Protocol[1]</td> <td>Protocol[0]</td> </tr> * </table> * - @ref Sn_MR_MULTI : Support UDP Multicasting * - @ref Sn_MR_BCASTB : Broadcast block <b>in UDP Multicasting</b> * - @ref Sn_MR_ND : No Delayed Ack(TCP) flag * - @ref Sn_MR_MC : IGMP version used <b>in UDP mulitcasting</b> * - @ref Sn_MR_MMB : Multicast Blocking <b>in @ref Sn_MR_MACRAW mode</b> * - @ref Sn_MR_UCASTB : Unicast Block <b>in UDP Multicating</b> * - @ref Sn_MR_MIP6B : IPv6 packet Blocking <b>in @ref Sn_MR_MACRAW mode</b> * - <b>Protocol</b> * <table> * <tr> <td><b>Protocol[3]</b></td> <td><b>Protocol[2]</b></td> <td><b>Protocol[1]</b></td> <td><b>Protocol[0]</b></td> <td>@b Meaning</td> </tr> * <tr> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>Closed</td> </tr> * <tr> <td>0</td> <td>0</td> <td>0</td> <td>1</td> <td>TCP</td> </tr> * <tr> <td>0</td> <td>0</td> <td>1</td> <td>0</td> <td>UDP</td> </tr> * <tr> <td>0</td> <td>1</td> <td>0</td> <td>0</td> <td>MACRAW</td> </tr> * </table> * - @ref Sn_MR_MACRAW : MAC LAYER RAW SOCK \n * - @ref Sn_MR_UDP : UDP * - @ref Sn_MR_TCP : TCP * - @ref Sn_MR_CLOSE : Unused socket * @note MACRAW mode should be only used in Socket 0. */ #define Sn_MR(N) (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Socket command register(R/W) * @details This is used to set the command for Socket n such as OPEN, CLOSE, CONNECT, LISTEN, SEND, and RECEIVE.\n * After W5500 accepts the command, the @ref Sn_CR register is automatically cleared to 0x00. * Even though @ref Sn_CR is cleared to 0x00, the command is still being processed.\n * To check whether the command is completed or not, please check the @ref Sn_IR or @ref Sn_SR. * - @ref Sn_CR_OPEN : Initialize or open socket. * - @ref Sn_CR_LISTEN : Wait connection request in TCP mode(<b>Server mode</b>) * - @ref Sn_CR_CONNECT : Send connection request in TCP mode(<b>Client mode</b>) * - @ref Sn_CR_DISCON : Send closing request in TCP mode. * - @ref Sn_CR_CLOSE : Close socket. * - @ref Sn_CR_SEND : Update TX buffer pointer and send data. * - @ref Sn_CR_SEND_MAC : Send data with MAC address, so without ARP process. * - @ref Sn_CR_SEND_KEEP : Send keep alive message. * - @ref Sn_CR_RECV : Update RX buffer pointer and receive data. */ #define Sn_CR(N) (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Socket interrupt register(R) * @details @ref Sn_IR indicates the status of Socket Interrupt such as establishment, termination, receiving data, timeout).\n * When an interrupt occurs and the corresponding bit of @ref Sn_IMR is the corresponding bit of @ref Sn_IR becomes \n * In order to clear the @ref Sn_IR bit, the host should write the bit to \n * <table> * <tr> <td>7</td> <td>6</td> <td>5</td> <td>4</td> <td>3</td> <td>2</td> <td>1</td> <td>0</td> </tr> * <tr> <td>Reserved</td> <td>Reserved</td> <td>Reserved</td> <td>SEND_OK</td> <td>TIMEOUT</td> <td>RECV</td> <td>DISCON</td> <td>CON</td> </tr> * </table> * - \ref Sn_IR_SENDOK : <b>SEND_OK Interrupt</b> * - \ref Sn_IR_TIMEOUT : <b>TIMEOUT Interrupt</b> * - \ref Sn_IR_RECV : <b>RECV Interrupt</b> * - \ref Sn_IR_DISCON : <b>DISCON Interrupt</b> * - \ref Sn_IR_CON : <b>CON Interrupt</b> */ #define Sn_IR(N) (_W5500_IO_BASE_ + (0x0002 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Socket status register(R) * @details @ref Sn_SR indicates the status of Socket n.\n * The status of Socket n is changed by @ref Sn_CR or some special control packet as SYN, FIN packet in TCP. * @par Normal status * - @ref SOCK_CLOSED : Closed * - @ref SOCK_INIT : Initiate state * - @ref SOCK_LISTEN : Listen state * - @ref SOCK_ESTABLISHED : Success to connect * - @ref SOCK_CLOSE_WAIT : Closing state * - @ref SOCK_UDP : UDP socket * - @ref SOCK_MACRAW : MAC raw mode socket *@par Temporary status during changing the status of Socket n. * - @ref SOCK_SYNSENT : This indicates Socket n sent the connect-request packet (SYN packet) to a peer. * - @ref SOCK_SYNRECV : It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer. * - @ref SOCK_FIN_WAIT : Connection state * - @ref SOCK_CLOSING : Closing state * - @ref SOCK_TIME_WAIT : Closing state * - @ref SOCK_LAST_ACK : Closing state */ #define Sn_SR(N) (_W5500_IO_BASE_ + (0x0003 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief source port register(R/W) * @details @ref Sn_PORT configures the source port number of Socket n. * It is valid when Socket n is used in TCP/UPD mode. It should be set before OPEN command is ordered. */ #define Sn_PORT(N) (_W5500_IO_BASE_ + (0x0004 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Peer MAC register address(R/W) * @details @ref Sn_DHAR configures the destination hardware address of Socket n when using SEND_MAC command in UDP mode or * it indicates that it is acquired in ARP-process by CONNECT/SEND command. */ #define Sn_DHAR(N) (_W5500_IO_BASE_ + (0x0006 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Peer IP register address(R/W) * @details @ref Sn_DIPR configures or indicates the destination IP address of Socket n. It is valid when Socket n is used in TCP/UDP mode. * In TCP client mode, it configures an IP address of �TCP serverbefore CONNECT command. * In TCP server mode, it indicates an IP address of �TCP clientafter successfully establishing connection. * In UDP mode, it configures an IP address of peer to be received the UDP packet by SEND or SEND_MAC command. */ #define Sn_DIPR(N) (_W5500_IO_BASE_ + (0x000C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Peer port register address(R/W) * @details @ref Sn_DPORT configures or indicates the destination port number of Socket n. It is valid when Socket n is used in TCP/UDP mode. * In �TCP clientmode, it configures the listen port number of �TCP serverbefore CONNECT command. * In �TCP Servermode, it indicates the port number of TCP client after successfully establishing connection. * In UDP mode, it configures the port number of peer to be transmitted the UDP packet by SEND/SEND_MAC command. */ #define Sn_DPORT(N) (_W5500_IO_BASE_ + (0x0010 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Maximum Segment Size(Sn_MSSR0) register address(R/W) * @details @ref Sn_MSSR configures or indicates the MTU(Maximum Transfer Unit) of Socket n. */ #define Sn_MSSR(N) (_W5500_IO_BASE_ + (0x0012 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x0014 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief IP Type of Service(TOS) Register(R/W) * @details @ref Sn_TOS configures the TOS(Type Of Service field in IP Header) of Socket n. * It is set before OPEN command. */ #define Sn_TOS(N) (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief IP Time to live(TTL) Register(R/W) * @details @ref Sn_TTL configures the TTL(Time To Live field in IP header) of Socket n. * It is set before OPEN command. */ #define Sn_TTL(N) (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x001A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) // Reserved (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Receive memory size register(R/W) * @details @ref Sn_RXBUF_SIZE configures the RX buffer block size of Socket n. * Socket n RX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. * If a different size is configured, the data cannot be normally received from a peer. * Although Socket n RX Buffer Block size is initially configured to 2Kbytes, * user can re-configure its size using @ref Sn_RXBUF_SIZE. The total sum of @ref Sn_RXBUF_SIZE can not be exceed 16Kbytes. * When exceeded, the data reception error is occurred. */ #define Sn_RXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Transmit memory size register(R/W) * @details @ref Sn_TXBUF_SIZE configures the TX buffer block size of Socket n. Socket n TX Buffer Block size can be configured with 1,2,4,8, and 16 Kbytes. * If a different size is configured, the data can�t be normally transmitted to a peer. * Although Socket n TX Buffer Block size is initially configured to 2Kbytes, * user can be re-configure its size using @ref Sn_TXBUF_SIZE. The total sum of @ref Sn_TXBUF_SIZE can not be exceed 16Kbytes. * When exceeded, the data transmission error is occurred. */ #define Sn_TXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Transmit free memory size register(R) * @details @ref Sn_TX_FSR indicates the free size of Socket n TX Buffer Block. It is initialized to the configured size by @ref Sn_TXBUF_SIZE. * Data bigger than @ref Sn_TX_FSR should not be saved in the Socket n TX Buffer because the bigger data overwrites the previous saved data not yet sent. * Therefore, check before saving the data to the Socket n TX Buffer, and if data is equal or smaller than its checked size, * transmit the data with SEND/SEND_MAC command after saving the data in Socket n TX buffer. But, if data is bigger than its checked size, * transmit the data after dividing into the checked size and saving in the Socket n TX buffer. */ #define Sn_TX_FSR(N) (_W5500_IO_BASE_ + (0x0020 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Transmit memory read pointer register address(R) * @details @ref Sn_TX_RD is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001, it is re-initialized while connecting with TCP. * After its initialization, it is auto-increased by SEND command. * SEND command transmits the saved data from the current @ref Sn_TX_RD to the @ref Sn_TX_WR in the Socket n TX Buffer. * After transmitting the saved data, the SEND command increases the @ref Sn_TX_RD as same as the @ref Sn_TX_WR. * If its increment value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), * then the carry bit is ignored and will automatically update with the lower 16bits value. */ #define Sn_TX_RD(N) (_W5500_IO_BASE_ + (0x0022 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Transmit memory write pointer register address(R/W) * @details @ref Sn_TX_WR is initialized by OPEN command. However, if Sn_MR(P[3:0]) is TCP mode(001, it is re-initialized while connecting with TCP.\n * It should be read or be updated like as follows.\n * 1. Read the starting address for saving the transmitting data.\n * 2. Save the transmitting data from the starting address of Socket n TX buffer.\n * 3. After saving the transmitting data, update @ref Sn_TX_WR to the increased value as many as transmitting data size. * If the increment value exceeds the maximum value 0xFFFF(greater than 0x10000 and the carry bit occurs), * then the carry bit is ignored and will automatically update with the lower 16bits value.\n * 4. Transmit the saved data in Socket n TX Buffer by using SEND/SEND command */ #define Sn_TX_WR(N) (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Received data size register(R) * @details @ref Sn_RX_RSR indicates the data size received and saved in Socket n RX Buffer. * @ref Sn_RX_RSR does not exceed the @ref Sn_RXBUF_SIZE and is calculated as the difference between * �Socket n RX Write Pointer (@ref Sn_RX_WR)and �Socket n RX Read Pointer (@ref Sn_RX_RD) */ #define Sn_RX_RSR(N) (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Read point of Receive memory(R/W) * @details @ref Sn_RX_RD is initialized by OPEN command. Make sure to be read or updated as follows.\n * 1. Read the starting save address of the received data.\n * 2. Read data from the starting address of Socket n RX Buffer.\n * 3. After reading the received data, Update @ref Sn_RX_RD to the increased value as many as the reading size. * If the increment value exceeds the maximum value 0xFFFF, that is, is greater than 0x10000 and the carry bit occurs, * update with the lower 16bits value ignored the carry bit.\n * 4. Order RECV command is for notifying the updated @ref Sn_RX_RD to W5500. */ #define Sn_RX_RD(N) (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Write point of Receive memory(R) * @details @ref Sn_RX_WR is initialized by OPEN command and it is auto-increased by the data reception. * If the increased value exceeds the maximum value 0xFFFF, (greater than 0x10000 and the carry bit occurs), * then the carry bit is ignored and will automatically update with the lower 16bits value. */ #define Sn_RX_WR(N) (_W5500_IO_BASE_ + (0x002A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief socket interrupt mask register(R) * @details @ref Sn_IMR masks the interrupt of Socket n. * Each bit corresponds to each bit of @ref Sn_IR. When a Socket n Interrupt is occurred and the corresponding bit of @ref Sn_IMR is * the corresponding bit of @ref Sn_IR becomes When both the corresponding bit of @ref Sn_IMR and @ref Sn_IR are and the n-th bit of @ref IR is * Host is interrupted by asserted INTn PIN to low. */ #define Sn_IMR(N) (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Fragment field value in IP header register(R/W) * @details @ref Sn_FRAG configures the FRAG(Fragment field in IP header). */ #define Sn_FRAG(N) (_W5500_IO_BASE_ + (0x002D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) /** * @ingroup Socket_register_group * @brief Keep Alive Timer register(R/W) * @details @ref Sn_KPALVTR configures the transmitting timer of �KEEP ALIVE(KA)packet of SOCKETn. It is valid only in TCP mode, * and ignored in other modes. The time unit is 5s. * KA packet is transmittable after @ref Sn_SR is changed to SOCK_ESTABLISHED and after the data is transmitted or received to/from a peer at least once. * In case of '@ref Sn_KPALVTR > 0', W5500 automatically transmits KA packet after time-period for checking the TCP connection (Auto-keepalive-process). * In case of '@ref Sn_KPALVTR = 0', Auto-keep-alive-process will not operate, * and KA packet can be transmitted by SEND_KEEP command by the host (Manual-keep-alive-process). * Manual-keep-alive-process is ignored in case of '@ref Sn_KPALVTR > 0'. */ #define Sn_KPALVTR(N) (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) //#define Sn_TSR(N) (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3)) //----------------------------- W5500 Register values ----------------------------- /* MODE register values */ /** * @brief Reset * @details If this bit is All internal registers will be initialized. It will be automatically cleared as after S/W reset. */ #define MR_RST 0x80 /** * @brief Wake on LAN * @details 0 : Disable WOL mode\n * 1 : Enable WOL mode\n * If WOL mode is enabled and the received magic packet over UDP has been normally processed, the Interrupt PIN (INTn) asserts to low. * When using WOL mode, the UDP Socket should be opened with any source port number. (Refer to Socket n Mode Register (@ref Sn_MR) for opening Socket.) * @note The magic packet over UDP supported by W5500 consists of 6 bytes synchronization stream (xFFFFFFFFFFFF and * 16 times Target MAC address stream in UDP payload. The options such like password are ignored. You can use any UDP source port number for WOL mode. */ #define MR_WOL 0x20 /** * @brief Ping block * @details 0 : Disable Ping block\n * 1 : Enable Ping block\n * If the bit is it blocks the response to a ping request. */ #define MR_PB 0x10 /** * @brief Enable PPPoE * @details 0 : DisablePPPoE mode\n * 1 : EnablePPPoE mode\n * If you use ADSL, this bit should be */ #define MR_PPPOE 0x08 /** * @brief Enable UDP_FORCE_ARP CHECHK * @details 0 : Disable Force ARP mode\n * 1 : Enable Force ARP mode\n * In Force ARP mode, It forces on sending ARP Request whenever data is sent. */ #define MR_FARP 0x02 /* IR register values */ /** * @brief Check IP conflict. * @details Bit is set as when own source IP address is same with the sender IP address in the received ARP request. */ #define IR_CONFLICT 0x80 /** * @brief Get the destination unreachable message in UDP sending. * @details When receiving the ICMP (Destination port unreachable) packet, this bit is set as * When this bit is Destination Information such as IP address and Port number may be checked with the corresponding @ref UIPR & @ref UPORTR. */ #define IR_UNREACH 0x40 /** * @brief Get the PPPoE close message. * @details When PPPoE is disconnected during PPPoE mode, this bit is set. */ #define IR_PPPoE 0x20 /** * @brief Get the magic packet interrupt. * @details When WOL mode is enabled and receives the magic packet over UDP, this bit is set. */ #define IR_MP 0x10 /* PHYCFGR register value */ #define PHYCFGR_RST ~(1<<7) //< For PHY reset, must operate AND mask. #define PHYCFGR_OPMD (1<<6) // Configre PHY with OPMDC value #define PHYCFGR_OPMDC_ALLA (7<<3) #define PHYCFGR_OPMDC_PDOWN (6<<3) #define PHYCFGR_OPMDC_NA (5<<3) #define PHYCFGR_OPMDC_100FA (4<<3) #define PHYCFGR_OPMDC_100F (3<<3) #define PHYCFGR_OPMDC_100H (2<<3) #define PHYCFGR_OPMDC_10F (1<<3) #define PHYCFGR_OPMDC_10H (0<<3) #define PHYCFGR_DPX_FULL (1<<2) #define PHYCFGR_DPX_HALF (0<<2) #define PHYCFGR_SPD_100 (1<<1) #define PHYCFGR_SPD_10 (0<<1) #define PHYCFGR_LNK_ON (1<<0) #define PHYCFGR_LNK_OFF (0<<0) /* IMR register values */ /** * @brief IP Conflict Interrupt Mask. * @details 0: Disable IP Conflict Interrupt\n * 1: Enable IP Conflict Interrupt */ #define IM_IR7 0x80 /** * @brief Destination unreachable Interrupt Mask. * @details 0: Disable Destination unreachable Interrupt\n * 1: Enable Destination unreachable Interrupt */ #define IM_IR6 0x40 /** * @brief PPPoE Close Interrupt Mask. * @details 0: Disable PPPoE Close Interrupt\n * 1: Enable PPPoE Close Interrupt */ #define IM_IR5 0x20 /** * @brief Magic Packet Interrupt Mask. * @details 0: Disable Magic Packet Interrupt\n * 1: Enable Magic Packet Interrupt */ #define IM_IR4 0x10 /* Sn_MR Default values */ /** * @brief Support UDP Multicasting * @details 0 : disable Multicasting\n * 1 : enable Multicasting\n * This bit is applied only during UDP mode(P[3:0] = 010.\n * To use multicasting, @ref Sn_DIPR & @ref Sn_DPORT should be respectively configured with the multicast group IP address & port number * before Socket n is opened by OPEN command of @ref Sn_CR. */ #define Sn_MR_MULTI 0x80 /** * @brief Broadcast block in UDP Multicasting. * @details 0 : disable Broadcast Blocking\n * 1 : enable Broadcast Blocking\n * This bit blocks to receive broadcasting packet during UDP mode(P[3:0] = 010.\m * In addition, This bit does when MACRAW mode(P[3:0] = 100 */ #define Sn_MR_BCASTB 0x40 /** * @brief No Delayed Ack(TCP), Multicast flag * @details 0 : Disable No Delayed ACK option\n * 1 : Enable No Delayed ACK option\n * This bit is applied only during TCP mode (P[3:0] = 001.\n * When this bit is It sends the ACK packet without delay as soon as a Data packet is received from a peer.\n * When this bit is It sends the ACK packet after waiting for the timeout time configured by @ref RTR. */ #define Sn_MR_ND 0x20 /** * @brief Unicast Block in UDP Multicasting * @details 0 : disable Unicast Blocking\n * 1 : enable Unicast Blocking\n * This bit blocks receiving the unicast packet during UDP mode(P[3:0] = 010 and MULTI = */ #define Sn_MR_UCASTB 0x10 /** * @brief MAC LAYER RAW SOCK * @details This configures the protocol mode of Socket n. * @note MACRAW mode should be only used in Socket 0. */ #define Sn_MR_MACRAW 0x04 //#define Sn_MR_IPRAW 0x03 /**< IP LAYER RAW SOCK */ /** * @brief UDP * @details This configures the protocol mode of Socket n. */ #define Sn_MR_UDP 0x02 /** * @brief TCP * @details This configures the protocol mode of Socket n. */ #define Sn_MR_TCP 0x01 /** * @brief Unused socket * @details This configures the protocol mode of Socket n. */ #define Sn_MR_CLOSE 0x00 /* Sn_MR values used with Sn_MR_MACRAW */ /** * @brief MAC filter enable in @ref Sn_MR_MACRAW mode * @details 0 : disable MAC Filtering\n * 1 : enable MAC Filtering\n * This bit is applied only during MACRAW mode(P[3:0] = 100.\n * When set as W5500 can only receive broadcasting packet or packet sent to itself. * When this bit is W5500 can receive all packets on Ethernet. * If user wants to implement Hybrid TCP/IP stack, * it is recommended that this bit is set as for reducing host overhead to process the all received packets. */ #define Sn_MR_MFEN Sn_MR_MULTI /** * @brief Multicast Blocking in @ref Sn_MR_MACRAW mode * @details 0 : using IGMP version 2\n * 1 : using IGMP version 1\n * This bit is applied only during UDP mode(P[3:0] = 010 and MULTI = * It configures the version for IGMP messages (Join/Leave/Report). */ #define Sn_MR_MMB Sn_MR_ND /** * @brief IPv6 packet Blocking in @ref Sn_MR_MACRAW mode * @details 0 : disable IPv6 Blocking\n * 1 : enable IPv6 Blocking\n * This bit is applied only during MACRAW mode (P[3:0] = 100. It blocks to receiving the IPv6 packet. */ #define Sn_MR_MIP6B Sn_MR_UCASTB /* Sn_MR value used with Sn_MR_UDP & Sn_MR_MULTI */ /** * @brief IGMP version used in UDP mulitcasting * @details 0 : disable Multicast Blocking\n * 1 : enable Multicast Blocking\n * This bit is applied only when MACRAW mode(P[3:0] = 100. It blocks to receive the packet with multicast MAC address. */ #define Sn_MR_MC Sn_MR_ND /* Sn_MR alternate values */ /** * @brief For Berkeley Socket API */ #define SOCK_STREAM Sn_MR_TCP /** * @brief For Berkeley Socket API */ #define SOCK_DGRAM Sn_MR_UDP /* Sn_CR values */ /** * @brief Initialize or open socket * @details Socket n is initialized and opened according to the protocol selected in Sn_MR(P3:P0). * The table below shows the value of @ref Sn_SR corresponding to @ref Sn_MR.\n * <table> * <tr> <td>\b Sn_MR (P[3:0])</td> <td>\b Sn_SR</td> </tr> * <tr> <td>Sn_MR_CLOSE (000</td> <td></td> </tr> * <tr> <td>Sn_MR_TCP (001</td> <td>SOCK_INIT (0x13)</td> </tr> * <tr> <td>Sn_MR_UDP (010</td> <td>SOCK_UDP (0x22)</td> </tr> * <tr> <td>S0_MR_MACRAW (100</td> <td>SOCK_MACRAW (0x02)</td> </tr> * </table> */ #define Sn_CR_OPEN 0x01 /** * @brief Wait connection request in TCP mode(Server mode) * @details This is valid only in TCP mode (Sn_MR(P3:P0) = Sn_MR_TCP). * In this mode, Socket n operates as a �TCP serverand waits for connection-request (SYN packet) from any �TCP client * The @ref Sn_SR changes the state from SOCK_INIT to SOCKET_LISTEN. * When a �TCP clientconnection request is successfully established, * the @ref Sn_SR changes from SOCK_LISTEN to SOCK_ESTABLISHED and the Sn_IR(0) becomes * But when a �TCP clientconnection request is failed, Sn_IR(3) becomes and the status of @ref Sn_SR changes to SOCK_CLOSED. */ #define Sn_CR_LISTEN 0x02 /** * @brief Send connection request in TCP mode(Client mode) * @details To connect, a connect-request (SYN packet) is sent to b>TCP server</b>configured by @ref Sn_DIPR & Sn_DPORT(destination address & port). * If the connect-request is successful, the @ref Sn_SR is changed to @ref SOCK_ESTABLISHED and the Sn_IR(0) becomes \n\n * The connect-request fails in the following three cases.\n * 1. When a @b ARPTO occurs (@ref Sn_IR[3] = ) because destination hardware address is not acquired through the ARP-process.\n * 2. When a @b SYN/ACK packet is not received and @b TCPTO (Sn_IR(3) = )\n * 3. When a @b RST packet is received instead of a @b SYN/ACK packet. In these cases, @ref Sn_SR is changed to @ref SOCK_CLOSED. * @note This is valid only in TCP mode and operates when Socket n acts as b>TCP client</b> */ #define Sn_CR_CONNECT 0x04 /** * @brief Send closing request in TCP mode * @details Regardless of b>TCP server</b>or b>TCP client</b> the DISCON command processes the disconnect-process (b>Active close</b>or b>Passive close</b>.\n * @par Active close * it transmits disconnect-request(FIN packet) to the connected peer\n * @par Passive close * When FIN packet is received from peer, a FIN packet is replied back to the peer.\n * @details When the disconnect-process is successful (that is, FIN/ACK packet is received successfully), @ref Sn_SR is changed to @ref SOCK_CLOSED.\n * Otherwise, TCPTO occurs (Sn_IR(3)=)= and then @ref Sn_SR is changed to @ref SOCK_CLOSED. * @note Valid only in TCP mode. */ #define Sn_CR_DISCON 0x08 /** * @brief Close socket * @details Sn_SR is changed to @ref SOCK_CLOSED. */ #define Sn_CR_CLOSE 0x10 /** * @brief Update TX buffer pointer and send data * @details SEND transmits all the data in the Socket n TX buffer.\n * For more details, please refer to Socket n TX Free Size Register (@ref Sn_TX_FSR), Socket n, * TX Write Pointer Register(@ref Sn_TX_WR), and Socket n TX Read Pointer Register(@ref Sn_TX_RD). */ #define Sn_CR_SEND 0x20 /** * @brief Send data with MAC address, so without ARP process * @details The basic operation is same as SEND.\n * Normally SEND transmits data after destination hardware address is acquired by the automatic ARP-process(Address Resolution Protocol).\n * But SEND_MAC transmits data without the automatic ARP-process.\n * In this case, the destination hardware address is acquired from @ref Sn_DHAR configured by host, instead of APR-process. * @note Valid only in UDP mode. */ #define Sn_CR_SEND_MAC 0x21 /** * @brief Send keep alive message * @details It checks the connection status by sending 1byte keep-alive packet.\n * If the peer can not respond to the keep-alive packet during timeout time, the connection is terminated and the timeout interrupt will occur. * @note Valid only in TCP mode. */ #define Sn_CR_SEND_KEEP 0x22 /** * @brief Update RX buffer pointer and receive data * @details RECV completes the processing of the received data in Socket n RX Buffer by using a RX read pointer register (@ref Sn_RX_RD).\n * For more details, refer to Socket n RX Received Size Register (@ref Sn_RX_RSR), Socket n RX Write Pointer Register (@ref Sn_RX_WR), * and Socket n RX Read Pointer Register (@ref Sn_RX_RD). */ #define Sn_CR_RECV 0x40 /* Sn_IR values */ /** * @brief SEND_OK Interrupt * @details This is issued when SEND command is completed. */ #define Sn_IR_SENDOK 0x10 /** * @brief TIMEOUT Interrupt * @details This is issued when ARPTO or TCPTO occurs. */ #define Sn_IR_TIMEOUT 0x08 /** * @brief RECV Interrupt * @details This is issued whenever data is received from a peer. */ #define Sn_IR_RECV 0x04 /** * @brief DISCON Interrupt * @details This is issued when FIN or FIN/ACK packet is received from a peer. */ #define Sn_IR_DISCON 0x02 /** * @brief CON Interrupt * @details This is issued one time when the connection with peer is successful and then @ref Sn_SR is changed to @ref SOCK_ESTABLISHED. */ #define Sn_IR_CON 0x01 /* Sn_SR values */ /** * @brief Closed * @details This indicates that Socket n is released.\N * When DICON, CLOSE command is ordered, or when a timeout occurs, it is changed to @ref SOCK_CLOSED regardless of previous status. */ #define SOCK_CLOSED 0x00 /** * @brief Initiate state * @details This indicates Socket n is opened with TCP mode.\N * It is changed to @ref SOCK_INIT when Sn_MR(P[3:0]) = 001and OPEN command is ordered.\N * After @ref SOCK_INIT, user can use LISTEN /CONNECT command. */ #define SOCK_INIT 0x13 /** * @brief Listen state * @details This indicates Socket n is operating as b>TCP server</b>mode and waiting for connection-request (SYN packet) from a peer (b>TCP client</b>.\n * It will change to @ref SOCK_ESTALBLISHED when the connection-request is successfully accepted.\n * Otherwise it will change to @ref SOCK_CLOSED after TCPTO occurred (Sn_IR(TIMEOUT) = . */ #define SOCK_LISTEN 0x14 /** * @brief Connection state * @details This indicates Socket n sent the connect-request packet (SYN packet) to a peer.\n * It is temporarily shown when @ref Sn_SR is changed from @ref SOCK_INIT to @ref SOCK_ESTABLISHED by CONNECT command.\n * If connect-accept(SYN/ACK packet) is received from the peer at SOCK_SYNSENT, it changes to @ref SOCK_ESTABLISHED.\n * Otherwise, it changes to @ref SOCK_CLOSED after TCPTO (@ref Sn_IR[TIMEOUT] = is occurred. */ #define SOCK_SYNSENT 0x15 /** * @brief Connection state * @details It indicates Socket n successfully received the connect-request packet (SYN packet) from a peer.\n * If socket n sends the response (SYN/ACK packet) to the peer successfully, it changes to @ref SOCK_ESTABLISHED. \n * If not, it changes to @ref SOCK_CLOSED after timeout occurs (@ref Sn_IR[TIMEOUT] = . */ #define SOCK_SYNRECV 0x16 /** * @brief Success to connect * @details This indicates the status of the connection of Socket n.\n * It changes to @ref SOCK_ESTABLISHED when the b>TCP SERVER</b>processed the SYN packet from the b>TCP CLIENT</b>during @ref SOCK_LISTEN, or * when the CONNECT command is successful.\n * During @ref SOCK_ESTABLISHED, DATA packet can be transferred using SEND or RECV command. */ #define SOCK_ESTABLISHED 0x17 /** * @brief Closing state * @details These indicate Socket n is closing.\n * These are shown in disconnect-process such as active-close and passive-close.\n * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. */ #define SOCK_FIN_WAIT 0x18 /** * @brief Closing state * @details These indicate Socket n is closing.\n * These are shown in disconnect-process such as active-close and passive-close.\n * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. */ #define SOCK_CLOSING 0x1A /** * @brief Closing state * @details These indicate Socket n is closing.\n * These are shown in disconnect-process such as active-close and passive-close.\n * When Disconnect-process is successfully completed, or when timeout occurs, these change to @ref SOCK_CLOSED. */ #define SOCK_TIME_WAIT 0x1B /** * @brief Closing state * @details This indicates Socket n received the disconnect-request (FIN packet) from the connected peer.\n * This is half-closing status, and data can be transferred.\n * For full-closing, DISCON command is used. But For just-closing, CLOSE command is used. */ #define SOCK_CLOSE_WAIT 0x1C /** * @brief Closing state * @details This indicates Socket n is waiting for the response (FIN/ACK packet) to the disconnect-request (FIN packet) by passive-close.\n * It changes to @ref SOCK_CLOSED when Socket n received the response successfully, or when timeout occurs (@ref Sn_IR[TIMEOUT] = . */ #define SOCK_LAST_ACK 0x1D /** * @brief UDP socket * @details This indicates Socket n is opened in UDP mode(Sn_MR(P[3:0]) = 010.\n * It changes to SOCK_UPD when Sn_MR(P[3:0]) = 010 and OPEN command is ordered.\n * Unlike TCP mode, data can be transfered without the connection-process. */ #define SOCK_UDP 0x22 //#define SOCK_IPRAW 0x32 /**< IP raw mode socket */ /** * @brief MAC raw mode socket * @details This indicates Socket 0 is opened in MACRAW mode (S0_MR(P[3:0]) = 100and is valid only in Socket 0.\n * It changes to SOCK_MACRAW when S0_MR(P[3:0] = 100and OPEN command is ordered.\n * Like UDP mode socket, MACRAW mode Socket 0 can transfer a MAC packet (Ethernet frame) without the connection-process. */ #define SOCK_MACRAW 0x42 //#define SOCK_PPPOE 0x5F /* IP PROTOCOL */ #define IPPROTO_IP 0 //< Dummy for IP #define IPPROTO_ICMP 1 //< Control message protocol #define IPPROTO_IGMP 2 //< Internet group management protocol #define IPPROTO_GGP 3 //< Gateway^2 (deprecated) #define IPPROTO_TCP 6 //< TCP #define IPPROTO_PUP 12 //< PUP #define IPPROTO_UDP 17 //< UDP #define IPPROTO_IDP 22 //< XNS idp #define IPPROTO_ND 77 //< UNOFFICIAL net disk protocol #define IPPROTO_RAW 255 //< Raw IP packet /** * @brief Enter a critical section * * @details It is provided to protect your shared code which are executed without distribution. \n \n * * In non-OS environment, It can be just implemented by disabling whole interrupt.\n * In OS environment, You can replace it to critical section api supported by OS. * * \sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() * \sa WIZCHIP_CRITICAL_EXIT() */ #define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter() /** * @brief Exit a critical section * * @details It is provided to protect your shared code which are executed without distribution. \n\n * * In non-OS environment, It can be just implemented by disabling whole interrupt. \n * In OS environment, You can replace it to critical section api supported by OS. * * @sa WIZCHIP_READ(), WIZCHIP_WRITE(), WIZCHIP_READ_BUF(), WIZCHIP_WRITE_BUF() * @sa WIZCHIP_CRITICAL_ENTER() */ #define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit() //////////////////////// // Basic I/O Function // //////////////////////// /** * @ingroup Basic_IO_function * @brief It reads 1 byte value from a register. * @param AddrSel Register address * @return The value of register */ uint8_t WIZCHIP_READ (uint32_t AddrSel); /** * @ingroup Basic_IO_function * @brief It writes 1 byte value to a register. * @param AddrSel Register address * @param wb Write data * @return void */ void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb ); /** * @ingroup Basic_IO_function * @brief It reads sequence data from registers. * @param AddrSel Register address * @param pBuf Pointer buffer to read data * @param len Data length */ void WIZCHIP_READ_BUF (uint32_t AddrSel, uint8_t* pBuf, uint16_t len); /** * @ingroup Basic_IO_function * @brief It writes sequence data to registers. * @param AddrSel Register address * @param pBuf Pointer buffer to write data * @param len Data length */ void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len); ///////////////////////////////// // Common Register I/O function // ///////////////////////////////// /** * @ingroup Common_register_access_function * @brief Set Mode Register * @param (uint8_t)mr The value to be set. * @sa getMR() */ #define setMR(mr) \ WIZCHIP_WRITE(MR,mr) /** * @ingroup Common_register_access_function * @brief Get Mode Register * @return uint8_t. The value of Mode register. * @sa setMR() */ #define getMR() \ WIZCHIP_READ(MR) /** * @ingroup Common_register_access_function * @brief Set gateway IP address * @param (uint8_t*)gar Pointer variable to set gateway IP address. It should be allocated 4 bytes. * @sa getGAR() */ #define setGAR(gar) \ WIZCHIP_WRITE_BUF(GAR,gar,4) /** * @ingroup Common_register_access_function * @brief Get gateway IP address * @param (uint8_t*)gar Pointer variable to get gateway IP address. It should be allocated 4 bytes. * @sa setGAR() */ #define getGAR(gar) \ WIZCHIP_READ_BUF(GAR,gar,4) /** * @ingroup Common_register_access_function * @brief Set subnet mask address * @param (uint8_t*)subr Pointer variable to set subnet mask address. It should be allocated 4 bytes. * @sa getSUBR() */ #define setSUBR(subr) \ WIZCHIP_WRITE_BUF(SUBR, subr,4) /** * @ingroup Common_register_access_function * @brief Get subnet mask address * @param (uint8_t*)subr Pointer variable to get subnet mask address. It should be allocated 4 bytes. * @sa setSUBR() */ #define getSUBR(subr) \ WIZCHIP_READ_BUF(SUBR, subr, 4) /** * @ingroup Common_register_access_function * @brief Set local MAC address * @param (uint8_t*)shar Pointer variable to set local MAC address. It should be allocated 6 bytes. * @sa getSHAR() */ #define setSHAR(shar) \ WIZCHIP_WRITE_BUF(SHAR, shar, 6) /** * @ingroup Common_register_access_function * @brief Get local MAC address * @param (uint8_t*)shar Pointer variable to get local MAC address. It should be allocated 6 bytes. * @sa setSHAR() */ #define getSHAR(shar) \ WIZCHIP_READ_BUF(SHAR, shar, 6) /** * @ingroup Common_register_access_function * @brief Set local IP address * @param (uint8_t*)sipr Pointer variable to set local IP address. It should be allocated 4 bytes. * @sa getSIPR() */ #define setSIPR(sipr) \ WIZCHIP_WRITE_BUF(SIPR, sipr, 4) /** * @ingroup Common_register_access_function * @brief Get local IP address * @param (uint8_t*)sipr Pointer variable to get local IP address. It should be allocated 4 bytes. * @sa setSIPR() */ #define getSIPR(sipr) \ WIZCHIP_READ_BUF(SIPR, sipr, 4) /** * @ingroup Common_register_access_function * @brief Set INTLEVEL register * @param (uint16_t)intlevel Value to set @ref INTLEVEL register. * @sa getINTLEVEL() */ #define setINTLEVEL(intlevel) {\ WIZCHIP_WRITE(INTLEVEL, (uint8_t)(intlevel >> 8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(INTLEVEL,1), (uint8_t) intlevel); \ } /** * @ingroup Common_register_access_function * @brief Get INTLEVEL register * @return uint16_t. Value of @ref INTLEVEL register. * @sa setINTLEVEL() */ #define getINTLEVEL() \ ((WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL,1))) /** * @ingroup Common_register_access_function * @brief Set @ref IR register * @param (uint8_t)ir Value to set @ref IR register. * @sa getIR() */ #define setIR(ir) \ WIZCHIP_WRITE(IR, (ir & 0xF0)) /** * @ingroup Common_register_access_function * @brief Get @ref IR register * @return uint8_t. Value of @ref IR register. * @sa setIR() */ #define getIR() \ (WIZCHIP_READ(IR) & 0xF0) /** * @ingroup Common_register_access_function * @brief Set @ref IMR register * @param (uint8_t)imr Value to set @ref IMR register. * @sa getIMR() */ #define setIMR(imr) \ WIZCHIP_WRITE(IMR, imr) /** * @ingroup Common_register_access_function * @brief Get @ref IMR register * @return uint8_t. Value of @ref IMR register. * @sa setIMR() */ #define getIMR() \ WIZCHIP_READ(IMR) /** * @ingroup Common_register_access_function * @brief Set @ref SIR register * @param (uint8_t)sir Value to set @ref SIR register. * @sa getSIR() */ #define setSIR(sir) \ WIZCHIP_WRITE(SIR, sir) /** * @ingroup Common_register_access_function * @brief Get @ref SIR register * @return uint8_t. Value of @ref SIR register. * @sa setSIR() */ #define getSIR() \ WIZCHIP_READ(SIR) /** * @ingroup Common_register_access_function * @brief Set @ref SIMR register * @param (uint8_t)simr Value to set @ref SIMR register. * @sa getSIMR() */ #define setSIMR(simr) \ WIZCHIP_WRITE(SIMR, simr) /** * @ingroup Common_register_access_function * @brief Get @ref SIMR register * @return uint8_t. Value of @ref SIMR register. * @sa setSIMR() */ #define getSIMR() \ WIZCHIP_READ(SIMR) /** * @ingroup Common_register_access_function * @brief Set @ref RTR register * @param (uint16_t)rtr Value to set @ref RTR register. * @sa getRTR() */ #define setRTR(rtr) {\ WIZCHIP_WRITE(RTR, (uint8_t)(rtr >> 8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(RTR,1), (uint8_t) rtr); \ } /** * @ingroup Common_register_access_function * @brief Get @ref RTR register * @return uint16_t. Value of @ref RTR register. * @sa setRTR() */ #define getRTR() \ ((WIZCHIP_READ(RTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(RTR,1))) /** * @ingroup Common_register_access_function * @brief Set @ref RCR register * @param (uint8_t)rcr Value to set @ref RCR register. * @sa getRCR() */ #define setRCR(rcr) \ WIZCHIP_WRITE(RCR, rcr) /** * @ingroup Common_register_access_function * @brief Get @ref RCR register * @return uint8_t. Value of @ref RCR register. * @sa setRCR() */ #define getRCR() \ WIZCHIP_READ(RCR) //================================================== test done =========================================================== /** * @ingroup Common_register_access_function * @brief Set @ref PTIMER register * @param (uint8_t)ptimer Value to set @ref PTIMER register. * @sa getPTIMER() */ #define setPTIMER(ptimer) \ WIZCHIP_WRITE(PTIMER, ptimer) /** * @ingroup Common_register_access_function * @brief Get @ref PTIMER register * @return uint8_t. Value of @ref PTIMER register. * @sa setPTIMER() */ #define getPTIMER() \ WIZCHIP_READ(PTIMER) /** * @ingroup Common_register_access_function * @brief Set @ref PMAGIC register * @param (uint8_t)pmagic Value to set @ref PMAGIC register. * @sa getPMAGIC() */ #define setPMAGIC(pmagic) \ WIZCHIP_WRITE(PMAGIC, pmagic) /** * @ingroup Common_register_access_function * @brief Get @ref PMAGIC register * @return uint8_t. Value of @ref PMAGIC register. * @sa setPMAGIC() */ #define getPMAGIC() \ WIZCHIP_READ(PMAGIC) /** * @ingroup Common_register_access_function * @brief Set PHAR address * @param (uint8_t*)phar Pointer variable to set PPP destination MAC register address. It should be allocated 6 bytes. * @sa getPHAR() */ #define setPHAR(phar) \ WIZCHIP_WRITE_BUF(PHAR, phar, 6) /** * @ingroup Common_register_access_function * @brief Get local IP address * @param (uint8_t*)phar Pointer variable to PPP destination MAC register address. It should be allocated 6 bytes. * @sa setPHAR() */ #define getPHAR(phar) \ WIZCHIP_READ_BUF(PHAR, phar, 6) /** * @ingroup Common_register_access_function * @brief Set @ref PSID register * @param (uint16_t)psid Value to set @ref PSID register. * @sa getPSID() */ #define setPSID(psid) {\ WIZCHIP_WRITE(PSID, (uint8_t)(psid >> 8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PSID,1), (uint8_t) psid); \ } /** * @ingroup Common_register_access_function * @brief Get @ref PSID register * @return uint16_t. Value of @ref PSID register. * @sa setPSID() */ //uint16_t getPSID(void); #define getPSID() \ ((WIZCHIP_READ(PSID) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PSID,1))) /** * @ingroup Common_register_access_function * @brief Set @ref PMRU register * @param (uint16_t)pmru Value to set @ref PMRU register. * @sa getPMRU() */ #define setPMRU(pmru) { \ WIZCHIP_WRITE(PMRU, (uint8_t)(pmru>>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PMRU,1), (uint8_t) pmru); \ } /** * @ingroup Common_register_access_function * @brief Get @ref PMRU register * @return uint16_t. Value of @ref PMRU register. * @sa setPMRU() */ #define getPMRU() \ ((WIZCHIP_READ(PMRU) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PMRU,1))) /** * @ingroup Common_register_access_function * @brief Get unreachable IP address * @param (uint8_t*)uipr Pointer variable to get unreachable IP address. It should be allocated 4 bytes. */ #define getUIPR(uipr) \ WIZCHIP_READ_BUF(UIPR,uipr,6) /** * @ingroup Common_register_access_function * @brief Get @ref UPORTR register * @return uint16_t. Value of @ref UPORTR register. */ #define getUPORTR() \ ((WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(UPORTR,1))) /** * @ingroup Common_register_access_function * @brief Set @ref PHYCFGR register * @param (uint8_t)phycfgr Value to set @ref PHYCFGR register. * @sa getPHYCFGR() */ #define setPHYCFGR(phycfgr) \ WIZCHIP_WRITE(PHYCFGR, phycfgr) /** * @ingroup Common_register_access_function * @brief Get @ref PHYCFGR register * @return uint8_t. Value of @ref PHYCFGR register. * @sa setPHYCFGR() */ #define getPHYCFGR() \ WIZCHIP_READ(PHYCFGR) /** * @ingroup Common_register_access_function * @brief Get @ref VERSIONR register * @return uint8_t. Value of @ref VERSIONR register. */ #define getVERSIONR() \ WIZCHIP_READ(VERSIONR) ///////////////////////////////////// /////////////////////////////////// // Socket N register I/O function // /////////////////////////////////// /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_MR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)mr Value to set @ref Sn_MR * @sa getSn_MR() */ #define setSn_MR(sn, mr) \ WIZCHIP_WRITE(Sn_MR(sn),mr) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_MR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_MR. * @sa setSn_MR() */ #define getSn_MR(sn) \ WIZCHIP_READ(Sn_MR(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_CR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)cr Value to set @ref Sn_CR * @sa getSn_CR() */ #define setSn_CR(sn, cr) \ WIZCHIP_WRITE(Sn_CR(sn), cr) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_CR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_CR. * @sa setSn_CR() */ #define getSn_CR(sn) \ WIZCHIP_READ(Sn_CR(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_IR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)ir Value to set @ref Sn_IR * @sa getSn_IR() */ #define setSn_IR(sn, ir) \ WIZCHIP_WRITE(Sn_IR(sn), (ir & 0x1F)) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_IR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_IR. * @sa setSn_IR() */ #define getSn_IR(sn) \ (WIZCHIP_READ(Sn_IR(sn)) & 0x1F) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_IMR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)imr Value to set @ref Sn_IMR * @sa getSn_IMR() */ #define setSn_IMR(sn, imr) \ WIZCHIP_WRITE(Sn_IMR(sn), (imr & 0x1F)) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_IMR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_IMR. * @sa setSn_IMR() */ #define getSn_IMR(sn) \ (WIZCHIP_READ(Sn_IMR(sn)) & 0x1F) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_SR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_SR. */ #define getSn_SR(sn) \ WIZCHIP_READ(Sn_SR(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_PORT register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)port Value to set @ref Sn_PORT. * @sa getSn_PORT() */ #define setSn_PORT(sn, port) { \ WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1), (uint8_t) port); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_PORT register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_PORT. * @sa setSn_PORT() */ #define getSn_PORT(sn) \ ((WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_DHAR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t*)dhar Pointer variable to set socket n destination hardware address. It should be allocated 6 bytes. * @sa getSn_DHAR() */ #define setSn_DHAR(sn, dhar) \ WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_MR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t*)dhar Pointer variable to get socket n destination hardware address. It should be allocated 6 bytes. * @sa setSn_DHAR() */ #define getSn_DHAR(sn, dhar) \ WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_DIPR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t*)dipr Pointer variable to set socket n destination IP address. It should be allocated 4 bytes. * @sa getSn_DIPR() */ #define setSn_DIPR(sn, dipr) \ WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_DIPR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t*)dipr Pointer variable to get socket n destination IP address. It should be allocated 4 bytes. * @sa SetSn_DIPR() */ #define getSn_DIPR(sn, dipr) \ WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_DPORT register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)dport Value to set @ref Sn_DPORT * @sa getSn_DPORT() */ #define setSn_DPORT(sn, dport) { \ WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t) (dport>>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1), (uint8_t) dport); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_DPORT register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_DPORT. * @sa setSn_DPORT() */ #define getSn_DPORT(sn) \ ((WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_MSSR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)mss Value to set @ref Sn_MSSR * @sa setSn_MSSR() */ #define setSn_MSSR(sn, mss) { \ WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss>>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1), (uint8_t) mss); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_MSSR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_MSSR. * @sa setSn_MSSR() */ #define getSn_MSSR(sn) \ ((WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_TOS register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)tos Value to set @ref Sn_TOS * @sa getSn_TOS() */ #define setSn_TOS(sn, tos) \ WIZCHIP_WRITE(Sn_TOS(sn), tos) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TOS register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of Sn_TOS. * @sa setSn_TOS() */ #define getSn_TOS(sn) \ WIZCHIP_READ(Sn_TOS(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_TTL register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)ttl Value to set @ref Sn_TTL * @sa getSn_TTL() */ #define setSn_TTL(sn, ttl) \ WIZCHIP_WRITE(Sn_TTL(sn), ttl) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TTL register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_TTL. * @sa setSn_TTL() */ #define getSn_TTL(sn) \ WIZCHIP_READ(Sn_TTL(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_RXBUF_SIZE register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)rxbufsize Value to set @ref Sn_RXBUF_SIZE * @sa getSn_RXBUF_SIZE() */ #define setSn_RXBUF_SIZE(sn, rxbufsize) \ WIZCHIP_WRITE(Sn_RXBUF_SIZE(sn),rxbufsize) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_RXBUF_SIZE register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_RXBUF_SIZE. * @sa setSn_RXBUF_SIZE() */ #define getSn_RXBUF_SIZE(sn) \ WIZCHIP_READ(Sn_RXBUF_SIZE(sn)) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_TXBUF_SIZE register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)txbufsize Value to set @ref Sn_TXBUF_SIZE * @sa getSn_TXBUF_SIZE() */ #define setSn_TXBUF_SIZE(sn, txbufsize) \ WIZCHIP_WRITE(Sn_TXBUF_SIZE(sn), txbufsize) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TXBUF_SIZE register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_TXBUF_SIZE. * @sa setSn_TXBUF_SIZE() */ #define getSn_TXBUF_SIZE(sn) \ WIZCHIP_READ(Sn_TXBUF_SIZE(sn)) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TX_FSR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_TX_FSR. */ uint16_t getSn_TX_FSR(uint8_t sn); /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TX_RD register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_TX_RD. */ #define getSn_TX_RD(sn) \ ((WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_TX_WR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)txwr Value to set @ref Sn_TX_WR * @sa GetSn_TX_WR() */ #define setSn_TX_WR(sn, txwr) { \ WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr>>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1), (uint8_t) txwr); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_TX_WR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_TX_WR. * @sa setSn_TX_WR() */ #define getSn_TX_WR(sn) \ ((WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1))) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_RX_RSR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_RX_RSR. */ uint16_t getSn_RX_RSR(uint8_t sn); /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_RX_RD register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)rxrd Value to set @ref Sn_RX_RD * @sa getSn_RX_RD() */ #define setSn_RX_RD(sn, rxrd) { \ WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd>>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1), (uint8_t) rxrd); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_RX_RD register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @regurn uint16_t. Value of @ref Sn_RX_RD. * @sa setSn_RX_RD() */ #define getSn_RX_RD(sn) \ ((WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1))) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_RX_WR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_RX_WR. */ #define getSn_RX_WR(sn) \ ((WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_FRAG register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint16_t)frag Value to set @ref Sn_FRAG * @sa getSn_FRAD() */ #define setSn_FRAG(sn, frag) { \ WIZCHIP_WRITE(Sn_FRAG(sn), (uint8_t)(frag >>8)); \ WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1), (uint8_t) frag); \ } /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_FRAG register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of @ref Sn_FRAG. * @sa setSn_FRAG() */ #define getSn_FRAG(sn) \ ((WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1))) /** * @ingroup Socket_register_access_function * @brief Set @ref Sn_KPALVTR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param (uint8_t)kpalvt Value to set @ref Sn_KPALVTR * @sa getSn_KPALVTR() */ #define setSn_KPALVTR(sn, kpalvt) \ WIZCHIP_WRITE(Sn_KPALVTR(sn), kpalvt) /** * @ingroup Socket_register_access_function * @brief Get @ref Sn_KPALVTR register * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint8_t. Value of @ref Sn_KPALVTR. * @sa setSn_KPALVTR() */ #define getSn_KPALVTR(sn) \ WIZCHIP_READ(Sn_KPALVTR(sn)) ////////////////////////////////////// ///////////////////////////////////// // Sn_TXBUF & Sn_RXBUF IO function // ///////////////////////////////////// /** * @brief Gets the max buffer size of socket sn passed as parameter. * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of Socket n RX max buffer size. */ #define getSn_RxMAX(sn) \ (getSn_RXBUF_SIZE(sn) << 10) /** * @brief Gets the max buffer size of socket sn passed as parameters. * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @return uint16_t. Value of Socket n TX max buffer size. */ //uint16_t getSn_TxMAX(uint8_t sn); #define getSn_TxMAX(sn) \ (getSn_TXBUF_SIZE(sn) << 10) /** * @ingroup Basic_IO_function * @brief It copies data to internal TX memory * * @details This function reads the Tx write pointer register and after that, * it copies the <i>wizdata(pointer buffer)</i> of the length of <i>len(variable)</i> bytes to internal TX memory * and updates the Tx write pointer register. * This function is being called by send() and sendto() function also. * * @note User should read upper byte first and lower byte later to get proper value. * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param wizdata Pointer buffer to write data * @param len Data length * @sa wiz_recv_data() */ void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len); /** * @ingroup Basic_IO_function * @brief It copies data to your buffer from internal RX memory * * @details This function read the Rx read pointer register and after that, * it copies the received data from internal RX memory * to <i>wizdata(pointer variable)</i> of the length of <i>len(variable)</i> bytes. * This function is being called by recv() also. * * @note User should read upper byte first and lower byte later to get proper value. * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param wizdata Pointer buffer to read data * @param len Data length * @sa wiz_send_data() */ void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len); /** * @ingroup Basic_IO_function * @brief It discard the received data in RX memory. * @details It discards the data of the length of <i>len(variable)</i> bytes in internal RX memory. * @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>. * @param len Data length */ void wiz_recv_ignore(uint8_t sn, uint16_t len); #endif // _W5500_H_ KAD/Ethernet/loopback.c
New file @@ -0,0 +1,225 @@ #include <stdio.h> #include "loopback.h" #include "socket.h" #include "wizchip_conf.h" #if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLCOK int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port) { int32_t ret; uint16_t size = 0, sentsize=0; #ifdef _LOOPBACK_DEBUG_ uint8_t destip[4]; uint16_t destport; #endif switch(getSn_SR(sn)) { case SOCK_ESTABLISHED : if(getSn_IR(sn) & Sn_IR_CON) { #ifdef _LOOPBACK_DEBUG_ getSn_DIPR(sn, destip); destport = getSn_DPORT(sn); printf("%d:Connected - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); #endif setSn_IR(sn,Sn_IR_CON); } if((size = getSn_RX_RSR(sn)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. { if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; ret = recv(sn, buf, size); if(ret <= 0) return ret; // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY. size = (uint16_t) ret; sentsize = 0; while(size != sentsize) { ret = send(sn, buf+sentsize, size-sentsize); if(ret < 0) { close(sn); return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } break; case SOCK_CLOSE_WAIT : #ifdef _LOOPBACK_DEBUG_ //printf("%d:CloseWait\r\n",sn); #endif if((ret = disconnect(sn)) != SOCK_OK) return ret; #ifdef _LOOPBACK_DEBUG_ printf("%d:Socket Closed\r\n", sn); #endif break; case SOCK_INIT : #ifdef _LOOPBACK_DEBUG_ printf("%d:Listen, TCP server loopback, port [%d]\r\n", sn, port); #endif if( (ret = listen(sn)) != SOCK_OK) return ret; break; case SOCK_CLOSED: #ifdef _LOOPBACK_DEBUG_ //printf("%d:TCP server loopback start\r\n",sn); #endif if((ret = socket(sn, Sn_MR_TCP, port, 0x00)) != sn) return ret; #ifdef _LOOPBACK_DEBUG_ //printf("%d:Socket opened\r\n",sn); #endif break; default: break; } return 1; } int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport) { int32_t ret; // return value for SOCK_ERRORs uint16_t size = 0, sentsize=0; // Destination (TCP Server) IP info (will be connected) // >> loopback_tcpc() function parameter // >> Ex) // uint8_t destip[4] = {192, 168, 0, 214}; // uint16_t destport = 5000; // Port number for TCP client (will be increased) static uint16_t any_port = 50000; // Socket Status Transitions // Check the W5500 Socket n status register (Sn_SR, The 'Sn_SR' controlled by Sn_CR command or Packet send/recv status) switch(getSn_SR(sn)) { case SOCK_ESTABLISHED : if(getSn_IR(sn) & Sn_IR_CON) // Socket n interrupt register mask; TCP CON interrupt = connection with peer is successful { #ifdef _LOOPBACK_DEBUG_ printf("%d:Connected to - %d.%d.%d.%d : %d\r\n",sn, destip[0], destip[1], destip[2], destip[3], destport); #endif setSn_IR(sn, Sn_IR_CON); // this interrupt should be write the bit cleared to '1' } ////////////////////////////////////////////////////////////////////////////////////////////// // Data Transaction Parts; Handle the [data receive and send] process ////////////////////////////////////////////////////////////////////////////////////////////// if((size = getSn_RX_RSR(sn)) > 0) // Sn_RX_RSR: Socket n Received Size Register, Receiving data length { if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; // DATA_BUF_SIZE means user defined buffer size (array) ret = recv(sn, buf, size); // Data Receive process (H/W Rx socket buffer -> User's buffer) if(ret <= 0) return ret; // If the received data length <= 0, receive failed and process end size = (uint16_t) ret; sentsize = 0; // Data sentsize control while(size != sentsize) { ret = send(sn, buf+sentsize, size-sentsize); // Data send process (User's buffer -> Destination through H/W Tx socket buffer) if(ret < 0) // Send Error occurred (sent data length < 0) { close(sn); // socket close return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } ////////////////////////////////////////////////////////////////////////////////////////////// break; case SOCK_CLOSE_WAIT : #ifdef _LOOPBACK_DEBUG_ //printf("%d:CloseWait\r\n",sn); #endif if((ret=disconnect(sn)) != SOCK_OK) return ret; #ifdef _LOOPBACK_DEBUG_ printf("%d:Socket Closed\r\n", sn); #endif break; case SOCK_INIT : #ifdef _LOOPBACK_DEBUG_ printf("%d:Try to connect to the %d.%d.%d.%d : %d\r\n", sn, destip[0], destip[1], destip[2], destip[3], destport); #endif if( (ret = connect(sn, destip, destport)) != SOCK_OK) return ret; // Try to TCP connect to the TCP server (destination) break; case SOCK_CLOSED: close(sn); if((ret=socket(sn, Sn_MR_TCP, any_port++, 0x00)) != sn){ if(any_port == 0xffff) any_port = 50000; return ret; // TCP socket open with 'any_port' port number } #ifdef _LOOPBACK_DEBUG_ //printf("%d:TCP client loopback start\r\n",sn); //printf("%d:Socket opened\r\n",sn); #endif break; default: break; } return 1; } int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port) { int32_t ret; uint16_t size, sentsize; uint8_t destip[4]; uint16_t destport; switch(getSn_SR(sn)) { case SOCK_UDP : if((size = getSn_RX_RSR(sn)) > 0) { if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; ret = recvfrom(sn, buf, size, destip, (uint16_t*)&destport); if(ret <= 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: recvfrom error. %ld\r\n",sn,ret); #endif return ret; } size = (uint16_t) ret; sentsize = 0; while(sentsize != size) { ret = sendto(sn, buf+sentsize, size-sentsize, destip, destport); if(ret < 0) { #ifdef _LOOPBACK_DEBUG_ printf("%d: sendto error. %ld\r\n",sn,ret); #endif return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } break; case SOCK_CLOSED: #ifdef _LOOPBACK_DEBUG_ //printf("%d:UDP loopback start\r\n",sn); #endif if((ret = socket(sn, Sn_MR_UDP, port, 0x00)) != sn) return ret; #ifdef _LOOPBACK_DEBUG_ printf("%d:Opened, UDP loopback, port [%d]\r\n", sn, port); #endif break; default : break; } return 1; } #endif KAD/Ethernet/loopback.h
New file @@ -0,0 +1,38 @@ #ifndef _LOOPBACK_H_ #define _LOOPBACK_H_ #ifdef __cplusplus extern "C" { #endif #include <stdint.h> /* Loopback test debug message printout enable */ // #define _LOOPBACK_DEBUG_ /* DATA_BUF_SIZE define for Loopback example */ #ifndef DATA_BUF_SIZE #define DATA_BUF_SIZE 256 #endif /************************/ /* Select LOOPBACK_MODE */ /************************/ #define LOOPBACK_MAIN_NOBLOCK 0 #define LOOPBACK_MODE LOOPBACK_MAIN_NOBLOCK /* TCP server Loopback test example */ int32_t loopback_tcps(uint8_t sn, uint8_t* buf, uint16_t port); /* TCP client Loopback test example */ int32_t loopback_tcpc(uint8_t sn, uint8_t* buf, uint8_t* destip, uint16_t destport); /* UDP Loopback test example */ int32_t loopback_udps(uint8_t sn, uint8_t* buf, uint16_t port); #ifdef __cplusplus } #endif #endif KAD/Ethernet/socket.c
New file @@ -0,0 +1,688 @@ //***************************************************************************** // //! \file socket.c //! \brief SOCKET APIs Implements file. //! \details SOCKET APIs like as Berkeley Socket APIs. //! \version 1.0.3 //! \date 2013/10/21 //! \par Revision history //! <2014/05/01> V1.0.3. Refer to M20140501 //! 1. Implicit type casting -> Explicit type casting. //! 2. replace 0x01 with PACK_REMAINED in recvfrom() //! 3. Validation a destination ip in connect() & sendto(): //! It occurs a fatal error on converting unint32 address if uint8* addr parameter is not aligned by 4byte address. //! Copy 4 byte addr value into temporary uint32 variable and then compares it. //! <2013/12/20> V1.0.2 Refer to M20131220 //! Remove Warning. //! <2013/11/04> V1.0.1 2nd Release. Refer to "20131104". //! In sendto(), Add to clear timeout interrupt status (Sn_IR_TIMEOUT) //! <2013/10/21> 1st Release //! \author MidnightCow //! \copyright //! //! Copyright (c) 2013, WIZnet Co., LTD. //! All rights reserved. //! //! Redistribution and use in source and binary forms, with or without //! modification, are permitted provided that the following conditions //! are met: //! //! * Redistributions of source code must retain the above copyright //! notice, this list of conditions and the following disclaimer. //! * Redistributions in binary form must reproduce the above copyright //! notice, this list of conditions and the following disclaimer in the //! documentation and/or other materials provided with the distribution. //! * Neither the name of the <ORGANIZATION> nor the names of its //! contributors may be used to endorse or promote products derived //! from this software without specific prior written permission. //! //! THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" //! AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE //! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE //! ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE //! LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR //! CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF //! SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS //! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN //! CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) //! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF //! THE POSSIBILITY OF SUCH DAMAGE. // //***************************************************************************** #include "socket.h" #define SOCK_ANY_PORT_NUM 0xC000; static uint16_t sock_any_port = SOCK_ANY_PORT_NUM; static uint16_t sock_io_mode = 0; static uint16_t sock_is_sending = 0; static uint16_t sock_remained_size[_WIZCHIP_SOCK_NUM_] = {0,0,}; static uint8_t sock_pack_info[_WIZCHIP_SOCK_NUM_] = {0,}; #if _WIZCHIP_ == 5200 static uint16_t sock_next_rd[_WIZCHIP_SOCK_NUM_] ={0,}; #endif #define CHECK_SOCKNUM() \ do{ \ if(sn > _WIZCHIP_SOCK_NUM_) return SOCKERR_SOCKNUM; \ }while(0); \ #define CHECK_SOCKMODE(mode) \ do{ \ if((getSn_MR(sn) & 0x0F) != mode) return SOCKERR_SOCKMODE; \ }while(0); \ #define CHECK_SOCKINIT() \ do{ \ if((getSn_SR(sn) != SOCK_INIT)) return SOCKERR_SOCKINIT; \ }while(0); \ #define CHECK_SOCKDATA() \ do{ \ if(len == 0) return SOCKERR_DATALEN; \ }while(0); \ int8_t socket(uint8_t sn, uint8_t protocol, uint16_t port, uint8_t flag) { CHECK_SOCKNUM(); switch(protocol) { case Sn_MR_TCP : case Sn_MR_UDP : case Sn_MR_MACRAW : break; #if ( _WIZCHIP_ < 5200 ) case Sn_MR_IPRAW : case Sn_MR_PPPoE : break; #endif default : return SOCKERR_SOCKMODE; } if((flag & 0x06) != 0) return SOCKERR_SOCKFLAG; #if _WIZCHIP_ == 5200 if(flag & 0x10) return SOCKERR_SOCKFLAG; #endif if(flag != 0) { switch(protocol) { case Sn_MR_TCP: if((flag & (SF_TCP_NODELAY|SF_IO_NONBLOCK))==0) return SOCKERR_SOCKFLAG; break; case Sn_MR_UDP: if(flag & SF_IGMP_VER2) { if((flag & SF_MULTI_ENABLE)==0) return SOCKERR_SOCKFLAG; } #if _WIZCHIP_ == 5500 if(flag & SF_UNI_BLOCK) { if((flag & SF_MULTI_ENABLE) == 0) return SOCKERR_SOCKFLAG; } #endif break; default: break; } } close(sn); setSn_MR(sn, (protocol | (flag & 0xF0))); if(!port) { port = sock_any_port++; if(sock_any_port == 0xFFF0) sock_any_port = SOCK_ANY_PORT_NUM; } setSn_PORT(sn,port); setSn_CR(sn,Sn_CR_OPEN); while(getSn_CR(sn)); sock_io_mode |= ((flag & SF_IO_NONBLOCK) << sn); sock_is_sending &= ~(1<<sn); sock_remained_size[sn] = 0; sock_pack_info[sn] = 0; while(getSn_SR(sn) == SOCK_CLOSED); return (int8_t)sn; } int8_t close(uint8_t sn) { CHECK_SOCKNUM(); setSn_CR(sn,Sn_CR_CLOSE); /* wait to process the command... */ while( getSn_CR(sn) ); /* clear all interrupt of the socket. */ setSn_IR(sn, 0xFF); sock_is_sending &= ~(1<<sn); sock_remained_size[sn] = 0; sock_pack_info[sn] = 0; while(getSn_SR(sn) != SOCK_CLOSED); return SOCK_OK; } int8_t listen(uint8_t sn) { CHECK_SOCKNUM(); CHECK_SOCKMODE(Sn_MR_TCP); CHECK_SOCKINIT(); setSn_CR(sn,Sn_CR_LISTEN); while(getSn_CR(sn)); while(getSn_SR(sn) != SOCK_LISTEN) { if(getSn_CR(sn) == SOCK_CLOSED) { close(sn); return SOCKERR_SOCKCLOSED; } } return SOCK_OK; } int8_t connect(uint8_t sn, uint8_t * addr, uint16_t port) { CHECK_SOCKNUM(); CHECK_SOCKMODE(Sn_MR_TCP); CHECK_SOCKINIT(); //M20140501 : For avoiding fatal error on memory align mismatched //if( *((uint32_t*)addr) == 0xFFFFFFFF || *((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; { uint32_t taddr; taddr = ((uint32_t)addr[0] & 0x000000FF); taddr = (taddr << 8) + ((uint32_t)addr[1] & 0x000000FF); taddr = (taddr << 8) + ((uint32_t)addr[2] & 0x000000FF); taddr = (taddr << 8) + ((uint32_t)addr[0] & 0x000000FF); if( taddr == 0xFFFFFFFF || taddr == 0) return SOCKERR_IPINVALID; } // if(port == 0) return SOCKERR_PORTZERO; setSn_DIPR(sn,addr); setSn_DPORT(sn,port); #if _WIZCHIP_ == 5200 // for W5200 ARP errata setSUBR(0); #endif setSn_CR(sn,Sn_CR_CONNECT); while(getSn_CR(sn)); if(sock_io_mode & (1<<sn)) return SOCK_BUSY; while(getSn_SR(sn) != SOCK_ESTABLISHED) { if (getSn_IR(sn) & Sn_IR_TIMEOUT) { setSn_IR(sn, Sn_IR_TIMEOUT); #if _WIZCHIP_ == 5200 // for W5200 ARP errata setSUBR((uint8_t*)"\x00\x00\x00\x00"); #endif return SOCKERR_TIMEOUT; } } #if _WIZCHIP_ == 5200 // for W5200 ARP errata setSUBR((uint8_t*)"\x00\x00\x00\x00"); #endif return SOCK_OK; } int8_t disconnect(uint8_t sn) { CHECK_SOCKNUM(); CHECK_SOCKMODE(Sn_MR_TCP); setSn_CR(sn,Sn_CR_DISCON); /* wait to process the command... */ while(getSn_CR(sn)); sock_is_sending &= ~(1<<sn); if(sock_io_mode & (1<<sn)) return SOCK_BUSY; while(getSn_SR(sn) != SOCK_CLOSED) { if(getSn_IR(sn) & Sn_IR_TIMEOUT) { close(sn); return SOCKERR_TIMEOUT; } } return SOCK_OK; } int32_t send(uint8_t sn, uint8_t * buf, uint16_t len) { uint8_t tmp=0; uint16_t freesize=0; CHECK_SOCKNUM(); CHECK_SOCKMODE(Sn_MR_TCP); CHECK_SOCKDATA(); tmp = getSn_SR(sn); if(tmp != SOCK_ESTABLISHED && tmp != SOCK_CLOSE_WAIT) return SOCKERR_SOCKSTATUS; if( sock_is_sending & (1<<sn) ) { tmp = getSn_IR(sn); if(tmp & Sn_IR_SENDOK) { setSn_IR(sn, Sn_IR_SENDOK); #if _WZICHIP_ == 5200 if(getSn_TX_RD(sn) != sock_next_rd[sn]) { setSn_CR(sn,Sn_CR_SEND); while(getSn_CR(sn)); return SOCKERR_BUSY; } #endif sock_is_sending &= ~(1<<sn); } else if(tmp & Sn_IR_TIMEOUT) { close(sn); return SOCKERR_TIMEOUT; } else return SOCK_BUSY; } freesize = getSn_TxMAX(sn); if (len > freesize) len = freesize; // check size not to exceed MAX size. while(1) { freesize = getSn_TX_FSR(sn); tmp = getSn_SR(sn); if ((tmp != SOCK_ESTABLISHED) && (tmp != SOCK_CLOSE_WAIT)) { close(sn); return SOCKERR_SOCKSTATUS; } if( (sock_io_mode & (1<<sn)) && (len > freesize) ) return SOCK_BUSY; if(len <= freesize) break; } wiz_send_data(sn, buf, len); #if _WIZCHIP_ == 5200 sock_next_rd[sn] = getSn_TX_RD(sn) + len; #endif setSn_CR(sn,Sn_CR_SEND); /* wait to process the command... */ while(getSn_CR(sn)); sock_is_sending |= (1 << sn); return len; } int32_t recv(uint8_t sn, uint8_t * buf, uint16_t len) { uint8_t tmp = 0; uint16_t recvsize = 0; CHECK_SOCKNUM(); CHECK_SOCKMODE(Sn_MR_TCP); CHECK_SOCKDATA(); recvsize = getSn_RxMAX(sn); if(recvsize < len) len = recvsize; while(1) { recvsize = getSn_RX_RSR(sn); tmp = getSn_SR(sn); if (tmp != SOCK_ESTABLISHED) { if(tmp == SOCK_CLOSE_WAIT) { if(recvsize != 0) break; else if(getSn_TX_FSR(sn) == getSn_TxMAX(sn)) { close(sn); return SOCKERR_SOCKSTATUS; } } else { close(sn); return SOCKERR_SOCKSTATUS; } } if((sock_io_mode & (1<<sn)) && (recvsize == 0)) return SOCK_BUSY; if(recvsize != 0) break; }; if(recvsize < len) len = recvsize; wiz_recv_data(sn, buf, len); setSn_CR(sn,Sn_CR_RECV); while(getSn_CR(sn)); return len; } int32_t sendto(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port) { uint8_t tmp = 0; uint16_t freesize = 0; CHECK_SOCKNUM(); switch(getSn_MR(sn) & 0x0F) { case Sn_MR_UDP: case Sn_MR_MACRAW: break; default: return SOCKERR_SOCKMODE; } CHECK_SOCKDATA(); //M20140501 : For avoiding fatal error on memory align mismatched //if(*((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; { uint32_t taddr; taddr = ((uint32_t)addr[0]) & 0x000000FF; taddr = (taddr << 8) + ((uint32_t)addr[1] & 0x000000FF); taddr = (taddr << 8) + ((uint32_t)addr[2] & 0x000000FF); taddr = (taddr << 8) + ((uint32_t)addr[3] & 0x000000FF); } // if(*((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; if(port == 0) return SOCKERR_PORTZERO; tmp = getSn_SR(sn); if(tmp != SOCK_MACRAW && tmp != SOCK_UDP) return SOCKERR_SOCKSTATUS; setSn_DIPR(sn,addr); setSn_DPORT(sn,port); freesize = getSn_TxMAX(sn); if (len > freesize) len = freesize; // check size not to exceed MAX size. while(1) { freesize = getSn_TX_FSR(sn); if(getSn_SR(sn) == SOCK_CLOSED) return SOCKERR_SOCKCLOSED; if( (sock_io_mode & (1<<sn)) && (len > freesize) ) return SOCK_BUSY; if(len <= freesize) break; }; wiz_send_data(sn, buf, len); #if _WIZCHIP_ == 5200 // for W5200 ARP errata setSUBR(0); #endif setSn_CR(sn,Sn_CR_SEND); /* wait to process the command... */ while(getSn_CR(sn)); #if _WIZCHIP_ == 5200 // for W5200 ARP errata setSUBR((uint8_t*)"\x00\x00\x00\x00"); #endif while(1) { tmp = getSn_IR(sn); if(tmp & Sn_IR_SENDOK) { setSn_IR(sn, Sn_IR_SENDOK); break; } //M:20131104 //else if(tmp & Sn_IR_TIMEOUT) return SOCKERR_TIMEOUT; else if(tmp & Sn_IR_TIMEOUT) { setSn_IR(sn, Sn_IR_TIMEOUT); return SOCKERR_TIMEOUT; } //////////// } return len; } int32_t recvfrom(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t *port) { uint8_t mr; uint8_t head[8]; uint16_t pack_len=0; CHECK_SOCKNUM(); //CHECK_SOCKMODE(Sn_MR_UDP); switch((mr=getSn_MR(sn)) & 0x0F) { case Sn_MR_UDP: case Sn_MR_MACRAW: break; #if ( _WIZCHIP_ < 5200 ) case Sn_MR_IPRAW: case Sn_MR_PPPoE: break; #endif default: return SOCKERR_SOCKMODE; } CHECK_SOCKDATA(); if(sock_remained_size[sn] == 0) { while(1) { pack_len = getSn_RX_RSR(sn); if(getSn_SR(sn) == SOCK_CLOSED) return SOCKERR_SOCKCLOSED; if( (sock_io_mode & (1<<sn)) && (pack_len == 0) ) return SOCK_BUSY; if(pack_len != 0) break; }; } sock_pack_info[sn] = PACK_COMPLETED; switch (mr & 0x07) { case Sn_MR_UDP : if(sock_remained_size[sn] == 0) { wiz_recv_data(sn, head, 8); setSn_CR(sn,Sn_CR_RECV); while(getSn_CR(sn)); // read peer's IP address, port number & packet length addr[0] = head[0]; addr[1] = head[1]; addr[2] = head[2]; addr[3] = head[3]; *port = head[4]; *port = (*port << 8) + head[5]; sock_remained_size[sn] = head[6]; sock_remained_size[sn] = (sock_remained_size[sn] << 8) + head[7]; sock_pack_info[sn] = PACK_FIRST; } if(len < sock_remained_size[sn]) pack_len = len; else pack_len = sock_remained_size[sn]; // // Need to packet length check (default 1472) // wiz_recv_data(sn, buf, pack_len); // data copy. break; case Sn_MR_MACRAW : if(sock_remained_size[sn] == 0) { wiz_recv_data(sn, head, 2); setSn_CR(sn,Sn_CR_RECV); while(getSn_CR(sn)); // read peer's IP address, port number & packet length sock_remained_size[sn] = head[0]; sock_remained_size[sn] = (sock_remained_size[sn] <<8) + head[1]; if(sock_remained_size[sn] > 1514) { close(sn); return SOCKFATAL_PACKLEN; } sock_pack_info[sn] = PACK_FIRST; } if(len < sock_remained_size[sn]) pack_len = len; else pack_len = sock_remained_size[sn]; wiz_recv_data(sn,buf,pack_len); break; #if ( _WIZCHIP_ < 5200 ) case Sn_MR_IPRAW: if(sock_remained_size[sn] == 0) { wiz_recv_data(sn, head, 6); setSn_CR(sn,Sn_CR_RECV); while(getSn_CR(sn)); addr[0] = head[0]; addr[1] = head[1]; addr[2] = head[2]; addr[3] = head[3]; sock_remained_size[sn] = head[4]; sock_remaiend_size[sn] = (sock_remained_size[sn] << 8) + head[5]; sock_pack_info[sn] = PACK_FIRST; } // // Need to packet length check // if(len < sock_remained_size[sn]) pack_len = len; else pack_len = sock_remained_size[sn]; wiz_recv_data(sn, buf, pack_len); // data copy. break; #endif default: wiz_recv_ignore(sn, pack_len); // data copy. sock_remained_size[sn] = pack_len; break; } setSn_CR(sn,Sn_CR_RECV); /* wait to process the command... */ while(getSn_CR(sn)) ; sock_remained_size[sn] -= pack_len; //M20140501 : replace 0x01 with PACK_REMAINED //if(sock_remained_size[sn] != 0) sock_pack_info[sn] |= 0x01; if(sock_remained_size[sn] != 0) sock_pack_info[sn] |= PACK_REMAINED; // return pack_len; } int8_t ctlsocket(uint8_t sn, ctlsock_type cstype, void* arg) { uint8_t tmp = 0; CHECK_SOCKNUM(); switch(cstype) { case CS_SET_IOMODE: tmp = *((uint8_t*)arg); if(tmp == SOCK_IO_NONBLOCK) sock_io_mode |= (1<<sn); else if(tmp == SOCK_IO_BLOCK) sock_io_mode &= ~(1<<sn); else return SOCKERR_ARG; break; case CS_GET_IOMODE: //M20140501 : implict type casting -> explict type casting //*((uint8_t*)arg) = (sock_io_mode >> sn) & 0x0001; *((uint8_t*)arg) = (uint8_t)((sock_io_mode >> sn) & 0x0001); // break; case CS_GET_MAXTXBUF: *((uint16_t*)arg) = getSn_TxMAX(sn); break; case CS_GET_MAXRXBUF: *((uint16_t*)arg) = getSn_RxMAX(sn); break; case CS_CLR_INTERRUPT: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IR(sn,*(uint8_t*)arg); break; case CS_GET_INTERRUPT: *((uint8_t*)arg) = getSn_IR(sn); break; case CS_SET_INTMASK: if( (*(uint8_t*)arg) > SIK_ALL) return SOCKERR_ARG; setSn_IMR(sn,*(uint8_t*)arg); break; case CS_GET_INTMASK: *((uint8_t*)arg) = getSn_IMR(sn); default: return SOCKERR_ARG; } return SOCK_OK; } int8_t setsockopt(uint8_t sn, sockopt_type sotype, void* arg) { // M20131220 : Remove warning //uint8_t tmp; CHECK_SOCKNUM(); switch(sotype) { case SO_TTL: setSn_TTL(sn,*(uint8_t*)arg); break; case SO_TOS: setSn_TOS(sn,*(uint8_t*)arg); break; case SO_MSS: setSn_MSSR(sn,*(uint16_t*)arg); break; case SO_DESTIP: setSn_DIPR(sn, (uint8_t*)arg); break; case SO_DESTPORT: setSn_DPORT(sn, *(uint16_t*)arg); break; #if _WIZCHIP_ != 5100 case SO_KEEPALIVESEND: CHECK_SOCKMODE(Sn_MR_TCP); #if _WIZCHIP_ > 5200 if(getSn_KPALVTR(sn) != 0) return SOCKERR_SOCKOPT; #endif setSn_CR(sn,Sn_CR_SEND_KEEP); while(getSn_CR(sn) != 0) { // M20131220 //if ((tmp = getSn_IR(sn)) & Sn_IR_TIMEOUT) if (getSn_IR(sn) & Sn_IR_TIMEOUT) { setSn_IR(sn, Sn_IR_TIMEOUT); return SOCKERR_TIMEOUT; } } break; #if _WIZCHIP_ > 5200 case SO_KEEPALIVEAUTO: CHECK_SOCKMODE(Sn_MR_TCP); setSn_KPALVTR(sn,*(uint8_t*)arg); break; #endif #endif default: return SOCKERR_ARG; } return SOCK_OK; } int8_t getsockopt(uint8_t sn, sockopt_type sotype, void* arg) { CHECK_SOCKNUM(); switch(sotype) { case SO_FLAG: *(uint8_t*)arg = getSn_MR(sn) & 0xF0; break; case SO_TTL: *(uint8_t*) arg = getSn_TTL(sn); break; case SO_TOS: *(uint8_t*) arg = getSn_TOS(sn); break; case SO_MSS: *(uint8_t*) arg = getSn_MSSR(sn); case SO_DESTIP: getSn_DIPR(sn, (uint8_t*)arg); break; case SO_DESTPORT: *(uint16_t*) arg = getSn_DPORT(sn); break; #if _WIZCHIP_ > 5200 case SO_KEEPALIVEAUTO: CHECK_SOCKMODE(Sn_MR_TCP); *(uint16_t*) arg = getSn_KPALVTR(sn); break; #endif case SO_SENDBUF: *(uint16_t*) arg = getSn_TX_FSR(sn); case SO_RECVBUF: *(uint16_t*) arg = getSn_RX_RSR(sn); case SO_STATUS: *(uint8_t*) arg = getSn_SR(sn); break; case SO_REMAINSIZE: if(getSn_MR(sn) == Sn_MR_TCP) *(uint16_t*)arg = getSn_RX_RSR(sn); else *(uint16_t*)arg = sock_remained_size[sn]; break; case SO_PACKINFO: CHECK_SOCKMODE(Sn_MR_TCP); *(uint8_t*)arg = sock_pack_info[sn]; break; default: return SOCKERR_SOCKOPT; } return SOCK_OK; } Diff truncated after the above file
KAD/Ethernet/socket.h KAD/Ethernet/wizchip_conf.c KAD/Ethernet/wizchip_conf.h KAD/Inc/BSP.h KAD/Inc/BoardType.h KAD/Inc/main.h KAD/Inc/stm32f0xx_hal_conf.h KAD/Internet/DHCP/dhcp.c KAD/Internet/DHCP/dhcp.h KAD/Internet/DNS/dns.c KAD/Internet/DNS/dns.h KAD/Radio/inc/crc.h KAD/Radio/inc/radio.h KAD/Radio/inc/sx126x-board.h KAD/Radio/inc/sx126x.h KAD/Radio/src/crc.c KAD/Radio/src/radio.c KAD/Radio/src/sx126x-board.c KAD/Radio/src/sx126x.c KAD/Src/BSP.c KAD/Src/BoardType.c KAD/Src/main.c KBus/Inc/BoardType.h KBus/Src/main.c KNet.uvmpw KPLC/Ethernet/W5500/w5500.c KPLC/Ethernet/W5500/w5500.h KPLC/Ethernet/loopback.c KPLC/Ethernet/loopback.h KPLC/Ethernet/socket.c KPLC/Ethernet/socket.h KPLC/Ethernet/wizchip_conf.c KPLC/Ethernet/wizchip_conf.h KPLC/Inc/BoardType.h KPLC/Inc/main.h KPLC/Inc/stm32f0xx_hal_conf.h KPLC/Internet/DHCP/dhcp.c KPLC/Internet/DHCP/dhcp.h KPLC/Internet/DNS/dns.c KPLC/Internet/DNS/dns.h KPLC/Radio/inc/crc.h KPLC/Radio/inc/radio.h KPLC/Radio/inc/sx126x-board.h KPLC/Radio/inc/sx126x.h KPLC/Radio/src/crc.c KPLC/Radio/src/radio.c KPLC/Radio/src/sx126x-board.c KPLC/Radio/src/sx126x.c KPLC/Src/BoardType.c KPLC/Src/main.c KSingleLineBus/KSingleLineBus.uvopt KSingleLineBus/KSingleLineBus.uvproj KSingleLineBus/Listings/demo.m51 KSingleLineBus/ModBus.c KSingleLineBus/Modbus.h KSingleLineBus/Objects/ModBus.obj KSingleLineBus/Objects/SLP.obj KSingleLineBus/Objects/STARTUP.obj KSingleLineBus/Objects/delay.__i KSingleLineBus/Objects/delay.obj KSingleLineBus/Objects/demo KSingleLineBus/Objects/demo.hex KSingleLineBus/Objects/gpio.__i KSingleLineBus/Objects/gpio.obj KSingleLineBus/Objects/main.__i KSingleLineBus/Objects/main.obj KSingleLineBus/Objects/pwm.__i KSingleLineBus/Objects/tim.__i KSingleLineBus/Objects/tim.obj KSingleLineBus/Objects/uart.__i KSingleLineBus/Objects/unibus.__i KSingleLineBus/SLP.c KSingleLineBus/SLP.h KSingleLineBus/STARTUP.A51 KSingleLineBus/drivers/gpio.c KSingleLineBus/drivers/gpio.h KSingleLineBus/drivers/pwm.c KSingleLineBus/drivers/pwm.h KSingleLineBus/drivers/tim.c KSingleLineBus/drivers/tim.h KSingleLineBus/drivers/uart.c KSingleLineBus/drivers/uart.h KSingleLineBus/main.h KSingleLineBus/user/delay.c KSingleLineBus/user/delay.h KSingleLineBus/user/main.c KSingleLineBus/user/main.h KSingleLineBus/user/modbus.c KSingleLineBus/user/modbus.h KSingleLineBus/user/unibus.c KSingleLineBus/user/unibus.h KSingleLineBus/按钮控制器引脚映射.txt MDK-ARM/EXT_FPX/Ext_FPx.hex (deleted) MDK-ARM/EXT_FPX/Ext_FPx.sct (deleted) MDK-ARM/EXT_FPX/F030C8T6_Ext_FPx.sct MDK-ARM/EXT_FPX/F030C8T6_Ext_FPx_V105.hex (deleted) MDK-ARM/F030C8T6_Ext_FP0.uvprojx (deleted) MDK-ARM/F030C8T6_Ext_FPx.uvprojx MDK-ARM/F030C8T6_KAD.uvprojx MDK-ARM/F030C8T6_KBox.uvprojx MDK-ARM/F030C8T6_KBus.uvprojx MDK-ARM/F030C8T6_KBus/F030C8T6_KBus.hex (deleted) MDK-ARM/F030C8T6_KBus/F030C8T6_KBus.sct (deleted) MDK-ARM/F030C8T6_KLink.uvprojx MDK-ARM/F030C8T6_KMini.uvprojx MDK-ARM/F030C8T6_KNet.uvprojx MDK-ARM/F030C8T6_KPLC.uvprojx MDK-ARM/F030C8T6_Radio/F030C8T6_Ext_FPx.map (deleted) MDK-ARM/F030C8T6_Radio/F030C8T6_KBus.map (deleted) MDK-ARM/F030C8T6_Radio/F030C8T6_KLink.map (deleted) MDK-ARM/F030C8T6_Radio/F030C8T6_Radio_LLCC68.hex (deleted) MDK-ARM/F030C8T6_Radio/F030C8T6_Radio_LLCC68.map (deleted) MDK-ARM/F030C8T6_Radio_LLCC68.uvprojx MDK-ARM/F030CCT6_KMini.uvprojx