最近用NIOS跑uclinux,由于我的开发板配置很简单,没有网口,所以调试非常麻烦,写一个新程序,要编译到uclinux的image里面,下载才能调试,每次都需要把整个image重新生成,重新下载,非常麻烦。
google一下,发现可以用串口传文件,使用最古老的x/y/zmodem协议,马上试验了一把
make menuconfig
增加lrz应用程序
编译
。。。。
下载进去以后程序是能执行,但是就是不能正确接受从PC发过来的文件。
反复试验了几次,发现在板子上用lsz可以发送文件给PC,可就是不能接收~~
问题在哪里呢?百思不得其解
于是怀疑lsz程序的问题,因为如果可以发送文件的话,说明硬件应该是好的,而且超级终端能够正确的显示linux的界面。
可是在uclinux下调试他的软件,这是多么痛苦的一件事情!!没搞几下就放弃了。。。这件事情就这么搁下来了。。
过了一段时间,又拿出板子来捣腾了一把,还是不行,再次google了一下,发现了另外一个串口通讯协议kermit,而且网上有帖子所用minicom 通过x/y/zmodem不稳定,于是乎又开始热火朝天的捣腾起来。。。。
下载Gkermit源代码
修改makefile
生成uclinux的flat软件格式
集成到image
下载。。。。
开始传文件。。。。等待。。。。祈祷。。。。
在我虔诚的祈祷中,上帝并没有照顾我,还是失败,超时。。。。。
哎,我无语了,用kermit还是能从板子上发回来文件,可就是不能接收,这到底是为什么呢?
难道是SOPC BUILDER的UART有问题?可是能够打开连到uclinux的启动界面,还能操作啊。
难道驱动有问题?这也不应该吧?那么多人用,为啥只有我有问题呢?
周末研究了整整两天,还是没明白怎么回事,接着放弃。。。。。
没想到今天上帝突然关照了一下我,有个产品更换FPGA,重新编译逻辑,软件和外设都没有修改,约束也没有修改,按理说原来的程序应该直接可以运行,但是他们测试时发现存储器读写不通过。。。。。经过不断定位,最终发现是个低级错误,把串口波特率配错了,导致界面上显示的信息是错误的。。。
这个时候我灵光一闪,难道我的板子上不能传文件也是波特率不正确?我原来设置的是115200,会不会太高了导致误码率升高?
来不及多想,赶紧重新配置SOPC BUILDER,把波特率降下来,配到9600
编译SOF
下载逻辑
下载uclinux
boot
启动lrz
在PC发送文件
奇迹出现了,,居然通了!!!!!!!!!!!!
问题是:到底是什么原因呢?误码?速度太快程序反映不过来?。。。。
很怪,any way,能传总比不能传好吧,下次上帝再照顾我的时候也许就有答案了:)
文章评论(0条评论)
登录后参与讨论