魅蓝note6屏幕分辨率分辨率,求作图大神把这个做成壁纸,请不要就这样拉大,没法看,竖屏,谢谢

ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立 – Blog of
本博客所有内容(文字、图片及其它)除标明转载外,均为原创,作者为 ,采用进行许可。
2017年五月
2017年一月
2016年十一月
2016年十月
2016年九月
2016年七月
2016年六月
2016年五月
2016年四月
2016年三月
2016年二月
2016年一月
2015年十二月
2015年十一月
2015年十月
2015年九月
2015年八月
2015年七月
2015年六月
2015年四月
2015年三月
2015年二月
2015年一月
2014年十二月
2014年十一月
2014年十月
2014年九月
2014年八月
2014年七月
2014年六月
2014年五月
2014年四月
2014年三月
2014年二月
2013年十二月
2013年十一月
2013年十月本帖子已过去太久远了,不再提供回复功能。主题 : STM32+Linux开发板--我的新起点
级别: 新手上路
金钱: 235 两
威望: 47 点
贡献值: 0 点
综合积分: 94 分
&STM32+Linux开发板--我的新起点
【第1章】STM32+Linux开发板--我的新起点写在前面:很偶然接触到STM32+Linux这块板子,是一个做电设比赛的同学的。之前觉得搭建的硬件,软件都很牛,因为我手上当时有STM8S而且觉得自己可能没能力玩32的,就没多大留意。前几天却看到一篇254页的学习手册,被惊到了,这个板子带上APP做物联网开发?这似乎让我感觉到压力,要学的东西还很多,做电子的,看来必须与时俱进了。这阵子学安卓已经学傻了,看到这个手册,也纠结了一下,因为在这里,我似乎找到了移动端的感觉,至于能不能做到手册里的那样,真不好说。当然前提应该是我能弄到开源的资源。……不扯那么多了,我们开始来探究STM32与Linux的真容吧。目前,智能手机移动平台广泛应用,3G/4G速度快读提升、资费大幅下降,云应用快速展开,与之相应的远程智能控制、广域数据采集、无线传感网、物联网等将得以全面发展,其中关键技术就是计算机网络通信和嵌入式Linux系统,仅仅会单片机技术已经远远满足不了后续而来的信息大爆发的浪潮,当下无线wifi模块、智能家居等诸多产品的热卖已经暗示着信息浪潮即将到来,了解最新信息动态,掌握自己的未来,已经显得刻不容缓。STM32+Linux开发学习板,是STM32和网络处理器组成的双处理器平台,STM32单片机以C语言库函数、网络处理平台以Linux的标准c或python等语言并行运行。STM32单片机平台以高性能多资源的STM32F051为主,附带众多片内外外设,以实际应用项目为原型,选取经典软硬件方案,可完成STM32单片机深度开发学习。网络处理器与Linux平台,主要是面向家庭和个人的微型信息服务中心开发组合,标配有高清摄像头、HIFI多声道声卡、蓝牙模块、高保真音箱、红外遥控插排及各类调试仿真工具;可用于智能家居、安防监控、物联网信息中心、家庭保健医疗、个人云存储、广域云存储连接、混合云应用、异地E家信息中心、家庭娱乐音视频推送等项目学习开发.做远程控制?带APP?1.1带安卓体验控制界面APP的STM32开发板 STM32开发板带有android手机客户端的APP软件,我们可以将APP快捷的安装到手机,应用手机客户端和开发板进行通信,进而通过wifi控制开发板进行各种操作,如摄像头,液晶屏等。安卓版本的APP源码,以及APP开发教程,使我们不仅能体验APP给带来的便捷,同时还可以学习编写的自己的客户端软件,一块STM32开发板使我们达到一学多得的目的。1.2带高清HIFI音频流媒体服务的STM32开发板 与普通带VS1005音频解码模块的STM32开发板不同,微云开发板带有一体化Linux模块,其内含高清数字音频解码器,附带板载高容量网络存储(内含很多优美的音乐、精彩的脱口秀、搞笑的相声、经典的影视英文等音频文件),通过wifi,手机或者网页等可远程控制诸多音源的切换,停止和播放。开发板还附赠高保真音响,清晰流畅的音频节目能让您学习之余体验震撼的音乐效果。当然我们还可以自己学习尝试修改源代码,以及增添删减音频文件,编辑属于自己个性化的音乐内容。1.3带高清流媒视频源的STM32开发板 开发板带有一体化Linux模块,其内含高清数字视频流媒体服务器,附带板载高容量网络存储(内含多部高清影视频文件),在学习之余,可以通过局域网内无线wifi,应用自己的手机或者平板,欣赏当下流行高清电影。同样,我们可以通过学习来尝试修改流媒体服务的程序,打造个性化的影视中心。1.4云技术信息中心 开发板是一个小型的云服务信息中心,可以通过各种终端比如手机、PC等,获取远程传感器的实时数据(如温湿度,光强等)。同时开发板还具有私有云存储功能,可存储海量的家庭服务信息,如家庭保健医疗,异地E家信息等。当然也可以通过学习打造适合自己的特色服务中心,如个性数字图书馆等。1.5智能控制中心 STM32+Linux开发板还是一个智能控制中心,我们可以通过手机,电脑等终端在家里控制家电,比如照明灯的通断,红外遥控设备的开启与关闭,遥控电源插排的开关等。通过学习我们可以为自己建造一个超现代化的舒适智能家庭。1.6Web型网络监控与图片推送 开发板附带高清摄像头,支持Web监控和网络推送,可通过wifi网络查看摄像头监控画面,并自动获取摄像头截取画面,通过FTP上传至个人的计算机或者手机中,以便实时浏览。1.7室内环境数据的监测中心 开发板带有各种测量室内环境参数的传感器,可以测量室内的温度、湿度和光强,可通过网络利用各种终端设备实时采集室内环境的参数在线监测,使我们随时随地随心的查看自己家里的环境状况。1.8私有云端Web网页和安卓手机App 开发板内建多种服务器,包括Web服务,能构建私有信息中心,炫酷的Web网页和便捷的安卓客户控制端能让您随心所欲的掌控一切,享受高科技带来的乐趣。开放的源代码能让您快速打造个性化的私人信息中心。 1.9学习资源与开发辅导 开发板具有详尽完善的开发文档,所有的工程源代码完全开放,特别是专业的售后服务群,多位参与开发的技术人员实时在线进行技术辅导,免除我们的学习后顾之忧,多种套餐组合能满足不同需求。1.10学习之忧—开发板学习难度解惑 1.11开发板及附配件组合简介STM32+Linux开发板配备的配件主要有:vSTM32+Linux开发板v蓝悦HIFI音箱v罗技高清摄像头v+5V电源适配器v网络数据连接线vUSB扩展口4口HUBv大容量网络存储U盘(内含系统文件,请勿格式化)v红外迷你遥控器vCH340 USB转UART模块vUSB免驱动声卡STM32+linux&&看到这个就心动了,有没有?在STM32闯荡的日子里,当我看到这个带APP的板子的时候,突然心里一亮,物联网开发专用!对这个板子的好感油然而生。感动,看到STM32牛人的作品,就想到必须要弥补这块硬伤,好多人问我,要学嵌入式还是学安卓?这个问题在此解开了,这个问题是矛盾的,看看这块板子,你就知道了,嵌入式与安卓的完美结合,这就是未来的趋势。看到这个板子感触太深了,一言难尽。
级别: 侠客
金钱: 305 两
威望: 61 点
贡献值: 0 点
综合积分: 122 分
级别: 新手上路
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
这个开发板有链接吗
级别: 侠客
金钱: 525 两
威望: 105 点
贡献值: 0 点
综合积分: 208 分
这个开发板真的非常适合做智能家居。但是看到价格就跪了。。。PS:这个其实是移植的openwrt,我们自己的开发板也可以移植的
Powered by1120人阅读
STM32(12)
转载自康神博客:http://blog.csdn.net/u/article/details/
在LINUX下开始一个STM32工程
一、安装工具
安装交叉编译工具链arm-none-eabi安装make安装vim安装git&
二、 如何工作
2.1 需要作的工作
编写连接器脚本编写makefile
2.2 工作分析
2.2.1 makefile分析
当我们开发STM32时,会有两部分源码,一部分是由意法半导体提供的固件库,一部分是我们自己编写的用户层代码。 在开发过程中,除非我们进行版本更新否则固件库是不会改变的。而用户代码是会在开发过程当中增删减的。这样,我们可以首先把不变的固件库编译成静态库,之后的每次编译过程中只需要编译用户代码然后再把已经编译好的固件静态库链接进来就可以了,这样做可以大大节省编译时间,因为固件库结构本身是比较庞大和复杂的。
2.2.2 链接器脚本分析
在总控makefile编译完用户代码之后,就会将静态固件库链接进来,形成最终的镜像文件。这个链接过程由是链接器脚本控制完成的。&
连接器脚本主要是用于安排不同代码段在内存中的位置的,程序中的段属性可以大致分为只读的代码段(.textd段)和可读可写的数据段(.data段和.bss段)。而在嵌入式微控制器中,内存也主要分为两种:只读的FLASH和可读可写的RAM。我们可以把代码段放到FLASH中,而数据段放到RAM中。当然,如果RAM空间足够大的话,我们可以把整个镜像都放到RAM里面去。这里需要解释一下,一般来说我们烧录程序是烧录到FLASH内的,而不是RAM内,因为RAM是掉电易失的,而FLASH为非易失储存器。如果代码烧录到RAM内,在关机之后代码就没了。所以我们需要把整个镜像烧录到FLASH内,而后在BOOT阶段再拷贝那些原本被链接器安排到RAM的代码段拷贝到RAM里面去。总而言之,链接器脚本主要完成的工作是:安排好不同.o文件不同段所在的位置,并且解决符号引用问题。&
(注:关于链接的详细介绍,可以看我的)
2.3 分析结果
我们的工程应该需要编写:&
* 负责固件库编译的makefile&
* 负责用户代码编译和链接生成最终镜像的makefile&
* 负责链接过程中安排各个程序段的链接器脚本
三、开始工作
3.1 创建文工程目录
工程目录结构如图所示
|---project
|---include
|---ldscripts
下载固件库到lib文件夹中去并且解压备用
wget /st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/firmware/stm32f4_dsp_stdperiph_lib.zip
unzip stm32f4_dsp_stdperiph_lib.zip -d stm32f4_dsp_stdperiph_lib
###3.2 编写连接器脚本 首先创建一个.lds文件并且编辑之
cd ldscripts/ && touch STM32F407.lds && vim STM32F407.lds
定义机器架构为ARM,入口符号为Reset_Handler
1 OUTPUT_ARCH(arm)
2 ENTRY(Reset_Handler)
定义RAM区和FLASH区的起始地址与长度
RAM : ORIGIN = 0x, LENGTH = 112K
FLASH : ORIGIN = 0x, LENGTH = 1M
定义各个段的位置。&
为了加快程序运行速度,将中断向量表所在的isr段放到flash内,其他所有段都放到RAM内。并且安排整个镜像的加载地址是连续摆放的,这样可以避免镜像中出现空洞
9 SECTIONS
. = ALIGN(4);
.isr_vectors :
KEEP(\*(.isr_vectors))
. = ALIGN(4);
_eisr = .;
.text : AT (_eisr)
_stext = .;
. = ALIGN(4);
_etext = .;
.data : AT (__eisr+SIZEOF(.text))
_sdata = .;
\*(.data\*)
. = ALIGN(4);
_edata = .;
. = ALIGN(4);
_sbss = .;
. = ALIGN(4);
_ebss = .;
. = ALIGN(4);
_sstack = .;
\*(.stack);
. = ALIGN(4);
_estack = .;
3.3 编写Makefile
整个工程目录下,只有src、lib、arch三个子目录下有于源文件需要编译。为了结构层次清晰明了,这里采用总控Makefile配合各个源码子目录下Makefile的方式来完成整个编译过程。所以整个工程内一共有四份Makefile:&
* 工程根目录下的总控Makefile&
* src、lib、arch 子目录下的Makefile
在开始编写之前,先在工程目录和src、lib、arch目录下分别都创建一个名为Makefile的文件,再在工程目录下创建一个rules.mk文件,用于提炼四个Makefile文件中的相同代码。
cd project && touch Makefile src/Makefile lib/Makefile arch/Makefile
####3.3.1 总控Makfile 总控Makefile的主要职责是定义所有Makefile都要使用到的全局变量,并且控制各个子目录下的Makefile行为。
1 #定义通用符号
3 TypeOfMCU = STM32F40_41xxx
4 PROJNAME = STM32F407
定义各个通用符号,Q = @表示编译过程中执行的命令不显示出来。TypeOfMCU定义了处理器系列。PROJNAME则为工程名字。
6 #定义源码目录
7 TOPDIR = $(shell pwd)
8 LIBDIR = $(TOPDIR)/lib/stm32f4_dsp_stdperiph_lib
9 DRIVER_LIB_DIR = $(LIBDIR)/STM32F4xx_DSP_StdPeriph_Lib/Libraries/STM32F4xx_StdPeriph_Driver
10 CMSIS_LIB_DIR = $(LIBDIR)/STM32F4xx_DSP_StdPeriph_Lib/Libraries/CMSIS
11 ARCHDIR = $(TOPDIR)/arch
13 USERSRC = $(TOPDIR)/src
14 DRIVER_LIB_SRC = $(DRIVER_LIB_DIR)/src
15 CMSIS_SRC = $(CMSIS_LIB_DIR)/Device/ST/STM32F4xx/Source/Templates
为了方便起见,这里定义了各个源码目录,以免每次都要重写各个路径。
16 #定义交叉编译器
17 CROSS_COMPILE = arm-none-eabi-
18 CC = $(CROSS_COMPILE)gcc
19 LD = $(CROSS_COMPILE)ld
20 AR = $(CROSS_COMPILE)ar
21 OBJCOPY = $(CROSS_COMPILE)objcopy
这里需要定义交叉编译器,一来方便读写,二来可以方便以后拓展,如果换到其它的编译器,只需要在这里修改即可。
23 INCLUDE = -I $(TOPDIR)/inc
24 INCLUDE += -I $(CMSIS_LIB_DIR)/Include
25 INCLUDE += -I $(DRIVER_LIB_DIR)/inc
26 INCLUDE += -I $(CMSIS_LIB_DIR)/Device/ST/STM32F4xx/Include
28 OBJCFLAGS = --gap-fill=0xff
29 CFLAGS = $(INCLUDE) -g -O2 -Wall -mcpu=cortex-m4 -mthumb
31 #编译宏选项
32 CFLAGS += -D$(TypeOfMCU)
33 CFLAGS += -DVECT_TAB_FLASH
34 CFLAGS += -D&assert_parm(expr)=((void)0)&
35 CFLAGS += -DUSE_STDPERIPH_DRIVER
36 ARFLAGS = cr
37 LDFLAGS = -Bstatic -T $(TOPDIR)/ldscripts/$(PROJNAME).lds -N
以上定义了编译选项、链接选项,格式转化选项。因为在这个工程里大量使用了GNU make的隐含依赖链,所以编译选项必须定义为CFLAGS。
39 LIBS = $(LIBDIR)/libstm32.a
40 LIBS += $(USERSRC)/libapp.a
41 OBJS := $(ARCHDIR)/startup.o
这三句定义了lib、src、arch目录下的Makefile生成的目标。总控Makefile通过控制执行各个子目录下的Makefile从而得到这三个目标,最后将这三个目标链接形成最终的镜像。
46 .PHONY:all $(PROJNAME).bin $(PROJNAME).elf $(LIBS) $(OBJS)
第44行的export将所有定义的变量导出,以便各个子目录的Makefile使用。第46行则定义了将各个目标声明为伪目标,从而能地在每次执行make时强制检测检测各个子目录下的依赖关系变化。
47 all: $(PROJNAME).bin
49 $(PROJNAME).bin : $(PROJNAME).elf
$(OBJCOPY) $(OBJCFLAGS) @@ $@
52 $(PROJNAME).elf : $(OBJS) $(LIBS)
$(LD) $(LDFLAGS) $(OBJS) \
--start-group $(LIBS) --end-group -o $@
56 $(OBJS) $(LIBS):
$(Q) make -C $(dir $@)
总控Makefile最终生成的目标是(PROJNAME).bin这个二进制镜像文件,该文件由(PROJNAME).elf通过格式转化得来。而(PROJNAME).elf则由(OBJS)&(LIBS)通过链接得到。(OBJS)和$(LIBS)都由相应子目录下的Makefile生成。
3.3.2 src子目录Makefile
src/Makefile的唯一任务就是将src下的所有.c文件编译成为一个静态库libapp.a。具体代码如下:
1 SRC = $(wildcard $(USERSRC)/*.c)
3 OBJ = $(SRC:%.c=%.o)
4 DEP = $(SRC:%.c=%.d)
6 .PHONY:libapp.a
7 libapp.a : $(DEP) $(OBJ)
$(AR) $(ARFLAGS) $(USERSRC)/$@ $(OBJ)
10 sinclude $(TOPDIR)/rules.mk
11 sinclude $(DEP)
该Makefile比较简单,唯一需要说明的是第10行和第11行。第10行包含了工程目录下的rules.mk文件,第11行则包含了所有与每个.c文件对应的.d文件。rules.mk用于生成.d文件,rules.mk会为每个.c文件生成其对应的.d文件,.d文件记录了利用.c文件编译成.o文件的依赖关系。.o文件由GNU Make的隐含规则根据.d文件中的依赖关系编译生成,而最终生成libapp.a时只需要将所有.o文件打包即可。rules.mk代码如下:
1 %.d : %.c
$(Q) set -e;rm -f $@;\
$(CC) -MM $(CFLAGS) @@ & $@.$$;\
sed 's/\($(notdir $*)\)\.o[ :]*/\1.o $(notdir $@) : /g'
3.3.3 arch子目录Makefile
arch子目录下的Makefile与src/Makefile原理上一致,这里不做分析地列出代码如下:
1 obj = $(notdir $(OBJS))
2 dep = $(obj:%.o=%.d)
4 .PHONY:all
5 all: $(dep) $(obj)
7 sinclude $(TOPDIR)/rules.mk
8 sinclude $(dep)
3.3.4 lib子目录Makefile
arch子目录下的Makefile与src/Makefile原理上一致,这里不做分析地列出代码如下:
1 LIBSRC = $(wildcard $(DRIVER_LIB_SRC)/*.c)
2 LIBSRC += $(wildcard $(CMSIS_SRC)/*.c)
4 LIBOBJ = $(LIBSRC:%.c=%.o)
5 LIBDEP = $(LIBSRC:%.c=%.d)
7 libstm32.a: $(LIBDEP) $(LIBOBJ)
$(Q) $(AR) $(ARFLAGS) $(LIBDIR)/$@ $(LIBOBJ)
11 sinclude $(LIBDEP)
3.3.5 Makefile总结
该工程下的GNU make文件一共有五分,包括四份Makefile和一份rules.mk,其中工程目录下的Makefile作为总控Makefile,其它Makefile作为子Makefile被总控Makefile控制执行。每个Makefile的责任都是生成一个子模块,而总控Makefile的责任是将所有子模块链接成为最终的镜像文件。当用户在工程目录下键入一个make并且摁下回车键时,总控Makefile依次控制进入各个子目录并且在子目录下执行make指令,每个子目录下执行make指令时,会调用rules.mk生成.d文件,再根据.d文件描述的依赖关系去将该目录下的所有.c文件编译成.o文件,最后利用.o文件生成该子Makefile负责的模块。当所有子目录下的make指令都成功执行后,得到startup.o
libapp.a libstm32.a三个模块,总控Makefile这时通过LD将三个模块链接,并且进行格式转化,就得到了最终的.bin镜像。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:388656次
积分:8074
积分:8074
排名:第2197名
原创:399篇
转载:57篇
评论:140条
文章:30篇
阅读:12718
阅读:2134
文章:34篇
阅读:15918
文章:23篇
阅读:26441
文章:13篇
阅读:18193
文章:15篇
阅读:10779
文章:43篇
阅读:61196
文章:43篇
阅读:43955
文章:116篇
阅读:160956
(3)(20)(12)(28)(19)(18)(18)(24)(28)(50)(12)(17)(24)(37)(37)(82)(20)(7)(1)
扫一扫关注我的微信公众号在Linux下使用STM32CubeMX开发和调试STM32
因为最近需要做一些STM32的开发,而我大部分的其他开发都在Linux上,经常在Windows和Linux下切换感觉比较不方便,于是就研究了一下Linux下开发STM32的工具,顺便在这边做下记录。
使用的开发工具
软件平台:
Eclipse Luna
下载:https://eclipse.org/downloads/packages/release/luna/sr2
用于安装System Workbench for STM32插件,建议下载Eclipse IDE for C/C++ Developers版本。
System Workbench for STM32 (Eclipse插件)
下载:http://www.openstm32.org/Installing+System+Workbench+for+STM32+from+Eclipse?structure=Documentation
选择它是因为这个插件装上之后就将STM32的开发环境配置好了,使用起来很方便,而且STM32CubeMX直接可以生成适用于它的工程。该插件与Eclipse Luna兼容较好,与Eclipse Mars兼容性有点问题,其他Eclipse版本未测。
STM32CubeMX
下载:/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242?sc=microxplorer
这个是ST公司官方开发的用于初始化STM32外设驱动的软件。这款软件可以非常方便地生成高质量的硬件配置代码,使得STM32的开发可以专注于功能的实现。该软件目前只有Windows版,不过因为其实它是用Java编的,所以在Linux下可以正常运行。不过因为是用于Windows环境的,所以生成的工程需要做一些改动才能在Linux下正常使用,这个留待下文再讲。
另外,STM32CubeMX虽然有Eclipse插件,但那个插件只能在Windows下运行
ST-Link V2
这个是System Workbench官方支持的调试器。价格也比较便宜(盗版的非常便宜,正版的也不贵)。
STM32F407ZET6
应该大部分STM32的芯片的开发板都可以支持的。
操作系统:
Ubuntu 12.04 64位
System Workbench for STM32的安装与正常的Eclipse插件安装一样,就不讲了。值得注意的是Eclipse Luna需要OpenJDK 7的运行环境,我用的是Ubuntu 12.04,系统自带的是OpenJDK 6,需要安装一下,然后改一下Eclipse的启动参数(如果你没有修改系统的默认Java运行环境的话),即在eclipse安装目录下的eclipse.ini文件中加上:
/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin
如果你是Ubuntu 14.04及以上版本,就没必要加这一条了。
下面主要讲一下STM32CubeMX的安装。首先将STM32CubeMX下载下来(下载地址在前面给出的链接的最下面),解压缩之后应该能获得一个exe文件,不过这个文件不需要安装wine就可以运行。如果系统默认java版本是OpenJDK 6的话,运行以下语句:
sudo /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar /path/to/your/SetupSTM32CubeMX.exe
如果是OpenJDK 7及以上的话,直接运行:
sudo java -jar /path/to/your/SetupSTM32CubeMX.exe
后文将/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/省略,如果默认是OpenJDK 6的,请手动加上这个绝对路径。另外,请将/path/to/your/替换成你实际文件的路径。
然后就会出来一个安装界面,选择安装路径,然后安装。
安装完之后,在安装目录下,应该会有一个STM32CubeMX.exe的文件。运行:
java -jar /path/to/your/STM32CubeMX.exe
然后选择Help-&Install New Libraries,安装需要的支持库等内容,就可以用于开发了。在Updater Settings里面可以选择支持库的下载路径。
STM32CubeMX
新建一个工程,选择自己的芯片类型,配置好相应的管脚、时钟和外设。
在Project Settings中,将Toolchain/IDE选成SW4STM32。然后使用STM32CubeMX生成代码。将生成的代码拷到Eclipse的工作空间中。
关于STM32CubeMX的具体使用方法请参考其他资料。
System Workbench for STM32
接着,我们打开安装好System Workbench的Eclipse。选择File-&Import-&Existing Projects into Workspace,选择你的代码所在的路径,注意请不要勾选Copy Projects into Workspace。
接下来对工程进行一些配置。
选中当前工程,选择Projects-&Properities,在左侧列表选择C/C++ Build-&Settings,打开这个设置界面可能需要一些时间,请耐心等待。
&在Tool Settings-&MCU GCC Complier-&Symboles下,将
__weak=__attribute__((weak)) 改成 '__weak=__attribute__((weak))'
__packed=__attribute__((__packed__)) 改成 '__packed=__attribute__((__packed__))'
也就是说将这两个参数加上单引号
在Tool Settings-&MCU GCC Complier-&Includes下,将
Inc 改成 ../../../Inc
Drivers/STM32F4xx_HAL_Driver/Inc 改成 ../../../Drivers/STM32F4xx_HAL_Driver/Inc
Drivers/STM32F4xx_HAL_Driver/Inc/Legacy 改成 ../../../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
Drivers/CMSIS/Include 改成 ../../../Drivers/CMSIS/Include
Drivers/CMSIS/Device/ST/STM32F4xx/Include 改成 ../../../Drivers/CMSIS/Device/ST/STM32F4xx/Include
即路径前面都加上../../../,另外,如果路径中有反斜杠"\"的话也一律要替换为正斜杠"/"。
在Tool Settings-&MCU GCC Linker-&General下,将
..\STM32F407ZETx_FLASH.ld 改成 ../STM32F407ZETx_FLASH.ld
即将反斜杠替换为正斜杠。
然后在Build Artifact下的Artifact Name中的空格去掉。
通过以上设置,应该就可以编译通过了。
此时,在工程管理窗格,在Applications文件夹上右击,选择Index-&Freshen All Files,就可以消除错误提示了。
然后继续,在Projects-&Properities的设置下,选择Run/Debug Settings,选择New-&Ac6 STM32 Debugging
此时会弹出定义新开发板的对话框,选择你的调试工具和接口以及开发板的名字。点击确定之后会自动生成一个调试配置文件。然后会弹出一个新的对话框。
在弹出的对话框中,在Debugger选项卡中,选择Use Local Script,然后选择刚刚弹出的对话框生成的cfg文件,选择确定(这一步通常不用做,已经默认配置好了)。
然后选择Run-&Debug as-&Ac6 STM32 C/C++ Application,就可以正常启动调试了。这个软件调试的一个不足之处在于没有类似于Keil的Live Watch功能,也就是说变量的值必须要等你手动将程序暂停或设置断点之后才能看到,而不能实时更新,虽然官方说这项功能他们在开发中了。
如果使用J-Link该怎么辦?
事实上,System Workbench for STM32也支持使用J-Link进行调试,使用方法也很简单。
工程配置之类的和前面一样做就可以了,将工程配置完后关闭Eclipse,然后用文本编辑器打开软件自动生成的调试配置文件,它是位于&工程名&/SW4STM32/&工程名 Configuration&文件夹下的一个.cfg文件,它的内容通常类似于以下内容:
1 # This is an Example board with a single STM32F407ZETx chip.
2 # Generated by System Workbench for STM32
4 source [find interface/stlink-v2.cfg]
6 set WORKAREASIZE 0x20
7 transport select "hla_jtag"
8 set CPUTAPID 0x4ba00477
10 source [find target/stm32f4x_stlink.cfg]
12 # use hardware reset, connect under reset
13 reset_config srst_only srst_nogate
将其改成类似下面的内容:
1 # This is an Example board with a single STM32F407ZETx chip.
2 # Generated by System Workbench for STM32
4 source [find interface/jlink.cfg]
6 set WORKAREASIZE 0x20
7 # transport select "hla_jtag"
8 set CPUTAPID 0x4ba00477
10 source [find target/stm32f4x.cfg]
12 # use hardware reset, connect under reset
13 reset_config srst_only srst_nogate
即将第4行的stlink-v2改成jlink;
将第7行注释掉;
将第10行的_stlink删掉。
这样就可以了。另外,如果要使用J-Link调试的话,注意先要到Segger官网下载安装J-Link的Linux驱动。
STe2eCommunities,主题&STM32CubeMX as Eclipse plugin on Linux 64 machine&,hochreutiner.olivier的回答:/public/STe2ecommunities/mcu/Lists/STM32Java/STM32CubeMX%20as%20Eclipse%20plugin%20on%20Linux%2064%20machine
OpenSTM32 Community,&Importing a STCubeMX generated project&:http://www.openstm32.org/Importing+a+STCubeMX+generated+project?structure=Documentation
OpenSTM32 Community,主题&Error 258 on CubeMX imported project&,riuson的回答:http://www.openstm32.org/tiki-view_forum_thread.php?comments_parentId=700
STe2eCommunities,主题&how to use J-Link in Ac6 System Workbench for STM32 environment?&,shahrzad的回答:/public/STe2ecommunities/mcu/Lists/STM32Java/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2FSTM32Java%2Fhow%20to%20use%20J-Link%20in%20Ac6%20System%20Workbench%20for%20STM32%20environment&FolderCTID=0x78C69A9EB459D758F9A0E3A95BAE80209ADC21
更多相关文章
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-avr有所差异,这里对linux下中断服务程序编写做个简要介绍.
个人原创,转载请注明出 ...
摘要:DTS图形数据系统是DTS(调度员培训仿真系统Dispatcher Training Simulator)的一个重要组成部分,文中提出了一种基于Linux,并运用Qt对DTS图形数据系统进行完善的新方案,此方案价格低廉.硬件兼容性好.编程简便.维护方便.可移植性强.结构清晰.运行速度快,可为E ...
LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python
一键安装方法如下:
注:Ubuntu下可使用sudo su 命名切换到root用户.
开始安装之前,先执行EZHTTP安装前的准备工作.
一.使用screen(可选) 由于编译安装Ngi ...
C++版本的程序: (1)头文件不变,还是SmsWBS.h (2)Makefile文件: GSOAP_ROOT=/usr/local/gSOAP WSNAME0=soap WSNAME=SmsWBS CC=g++ -g -DWITH_NONAMESPACES INCLUDE=-I $(GSOAP_R ...
目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤
三.详细的搭建过程 1.安装eclipse IDE for C/C++ developers 2.安装交叉编译链arm-none-eabi-
在我刚开篇写这一系列随笔的时候,就有人问:在Linux下进行Java开发究竟有什么优势,如果都是一样安装JDK.安装Eclipse,那和Windows下开发有什么区别?这个问题问得很尖锐,的确,我们似乎根本没有必要把我们的工作从Windows中转移到Linux中来. 在Linux系统中进行开发,和在 ...
Ubuntu linux下安装Eclipse PDT步骤 在Ubuntu Linux下进行PHP开发,首先可以安装搭建 LAMP 环境和 phpmyadmin 这个Mysql 数据库管理工具,之后选择一个FTP传工具如:Filezilla,最后我们还要选择PHP开发工具,Ubuntu自带的Gedit ...
据了解,在Linux下的Java开发很多时候都比较喜欢使用vim + 插件,反而很少使用Eclipse,但是我是第一次使用Linux来进行Java编程,就什么都体验下啦,好啦,废话不多说,直接开始啦. Eclipse下载 1.进入Eclipse下载网址 : http://www.eclipse.or ...
条款27:尽量少做转型动作 单一对象可能拥有一个以上的地址!
Flask 中 @app.before_request.@app.after_request 和 @app.teardown_request flask中又两种 context(上下文),分别是 applicatio ...
我们从所有的连接中,提取每次新建立的连接connection=new,并对他们做nth的标记,将这些连接中相关的奇数(odd)包和偶数(even)包分离开,并走两个不同的网关(GatewayA与GatewayB)出去
问题现象:xcode 的项目在进行真机调试时,xcode不能识别真机,
调测情况分析:
1 设备正常,itunes 能够识别
2 在apple d
[ ~]# service heartbeat start node2配置完了后启动heartbeat服务 Starting High-Availability services: 2009/04
&?php //在::操作符的左边写上类的名称来静态地访问某个成员,这样就可以避免创建类的实例.//这样不仅可以省略掉实例化类的代码,而且还会更高效,因为类的每个实例都会占用一小部分的系统资源.class My ...
现在REST 服务越来越多,已经成为一个很好的接口方式. 但client 我们怎么做呢?最先想到的直接的辦法是使用javascript 但如果是CS的或服务器间的,再想到的就是Apache Jakarta Commo
杜芬振子 Duffing oscillator是一个描写强迫振动的振动子,由非线性微分方程 ...
通过suselinux单用户模式修改root密码方法如下:&?xml:namespace prefix=&o& ns=&urn:schemas-microsoft-com:offi ...
扯淡 什么是Cordova ? 网上查询的说明: Cordova是贡献给Apache后的开 ...

我要回帖

更多关于 魅蓝note3屏幕分辨率 的文章

 

随机推荐