OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 27051|回复: 42

那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink

[复制链接]

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
发表于 2016-4-30 10:14:52 | 显示全部楼层 |阅读模式
本帖最后由 秋之前 于 2016-4-30 20:44 编辑

上一篇:那些免费好用的STM32的IDE一之EmblockEclipse搭建stm32+jlink开发环境全攻略[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]        
[size=10.5000pt]前言:为什么需要这样的开发环境?
[size=10.5000pt]1、[size=10.5000pt]免费
[size=10.5000pt]2、[size=10.5000pt]跨平台
[size=10.5000pt]3、[size=10.5000pt]自由度高
[size=10.5000pt]4、[size=10.5000pt]Eclipse代码提示功能强大,MDK弱爆了
[size=10.5000pt]注:本人原创,转载注明作者------by秋之前
一、工具:[size=10.5000pt]1jre1.7
[size=10.5000pt]注意:如果电脑系统是64位的,请下载64位的
[size=10.5000pt]2eclipse+CDT
[size=10.5000pt]地址:http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/mars/2/eclipse-cpp-mars-2-win32-x86_64.zip
[size=10.5000pt]注意:不管你下的eclipse是否自带CDT,建议重新安装一遍CDT,自带的不一定是最新的,可能会导致一些问题
[size=10.5000pt]3GNU eclipse ARM插件
[size=10.5000pt]地址:https://sourceforge.net/projects/gnuarmeclipse/
[size=10.5000pt]4GNU ARM Toolchain
[size=10.5000pt]地址:https://launchpad.net/gcc-arm-embedded/
[size=10.5000pt]5Jlink驱动
[size=10.5000pt]地址:https://www.segger.com/jlink-software.html
[size=10.5000pt]
[size=10.5000pt]安装提醒:
[size=10.5000pt]1、[size=10.5000pt]由于并不需要用到java,所以只需用安装jre即可,不用安装jdk
[size=10.5000pt]2、[size=10.5000pt]安装GNU ARM Toolchain时勾选将目录加入环境变量的选项,否则请自己添加bin目录到环境变量中
[size=10.5000pt]3、[size=10.5000pt]现状Jlink驱动和GNU ARM Toolchain,然后再装Eclipse,接着装CDT,在接着装GNU eclipse ARM插件。
[size=10.5000pt]4、[size=10.5000pt]插件安装的时候,取消掉需要联网的地址。否则安装比较慢。
[size=10.5000pt]
二、新建工程:[size=10.5000pt]点击File->New->C++ project
[size=10.5000pt] 图片1.jpg
[size=10.5000pt]
[size=10.5000pt]然后我们会发现下图的界面,在这个界面中有STM32等工程的现成选项,右侧还有该工程支持的编译链,如Cross Arm gcc,根据这个我们就可以判断前面的软件安装成功了。此时我们可以直接点击新建一个基于STM32模版的工程,也可以创建一个空的工程,然后自己配置工程结构,就像我们使用MDK一样。此处我们以创建空工程为例子。
[size=10.5000pt]点击Empty project,输入工程名和路径,Next
[size=10.5000pt]
[size=10.5000pt] 图片2.jpg
[size=10.5000pt]选择编译链,由于我们安装的是GNU ARM的工具链,所以选择对应的,然后指定工具链的路径。
[size=10.5000pt] 图片3.jpg
[size=10.5000pt]创建好了之后,我们就可以看到下图的效果了,可以看到,这个工程完完全全是一个空的。现在我们向这个工程中添加文件,
[size=10.5000pt]
[size=10.5000pt]就像我们之前在MDK环境下配置模版一样,先创建四个文件夹
[size=10.5000pt] 图片4.jpg 图片5.jpg 图片6.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]然后从官方库文件中拷贝对应文件到该工程对应文件夹下。
[size=10.5000pt]需要注意的是,官方库文件中有一些文件是与编译环境相关的,官方提供的环境有一下几种
[size=10.5000pt] 图片7.jpg
[size=10.5000pt]我们通过比较后发现,TrueSTUDIOeclipse环境的工程文件格式是一样的,所以确定选用TrueSTDUIO工程的文件
[size=10.5000pt] 图片8.jpg
[size=10.5000pt]首先是启动文件
[size=10.5000pt] 图片9.jpg
[size=10.5000pt]然后还有链接文件
[size=10.5000pt] 图片10.jpg
[size=10.5000pt]这两个文件根据对应芯片容量决定。
[size=10.5000pt]文件拷贝完了后,将鼠标点到工程框中右键刷新,我们就可以看到工程结构更新了,如下图
[size=10.5000pt] 图片11.jpg
[size=10.5000pt]正如在MDK环境下开发我们需要配置define项,include包含项和debug项一样,在eclipse也要做这些工作。
[size=10.5000pt]
三、工程配置:[size=10.5000pt]点击在工程浏览器中选中该工程,然后点击project->properties选择项,
[size=10.5000pt] 图片12.jpg
[size=10.5000pt]
[size=10.5000pt]就会弹出如下对话框,在这个对话框中主要在setting中配置,首先看看Tool setting,该选项有四块,即汇编(Assembler)选项,C编译器选型,C++编译器选项,链接选项,每一块中preprocessor用来设置预编译的,即设置defineincludes用来设置路径包含的,所以启动文件等汇编文件要加到第一个选项块中,ld格式的链接文件要加到第四个块中
[size=10.5000pt] 图片13.jpg 图片14.jpg 图片15.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]上面设置好了后,由于创建工程时我们已经设置了编译器,所以这个地方应该是正确的,如下图
[size=10.5000pt] 图片16.jpg
[size=10.5000pt]
[size=10.5000pt]好了点击应用,OK
[size=10.5000pt]
四、开始编译:[size=10.5000pt] 图片17.jpg
[size=10.5000pt]然而立马就出现下面的问题。
图片18.jpg
[size=10.5000pt]找不到make文件,通过查资料我们可以知道GNU Toolchain中是不自带make工具的,但是make工具其实都是一样的,所以我们能否使用Eclipse自带的make工具呢?
[size=10.5000pt]当然可以:

[size=10.5000pt]同样打开工程设置,点击Tool Chain Editor,选择Builder工具为CDT内部Bbuilder
[size=10.5000pt] 图片19.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]然后重新编译,可以看到编译进度了,如果不行请先清楚编译,再编译一次。
[size=10.5000pt] 图片20.jpg
[size=10.5000pt]然而又出错了。
图片21.jpg
[size=10.5000pt]这个问题的大致意思是这两个指令的调用格式不正确,但是由于这两条指令是汇编指令,他的调用格式是由编译器决定的,我们怎么知道他的正确的调用格式呢?我们先通过搜索找到这条指令调用的地方。
[size=10.5000pt] 图片22.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]既然这条汇编指令的格式是由编译器决定的,那么我们怎么知道这条指令正确的格式呢?还记得之前创建工程时有现成的工程模版吗?我们可以创建一个现成的工程模版,然后编译发现这个现成的模版编译是没有问题。然后对比两个工程中的这条指令格式,我们发现了一个惊人的差异,如下图:
[size=10.5000pt] 图片24.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]好了,问题找到了,在这两条指令的=r中间加上一个&符号即可。两条指令中都要加。然后再编译
[size=10.5000pt]哈哈,编译通过,生成了可执行文件elfhex
图片25.jpg
[size=10.5000pt]然而我们将编译信息拉到右边后可以发现,编译没有问题,但是在链接时出现了问题。
图片26.jpg
[size=10.5000pt]即找不到Reset_Handler。怎么会找不到Reset_Handler呢,我们都知道Reset_Handler是在启动文件中定义了的,没有找到除非启动文件没有被编译。
[size=10.5000pt]
[size=10.5000pt]于是我们来看看编译输出的文件夹,即debug文件夹。
图片27.jpg 图片28.jpg
[size=10.5000pt]发现只有3个文件夹有输出,启动文件确实没有输出,为什么呢?初步怀疑是Eclipse没有识别启动文件。
[size=10.5000pt]
[size=10.5000pt]那么我们就需要知道eclipse究竟能够识别那些文件,我们打开窗体属性看看,即window->preferences:
[size=10.5000pt] 图片29.jpg
[size=10.5000pt]然后找到File Type,我们可以看到,软件能够识别的汇编文件拓展为*.S是大写的S,
图片30.jpg
[size=10.5000pt]而我们工程中的启动文件是小写的s,所以没有识别出来,我尝试将小写s格式添加进去发现添加失败,提示跟大写S重复,好吧,我们直接将启动文件改成大写S吧。
[size=10.5000pt] 图片31.jpg
[size=10.5000pt]
[size=10.5000pt]
[size=10.5000pt]然后再编译,OK编译成功,也没有链接的错误。大功搞成
[size=10.5000pt] 图片32.jpg
图片33.jpg
[size=10.5000pt]
五、开始调试:[size=10.5000pt]编译完成后,我们就要进行下载和调试了。首先进行调试的配置。
[size=10.5000pt]Run->Debug Configurations
[size=10.5000pt] 图片34.jpg
[size=10.5000pt]我们可以看到GDB SEGGER Jlink Debugging选项下面是空的,双击这个选项
[size=10.5000pt] 图片35.jpg
[size=10.5000pt]然后就新建了一个选项卡,设置debug的名称,调试的工程和源文件
[size=10.5000pt] 图片36.jpg 图片37.jpg
[size=10.5000pt]
[size=10.5000pt]切换到Debugger选项卡,此处才是关键。
[size=10.5000pt]在设置之前,我们普及一下关于调试的基本知识,这个只是不一定是标准的,只是我个人的一些理解。
[size=10.5000pt]我们都知道,调试实际就是我们的调试窗口与Jlink通讯,然后Jlink与开发板通讯,Jlink与开发板通讯是由Jlink GDBServerCL完成的,所以我们的调试窗口要与Jlink通讯,起始只需要与Jlink GDBServerCL通讯即可,那么是什么来代表这个调试窗口呢,那自然就是GNU工具链的GDB调试器了,所以我们整体的调试思路就清晰了,就是GNU GDBJlink GDBServerCL通讯,前者扮演客户端的角色,后者扮演服务器的角色。
[size=10.5000pt]好了,再来看看这个配置窗口,服务器设置自然选择Jlink GDBServerCL,而客户端自然选择GNU工具链中的GDB了,然后设置芯片型号,链接模式,传输速度等。
[size=10.5000pt] 图片38.jpg
[size=10.5000pt]为了保险,取消掉startup中的这连个选项
[size=10.5000pt] 图片39.jpg
[size=10.5000pt]好了,点击Debug开始调试,我们就可以看到我们的软件进入了调试模式,并且停留在了main函数的第一个有效行上面。
[size=10.5000pt] 图片40.jpg
调试界面基本都是一样的,watch窗口也能调出来。设置断点,全速运行都行。
[size=10.5000pt]如果想结束调试,只需要点击上方的红色方块即可,此时JlinkGDB会自动关闭,然后点击右侧的C/C++选项卡即可回到工程的编辑视图了。
[size=10.5000pt] 图片41.jpg
[size=10.5000pt]OK,整个教程到此结束

上传一个LED闪烁的例子:
Demo3.zip (3.95 MB, 下载次数: 1803)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

14

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-5-29
在线时间
15 小时
发表于 2016-4-30 13:22:02 | 显示全部楼层
为毛我这边出这个问题 ?? 无标题.png
回复 支持 2 反对 0

使用道具 举报

5

主题

14

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-5-29
在线时间
15 小时
发表于 2016-4-30 19:19:58 | 显示全部楼层
谢谢   这个问题解决了  但是又发生了另一个问题   您看看是怎么个回事


19:18:51 **** Incremental Build of configuration Debug for project test ****
Info: Internal Builder is used for build
arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g3 -Xlinker --gc-sections -Wl,-Map,test.map -o test.elf "APP\\ChassisAPP\\ChassisAPP.o" "APP\\main.o" "APP\\stm32f10x_it.o" "HAL\\Camera\\SOFT_SCCB.o" "HAL\\Chassis\\Chassis.o" "HAL\\delay\\delay.o" "HAL\\usart\\usart.o" "Libraries\\CMSIS\\CM3\\CoreSupport\\core_cm3.o" "Libraries\\CMSIS\\CM3\\DeviceSupport\\ST\\STM32F10x\\system_stm32f10x.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\misc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_adc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_bkp.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_can.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_cec.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_crc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_dac.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_dbgmcu.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_dma.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_exti.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_flash.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_fsmc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_gpio.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_i2c.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_iwdg.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_pwr.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_rcc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_rtc.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_sdio.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_spi.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_tim.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_usart.o" "Libraries\\STM32F10x_StdPeriph_Driver\\src\\stm32f10x_wwdg.o" "SAL\\PID\\pid.o"
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-exit.o): In function `exit':
exit.c.text.exit+0x2c): undefined reference to `_exit'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c.text._sbrk_r+0x18): undefined reference to `_sbrk'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-writer.o): In function `_write_r':
writer.c.text._write_r+0x24): undefined reference to `_write'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-closer.o): In function `_close_r':
closer.c.text._close_r+0x18): undefined reference to `_close'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-lseekr.o): In function `_lseek_r':
lseekr.c.text._lseek_r+0x24): undefined reference to `_lseek'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-readr.o): In function `_read_r':
readr.c.text._read_r+0x24): undefined reference to `_read'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-fstatr.o): In function `_fstat_r':
fstatr.c.text._fstat_r+0x20): undefined reference to `_fstat'
e:/program files (x86)/gnu tools arm embedded/5.3 2016q1/bin/../lib/gcc/arm-none-eabi/5.3.1/../../../../arm-none-eabi/lib\libg.a(lib_a-isattyr.o): In function `_isatty_r':
isattyr.c.text._isatty_r+0x18): undefined reference to `_isatty'
collect2.exe: error: ld returned 1 exit status

19:18:52 Build Finished (took 359ms)
回复 支持 1 反对 0

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-4-30 10:23:29 | 显示全部楼层
额,没想到导入word格式竟然成这样了,@正点原子@Admin ,@八度空间 ,求加精,如果可以帮我调一下格式把,谢谢
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-4-30 10:52:17 | 显示全部楼层
牛叉,谢谢分享!!!
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-4-30 17:49:34 | 显示全部楼层
wen448191786 发表于 2016-4-30 13:22
为毛我这边出这个问题 ??

你的启动文件用错了,不能用MDK的启动文件,要用TrueSTUDIO的启动文件,我教程中已经说了,原因就是ARM ASM的标准和GNU ARM ASM的汇编标准不一样,MDK用的ARM标准的汇编,而GNU工具链用的GNU ARM汇编标准
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-4-30 20:07:49 | 显示全部楼层
wen448191786 发表于 2016-4-30 19:19
谢谢   这个问题解决了  但是又发生了另一个问题   您看看是怎么个回事

1、你的整个工程中出了启动文件外,是否还有其他的汇编文件,如果有,格式是否正确,包括后缀和GNU ARM ASM标准。
2、你看看你的debug文件夹中是不是所有的源码文件都能够找到对应的.o文件,如果没有,要么路径没有包含正确,要么文件没有识别出来,再要么你在工程中将这个文件设置成了禁止编译的属性。怎么查看是否有禁止编译的属性,请查看上面的教程文件,我补充上去。
3、清楚build,然后宠幸build试试
4、如果还是不行,你再用他自己提供的模板创建一个工程看看
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-5-29
在线时间
15 小时
发表于 2016-4-30 20:35:35 | 显示全部楼层
您要不看看我的工程   
   
您说的方法我正在弄   

另外我建了一个led stm32f10x的模板   弄了一下 还有一个错误   
Description        Resource        Path        Location        Type
Program "echo" not found in PATH        test1                Project Properties, C++ Preprocessor Include.../Providers, [CDT GCC Built-in Compiler Settings Cross ARM] options        C/C++ Scanner Discovery Problem

test.zip

10.98 MB, 下载次数: 390

回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-4-30 21:03:00 | 显示全部楼层
wen448191786 发表于 2016-4-30 20:35
您要不看看我的工程   
   
您说的方法我正在弄   

你加qq群
STM32兴趣交流 133596116
回复 支持 反对

使用道具 举报

6

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
463
金钱
463
注册时间
2016-1-26
在线时间
72 小时
发表于 2016-5-26 23:53:39 | 显示全部楼层
太棒了,原子哥还没加精吗
回复 支持 反对

使用道具 举报

6

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
463
金钱
463
注册时间
2016-1-26
在线时间
72 小时
发表于 2016-5-27 12:49:50 | 显示全部楼层
楼主是c++编程吗?
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2015-12-3
在线时间
71 小时
发表于 2016-5-27 13:31:24 | 显示全部楼层
太神了!!!
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-6-8 13:02:44 | 显示全部楼层
本教程还遗留了另外的一个问题,现在已经解决,那就是关于C标准库函数的支持,按照上面的教程做,是无法使用标准C库函数的,比如printf,解决方法是参考自带的模板使用newlib来解决,当然为了能够使这个newlib正常工作,当然也是做了不少的修正的,现在已经测试完毕,printf之类的库函数完美使用,同时我还测试了一个FreeRTOS的操作系统移植,也没有任何问题,有空再更新一下吧
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-6-8 13:05:32 | 显示全部楼层
这是Eclipse+STM32+JLINK+printf可用的demo
链接:https://github.com/qiuzhiqian/Eclipse_STM32_DEMO
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-6-8 13:06:43 | 显示全部楼层
这是Eclipse+STM32+JLINK+printf+FreeRTOS的Demo
链接:https://github.com/qiuzhiqian/Eclipse_STM32_FreeRTOS
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2016-7-1
在线时间
6 小时
发表于 2016-7-2 18:20:22 | 显示全部楼层
好贴,能研究一下在SI下建工程和编译吗?
回复 支持 反对

使用道具 举报

5

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-8-13
在线时间
13 小时
发表于 2016-8-3 11:46:51 | 显示全部楼层
楼主,有没有M4的Demo,发一份给我可以吗,我弄了好久,编译也通过了,但是下载到板子上就是没有预期的效果
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-9-3 21:43:50 | 显示全部楼层
不错,COOL
回复 支持 反对

使用道具 举报

40

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2013-10-23
在线时间
94 小时
发表于 2016-9-3 23:53:46 | 显示全部楼层
楼主这个格式咋办,要不给大家分享个pdf呗。
http://xiaomeige.taobao.com。做最用心的FPGA学习板和教程资料
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-12-8
在线时间
4 小时
发表于 2016-9-8 10:08:10 | 显示全部楼层
好复杂,工具还是工具
回复 支持 反对

使用道具 举报

0

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2014-6-25
在线时间
71 小时
发表于 2016-10-10 16:09:11 | 显示全部楼层
牛XX,之前我弄了好久,但是就卡在debug上
回复 支持 反对

使用道具 举报

3

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2016-1-16
在线时间
15 小时
发表于 2016-10-10 17:20:22 | 显示全部楼层
可以 可以 收藏了
回复 支持 反对

使用道具 举报

5

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2016-8-5
在线时间
158 小时
发表于 2016-10-10 20:29:50 | 显示全部楼层
等学完了老师的教程就换下工具试下、、哈哈
回复 支持 反对

使用道具 举报

0

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-12-8
在线时间
21 小时
发表于 2016-10-11 12:33:57 | 显示全部楼层
代码自动补全有么,
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-11-22
在线时间
9 小时
发表于 2016-11-22 14:10:13 | 显示全部楼层
求助大神,在Eclipse下如何设置ROM分区呢?比如我的FLASH大小是64k,我想在中间的第33K的flash保存有自己的数据,在Keil下可以设置
IROM1:0x08000000    SIZE:0x8000
IROM2:0x08008400    SIZE:0x7C00
这样中间的1K就可以保存自己的数据
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-11-25 16:02:28 | 显示全部楼层
坐着勺子去旅游 发表于 2016-11-22 14:10
求助大神,在Eclipse下如何设置ROM分区呢?比如我的FLASH大小是64k,我想在中间的第33K的flash保存有自己的 ...

可以自定义文件的编译地址和jlink的下载地址
编译地址修改ld连接文件的flash起始值和大小
下载地址可以修改jlink的loadfile指令的下载地址
这部分的内容近期会更新出来
另外eclipse的第二篇出来了:http://www.openedv.com/thread-89312-1-1.html
欢迎关注
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-9-1
在线时间
14 小时
发表于 2016-12-3 20:00:41 | 显示全部楼层
楼主你好,这个问题是怎么回事E:\QQ截图20161203195852.png
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2016-9-1
在线时间
14 小时
发表于 2016-12-3 20:01:49 | 显示全部楼层
老男孩 发表于 2016-12-3 20:00
楼主你好,这个问题是怎么回事

楼主你好,这个问题是怎么回事
QQ截图20161203195852.png
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-11-22
在线时间
9 小时
发表于 2016-12-13 10:51:49 | 显示全部楼层
秋之前 发表于 2016-11-25 16:02
可以自定义文件的编译地址和jlink的下载地址
编译地址修改ld连接文件的flash起始值和大小
下载地址可以 ...

问题已解决,谢谢楼主
回复 支持 反对

使用道具 举报

头像被屏蔽

65

主题

277

帖子

0

精华

高级会员

Rank: 4

积分
674
金钱
674
注册时间
2013-8-11
在线时间
29 小时
发表于 2016-12-13 13:07:15 | 显示全部楼层
谢谢楼主!!!
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2015-10-11
在线时间
71 小时
发表于 2016-12-14 02:45:32 | 显示全部楼层

能否请问一下,您怎么解决的....
可以教一下吗...

感谢您!!!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-11-22
在线时间
9 小时
发表于 2016-12-14 10:20:51 | 显示全部楼层
teslaliu 发表于 2016-12-14 02:45
能否请问一下,您怎么解决的....
可以教一下吗...

首先添加FLASH分区,如果是按楼主教程建的工程就是在stm32_flash.ld里修改
比如将:
[mw_shl_code=asm,true]/* Specify the memory areas */
MEMORY
{
  FLASH (rx)      : ORIGIN = 0x08000000, LENGTH = 64K
  RAM (xrw)       : ORIGIN = 0x20000000, LENGTH = 8K
  MEMORY_B1 (rx)  : ORIGIN = 0x60000000, LENGTH = 0K
}
[/mw_shl_code]

修改为:
[mw_shl_code=asm,true]/* Specify the memory areas */
MEMORY
{
  FLASH0 (rx)      : ORIGIN = 0x08000000, LENGTH = 32K
  FLASH (rx)      : ORIGIN = 0x08008400, LENGTH = 31K
  RAM (xrw)       : ORIGIN = 0x20000000, LENGTH = 8K
  MEMORY_B1 (rx)  : ORIGIN = 0x60000000, LENGTH = 0K
}[/mw_shl_code]

然后,将中断向量表等启动代码放在FLASH0里,其他代码啥的放在FLASH里
比如将:
[mw_shl_code=asm,true] /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH
[/mw_shl_code]

修改为:
[mw_shl_code=asm,true] /* The startup code goes first into FLASH */
  .isr_vector :
  {
    . = ALIGN(4);
    KEEP(*(.isr_vector)) /* Startup code */
    . = ALIGN(4);
  } >FLASH0
[/mw_shl_code]

就可以了,你可以看一下编译出来的HEX文件,中间0x8008000到0x8008400是否有空出来
用工具自带的模板建的工程也是同样修改,就是文件不同,都是.ld文件。
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-12-14 11:00:48 | 显示全部楼层
坐着勺子去旅游 发表于 2016-12-14 10:20
首先添加FLASH分区,如果是按楼主教程建的工程就是在stm32_flash.ld里修改
比如将:
[mw_shl_code=asm, ...

我通常是直接修改flash,没有必要重新定义一个flash出来 1111111111.png
所以后面的向量也不需要修改了,但是要记得在应用程序中还是要做向量的偏移的
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-12-14 11:24:47 | 显示全部楼层
关于“那些免费好用的STM32的IDE”系列教程的概述:
1、第一篇为coldblock的嵌入式版教程,
即“那些免费好用的STM32的IDE一之Emblock”,已发布
地址:http://www.openedv.com/thread-73485-1-1.html
2、第二篇为eclipse系列第一部分
即“那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink”,已发布
地址:http://www.openedv.com/thread-73543-1-1.html
3、第三篇为eclipse高级篇,解决printf等标准库的支持问题,
即“那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(高级篇)”,已发布。
地址:http://www.openedv.com/thread-89312-1-1.html
4、第四篇为eclipse进阶篇(一),解决编译链的优化选项问题,降低生成文件大小,同时解决在不用调试的情况下实现一键下载的问题,待发布
5、第五篇为eclipse进阶篇(二),解决自定义程序的flash和ram的起始地址和空间大小的设置,实现bootloader和app的flash分配问题、待发布
6、第六篇为makefile+stm32篇,教你如何使用makefile构建自己最小最高效最简洁最自由的开发环境,待发布
以上是本人当前已完成的教程,只是有些还没有发布出来,有空更新,后面有什么规划待定。
如果需要提前了解教程:可以直接添加本人qq:1017621406或者QQ群:STM32兴趣交流 133596116
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-11-22
在线时间
9 小时
发表于 2016-12-15 15:41:51 | 显示全部楼层
秋之前 发表于 2016-12-14 11:24
关于“那些免费好用的STM32的IDE”系列教程的概述:
1、第一篇为coldblock的嵌入式版教程,
即“那些免费 ...

期待楼主的教程!!
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2015-10-11
在线时间
71 小时
发表于 2016-12-16 15:10:30 | 显示全部楼层
感谢两位前辈的分享,已经搞清楚了,修改ld还是最直接了,谢谢你们...

看了秋之前大哥的规划教程,著实让人好期待,希望能赶快看到...

说到qq...我一直注册不成功....
真的是...
回复 支持 反对

使用道具 举报

8

主题

570

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2908
金钱
2908
注册时间
2016-5-13
在线时间
184 小时
发表于 2017-1-4 15:59:32 | 显示全部楼层
牛叉叉,楼主真乃神人,无私奉献的精神让人感动啊,谢谢分享!!!谢谢,谢谢,谢谢。
回复 支持 反对

使用道具 举报

4

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-4-9
在线时间
6 小时
发表于 2017-2-19 20:43:57 | 显示全部楼层
eclipse下移植ucos,os_cpu_a.asm这个文件编译总是报bad instruction、junk at end of line, first unrecognized character等错误,共90多个,应该是os_cpu_a.asm这个汇编文件是ARM ASM标准的,不是GUN ARM ASM标准的吧?折腾了好久,怎么解决呢?
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2017-2-21 11:09:27 | 显示全部楼层
QQ973415045 发表于 2017-2-19 20:43
eclipse下移植ucos,os_cpu_a.asm这个文件编译总是报bad instruction、junk at end of line, first unrecog ...

找ucos的源码,里面有移植好的gcc版本的asm文件,替换就行
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-8-8
在线时间
3 小时
发表于 2018-8-9 10:00:39 | 显示全部楼层
楼主,我用的st-link v2 调试的,调试f1没有问题,调试f4就不行了,好像是f4的低功耗模式会让openocd 断开连接,这怎么搞?
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-4-23 09:51:40 | 显示全部楼层
wen448191786 发表于 2016-4-30 19:19
谢谢   这个问题解决了  但是又发生了另一个问题   您看看是怎么个回事

你的这个是缺少arm gcc的syscall文件。需要重新定义这些文件,毕竟gcc arm 和mdk是不一样的
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-4-23 09:53:40 | 显示全部楼层
秋之前 发表于 2016-6-8 13:06
这是Eclipse+STM32+JLINK+printf+FreeRTOS的Demo
链接:https://github.com/qiuzhiqian/Eclipse_STM32_Fre ...

不错!!!
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-4-23 09:54:01 | 显示全部楼层
秋之前 发表于 2016-6-8 13:05
这是Eclipse+STM32+JLINK+printf可用的demo
链接:https://github.com/qiuzhiqian/Eclipse_STM32_DEMO

不错!!!
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-4-23 09:58:34 | 显示全部楼层
坐着勺子去旅游 发表于 2016-12-14 10:20
首先添加FLASH分区,如果是按楼主教程建的工程就是在stm32_flash.ld里修改
比如将:
[mw_shl_code=asm, ...

MEMORY_B1 请问这个是什么区域啊??谢谢!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 23:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表