Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ǶÈëʽµ¥Ôª²âÊÔʵ¼ù½éÉÜ
 
×÷ÕߣºÖÒs
  3919  次浏览      36
 2021-3-22 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª¼òµ¥½éÉÜÁ˵¥Ôª²âÊÔ£¬ÊµÏÖÁËÒ»¸ö²âÊÔÓÃÀý£¬²¢ÇÒÈòâÊÔͨ¹ý¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

±³¾°£º

ʵ¼ùµ¥Ôª²âÊÔÒ»¶Îʱ¼äÁË£¬¸Ð¾õÊ®·ÖÓÐÓ㬾ßÌåµ¥Ôª²âÊԵĺô¦£¬Õâ±ß²»ÃèÊö£¬µ¥Ôª²âÊԵĻù±¾¸ÅÄÕâÀïÒ²²»ÃèÊöÁË¡£±¾ÎÄÕÂÊǽéÉܵ¥Ôª²âÊÔÔÚǶÈëʽ¿ª·¢µÄÓ¦Óá£

ÎÒÕâ±ßʹÓõĵ¥Ôª²âÊÔ¿ò¼ÜÊÇ£ºUnity£¬Ò»¸öÇáÁ¿¼¶µÄµ¥Ôª²âÊÔ¿ò¼Ü£¬CÓïÑÔ±àд£¬·½±ãÒÆÖ²ºÍ²Ã¼ô¡£

UnityµÄÏà¹Ø×ÊÁÏÔ´Âë¿ÉÒÔ´ÓGithubÉÏÏÂÔØ£¬¿ªÔ´µÄ¡£µ¥Ôª²âÊÔµÄÓŵãÒ²¿ÉÒÔ´ÓCSDNÆäËü²©¿ÍÖÐÕÒµ½¡£

±¾ÎÄ»áÒÔTDDΪָµ¼Ô­Ôò£¬ÏÈд²âÊÔÓÃÀý¶¨Òå±»²âº¯ÊýµÄ¹¦ÄÜ£¬ÔÙÔÚ±»²âº¯ÊýÖÐʵÏÖÕâ¸ö¹¦ÄÜ£¬È«²¿ÓÃCÓïÑÔʵÏÖ¡£

¼ò½é

´úÂë¼Ü¹¹½éÉÜ

½²½âÏÂÌí¼Óµ¥Ôª²âÊÔºóµÄ´úÂë½á¹¹£º

1. ´úÂë±È½Ï¼òµ¥£º

2. ϵͳ´æÔÚ¶à¸ö×Óϵͳ»òÕßÄ£¿éµÄ

µ¥Ôª²âÊÔµÄÔËÐУº

IDE

Ä¿±êÓ²¼þÉÏÔËÐÐ

LinuxÏÂÔËÐÐ

¿ªÊ¼

ÎÒeMMCЭÒéµÄCMD6´¦ÀíΪÀý×Ó£¬½¨Á¢µ¥Ôª²âÊÔµÄÏà¹Ø²âÊÔÓÃÀý£¬ÎªÊ²Ã´ÒªÓÃCMD6´¦Àíº¯ÊýΪ±»²âÊÔ¶ÔÏóÄØ£¬ÒòΪÎÒÕýÔÚд²âÊÔÓÃÀý¸²¸ÇÕâ¸öÄ£¿é¡£.Èç¹û²»Á˽âeMMCЭÒéµÄ£¬Ã»ÓйØÏµ£¬Âß¼­Æäʵ²»¸´ÔÓ£¬ÏÂÃæ»áÒÔ¼òµ¥µÄ˵Ã÷È¥½éÉÜ¡£

Ê׸ö²âÊÔÓÃÀý

¸ù¾ÝЭÒéÃèÊö£¬Èç¹ûCMD6²Ù×÷ÁËEXTCSD192 - 255ÇøÓò£¬deviceÓ¦¸Ã²»×öÈκÎÐ޸쬲¢ÇÒÉèÖá°SWITCH_ERROR¡±×´Ì¬¡£

The Index field can contain any value from 0¨C255, but only values 0¨C191 are valid values. If the Index value is in 192-255 range the Device does not perform any modification and the SWITCH_ERROR status bit is set.

²âÊÔÓÃÀý¼ò½é£¬

CMD6²Ù×÷Æ«ÒÆÉèÖÃΪ192½øÐзÃÎÊ£¬argumentÊÇCMD6µÄ²ÎÊý£¬4BYTE£¬Ã¿¸öbyte´ú±í²»Í¬µÄº¬Ò壬ÆäÖÐ[16:23]Ö¸´æÈ¡µÄindex¡£

ÆäÖÐemmc_initial_status()Ϊ³õʼ»¯device statusΪÕý³££¬emmc_get_status()ÊÇ»ñÈ¡deviceµ±Ç°µÄ״̬¡£

static void tst_cmd6_access_invalid_index (void)
{
BYTE ret;
BYTE command_set = 0;
BYTE value = 0;
BYTE index = 0;
BYTE access_mode = 0;
UINT argument;
EXT_CSD extcsd;

emmc_initial_status(); // ³õʼ»¯device statusΪnormal status

index = 192;
argument = ((UINT)access_mode << 24) | ((UINT)index << 16) | ((UINT)value << 8) | command_set;

ret = emmc_cmd6 (argument, &extcsd);

TEST_ASSERT_EQUAL_INT8 (FALSE, ret); // ±»²âº¯Êý¼ì²âµ½Òì³££¬·µ»Øfalse
TEST_ASSERT_EQUAL_INT8 (SWITCH_ERROR, emmc_get_status());
}

±»²âº¯ÊýÈçÏ£º

BYTE emmc_cmd6 (UINT argument, EXT_CSD *pextcsd)
{
return TRUE;
}

°Ñ²âÊÔÓÃÀýÌí¼Óµ½²âÊÔÌ×¼þÖУº

int tstSuite_cmd6(void)
{
UNIT_regSetupFunc(Setup);
UNIT_regTeardownFunc (TearDown);
UnityBegin(__FILE__);

RUN_TEST (tst_cmd6_access_invalid_index);

UNIT_regSetupFunc(NULL);
UNIT_regTeardownFunc(NULL);
return UnityEnd();

ÔËÐвâÊÔ£¬²¢ÇÒÊä³ö½á¹û£º

>>>>
..\unittest\ts_cmd6\tsuite_cmd6.c:87 :tst_cmd6_access_invalid_index:FAIL: Expected 0 Was 1

1 Tests 1 Failures 0 Ignored
FAIL

OK£¬½á¹û¿Ï¶¨ÊÇfailµÄ¡£ÎÒÃÇÐ޸ı»²â´úÂëÒÔÈòâÊÔ¿ÉÒÔpass£¬ÐÞ¸ÄÄÚÈÝ£ºÔÚ¼ì²âµ½Ò쳣ʱ·µ»ØFALSE£¬²¢ÇÒÔÚindex >= 192ʱÉèÖÃdevice statusΪSWITCH_ERROR¡±£¬Ð޸Ĺý³ÌÂÔ...Ð޸ĺóÈçÏÂ

BYTE emmc_cmd6(UINT argument, EXT_CSD *pextcsd)
{
BYTE index = (BYTE)(argument >> 16);

if (index >= 192)
{
emmc_set_status(SWITCH_ERROR);
return FALSE;
}

return TRUE;
}

²âÊÔͨ¹ý£¬Êä³ö½çÃæÈçÏ£º

>>>>
..\..\..\unitTest\ts_cmd6\tSuite_cmd6.c: 126:tst_cmd6_access_invalid_index :PASS

1 Tests 0 Failures 0 Ignored
OK

 

 

 
   
3919 ´Îä¯ÀÀ       36
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
»ùÓÚFPGAµÄÒì¹¹¼ÆËãÔÚ¶àýÌåÖеÄÓ¦ÓÃ
ÉîÈëLinuxÄں˼ܹ¹¡ª¡ª¼ò½éÓë¸ÅÊö
LinuxÄÚºËϵͳ¼Ü¹¹½éÉÜ
dzÎöǶÈëʽCÓÅ»¯¼¼ÇÉ
½ø³Ì¼äͨÐÅ£¨IPC£©½éÉÜ
×îпγÌ
ǶÈëʽLinuxÇý¶¯¿ª·¢
´úÂëÕû½àÖ®µÀ-̬¶È¡¢¼¼ÒÕÓëϰ¹ß
ǶÈëʽÈí¼þ²âÊÔ
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
ǶÈëʽÈí¼þ¿É¿¿ÐÔÉè¼Æ
³É¹¦°¸Àý
ij¾ü¹¤Ëù ǶÈëʽÈí¼þ¼Ü¹¹
Öк½¹¤ÒµÄ³Ñо¿Ëù ǶÈëʽÈí¼þ¿ª·¢Ö¸ÄÏ
ij¹ìµÀ½»Í¨ ǶÈëʽÈí¼þ¸ß¼¶Éè¼ÆÊµ¼ù
ÉîÛÚ Ç¶ÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
ijÆóÒµ »ùÓÚIPDµÄǶÈëʽÈí¼þ¿ª·¢