2951|9

1366

帖子

6

TA的资源

版主

楼主
 

再怼那就先怼点个灯 [复制链接]

      好吧,放着好好的window下的IDE不用,确实点个灯还用linux下怼得有点蛋疼。
      上一个帖子搭建了开发环境,本贴楼主就利用该开发环境来点个灯。
      当然首先得把相关的工程文件拷贝过来,下载官方的hal库源码,然后把相关文件拷贝到自己的文件来,具体需要什么文件楼主也不说了,直接上传附件就好了。当然有几个点需要注意。启动文件记得选择gcc文件里面的。最后的工程布局如下图所示:

      在GCC编译的过程中,arm-none-eabi-gcc把C语言被编译为二进制执行文件,每个C文件都被编译为了.o的,带有未解析地址的中间文件,arm-none-eabi-ld链接器将所有C文件的.o 文件链接将他们有序的排列到储存中,并将他们个个函数处的地址解析使得其他不同地方的函数能够跳转到该函数的入口地址。由此一个有序排列的可被单片机执行的文件便生成了。而在编译和链接中间,把这个可被单片机有序排列执行的文件,则需要一个ld文件(一种链接器使用的规则性文件),他告诉链接器单片机系统的ROM、RAM的地址和他们的大小等信息,并指示链接器将什么代码保存在什么位置。当然这种文件有着自己的一套规则和语法,与makefile一样。对于楼主这种菜鸟来说,自己写个ld文件明显很费时间,好在ST有提供了相关的ld,我们可以直接copy来用。路径在每个例程的project的目录下。如图:
      

      接下来还是makefile,说实话楼主刚接触的时候很特别难以理解,现在也是。推荐陈皓老师的《跟我一起写Makefile》这个博客,写得很通俗。
      makefile其实说到底也相当MDK的那个make图标吧,让编译器知道执行编译的指令。楼主makefile学习还有段时间,写的makefile有部分参考guthub上的例子。
   
  1. #工程的名称以及生成文件的名字
  2. TARGET=YY_jlink_F767nucleo

  3. #获取当前工作目录
  4. STM_DIR=$(shell pwd)
  5. STM_SRC = $(STM_DIR)/Drivers/STM32F7xx_HAL_Driver/Src
  6. STM_TEMPLATE = $(STM_DIR)/Drivers/CMSIS/Device/ST/STM32F7xx/Source
  7. STM_MAIN=$(STM_DIR)/User/src

  8. #添加包含的C路径以及启动文件路径
  9. vpath %.c $(STM_SRC) $(STM_TEMPLATE) $(STM_MAIN)
  10. vpath %.s $(STM_TEMPLATE)

  11. #类似框架当中的dependens,规则所定义的目标
  12. #将相关要编译的C文件编译后链接生成中间文件
  13. #要使用其他外设时候可以在这里添加
  14. STM_OBJS = system_stm32f7xx.o
  15. STM_OBJS += startup_stm32f767xx.o
  16. # HAL peripheral drivers.
  17. STM_OBJS += stm32f7xx_hal_gpio.o
  18. STM_OBJS += main.o
  19. STM_OBJS += stm32f7xx_hal_msp.o
  20. #STM_OBJS += stm32f7xx_it.o

  21. #添加相关头文件目录
  22. INC_DIRS += $(STM_DIR)/Drivers/CMSIS/Include
  23. INC_DIRS += $(STM_DIR)/Drivers/CMSIS/Device/ST/STM32F7xx/Include
  24. INC_DIRS += $(STM_DIR)/Drivers/STM32F7xx_HAL_Driver/Inc
  25. INC_DIRS += $(STM_DIR)/User/inc
  26. INC_DIRS += .
  27. INC = $(addprefix -I,$(INC_DIRS))

  28. #设定相关环境变量
  29. CC=arm-none-eabi-gcc
  30. LD=arm-none-eabi-gcc
  31. OBJCOPY=arm-none-eabi-objcopy

  32. #链接文件
  33. LINKSCRIPT=$(STM_DIR)/User/STM32F767ZITx_FLASH.ld


  34. #c编译器的选项,使用编译优化和硬件浮点数等
  35. # ToDo: Can use here: -mcpu=cortex-m7 -mfpu=fpv5-sp-d16
  36. ARCH_FLAGS=-mthumb -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard -ffunction-sections -fdata-sections -ffast-math

  37. CFLAGS=-ggdb -O2 -std=c99 -Wall -Wextra -Warray-bounds -Wno-unused-parameter $(ARCH_FLAGS) $(INC) -DSTM32F767xx -DUSE_HAL_DRIVER
  38. LDFLAGS=-Wl,--gc-sections -lm

  39. #生成Bin文件和elf文件。
  40. .PHONY: all flash clean tty cat

  41. all: $(TARGET).bin

  42. $(TARGET).bin: $(TARGET).elf

  43. $(TARGET).elf:  $(STM_OBJS) $(LINKSCRIPT)
  44.         $(LD) $(ARCH_FLAGS) -T $(LINKSCRIPT) -o $[url=home.php?mod=space&uid=775551]@[/url]  $(STM_OBJS) $(LDFLAGS)

  45. $(TARGET).o: $(TARGET).c stm32f7xx_hal_conf.h

  46. %.o: %.s
  47.         $(CC) $(CFLAGS) -c $< -o $@

  48. # ToDo: Remove this once gcc is upgraded to understand cortex-m7
  49. startup_stm32f67xx.s: $(STM_TEMPLATE)/startup_stm32f767xx.s
  50.         sed -e 's/cortex-m7/cortex-m4/' < $< > $@

  51. %.o: %.c $(TARGET).h stm32f7xx_hal_conf.h
  52.         $(CC) $(CFLAGS) -c $< -o $@

  53. %.bin: %.elf
  54.         $(OBJCOPY) -O binary $< $@

  55. flash: $(TARGET).bin
  56.         st-flash write $(TARGET).bin 0x8000000

  57. clean:
  58.         rm -f $(OBJS) $(STM_OBJS) $(TARGET).elf $(TARGET).bin
复制代码
  

         
此内容由EEWORLD论坛网友RCSN原创,如需转载或用于商业用途需征得作者同意并注明出处


此帖出自stm32/stm8论坛

最新回复

渣渣,下次先把水分晒干,直接上干货  详情 回复 发表于 2017-10-1 21:56
点赞 关注
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复
举报

3416

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
把st点了,点天灯
此帖出自stm32/stm8论坛
 
个人签名

So TM what......?

 


回复

1366

帖子

6

TA的资源

版主

板凳
 
本帖最后由 RCSN 于 2017-9-30 20:42 编辑

      工程搭立好了之后,就在终端上make生成对应的Bin和elf文件.
     
    接下来就是通过jlink识别芯片,Telnet建立通信,休眠,下载,复位。
   


此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 

回复

6040

帖子

195

TA的资源

版主

4
 
点完了?
此帖出自stm32/stm8论坛

点评

没,队长。帖子的水分有点多,虚了  详情 回复 发表于 2017-9-30 20:26
 
 
 

回复

1366

帖子

6

TA的资源

版主

5
 

没,队长。帖子的水分有点多,虚了
此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

1366

帖子

6

TA的资源

版主

6
 
ljj3166 发表于 2017-9-30 20:14
把st点了,点天灯

此帖出自stm32/stm8论坛
 
个人签名

1084534438 欢迎交流  [加油,一切皆有可能]

 
 

回复

2774

帖子

8

TA的资源

版主

7
 
用767 跑ptyhon 或是 mbed呀
此帖出自stm32/stm8论坛
 
 
 

回复

1310

帖子

3

TA的资源

一粒金砂(高级)

8
 
起步了啊,不错.
此帖出自stm32/stm8论坛
 
个人签名

RTEMS

 
 

回复

732

帖子

2

TA的资源

纯净的硅(中级)

9
 
厉害厉害,我也想过用linux编译stm32的程序,一直没做,主要是单步调试没有MDK那么直接。    楼主为什么选用linux呢?
此帖出自stm32/stm8论坛
 
个人签名亚里士缺德
 
 

回复

855

帖子

5

TA的资源

一粒金砂(高级)

10
 
渣渣,下次先把水分晒干,直接上干货
此帖出自stm32/stm8论坛
 
个人签名作为一个菜逼,干货并没有多少。唯一会的就是水,所以回帖水分大。望见谅!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表