主权项 |
一种应用于云存储的存储控制器的BIOS调试方法, 其特征在于,采用修改BIOS代码并配合外部硬件电路添加CPLD等器件来通过数码管来显示存储控制器的BIOS执行过程并定位其运行位置,当CPU初始化时采用汇编程序编写数码管显示函数,在BIOS中分配左右数码管所用地址空间0xCE850000与0xCE840000,并在CPLD中设置缓冲寄存器,当CPLD检测到CPU的地址线符合我们给数码管所分配的地址空间时将此时数值线上的数据保存进数据缓冲寄存器,然后送出给数码管显示;在系统硬件初始化和内存初始化过程中可以在多处调用数码管显示函数来显示当前BIOS执行过程所处位置,这样即使串口没有初始化无法从串口打印字符的情况下,我们也可以从数码管显示的数值来判断当前程序执行的位置,从而定位系统停止位置,方便了调试并加快了调试进度,具体步骤如下:首先我们修改BIOS的地址空间分配,分配一块空闲的地址空间给左右数码管显示用,然后编写数码管显示函数,用来在左右两个数码管上同时显示我们所定义的数值,后续我们在需要知道BIOS运行状态的位置添加数码管显示函数和所要显示的数值,这样当我们看到数码管显示出我们所定义的数值后就知道BIOS当前的执行位置;为了节省CPU的资源,我们采用一片CPLD来接收和缓冲数码管所要显示的数据,在CPLD中按照我们在BIOS中所分配的地址空间设置寄存器来保存CPU送出的要显示的数值,然后把数据通过CPLD的IO口送到数码管显示出来,这样我们就在串口没有初始化的情况下通过数码管来查看当前的BIOS执行情况,如果串口没有初始化情况下,BIOS停止了执行,我们通过数码管显示的数值来确定程序停止的位置,而不需要采用其他昂贵的调试工具来查看。 |