linux模块移植到freertos,opus移植到freertos系统

硬件平台:cortex-M4F 200MHZ平台(RTL8721DM)

软件系统:FREERTOS

编译器:

Using built-in specs.

COLLECT_GCC=/home/kuili/sdk-amebad-beta_v5.3/project/realtek_amebaD_cm4_gcc_verification/asdk/../toolchain/linux/asdk-6.4.1/linux/newlib/bin/arm-none-eabi-gcc

COLLECT_LTO_WRAPPER=/home/kuili/sdk-amebad-beta_v5.3/project/realtek_amebaD_cm4_gcc_verification/toolchain/linux/asdk-6.4.1/linux/newlib/bin/../libexec/gcc/arm-none-eabi/6.4.1/lto-wrapper

Target: arm-none-eabi

Configured with: Realtek SDK Builder release 5

Thread model: single

gcc version 6.4.1 20180307 (Realtek ASDK-6.4.1 Build 2773)

OPUS下载地址(当前使用的是1.3-19的版本):

git clone https://github.com/xiph/opus.git

OPUS需要编译的源代码:

CSRC =$(DIR)/src/mapping_matrix.c \

$(DIR)/src/repacketizer.c \

$(DIR)/src/opus_projection_encoder.c \

$(DIR)/src/analysis.c \

$(DIR)/src/opus_projection_decoder.c \

$(DIR)/src/opus_decoder.c \

$(DIR)/src/mlp.c \

$(DIR)/src/opus_multistream.c \

$(DIR)/src/opus_encoder.c \

$(DIR)/src/opus_multistream_decoder.c \

$(DIR)/src/opus.c \

$(DIR)/src/mlp_data.c \

$(DIR)/src/opus_multistream_encoder.c \

$(DIR)/silk/resampler_down2_3.c \

$(DIR)/silk/stereo_decode_pred.c \

$(DIR)/silk/process_NLSFs.c \

$(DIR)/silk/init_encoder.c \

$(DIR)/silk/resampler_private_AR2.c \

$(DIR)/silk/stereo_find_predictor.c \

$(DIR)/silk/biquad_alt.c \

$(DIR)/silk/decoder_set_fs.c \

$(DIR)/silk/PLC.c \

$(DIR)/silk/decode_frame.c \

$(DIR)/silk/resampler_down2.c \

$(DIR)/silk/quant_LTP_gains.c \

$(DIR)/silk/code_signs.c \

$(DIR)/silk/VAD.c \

$(DIR)/silk/HP_variable_cutoff.c \

$(DIR)/silk/LPC_inv_pred_gain.c \

$(DIR)/silk/decode_pulses.c \

$(DIR)/silk/NLSF_stabilize.c \

$(DIR)/silk/tables_gain.c \

$(DIR)/silk/stereo_encode_pred.c \

$(DIR)/silk/control_codec.c \

$(DIR)/silk/ana_filt_bank_1.c \

$(DIR)/silk/sort.c \

$(DIR)/silk/NLSF_VQ.c \

$(DIR)/silk/table_LSF_cos.c \

$(DIR)/silk/enc_API.c \

$(DIR)/silk/sum_sqr_shift.c \

$(DIR)/silk/resampler_private_down_FIR.c \

$(DIR)/silk/NLSF2A.c \

$(DIR)/silk/resampler_rom.c \

$(DIR)/silk/VQ_WMat_EC.c \

$(DIR)/silk/init_decoder.c \

$(DIR)/silk/dec_API.c \

$(DIR)/silk/NLSF_decode.c \

$(DIR)/silk/resampler.c \

$(DIR)/silk/tables_NLSF_CB_WB.c \

$(DIR)/silk/NSQ_del_dec.c \

$(DIR)/silk/LP_variable_cutoff.c \

$(DIR)/silk/NLSF_unpack.c \

$(DIR)/silk/stereo_MS_to_LR.c \

$(DIR)/silk/control_audio_bandwidth.c \

$(DIR)/silk/control_SNR.c \

$(DIR)/silk/NLSF_del_dec_quant.c \

$(DIR)/silk/float/find_LPC_FLP.c \

$(DIR)/silk/float/energy_FLP.c \

$(DIR)/silk/float/residual_energy_FLP.c \

$(DIR)/silk/float/schur_FLP.c \

$(DIR)/silk/float/LTP_scale_ctrl_FLP.c \

$(DIR)/silk/float/bwexpander_FLP.c \

$(DIR)/silk/float/find_pred_coefs_FLP.c \

$(DIR)/silk/float/scale_vector_FLP.c \

$(DIR)/silk/float/apply_sine_window_FLP.c \

$(DIR)/silk/float/k2a_FLP.c \

$(DIR)/silk/float/encode_frame_FLP.c \

$(DIR)/silk/float/scale_copy_vector_FLP.c \

$(DIR)/silk/float/warped_autocorrelation_FLP.c \

$(DIR)/silk/float/autocorrelation_FLP.c \

$(DIR)/silk/float/LPC_inv_pred_gain_FLP.c \

$(DIR)/silk/float/LPC_analysis_filter_FLP.c \

$(DIR)/silk/float/find_LTP_FLP.c \

$(DIR)/silk/float/wrappers_FLP.c \

$(DIR)/silk/float/regularize_correlations_FLP.c \

$(DIR)/silk/float/corrMatrix_FLP.c \

$(DIR)/silk/float/find_pitch_lags_FLP.c \

$(DIR)/silk/float/pitch_analysis_core_FLP.c \

$(DIR)/silk/float/burg_modified_FLP.c \

$(DIR)/silk/float/process_gains_FLP.c \

$(DIR)/silk/float/sort_FLP.c \

$(DIR)/silk/float/LTP_analysis_filter_FLP.c \

$(DIR)/silk/float/noise_shape_analysis_FLP.c \

$(DIR)/silk/float/inner_product_FLP.c \

$(DIR)/silk/resampler_private_IIR_FIR.c \

$(DIR)/silk/A2NLSF.c \

$(DIR)/silk/encode_pulses.c \

$(DIR)/silk/inner_prod_aligned.c \

$(DIR)/silk/sigm_Q15.c \

$(DIR)/silk/log2lin.c \

$(DIR)/silk/arm/arm_silk_map.c \

$(DIR)/silk/interpolate.c \

$(DIR)/silk/bwexpander.c \

$(DIR)/silk/decode_indices.c \

$(DIR)/silk/bwexpander_32.c \

$(DIR)/silk/gain_quant.c \

$(DIR)/silk/decode_parameters.c \

$(DIR)/silk/CNG.c \

$(DIR)/silk/NLSF_VQ_weights_laroia.c \

$(DIR)/silk/NLSF_encode.c \

$(DIR)/silk/NSQ.c \

$(DIR)/silk/lin2log.c \

$(DIR)/silk/tables_pulses_per_block.c \

$(DIR)/silk/stereo_LR_to_MS.c \

$(DIR)/silk/tables_NLSF_CB_NB_MB.c \

$(DIR)/silk/decode_pitch.c \

$(DIR)/silk/debug.c \

$(DIR)/silk/tables_pitch_lag.c \

$(DIR)/silk/LPC_analysis_filter.c \

$(DIR)/silk/LPC_fit.c \

$(DIR)/silk/pitch_est_tables.c \

$(DIR)/silk/encode_indices.c \

$(DIR)/silk/stereo_quant_pred.c \

$(DIR)/silk/decode_core.c \

$(DIR)/silk/shell_coder.c \

$(DIR)/silk/tables_other.c \

$(DIR)/silk/resampler_private_up2_HQ.c \

$(DIR)/silk/check_control_input.c \

$(DIR)/silk/tables_LTP.c \

$(DIR)/celt/mathops.c \

$(DIR)/celt/mdct.c \

$(DIR)/celt/rate.c \

$(DIR)/celt/entcode.c \

$(DIR)/celt/kiss_fft.c \

$(DIR)/celt/laplace.c \

$(DIR)/celt/cwrs.c \

$(DIR)/celt/celt_decoder.c \

$(DIR)/celt/celt.c \

$(DIR)/celt/entenc.c \

$(DIR)/celt/bands.c \

$(DIR)/celt/celt_lpc.c \

$(DIR)/celt/vq.c \

$(DIR)/celt/celt_encoder.c \

$(DIR)/celt/modes.c \

$(DIR)/celt/pitch.c \

$(DIR)/celt/arm/armcpu.c \

$(DIR)/celt/arm/arm_celt_map.c \

$(DIR)/celt/entdec.c \

$(DIR)/celt/quant_bands.c

opus的config配置如下:

/* config.h. Generated from config.h.in by configure. */

/* config.h.in. Generated from configure.ac by autoheader. */

/* Get CPU Info by asm method */

/* #undef CPU_INFO_BY_ASM */

/* Get CPU Info by c method */

/* #undef CPU_INFO_BY_C */

/* Custom modes */

/* #undef CUSTOM_MODES */

/* Do not build the float API */

/* #undef DISABLE_FLOAT_API */

/* Disable bitstream fixes from RFC 8251 */

/* #undef DISABLE_UPDATE_DRAFT */

/* Assertions */

/* #undef ENABLE_ASSERTIONS */

/* Hardening */

#define ENABLE_HARDENING 1

/* Debug fixed-point implementation */

/* #undef FIXED_DEBUG */

/* Compile as fixed-point (for machines without a fast enough FPU) */

/* #undef FIXED_POINT */

/* Float approximations */

/* #undef FLOAT_APPROX */

/* Fuzzing */

/* #undef FUZZING */

/* Define to 1 if you have the header file. */

/* #undef HAVE_ALLOCA_H */

/* NE10 library is installed on host. Make sure it is on target! */

/* #undef HAVE_ARM_NE10 */

/* Define to 1 if you have the header file. */

#define HAVE_DLFCN_H 1

/* Define to 1 if you have the header file. */

#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the `lrint' function. */

#define HAVE_LRINT 1

/* Define to 1 if you have the `lrintf' function. */

#define HAVE_LRINTF 1

/* Define to 1 if you have the header file. */

#define HAVE_MEMORY_H 1

/* Define to 1 if you have the header file. */

#define HAVE_STDINT_H 1

/* Define to 1 if you have the header file. */

#define HAVE_STDLIB_H 1

/* Define to 1 if you have the header file. */

#define HAVE_STRINGS_H 1

/* Define to 1 if you have the header file. */

#define HAVE_STRING_H 1

/* Define to 1 if you have the header file. */

#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the header file. */

#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the header file. */

#define HAVE_UNISTD_H 1

/* Define to 1 if you have the `__malloc_hook' function. */

#define HAVE___MALLOC_HOOK 1

/* Define to the sub-directory in which libtool stores uninstalled libraries.

*/

#define LT_OBJDIR ".libs/"

/* Define to 1 if your C compiler doesn't accept -c and -o together. */

/* #undef NO_MINUS_C_MINUS_O */

/* Make use of ARM asm optimization */

/* #undef OPUS_ARM_ASM */

/* Use generic ARMv4 inline asm optimizations */

/* #undef OPUS_ARM_INLINE_ASM */

/* Use ARMv5E inline asm optimizations */

/* #undef OPUS_ARM_INLINE_EDSP */

/* Use ARMv6 inline asm optimizations */

/* #undef OPUS_ARM_INLINE_MEDIA */

/* Use ARM NEON inline asm optimizations */

/* #undef OPUS_ARM_INLINE_NEON */

#undef OPUS_ARM_INLINE_NEON

/* Define if assembler supports EDSP instructions */

/* #undef OPUS_ARM_MAY_HAVE_EDSP */

/* Define if assembler supports ARMv6 media instructions */

/* #undef OPUS_ARM_MAY_HAVE_MEDIA */

/* Define if compiler supports NEON instructions */

/* #undef OPUS_ARM_MAY_HAVE_NEON */

/* Compiler supports ARMv7/Aarch64 Neon Intrinsics */

//#define OPUS_ARM_MAY_HAVE_NEON_INTR 1

/* Define if binary requires Aarch64 Neon Intrinsics */

/* #undef OPUS_ARM_PRESUME_AARCH64_NEON_INTR */

/* Define if binary requires EDSP instruction support */

/* #undef OPUS_ARM_PRESUME_EDSP */

/* Define if binary requires ARMv6 media instruction support */

/* #undef OPUS_ARM_PRESUME_MEDIA */

/* Define if binary requires NEON instruction support */

/* #undef OPUS_ARM_PRESUME_NEON */

/* Define if binary requires NEON intrinsics support */

/* #undef OPUS_ARM_PRESUME_NEON_INTR */

/* This is a build of OPUS */

#define OPUS_BUILD1/**/

/* Run bit-exactness checks between optimized and c implementations */

/* #undef OPUS_CHECK_ASM */

/* Use run-time CPU capabilities detection */

//#define OPUS_HAVE_RTCD 1

/* Compiler supports X86 AVX Intrinsics */

/* #undef OPUS_X86_MAY_HAVE_AVX */

/* Compiler supports X86 SSE Intrinsics */

/* #undef OPUS_X86_MAY_HAVE_SSE */

/* Compiler supports X86 SSE2 Intrinsics */

/* #undef OPUS_X86_MAY_HAVE_SSE2 */

/* Compiler supports X86 SSE4.1 Intrinsics */

/* #undef OPUS_X86_MAY_HAVE_SSE4_1 */

/* Define if binary requires AVX intrinsics support */

/* #undef OPUS_X86_PRESUME_AVX */

/* Define if binary requires SSE intrinsics support */

/* #undef OPUS_X86_PRESUME_SSE */

/* Define if binary requires SSE2 intrinsics support */

/* #undef OPUS_X86_PRESUME_SSE2 */

/* Define if binary requires SSE4.1 intrinsics support */

/* #undef OPUS_X86_PRESUME_SSE4_1 */

/* Define to the address where bug reports for this package should be sent. */

#define PACKAGE_BUGREPORT "opus@xiph.org"

/* Define to the full name of this package. */

#define PACKAGE_NAME "opus"

/* Define to the full name and version of this package. */

#define PACKAGE_STRING "opus 1.3-19-g3765a24-dirty"

/* Define to the one symbol short name of this package. */

#define PACKAGE_TARNAME "opus"

/* Define to the home page for this package. */

#define PACKAGE_URL ""

/* Define to the version of this package. */

#define PACKAGE_VERSION "1.3-19-g3765a24-dirty"

/* Define to 1 if you have the ANSI C header files. */

#define STDC_HEADERS 1

/* Make use of alloca */

/* #undef USE_ALLOCA */

/* Use C99 variable-size arrays */

#define VAR_ARRAYS 1

/* Define to empty if `const' does not conform to ANSI C. */

/* #undef const */

/* Define to `__inline__' or `__inline' if that's what the C compiler

calls it, or to nothing if 'inline' is not supported under any name. */

#ifndef __cplusplus

/* #undef inline */

#endif

/* Define to the equivalent of the C99 'restrict' keyword, or to

nothing if this is not supported. Do not define if restrict is

supported directly. */

#define restrict __restrict

/* Work around a bug in Sun C++: it does not support _Restrict or

__restrict__, even though the corresponding Sun C compiler ends up with

"#define restrict _Restrict" or "#define restrict __restrict__" in the

previous line. Perhaps some future version of Sun C++ will work with

restrict; if so, hopefully it defines __RESTRICT like Sun C does. */

#if defined __SUNPRO_CC && !defined __RESTRICT

# define _Restrict

# define __restrict__

#endif

另外修改说明:

由于平台的内置SRAM不够使用,所以更改了opus_alloc和opus_free为PSRAM的堆分配函数;

由于opus_encode函数使用的栈比较大,所以task的size要设置大一点,1024*6按照目前使用的版本编码双通道基本够用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值