zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    计算两个时间相差几个月
    批量生成二维码
    PHP实现二维数组(或多维数组)转换成一维数组
    任意二维数组转换成一维数组
    企业微信的使用与公众号以及其它几个应用的使用方式都是一致的
    判断字符类型
    insert一个表的数据到另外一个表
    同步a表的数据到 b表
    PHP Curl Accept-Encoding: gzip乱码问题解决
    spring boot入门程序
  • 原文地址:https://www.cnblogs.com/ice-creamy/p/9829228.html
Copyright © 2011-2022 走看看