线程的FCT的引用。在一部分命令序列已经被通信到闪速条之后,仲裁单元406还可以被配置为调整线程的优先级。
[0047]闪速协议序器408被配置为执行与被安排执行的线程相关联的指令和命令序列。在接收对线程的引用时,闪速协议定序器408可以从线程的FCT 403取回线程的上下文。闪速协议定序器408可以顺序地进行与线程相关联的命令序列的步骤。参照图3的命令序列302作为示例,在实施例中,闪速协议定序器408可以顺序地进行与命令序列302相关联的步骤,该步骤包括:激活电路以选择对应于芯片选择字段304的闪速条或发送对应于芯片选择字段304的闪速ID,将命令306、308、310通信到所选择的闪速条,以及检查与所选择的闪速条相关联的状态寄存器。在检测切换指令312时,闪速协议定序器408可以发送线程切换指示到仲裁单元406并且暂停操作。在暂停操作前,闪速协议定序器408可以存储在线程的FCT中的线程的上下文。
[0048]尽管在前述的讨论中,线程被用来通信存储器控制器118和闪速条120-1和120-2之间的命令序列,但是例如,在其它实施例中,代替于线程,其它适当的数据结构可以被用于存储命令序列、该命令相关联的优先级信息、所分配的资源等。这样的数据结构的阵列可以用于代替线程。例如,数据结构的条目零可以与闪速条120-1相关联,条目一可以与闪速条120-2相关联等。在这些实施例中,数据结构可以被扫描以识别具有最高优先级的命令序列。在数据结构的条目中的空可以指示没有要被传送到对应于该条目的闪速条的命令序列。数据结构条目还可以包括对与需要被通信的该条目相关联的命令序列的部分的引用。例如,参照图3,如果302-1是先前被通信到闪速条的部分,在与命令序列302相关联的数据结构中的条目可以包括对部分302-2的引用。这样的数据结构在当操作系统没有被采用时的情形中是有用的。
[0049]图5是示例的方法500的高级别流程图,在实施例中,该方法500可以在闪速接口模块128中来实现,以使能主机处理器112以及闪速条120-1和120-2之间的通信。在该实施例中,归因于示例的方法500的每个块的功能性可以在命令生成器404、仲裁单元406和闪速协议定序器408中来实现。
[0050]在块502处,存储器控制器118的部分可以初始化闪速接口模块128。在实施例中,处理器206可以执行存储在启动代码ROM 210中的软件指令,以举例说明闪速接口模块128和到RAM 212的复制闪速接口模块12 8。在该实施例中,处理器2 O 6可以检测在闪速存储器116中的闪速条的数目。响应于检测到闪速条的数目,闪速接口线程402-1.....402-N的对应的数目可以被创建或衍生,且闪速接口线程可以与对应的闪速条相关联。在实施例中,在块502处,实时操作系统(RTOS)(未示出)可以被调用以创建线程402-1、402-2.....402-N。
另外,在块502处,当线程被创建时,该线程可以被分配优先级。在一些实施例中,线程被分配相同的优先级。在其它实施例中,存储器118可以从驱动器110接收期望的线程优先级。线程在创建之后可以保持在非活动状态中。在之前描述的数据结构替代线程使用的实施中在块502处,数据结构可以被适当地初始化。
[0051 ]在块504处,闪速接口模块128可以从驱动器110接收一个或多个闪速命令。每个闪速命令可以包括对闪速条的标识的引用。基于该标识,闪速接口模块128可以确定与闪速命令相关联的闪速条的芯片选择或芯片ID。另外,在块504处,命令生成器404可以从闪速命令生成命令序列。生成命令序列的过程已经参照图3在前面讨论过。基于闪速条的标识,命令生成器404可以将生成的命令序列通信到与闪速条相关联的线程。在一些实施例中,当执行命令序列时,命令生成器404可以接收要被分配到与闪速条相关联的线程的新的优先级。该新的优先级可以与在块504处分配到线程的优先级不同。在块504处,命令生成器404可以为线程重新分配新的优先级。
[0052]在一些实施例中,基于闪速命令,响应于主机系统100和闪速存储器116之间的命令序列,命令生成器404可以识别并配置可以用于通信数据的软件和硬件资源。硬件资源的示例包括从来自DMA控制器220、定时器(未示出)等的可用的若干逻辑数据路径中选择的逻辑数据路径。软件资源的示例包括信号灯、互斥、队列、从RAM 212分配的存储器等。
[0053]在块506处,为了使能线程以将命令序列通信到闪速条,分配到线程的硬件资源可以与具有任务的线程相关联,该任务为通过存储对线程的FCT中的硬件资源的引用来执行命令序列。另外,在块506处,硬件资源本身可以被配置。这可以包括配置中断控制器、暴露中断以生成命令序列已经被成功通信的指示、清除状态和误差寄存器等。
[0054]在块508处,线程的FCT可以被配置对分配到线程的软件资源的引用,以使能命令序列的通信。存储对软件资源的引用是特别有用的,因为软件资源可以在已经被通信到闪速条的命令序列之后解除分配。另外,在块508处,在一个实施例中,线程可以被转变到活动状态。在一些实施例中,在接收命令序列时,线程可以自动转换到活动状态。在其它实施例中,命令生成器404可以在将命令序列通信到线程之后,强制线程转换到活动状态。
[0055]在块510处,闪速接口模块的元件可以识别已经转换到活动的线程。如下面更详细地讨论,在两个或多个线程是活动的情形中,具有较高优先级的线程可以被安排为用于执行。安排用于执行的线程可以包括发送指示到闪速协议定序器408。
[0056]在块512处,在实施例中,闪速接口模块128的元件可以执行与被选择被执行的线程相关联的命令序列。在执行命令序列之前,在块512处,线程的上下文可以从线程的FCT恢复。当线程在之前被执行过时,恢复上下文可以包括将处理器210的硬件寄存器恢复到它们的状态。当在线程的执行响应于检测到切换命令被中断之前,命令序列的第一部分被预先通信,并且命令序列的第二部分正准备要被通信到闪速条时,这是特别有用的。在块512处,响应于在命令序列中检测到切换命令,线程的执行可以被暂停,并且,如果这样的线程存在,该方法可以返回到块510以安排较高优先级的活动线程的执行。在命令序列的最后部分被通信的实例中,在块510处,可以生成指示以指示命令序列的完成。
[0057]图6是示例的方法600的流程图,根据实施例,该方法600可以在闪速接口模块128的命令生成器404处来实现。在块602处,命令生成器404可以从存储器控制器118接收闪速命令。在实施例中,在块602处,命令生成器404还可以接收作为闪速命令的预期接收方的闪速条的标识。参照图3,闪速命令300是可以在块602处接收的示例的闪速命令。在块602处,命令生成器404还可以接收与闪速命令相关联的优先级。
[0058]在块604处,命令生成器404可以解析或分析接收到的闪速指令,以识别在闪速命令中的命令和数据。参照图3,命令生成器404可以在块604处识别读取感测命令306、轮询状态命令308和读取数据命令310。命令生成器404可以与由闪速存储器116支持的所有有效命令的查询表相关联。在块604处,如果命令无效,命令生成器404可以指示误差情况。
[0059]在检测到有效的闪速命令时,在块604处,命令生成器404可以生成对应的部分。例如,在检测到读取感测命令306时,命令生成器404可以在块604处生成部分302-1。在实施例中,命令生成器404可以顺序地识别命令和其相关联的数据,并且通过芯片选择304和切换312来封装命令和其相关联的数据。芯片选择304可以对应于在块602处接收的闪速条的身份。在实施例中,以该方式,命令生成器404可以生成命令序列302。基于闪速命令,在块604处,命令生成器404可以确定例如读取感测306和轮询状态308的两个连续命令可以作为单个部分通信。在该情况中,可以生成部分302-1,而没有切换指令312。因此,闪速协议定序器408可以连续地通信部分302-1和302-2。
[0060]在块606处,命令生成器404可以将生成的命令序列发送到与接收到的闪速命令相关联的线程。在优先级在块602处被接收的实施例中,在块606处,与接收到的闪速命令相关联的线程可以被分配优先级。在其它实施例中,命令生成器404可以基于命令序列选择适当的优先级,并且将所选择的优先级分配给该线程。
[0061 ]图7是示例的方法700的流程图,该方法700可以在闪速接口模块128处来实现,以允许经由公共闪速接口将部分命令序列通信到不同的闪速条。在块702处,第一命令序列被选择。如先前所解释的,命令序列可以基于与第一命令序列相关联的优先级而被选择。在一些实施例中,如先前所解释的,命令序列可以与线程相关联,并且该线程可以与闪速条相关联。在其它实施例中,命令序列可以被存储在先前讨论的数据结构中。
[0062]在块704处,闪速条的标识可以通过检查命令序列来确定。响应于确定该条的标识,闪速条可以通过断言与闪速条相关联的芯片选择信号而被使能。在块704处,所选择的命令序列的第一部分被通信到所识别的闪速条。另外,在所选择的命令序列的第一部分中的命令和数据可以被通信到闪速条。值得注意的是,该命令序列的第一部分经由公共闪速接口被通信。然而,例如,只有其芯片选择信号被断言的闪速条响应于命令和数据。在检测命令序列中的切换312时,在块704处,可以生成指示或信号,以指示第一部分的通信的完成。在使用数据结构代替线程的实施例中,指向命令序列的下一部分的指针可以被存储在与所选择的命令序列相关联的数据结构的条目中。
[0063]在块706处,第二命令序列可以经由公共闪速接口被通信到第二闪速条。第二命令序列可以响应于检测到在第一命令序列的第一部分中的切换来被通信。第二命令序列可以被选择,因为其具有比第一命令序列更高的优先级。在第二命令序列与第一命令序列具有相同优先级的实例中,如果轮循方案被用来选择命令序列,第二命令序列可以仍然被选择以用于通信。在块706处,在通信第二命令序列之前,第一闪速条的芯片选择可以在断言第二闪速条的芯片选择之前被解除断言(de-asserted),以避免争用命令闪速接口。虽然,第一闪速条的芯片选择被解除断言,在闪速存储器116中的微控制器(未示出)可以处理第一命令序列的第一部分,而存储器控制器118正将第二命令序列通信到第二闪速条。
[0064]在块708处,第一命令序列的第二部分可以经由公共闪速接口被通信到第一闪速条。如先前解释的,第二闪速条的芯片选择可以在第一闪速条的芯片选择在块708处被断言之前被解除断言,以防止争用。
[0065]图8是可以在图4的仲裁单元406处实现的示例的方法800的流程图。在实施例中,
在块802处,仲裁单元406可以周期性地查询或询问线程402-1.....402-N的FCT 403,以确定线程的402-1.....4