Browsing this Thread:
1 Anonymous Users
Topic options
View mode
舊的在前
請確認MCHPMSD
新會員
Joined
: 2006/2/4 23:50最後登入時間
: 2009/10/23 15:49
Group:
註冊會員
Level : 3
HP : 0 / 52
MP : 6 / 2852
EXP : 9
版主 您好 有關MCHPMSD中之typedefs.h file內 CSD 之定義bit-fields 部分似乎順序顛倒 bit-fields 存放是由low bit 往hi bit 放 但文中是由hi bit 往low bit放 如果MSD.c中void MSDReadCapacityHandler()之 C_Read_Bl_Len=gblCSDReg._byte[5]&0x0f; gblBLKLen._dword=one<<C_Read_Bl_Len; // Get the number of blocks using C_size and C_mult C_size_U=gblCSDReg._byte[6]&0x03; // 2 LSB bits C_size_H=gblCSDReg._byte[7]; C_size_L=(gblCSDReg._byte[8]&0xC0)>>6; // 2 MSB, right shift by 6places // to get in LSB C_size=(C_size_U<<10)|(C_size_H<<2)|(C_size_L); C_mult_H=gblCSDReg._byte[9]&0x03; C_mult_L=(gblCSDReg._byte[10]&0x80)>>7; C_mult=(C_mult_H<<1)|C_mult_L; Mult = one<<(C_mult+2); gblNumBLKS._dword=Mult*(C_size+1)-1; // last LBA is noLBAs-1 改由gblCSDReg.C_SIZE_U gblCSDReg.C_SIZE_H gblCSDReg.C_SIZE_L gblCSDReg.C_SIZE_MULT_L gblCSDReg.C_SIZE_MULT_L 則C_size 會得到錯誤值 或用watch 觀察gblCSDReg.C_SIZE_U gblCSDReg.C_SIZE_H gblCSDReg.C_SIZE_L gblCSDReg.C_SIZE_MULT_L gblCSDReg.C_SIZE_MULT_L 再經計算會得到錯誤C_size 值 以下為修改部分 struct { //0 unsigned SPEC_VERS_4 :4; //CSD-Slice b123 downto b120 unsigned RESERVED_C_2 :2; //CSD-Slice b125 downto b124 unsigned CSD_STRUCTURE_2 :2; //CSD-Slice b127 downto b126 //1 unsigned TAAC_8 :8; //CSD-Slice b119 downto 112 //2 unsigned NSAC_8 :8; //CSD-Slice b111 downto b104 //3 unsigned TRAN_SPEED_8 :8; //CSD-Slice b103 downto b96 //4 unsigned CCC_H_8 :8; //CSD-Slice b95 downto b88 //5 unsigned READ_BL_LEN_4 :4; //CSD-Slice b83 downto b80 unsigned CCC_L_4 :4; //CSD-Slice b87 downto b84 //6 //unsigned C_SIZE_H :4; //CSD-Slice b73 downto b70 unsigned C_SIZE_U_2 :2; //CSD-Slice b73 downto b72 unsigned RESERVED_B_2 :2; //CSD-Slice b75 downto b74 unsigned DSR_IMP_1 :1; //CSD-Slice b76 unsigned READ_BLK_MISALIGN_1 :1; //CSD-Slice b77 unsigned WRITE_BLK_MISALIGN_1 :1; //CSD-Slice b78 unsigned READ_BL_PARTIAL_1 :1; //CSD-Slice b79 //7 //unsigned C_SIZE_L :8; //CSD-Slice b69 downto b62 unsigned C_SIZE_H_8 :8; //CSD-Slice b71 downto b64 //8 unsigned VDD_R_CURR_MAX_3 :3; //CSD-Slice b58 downto b56 unsigned VDD_R_CURR_MI_3N :3; //CSD-Slice b61 downto b59 unsigned C_SIZE_L_2 :2; //CSD-Slice b63 downto b62 //9 //unsigned C_SIZE_MULT :3; //CSD-Slice b49 downto b47 unsigned C_SIZE_MULT_H_2 :2; //CSD-Slice b49 downto b48 unsigned VDD_W_CURR_MAX_3 :3; //CSD-Slice b52 downto b50 unsigned VDD_W_CUR_MIN_3 :3; //CSD-Slice b55 downto b53 //10 //unsigned SECTOR_SIZE :7; //CSD-Slice b45 downto b39 unsigned SECTOR_SIZE_H_6 :6; //CSD-Slice b45 downto b40 unsigned ERASE_BLK_EN_1 :1; //CSD-Slice b46 unsigned C_SIZE_MULT_L_1 :1; //CSD-Slice b47 //11 unsigned WP_GRP_SIZE_7 :7; //CSD-Slice b38 downto b32 unsigned SECTOR_SIZE_L_1 :1; //CSD-Slice b39 //12 //unsigned WRITE_BL_LEN :4; //CSD-Slice b25 downto b22 unsigned WRITE_BL_LEN_H_2 :2; //CSD-Slice b25 downto b24 unsigned R2W_FACTOR_3 :3; //CSD-Slice b28 downto b26 unsigned DEFAULT_ECC_2 :2; //CSD-Slice b30 downto b29 unsigned WP_GRP_ENABLE_1 :1; //CSD-Slice b31 //13 unsigned RESERVED_A_5 :5; //CSD-Slice b20 downto b16 unsigned WRITE_BL_PARTIAL_1 :1; //CSD-Slice b21 unsigned WRITE_BL_LEN_L_2 :2; //CSD-Slice b23 downto b22 //14 unsigned ECC_2 :2; //CSD-Slice b9 downto b8 unsigned FILE_FORMAT_2 :2; //CSD-Slice b11 downto b10 unsigned TMP_WRITE_PROTECT_1 :1; //CSD-Slice b12 unsigned PERM_WRITE_PROTECT_1 :1; //CSD-Slice b13 unsigned COPY_1 :1; //CSD-Slice b14 unsigned FILE_FORMAT_GRP_1 :1; //CSD-Slice b15 //15 unsigned NOT_USED_1 :1; //CSD-Slice b0 unsigned CRC_7 :7; //CSD-Slice b7 downto b1 }; } CSD; 對不起 太長了 請指教 謝謝
發表於: 2006/12/30 18:18
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.