本发明涉及qspi flash程序固化,特别涉及一种基于串口的qspi flash程序固化系统及其方法。
背景技术:
1、qspi flash是一种常见的非易失程序存储器,具有可供主控芯片直接寻址、连接信号简单、启动速度快等优点。其通常的使用方式为外接在主控芯片的qpsi控制器接口,将程序固化在指定的地址空间,作为二级启动程序;主控芯片的片内romcode作为一级启动程序,romcode上电运行后加载qspi flash内的程序,完成二级启动流程。romcode在主控芯片流片时就已经固化在芯片内部;而qspi flash出厂时其存储区域是空白的,未存储任何程序数据。因此,如何将程序固化到qspi flash成为工程应用的实际问题。
2、目前,qspi flash的程序固化通常使用以下2种方法:(1)使用专用ide软件和jtag仿真器,通过jtag仿真器连接板卡的jtag接口,在ide软件上配置下载的程序文件和下载地址,然后将程序固化到qspi flash。该方法在调试阶段较为常用,专用ide和jtag仿真器的成本一般较高,操作过程也较复杂。(2)使用qpsi flash烧写器。该方法适用于批量生产阶段,使用时将qpsi flash安装在烧写器上,在调试机的烧写器专用软件上配置下载的程序文件和下载地址,然后将程序固化到qspi flash,待程序固化完成后再将qspi flash焊接到板卡上;若需要更新qspi flash程序,则需要将qspi flash从板卡拆卸下来,再重新按上述步骤固化程序。显然,此种方法需要购置qpsi flash烧写器,成本较高,操作过程也较复杂,效率较低。
3、综上,上述2种常用qspi flash程序固化方法均存在成本较高,操作过程复杂,效率较低的缺陷。
技术实现思路
1、本发明的目的在于提供一种基于串口的qspi flash程序固化系统及其方法,本发明以解决qspi flash程序固化成本高、操作复杂、效率低的问题。
2、为解决上述技术问题,本发明提供了一种基于串口的qspi flash程序固化方法,包括如下步骤:
3、步骤一:在主控芯片上电后运行片内romcode,romcode的启动log输出到调试机的串口终端上,根据用户在串口终端输入的指令,romcode进入串口程序加载模式,调试机通过串口终端向主控芯片发送qspi flash程序固化软件;
4、步骤二:qspi flash程序固化软件从主控芯片的片内sram开始运行,完成硬件初始化和用户命令执行功能,以实现qspi flash程序固化;
5、其中,完成硬件初始化的流程包括:cpu初始化、串口初始化、ddr子系统初始化以及qspi子系统初始化;
6、完成用户命令执行功能的流程包括:在命令行模式下,根据用户输入的命令执行相应的操作,并在串口终端输出执行结果;所述执行结果包括:串口数据传输功能、qspiflash配置功能和qspi flash读写功能。
7、优选的,所述步骤一中在串口程序加载模式下能够接收调试机下传的二进制格式的qspi flash程序固化软件,根据该软件的信息头解析出加载和运行地址,然后qspiflash程序固化软件从主控芯片的片内sram开始运行。
8、优选的,执行所述串口数据传输功能的流程包括:首先在串口终端输入二进制数据下载命令,在串口终端按相应的传输协议发送二进制数据即qspi flash程序二进制文件;
9、其中所述二进制数据下载命令包括:下载地址参数,根据使用需求将下载地址指定为片内sram或ddr地址存储空间,以实现通过调试机串口向主控芯片的片内sram或ddr地址存储空间传输数据。
10、优选的,所述传输协议包括:kermit传输协议、xmodem传输协议和ymodem传输协议。
11、优选的,所述qspi flash配置功能包括:qspi flash线宽模式设置功能和qspiflash写保护区域设置功能;
12、其中执行所述qspi flash线宽模式设置功能的流程包括:所述qspi flash程序固化软件读取qspi flash的状态寄存器,获取当前线宽配置信息,根据用户输入的命令将线宽配置值写入qspi flash的状态寄存器,以实现将线宽设置为1线或4线;
13、执行qspi flash写保护区域设置功能的流程包括:所述qspi flash程序固化软件读取qspi flash的状态寄存器,获取当前写保护区域配置信息,根据用户输入的命令将写保护区域配置值写入qspi flash的状态寄存器。
14、优选的,执行所述qspi flash读写功能的流程包括:
15、qspi flash探测操作,完成对qspi flash的器件配置信息读取访问,并根据qspiflash的器件配置信息加载相应的设备驱动;其中器件配置信息包括:器件规格信息和存储空间组织形式信息;
16、擦除操作,根据用户命令完成以扇区为单位的数据擦除,将指定存储区域数据擦除为ff状态;
17、读操作,根据用户命令读取qspi flash的数据并写入主控芯片的片内sram或ddr地址存储空间;
18、写操作,根据用户命令将主控芯片的片内sram或ddr地址存储空间的数据写入qspi flash,完成qspi flash程序固化功能。
19、优选的,通过所述cpu初始化,为uart控制器、ddr控制器、qspi控制器工作准备好执行环境;
20、通过所述串口初始化,完成波特率设置、通信报文格式设置工作,以保证后续与串口终端进行通信交互;
21、通过所述ddr子系统初始化,完成ddr控制器初始化和ddr芯片的链路训练工作,为软件运行和数据存储提供空间;
22、qspi子系统初始化,完成qspi控制器的初始化配置工作。
23、优选的,所述qspi flash程序固化软件具有扩展支持的qspi flash器件类型功能,即向qspi flash程序固化软件添加新的qspi flash器件配置信息及相应的驱动程序源码,即可增加对该qspi flash器件的配置功能和读写功能。
24、本发明还提供了一种基于串口的qspi flash程序固化系统,包括:主控芯片和调试机;所述主控芯片上集成有sram、qspi控制器、ddr控制器和uart控制器;其中sram用于qspi flash程序固化软件的运行;qspi控制器与qpsi flash连接;ddr控制器与ddr芯片连接;ddr芯片用于qspi flash程序固化软件的运行和数据存储;uart控制器通过电平转换芯片与调试机的串口终端相连接,调试机内存储有qspi flash程序固化软件和qspi flash程序。
25、本发明与现有技术相比,具有如下有益效果:
26、(1)无需使用专用ide软件、jtag仿真器和qpsi flash烧写器,成本更低。
27、(2)程序固化过程仅需最基本的调试串口,操作简单,效率更高。
28、(3)具有qspi flash线宽模式设置功能,满足更多使用场景需求。
29、(4)具有qspi flash的写保护区域设置功能,满足数据安全性需求。