6f7c735300
The NAND Flash environment consists of several distinct components: - NAND framework (drivers harness for NAND controllers and NAND chips) - NAND simulator (NANDsim) - NAND file system (NAND FS) - Companion tools and utilities - Documentation (manual pages) This work is still experimental. Please use with caution. Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks
175 lines
5.1 KiB
Plaintext
175 lines
5.1 KiB
Plaintext
#-
|
|
# Copyright (C) 2009-2012 Semihalf
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions
|
|
# are met:
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
# notice, this list of conditions and the following disclaimer.
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
# SUCH DAMAGE.
|
|
#
|
|
# $FreeBSD$
|
|
|
|
#
|
|
# Sample NANDsim configuration file.
|
|
#
|
|
|
|
#############################################################################
|
|
#
|
|
# [sim] General (common) simulator configuration section.
|
|
#
|
|
[sim]
|
|
# log_level=0..255
|
|
log_level=11
|
|
|
|
# log_output=[none, console, ram, file]
|
|
#
|
|
# When log_output=file is specified, each [ctrl] section must have a
|
|
# corresponding 'log_filename' field provided, which specifies log file name
|
|
# to be used.
|
|
log_output=none
|
|
|
|
#############################################################################
|
|
#
|
|
# [ctrl] Controller configuration section.
|
|
#
|
|
# There can be a number of controllers defined for simulation, each has a
|
|
# dedicated [ctrl] section. With a given controller there are associated
|
|
# subordinate NAND chips, which are tied to chip select lines.
|
|
#
|
|
[ctrl]
|
|
# The number of this controller.
|
|
# ctrl_num=0..3
|
|
ctrl_num=0
|
|
|
|
# The number of chip selects available at this controller.
|
|
# num_cs=1..4
|
|
num_cs=1
|
|
|
|
# ECC enable flag.
|
|
# ecc=[on|off]
|
|
ecc=on
|
|
|
|
# ECC layout. This is the list of byte offsets within OOB area, which comprise
|
|
# the ECC contents set.
|
|
#
|
|
# ecc_layout=[byte1, byte2-byte3, ..byten]
|
|
ecc_layout=[0-53]
|
|
|
|
# Absolute path to the log file for this controller.
|
|
#log_filename=/var/log/nandsim-ctl0.log
|
|
|
|
|
|
#############################################################################
|
|
#
|
|
# [chip] Chip configuration section.
|
|
#
|
|
# There can be a number of individual NAND chip devices defined for
|
|
# simulation, and each has a dedicated [chip] section.
|
|
#
|
|
# A particular chip needs to be associated with its parent NAND controller by
|
|
# specifying the following fields: controller number (chip_ctrl) and the chip
|
|
# select line it is connected to (chip_cs). The chip can be connected to only
|
|
# a single (and unique) controller:cs pair.
|
|
#
|
|
[chip]
|
|
# The number of parent controller. This has to fit one of the controller
|
|
# instance number (ctrl_num from [ctrl] section).
|
|
# chip_ctrl=0..3
|
|
chip_ctrl=0
|
|
|
|
# Chip select line.
|
|
# chip_cs=0..3
|
|
chip_cs=0
|
|
|
|
# ONFI device identifier.
|
|
# device_id=0x00..0xff
|
|
device_id=0xd3
|
|
|
|
# ONFI manufacturer identifier.
|
|
# manufacturer_id=0x00..0xff
|
|
manufacturer_id=0xec
|
|
|
|
# Textual description of the chip.
|
|
# model="model_name"
|
|
model="k9xxg08uxM:1GiB 3,3V 8-bit"
|
|
|
|
# Textual name of the chip manufacturer.
|
|
# manufacturer="manufacturer name"
|
|
manufacturer="SAMSUNG"
|
|
|
|
# page_size=[must be power of 2 and >= 512] (in bytes)
|
|
page_size=2048
|
|
# oob_size=[>0]
|
|
oob_size=64
|
|
# pages_per_block=n*32
|
|
pages_per_block=64
|
|
# blocks_per_lun=[>0]
|
|
blocks_per_lun=4096
|
|
# luns=1..N
|
|
luns=1
|
|
# column_addr_cycle=[1,2]
|
|
column_addr_cycle=2
|
|
# row_addr_cycle=[1,2,3]
|
|
row_addr_cycle=3
|
|
|
|
# program_time= (in us)
|
|
program_time=0
|
|
# erase_time= (in us)
|
|
erase_time=0
|
|
# read_time= (in us)
|
|
read_time=0
|
|
# ccs_time= (in us)
|
|
#ccs_time=200
|
|
|
|
# Simulate write-protect on the chip.
|
|
# write_protect=[yes|no]
|
|
#write_protect=no
|
|
|
|
# Blocks wear-out threshold. Each block has a counter of program-erase cycles;
|
|
# when this counter reaches 'wear_out' value a given block is treated as a bad
|
|
# block (access will report error).
|
|
#
|
|
# Setting wear_out to 0 means that blocks will never wear out.
|
|
#
|
|
# wear_out=0..100000
|
|
wear_out=50000
|
|
|
|
# Errors per million read/write bytes. This simulates an accidental read/write
|
|
# block error, which can happen in real devices with certain probability. Note
|
|
# this isn't a bad block condition i.e. the block at which the read/write
|
|
# operation is simulated to fail here remains usable, only the operation has
|
|
# not succeeded (this is where ECC comes into play and is supposed to correct
|
|
# such problems).
|
|
#
|
|
# error_ratio=0..1000000
|
|
#error_ratio=50
|
|
|
|
# Chip data bus width. All chips connected to the same controller must have
|
|
# the same bus width.
|
|
#
|
|
# width=[8|16]
|
|
width=8
|
|
|
|
# Bad block map. NANDsim emulates bad block behavior upon accessing a block
|
|
# with number from the specified list.
|
|
#
|
|
# bad_block_map=[bad_block1, bad_block2-bad_block3, ..bad_blockn]
|
|
bad_block_map=[100-200]
|
|
|