应客户的要求,开发一汽车电子装置,指名要用MC68HC908SR12,像我们这种替别人开发的人员,用的东西就是杂,以前一直用AVR、PIC、C8051FXX等单片机很熟悉,现在猛的要我用Moto的,啥开发工具都没有、啥资料都没有,到图书管新片子啥书都没有,上网查啥技术支持论坛都没有(哈,这个论坛就算吧)。
闲话不说,尽管如此,我们答应帮他们做,但要求他们最好买一套开发工具和烧写工具来,果然几天后他们买来了,一试傻眼了,只能汇编调试,只好抛弃不用。这下可苦了我,最后只好用最笨最笨的办法,用CW的16K免费版来编译(顺便向高手提个问题:既然是16K限制,而SR12整个程序存储空间才12K,是不是就相当于没限制了?16K限制是指生成的代码大小,还是指哪个S19文件的大小?反正我现在的S19文件也没超过16K),编译生成的S19文件烧入单片机,然后上板试,可怜没法在线仿真,就是用这种笨办法,结合其他工具(烧写软件、串口助手、示波器、万用表),最终调试成功,运行了快一个月软件暂无任何问题。调试的模块包括:定时器操作、定时器输入捕捉、定时器的PWM输出、AD采集、串口与上位机通信、读擦写Flash,最终实现一个执行器件的PID调节(初接触这个芯片的网友有什么问题可以探讨啊,只针对这个芯片,因为说老实话,众所周知的原因,Moto芯片以后我用得不是很多)。但还是有一些不太明白的地方,现在也没时间去仔细弄它。
1、RAM空间为什么一般要定义Z_RAM、RAM两部分,两部分到底有什么特定的用途,有时一个变量定义在RAM不行,但定义到Z_RAM就行,而且不指定变量地址的话,编译器只会将变量自动分配到RAM。
2、堆栈指针初始化的时候到底指到哪?是Z_RAM的底部0xFF,还是RAM底部0x25F,追溯了一下原文件,找到一个头文件里就没法再往下找了,没找到也就没再仔细去找。
3、有时感觉复位完成需要很长时间,有时又很短,最有可能的地方就是等待PLL稳定(PLL外部电路就两种,一种直接接个电容,还一种需要两3个分立元件,但一般好象都是直接接个电容完事)那个地方。是不是我现在也没摸清,问题不大,也没仿真器看,只好那样。 |