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ÇøÓò£©