Skip to content

JustinSuzumiya/cap_layer_old

Repository files navigation

How to build and run Jasmine

1.1 Compile the firmware using GNU tools

	Your PC should have gcc installed. Jasmine has been built and tested with
	Sourcery G++ Lite 2010.09-51 for ARM EABI.
	From the build_gnu directory, run Make utility.
	The Makefile is configured to build Tutorial FTL. If you want to build Greedy FTL,
	modify the first line of Makefile as follows:

		FTL	= greedy

	When the build process is finised, you will see firmware.bin created,
	which is a binary image of the firmware.
	You can install the firmware image onto Jasmine board using the installer.

1.2 Compile the firmware using RealView tools

	Your PC should have RVDS installed. Jasmin has been built and tested with RVDS v3.1.
	If you want to build Tutorial FTL, do the following from the Command Prompt window:

		cd build_rvds
		build.bat tutorial

	If you want to build Greedy FTL, do the following from the Command Prompt window:

		cd build_rvds
		build.bat greedy

	When the build process is finised, you will see firmware.bin created,
	which is a binary image of the firmware.
	You can install the firmware image onto Jasmine board using the installer.

2. Compile the installer

	installer\installer.sln is a Visual C++ 2005 Solution file.
	It has also been tested with a free edition of Visual C++ 2010 Express.
	Double click installer.sln and build it.

3. Install the firmware

	Set the jumper J2 to factory mode position and turn on the power to Jasmine board.
	You can hot-plug the Jasmine board into your PC's SATA socket, if your motherboard
	supports SATA hot plugging. Old mother boards do not support it. In that case,
	you should connect SATA cable first and then turn on the PC power.
	install.exe and firmware.bin should be in the same directory.
	Jasmine boards are shipped with scan list installed already.
	Therefore, you should do the steps in Section 3.1.

	3.1 Reinstall

	If this is not the first time you install firmware onto Jasmine board,
	the NAND flash will not be blank. Run install.exe and follow these steps:

		1  initialize
		2  read scan list from flash block 0
		3  install FW

	If you see a message "ERROR: cannot find scan list on bank" at the second step,
	there are two possible causes:

		- The block #0 does not contain any scan list, because it is blank.
			This is the case when Jasmine board is fresh out of the box. Refer to Section 3.2.
			As mentioned above, the current release of Jasmine board already has a scan list,
			but future release may have blank NAND.

		- The block #0 was accidently erased due to a bug in your own FTL implementation.
			If this is the case, refer to Section 3.3.

	If you encounter a message "ERROR: corrupted scan list (or unknown type of data) on bank"
	at the second step, refer to Section 3.3.

	At the final step, firmware.bin and the scan list will be written to block #0 of NAND flash.
	Turn off Jasmine board if installation is completed without any problem.

	3.2 Install for the first time

	If this is the first time you install a firmware onto Jasmine board,
	the NAND flash will be blank. Run install.exe and follow these steps:

		1  initialize
		4  scan init bad blks
		6  save scan list to file
		3  install FW

	Is it important that you back up the scan list using "save scan list to file" at the third step,
	because block #0 data can be damaged by a firmware bug while you develop your own FTL.

	At the final step, firmware.bin and the scan list will be written to block #0 of NAND flash.
	Turn off Jasmine board if installation is completed without any problem.

	3.3 When the scan list is damaged

	The scan list can be damaged by a bug in your own implementation of FTL. If your firmware
	attempts a write or erase operation on block #0, the scan list will be damaged or lost.
	Run install.exe and follow these steps:

		1  initialize
		7  read scan list from file
		3  install FW

	At the final step, firmware.bin and the scan list will be written to block #0 of NAND flash.
	Turn off Jasmine board when installation is complete.

4. Run

	Set the jumper J2 to normal mode position and unplug SATA cable.
	Turn on the power to Jasmine board. Jasmine will be busy doing internal low level format.
	When the low level format is finished, the LED at D4 position will be lit.
	Now that Jasmine is ready to process SATA commands, you can plug SATA cable.