历史上的今天
返回首页

历史上的今天

今天是:2024年10月13日(星期日)

正在发生

2018年10月13日 | ubuntu下建立stm32开发环境:GCC安装以及工程Makefile建立

2018-10-13 来源:eefocus

环境:

              ubuntu 13.10

              stm32f103zet6

 一  STM 32 GCC 安装

stm32 属于arm cortex-m系列thumb指令集,所以给arm用的arm-none-eabi就可以了,首先是下载

下载地址:https://launchpad.NET/gcc-arm-embedded/+download

下载其中的gcc-arm-none-eabi-version-linux.tar.bz2

解压到你知道的目录会产生 gcc-arm-none-eabi的文件夹

把该编译器添加到你的环境中:sudo gedit  ~/.bashrc


在最后一行添加:因为我之前有添加过树莓派的编译器了,所以实际上是这样的:
export PATH=$PATH:/your_pi_gcc_dir/tools-master/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/:/your_stm_gcc_dir/gcc-arm-none-eabi-4_8-2013q4/bin
 
两个编译器环境中间用冒号隔开;

注销后测试:arm-none-eabi-gcc -v

可以查看到该编译器的版本,就表示可以了.


二  工程环境的建立

新建个工程文件夹,及其目录:
             mkdir stm_project 
             cd stm_project 
             mkdir libs 
             mkdir src 
             mkdir inc

下载,安装官方库:


stm32的寄存器不像51 avr等单片机,那么少,自己写写库,背背寄存器就可以了,所以ST公司提供了他们官方的库,为了避免重复造轮子,就直接采用他们的库,库版本为STM32_USB-FS-Device_Lib_V4.0.0,这个库多了usb支持,下载的话到st官网搜索stm32f10x就有了.


下载链接:http://download.csdn.net/detail/canyue102/6778837

这里说明需要修改的地方,根据芯片型号不同,选择相应的RAM FLASH大小

MEMORY { 
        //Adust LENGTH to RAMsize of target MCU: 
        //STM32F103RBT --> 20K 
        //RAM (RWX) : ORIGIN = 0x20000000 , LENGTH = 20K 
        //STM32F103RET --> 64K 
        //STM32F103ZET --> 64K 
        RAM (RWX) : ORIGIN = 0x20000000 , LENGTH = 64K 
        EXTSRAM (RWX) : ORIGIN = 0x68000000 , LENGTH = 0 
        //Adust LENGTH to (FLASHsize - FeePROMsize) of target MCU: 
        //STM32F103RBT --> 126K 
        FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 126K 
        //STM32F103RET --> 508K 
        //FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 508K 
        //STM32F103ZET --> 508K 
        FLASH (RX) : ORIGIN = 0x08000000 , LENGTH = 508K 
        //Adust ORIGIN to (0x08000000 + (FLASHsize-FeePROMsize)) of target MCU 
        //and adust LENGTH to FeePROMsize allocated: 
        //STM32F103RBT --> 0x08000000+126K, 2K 
        EEMUL (RWX) : ORIGIN = 0x08000000+126K, LENGTH = 2K 
        //STM32F103RET --> 0x08000000+508K, 4K 
        //EEMUL (RWX) : ORIGIN = 0x08000000+508K, LENGTH = 4K 
    }


在工程根目录下新建Makefile文件:
    # general Makefile 
     
    include Makefile.common 
    LDFLAGS=$(COMMONFLAGS) -fno-exceptions -ffunction-sections -fdata-sections -L$(LIBDIR) -nostartfiles -Wl,--gc-sections,-Tlinker.ld 
     
    LDLIBS+=-lm 
    LDLIBS+=-lstm32 
     
    STARTUP=startup.c 
     
    all: libs src 
        $(CC) -o $(PROGRAM).elf $(LDFLAGS) \ 
            -Wl,--whole-archive \ 
                src/app.a \ 
            -Wl,--no-whole-archive \ 
                $(LDLIBS) 
        $(OBJCOPY) -O ihex $(PROGRAM).elf $(PROGRAM).hex 
        $(OBJCOPY) -O binary $(PROGRAM).elf $(PROGRAM).bin 
    #Extract info contained in ELF to readable text-files: 
        arm-none-eabi-readelf -a $(PROGRAM).elf > $(PROGRAM).info_elf 
        arm-none-eabi-size -d -B -t $(PROGRAM).elf > $(PROGRAM).info_size 
        arm-none-eabi-objdump -S $(PROGRAM).elf > $(PROGRAM).info_code 
        arm-none-eabi-nm -t d -S --size-sort -s $(PROGRAM).elf > $(PROGRAM).info_symbol 
     
    .PHONY: libs src clean tshow 
     
    libs: 
        $(MAKE) -C libs $@ 
    src: 
        $(MAKE) -C src $@ 
    clean: 
        $(MAKE) -C src $@ 
        $(MAKE) -C libs $@ 
        rm -f $(PROGRAM).elf $(PROGRAM).hex $(PROGRAM).bin $(PROGRAM).info_elf $(PROGRAM).info_size 
        rm -f $(PROGRAM).info_code 
        rm -f $(PROGRAM).info_symbol 
    tshow: 
            @echo "######################################################################################################" 
            @echo "################# optimize settings: $(InfoTextLib), $(InfoTextSrc)" 
            @echo "######################################################################################################" 

差不多就好了,在src里面添加测试源码

主要是startup.c 以及main.c,这里就不在说明了,可以查看该pdf或者到我的资源下载

http://download.csdn.net/detail/canyue102/6778885

然后进入工程主目录,下make就好了.

make clean 
make OptLIB=0 OptSRC=0 all tshow


然后,就完成了,关于ubuntu下烧录程序到stm32下,请见下一篇博客


推荐阅读

史海拾趣

睿赫(crechip)公司的发展小趣事

作为一家有社会责任感的企业,睿赫公司始终关注环境保护和可持续发展。公司在产品研发和生产过程中,积极采用环保材料和绿色生产工艺,减少对环境的影响。同时,公司还积极参与公益事业,为社会做出了积极的贡献。

在可持续发展方面,睿赫公司致力于推动电子行业的绿色化和智能化发展。公司不断加强技术研发和创新,推出了一系列符合环保要求和高性能要求的产品,为电子行业的可持续发展做出了积极的贡献。

Federal Custom Cable公司的发展小趣事

在电缆产品性能和质量得到提升的同时,Federal Custom Cable也积极开拓新的市场领域。他们深入了解不同行业对电缆的需求特点,针对不同行业推出了一系列定制化的电缆产品。这些产品广泛应用于通信、医疗、航空等领域,并赢得了客户的一致好评。同时,Federal Custom Cable还加强了品牌建设和市场推广力度,提高了品牌知名度和美誉度。

Forge Europa Ltd公司的发展小趣事

在全球化布局的同时,Forge Europa Ltd公司也注重在中国市场的本土化深耕。公司在中国设立了研发中心和生产基地,以更好地服务中国市场并融入本土产业链。通过深入了解中国市场的需求和特点,Forge Europa不断调整产品策略,推出了一系列符合中国市场需求的LED灯带产品。此外,公司还积极与中国本土企业合作,共同推动LED照明技术的发展和应用。

ENERGIZER公司的发展小趣事

ENERGIZER在电池技术的研发上一直处于行业领先地位。1957年,公司成功研制出首粒碱性电池,这一创新性的产品迅速占领了市场,成为了当时最受欢迎的电池产品之一。随后,ENERGIZER又相继推出了纽扣电池、测电带电池等一系列创新产品,不断满足消费者对电池的多样化需求。这些创新性的产品的研发和推广,进一步巩固了ENERGIZER在全球电池市场的领先地位。

Cree(科瑞)公司的发展小趣事

进入21世纪,Cree在功率器件领域取得了重大突破。2004年,Cree开始大范围采用氮化镓(GaN)材料,并成功将其应用于大功率RF器件产品设计。这些GaN射频器件主要服务于美国军工领域,如“萨德”导弹防御系统,其超宽的频率覆盖和大功率射频功率技术无人能及。这一技术的成功应用,不仅提升了Cree的技术实力,也为其打开了新的市场空间。

Diconex公司的发展小趣事

在电子行业的激烈竞争中,Diconex公司凭借其卓越的技术创新能力脱颖而出。公司成立之初,便专注于研发高性能、低能耗的半导体芯片。通过不断的研发投入和团队努力,Diconex成功推出了一系列具有行业领先水平的产品,赢得了客户的广泛认可。随着技术的不断升级和市场需求的不断增长,Diconex逐渐在电子行业占据了一席之地。

问答坊 | AI 解惑

无形的屏幕

哇,我的电脑屏幕隐形了,成透明的了,这...这...怎么可能?淡定淡定,这不是灵异事件,奥秘来自于墙纸...厌倦了常规的墙纸当屏幕背景,那就看一下这一组怪异墙纸,它们会让你的屏幕变无形。但是事实是,屏幕还在,只不过是视觉欺骗了我们的感觉。 ...…

查看全部问答>

有人知道用920T的盒做个ARM9的板子,大约要多少钱吗?

有人知道用920T的盒做个ARM9的板子,大约要多少钱吗?芯片在哪买?…

查看全部问答>

能否根据windows驱动程序(release bin)编写linux驱动

有没有可能通过反编译等方式生成一个linux驱动 有没有捷径可以走…

查看全部问答>

请教一个简单的C51程序,

#include main() {         TMOD=0X10;         TH1=0XFE;         TL1=0X0C;         TR1=1;         ET1=1;       ...…

查看全部问答>

wince下调用软键盘的问题

在wince下调用软键盘,代码如下 void CRecorderDlg::OnBnClickedButton6() {         // TODO: Add your control notification handler code here         SipShowIM(SIPF_ON);  //Shows&nb ...…

查看全部问答>

在wince 下怎么能读取 一个像素 alpha 通道的值

我想把一个带 透明通道的bitmap作为前景贴到一个不带透明通道的背景bitmap上,试了几种方法 都不理想,包括 TransparentBlt(...),alphablend(...),还使用过maskdc 的方法,都不理想。 前两种方法把我的小的前景,拉伸到跟背景一样大;而且Transpa ...…

查看全部问答>

发个清华蓬远地取模软件

前几天取汉字模从网上下个软件,不太好,就因为取然的格式带H地,我要C语言数组地,以前用过清华蓬远的取模软件,我认为是最好地,今天翻出特发上来,大家共享,我也MARK,省得以后再找不到,呵呵…

查看全部问答>

一个晶振引发的问题

本来是51好板,就是CPU座松了,让同事搞一下变紧,拿回来突然不好用,仿真器上也不好用,本来屏幕可显开机画面,但怎么也搞不定,由于急有找了另一台机器总算把程序实验完,第二天对着这个坏板研究起来,首先是换51的40脚DIP座,小心得很,因为板上 ...…

查看全部问答>

菜农友情为STM32设计一种通用加密方法之原理

今天连续看了两篇关于加密方面的帖子,感觉自己应该友情奉献一回了~~~ 设想一种加密办法,大家看看可行吗? 关于STM32F器件电子签名以及加密问题-请指点 今日方知STM32的UID为96位即12个字节,以前知道STM32内嵌CRC32. 网上在线CRC演算工 ...…

查看全部问答>

急求一个实际应用中的反向比例运算放大电路

简要说明一下放大电路的原理和作用…

查看全部问答>