long8

ÐÂÎŶ¯Ì¬
NEWS FEED
ÄúÏÖÔÚµÄλÖãº
Ê×Ò³
-
-
SoCÖеÄÇå¾²ÎÀÊ¿¡ª¡ªÇå¾²AHB¿ØÖÆÆ÷

SoCÖеÄÇå¾²ÎÀÊ¿¡ª¡ªÇå¾²AHB¿ØÖÆÆ÷

  • ·ÖÀࣺÐÂÎÅÖÐÐÄ
  • ×÷ÕߣºLiu Hao@NXP
  • ȪԴ£º¶÷ÖÇÆÖMCU¼ÓÓÍÕ¾
  • Ðû²¼Ê±¼ä£º2023-03-03 17:05
  • »á¼ûÁ¿£º

¡¾ÌáÒªÐÎò¡¿? Ò»¡¢Cortex-M33 TrustZone Cortex M33ÄÚÖÃÁËArmÉè¼ÆµÄTrustZoneÊÖÒÕ £¬¿ÉÒÔʵÏÖÇå¾²(Secure/S)Óë·ÇÇå¾²(Non-Secure/NS)Ö®¼äµÄ¸ôÀë £¬Ìá¸ßϵͳµÄÇ徲Ʒ¼¶¡£ ¶÷ÖÇÆÖMCU¼ÓÓÍÕ¾ÖÐÒѾ­ÓÐÈô¸ÉÎÄÕÂΪ¸÷ÈËÏÈÈÝÁËTrustZone: ? ͨ¹ýÉÏÃæµÄÎÄÕ £¬Ïë±Ø¸÷È˶ÔTrustZoneÒѾ­ÓÐÁËһЩ»ù±¾µÄÃ÷È·¡£ TrustZoneÊÇÄÚÖÃÔÚCortex M33ÄÚºËÖеÄÒ»¸ö¹¦Ð§¡£Çå¾²ÊÇÒ»¸öϵͳ¹¤³Ì £¬¿ÉÊÇ £¬MCUÒ²ÊÇÒ»¸öÂéȸËäСµ«ÎåÔà¾ãÈ«µÄSoC(System on Chip) £¬Äں˾߱¸Çå¾²µÄ¸ôÀëÄÜÁ¦ £¬ÊÇ·ñÄܹ»Öª×ãÎÒÃǹØÓÚÕû¸öSoCϵͳµÄÇå¾²¸ôÀëÒªÇóÄØ£¿ ±¾ÎÄÒÔLPC55S69£¨CPU0ΪCortex M33ÇÒÖ§³ÖTrustZone£©ÎªÀý £¬Îª¸÷È˼òÒªÏÈÈÝÇå¾²AHB¿ØÖÆÆ÷¡£ ? ¶þ¡¢Æʽâ×ÜÏßÉϵÄÖ÷´Ó×°±¸ ÎÒÃÇ¿ÉÒÔ¼òÆӵذÑMCUÃ÷ȷΪÓÉÄÚºË+¶àÖÖÍâÉè×é³ÉµÄоƬ £¬Èí¼þ¹¤³Ìʦ±àдµÄ´úÂë×îÖÕÔËÐÐÔÚÄÚºËÖÐ £¬Í¨¹ý²Ù×÷ÍâÉèʵÏÖÖÖÖÖ¸÷ÑùµÄ¹¦Ð§¡£ ºÁÎÞÒÉÎÊ £¬ÄÚºËÊÇ×ÜÏßÉϵÄÒ»ÖÖÖ÷×°±¸ £¬Ëü²»µ«¾ßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬»¹»áÔÚÔËÐÐÖÐ×Ô¶¯µØÏò×ÜÏßÉϵÄÆäËû×°±¸£¨ÀýÈçÄÚ´æ £¬flashµÈ£©Ìᳫ»á¼û¡£ ¶ø´ó²¿·ÖÍâÉè £¬¶¼ÊÇ´Ó×°±¸ £¬ÀýÈçUSARTºÍSPIµÈÍâÉè £¬Ö»Äܱ»¶¯µØÆÚ´ýÄں˻òÆäËûÖ÷×°±¸µÄÉèÖà £¬È»ºóʵÏÖÏìÓ¦µÄ¹¦Ð§¡£ÔÚÔËÐÐÖÐ £¬´Ó×°±¸²¢²»¾ß±¸²Ù×÷ÆäËû×°±¸µÄÄÜÁ¦¡£ ÓÐһЩÌØÊâµÄÍâÉè £¬ÀýÈçDMA £¬USBµÈÍâÉè £¬ÓëÄÚºËÀàËÆ £¬ËüÃǾßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬²¢ÇÒÔÚÔËÐÐÖÐ £¬»á×Ô¶¯µØ»á¼ûÄÚ´æ¡¢flashÉõÖÁÊÇÆäËûÍâÉèµÄ¼Ä´æÆ÷¡£ ? Èý¡¢Ö»ÓÐTrustZone¾Í¹»ÁËÂ𣿠ÄÇô £¬ÔÚMCUÖÐ £¬Í¨¹ýTrustZone¹¦Ð§ £¬Äں˿ÉÒÔÔÚÔËÐÐÖдÓÇ徲״̬Çл»ÖÁ·ÇÇ徲״̬¡£×ªÒÆÖÁ·ÇÇ徲״̬ºó £¬ÄÚºËÊÇÎÞ·¨»á¼ûÇå¾²ÇøÓòµÄ×ÊÔ´µÄ¡£ ÈçÉϽÚËùÊö £¬×ÜÏßÉÏÓÐÐí¶àÖ÷×°±¸ºÍ´Ó×°±¸¡£¿ÉÊÇ £¬ÓÉÓÚTrustZoneÊǼ¯³ÉÔÚÄÚºËÖеÄ £¬TrustZone²»¿ÉÏÞÖÆÄÚºËÖ®ÍâµÄÆäËûÖ÷×°±¸µÄÐÐΪ £¬×ÜÏßÉϵÄÆäËûÖ÷×°±¸ÈÔÈ»¿ÉÒÔ»á¼ûÇå¾²ÇøºÍ·ÇÇå¾²ÇøµÄËùÓÐ×ÊÔ´¡£ Òò´Ë £¬DMAµÈÆäËû×ÜÏßÉϵÄÖ÷×°±¸ £¬ÈÔÈ»¿ÉÒÔ»á¼ûÕû¸öµØµã¿Õ¼ä £¬×ÝÈ»Cortex M33Äں˱»×ªÒÆÖÁ·ÇÇ徲״̬ £¬´ËʱCortex M33ÄÚºËûÓÐÇå¾²Çø×ÊÔ´µÄ»á¼ûȨÏÞ £¬ÈÔÈ»¿ÉÒÔͨ¹ýʹÓÃÆäËûÖ÷×°±¸£¨ÀýÈçDMA£© £¬»á¼ûí§Òâ×ÊÔ´¡£ÄÇô´Ëʱ £¬DMAµÈÆäËûÖ÷×°±¸¾ÍÏñÊÇÒ»¸ö¿ÉÒÔ±»Ê¹Óõġ°Îó²î¡± £¬ÕâÊÇÇ徲ϵͳ²»¿É½ÓÊܵÄ¡£ ÕâʱµÄϵͳÈçÏÂͼËùʾ £¬×ÝÈ»Cortex M33±»TrustZoneµÄSAUºÍIDAUÑÏ¿áÏÞÖÆ £¬µ«ÆäËûÖ÷×°±¸ÔÚ×ÜÏßÉÏÈÔÈ»ÊÇÁ÷ͨÎÞ×è¡£ ? ËÄ¡¢Çå¾²AHB¿ØÖÆÆ÷ Çå¾²AHB¿ØÖÆÆ÷µÄÓ¢ÎÄÃû³ÆÊÇSecure AHB Controller¡£ ×Åʵ £¬±¬·¢Ç°ÎÄËùÊöÎÊÌâµÄÔµ¹ÊÔ­ÓÉÓÐÁ½¸ö£º ? ×ÜÏßÉÏ £¬Ö»ÓÐCortex M33ÄÚºËCPU0¾ßÓÐTrustZone¹¦Ð§ £¬¶øÆäËûµÄÖ÷×°±¸Ã»Óд˹¦Ð§¡£Õ¾ÔÚ×ÜÏߵĽǶȿ´ £¬Ö»ÄÜÅжϳöCPU0 Cortex M33·¢³öµÄÇëÇóºÍ»á¼ûÊÇ·ñÊÇÇå¾² £¬È´ÎÞ·¨ÅжϳöÆäËûÖ÷×°±¸µÄ»á¼ûÇëÇóÊÇÇå¾²»ò·ÇÇå¾²¡£ ¹ØÓÚ×ÜÏßÉϵĴÓ×°±¸À´Ëµ £¬´Ó×°±¸ÎÞ·¨ÅжÏÀ´×Ô×ÜÏߵĻá¼ûÊÇÇå¾²ÕվɷÇÇå¾²µÄ £¬Òò´ËÒ²¾ÍÎÞ·¨Í¨¹ýÒÔÉèÖûá¼û¹æÔòµÄ·½·¨ £¬¾Ü¾øÎ¥·´»á¼û¹æÔòµÄ²»·¨ÇëÇóºÍ»á¼û¡£ ? Çå¾²AHB¿ØÖÆÆ÷ÊÇNXP LPC55SxxϵÁÐMCUµÄÒ»¸öÌØÊâÍâÉè¡£ Çå¾²AHB¿ØÖÆÆ÷ÌṩÁËMSW(Master Security Wrapper) £¬MSWΪ×ÜÏßÉϳýCPU0Ö®ÍâµÄÆäËûÖ÷×°±¸ £¬ÌṩÁËÒ»ÖÖdzÒ×µÄÀàËÆÓÚTrustZoneµÄ¹¦Ð§¡£×ÜÏßÉϳýCPU0ÍâµÄÿһ¸öÖ÷×°±¸¶¼ÓÐÒ»¸öMSW¡£ ÀýÈç £¬ÎÒÃÇ¿ÉÒÔͨ¹ýMSW £¬½«Ä³¸öÖ÷×°±¸DMA0ÉèÖÃΪÇå¾²Ö÷×°±¸ £¬ÄÇôÔÚÔËÐÐÖÐ £¬DMA0·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇÇå¾²ÇëÇó£»ÎÒÃÇÒ²¿ÉÒÔ½«ÁíÒ»¸öÖ÷×°±¸DMA1ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸ £¬ÔÚÔËÐÐÖÐ £¬DMA1·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇ·ÇÇå¾²ÇëÇó¡£ ÓÐÁËMSW £¬´Ó×ÜÏߵĽǶȿ´ £¬ÎÒÃǾͿÉÒÔÇø·Ö³öÿһ¸öÖ÷×°±¸·¢³öµÄÇëÇóÊÇÇå¾²ÕվɷÇÇå¾²¡£ Çå¾²AHB¿ØÖÆÆ÷»¹ÎªÃ¿Ò»¸ö´Ó×°±¸£¨ÍâÉ裩ÌṩÁËÒ»¸ö¡°±£°²¡±PPC(Peripheral Protection Checkers) £¬PPC½«»á㡾¡Ö°ÊØ £¬ÑÏ¿áÉó²é»á¼ûÇëÇóÊÇ·ñÇкÏÉèÖõĻ®¶¨Õ³Ì £¬²¢¾Ü¾ø²»·¨µÄ»á¼û¡£ ÀýÈç £¬ÎÒÃÇ¿ÉÒÔ½«Î»ÓÚUSART֮ǰµÄPPC¼ì²é¹æÔòÉèÖÃΪ½öÔÊÐíÇå¾²»á¼û £¬ÄÇôËùÓзÇÇå¾²»á¼û¶¼±»ÊÓΪ²»·¨ £¬²¢±»PPC¾ÜÖ®ÃÅÍâ £¬ÉÏÎÄËùÊö±»ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸µÄDMA1Ò²¾ÍÎÞ·¨»á¼ûºÍ²Ù×÷USART¡£ ͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷ҲΪÄÚ²¿´æ´¢½éÖÊ£¨°üÀ¨RAM £¬FlashºÍROM£©ÌṩÁËÀàËÆPPCµÄ¡°±£°²¡±-MPC(Memory Protection Checkers) £¬MPC¿ÉÒÔ·Ö¿éµØ±£»¤ÖÖÖÖÄÚ²¿´æ´¢½éÖÊ¡£ ´Ëʱ×ÜÏߵļܹ¹Í¼ÈçÉÏͼËùʾ¡£ ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷µÄMSW £¬×ÜÏßÉϵÄËùÓÐÖ÷×°±¸²»µ«Ö§³ÖÇå¾²²à´øÐźÅHNONSEC£¨Çå¾²»á¼û£©×÷Ϊ¸ø¶¨»á¼ûµÄÇå¾²ÊôÐÔµÄָʾ £¬Ò²Ö§³ÖHPRIV£¨ÌØȨ£©ÐźÅ×÷ΪÌØȨÓë·ÇÌØȨÊôÐÔµÄָʾ¡££¨×¢£º±¾ÎÄÖصãÏÈÈÝÁËHNONSECÐźÅÏà¹ØµÄÇå¾²Óë·ÇÇå¾²ÊôÐÔ £¬²¢Î´ÏêϸÏÈÈÝÓëHPRIVÏà¹ØµÄÌØȨÓë·ÇÌØȨ £¬ÕâÓëCortex M3/M4µÈÄÚºËÖеÄÌØȨÓë·ÇÌØȨÏàͬ£©¡£ Çå¾²AHB×ÜÏß´¦Öóͷ£HNONSECÐźÅ £¬²¢½«ÆäÓëÇå¾²AHB¿ØÖÆÆ÷ÖÐΪ´Ó×°±¸µÄPPC/MPCËùÉèÖõÄÇå¾²ÊôÐÔ¾ÙÐнÏÁ¿¡£ÈôÊÇÇëÇó»á¼ûµÄÇå¾²ÊôÐÔ²»Î¥·´±»»á¼û´Ó×°±¸µÄÇå¾²ÊôÐÔ £¬ÔòÔÊÐí»á¼û¡£ÈôÊÇÔÚ»á¼ûÖÐÎ¥·´¹æÔò±¬·¢³åÍ» £¬Ôò»áÒý·¢Çå¾²³åÍ»ÖÐÖ¹¡£CPU0Çл»µ½Ç徲ģʽÒÔ´¦Öóͷ£Î¥¹æ¡£ Çå¾²ÊǸöϵͳ¹¤³Ì £¬ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷Õâ¸öÇå¾²ÊØÎÀ £¬ÎÒÃǵÄSoCϵͳ²Å»ª±»µãË®²»Â©µØ»®·ÖΪÇå¾²ÌìϺͷÇÇå¾²ÌìÏ¡£ Óë´Ëͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷»¹ÌṩÁËÐí¶à¹¦Ð§ £¬¿ÉÒÔÓÃÀ´ÉèÖÃSoCÇå¾²Ïà¹ØµÄÉèÖà £¬²¢ÇÒ»¹ÌṩÁËһЩ¼Ä´æÆ÷ £¬ÓÃÓÚµ÷ÊԺʹ¦Öóͷ£Î¥¹æ»á¼û¡£¹ØÓÚÇå¾²AHB¿ØÖÆÆ÷µÄ¸ü¶àÐÅÏ¢ £¬Çë²Î¿¼LPC55SxxÓû§ÊÖ²á(User Manual)ÖÐTrusted Execution EnvironmentÏà¹ØÕ½Ú¡£ ? ?

SoCÖеÄÇå¾²ÎÀÊ¿¡ª¡ªÇå¾²AHB¿ØÖÆÆ÷

¡¾ÌáÒªÐÎò¡¿?




Ò»¡¢Cortex-M33 TrustZone




Cortex M33ÄÚÖÃÁËArmÉè¼ÆµÄTrustZoneÊÖÒÕ £¬¿ÉÒÔʵÏÖÇå¾²(Secure/S)Óë·ÇÇå¾²(Non-Secure/NS)Ö®¼äµÄ¸ôÀë £¬Ìá¸ßϵͳµÄÇ徲Ʒ¼¶¡£

¶÷ÖÇÆÖMCU¼ÓÓÍÕ¾ÖÐÒѾ­ÓÐÈô¸ÉÎÄÕÂΪ¸÷ÈËÏÈÈÝÁËTrustZone:

?

ͨ¹ýÉÏÃæµÄÎÄÕ £¬Ïë±Ø¸÷È˶ÔTrustZoneÒѾ­ÓÐÁËһЩ»ù±¾µÄÃ÷È·¡£

TrustZoneÊÇÄÚÖÃÔÚCortex M33ÄÚºËÖеÄÒ»¸ö¹¦Ð§¡£Çå¾²ÊÇÒ»¸öϵͳ¹¤³Ì £¬¿ÉÊÇ £¬MCUÒ²ÊÇÒ»¸öÂéȸËäСµ«ÎåÔà¾ãÈ«µÄSoC(System on Chip) £¬Äں˾߱¸Çå¾²µÄ¸ôÀëÄÜÁ¦ £¬ÊÇ·ñÄܹ»Öª×ãÎÒÃǹØÓÚÕû¸öSoCϵͳµÄÇå¾²¸ôÀëÒªÇóÄØ£¿

±¾ÎÄÒÔLPC55S69£¨CPU0ΪCortex M33ÇÒÖ§³ÖTrustZone£©ÎªÀý £¬Îª¸÷È˼òÒªÏÈÈÝÇå¾²AHB¿ØÖÆÆ÷¡£

?

¶þ¡¢Æʽâ×ÜÏßÉϵÄÖ÷´Ó×°±¸

ÎÒÃÇ¿ÉÒÔ¼òÆӵذÑMCUÃ÷ȷΪÓÉÄÚºË+¶àÖÖÍâÉè×é³ÉµÄоƬ £¬Èí¼þ¹¤³Ìʦ±àдµÄ´úÂë×îÖÕÔËÐÐÔÚÄÚºËÖÐ £¬Í¨¹ý²Ù×÷ÍâÉèʵÏÖÖÖÖÖ¸÷ÑùµÄ¹¦Ð§¡£

ºÁÎÞÒÉÎÊ £¬ÄÚºËÊÇ×ÜÏßÉϵÄÒ»ÖÖÖ÷×°±¸ £¬Ëü²»µ«¾ßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬»¹»áÔÚÔËÐÐÖÐ×Ô¶¯µØÏò×ÜÏßÉϵÄÆäËû×°±¸£¨ÀýÈçÄÚ´æ £¬flashµÈ£©Ìᳫ»á¼û¡£

¶ø´ó²¿·ÖÍâÉè £¬¶¼ÊÇ´Ó×°±¸ £¬ÀýÈçUSARTºÍSPIµÈÍâÉè £¬Ö»Äܱ»¶¯µØÆÚ´ýÄں˻òÆäËûÖ÷×°±¸µÄÉèÖà £¬È»ºóʵÏÖÏìÓ¦µÄ¹¦Ð§¡£ÔÚÔËÐÐÖÐ £¬´Ó×°±¸²¢²»¾ß±¸²Ù×÷ÆäËû×°±¸µÄÄÜÁ¦¡£

ÓÐһЩÌØÊâµÄÍâÉè £¬ÀýÈçDMA £¬USBµÈÍâÉè £¬ÓëÄÚºËÀàËÆ £¬ËüÃǾßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬²¢ÇÒÔÚÔËÐÐÖÐ £¬»á×Ô¶¯µØ»á¼ûÄÚ´æ¡¢flashÉõÖÁÊÇÆäËûÍâÉèµÄ¼Ä´æÆ÷¡£

?




Èý¡¢Ö»ÓÐTrustZone¾Í¹»ÁËÂð£¿




ÄÇô £¬ÔÚMCUÖÐ £¬Í¨¹ýTrustZone¹¦Ð§ £¬Äں˿ÉÒÔÔÚÔËÐÐÖдÓÇ徲״̬Çл»ÖÁ·ÇÇ徲״̬¡£×ªÒÆÖÁ·ÇÇ徲״̬ºó £¬ÄÚºËÊÇÎÞ·¨»á¼ûÇå¾²ÇøÓòµÄ×ÊÔ´µÄ¡£

ÈçÉϽÚËùÊö £¬×ÜÏßÉÏÓÐÐí¶àÖ÷×°±¸ºÍ´Ó×°±¸¡£¿ÉÊÇ £¬ÓÉÓÚTrustZoneÊǼ¯³ÉÔÚÄÚºËÖеÄ £¬TrustZone²»¿ÉÏÞÖÆÄÚºËÖ®ÍâµÄÆäËûÖ÷×°±¸µÄÐÐΪ £¬×ÜÏßÉϵÄÆäËûÖ÷×°±¸ÈÔÈ»¿ÉÒÔ»á¼ûÇå¾²ÇøºÍ·ÇÇå¾²ÇøµÄËùÓÐ×ÊÔ´¡£

Òò´Ë £¬DMAµÈÆäËû×ÜÏßÉϵÄÖ÷×°±¸ £¬ÈÔÈ»¿ÉÒÔ»á¼ûÕû¸öµØµã¿Õ¼ä £¬×ÝÈ»Cortex M33Äں˱»×ªÒÆÖÁ·ÇÇ徲״̬ £¬´ËʱCortex M33ÄÚºËûÓÐÇå¾²Çø×ÊÔ´µÄ»á¼ûȨÏÞ £¬ÈÔÈ»¿ÉÒÔͨ¹ýʹÓÃÆäËûÖ÷×°±¸£¨ÀýÈçDMA£© £¬»á¼ûí§Òâ×ÊÔ´¡£ÄÇô´Ëʱ £¬DMAµÈÆäËûÖ÷×°±¸¾ÍÏñÊÇÒ»¸ö¿ÉÒÔ±»Ê¹Óõġ°Îó²î¡± £¬ÕâÊÇÇ徲ϵͳ²»¿É½ÓÊܵÄ¡£

ÕâʱµÄϵͳÈçÏÂͼËùʾ £¬×ÝÈ»Cortex M33±»TrustZoneµÄSAUºÍIDAUÑÏ¿áÏÞÖÆ £¬µ«ÆäËûÖ÷×°±¸ÔÚ×ÜÏßÉÏÈÔÈ»ÊÇÁ÷ͨÎÞ×è¡£



?




ËÄ¡¢Çå¾²AHB¿ØÖÆÆ÷




Çå¾²AHB¿ØÖÆÆ÷µÄÓ¢ÎÄÃû³ÆÊÇSecure AHB Controller¡£

×Åʵ £¬±¬·¢Ç°ÎÄËùÊöÎÊÌâµÄÔµ¹ÊÔ­ÓÉÓÐÁ½¸ö£º

?



×ÜÏßÉÏ £¬Ö»ÓÐCortex M33ÄÚºËCPU0¾ßÓÐTrustZone¹¦Ð§ £¬¶øÆäËûµÄÖ÷×°±¸Ã»Óд˹¦Ð§¡£Õ¾ÔÚ×ÜÏߵĽǶȿ´ £¬Ö»ÄÜÅжϳöCPU0 Cortex M33·¢³öµÄÇëÇóºÍ»á¼ûÊÇ·ñÊÇÇå¾² £¬È´ÎÞ·¨ÅжϳöÆäËûÖ÷×°±¸µÄ»á¼ûÇëÇóÊÇÇå¾²»ò·ÇÇå¾²¡£


¹ØÓÚ×ÜÏßÉϵĴÓ×°±¸À´Ëµ £¬´Ó×°±¸ÎÞ·¨ÅжÏÀ´×Ô×ÜÏߵĻá¼ûÊÇÇå¾²ÕվɷÇÇå¾²µÄ £¬Òò´ËÒ²¾ÍÎÞ·¨Í¨¹ýÒÔÉèÖûá¼û¹æÔòµÄ·½·¨ £¬¾Ü¾øÎ¥·´»á¼û¹æÔòµÄ²»·¨ÇëÇóºÍ»á¼û¡£



?

Çå¾²AHB¿ØÖÆÆ÷ÊÇNXP LPC55SxxϵÁÐMCUµÄÒ»¸öÌØÊâÍâÉè¡£

Çå¾²AHB¿ØÖÆÆ÷ÌṩÁËMSW(Master Security Wrapper) £¬MSWΪ×ÜÏßÉϳýCPU0Ö®ÍâµÄÆäËûÖ÷×°±¸ £¬ÌṩÁËÒ»ÖÖdzÒ×µÄÀàËÆÓÚTrustZoneµÄ¹¦Ð§¡£×ÜÏßÉϳýCPU0ÍâµÄÿһ¸öÖ÷×°±¸¶¼ÓÐÒ»¸öMSW¡£

ÀýÈç £¬ÎÒÃÇ¿ÉÒÔͨ¹ýMSW £¬½«Ä³¸öÖ÷×°±¸DMA0ÉèÖÃΪÇå¾²Ö÷×°±¸ £¬ÄÇôÔÚÔËÐÐÖÐ £¬DMA0·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇÇå¾²ÇëÇó£»ÎÒÃÇÒ²¿ÉÒÔ½«ÁíÒ»¸öÖ÷×°±¸DMA1ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸ £¬ÔÚÔËÐÐÖÐ £¬DMA1·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇ·ÇÇå¾²ÇëÇó¡£

ÓÐÁËMSW £¬´Ó×ÜÏߵĽǶȿ´ £¬ÎÒÃǾͿÉÒÔÇø·Ö³öÿһ¸öÖ÷×°±¸·¢³öµÄÇëÇóÊÇÇå¾²ÕվɷÇÇå¾²¡£

Çå¾²AHB¿ØÖÆÆ÷»¹ÎªÃ¿Ò»¸ö´Ó×°±¸£¨ÍâÉ裩ÌṩÁËÒ»¸ö¡°±£°²¡±PPC(Peripheral Protection Checkers) £¬PPC½«»á㡾¡Ö°ÊØ £¬ÑÏ¿áÉó²é»á¼ûÇëÇóÊÇ·ñÇкÏÉèÖõĻ®¶¨Õ³Ì £¬²¢¾Ü¾ø²»·¨µÄ»á¼û¡£

ÀýÈç £¬ÎÒÃÇ¿ÉÒÔ½«Î»ÓÚUSART֮ǰµÄPPC¼ì²é¹æÔòÉèÖÃΪ½öÔÊÐíÇå¾²»á¼û £¬ÄÇôËùÓзÇÇå¾²»á¼û¶¼±»ÊÓΪ²»·¨ £¬²¢±»PPC¾ÜÖ®ÃÅÍâ £¬ÉÏÎÄËùÊö±»ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸µÄDMA1Ò²¾ÍÎÞ·¨»á¼ûºÍ²Ù×÷USART¡£

ͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷ҲΪÄÚ²¿´æ´¢½éÖÊ£¨°üÀ¨RAM £¬FlashºÍROM£©ÌṩÁËÀàËÆPPCµÄ¡°±£°²¡±-MPC(Memory Protection Checkers) £¬MPC¿ÉÒÔ·Ö¿éµØ±£»¤ÖÖÖÖÄÚ²¿´æ´¢½éÖÊ¡£



´Ëʱ×ÜÏߵļܹ¹Í¼ÈçÉÏͼËùʾ¡£

ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷µÄMSW £¬×ÜÏßÉϵÄËùÓÐÖ÷×°±¸²»µ«Ö§³ÖÇå¾²²à´øÐźÅHNONSEC£¨Çå¾²»á¼û£©×÷Ϊ¸ø¶¨»á¼ûµÄÇå¾²ÊôÐÔµÄָʾ £¬Ò²Ö§³ÖHPRIV£¨ÌØȨ£©ÐźÅ×÷ΪÌØȨÓë·ÇÌØȨÊôÐÔµÄָʾ¡££¨×¢£º±¾ÎÄÖصãÏÈÈÝÁËHNONSECÐźÅÏà¹ØµÄÇå¾²Óë·ÇÇå¾²ÊôÐÔ £¬²¢Î´ÏêϸÏÈÈÝÓëHPRIVÏà¹ØµÄÌØȨÓë·ÇÌØȨ £¬ÕâÓëCortex M3/M4µÈÄÚºËÖеÄÌØȨÓë·ÇÌØȨÏàͬ£©¡£

Çå¾²AHB×ÜÏß´¦Öóͷ£HNONSECÐźÅ £¬²¢½«ÆäÓëÇå¾²AHB¿ØÖÆÆ÷ÖÐΪ´Ó×°±¸µÄPPC/MPCËùÉèÖõÄÇå¾²ÊôÐÔ¾ÙÐнÏÁ¿¡£ÈôÊÇÇëÇó»á¼ûµÄÇå¾²ÊôÐÔ²»Î¥·´±»»á¼û´Ó×°±¸µÄÇå¾²ÊôÐÔ £¬ÔòÔÊÐí»á¼û¡£ÈôÊÇÔÚ»á¼ûÖÐÎ¥·´¹æÔò±¬·¢³åÍ» £¬Ôò»áÒý·¢Çå¾²³åÍ»ÖÐÖ¹¡£CPU0Çл»µ½Ç徲ģʽÒÔ´¦Öóͷ£Î¥¹æ¡£

Çå¾²ÊǸöϵͳ¹¤³Ì £¬ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷Õâ¸öÇå¾²ÊØÎÀ £¬ÎÒÃǵÄSoCϵͳ²Å»ª±»µãË®²»Â©µØ»®·ÖΪÇå¾²ÌìϺͷÇÇå¾²ÌìÏ¡£

Óë´Ëͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷»¹ÌṩÁËÐí¶à¹¦Ð§ £¬¿ÉÒÔÓÃÀ´ÉèÖÃSoCÇå¾²Ïà¹ØµÄÉèÖà £¬²¢ÇÒ»¹ÌṩÁËһЩ¼Ä´æÆ÷ £¬ÓÃÓÚµ÷ÊԺʹ¦Öóͷ£Î¥¹æ»á¼û¡£¹ØÓÚÇå¾²AHB¿ØÖÆÆ÷µÄ¸ü¶àÐÅÏ¢ £¬Çë²Î¿¼LPC55SxxÓû§ÊÖ²á(User Manual)ÖÐTrusted Execution EnvironmentÏà¹ØÕ½Ú¡£

?

?

  • ·ÖÀࣺÐÂÎÅÖÐÐÄ
  • ×÷ÕߣºLiu Hao@NXP
  • ȪԴ£º¶÷ÖÇÆÖMCU¼ÓÓÍÕ¾
  • Ðû²¼Ê±¼ä£º2023-03-03 17:05
  • »á¼ûÁ¿£º
ÏêÇé

 

Ò»¡¢Cortex-M33 TrustZone

Cortex M33ÄÚÖÃÁËArmÉè¼ÆµÄTrustZoneÊÖÒÕ £¬¿ÉÒÔʵÏÖÇå¾²(Secure/S)Óë·ÇÇå¾²(Non-Secure/NS)Ö®¼äµÄ¸ôÀë £¬Ìá¸ßϵͳµÄÇ徲Ʒ¼¶¡£
¶÷ÖÇÆÖMCU¼ÓÓÍÕ¾ÖÐÒѾ­ÓÐÈô¸ÉÎÄÕÂΪ¸÷ÈËÏÈÈÝÁËTrustZone:

 

ͨ¹ýÉÏÃæµÄÎÄÕ £¬Ïë±Ø¸÷È˶ÔTrustZoneÒѾ­ÓÐÁËһЩ»ù±¾µÄÃ÷È·¡£
TrustZoneÊÇÄÚÖÃÔÚCortex M33ÄÚºËÖеÄÒ»¸ö¹¦Ð§¡£Çå¾²ÊÇÒ»¸öϵͳ¹¤³Ì £¬¿ÉÊÇ £¬MCUÒ²ÊÇÒ»¸öÂéȸËäСµ«ÎåÔà¾ãÈ«µÄSoC(System on Chip) £¬Äں˾߱¸Çå¾²µÄ¸ôÀëÄÜÁ¦ £¬ÊÇ·ñÄܹ»Öª×ãÎÒÃǹØÓÚÕû¸öSoCϵͳµÄÇå¾²¸ôÀëÒªÇóÄØ£¿
±¾ÎÄÒÔLPC55S69£¨CPU0ΪCortex M33ÇÒÖ§³ÖTrustZone£©ÎªÀý £¬Îª¸÷È˼òÒªÏÈÈÝÇå¾²AHB¿ØÖÆÆ÷¡£

 

¶þ¡¢Æʽâ×ÜÏßÉϵÄÖ÷´Ó×°±¸

ÎÒÃÇ¿ÉÒÔ¼òÆӵذÑMCUÃ÷ȷΪÓÉÄÚºË+¶àÖÖÍâÉè×é³ÉµÄоƬ £¬Èí¼þ¹¤³Ìʦ±àдµÄ´úÂë×îÖÕÔËÐÐÔÚÄÚºËÖÐ £¬Í¨¹ý²Ù×÷ÍâÉèʵÏÖÖÖÖÖ¸÷ÑùµÄ¹¦Ð§¡£
ºÁÎÞÒÉÎÊ £¬ÄÚºËÊÇ×ÜÏßÉϵÄÒ»ÖÖÖ÷×°±¸ £¬Ëü²»µ«¾ßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬»¹»áÔÚÔËÐÐÖÐ×Ô¶¯µØÏò×ÜÏßÉϵÄÆäËû×°±¸£¨ÀýÈçÄÚ´æ £¬flashµÈ£©Ìᳫ»á¼û¡£
¶ø´ó²¿·ÖÍâÉè £¬¶¼ÊÇ´Ó×°±¸ £¬ÀýÈçUSARTºÍSPIµÈÍâÉè £¬Ö»Äܱ»¶¯µØÆÚ´ýÄں˻òÆäËûÖ÷×°±¸µÄÉèÖà £¬È»ºóʵÏÖÏìÓ¦µÄ¹¦Ð§¡£ÔÚÔËÐÐÖÐ £¬´Ó×°±¸²¢²»¾ß±¸²Ù×÷ÆäËû×°±¸µÄÄÜÁ¦¡£
ÓÐһЩÌØÊâµÄÍâÉè £¬ÀýÈçDMA £¬USBµÈÍâÉè £¬ÓëÄÚºËÀàËÆ £¬ËüÃǾßÓÐ×Ô¼ºµÄ¼Ä´æÆ÷ £¬²¢ÇÒÔÚÔËÐÐÖÐ £¬»á×Ô¶¯µØ»á¼ûÄÚ´æ¡¢flashÉõÖÁÊÇÆäËûÍâÉèµÄ¼Ä´æÆ÷¡£
 

Èý¡¢Ö»ÓÐTrustZone¾Í¹»ÁËÂð£¿

ÄÇô £¬ÔÚMCUÖÐ £¬Í¨¹ýTrustZone¹¦Ð§ £¬Äں˿ÉÒÔÔÚÔËÐÐÖдÓÇ徲״̬Çл»ÖÁ·ÇÇ徲״̬¡£×ªÒÆÖÁ·ÇÇ徲״̬ºó £¬ÄÚºËÊÇÎÞ·¨»á¼ûÇå¾²ÇøÓòµÄ×ÊÔ´µÄ¡£
ÈçÉϽÚËùÊö £¬×ÜÏßÉÏÓÐÐí¶àÖ÷×°±¸ºÍ´Ó×°±¸¡£¿ÉÊÇ £¬ÓÉÓÚTrustZoneÊǼ¯³ÉÔÚÄÚºËÖеÄ £¬TrustZone²»¿ÉÏÞÖÆÄÚºËÖ®ÍâµÄÆäËûÖ÷×°±¸µÄÐÐΪ £¬×ÜÏßÉϵÄÆäËûÖ÷×°±¸ÈÔÈ»¿ÉÒÔ»á¼ûÇå¾²ÇøºÍ·ÇÇå¾²ÇøµÄËùÓÐ×ÊÔ´¡£
Òò´Ë £¬DMAµÈÆäËû×ÜÏßÉϵÄÖ÷×°±¸ £¬ÈÔÈ»¿ÉÒÔ»á¼ûÕû¸öµØµã¿Õ¼ä £¬×ÝÈ»Cortex M33Äں˱»×ªÒÆÖÁ·ÇÇ徲״̬ £¬´ËʱCortex M33ÄÚºËûÓÐÇå¾²Çø×ÊÔ´µÄ»á¼ûȨÏÞ £¬ÈÔÈ»¿ÉÒÔͨ¹ýʹÓÃÆäËûÖ÷×°±¸£¨ÀýÈçDMA£© £¬»á¼ûí§Òâ×ÊÔ´¡£ÄÇô´Ëʱ £¬DMAµÈÆäËûÖ÷×°±¸¾ÍÏñÊÇÒ»¸ö¿ÉÒÔ±»Ê¹ÓõēÎó²î” £¬ÕâÊÇÇ徲ϵͳ²»¿É½ÓÊܵÄ¡£
ÕâʱµÄϵͳÈçÏÂͼËùʾ £¬×ÝÈ»Cortex M33±»TrustZoneµÄSAUºÍIDAUÑÏ¿áÏÞÖÆ £¬µ«ÆäËûÖ÷×°±¸ÔÚ×ÜÏßÉÏÈÔÈ»ÊÇÁ÷ͨÎÞ×è¡£
 

ËÄ¡¢Çå¾²AHB¿ØÖÆÆ÷

Çå¾²AHB¿ØÖÆÆ÷µÄÓ¢ÎÄÃû³ÆÊÇSecure AHB Controller¡£
×Åʵ £¬±¬·¢Ç°ÎÄËùÊöÎÊÌâµÄÔµ¹ÊÔ­ÓÉÓÐÁ½¸ö£º

 

  1. ×ÜÏßÉÏ £¬Ö»ÓÐCortex M33ÄÚºËCPU0¾ßÓÐTrustZone¹¦Ð§ £¬¶øÆäËûµÄÖ÷×°±¸Ã»Óд˹¦Ð§¡£Õ¾ÔÚ×ÜÏߵĽǶȿ´ £¬Ö»ÄÜÅжϳöCPU0 Cortex M33·¢³öµÄÇëÇóºÍ»á¼ûÊÇ·ñÊÇÇå¾² £¬È´ÎÞ·¨ÅжϳöÆäËûÖ÷×°±¸µÄ»á¼ûÇëÇóÊÇÇå¾²»ò·ÇÇå¾²¡£
  2. ¹ØÓÚ×ÜÏßÉϵĴÓ×°±¸À´Ëµ £¬´Ó×°±¸ÎÞ·¨ÅжÏÀ´×Ô×ÜÏߵĻá¼ûÊÇÇå¾²ÕվɷÇÇå¾²µÄ £¬Òò´ËÒ²¾ÍÎÞ·¨Í¨¹ýÒÔÉèÖûá¼û¹æÔòµÄ·½·¨ £¬¾Ü¾øÎ¥·´»á¼û¹æÔòµÄ²»·¨ÇëÇóºÍ»á¼û¡£

 

Çå¾²AHB¿ØÖÆÆ÷ÊÇNXP LPC55SxxϵÁÐMCUµÄÒ»¸öÌØÊâÍâÉè¡£
Çå¾²AHB¿ØÖÆÆ÷ÌṩÁËMSW(Master Security Wrapper) £¬MSWΪ×ÜÏßÉϳýCPU0Ö®ÍâµÄÆäËûÖ÷×°±¸ £¬ÌṩÁËÒ»ÖÖdzÒ×µÄÀàËÆÓÚTrustZoneµÄ¹¦Ð§¡£×ÜÏßÉϳýCPU0ÍâµÄÿһ¸öÖ÷×°±¸¶¼ÓÐÒ»¸öMSW¡£
ÀýÈç £¬ÎÒÃÇ¿ÉÒÔͨ¹ýMSW £¬½«Ä³¸öÖ÷×°±¸DMA0ÉèÖÃΪÇå¾²Ö÷×°±¸ £¬ÄÇôÔÚÔËÐÐÖÐ £¬DMA0·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇÇå¾²ÇëÇó£»ÎÒÃÇÒ²¿ÉÒÔ½«ÁíÒ»¸öÖ÷×°±¸DMA1ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸ £¬ÔÚÔËÐÐÖÐ £¬DMA1·¢³öµÄËùÓлá¼ûÇëÇó £¬¶¼ÊÇ·ÇÇå¾²ÇëÇó¡£
ÓÐÁËMSW £¬´Ó×ÜÏߵĽǶȿ´ £¬ÎÒÃǾͿÉÒÔÇø·Ö³öÿһ¸öÖ÷×°±¸·¢³öµÄÇëÇóÊÇÇå¾²ÕվɷÇÇå¾²¡£
Çå¾²AHB¿ØÖÆÆ÷»¹ÎªÃ¿Ò»¸ö´Ó×°±¸£¨ÍâÉ裩ÌṩÁËÒ»¸ö“±£°²”PPC(Peripheral Protection Checkers) £¬PPC½«»á㡾¡Ö°ÊØ £¬ÑÏ¿áÉó²é»á¼ûÇëÇóÊÇ·ñÇкÏÉèÖõĻ®¶¨Õ³Ì £¬²¢¾Ü¾ø²»·¨µÄ»á¼û¡£
ÀýÈç £¬ÎÒÃÇ¿ÉÒÔ½«Î»ÓÚUSART֮ǰµÄPPC¼ì²é¹æÔòÉèÖÃΪ½öÔÊÐíÇå¾²»á¼û £¬ÄÇôËùÓзÇÇå¾²»á¼û¶¼±»ÊÓΪ²»·¨ £¬²¢±»PPC¾ÜÖ®ÃÅÍâ £¬ÉÏÎÄËùÊö±»ÉèÖÃΪ·ÇÇå¾²Ö÷×°±¸µÄDMA1Ò²¾ÍÎÞ·¨»á¼ûºÍ²Ù×÷USART¡£
ͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷ҲΪÄÚ²¿´æ´¢½éÖÊ£¨°üÀ¨RAM £¬FlashºÍROM£©ÌṩÁËÀàËÆPPCµÄ“±£°²”-MPC(Memory Protection Checkers) £¬MPC¿ÉÒÔ·Ö¿éµØ±£»¤ÖÖÖÖÄÚ²¿´æ´¢½éÖÊ¡£
´Ëʱ×ÜÏߵļܹ¹Í¼ÈçÉÏͼËùʾ¡£
ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷µÄMSW £¬×ÜÏßÉϵÄËùÓÐÖ÷×°±¸²»µ«Ö§³ÖÇå¾²²à´øÐźÅHNONSEC£¨Çå¾²»á¼û£©×÷Ϊ¸ø¶¨»á¼ûµÄÇå¾²ÊôÐÔµÄָʾ £¬Ò²Ö§³ÖHPRIV£¨ÌØȨ£©ÐźÅ×÷ΪÌØȨÓë·ÇÌØȨÊôÐÔµÄָʾ¡££¨×¢£º±¾ÎÄÖصãÏÈÈÝÁËHNONSECÐźÅÏà¹ØµÄÇå¾²Óë·ÇÇå¾²ÊôÐÔ £¬²¢Î´ÏêϸÏÈÈÝÓëHPRIVÏà¹ØµÄÌØȨÓë·ÇÌØȨ £¬ÕâÓëCortex M3/M4µÈÄÚºËÖеÄÌØȨÓë·ÇÌØȨÏàͬ£©¡£
Çå¾²AHB×ÜÏß´¦Öóͷ£HNONSECÐźÅ £¬²¢½«ÆäÓëÇå¾²AHB¿ØÖÆÆ÷ÖÐΪ´Ó×°±¸µÄPPC/MPCËùÉèÖõÄÇå¾²ÊôÐÔ¾ÙÐнÏÁ¿¡£ÈôÊÇÇëÇó»á¼ûµÄÇå¾²ÊôÐÔ²»Î¥·´±»»á¼û´Ó×°±¸µÄÇå¾²ÊôÐÔ £¬ÔòÔÊÐí»á¼û¡£ÈôÊÇÔÚ»á¼ûÖÐÎ¥·´¹æÔò±¬·¢³åÍ» £¬Ôò»áÒý·¢Çå¾²³åÍ»ÖÐÖ¹¡£CPU0Çл»µ½Ç徲ģʽÒÔ´¦Öóͷ£Î¥¹æ¡£
Çå¾²ÊǸöϵͳ¹¤³Ì £¬ÓÐÁËÇå¾²AHB¿ØÖÆÆ÷Õâ¸öÇå¾²ÊØÎÀ £¬ÎÒÃǵÄSoCϵͳ²Å»ª±»µãË®²»Â©µØ»®·ÖΪÇå¾²ÌìϺͷÇÇå¾²ÌìÏ¡£
Óë´Ëͬʱ £¬Çå¾²AHB¿ØÖÆÆ÷»¹ÌṩÁËÐí¶à¹¦Ð§ £¬¿ÉÒÔÓÃÀ´ÉèÖÃSoCÇå¾²Ïà¹ØµÄÉèÖà £¬²¢ÇÒ»¹ÌṩÁËһЩ¼Ä´æÆ÷ £¬ÓÃÓÚµ÷ÊԺʹ¦Öóͷ£Î¥¹æ»á¼û¡£¹ØÓÚÇå¾²AHB¿ØÖÆÆ÷µÄ¸ü¶àÐÅÏ¢ £¬Çë²Î¿¼LPC55SxxÓû§ÊÖ²á(User Manual)ÖÐTrusted Execution EnvironmentÏà¹ØÕ½Ú¡£

 

¹Ø×¢long8ÍøÕ¾¼°Î¢ÐŹ«ÖںŠ£¬Ïàʶ  MCU¸ü¶àÐÅÏ¢¡£

Òªº¦´Ê£º

ɨ¶þάÂëÓÃÊÖ»ú¿´

ÏÂÒ»¸ö: ÎÞ
ÏÂÒ»¸ö: ÎÞ

Ïà¹ØÐÂÎÅ

28Äêרע°ëµ¼Ìå

Ϊº£ÄÚ¸÷ÐÐÒµ¿í´óÓû§Ìṩ¸ßÆ·Öʵİ뵼Ìå²úÆ·

SINCE 1997

 ÎªÄúÁ¿Éí¶¨Öƽâ¾ö¼Æ»®

Verification ¾©ICP±¸2022014495ºÅ-2

Copyright ? 2022  long8  All rights reserved      

SEO±êÇ©   ÍøÕ¾½¨É裺ÖÐÆó¶¯Á¦  ±±¾©

ÍøÕ¾µØͼ