首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用GCC开发STM32入门一(使用官方库)

先说说为什么需要用GCC开发stm32吧,作为一名编程方面的爱好者,又是搞嵌入式的,总是用现成的IDE,感觉很不舒服,虽然IDE能很大提高咱们的工作效率,可是作为业余学习研究,还是越熟悉底层越好...3.安装编译环境arm-elf-gcc。...以上环境搭建的方法,摘自网络,百度一下有很多,我照着上面说的试了试,没有成功,再用arm-elf-gcc编译时出来了一堆提示汇编的错误,最后解决了,原来还是权限的问题。...需要注意的是,下载的arm-elf-gcc编译器先看一下版本,听说只有4.2以上的才支持stm32.然后测试下编译器是否管用,随便写个c文件,用arm-elf-gcc -o2 -c hello.c -o...uart_helloworld.o arm-elf-gcc -g -mcpu=cortex-m3 -mthumb -c isr.c -nostartfiles -o isr.o arm-elf-ld

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍

    为什么在 Windows 下面的编译工具链中会有这么多的 .o 和 .a 文件呢?这是因为我们使用的这个编译工具链是在 Linux 系统中编译生成的! 。...GCC for ARM(这个名字是我自己起的,用来代指所有基于 GCC 的针对 ARM 平台的编译套件) 是基于 GCC 开发的,用来编译生成 ARM 内核可执行文件的编译套件,也叫 ARM 交叉编译工具链...基于 GCC 的 ARM 编译工具链提供商有 ARM、Codesourcery、Linaro 这三家,但其中使用最多还是 ARM 提供的 GCC 编译器。...arm-none-elf-gcc: 用于交叉编译 ARM MCU(32位)芯片,如 ARM7、ARM9、Cortex-M/R 芯片程序。...arm-eabi-gcc: 用于编译 ARM 架构的裸机系统,包括 ARM Linux 的 boot、kernel,不适用编译 Linux 应用 Application aarch64-elf: 用于编译

    15.2K35

    S3C2440② | arm-linux-gcc交叉编译工具链

    1.为什么需要交叉编译工具 宿主机运行的是标准Linux操作系统,编译出的程序却需要在目标处理器(S3C2440@ARM920T)上跑,这就叫交叉编译,编译器叫做交叉编译器。...之前我们已经使用过gcc编译Linux本地主机的程序(Linux C语言编程(上篇) | gcc的使用),而我们现在需要的这个编译器的目标系统是ARM,不运行操作系统,仅运行裸机程序,需要在Linux主机上编译出可以运行在...2.arm-linux-gcc的安装 arm-linux-gcc是ARM官方基于Linux平台的arm编译器,其特点有: 开源免费 支持的ARM芯片多 功能强大,稳定 2.1.下载arm-linux-gcc...这里我从友善的网站上下载: 广州友善电子科技有限公司 ?...5.嵌入式开发中常用的两个arm-linux-工具 5.1.格式转换工具arm-linux-objcopy 在Linux主机上编译生成的可执行程序通常为.out或者.elf格式,但是我们烧写到ARM芯片中运行的是

    4K40

    Linux下开发stm32 ①

    1.为什么不是gcc 之前我们花了三篇文章介绍Linux下如何进行C语言编程: Linux C语言编程(上篇) | gcc的使用 Linux C语言编程(中篇) | make的使用 Linux C语言编程...(下篇) | gdb的使用 这是为了给接下来的Linux下嵌入式开发打好基础,尽快熟悉Linux下c编程,但是在开发stm32的时候,编译工具链要使用gcc-arm-none-eabi,为什么不是gcc...这就要说到linux下的交叉编译了,因为我们要在PC机上编译出可以运行在ARM上的程序,使用gcc编译出的是在PC上运行的程序,所以我们要使用gcc-arm-none-eabi进行交叉编译~ 2.gcc-arm-none-eabi...toolchain 介绍及安装 gcc-arm-none-eabi是一个开源的ARM开发工具链,适用于Arm Cortex-M和Coretex-A系列处理器,包括GNU编译器(GCC),以及GDB,可用于...在此我们从[ARM官方下载链接](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads)选择合适的版本下载(这里我选择

    3.4K31

    嵌入式系统开发过程中的常见问题和解决方法

    (现在明白了我在学的那个BF533为什么先下个flashProgramer.dxe先了) 2.什么是arm-elf-gcc? arm-elf-gcc是一个交叉C语言编译器。...我们在PC平台下编译程序,编译器运行的处理器同生成的代码将要运行的处理器相同。但是,在PC机上编译ARM程序时,编译器运行的处理器同生成的代码运行的处理器不同,这种编译器叫做交叉编译器。...其中的elf是指编译器生成的目标文件格式。(其实我们平时用的单片机编译器如GCC—AVR等已是交叉编译器了,我到现在才弄清楚什么是交叉编译器) 3.走了哪条编译路径?...对于支持#pragma message( “I am here”)的编译器也可使用#pragma message预编译指令。 4.我怎么知道那段代码在那个文件中?...Operating System Concepts这本书对操作系统的概念讲述只能用经典来形容。对于嵌入式系统有兴趣深入研究的同学,首先要把基础打好,这本书就成了必读之物了。 Andrew S.

    1.4K70

    makefile初步制作,arm-linux- (gccldobjcopyobjdump)详解

    -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c -o led.o led.c 4 4 arm-linux-ld -Ttext 0x00000000 -g crt0.o...led.o -o led_elf 5 5 arm-linux-objcopy -O binary -S led_elf led.bin 6 6 arm-linux-objdump -D -m arm...是目标文件,:后面是依赖文件 arm-linux-gcc  编译选项 -o  编译及链接,会生成一个exe可执行文件 -Wall  指定产生全部的警告信息   -O/-O2/-O3   数字越高,代表优化的更多...,可以使生成的执行文件的提高执行效率 -c 编译不链接,会生成一个*.obj文件,若后面加了-o,则表示指定输出文件名称 -static   静态链接,生成的文件会非常大, 好处在于不需要动态链接库,也可以运行...-S 只激活预处理和编译,就是指把文件编译成为汇编代码 例如: arm-linux-gcc -c -o  led.o led.c   :编译不链接 arm-linux-gcc   -o  led  led.c

    1.6K20

    RCE 遇到受限 shell 的突破

    apt install gcc 安装的 gcc 显然是不能用于编译了,得安装目标平台专用的gcc,这个时候我才发现,单arm 相关 gcc 来说至少有以下几种 arm-none-eabi-gcc aarch64...-linux-gnu-gcc arm-linux-gnueabi-gcc arm-linux-gnueabihf-gcc 这个时候发现 ARM 架构版本之类的挺复杂,gcc 分类方法就有以下几种 Arm...这个 gcc sudo apt update sudo apt install gcc-arm-linux-gnueabi 2) 尝试编译并上传执行 先以最简单的 hello wrold 为例,测试没问题后再编译我们的下载器...不是这个原因,这说明是文件本身有问题 2) 增加编译参数 可能是编译过程中参数有问题,经过查询,发现可以设置 ARM 的架构以及CPU参数 arm-linux-gnueabi-gcc -march=armv5tej...参数吗,测试一下 arm-linux-gnueabi-gcc 没问题呀,难道编译用的是系统的 gcc 吗 果然,我们既然是给 ARM 平台使用的,那就需要使用 arm-linux-gnueabi-gcc

    1.2K10

    makefile初步制作,arm-linux- (gccldobjcopyobjdump)详解

    -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c -o led.o led.c 4 4 arm-linux-ld -Ttext 0x00000000 -g crt0.o...led.o -o led_elf 5 5 arm-linux-objcopy -O binary -S led_elf led.bin 6 6 arm-linux-objdump -D -m arm...是目标文件,:后面是依赖文件 arm-linux-gcc  编译选项 -o  编译及链接,会生成一个exe可执行文件 -Wall  指定产生全部的警告信息   -O/-O2/-O3   数字越高,代表优化的更多...,可以使生成的执行文件的提高执行效率 -c 编译不链接,会生成一个*.obj文件,若后面加了-o,则表示指定输出文件名称 -static   静态链接,生成的文件会非常大, 好处在于不需要动态链接库,也可以运行...-S 只激活预处理和编译,就是指把文件编译成为汇编代码 例如: arm-linux-gcc -c -o  led.o led.c   :编译不链接 arm-linux-gcc   -o  led  led.c

    1.7K70

    如何在Linux环境下进行STM32开发?

    以下是我的一些看法。 下面我详细聊一下常见的开发流程,以及如何优化你的现有流程。 1、工具链和开发环境 STM32CubeIDE 是 ST 官方提供的跨平台 IDE,支持 Linux,可以直接安装。...它整合了 Eclipse 和 GCC ARM 工具链,你可以在一个环境里完成开发、编译和烧录,非常适合 STM32 系列 MCU。...使用 ARM GCC 编译器和 OpenOCD 烧录工具也是不错的选择。 很多人选择这种方式进行纯命令行开发,尤其适合 Linux 用户。...你可以通过以下步骤设置环境,安装 ARM GCC 工具链: sudo apt install gcc-arm-none-eabi 安装 OpenOCD 用于调试和烧录: sudo apt install...然而它的局限性在于并非所有 STM32 型号都能用 UART 模式烧录。

    5700

    【专业技术】C语言里面丰富多彩的浮点运算

    嵌入式处理器,用的最多的当属ARM家族了,我也每天都跟她打交道,但对于软浮点,硬浮点,vfp,softfp,刚开始我也并不清楚怎么用。 下文这篇文章,对arm处理器的浮点讲的很清楚。...一、使用浮点库实现浮点运算(soft-float) 例如:我想实现两个浮点数相加,代码如下: ? 使用GNU ARM编译器翻译成的部分汇编代码如下: ?...(RM) *.o arm.dis arm.elf 使用硬件浮点实现浮点运算(hard-float) 使用硬件浮点的时候,我们需要给编译器传递一些参数,让编译器编译出硬件浮点单元处理器能识别的指令。...这样要求所有库和应用程序必须采用这同一个参数来编译,否则连接时会出现接口不兼容错误。 我们对main.c文件使用硬件浮点重新编译: ? 翻译成的汇编代码如下: ?...$(OBJDUMP) -D arm.elf > arm.dis clean: $(RM) *.o arm.dis arm.elf 转自:http://www.eefocus.com

    1.8K50

    【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    设置交叉编译工具 OK-6410-A 使用 4.3.2 的交叉编译工具链, 将交叉编译工具链设置成 Ubuntu 的默认交叉编译工具链; 安装交叉编译工具链 : 解压 arm-linux-gcc-4.3.2...(2) 交叉编译并在开发板运行 交叉编译 : 使用 arm-linux-gcc main.c 命令交叉编译, 经过交叉编译的 a.out 不能再 x86 平台执行; 使用 U 盘将程序拷贝到开发板 :...: 执行 a.out 程序, 执行成功; (3) 交叉|普通编译结果对比 对比交叉编译 和 普通编译 的可执行文件 : 通过 file 命令对比可执行文件; -- 交叉编译 : 使用 arm-linux-gcc...-c led.S .PHONY: clean clean: rm *.o led.elf led.bin (2) 交叉链接器链接过程 链接过程 :  -- 交叉编译 : 使用 arm-linux-gcc...Disassembly of section .note.ABI-tag:... ... (2) 编译附加调试信息 带调试信息的反编译 :  -- 交叉编译带调试信息 : arm-linux-gcc -

    2K20
    领券