• makefile与stm32工程皮毛了解


    相关概念:

      Makefile的作用:

        告诉make如何编译(compile)和链接(link)程序。编译是将源文件编译成中间代码(linux下为.o文件),链接是指将这些.o文件合成可执行文件。

      Makefile的典型规则语法:

      目标<target> : 先决条件<prerequisites>

      <TAB> 命令<commands>

    Makefile主要包含五项内容:

    1. 显示规则:明确指出目标文件即其依赖文件和命令,来生成一个或多个目标文件。
    2. 隐晦规则:一些常用的默认规则,如”%o:%c”把.c文件编译成.o文件,不需要书写出来,make会自动推导。
    3. 变量的定义:表示一串文本字串,用$(XX)调用,调用$则用“$$“。
    4. 文件指示:引用其他的makefile,等。
    5. 注释 : “#”表示注释,使用#则用”#”。

    注意:

    1. 每个命令前必须有一个tab键(或者使用.RECIPEPREFIX = XX 指定)
    2. 一行命令在一个shell中执行,即不同行分别存在于不同进程中。具体操作参考<make命令编程>
    3. 目标不一定是文件,也可能只是一个标签。这时不得不提到伪目标(.PHONY), ,用于执行一些辅助命令。

        如:       .PHONY : clean   

            clean:

                           rm *.o temp

       当我们显示指明这个目标clean时才会执行。

      4.Makefile最终目标,默认为第一个目标(.DEFAULT_GOAL := XX指定一个目标。或者使用all调用多个目标)

      5.变量中还存在一些自动化变量如”$<”表示第一个依赖文件,”$@”表示当前目标,”$^”表示依赖文件的所有文件

    以上参照<What is makefile and how dose it work>

    若要深入了解建议看<跟我一起学makefile>

    对于stm32工程:

    (i)源程序

    (ii).ld ”链接”:作用是链接.o文件生成elf文件。

    修改是MEMORY中RAM和FLASH的配置,如

    Stm32c8t6:

    RAM (RWX) : ORIGIN = 0x20000000 , LENGTH = 20K

    FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 63K

    (iii)Makefile:

        主要是三项设置:

      1. 编译器设置CFLAGS
      2. arm-none-eabi-objcopy 将.elf文件转化成.bin文件
      3. st-flash write main.bin 0x8000000’烧录

          参考<how to compile and burn the code to stm32 chip on linux ubuntu>

            其余的便是一些优化选项,指定库文件包含路径以及生成静态库,stm32芯片型号容量设置等。

    (iv).cfg:openocd.cfg"

    (v) .sh"bash脚本 "

    以上参考<stm32 primer-stm32 primer lib.php>

  • 相关阅读:
    美国贷款买饭的房屋保险
    ArrayList和数组间的相互转换
    JList动态添加元素
    美国交往礼仪
    刘元普双生贵子(但行好事,莫问前程)
    CountDownLatch与CyclicBarrier
    彻底理解Java的feature模式
    Java中的Future模式原理自定义实现
    浅谈Java Future接口
    Future接口和Callable接口以及FeatureTask详解
  • 原文地址:https://www.cnblogs.com/ice-creamy/p/9829228.html
Copyright © 2020-2023  润新知