STM32F4 运行CODEC2-0.6库编译

版权声明:本文为博主原创文章,转载请注明本博地址,谢谢! https://blog.csdn.net/u014443578/article/details/79660422

STM32F407 运行 CODEC2-0.6

运行环境

开发板:STM32F407
CODEC库: CODEC2-0.6
HOST主机系统: ubuntu 32位(64位编译失败,需要添加32位库)
交叉编译器: gcc-arm-none-eabi-4_7-2013q1
我是在无联网环境下进行的,联网情况下的编译可能会更简单,没有实验过!

编译流程

  1. codec2-0.6 自带支持STM32 的库,解压源码到工作目录下,首先修改MAKEFILE:
    交叉编译器bin目录绝对路径,也可以填写相对路径,都可以,只要能找到就行;
    BINPATH
    以下你也可以不用改,因为我是在无联网机器上进行编译的,所以只能需要修改,将 460 行注释掉,否则会卡在联网下载部分
    MAKEFILE
    MAKEFILE

  2. 之后在顶层目录执行 make
    make之后显示

  3. 之后显示错误,读取日志,可以看到,创建了一个 DL 目录,然后将 DL 目录下修改文件 stm32f4_dsp_stdperiph_lib.zip.part 名字,因为没有联网,所以没有下载所需要的文件,需要手动将文件拷贝过来;
    此文件可以去官网下,或者网上下,有很多资源,版本为 V1.4.0,与上面 MAKEFILE 中 PERIPHLIBVER 填写的一致。

  4. 下载完成之后,放到 DL 目录下,并修改文件名,在后面添加尾缀 .part:
    修改文件名

  5. 然后再次编译 make:
    这里写图片描述

  6. 发现有很多编译错误,不过很有规律,都是变量重定义,很容易寻找,针对一个寻找问题:
    查找结果
    结果

  7. 发现这些变量都是在头文件中定义的,该头文件被多个 .c 文件引用,所以会出现错误,不清楚为什么官方库会出现这样低级的错误,高版本中的库就没有这样的错误。我进行过很多修改,发现越改越多,越改越乱,使用高版本好像也会出现其他问题。
    后来我发现一个很简单的方法,WINDOWS系统中安装了 KEIL5 ,我将软件中的文件拷贝复制过来了:
    WINDOWS文件
    只需要拷贝 CMSIS 目录下文件即可!
    不过需要保留原来库文件中的 DEVICE 目录,因为会使用到:
    这里写图片描述
    这里写图片描述

  8. 之后再次编译,会出现错误:
    错误
    我认为这是源程序BUG,这两个函数不应该被调用,所以注释掉即可!

如果一切顺利,应该就可以编译成功了,接下来就可以使用 GDB 进行调试了。

调试

调试还需要 STLINK 库,这个我没有记录,应该比较容易,没有什么难点!

我是使用的 STLINK 链接到STM32F407 开发板上,在 UBUNTU 上需要安装驱动;

  • 根据 库文件中自带的 REDME 文档可以知道流程,首先运行sudo ./st-util -f /stm32/codec2-0.6/stm32/codec2_profile.elf
    运行结果

这里写图片描述

  • 在另外一个终端中运行 GDB 程序, /stm32/gcc-arm-none-eabi-4.7-2013q1/bin/arm-none-eabi-gdb codec2_profile.elf :
    GDB 结果

  • 然后运行命令 tar ext :4242:
    这里写图片描述

  • 然后下载程序 load
    下载

  • 下载程序成功结果显示:
    这里写图片描述

  • 下载成功之后,就可以进行调试了,GDB 命令都是基本的
    GDB

这些运行流程在 README 中都有,仅供参考。

最后

  • 编译器使用 4_7, 5_4 编译无法调试,问题未知;
  • MAKEFILE 优化等级提升为 O3,时间大幅缩短
  • 第一次尝试修改库文件,不复制覆盖 CMSIS ,但是解压缩出现问题;原因未知;

很久以前的记录了,可能有部分地方不清楚,见谅!

猜你喜欢

转载自blog.csdn.net/u014443578/article/details/79660422