使用自己的开发板,我们最先开始做的可能就是preloader。不管我们以后是跑操作系统还是裸程序,preloader是做为前期CPU环境的最小配置存在的。它的主要功能是最小化配置CPU,还有一个主要功能是配置我们的DDR。这个过程中,很有可能是板子起不来,遇到很多问题。DS-5提供了很好的方法,用来调试preloader。

首先,我们编译完preloader后,会生成一个pre-mkimage.bin及一个preloader.ds文件。一个是可以运行的preloader镜像,别一个是供ds-5调试用的脚本文件。建立一个makefile工程。如下图所示:



2、build这个工程

3、选择debug--》configure



4、修改ds脚本,让程序停在starts.s的入口_start处。


5、点debug。程序会停在__start处。


6、快速键

F5 step into 

F6 step over

F7 STEP RERTURN

F8 RUN。




目前存在问题是:step over _main,程序出不来了。这是什么问题,目前正存解决。以后更新。

调试过程发现这样一个问题:


同时还表现为每次调试连接后,r0的值不确定。r0-r4是bootrom向preloader传递的变量,r5要访问0x38。bootrom传递控制权给preloader后,会将ocram映射到0地址,大小为64K。现在看来映射是不成功的,无法访问ocram。

该问题经过分析是认为是ds-5的初始化存在问题,quartus工程配置上存在与我们自已板不一致的地方导致的。更新quartus工程后,再次链接ds-5,成功调试。