CORTEX-M4֪ʶµã×ܽá ÏÂÔØ±¾ÎÄ

2¼Ü¹¹

2.1¼Ü¹¹¼ò½é

Cortex-M3ºÍCortex-M4´¦ÀíÆ÷¶¼ÊÇ»ùÓÚARMv7-M¼Ü¹¹¡£×î³õARMv-7M¼Ü¹¹ÊÇËæ×ÅCortex-M3´¦ÀíÆ÷һͬÒý½øµÄ£¬¶øÔÚCortex-M4·¢²¼Ê±£¬¼Ü¹¹ÖÐÓÖ¶îÍâÔö¼ÓÁËеÄÖ¸ÁîºÍÌØÐÔ£¬¸Ä½øºóµÄ¼Ü¹¹ÓÐʱҲ±»³ÆÎªARMv7E-M¡£

2.2±à³ÌÄ£ÐÍ

2.2.1²Ù×÷ģʽºÍ״̬

Cortex-M4´¦ÀíÆ÷°üÀ¨Á½ÖÖ²Ù×÷״̬ºÍģʽ£¬»¹ÓÐÁ½ÖÖ·ÃÎʵȼ¶¡£ 1. ²Ù×÷״̬

¡¤ µ÷ÊÔ״̬£º´¦ÀíÆ÷±»ÔÝÍ£ºó£¬¾Í»á½øÈëµ÷ÊÔ״̬£¬±ÈÈçÀûÓõ÷ÊÔÆ÷´¥·¢¶Ïµã£¬µ¥²½Ö´Ðеȡ£ ¡¤Thumb״̬£º´¦ÀíÆ÷Ö´ÐгÌÐò´úÂ룬Ëü¾ÍÊÇ´¦ÔÚThumb״̬£¬ÒòΪCortex-M4ÓõÄÊÇThumbÖ¸ÁËùÒÔ³ÆÎªThumb״̬£¬²¢ÇÒÔÚCortex-M´¦ÀíÆ÷ÖÐÒѾ­²»Ö§³ÖARMÖ¸ÁҲ¾Í²»´æÔÚARM״̬¡£ 2. ²Ù×÷ģʽ

¡¤ ´¦Àíģʽ£ºÖ´ÐÐÖжϷþÎñ³ÌÐòµÈÒì³£´¦Àí¡£ÔÚ´¦ÀíģʽÏ£¬´¦ÀíÆ÷×ÜÊǾßÓÐÌØÈ¨·ÃÎʵȼ¶¡£ ¡¤ Ïß³Ìģʽ£ºÖ´ÐÐÆÕͨµÄ³ÌÐò´úÂë¡£ 3. ·ÃÎʵȼ¶

¡¤ ÌØÈ¨·ÃÎʵȼ¶£º¿ÉÒÔ·ÃÎÊ´¦ÀíÆ÷ÖеÄËùÓÐ×ÊÔ´¡£

¡¤ ·ÇÌØÈ¨·ÃÎʵȼ¶£ºÓÐЩ´æ´¢Æ÷ÇøÓòÎÞ·¨·ÃÎÊ£¬ÓÐЩ²Ù×÷Ò²ÎÞ·¨Ê¹Óá£

Thumb״̬´¦ÀíģʽÒì³£ÇëÇóÆô¶¯Ïß³Ìģʽ£¨ÌØÈ¨µÈ¼¶£©´¦ÀíģʽִÐÐÒì³£´¦ÀíÖ´ÐÐÒì³£´¦ÀíÒì³£ÇëÇóÏß³Ìģʽ£¨·ÇÌØÈ¨µÈ¼¶£©µ÷ÊÔʼþµ÷ÊÔ״̬£¨´¦ÀíÆ÷Í£Ö¹Ö¸ÁîÖ´ÐУ©½â³ýµ÷ÊÔÈí¼þת»»

·ÃÎʵȼ¶ÓÐÌØÊâ¼Ä´æÆ÷CONTROL¿ØÖÆ¡£Èí¼þ¿É½«´¦ÀíÆ÷´ÓÌØÈ¨·ÃÎʵȼ¶×ª»»ÖÁ·ÇÌØÈ¨·ÃÎʵȼ¶£¬µ«·´Ö®ÎÞ·¨Ö±½Óת»»£¬ÐèÒª½èÖúÒì³£»úÖÆ¡£

´¦ÀíÆ÷µÄ²Ù×÷ģʽºÍ״̬¿ÉÓÉͼ1.1À´±íʾ£¬ÔÚÉϵçºó£¬Ä¬ÈÏ´¦ÓÚÌØÈ¨Ïß³ÌģʽϵÄThumb״̬¡£

2.2.2 ¼Ä´æÆ÷

¶ÔÓÚARM¼Ü¹¹À´½²£¬´¦Àí´æ´¢Æ÷ÖеÄÊý¾Ýʱ£¬Ð轫Æä´Ó´æ´¢Æ÷¼ÓÔØµ½¼Ä´æÆ÷ÖУ¬´¦ÀíÍê±Ïºó£¬ÈôÓбØÒª£¬»¹¿ÉÒÔÔÙд»Ø´æ´¢Æ÷¡£ÕâÖÖ·½Ê½±»³Æ×÷¡°¼ÓÔØ-´æ´¢¼Ü¹¹¡±(LOAD-STORE)¡£

Cortex-M4´¦ÀíÆ÷µÄ¼Ä´æÆ÷×éÖÐÓÐ16¸ö¼Ä´æÆ÷£¬ÆäÖаüÀ¨13¸öͨÓüĴæÆ÷ºÍ3¸öÓÐÌØÊâÓÃ;µÄ¼Ä´æÆ÷¡£

1 ͨÓüĴæÆ÷R0-R12

R0-R7±»³Æ×÷µÍ¼Ä´æÆ÷£¬Ðí¶à16λָÁîÖ»ÄÜ·ÃÎʵͼĴæÆ÷¡£R8-R12³Æ×÷¸ß¼Ä´æÆ÷£¬¿ÉÓÃ32λָÁîºÍ¼¸¸ö16λָÁî·ÃÎÊ¡£R0-R12³õʼֵ䶨Òå¡£

2 Õ»Ö¸ÕëR13

R13ΪջָÕ룬¿Éͨ¹ýPUSHºÍPOP²Ù×÷ʵÏÖÕ»´æ´¢µÄ·ÃÎÊ¡£Õ»Ö¸Õë°üÀ¨Á½¸ö£ºÖ÷Õ»Ö¸ÕëMSPºÍ½ø³ÌÕ»Ö¸ÕëPSP¡£MSPΪĬÈÏÖ¸Õ룬¸´Î»ºó»ò´¦ÀíģʽʱֻÄÜÊÇMSP£¬¶øPSPÖ»ÄÜÔÚÏß³ÌģʽʹÓá£Õ»Ö¸ÕëµÄÑ¡ÔñÓÐCONTROL¼Ä´æÆ÷¿ØÖÆ¡£

MSPºÍPSPµÄ×îµÍÁ½Î»±ØÐëÊÇ0£¬Ò²¾ÍÊÇÕ»Ö¸ÕëµÄµØÖ·²Ù×÷±ØÐë4×Ö½Ú¶ÔÆë¡£

R0R1R2R3R4R5R5R6R7R8R9R10R11R12R13£¨SP£©R14R15ͨÓüĴæÆ÷Õ»Ö¸ÕëÁ´½Ó¼Ä´æÆ÷LR³ÌÐò¼ÆÊýÆ÷PC

3 Á´½Ó¼Ä´æÆ÷£¨LR£©R14

ÓÃÓÚº¯Êý»ò×Ó³ÌÐòµ÷ÓÃʱ·µ»ØµØÖ·µÄ±£´æ,ÔÚÒì³£ÖÐÔòÓÃÀ´±£´æ½øÒ쳣ǰ״̬ÐÅÏ¢£¬°üÀ¨ÏµÍ³Ä£Ê½¡¢Õ»Ö¸ÕëģʽµÈ¡£Òì³£·µ»ØÊ±²Î¿¼LRÖеÄÐÅÏ¢·µ»Øµ½ÏàӦ״̬¡£

4 ³ÌÐò¼ÆÊýÆ÷£¨PC£©R15

R15Ϊ³ÌÐò¼ÆÊýÆ÷£¬¶Á²Ù×÷·µ»Øµ±Ç°µØÖ·¼Ó4£¬Ð´²Ù×÷ÒýÆðÌø×ª¡£

2.2.3 ÌØÊâ¼Ä´æÆ÷

ÌØÊâ¼Ä´æÆ÷ÓÐÈýÀࣺ³ÌÐò״̬¼Ä´æÆ÷¡¢ÖжÏ/Òì³£ÆÁ±Î¼Ä´æÆ÷¡¢´¦ÀíÆ÷¿ØÖƼĴæÆ÷¡£

1 ³ÌÐò״̬¼Ä´æÆ÷£ºÓ¦ÓÃPSR£¨APSR£©¡¢Ö´ÐÐPSR£¨EPSR£©¡¢ÖжÏPSR£¨IPSR£©¡£Èý¸ö¼Ä´æÆ÷¿ÉÒÔµ¥¶À·ÃÎÊ£¬Ò²¿ÉÒÔ×éºÏµ½Ò»¸ö¼Ä´æÆ÷ÖзÃÎÊ¡£

31N Z C V Q26ICI/IT T2320GE[0-3]16ICI/IT108ISR NUM0

ÔÚAPSRÖаüº¬N£¨¸º±êÖ¾£©¡¢Z£¨Áã±êÖ¾£©¡¢C£¨½øÎ»±êÖ¾£©¡¢V£¨Òç³ö±êÖ¾£©¡¢Q£¨±¥ºÍ±êÖ¾£©ºÍGE£¨´óÓÚ»òµÈÓÚ±êÖ¾£¬Ö»ÔÚM4ÖÐÓУ©¡£

IPSRÖÐÊÇÖжϺţ¬Ö»¶Á¡£

EPSRÖУ¬TΪ±íʾThumb״̬£¬ÓÉÓÚM4Ö§³ÖThumb״̬£¬²»Ö§³ÖARM״̬£¬TλʼÖÕΪ1¡£ICIÊÇÖжϼÌÐøÖ¸Áî룬±£´æµÄÊÇÖжϱ»´ò¶ÏʱµÄÐÅÏ¢¡£ITÖ¸ÁîʱIF-THENÖ¸ÁÓÃÓÚÌõ¼þÖ´ÐС£

2 PRIMASK¡¢FAULTMASK¡¢ºÍBASEPRI¼Ä´æÆ÷£ºÕâÈý¸ö¼Ä´æÆ÷Ö»ÄÜÔÚÌØÈ¨Ä£Ê½ÏÂʹÓá£PRIMASK¿ÉÆÁ±Î³ýNMIºÍHardFaultÖ®ÍâµÄËùÓÐÒì³£¡£FAULTMASK»¹¿ÉÆÁ±ÎHardFault¡£BASEPRI¿ÉÒÔ¸ù¾ÝÉèÖÃÆÁ±ÎµÍÓÅÏȼ¶µÄÖжϣ¬¿É¿ØÖÆ8¸ö»ò16¸öÖжϣ¬ÏàÓ¦µÄ¸Ä¼Ä´æÆ÷µÄ¿í¶ÈΪ3λ»ò4λ¡£

3 CONTROL¼Ä´æÆ÷

CONTROL¼Ä´æÆ÷Ö÷ÒªÓÐÒÔϼ¸Ïî×÷ÓÃ: ¡¤ Ïß³ÌģʽϵķÃÎʵȼ¶ ¡¤ Ö¸ÕëµÄÑ¡Ôñ

¡¤ µ±Ç°´úÂëÊÇ·ñʹÓÃÁ˸¡µãµ¥Ôª ·Ö±ð¶ÔÓ¦Á˼ĴæÆ÷µÄµÍÈýλ

λ ¹¦ÄÜ nPRIV£¨µÚ0룩 0¶ÔÓ¦ÌØÈ¨µÈ¼¶£¬1Ϊ·ÇÌØÈ¨µÈ¼¶ SPSEL£¨µÚ1룩 0¶ÔÓ¦Ö÷Õ»Ö¸Õ룬1Ϊ½ø³ÌÕ»Ö¸Õ룬´¦ÀíģʽÏÂʼÖÕΪ0¡£

FPCA£¨µÚ2룩 0δʹÓø¡µã£¬1ʹÓÃÁ˸¡µã 2.2.4 ¸¡µã¼Ä´æÆ÷

1 S0-S31ºÍD0-D15

S0-S31¶¼Îª32λ¼Ä´æÆ÷£¬Ò²¿ÉÒÔD0-D15µÄ·½Ê½³É¶Ô·ÃÎÊ£¬µ«M4²»Ö§³ÖË«¾«¶È¸¡µãÔËË㣬ֻÊÇ¿ÉÒÔ´«ÊäË«¾«¶ÈÊý¾Ý¡£

2 ¸¡µã״̬ºÍ¿ØÖƼĴæÆ÷£¨FPSCR£© FPSCRÁ½¸ö¹¦ÄÜ

¡¤ Ìṩ¸¡µãÔËËã½á¹ûµÄ״̬ÐÅÏ¢£¬È縺±êÖ¾¡¢½øÎ»±êÖ¾µÈ¡£ ¡¤ ¶¨ÒåһЩ¸¡µãÔËË㶯×÷£¬ÈçºÎÉáÈëµÈ 3 ¾­¹ý´æ´¢Æ÷Ó³ÉäµÄ¸¡µãµ¥Ôª¿ØÖƼĴæÆ÷£¨CPACR£©

¸Ã¼Ä´æÆ÷¾­¹ýÁËÓ³É䣬Ҳ¾ÍÊÇ˵ÐèҪͨ¹ýͨÓüĴæÆ÷¼ÓÔØ½øÐÐÉèÖ㬼ĴæÆ÷µÄ¹¦ÄÜÊÇ¿ÉÒÔÉèÖø¡µãµ¥ÔªµÄ·ÃÎÊȨÏÞ£¬¾Ü¾ø·ÃÎÊ¡¢ÌØÈ¨·ÃÎÊ£¬È«·ÃÎÊ¡£

2.3´æ´¢Æ÷ϵͳ

2.3.1 ´æ´¢Æ÷ÏµÍ³ÌØÐÔ

¡¤ 4GBÏßÐÔµØÖ·¿Õ¼ä

¡¤ ¼Ü¹¹¶¨ÒåµÄ´æ´¢Æ÷Ó³Éä¡£4GBµÄ´æ´¢Æ÷¿Õ¼ä±»»®·ÖΪ¶à¸öÇøÓò£¬ÓÃÓÚÔ¤¶¨ÒåµÄ´æ´¢Æ÷ºÍÍâÉè¡£ ¡¤ Ö§³Ö´ó¶ËºÍС¶ËµÄ´æ´¢Æ÷ϵͳ¡£ ¡¤ λ¶Î·ÃÎÊ¡£ ¡¤ д»º³å

¡¤ ´æ´¢Æ÷±£»¤µ¥ÔªMPU ¡¤ ·Ç¶ÔÆë´«ÊäÖ§³Ö

2.3.2 ´æ´¢Æ÷Ó³Éä

CORTEX-M´¦ÀíÆ÷µÄ4GBµØÖ·¿Õ¼ä±»·ÖΪÁ˶à¸ö´æ´¢Æ÷ÇøÓò£¬ÈçͼËùʾ¡£ÇøÓò¸ù¾Ý¸÷×ÔµäÐÍÓ÷¨½øÐл®·Ö£¬ËûÃÇÖ÷ÒªÓÃÓÚ£º

¡¤ ³ÌÐò´úÂë·ÃÎÊ£¨ÈçCODEÇøÓò£©