注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

辛昕.九门.上 http://home.eeworld.com.cn/space-uid-115166.html [收藏] [复制] [分享] [RSS]

日志

Ubuntu下搭建stm32+stlink的开发环境

热度 3已有 13952 次阅读2014-8-19 21:09 | 开发

      上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄。
       弄到了一些眉目,决定先简单写个总结。

       我不打算采用 详细文档 的写法,而采取一种启发性的思路。因为中间很多操作,我们可以自己百度或者,假如你熟悉这些命令,操作。

       首先,讲述一下要实现的功能。
       在Windows下,有好几款ARM stm32的开发工具,比如我个人最喜欢的IAR,更加著名的MDK。

       首先我们要搞清楚一些基础概念,IAR,MDK是IDE,也就是 集成开发环境,所谓集成因为它包含了很多工具,其中最主要的是 编译器,调试器,下载工具 等等,所有这些,组成一个完整的工具链,可以供我们 在单片机上开发项目。

       也就是说,原则上来说,只要我们获取了这一系列工具,并且互相配合起来,组成一条完整的工具链——或者足够的工具链,我们就可以自行组建自己的开发环境,而无须受制于 软件的license,运行环境等各种限制条件。

       IAR MDK都没有Linux的版本。
       但是在Linux下,我们可以使用一些分散的替代工具。
       其中,C编译器是 大名鼎鼎的 GNU C,调试器是GDB,至于下载工具,由于本人偏好使用STLINK SWD,所以,经过一番搜寻和了解,我选择使用 stlink-master,此外,为了进行硬件调试,除了宿主机上需要gdb外,还需要一个装在芯片上的 远程gdbserver。

       经过一番折腾。
 
       目前,我已经完成的工作有:
       1.我从 Sourcery g++ Lite获取了一个相当新的 GCC编译工具;其中包含gcc g++ gdb;
       当时我这么做是因为我不懂得设置和重新编译gcc工具链,因为事实上,4.4以后的版本,官方版本已经加入了对cortex m0 m3的支持——而这两个也是我所需要的。也就是说,如果我能学会编译,我以后大可自己重新做一个,但无论如何,至少现在为止,我们可以拥有一个 gcc交叉工具链;

       2.在编译的时候,我发现,它需要指定 编译脚本 ld文件,让编译器了解具体芯片的一些基本信息:比如 存储器的分配和中断入口 ,堆栈的设置;
       这一块,我还不会写,所以我打算想办法去找例子学着写;

       3.在第二步卡住的时候,我觉得,这一步最终需要实际烧录程序才能验证是否可行,于是我决定再往前走,先把stlink的驱动搞定。慢慢的,我发现,当我把stlink-master搞定的时候,我发现,我同时拥有了我以为还得费劲的gdbserver。

       当前的进展是,我已经拥有了gcc工具链 和 stlink驱动及相应烧录,调试工具。
       下一步我需要学会或者找到一个m0的 连接脚本。

       (具体的过程,我会在完成之后,详细整理出来。)
       在这以前,还有一点要提醒。
 
        Linux下设置 环境变量,没有windows那么方便,可以在 桌面右键属性的 高级  里 设置。目前我只知道通过export PATH命令完成。但有个比较麻烦的地方是,直接这么export,在下次重启后,这变量就没了。
        当然还有很多人喜欢另一种办法,那就是把相应的bin放到 系统的/usr/bin下,但这种行为无异于在windows下,把所有软件装在c盘,这种事,老子不干。而且我曾经接触过这个问题,我记得是可以通过直接写什么文件,把这个环境变量固定下来,现在我首先要解决这个事情。

        然后再去想脚本,这里,给大家推荐一个很不错的 第三方彻底开源工具。 libopencm3,它其实同时包含了cm0 cm0+ cm3 cm4 cm1,并且不止stm32,还包含ti部分,nxp部分mcu 的工具链。
        不过既然我已经装好了工具链,我也就不打算重新换他的,我只想学会或者获得m0的连接脚本,此外,它使用的是openhcd来做stlink的驱动框架,我暂时对这个不够了解,但我怕它不稳定,所以相对来说我还是打算选择stlink-master,它似乎更加“官方”——这是一个动态的过程,玩Linux的都是热爱自由,不怕折腾的人,我会持续关注这些事情,尽可能改善自己的开发环境。

         好了,今晚的笔记到此结束~~

发表评论 评论 (8 个评论)

回复 soso 2014-8-20 10:31
  
回复 nbzhaosq 2014-8-23 21:50
code sourcery 不错,还可以用arm官方根据gcc改的
GCC ARM : launchpad.net/gcc-arm-embedded   
我以前用的是eclispe(cdt): eclipse.org +GNU ARM Eclipse Plug-in : sourceforge.net/projects/gnuarmeclipse
debugger用 github.com/texane/stlink  和  openocd : sourceforge.net/projects/openocd
GNU ARM Eclipse Plug-in 支持各种stm32型号,它自带的stm32-demo是用ucos的demo改的
希望有帮助
回复 辛昕 2014-8-24 15:28
那啥,那个eclipse插件,我死活下不动
哥们儿,能下得了么现在,或者你能不能给我发你之前用那个
对了,那什么,它支持的型号里有
stm32f030r8t6么
我前两天最终决定先搞搞 正式版的evaluation版,然后试试行不行,再偷点文件出来参考参考

谁知道,他奶奶的只有stm32f050,,,我真是想死给他看啊
回复 nbzhaosq 2014-8-24 18:33
f3xx系列用的头文件一样的,memory size之类的可能要在mermory.ld里改下,我刚在下载区传了,还在审核,名字就叫GNU ARM Eclipse Plug-in,或者还可以去这里看下 gnuarmeclipse.livius.net/blog/
回复 yongxing912 2014-11-11 15:11
有用,加油
回复 辛昕 2014-11-22 02:01
nbzhaosq: code sourcery 不错,还可以用arm官方根据gcc改的
GCC ARM : launchpad.net/gcc-arm-embedded   
我以前用的是eclispe(cdt): eclipse.org +GNU ARM Eclipse Plu ...
很悲哀的是,code sourcery我现在没法搞到它的lite版本。
windows linux都不行。
气得我大半夜切到 ubuntu下。

刚试了 GCC ARM那个靠谱,任何限制都没,就是我还是不会搞。
于是联想到之前code sourcery的经历。
这回我可是有了一个ld文件,于是我决定,参考 code sourcery中的编译过程,反正都是gcc都一回事,,,,,,
回复 辛昕 2014-11-22 02:03
nbzhaosq: f3xx系列用的头文件一样的,memory size之类的可能要在mermory.ld里改下,我刚在下载区传了,还在审核,名字就叫GNU ARM Eclipse Plug-in,或者还可以去这里看下 ...
个人不太喜欢eclipse的做法。
一个是还得依赖一个东西。
而且这软件我用过,实在不喜欢,有点卡,太巨量了点。

所以我还是希望自己学会编译命令,然后换自己喜欢的ide,或者直接makefile就算了
回复 辛昕 2014-12-8 00:11
nbzhaosq: code sourcery 不错,还可以用arm官方根据gcc改的
GCC ARM : launchpad.net/gcc-arm-embedded   
我以前用的是eclispe(cdt): eclipse.org +GNU ARM Eclipse Plu ...
谢谢哥们。
基本上,我现在把这玩意拿下来了。
虽然因为对 具体的 gcc gdb命令不够熟悉,所以gdb部分还不会玩。
不过编译下载,简单修改makefile啥的已经搞定了

能搞定这个称之为心病的东西,全靠哥们推荐这个 ARM官方的工具!!

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

关闭

站长推荐上一条 /2 下一条

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-10-16 23:20 , Processed in 0.037972 second(s), 11 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2019 http://bbs.eeworld.com.cn/

返回顶部