(STM32H7) 从 TouchGFX 更新 makefile 以添加编译器看不到的头文件

问题描述 投票:0回答:1

我使用的是带有嵌入式 STM32 微控制器 (STM32H7) 的 RIVERDI 屏幕。我通过 touchgfx 框架生成代码,然后打开 stm32cubeide,以便对 TouchGfx 生成的程序进行一些更改。我做的第一件事是从 STM32CubeMX 启用 LwIP 并设置静态 IP 地址。我这样做的原因是因为我需要向我的主板添加外部 PHY(LAN8720)才能建立以太网连接。进行更改并确保在 STM32CubeIDE 中编译正常且没有任何错误时,当我尝试将代码刷新到屏幕上时,我收到一条错误,指出它找不到 lwip/opt.h 库。

我对此进行了研究,我意识到它包含一个 makefile_cm7,我需要添加一些代码才能在编译时看到它并且没有此错误代码。虽然,我找不到如何做到这一点的方法。谁能帮我添加位于文件夹位置的头文件:“Middlewares/Third_Party/LwIP/src/Include/lwip”。

这是我的文件夹结构: enter image description here

这也是我的 makefile,我需要添加路径:

makefile_cm7

我尝试添加一些基于类似内容的代码,但我无法克服这个障碍。 例如,我在这里添加了这些行:

# keep framework include and source out of this mess! :)
include_paths := $(library_includes) \
    $(foreach comp, $(all_components), $(comp)/include) \
    $(foreach comp, $(touchgfx_generator_components), $(comp)/generated) \
    $(framework_includes) \
    $(cubemx_middlewares_path) \
    $(application_path)/Utilities/JPEG \
    $(application_path)/CM7/FATFS/App \
    $(application_path)/CM7/FATFS/Target \
    $(application_path)/CM7/USB_HOST/App \
    $(application_path)/CM7/USB_HOST/Target \
    $(application_path)/CM7/LIBJPEG/App \
    $(application_path)/CM7/LIBJPEG/Target \
    $(application_path)/CM7/LWIP/App \
    $(application_path)/CM7/LWIP/Target \
    $(application_path)/Middlewares/Third_Party/LwIP/src/include/lwip \  #HERE
    $(application_path)/Middlewares/Third_Party/LwIP/src/include/compat \ #HERE
    $(application_path)/Middlewares/Third_Party/LwIP/src/include/netif \ #HERE 
    $(application_path)/CM7/TouchGFX/generated/videos/include \
    $(touchgfx_middlewares_path) \
    $(LwIP_path) \
    $(touchgfx_generator_components)

但是我收到了同样的错误消息:

 c:/TouchGFXProjects/charxConnection/CM7/LWIP/App/lwip.h:29:10: fatal error: lwip/opt.h: No such file or directory
         #include "lwip/opt.h"
                  ^~~~~~~~~~~~
        compilation terminated.
        gcc/makefile_cm7:515: recipe for target 'CM7/TouchGFX/build/Riverdi_70STM32H7/CM7/Core/Src/main.o' failed
        make[3]: *** [CM7/TouchGFX/build/Riverdi_70STM32H7/CM7/Core/Src/main.o] Error 1
        make[3]: Leaving directory 'c:/TouchGFXProjects/charxConnection'
        gcc/makefile_cm7:434: recipe for target 'generate_assets' failed
        make[2]: Leaving directory 'c:/TouchGFXProjects/charxConnection'
        make[2]: *** [generate_assets] Error 2
        Makefile_cm7:55: recipe for target 'all' failed
        make[1]: Leaving directory 'C:/TouchGFXProjects/charxConnection/gcc'
        make[1]: *** [all] Error 2
        make: *** [flash] Error 2
        ../../gcc/Makefile:10: recipe for target 'flash' failed
        Failed
    Failed

我需要提到的是,在STM32CubeIDE中我没有错误消息,它正在编译,没有错误和警告。此外,我曾尝试通过 STM32CubeIDE 刷新程序,它正确地刷新了代码,但我它变成了黑屏,而不是正确的 UI。

我正在使用: i) TouchGFX 设计师 4.22.0 ii) STM32CubeIDE 1.13.1

有人可以帮我吗?预先感谢您!

c flash-builder stm32cubeide stm32h7 touchgfx
1个回答
0
投票

经过大量的努力学习和分析 touchgfx 的 makefile,我成功添加了库并成功编译了程序。

我首先想到的是将 LwIP 库所在的文件路径获取到变量 lwip_os_path 中。

我将 CubeMX 生成的文件夹(其位置位于项目的应用程序路径)添加到 makefile 中的 inluce_paths 中,如下所示: $(application_path)/CM7/LWIP/应用程序
$(application_path)/CM7/LWIP/目标 \

此外,我将 LwIP 文件夹中的所有 .c 文件放入 board_c_files += \ 区域,并指定目标文件的正确路径。

我还将 .h 路径放入 os_include_paths += .

最后一步是将包含 lwip 中所有 .h 文件的 include/lwip-app-netif 文件夹复制并粘贴到cubeIDE 中应用程序的 src 文件夹中。我从 IDE 中打开文件位置后,切入这三个文件夹并将它们放入 CM7/Core/inc 文件夹中。

之后,我通过 touchgfx 成功编译了从 CubeMX 生成的代码。

© www.soinside.com 2019 - 2024. All rights reserved.