1. ICDI程序下载遇到的问题
在刚做回来的测试板上下载程序,发现有一块电路板第一次可以将程序下载到板上,以后就不行了,测量发现是晶振没有起振,是手艺不好,把输入脚焊道外壳上了,重整后正常使用。
然后就是最近,想把最新修改的bootloader下载到板上,结果一直提示can not connect to the target,找了老半天毛病,最后一怒之下把所有的东西都给拆了,结果好用了。因此,个人判断是因为我的上位机串口软件占用了串口资源,导致了问题的发生。
2. Bootloader使用时的问题
我用的是串口的boot例程,我费了半天劲把按键的顺序,状态指示灯的状态给修改了,然后UART0和UART1分别可以更新程序。
这里的主要问题就是在从应用程序跳转到boot程序进行更新的时候,指示灯闪烁的时间比我设定的要快N倍,啥原因呢,最后发现是我boot里用的应该是内部的12M±30%的垃圾晶振,而应用程序是外部倍频的50M,导致一条指令的运行周期变短。
这个问题我没能很好的解决掉,只是在进入Bootloader之前,把200M的时钟16分频,变成12.5M的,大概肉眼就看不出什么区别了。因为12M的实在是分不出来。
这里其实还有一个问题我没能解决掉,就是在把时钟变为12.5M之后,再通过串口更新程序的时候,有大概5秒左右的停顿时间,我设定的更新程序指示灯闪烁状态也是停止不动的,暂时我还没仔细看boot程序,这个原因也就不明。
这里还有一个更加恶心的问题,就是IO引脚在上电的过程中,其状态是不稳定的,这就导致了我在上位机串口软件收到了不明意义的几个乱码,使得我在用LM FLASH PROGRAMMER的时候,经常性的报错,我用的是U口转串口,导致经常对U口插拔,来解决该问题,别跟我说加校验,很多时候校验是不用的。
3. 一些硬件配置的问题
我在使用软件复位功能后,初始化的配置就死到那里去了。每个模块判断后,发现是在配置串口波特率哪块没出来,看看程序,感觉是开中断的时机不对,开的太早了,我给挪到后面后就好了,具体原理不清。
还有就是上面说的,很多时钟频率分频配不出来。
串口的示例程序中的发送函数,当数据大于16个的时候就会出错,这个需要我自己加一个判断。
再一个就是我的FIFO究竟好不好用我还不知道,中断里到底读了几个数,本人还没时间去调。
4. 其他问题
示例程序的以太网程序陷入死循环,发现是MAC地址的两个寄存器是空,估计是需要自己来写,不过这个寄存器真心的不好用,也不敢用。
再其他的基本都是一些软件上的问题了,各种指针错误,无volatile修饰,进入死循环出不来等等。如果还有其他的,估计我也给忘了。
5. 暂时就这样吧 |