CN106775663B - 一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 - Google Patents
一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 Download PDFInfo
- Publication number
- CN106775663B CN106775663B CN201611074920.3A CN201611074920A CN106775663B CN 106775663 B CN106775663 B CN 106775663B CN 201611074920 A CN201611074920 A CN 201611074920A CN 106775663 B CN106775663 B CN 106775663B
- Authority
- CN
- China
- Prior art keywords
- sata
- executing
- address
- controller
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种SYS/BIOS系统下基于SIL3132控制器的SATA硬盘驱动方法,所述方法步骤如下:首先对主控器端PCIE进行初始化;然后配置SIL3132控制器并进行初始化,包括对SATA存储器的识别,通过控制端点对设备进行地址映射;利用SATA指令完成对SATA存储设备的同步读、异步写等接口。
Description
技术领域
本发明涉及SATA 硬盘技术领域,特别涉及一种SYS/BIOS系统下基于SIL3132控制器的SATA硬盘驱动方法。
背景技术
目前,TI公司的DSP 处理器在信号处理领域凭借良好的平台性能占领了大量市场。TI DSP系统下提供多种开发工具支持,其中TI 自研的SYS/BIOS系统作为官方支持,提供了包含多种算法库及丰富外设驱动的支持。
然而,对于TI DSP SYS/BIOS系统的文件存储功能,由于处理领域在本地端存储需求较少,支持较为有限。仅支持RAMDISK文件系统,无法直接使用在SATA硬盘存储介质上,严重制约了DSP方案在特定应用下的本地数据存储使用。现有的专利中有没有相关问题的解决方案被披露。
综上所述,如何提供一种支持SATA硬盘读写操作的驱动程序,为本地数据存储提供解决方案,将是目前亟待解决的问题。
发明内容
本发明要解决的技术问题是提供一种SYS/BIOS系统下基于SIL3132控制器器的SATA硬盘驱动方法。
本发明要解决的技术问题是提供一种SYS/BIOS系统下基于SIL3132控制器器的SATA硬盘驱动方法,包括以下步骤:
(1)先将处理器端PCIE接口与SATA控制器SIL3132相连接,然后将SIL3132 SATA控制器端口与SATA硬盘相连接;
(2)对主控器端PCIE进行初始化;
(3)配置SIL3132控制器并进行初始化,包括对SATA存储器的识别,通过控制端点对设备进行地址映射;
(4)利用SATA指令来实现对硬盘操作的同步读、异步写。
步骤2中对SIL3132初始化的方法包括以下步骤:
(1)获取PCIE的外绑地址outbound;
(2)设置基地址寄存器BAR;
(3)使能PCIE的功能;
(4)配置设备特性;
(5)配置链路的特性;
(6)重新训练链路;
(7)清除全局复位关闭中断;
(8)清除端口0/1复位;
(9)使能32位指令激活模式;
(10)关闭一对多端口功能PMP;
(11)清除错误计数,结束。
(1)获取接收缓存区大小,并计算读取字节数;
(2)判断缓存区地址是否是全局地址,判断结果是全局地址则执行(3),否则执行(4);
(3)预先回写Cache;
(4)将其转化成全局地址;
(5)构建SATA指令对应的PRB;
(6)提交指令并等待完成;
(7)判断全局缓存区的地址是否为全局地址,判断结果是全局地址则执行(8),否则执行(9);
(8)无效化Cache;
(9)结束。
步骤4中,实现异步写接口的方法,包括以下步骤:
(1)找到空闲的指令槽;
(2)判断是否为缓存数据,判断结果如果为是则执行(3),否则执行(4);
(3)获取空闲缓存区,将数据储存;
(4)判断数据是否为全局地址,判断结果是全局地址则执行(5),否则执行(6);
(5)回写Cache;
(6)转化为全局地址;
(7) 构建SATA指令对应的PRB;
(8)提交指令,结束。
本发明可以实现此类平台对SATA存储设备的支持,可以在此基础上建立或移植文件系统,可以很好的拓展该平台的应用范围。
附图说明
图1 本发明的原理框图;
图 2 本发明的硬件结构框图;
图 3 本发明中的初始化流程图;
图 4本发明中的同步读操作流程图;
图 5本发明中的异步写操作流程图。
具体实施方式
图1 本发明的原理框图,如图1所示,在硬件就绪并装载SYS/BIOS后,首先进行主控制器端PCIE的初始化,以便来访问SIL3132 PCIE-SATA控制器等所需要的硬件,然后对SIL3132控制器进行初始化,最后通过填写该控制器提供的端口请求块PRB,实现读、写等上层应用所需要的读、写接口。
硬件连接如图2所示,其中处理器1含有PCIE控制模块与PCIE接口; SIL3132PCIE-SATA控制器芯片2有两个独立的SATA的通道,独立链路/传输/FIFO,独立指令获取/执行;具有SATA接口的存储设备3在本发明中使用的是两片GLS85LS1064B SSD芯片,每块芯片都可以作为一个独立的存储设备与SIL3132的SATA接口相连;而其他外设4是为了实现平台的其他重要功能。
我们对处理器端PCIE进行初始化,步骤如下:
步骤201:使能模块的电源域和时钟域;
步骤202:配置锁相环PLL;
步骤203:开始根据物理层配置物理线路特性;
步骤204:设置工作模式为RootComplex,该工作模式直接与CPU与内存相连,作为PCIE设备树的根;
步骤205:配置链路功能;
步骤206:设置基地址寄存器BAR;
步骤207:配置外绑地址outbound转换关系;
步骤208:使能链接训练状态状态机LTSSM(Link Training Status StateMachine);
步骤209:判断LTSSM状态,是L0状态则配置成功,否则失败。
完成以上初始化后便可以对SIL3132 PCIE-SATA控制器通过内存或IO进行访问,接下来初始化SIL3132 PCIE-SATA控制器,过程如图3所示:
步骤301:获取PCIE的外绑地址outbound;
步骤302:设置基地址寄存器BAR;
步骤303:使能包括内存地址空间等PCIE功能;
步骤304:配置MaxRead RequestSize等设备特性;
步骤305:配置RCB(Request Completion Boundary,用于内存读请求的对齐)等链路特性;
步骤306:重新训练链路;
步骤307:清除全局复位关闭中断;
步骤308:清除端口0/1复位;
步骤309:使能32位指令激活模式;
步骤310:关闭一端口多设备功能PMP(Port Multiplier);
步骤311:清除错误计数。
SIL3132控制器初始化完成后,我们便可以通过提交端口请求块PRB(PortRequest Block)对与之相接的存储器进行操作了,PRB中包括了操作类型, ATA指令类型,控制器DMA获取/存放的位置,该结构需要传输给控制器才会真的起作用。SIL3132控制器具有31个指令槽,即具有容纳31条指令的能力,指令执行的顺序是指令提交的顺序(先进先执行)。
由于大多数的文件系统的读操作必须是同步形式的,所以在控制器驱动这一层也仅需通过同步提交指令的形式来实现读操作接口。根据上面的描述可以实现同步的功能,仅两步:
1)发起ATA指令FLUSH CAHCE EXT;
2)等待所有指令槽空闲。
同步读的流程中应该存在两次Cache操作,这是必不可少的,因为TMS320C6678只会硬件维护L1/L2两级储存器的一致性,其他储存器的数据一致性需要软件来维护。在指向其他储存器或其他核心的L1/L2存储器时都是全局地址,同时也是没有硬件一致性维护的,虽然当前核心的L1/L2地址也有全局版本,但仍可通过判断地址是否全局来快速决定是否需要对特定地址进行Cache一致性维护。
对于软件进行的Cache一致性维护操作,第一次的回写操作是保证Cache line中非接收缓冲区的部分的数据更新到下一级储存器,以免后面的无效操作导致这部分数据丢失;第二次的无效操作是确保处理器之后能从Cache中读取到DMA传送的最新数据。
接下来使用通用SATA指令实现同步读操作,步骤如图4所示:
步骤401:获取并接收缓存区地址,并计算读取字节数;
步骤402:判断缓存区地址是否为全局地址,如果是则执行步骤403,否则执行404;
步骤403:预先回写Cache,进行一致性维护;
步骤404:转化为全局地址;
步骤405:构建SATA指令对应的PRB;
步骤406:提交指令并等待完成,此步完成了同步;
步骤407:判断原始缓存区地址是否为全局地址,判断结果如果是全局地址则执行408,否则执行409;
步骤408:无效化Cache;
步骤409:结束;
由于文件系统写操作通常是支持延迟写模式的,则在驱动层需要提供相应的支持,所以该层写操作实现利用了异步的指令提交/执行操作。
与读操作一样,写操作过程同样需要Cache操作,由于没有数据接收,则不需要Cache无效化操作,但如果数据源不位于L1/L2,回写操作依旧必不可少,这是为了确保处理器填充的发送数据被写入到下一级储存器,这样DMA才能获取到最近更新的数据。
写操作还需要根据外部选项参数来决定是否使用额外数据缓冲区来缓冲数据,因为根据大多数文件系统的的设计(例如FAT),在整个文件操作周期中,会写很多文件系统内部数据到储存器。这些写操作的数据源会在相应的函数调用结束后就失效,所以需要缓冲区针对这些写操作的数据源进行缓存,否则DMA可能取到错误的数据。
SATA指令实现异步写操作步骤流程如图5所示:
步骤501:找到空闲指令槽;
步骤502:判断是否为缓存数据源,判断结果如果是缓存数据源则执行步骤503,否则执行步骤504;
步骤503:获取空闲缓存区,将数据缓存;
步骤504:判断数据源地址是否全局地址,判断结果如果是全局地址则执行505,否则执行506;
步骤505:回写Cache;
步骤506:转化为全局地址;
步骤507:构建SATA指令对应的PRB;
步骤508:提交指令,结束。
Claims (2)
1.一种SYS/BIOS系统下基于SIL3132控制器的SATA硬盘驱动方法,包括以下步骤:
(1)先将处理器端PCIE接口与SATA控制器SIL3132相连接,然后将SIL3132 SATA控制器端口与SATA硬盘相连接;
(2)对主控器端PCIE进行初始化;
(3)配置SIL3132控制器并进行初始化,包括对SATA存储器的识别,通过控制端点对设备进行地址映射;
(4)利用SATA指令来实现对硬盘操作的同步读、异步写;
具体地,步骤(4)中实现同步读过程接口的方法,包括以下步骤:
(1)获取接收缓存区大小,并计算读取字节数;
(2)判断缓存区地址是否是全局地址,判断结果是全局地址则执行(3),否则执行(4);
(3)预先回写Cache;
(4)将其转化成全局地址;
(5)构建SATA指令对应的端口请求块
(6)提交指令并等待完成;
(7)判断全局缓存区的地址是否为全局地址,判断结果是全局地址则执行(8),否则执行(9);
(8)无效化Cache;
(9)结束;
步骤(4)中,实现异步写接口的方法,包括以下步骤:
(1)找到空闲的指令槽;
(2)判断是否为缓存数据,判断结果如果为是则执行(3),否则执行(4);
(3)获取空闲缓存区,将数据储存;
(4)判断数据是否为全局地址,判断结果是全局地址则执行(5),否则执行(6);
(5)回写Cache;
(6)转化为全局地址;
(7)构建SATA指令对应的端口请求块;
(8)提交指令,结束。
2.根据权利要求1所述的SYS/BIOS系统下基于SIL3132控制器的SATA硬盘驱动方法,其特征在于:步骤(2)中对SIL3132初始化的方法包括以下步骤:
(1)获取PCIE的外绑地址outbound;
(2)设置基地址寄存器BAR;
(3)使能PCIE的功能;
(4)配置设备特性;
(5)配置链路的特性;
(6)重新训练链路;
(7)清除全局复位关闭中断;
(8)清除端口0/1复位;
(9)使能32位指令激活模式;
(10)关闭一对多端口功能PMP;
(11)清除错误计数,结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611074920.3A CN106775663B (zh) | 2016-11-30 | 2016-11-30 | 一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611074920.3A CN106775663B (zh) | 2016-11-30 | 2016-11-30 | 一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106775663A CN106775663A (zh) | 2017-05-31 |
CN106775663B true CN106775663B (zh) | 2020-07-21 |
Family
ID=58900967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611074920.3A Active CN106775663B (zh) | 2016-11-30 | 2016-11-30 | 一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106775663B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004023268A2 (en) * | 2002-09-06 | 2004-03-18 | Silicon Image, Inc. | Method and apparatus for double data rate serial ata phy interface |
CN103502963A (zh) * | 2010-12-28 | 2014-01-08 | 晶像股份有限公司 | 用于助益可配置端口类型快捷外围组件互联/串行高级技术附连主机控制器架构的机制 |
-
2016
- 2016-11-30 CN CN201611074920.3A patent/CN106775663B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004023268A2 (en) * | 2002-09-06 | 2004-03-18 | Silicon Image, Inc. | Method and apparatus for double data rate serial ata phy interface |
CN103502963A (zh) * | 2010-12-28 | 2014-01-08 | 晶像股份有限公司 | 用于助益可配置端口类型快捷外围组件互联/串行高级技术附连主机控制器架构的机制 |
Non-Patent Citations (1)
Title |
---|
SiL3132 PCI Express to 2-Port Serial ATA II Host Controller;Silicon Image;《www.siliconimage.com》;20041231;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106775663A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9256384B2 (en) | Method and system for reducing write latency in a data storage system by using a command-push model | |
US9304938B2 (en) | Storage device and data transferring method thereof | |
KR100909119B1 (ko) | 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법 | |
US8086765B2 (en) | Direct I/O device access by a virtual machine with memory managed using memory disaggregation | |
US9727503B2 (en) | Storage system and server | |
US9696942B2 (en) | Accessing remote storage devices using a local bus protocol | |
KR100708128B1 (ko) | 낸드 플래시 메모리 제어 장치 및 방법 | |
US7805543B2 (en) | Hardware oriented host-side native command queuing tag management | |
US10983921B2 (en) | Input/output direct memory access during live memory relocation | |
US20140164666A1 (en) | Server and method for sharing peripheral component interconnect express interface | |
TWI719654B (zh) | 閃存實體資源集合管理裝置及方法以及電腦程式產品 | |
CN112416250B (zh) | 基于NVMe的固态硬盘的命令处理方法及相关设备 | |
KR101511972B1 (ko) | 계층적 캐싱 설계에서 캐시들 간 효율적 통신을 위한 방법 및 장치 | |
US7653775B2 (en) | Enhancing performance of SATA disk drives in SAS domains | |
US10289421B2 (en) | Booting of IHS from SSD using PCIe | |
US20160062659A1 (en) | Virtual memory module | |
CN115495389A (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
CN115454902A (zh) | 一种基于pcie接口的nvme通信系统及方法 | |
US20200159680A1 (en) | Programming and controlling compute units in an integrated circuit | |
TWI474254B (zh) | 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 | |
WO2009115058A1 (zh) | 提供闪存存储功能的主板及其存储方法 | |
CN106775663B (zh) | 一种sys/bios系统下基于sil3132控制器的sata硬盘驱动方法 | |
KR20210094178A (ko) | 직렬로 연결된 전자 장치들 사이에서 컴플리션을 조기에 전송하기 위한 컴퓨팅 시스템 | |
CN118363914B (zh) | 数据处理方法、固态硬盘设备及主机 | |
US20120131236A1 (en) | Communication between a computer and a data storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210401 Address after: 621000 building 31, No.7, Section 2, Xianren Road, Youxian District, Mianyang City, Sichuan Province Patentee after: China Ordnance Equipment Group Automation Research Institute Co.,Ltd. Address before: 621000 Mianyang province Sichuan City Youxian District Road No. 7 two immortals Patentee before: China Ordnance Equipment Group Automation Research Institute |