你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用Visual Studio+VisualGDB开发ARM,告别keil  

[复制链接]
Stm32McuLover 发布时间:2016-5-27 20:47

" d+ a9 a; m3 qMDK5.24a最新版(2017.7)免费下载
+ ?9 @* t3 `" }% Y5 E* M8 u* p. X8 t5 [

0 a. E7 h8 c% M1 G分享一神器给大家,使用Visual Studio+VisualGDB开发ARM,告别keil,用过visual stdio的都知道,不管是项目管理功能还是智能代码提示都秒杀keil,今天分享给大家的名叫VisualGDB的插件正好解决了这个需求。先来句官网(http://visualgdb.com/?features=embedded)的介绍:1 h2 l5 P+ j5 ?8 x9 N: O7 j
1000+ modern devices. One IDE.
VisualGDB automatically installs all necessary tools and code libraries to get your first project working with just a few mouse clicks. It supports STM32, Freescale Kinetis, NXP LPC, TIVA, MSP430, ESP8266 and many other devices.
Simply select your device in the wizard, connect the debug probe and you can start stepping through your first project.
支持STM32,飞思卡尔Kinetis,NXP LPC,MSP430等微控制器开发。
来个截图吧:
搜狗截图20160527204324.png 22.png
功能强大,最重要的是支持STM32CubeMX图形化配置工具,支持STM32最新的HAL库和传统3.5库,STlink等调试工具,例程丰富。英语不好的童鞋借着在线翻译也能轻松上手,例程很多。

1 a( B8 D5 O# D. K
收藏 17 评论68 发布时间:2016-5-27 20:47

举报

68个回答
liuyangzys 回答时间:2017-3-6 10:44:55
本帖最后由 liuyangzys 于 2017-3-6 10:50 编辑
' U1 y6 ?+ |  Z7 C
& n; o' P4 L9 M5 Y/ y求教一个问题啊。我用的板子是stm32f405rg,0x8000000到0x8010000段存着bootloader,0x8010000后存着主程序,那么主程序的工程我应该修改哪些东西来做好这个偏移量?
  1. SCB->VTOR = FLASH_BASE | 0x10000;
复制代码
这个已经在系统初始化设置写了。貌似makefile文件和lds文件还需修改一些东西。
  1. //* Generated by LinkerScriptGenerator [http://visualgdb.com/tools/LinkerScriptGenerator]
    : {- i+ W( u  I6 y& e
  2. * Target: STM32F405RG
    3 V! J7 o7 ~* i/ ?1 G
  3. * The file is provided under the BSD license.! L* J0 f( z+ _* ]8 d0 j
  4. */
    ( N( K2 k8 A( x+ x

  5. 1 u/ r* \+ N4 u0 r
  6. ENTRY(Reset_Handler)
    : |+ p9 K' n9 N4 x: z6 t  ~. w' l
  7. 3 m$ Y6 y/ `! X9 y4 c5 G3 c' ]
  8. MEMORY
    , {- i2 j& M) T4 ]* ]+ t
  9. {//* 这里改了一下,应该还有别处需要修改*/
    0 w4 k& h6 Q. w6 h
  10. FLASH (RX)   : ORIGIN = 0x08000000 + 0x10000, LENGTH = 1M7 w( i7 p. L7 e3 \1 g, k- u
  11.         SRAM (RWX)   : ORIGIN = 0x20000000, LENGTH = 128K
    0 p7 p6 X, j2 @- D. b4 L% ?
  12.         CCMRAM (RWX) : ORIGIN = 0x10000000, LENGTH = 64K
    * R' `  U  J' Q7 b
  13. }0 y' H+ c8 g0 ^

  14. 4 a& S* h# C7 x% `
  15. _estack = 0x20020000;7 t  y' B& z" w; A0 p8 ?& f
  16. / ^2 j! V& B; b1 }& z/ H# y* f
  17. SECTIONS
    3 j: N& Z; ~/ {
  18. {
    . k4 s6 q1 k4 h9 C( D
  19.         .isr_vector :
    1 ~2 v! }+ ?. [  Q
  20.         {
    5 B' |9 w# ^3 B5 e& {' p8 {' T3 k
  21.                 . = ALIGN(4);/ h: y2 ~1 \' ?# d' q: c# `
  22.                 KEEP(*(.isr_vector))3 w- Q4 R* n4 ?2 l
  23.                 . = ALIGN(4);
    , K# Q3 H, {" i0 S9 ]( ^
  24.         } > FLASH
    4 O& ^! j% T& q8 q) U  t' A

  25. % h/ Y8 }% D0 d8 B5 m
  26.         .text :
    - n3 e' D' ~7 X, a, N# `3 Y) |' S
  27.         {
    + ?( M7 ^2 C: n& c+ I
  28.                 . = ALIGN(4);
    , \1 ^7 q6 g" \9 m" W* `
  29.                 _stext = .;
    0 Y- t6 [/ g: z  V/ @
  30. , b4 Z" \2 ?/ X+ t: x
  31.                 *(.text)
    ( v0 N! j8 ?; X: S8 ^& w% G! m& z" h8 `
  32.                 *(.text*)
    ! n7 j( o: S' j" E; J# o) e
  33.                 *(.rodata)
    / Q( `) m$ n6 C* f8 H& s
  34.                 *(.rodata*)& R& Q1 |% b1 a) C
  35.                 *(.glue_7)
    ; y/ q" n# K+ n9 Y5 Y
  36.                 *(.glue_7t)- Q! U: I" U% d  D7 e
  37.                 KEEP(*(.init))8 X; v$ G: @( S' \' D, M: [/ l7 z
  38.                 KEEP(*(.fini))
    ! {" o$ n  u+ \% `' c/ D: k7 m
  39.                 . = ALIGN(4);
    . G" v1 W& N  L. N) d
  40.                 _etext = .;2 R  Q6 z, f8 S) t4 _
  41. 4 s* a3 a' Z- p, N. o  O  w
  42.         } > FLASH
    2 L! M! V; j& e6 ?
  43. ' ^& ?$ @9 o7 c, A
  44.         .ARM.extab :3 U4 u: Q5 o9 Z/ X+ A6 ^
  45.         {" C6 [5 Y( y0 L9 }7 [1 K" p
  46.                 . = ALIGN(4);# ?& b! W9 V2 t
  47.                 *(.ARM.extab)
    4 o. y1 \7 P& B7 z2 i
  48.                 *(.gnu.linkonce.armextab.*)
    ! J( J) @3 L& L, ^' l/ m% A# F
  49.                 . = ALIGN(4);
    * T( K* a8 t; S/ n, K3 i3 B
  50.         } > FLASH) m9 z' ~4 B! u: D

  51. ; T1 C/ x* a0 B# h
  52.         .exidx :, V9 y+ s1 J9 w- q* d) t: W; V* c
  53.         {: z4 o- A, ]: A7 G* H0 t9 s
  54.                 . = ALIGN(4);
    0 ~# p! r; I: S: b, h( e
  55.                 PROVIDE(__exidx_start = .);  ^+ N( N& O# L
  56.                 *(.ARM.exidx*)) \. z, {9 p7 i( Y# K1 ?2 ^# C
  57.                 . = ALIGN(4);7 M" u5 B- x* J/ |2 z$ ?& d: Y
  58.                 PROVIDE(__exidx_end = .);
      w* _7 u4 [) y8 y1 b2 Q; o6 A
  59.         } > FLASH
    / C( j5 g# H( L- R/ o
  60. & e. i( ]- C+ L5 Q: r
  61.         .ARM.attributes :. i" P, c6 ~7 u& }5 r& U/ F' ^
  62.         {
    * a2 O0 V4 T1 I1 M0 a" E* e; R
  63.                 *(.ARM.attributes)
    2 @( P* _8 g8 i/ T6 S, `, ~
  64.         } > FLASH) a, d. q* ?+ e  b, i/ S0 y. }

  65. % H" b1 Q1 J! P* P- y1 ~3 V) o9 m$ O" Y
  66.         .preinit_array :4 h% R; g4 A! c9 X4 g2 q) ^
  67.         {
    ; i( K" Y: W( |" ?  X5 t
  68.                 PROVIDE(__preinit_array_start = .);
    ; r8 d. |* @, L; H9 n' m2 a, p2 g
  69.                 KEEP(*(.preinit_array*))
    7 j' l' V. g& d8 w' H
  70.                 PROVIDE(__preinit_array_end = .);. Z# z* c% [- v9 G. u6 _
  71.         } > FLASH* h- K4 [* r5 N3 O% q6 \& Q

  72.   d, ^' k% c* ]# s) S
  73.         .init_array :
    3 t7 D6 F# W& C- c6 b
  74.         {' Z# Q( L& {& h0 }! e
  75.                 PROVIDE(__init_array_start = .);3 Y, F+ `6 g/ i
  76.                 KEEP(*(SORT(.init_array.*)))& s$ \$ \, T8 Y
  77.                 KEEP(*(.init_array*))2 @$ |6 P  ], z
  78.                 PROVIDE(__init_array_end = .);
    , t# R8 h: L9 t" F* t& v. Y- d
  79.         } > FLASH; Y/ s) f" ~4 e- \7 v

  80. + q" s7 m4 i. Z4 U5 p& U3 Z" a% k( U/ ]
  81.         .fini_array :
    ' L; Z% g( U' g% H
  82.         {1 L: C& e2 A3 @9 `) u8 z# Q( b
  83.                 PROVIDE(__fini_array_start = .);
    $ H' Q3 {. }: b# G9 _0 ~! R
  84.                 KEEP(*(.fini_array*))' V8 m8 @. C0 ?7 s
  85.                 KEEP(*(SORT(.fini_array.*)))7 \: i8 W6 T% U; q
  86.                 PROVIDE(__fini_array_end = .);& z7 W6 Z' I7 ~/ C0 j& T" z
  87.         } > FLASH5 A, _% X- H, b& W- G% L7 u0 [  B$ X

  88. 5 ?9 S: Q* P* |% E  R. V
  89.         . = ALIGN(4);# }1 o2 m8 x1 B& P
  90.         _sidata = .;
    + \& a0 E! u5 Y) k. `  J

  91. ( x+ j, H" |  V3 {6 F8 S
  92.         .data : AT(_sidata)
    $ s4 d( x2 C% D8 ^" @
  93.         {
    8 M8 _: {3 s, P; t
  94.                 . = ALIGN(4);
    % @9 l, ~! r) x+ ~7 O9 w( X
  95.                 _sdata = .;# T  `) U/ ?' Q. S

  96. % y6 @& [3 F) @- G# U, F- y& Z
  97.                 PROVIDE(__data_start__ = _sdata);9 W9 E9 t- E' b# ~& j6 t) @
  98.                 *(.data)
    1 A3 l# J% G' g9 ?* y
  99.                 *(.data*)5 S6 I% f! o" V. I" d) G
  100.                 . = ALIGN(4);5 E. T+ Y# v& N2 G
  101.                 _edata = .;  g3 W2 |+ D8 n
  102. / F; r, {. f: K, r5 Q
  103.                 PROVIDE(__data_end__ = _edata);
    / v8 r+ p5 l" Z) B# ?
  104.         } > SRAM
    : e' G0 l1 \8 F& ^
  105. 7 M" z6 `3 |; y
  106.         .bss :  K; J% W+ G) N# {9 |5 p* q- U  P8 D
  107.         {7 D! k/ C. F2 S' a% }
  108.                 . = ALIGN(4);: R: U3 g& \5 u) Z. c0 W, i0 t. k
  109.                 _sbss = .;( a, p6 l/ \  |# B6 ?4 [% w% ?  G  S

  110. ; x6 P8 S" F8 H! M# `* A, S
  111.                 PROVIDE(__bss_start__ = _sbss);- Y4 s7 s, @, y) y$ ?7 {7 y
  112.                 *(.bss)
    , K& [% }5 H; v* q
  113.                 *(.bss*)
    5 \* {& ^* j0 I4 w; `, W4 r) b
  114.                 *(COMMON)
    & j. x' p6 R3 Z. R$ f9 M/ c# R% x! j
  115.                 . = ALIGN(4);" V. J3 H6 E, L  c* a
  116.                 _ebss = .;0 s7 j- u. ]% s6 J5 Y) J2 @
  117. 7 e  U* A% H- Y- M' }
  118.                 PROVIDE(__bss_end__ = _ebss);
    * m6 Z8 w) L( @% x$ a. V2 p2 v
  119.         } > SRAM1 X. U. L! X+ L, d

  120. % J5 {, t6 ~1 A1 W: D' V
  121.         PROVIDE(end = .);1 O9 b$ l/ b; b+ [

  122. 4 C! Y. u. O& s: d' l% G9 n# M
  123.         .heap (NOLOAD) :
    + y( d3 n4 G, j+ F# r
  124.         {
    8 Z4 a& ^* `" ~+ ?1 v2 ]& J
  125.                 . = ALIGN(4);
    2 {/ R0 _) L$ h% k) W( i
  126.                 PROVIDE(__heap_start__ = .);% T* e$ h6 ^% D+ a- P
  127.                 KEEP(*(.heap))
    9 V' _6 J- Y$ F% r, s2 E+ k8 q
  128.                 . = ALIGN(4);; }% H" |5 [0 s/ T) Q7 z2 u; `4 F; Y
  129.                 PROVIDE(__heap_end__ = .);
    " o6 m5 D4 ~$ e- W# l
  130.         } > SRAM; ~- x8 R" F/ e3 v9 k$ t

  131. # E/ B, e3 i' t" {% l
  132.         .reserved_for_stack (NOLOAD) :, i' Y! s% W. \: [& i4 _
  133.         {
    ' a' v  `( s! ?: }" [/ V; }& W7 d2 ]6 a
  134.                 . = ALIGN(4);1 H1 Y! L+ Z) V  M
  135.                 PROVIDE(__reserved_for_stack_start__ = .);
    / `) W2 C4 x( P- \# }! u
  136.                 KEEP(*(.reserved_for_stack))& f$ d8 e, X% u/ F
  137.                 . = ALIGN(4);
    2 C9 ]) A* G4 b% R5 ^4 n
  138.                 PROVIDE(__reserved_for_stack_end__ = .);* |4 @8 F' `5 o1 t4 e. ?
  139.         } > SRAM
    ! c) S1 _( g. G# H/ n
  140.   h$ J0 J3 {$ H* A0 T% {* N
  141. }</div>
复制代码
' y) D& c, ?' h3 `% v3 r

1 L. s# e. Q' h4 x; h7 c* ?% u
Ian-392967 回答时间:2017-3-11 18:31:29
mfvmv,vx,mvxm,vx,.mvx.ifskfjdksssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssjklvxvvf
奏奏奏 回答时间:2017-1-5 05:36:21
哈佛祖安智 发表于 2017-1-4 11:14
; _+ m  U* c. R+ o社区版免费啊
* M- C# @$ P6 o7 z) W$ Z7 h; b
我仔细查了一下
* A7 s6 ^! p' ]# R. i- n微软的Visual Studio使用社区版确实是免费的,功能上够开发用了
2 e6 h( |& F( i  n但是VisualGDB并非免费,首次使用后只能免费试用一个月
4 e$ y' W6 b' ?. z官网的原话是
" ~# O7 D" n1 }3 f' R! t4 e! C7 {“You can download a free fully functional trial of VisualGDB. The trial will expire in 30 days after the first run.”
moyanming2013 回答时间:2016-5-27 21:07:53
推荐试用。& S& v$ b/ p% K+ M1 u/ T
用VirtualGDB搞过树莓派的远程开发,还不错。
suoma 回答时间:2016-5-27 21:15:39
moyanming2013 发表于 2016-5-27 21:07$ F' C- m1 T. e2 @! S
推荐试用。" H1 R, j! q. z/ {8 E
用VirtualGDB搞过树莓派的远程开发,还不错。

3 \" M$ k: S# j将你的远程开发介绍一下,这个我更感兴趣
watershade 回答时间:2016-5-27 21:33:37
这个看着不错呀,有啥特色,除了用visual studio
小丁 回答时间:2016-5-27 21:45:49
网站打不开
yklstudent 回答时间:2016-5-27 22:10:29
要装VS2015以上????
- T. k/ c0 g( ?0 G( D2 J一般电脑扛不住啊
moyanming2013 回答时间:2016-5-28 17:18:16
suoma 发表于 2016-5-27 21:15* w- K+ T" S! n5 C* H
将你的远程开发介绍一下,这个我更感兴趣
$ u) e8 K+ u- b8 o7 K# z: X
其实树莓派运行的也是个linux系统,你参考此文章:http://visualgdb.com/tutorials/linux/
2 z7 ^$ Z, [* g3 Q. G9 @, Z# u# s打开不开的话下此附件:' _3 w) M8 r& V6 G) ]* p/ f3 X" {
Using Visual Studio to develop Linux apps VisualGDB Tutorials.zip (1.23 MB, 下载次数: 405)
hpdell 回答时间:2016-5-28 20:29:03
yklstudent-1794 发表于 2016-5-27 22:10
/ D. j/ o) j' n* s要装VS2015以上????6 Z. M' l- \# g
一般电脑扛不住啊

9 v' O, m& t$ Z- }# n9 b功能强大就需要电脑配置好啊,& _  _4 w# _' a; P! e

: w9 b* v3 g+ {% h: _可惜俺是使用不上了哟,因为按的电脑笔记破旧啊
hpdell 回答时间:2016-5-28 20:30:38
yklstudent-1794 发表于 2016-5-27 22:10
/ v9 p8 q3 E5 c要装VS2015以上????
* b- h, W, C; U0 e0 C3 e6 K2 Z2 t一般电脑扛不住啊

2 Q3 J$ }# l  a5 j* D) c5 l1 _功能强大就需要电脑配置好啊
$ Z7 \9 S5 R+ y
! b! |% K5 R: _+ p9 o可惜俺是使用不上了啊,因为俺的电脑比较破旧
  ~* @( y- A- p% n5 m# x) l
! U; _! \3 A. U# u$ ~- {( w要是有功能强大,对电脑要求又不高的环境该多好啊
风丛林 回答时间:2016-5-28 21:50:30
学习了,可惜了,估计老电脑得更新换代才能用得上了
Stm32McuLover 回答时间:2016-5-30 13:42:52
watershade 发表于 2016-5-27 21:33
3 d! g  h9 g: B+ C- c这个看着不错呀,有啥特色,除了用visual studio
" {: O6 i+ \) y" P
这个就是最大的特色啊,Linux,安卓开发,嵌入式开发,一个IDE搞定。
涛哥2035 回答时间:2016-5-30 15:20:36
这个软件需要注册啊,你们怎么看?
刘斐 回答时间:2016-5-30 20:05:29
这个需要购买吗?有破解的方法吗?
Abners 回答时间:2016-5-30 20:37:19
这东西,目前玩一下还是可以得,毕竟多数公司还是用的Keil或者IAR!
2602082487 回答时间:2016-5-30 20:39:40
不错,谢谢分享。
12345下一页

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版