打印

不花钱斋玩STM32的过程(穷人的乐园)!

[复制链接]
楼主: 宇宙飞船
手机看帖
扫描二维码
随时随地手机跟帖
21
宇宙飞船|  楼主 | 2010-11-24 12:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览

网上一些STM32 复位处理资料产生的BUG图片

复位接键没有加入消抖处理,实际产生的效果图片:

使用特权

评论回复
22
宇宙飞船|  楼主 | 2010-11-24 12:54 | 只看该作者

复位按键去抖后的效果图。

复位按键加入0.47u 电容延时消抖后的效果(非常理想):

使用特权

评论回复
23
dfsa| | 2010-11-24 17:10 | 只看该作者
楼主很有想法啊,乐在其中

使用特权

评论回复
24
宇宙飞船|  楼主 | 2010-11-25 12:37 | 只看该作者
昨晚试了把GNU中的项目移到MDK中去,由于keil MDK中的C编译器不支持C99扩展语法,
有太多的出错,而把一些GNU中能稳定运行的现成代码移植到MDK中,若要改写,其工作量相当浩大。
因此把项目转成GCC中编译看来势在必行。

使用特权

评论回复
25
hsbjb| | 2010-11-25 17:00 | 只看该作者
想法不错,值得一试

使用特权

评论回复
26
宇宙飞船|  楼主 | 2010-11-26 11:36 | 只看该作者
本帖最后由 宇宙飞船 于 2010-11-26 11:37 编辑

天气凉爽,有裤子穿的感觉真好。
对于完全使用虚拟机上linux下的GCC来开发ARM的开发者,大可以不用理会WinARM.
但是俺相信喜欢WinARM人还是占多数,因此WinARM下的开发环境好坏变得相当重要。

俺花了几个晚上研究总结了STM32 移植到WinARM-GCC下的问题。

问题1:
由于WinARM-20080331 测试版仅提供了Cortex-M3的GCC 4.3版本编译器,并不内带PN编辑工具集,因此要结合WinARM-2007 版本。
方法有两种:
第一种就是如果已经先按装了winarm2007版本的并打通了环境变量的,可以直接拷贝2008年版的覆盖一下原来的安装目录,这样就可以把两个版本合二为一了。
第二种方法就是在环境变量中另外指定2008版的路径。

问题2:
cortex-M3新内核在GNU中的例程目前还是比较少的,网上能找到的也就是几个,俺修改了其中makefile的内容测试了一下,有的能正常编译,有的就编译出错。其中的原因,是Makefile 编写太过复杂,估计是产生了不少BUG。推测的依据就是2008版自带的LED闪灯makefile 在Os 和O0级都没有产生编译出错,虽然这makefile简单易懂,但是却没有占用ROM和RAM大小的提示。

问题3:
纵观整个winARM的版本,都没有提供printf的正规打印例程,仅提供了iprintf例程,这对于GNU下众多开源程序移植是大大不利的。

因此必需着手解决以上问题:
一个是重新改写能容易明白并有ROM和RAM编译后大小提示的makefile。
另一个就是解决printf的标准打印。

使用特权

评论回复
27
GNMXD| | 2010-11-28 17:33 | 只看该作者
技术真的是玩出来的

使用特权

评论回复
28
宇宙飞船|  楼主 | 2010-11-29 23:48 | 只看该作者
本帖最后由 宇宙飞船 于 2010-11-30 00:18 编辑

在WinARM-2008版的STM32例程makefile 中加入flash 和ram 占用字节的方法。
有多种方法供选择:
最好就是直重新修改2007年版的ARM makefile来用。
也可以在2008版的STM32例程makefiek中手动加入以下的语句:
//*************************************************
// 第一种: 正规方法
//*************************************************
all 的目标上追加上sizeafter 的名字(名字随便起吧)

all: ........ sizeafter

SIZE = arm-eabi-size
#ELFSIZE = $(SIZE) -A $(TARGET).elf   //这个详细
#ELFSIZE = $(SIZE) -t $(TARGET).elf   //这个嘛有总计。
ELFSIZE = $(SIZE) -d $(TARGET).elf    //这个最简洁,

//具体用法可以用arm-eabi-size --help 查看

打开2007版的例程copy 以下这句。
sizeafter:  
        @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi

表达式中的变量自已对应着修改。
//***************************************************
//第二种:最简单的方法,可作为测试用
//***************************************************
all 的目标上追加上sizeafter 的名字(名字随便起吧)

all: ............ sizeafter

sizeafter:
        arm-eabi-size -t main.elf(程序名称)    //记住一定要以TAB空格键开头

使用特权

评论回复
29
john_lee| | 2010-11-30 00:21 | 只看该作者
winarm已经很久没有更新了,还是用CodeSourcery G++ lite吧,这个更新比较快,gcc的最新版本是4.5.1。而且CodeSourcery公司的人还是gcc的contributor。

使用特权

评论回复
30
宇宙飞船|  楼主 | 2010-11-30 12:56 | 只看该作者
稍微对比了一下这两款开发工具集,CodeSourcery G++ 附带了GNU工具链的PDF,其文档整理得非常好。其前缀是arm-none-eabi ,依俺的理解也就是可以使用带有硬件浮点的ARM最新系列 。而winARM 的前缀是arm-eabi ,只能使用软件模拟硬件浮点。

不知道以上的理解有没有偏差?

查看了GNU工具链的BUG修改日志,在winarm-2008版的gcc-4.3, gas1.8 与最新版的gcc-4.51, gas2.20这两个版本之间没有找到cortex-m3的BUG变更记录。因此用2008版编译STM32的效果与最新版的应该没有差别。

WinARM 给俺的感觉就是好象是全心至力于劲推ARM的高性能单片机,附带了ARM几乎所有“单片机”例程,到2008版就不再更新了。而cortex-M0 是在2009年才被GNU 工具链支持嘀,这点很耐人寻味。
个人还是比较习惯WinARM 中附带的PN编辑器,再结合虚拟机中的linxu 下vim编辑环境。

使用特权

评论回复
31
无冕之王| | 2010-11-30 15:46 | 只看该作者
技术的确是玩出来的:lol

使用特权

评论回复
32
pkat| | 2010-11-30 16:09 | 只看该作者
什么时候能把技术玩出楼主这种心态了,估计就是一种享受了

使用特权

评论回复
33
宇宙飞船|  楼主 | 2010-12-2 01:41 | 只看该作者

再战keil MDK-3.23版本下用H-JTAG带源码级调试STM32

本帖最后由 宇宙飞船 于 2010-12-2 01:48 编辑

今天用H-JTAG-0.91版在keil-MDK3.23版本下终于成功进行了源码级调试,发觉没法显示源码竟然错在用了ARM7的调试方法。以前用其调试ARM7TDMI,只需下载flash一次,就可以进行无限次复位调试。问题竟然就出在H-flasher 选项中没有使用Auto Flash Download!

使用特权

评论回复
34
宇宙飞船|  楼主 | 2010-12-2 02:20 | 只看该作者
用其H-JTAG对于STM32调试的感觉就是复位不太方便,在调试状态的断点暂停后,当按下复位图标,它不会自动设定PC指针,每次若想在调试状态中进行复位,若不想刷新flash,就要手动把R15的值修改为0x08000000 (这一步必需做),若不做这一步会有什么效果?那是假复位。反汇编看到PC跳转到00地址后,再单步又从暂停后的断点地址上接着执行。

而keil MDK中的寄存器设值的反应速度超慢。若想快点还得掌握一定的技巧,就是鼠标放在R15寄存器上,按下左键停留1到2秒再放开右击就可以修改,否则要等很久才能进行修改。

使用特权

评论回复
35
zhousd| | 2010-12-24 23:01 | 只看该作者
楼主若用过H-JTAG 1.1版本,jlink-v8 可以掉入垃圾桶中去了。
在此感谢H-JTAG的作者21大侠。中国的骄傲!

使用特权

评论回复
36
秋天落叶| | 2010-12-25 18:29 | 只看该作者
这么玩很酷

使用特权

评论回复
37
zengguangjun| | 2010-12-28 21:21 | 只看该作者
爱好是最好的老师!

使用特权

评论回复
38
xinjie1023| | 2011-5-10 14:50 | 只看该作者
学习,收藏。

使用特权

评论回复
39
hilam@126.com| | 2011-5-11 20:34 | 只看该作者
不错,有创意

使用特权

评论回复
40
swqswq0321| | 2013-7-2 22:06 | 只看该作者
学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则