Have a TMS320DM6446 prototype board.
Currently have DVFlasher working and can boot up on hyperterminal to the boot prompt.
Have been unable to get CCS Nandwriter to work though.
Modified the code and it indicates that the ubl and u-boot write to NAND completes successfully.
But on reboot it hyperterminal just echoes "BOOTME BOOTME"
Below I have listed the tech info and mods that I have made.
Has anyone gotten CCS Nandwriter working for BBN?
Jerry
The NAND flash on the board is Micron Big Block NAND MT29F1G08ABBHC(1Gb).
Our total pages size is 2112, 2048 data with 64 bytes spare byte block size.
I found technical note TN-29-16 which lays out the page-level boot code storage
2kb page: SectorA(512) Sector B(512) Sector C(512) Sector D(512) Spare (64
Spare BB
Marking(1byte) Sector A ECC(3) Sector B ECC(3) Sector C ECC(3) Sector D
ECC(4)
Given the above I assume
the following values we are to use in flash_util.
#define DEVICE_NAND_MAX_BYTES_PER_OP (2048) // Max Bytes per operation (EMIF IP constrained)
#define DEVICE_NAND_MAX_SPAREBYTES_PER_OP (64) // Max Spare Bytes per operation
#define DEVICE_NAND_MIN_SPAREBYTES_PER_OP (16) // Min Spare
#define NAND_MAX_PAGE_SIZE (2112)
#define
DEVICE_NAND_ECC_START_OFFSET_LARGEPAGE (1)
const NAND_ECC_InfoObj DEVICE_NAND_ECC_info =
{
TRUE, // ECCEnable
12, // calcECCByteCnt
12, // storedECCByteCnt
&(DEVICE_NAND_ECC_calculate),
&(DEVICE_NAND_ECC_store),
&(DEVICE_NAND_ECC_enable),
&(DEVICE_NAND_ECC_disable),
&(DEVICE_NAND_ECC_read),
&(DEVICE_NAND_ECC_correct)
};
const NAND_PAGE_LayoutObj DEVICE_NAND_PAGE_layout =
{
// Data region definition
{
NAND_REGION_DATA, // Region Type
NAND_OFFSETS_RELTODATA, // Offsets relative type
DEVICE_NAND_MAX_BYTES_PER_OP, // bytesPerOp
{ 0*(2048) ,1*(2048) ,2*(2048) ,3*(2048) ,
4*(2048) ,5*(2048) ,6*(2048) ,7*(2048) ,
8*(2048) ,9*(2048) ,10*(2048),11*(2048),
12*(2048),13*(2048),14*(2048),15*(2048) }
},
// Spare region definition
{
NAND_REGION_SPARE, // Region Type
NAND_OFFSETS_RELTODATA, // Offsets relative type
DEVICE_NAND_MAX_SPAREBYTES_PER_OP, // bytesPerOp
{ 1*2048+0*64 ,2*2048+1*64 ,3*2048+2*64 ,4*2048+3*64 , // spareOffsets
5*2048+4*64 ,6*2048+5*64 ,7*2048+6*64 ,8*2048+7*64 ,
9*2048+8*64 ,10*2048+9*64 ,11*2048+10*64,12*2048+11*64,
13*2048+12*64,14*2048+13*64,15*2048+14*64,16*2048+15*64 }
}
};