modified read / write operation to sector level
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.
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.
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.
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.