一种嵌入式计算机固件程序的下载方法
技术领域
本发明涉及电子信息领域,特别涉及一种嵌入式计算机固件程序的下载方法,应用于因CPU自身不带Flash程序存储器需外接并行Flash作为存储器的嵌入式计算机。
背景技术
在众多的嵌入式CPU处理器中,有一部分CPU不带内部Flash,并且其自身的内部RAM容量也很小,例如Atmel公司的AT91M55800处理器。在产品开发中选用这样的CPU处理器时,往往需要外接并行Flash作为嵌入式固件程序存储器,同时需要外接RAM作为数据存储器。选用这种CPU的好处是Flash和RAM的容量可以由用户根据自己的实际情况合理地进行选择,通常选择这类CPU的原因是那些自带Flash和RAM的CPU的内部Flash或者RAM容量太小,无法满足功能强大的嵌入式计算机的需求。而使用外部Flash作为嵌入式固件存储器的一个难点在于,由于客户所选择的Flash芯片各有不同,CPU生产厂家无法给出一个通用的嵌入式固件程序下载(编程)方法。而通常使用的方案是使用AXD(ARM eXtended Debugger,ARM扩展调试器)软件加载编译好的.axf文件,在RAM环境下进行程序仿真,在仿真程序里编写Flash的读/写驱动程序,结合上位机软件使用串口协议向CPU发送固件程序数据,CPU通过编写的串口驱动程序接收到数据后将其写入Flash。由于串口通讯速率较慢,当固件程序容量很大时,使用串口进行固件程序下载耗时很长。因此,上述固件程序下载方法存在步骤繁琐、耗时长、效率低等问题,严重时甚至会影响下一道工序的正常操作。
发明内容
为了解决现有技术中存在的上述问题,本发明提出一种嵌入式计算机固件程序的下载方法,能够简化操作程序、提高下载速度。
为实现上述目的,本发明采用如下技术方案:
本发明提供一种嵌入式计算机固件程序的下载方法,包括在上位机上执行的以下步骤:
安装Segger公司开发的ARM开发工具包,打开J-Flash ARM软件;
修改嵌入式计算机的CPU对应的.jflash配置文件;
装载修改后的.jflash配置文件,设置Jlink下载器参数;
使用Jlink下载器向所述CPU的外接Flash并行加载固件程序。
进一步地,所述修改嵌入式计算机的CPU对应的.jflash配置文件,具体包括:
找到所述CPU对应的.jflash配置文件。首先将CPU复位时间设置为0ms(使CPU停止程序运行回到初始状态);然后根据所述CPU的数据手册,通过设置时钟模式寄存器的值,设置外部晶振为时钟源,允许主时钟,设置时钟稳定的计数值;设置等待PLL(Phase LockedLoop,锁相环)合成器时钟发生器稳定工作的延迟时间,设置PLL合成器时钟发生器的第一倍频时钟频率和第二倍频时钟频率(PLL合成器时钟发生器首先工作在第一倍频时钟频率,然后稳定在第二倍频时钟频率);最后根据外接Flash的数据手册,通过设置EBI(ExternalBus Interface,外部总线接口)寄存器的值,对所述外接Flash的数据总线宽度、等待状态的时钟周期、页大小、片选信号使能以及地址重映射信息进行设置。
进一步地,所述设置Jlink下载器参数,具体包括:
在J-Flash ARM下的Project settings设置项里设置下载方式为JTAG(JointTest Action Group,联合测试工作组),并且设置JTAG speed以及JTAG扫描工具链信息。
进一步地,所述使用Jlink下载器向所述CPU的外接Flash并行加载固件程序,具体包括:
使用Target->Connect连接所述CPU,使所述CPU停止程序运行回到初始状态;使用Target->Erase chip对所述外接Flash进行整片擦除,再使用Target->Program&Verify对所述外接Flash进行写操作。
与现有技术相比,本发明具有以下有益效果:
本发明提出的一种嵌入式计算机固件程序的下载方法,通过在上位机上执行以下步骤:安装Segger公司开发的ARM开发工具包,打开J-Flash ARM软件,修改嵌入式计算机的CPU对应的.jflash配置文件,装载修改后的.jflash配置文件,设置Jlink下载器参数,使用Jlink下载器向所述CPU的外接Flash并行加载固件程序,能够实现向嵌入式计算机CPU的外接Flash快速下载固件程序。本发明所述方法具有操作简便、下载速度快等优点,解决了现有下载方法中存在的操作繁复、因串行传输数据使下载速度缓慢等问题。
附图说明
图1本发明实施例一种嵌入式计算机固件程序的下载方法的流程图。
具体实施方式
下面结合附图对本发明作进一步详细说明。
本发明实施例一种嵌入式计算机固件程序的下载方法的流程图如图1所示,所述方法在上位机上运行,包括以下步骤:
步骤101,安装Segger公司开发的ARM开发工具包,打开J-Flash ARM软件;
步骤102,修改嵌入式计算机的CPU对应的.jflash配置文件;
步骤103,装载修改后的.jflash配置文件,设置Jlink下载器参数;
步骤104,使用Jlink下载器向所述CPU的外接Flash并行加载固件程序。
本实施例的上位机需要在Segger公司开发的J-Flash ARM软件平台上运行。J-flash arm是单独的Flash烧写软件,能够把单独的bin文件或者hex文件烧写到计算机的flash里面去。因此,如果上位机上没有安装该软件,需要先安装软件,软件安装成功后,打开所述软件。打开J-Flash ARM软件后,修改CPU对应的.jflash配置文件,在ARM开发工具包的安装目录找到.jflash配置文件,根据外接Flash的数据手册,采用文本编辑器打开并修改.jflash配置文件。修改完成后,使用J-Flash ARM软件工具装载修改过的.jflash配置文件。然后使用Jlink下载器连接CPU,并在上位机软件平台上装载需要下载的固件程序。Jlink下载器利用Flash的CFI(Common Flash Memory Interface,公共Flash接口)实现对外接Flash的擦除、编程等操作。
本实施例使用J-Flash ARM软件,通过修改并装载CPU对应的.jflash配置文件,使用Jlink下载器连接CPU,能够实现向嵌入式计算机CPU的外接Flash并行下载固件程序,提高了下载速度及编程的正确率。
作为一种可选实施例,所述修改嵌入式计算机的CPU对应的.jflash配置文件,具体包括:
找到所述CPU对应的.jflash配置文件。首先将CPU复位时间设置为0ms;然后根据所述CPU的数据手册,通过设置时钟模式寄存器的值,设置外部晶振为时钟源,允许主时钟,设置时钟稳定的计数值;设置等待PLL合成器时钟发生器稳定工作的延迟时间,设置PLL合成器时钟发生器的第一倍频时钟频率和第二倍频时钟频率;最后根据外接Flash的数据手册,通过设置EBI寄存器的值,对所述外接Flash的数据总线宽度、等待状态的时钟周期、页大小、片选信号使能以及地址重映射信息进行设置。
作为一种可选实施例,所述设置Jlink下载器参数,具体包括:
在J-Flash ARM下的Project settings设置项里设置下载方式为JTAG,并且设置JTAG speed以及JTAG扫描工具链信息。
作为一种可选实施例,所述使用Jlink下载器向所述CPU的外接Flash并行加载固件程序,具体包括:
使用Target->Connect连接所述CPU,使所述CPU停止程序运行回到初始状态;使用Target->Erase chip对所述外接Flash进行整片擦除,再使用Target->Program&Verify对所述外接Flash进行写操作。
为了更好地理解本发明实施例的技术方案,下面给出应用本发明所述方法,对Atmel公司的AT91M55800嵌入式微处理器的外接Flash(型号为SST36VF3203)快速下载固件程序的一个应用实例。方法如下:
S1、下载并且安装Segger公司开发的ARM开发工具包,打开J-Flash ARM软件。
S2、修改设置脚本文件。
AT91M55800嵌入式微处理器有1个EBI接口,该接口有8个片选信号CS0-CS7。进行硬件设计时,Flash的片选信号连接CPU的CS0引脚,外部RAM连接CPU的CS1引脚。按照CPU硬件初始化顺序进行设置:首先是CPU复位时间,设置其值为0ms,使CPU停止程序运行,回到初始状态。其次是设置系统时钟频率,根据AT91M55800的数据手册可知,寄存器地址0xFFFF4020对应的寄存器为APMC Clock Generator Mode Register,用于设置时钟模式。首先该将寄存器的值设置为0x002F0002,根据APMC Clock Generator Mode Register各个bit位的设置可知,当该寄存器的值为0x002F0002时,使用外部晶振作为时钟源,允许主时钟,以及时钟稳定计数值设定为47。然后设置延时等待20ms,等待晶振的PLL合成器时钟发生器稳定工作。延时结束之后,将寄存器的值设置为0x032F4102,先使PLL合成器时钟发生器的倍频时钟为16MHz,最后变到32MHz。系统时钟频率设置完成后,CPU将稳定运行在32MHz时钟频率。再次是设置EBI控制寄存器。由于Flash连接CPU的CS0,因此需要设置EBI_CSR0寄存器,寄存器地址为0xFFE00000。EBI_CSR0寄存器用于设置外部所接设备的数据总线宽度、等待状态的时钟周期、页大小、片选使能等信息。根据Flash芯片SST36VF3203的数据手册设置EBI_CSR0寄存器对应的bit区域值,并且一直允许片选CS0,这样Jlink就能对Flash进行持续的操作。最后设置EBI Remap Control Register寄存器,寄存器地址为0xFFE00020,将其值设置为1,这样设置可以取消CPU的RAM重映射功能,使计算机从Flash启动。
S3、装载修改后的.jflash配置文件。
在Project settings下的Target Interface中设置下载方式为JTAG,设置JTAGspeed before init值为30kHz,设置JTAG speed after init为12000kHz,设置JTAG scanchain information为Auto detection。
S4、装载嵌入式固件程序。
使用Target->Connect连接到CPU,使CPU停止程序运行,并使CPU处于halt状态,回到初始化状态。使用Target->Erase chip对Flash进行整片擦除,再使用Target->Program&Verify对Flash进行写操作,也就是下载固件程序到Flash。
上述仅对本发明中的几种具体实施例加以说明,但并不能作为本发明的保护范围,凡是依据本发明中的设计精神所做出的等效变化或修饰或等比例放大或缩小等,均应认为落入本发明的保护范围。