原创 Freescale S08开发板调试心得

2009-5-8 21:43 3654 8 9 分类: MCU/ 嵌入式

这两个星期重点调试了新作的freescale的s08开发板(NSS08Kit-R1)。到今天终于全部调试完成,板子在画原理图的时候居然笔误把PS2接口的CLK接错了,下次改版要修正这个小错误,其他的均没什么问题。我用的主芯片是MC9S08AC16,因为它比较便宜。但这个板子上留了20,16,8pin的DIP座子,因此可以支持HCS08和RS08系列所有DIP20,DIP16,DIP8的MCU,5V的或者3.3V的都支持。


在调试过程中遇到些原先没有预料到的问题,总结下:


1.BDM仿真器的问题。我用的是OSBDM,北京那家freetech去年做活动的时候我申请了个免费的S08 BDM,最近在淘宝上也买了个OSBDM。两个是差不多的,开始调试的时候BDM只成功了一次,此后再也无法连接hardware,先是怀疑CW装的问题,就卸载重新安装+所有补丁,结果重新安装后也不行,又怀疑我的笔记本电脑有问题,找了台台式pc,新装的xp系统,安装cw后,发现只有第一次下载程序的时候成功,此后再也无法连接。在这个问题上我折腾了两天,也问了淘宝上卖我BDM的那个伙计,他也不知道什么原因。最后我是怀疑OSBDM是破烂货,准备花钱去买个PE Multilink。但是那天晚上,我突然想OSBDM基于的那个libUSB是否有问题,因为windows下的驱动程序我以前做过不少,说实在的,我还是怀疑libUSB的作者的水平。看了下libUSB的代码,一时也发现不了什么不足,不过冒出个念头,是否freetech光盘中带的那个驱动和淘宝上那个伙计给我的驱动有问题,就去freescale的网站上下了个驱动,装上后果然一切OK;最后确认OSBDM还是可以的,但那个驱动还是做的不够稳定。


2.在一个程序中发现单片机的ICG总是锁不定主频,导致MCU频繁复位,跟踪后发现是sprintf这个函数惹的货,由于我忘记包含头文件stdio.h,导致每当调用sprintf的时候,程序就跑飞,最后导致复位。#include <stdio.h>后解决问题


3.后又发现即使include了stdio.h,有时候调用sprintf也会导致mcu复位,跟踪后确认原因是堆栈溢出。默认的codewarrior定义的堆栈大小是0x50个字节,sprintf内部消耗了大量的stack,因此0x50个字节有时候会不够用,我改成0x100后问题解决


4.最后就是那个SPI接口,SPI本来很简单,没想到这次在这个上面居然花了一天多时间才搞定,NSS08Kit-R1上有个at93c46,mcu通过spi访问它。我发现怎么搞都无法正常读写。把spi的那几个寄存器看了N遍,试了各种情况(比如CPOL,CPHA的所有组合)都不行。后怀疑是93c46买的是假货,为了确认这点,就绕开了mcu的spi,而是用gpio用软件模拟spi时序读写93c46,结果发现读写正常,说明芯片本身没问题。最后又花了半天时间,确认了错误原因,现在OK了


NSS08Kit-R1到此算完成开发了;下面还有快coldfire mcf52211的板子要调试,希望尽快搞定,此外答应人家做的freescale i.mx27的板子也要动手画电路了。


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1454352 2009-5-10 00:14

可以慢慢跟您学了,呵呵
相关推荐阅读
用户1361860 2012-06-28 23:44
Nicrosystem Freescale Kinetis教程---SDHC
这是研究生翻译的SDHC的中文文档,里面很多句子不通,但我现在没时间去修改了。先放出来,应该还是会有一点作用  ...
用户1361860 2012-06-26 12:39
Nicrosystem Freescale Kinetis教程--低功耗定时器
Freescale Kinetis内部集成了一个独特的低功耗定时器,它可以在系统处于低功耗模式下,仍然以极低功耗运行,可以用于在适当时候唤醒系统进入正常工作模式  ...
用户1361860 2012-06-24 22:11
Nicrosystem Freescale Kinetis教程----RTC实时时钟
Nicrosystem的飞思卡尔kinetis教程之片上RTC  ...
用户1361860 2012-06-22 10:21
TI C2000微控制器指南
这是官方的C2000的介绍,C2000做电机控制那是业界最好的。  ...
用户1361860 2012-06-20 23:52
Nicrosystem Freescale Kinetis教程--PIT定时器教程
这是PIT定时器的教程,PIT是 Kinetis支持的另一种定时器,相对于上一讲的flextimer要简单。 今晚赶到北京,到宾馆发一篇博客  ...
用户1361860 2012-06-19 13:15
Nicrosystem Freescale Kinetis教程--Flextimer教程
Kinetis的Flextimer定时器教程 kinetis集成了众多功能各异的定时器,flextimer是其中最为复杂的一个  ...
我要评论
1
8
关闭 站长推荐上一条 /3 下一条