Cosmos drivers

From OpenSSDWiki
Viewed 6694 times, With a total of 5 Posts
Jump to: navigation, search

Clicked A Few Times
Threads 4
Posts 9
Hello,

I am trying to use the Cosmos board and am currently following the "Cosmos OpenSSD Software User Guide" found in the web-page.

However I have an issue with the drivers. I am running Ubuntu 12.04 LTS with 3.2.0 generic kernel. When I follow the instructions and I try to install the drivers by executing the command "insmod enc_pcie.ko" the terminal gets stacked. Seems like the procedure is in some kind of a while loop that never finishes. The only way to kill the process is to close the terminal.

I left it working for a whole day but the process was not complete. Any ideas what it may be wrong or what I should do? Also are their drivers available for Windows? In the wiki page it says that drivers for windows systems also exist but I was unable to find them.

Thanks,
George
Edited On 7:39:57 PM - Sun, May 3rd 2015 by GeoMap

Clicked A Few Times
Threads 2
Posts 24
Hello, George.

Could you attach the capture of UART messages? It will help us to figure out what your problem is.

The driver for Windows are not yet released. It is under development.
Edited On 6:05:53 AM - Mon, May 4th 2015 by Enclab

Clicked A Few Times
Threads 4
Posts 9
I did a bit more digging and I found out that the problem was the instruction "while (Xil_In32(XPAR_PCIE_STATUS_CHECK_0_BASEADDR) == 0);". This instruction can be found in the main in the Tutorial and Greedy FTL but not in the Dummy FTL.

It seems that when I run the project on the board it gets in an infinite loop in that instruction and keeps the PCIe busy so I can not install the drivers. The output is stacked at:

"---------------------------------"
"------ SSD firmware start -------"
"---------------------------------"

If I remove the instruction then I am able to install the drivers and go through to initializing NAND and FTL mapping.

What is "while (Xil_In32(XPAR_PCIE_STATUS_CHECK_0_BASEADDR) == 0);" suppose to do and why does it cause that problem? Would it be problematic if I just remove that instruction?
Edited On 6:41:17 PM - Mon, May 4th 2015 by GeoMap

Clicked A Few Times
Threads 2
Posts 24
Dummy FTL has a bug, so fixed version (v1.0.1) is uploaded.

"while (Xil_In32(XPAR_PCIE_STATUS_CHECK_0_BASEADDR) == 0);" must not be removed. This loop makes sure that the pcie core is ready.

When creating partition, size of the disk must not exceed available physical size. ENC_SSD_SECTORS in enc_pcie.h defines the size of the disk in sector unit. Modify following line properly.
"#define ENC_SSD_SECTORS (2*64*1024*1024*2)//4096(12)//64(6)"

Clicked A Few Times
Threads 4
Posts 9
When you say sector units do you mean blocks? The Nand flash that I have has 4096 blocks per die and it has 4 dies. However I do not think that is the problem.

When I have the instruction "while (Xil_In32(XPAR_PCIE_STATUS_CHECK_0_BASEADDR) == 0);" the project gets "stacked" in that point. It seems that the while statement is always true. When I try to install the drivers the Linux kernel gets stacked as well after I enter the instruction "insmod enc_pcie.ko"

I tried the fix you suggested but it does not seem to work

George

Clicked A Few Times
Threads 2
Posts 24
I mean sector unit is 512 bytes.

The while statement is always true until host PC is booted. Initially, host PC should be turned off because plug & play is not supported in the Cosmos OpenSSD.
When you see the message "SSD firmware start", then turn on the host PC and you can see initialization messages. Linux driver should be installed after seeing these initialization messages.


Forum >> Cosmos OpenSSD Platform >> Cosmos General Issues



Who's here now Members 0 Guests 0 Bots/Crawler 0


AWC's: 2.5.12 MediaWiki - Stand Alone Forum Extension
Forum theme style by: AWC
Views
Personal tools