串口终端没有打印字符
首先是UART.c上的错误,这个错误比较低级,由于将putc中的这个寄存器UFSTAT0写错了,还是写的以前那个没有开FIFO使用的寄存器,那也就导致了UART打印的字符乱码了,这个是根据源码一步一步找到的(替换文件,一个个来找),但是这个问题还不是最终需要解决的问题。
Nand.c是我一开始就怀疑的代码,因为这段代码是我自己写的,但是似乎没有什么明显的现象指到这里来,而且将串口打印加到main函数中去后,按键中断还出现了问题,这让我实在摸不清楚代码到底在哪出现了BUG,通过替换代码才从这些繁杂中找到一点头绪。
Nand.c有错误,那也只有一个地方的错误导致了串口打印的出错,那就是复制代码那个地方有问题。
2016-6-1 16:35:08
问题的症结出现了,copy_to_ram分为了两步,① 将NF那2K前4页复制到DDR中;②将后续的那些8K的页复制到内存。 第一步没有问题,这也是小灯可以点亮,但是按键中断却没有啥反应或者是反应几下就没了,还有UART控制台显示不出来的原因了,代码都找不到,bootloader死在了重定位上。
问题的出现也是自己粗心大意了。buf[i],i++,但是当i=0,重新循环时,buf地址并没有变化,也就造成了向一个重复内存里重复写数据的现象。
1 | for(i=0; i < page; i++) |
解决方法:
① buff[i++] = NFDATA; 修改前面的代码,去掉for里面的i++。
② 修改buff[i] = NFDATA;为 *buff++ = NFDATA;
本文标题:串口终端没有打印字符
文章作者:小师
发布时间:2016-06-01
最后更新:2022-05-04
原始链接:chunlife.top/2016/06/01/串口终端没有打印字符/
版权声明:本站所有文章均采用知识共享署名4.0国际许可协议进行许可