我們知道,i.MXRT1xxx家族早期型號(RT1050/RT0160/RT1020)的硬件解密外設名字叫BEE,這個外設主要是配合FlexSPI外設去實現外接串行NOR Flash在線解密XIP執行用的。而到了最近的i.MXRT1xxx新型號(RT1010/RT1170)上,BEE外設被替換成了OTFAD外設,功能不變,解密效率得到了很大提升,但客戶在使能OTFAD加密啟動時常常遇到App無法正常運行問題,這其實跟OTFAD自身的一個時鐘小限制有關(這個限制在BEE上不存在),今天痞子衡就來好好聊一聊OTFAD的這個小限制:
一、問題描述
我們以i.MXRT1010為例,從恩智浦官網下載一個SDK包(痞子衡下的是v2.9.1),隨便選擇其中一個例程,就以最簡單的 \SDK\boards\evkmimxrt1010\demo_apps\led_blinky 為例吧。編譯這個 led_blinky 工程(選擇 flexspi_nor_debug build,即XIP工程),得到可執行文件(實際bin文件大小為10KB左右),使用 NXP-MCUBootUtility 工具將可執行文件(led_blinky.out)下載進MIMXRT1010-EVK開發板中(下載時啟動模式為2'b01,啟動時切換到2'b10),可以看到板載綠色LED小燈(D25)會閃,例程是可以正常工作的。
現在讓我們嘗試使能OTFAD加密,回到芯片下載模式依然借助 NXP-MCUBootUtility 工具,將工具 Secure boot type 選項切換為 OTFAD Encrypted Image Boot,其他設置均默認(此時加密范圍是 0x60001000 - 0x60001fff,僅加密IVT等啟動頭,不含app),再次下載可執行文件(led_blinky.out),換到芯片啟動模式復位板子,例程依舊是正常工作的,看起來OTFAD加密啟動似乎沒有問題。
讓我們再進一步,將加密范圍設置為0x60002000 - 0x60004fff,這時加密區域覆蓋到了整個app,重新按上述流程操作一遍,發現例程沒能正常工作,這時候OTFAD加密啟動出了問題,難道app區域不能被加密?那OTFAD加密還有啥意義?
app區域當然可以被加密,跟著痞子衡再做一次實驗,在 led_blinky.c 文件的 main() 函數中,我們將時鐘配置函數 BOARD_BootClockRUN() 直接注釋掉或者在鏈接文件里將其全部搞成 __ramfunc(即在芯片內部RAM里執行這部分時鐘配置代碼),這個例程僅是利用SysTick定時翻轉GPIO,因此時鐘配置代碼去掉不影響正常運行,重新編譯工程再按上面流程操作一遍,這時候例程又能正常工作了,說明加密后的app是能被OTFAD正常解密執行的。
現在的問題變成了為何OTFAD加密啟動時,BOARD_BootClockRUN() 函數不能在Flash里執行,這就是問題所在。
Lenze EVF8212-E
KLA-Tencor Quantox High Voltage Control Module 52-1081
Varian E1000 ISPM Closed Loop Module E11057020 working
AMAT E84 Controller 9090-00042 ITL working
AMAT E84 Interface Controller 9240-00519 working
AMAT Wafer Handling Interface Module 9090-00312 working
AMI Power Supply P-1219 untested 0190-01606
AMAT XR80 Implanter 3X5B Diagnostic Unit 9090-00685ITL
Hitachi S-9300 Ion Pump Power Supply 15444111-12
KLA-Tencor 8100 200mm XY Stage 780-10480-001 working
KLA Coherent Innova Laser Power Supply I-Line-PS-KLA
KLA-Tencor 740-324482-000
Coherent Innova Laser Power Supply I-Line-PS-KLA
KLA-Tencor 750-321963-002 working
Ebara Turbomolecular Turbopump Controller Model 305W
TEL ACT 8 Motor I/O Board TKB3100 AP93-0318C-12 working
VAT Pneumatic Gate Valve 10846-XE24-AHA1 working
CTI-Cryogenics On-Board 8F Cryopump 8116237G002
Equipe PRI 300mm Prealigner PRE-300B-CE not working
TEL Tokyo Electron Weldment Short Pod Door A127669 new
Tokyo electron ES Shield Depo 85-WR DRM2 1D10-311227-W1
Tokyo Electron ES Cover Bellows A DRM2 1D10-200734-W1
Tokyo Electron ES Plate Baffle 0-15 DRM2 1D10-101475-21
Cybor Resist Pump Controller 512F & Power Supply 506A
Verteq Amplifier ST800-CC50-MC2Px working 3156023-000D
Varian Turbo-V 250 TMP Controller EX9699523 working
PCT Systems Generator 6000 E/E AMAT working
Ebara 305W Turbopump Controller PWM-20M working
TEL Upper P-1 Electrode 1D10-202204-12 new
Neslab Recirculating CoolFlow Chiller HX-150 0010-00570
AMAT XR80 Implanter Vacuum Interface 9090-00102ITL
AMAT XR80 Implanter Magnet Controller 9090-00086ITL
KLA-Tencor CRS1010 Camera Lens Filter 002001
KLA-Tencor CRS1010 Lens Filter Assy. 000056 working
AMAT XR80 Implanter Vacuum Interface 0090-91621ITL
SVG 90S End Station CPU Interface Unit
AE MDX Delta DC Power Supply 3152194-013R not working
AE RFPP Advanced Energy LF-5 500W Generator 3150012-009
Tested working AMAT 0920-01014
AE Apex 3000/13 RF Generator 3kW 13.56MHz not working
Edwards Heat Exchanger HTU-108 not working 0190-04379
Edwards HTU-108 Heat Exchanger not working
Olympus KLA-Tencor AIT Microscope Turret 0034223-000
CTI-Cryogenics On-Board Control Module
Edwards HTU-108D Heat Exchanger not working
Olympus KLA-Tencor AIT Microscope Turret 529737
Nikon 4K177-955-1 NSR S202 Transfer Robot Untested
Nikon NSR S202 Transfer Robot Untested
KLA-Tencor 710-663106-001 Dual Stepper Driver 2 New
KLA-Tencor EDrawer Hardware RETR Kit 5.2 STD 2139
KLA-Tencor 2139 Flipper Autoloader Kit 780-689642-000
Matsusada HJPZ-1B-HS-V2 High Voltage Power Supply
Hitachi I900SRT BA-H500 H2 DC Power Supply Working
Hitachi I900SRT Wafer Transfer Robot Working
Hitachi I900SRT Lens Assembly Working
Hitachi I900SRT Lens Filter Assembly Working
Yaskawa TEL Unity 2 Servo Controller BC930310 working
KLA-Tencor AIT2 Power Assembly LPM 390500
Varian Turbo-V 250 TMP Controller 9699523S021 working
AMAT SBS Tech. FIC 3 Port Cont CP3308S000297 0010-07093
Fuji Electric 20kVA Transformer JEC-2200-1995 working
Varian Turbo-V 700HT Turbopump Controller 9699545
AMAT XR80 Beamline Vacuum Control 0090-91965 ITL
Yokogawa TEL ACT 12 DD Servo Actuator SR1200A02
TEL ACT 8 12 Chemical I/O Board CPC-T0001A-13
SVG 90S PacificScientific Servo Controller SC753A040-08
SVG 90S Pacific Scientific Controller 121-235 Rev C
KLA-Tencor CRS1010 Camera Filter Assy. 000056 working
Tokyo Electron ACT 8 12 Chemical I/O PCB CPC-T0001A-13
KLA-Tencor CRS1010 Lens Filter Assy. 002001 working
GaSonics Lamp Tray Assembly A95-053-02 lot of 3
Sytron DC Power Supply SYR 75-6.5 working 75V 6.5A
CTI-Cryogenics On-Board 8F Cryopump w/ACM 8116081G006
AE HFV 8000 RF Generator 3155083-000B not working
MOOG BX-300 8-Axis Controller 100-000-943-01 0090-00432
Nova NovaScan Controller 315-20000-00 untested
Daihen RF Match 3000W AMN-30H not working 0190-15323
Neslab Coolflow Chiller HX-150 not working 0010-00570
Thermo Neslab MX900 MX-900W Chiller 0190-06961
Nikon NSR S202 Light Source Module working
AMAT P5000 System Electronic Assy. 0010-09001 working
AMAT P5000 Liquid Source Heater Control Bd. 0100-09180
STIL High Res. AutoFocus Sensor CHRAF2-450-N6 working
CTI Cryogenics On-Board P300 Cryopump 8116250G001
KLA-Tencor Glentek Electronics Analyzer 0045454-000
AE RFPP LF-5 RF Gen 3150012-009 working 500W 0190-01014
KLA-Tencor SLX RF Bench Assy. 740-336864-001 untested
KLA-Tencor Rotary Transfer Arm 720-07360-000
KLA-Tencor XP Objective Lens 0110155-000 Untested
AE Advanced Energy RFPP LF-5 Generator 7520572050 500W
VAT Control Valve 16540-PA41-ACA1/0009 gate pendulum
Berkeley Process 4-Axis Controller BAM-432T working
Brooks MTR-5 MultiTran 5 Robot Dual Arm Assy. working
Newport Kensington Robot 15-3702-1425-26 0190-22250
Kensington 25-4021-0015-05 Robot Controller 0190-23562
AMAT XR80 Vacuum Interface 9090-00102 ITL working
Synetics End Effector UK-9240-06310-D new 9240-06310
Synetics End Effector UK-9240-06174-C new 9240-06174
Yaskawa Synetics 300mm End Effector HU0480262 new
Yaskawa Synetics 300mm End Effector BR943067 new
Lenze EVF8212-E
1769-ADN
1769-AENTR
1769-ARM
1769-ASCII
1769-BA
1769-BOOLEAN
1769-CJC
1769-CLL1
1769-CLL3
1769-CRL1
1769-CRL3
1769-CRR1
1769-CRR3
1769-ECL
1769-ECR
1769-HSC
1769-IA16
1769-IA8I
1769-IF16C
1769-IF16V
1769-IF4
1769-IF4FXOF2F
1769-IF4I
1769-IF4XOF2
1769-IF8
1769-IG16
1769-IM12
1769-IQ16
1769-IQ16F
1769-IQ32
1769-IQ32T
1769-IQ6XOW4
1769-IR6
1769-IT6
1769-L16ER-BB1B
1769-L18ER-BB1B
1769-L18ERM-BB1B
1769-L23-QBFC1B
1769-L23E-QB1B
1769-L23E-QBFC1B
1769-L24ER-QB1B
1769-L24ER-QBFC1B
1769-L27ERM-QBFC1B
1769-L30ER
1769-L30ER-NSE
1769-L30ERM
1769-L31
1769-L32C
1769-L32E
1769-L33ER
1769-L33ERM
1769-L35CR
1769-L35E
1769-L36ERM
1769-NPK18
1769-NPKSDN
1769-OA16
1769-OA8
1769-OB16
1769-OB16P
1769-OB32
1769-OB32T
1769-OB8
1769-OF2
1769-OF4
1769-OF4CI
1769-OF4VI
1769-OF8C
1769-OF8V
1769-OG16
1769-OV16
1769-OV32T
1769-OW16
1769-OW8
1769-OW8I
1769-PA2
1769-PA4
1769-PB2
1769-PB4
1769-RD
1769-RL1
1769-RL2
1769-RTB40AIO
1769-RTB40DIO
1769-RTB45
1769-RTBN10
1769-RTBN18
1769-SDN
1769-SM1
1769-SM2
1769-STRT10
1769-STRT11
1769-STRT12
1769-STRT13
1794-ACN
1794-ACN15
1794-ACN15K
1794-ACNR
1794-ACNR15
1794-ACNR15XT
1794-ADN
1794-ADNK
1794-AENT
1794-AENTR
1794-AENTRXT
1794-APB
1794-APBDPV1
1794-ASB
1794-ASB2
1794-CE1
1794-CE3
1794-CJC2
1794-IA16
1794-IA8
1794-IA8I
1794-IB10XOB6
1794-IB10XOB6XT
1794-IB16
1794-IB16D
1794-IB16XOB16P
1794-IB16XT
1794-IB32
1794-IB8
1794-IC16
1794-ID2
1794-IE12
1794-IE4XOE2
1794-IE4XOE2XT
1794-IE8
1794-IE8H
1794-IE8XOE4
1794-IE8XT
1794-IF2XOF2I
1794-IF2XOF2IXT
1794-IF4I
1794-IF4IXT
1794-IF8IH
1794-IG16
1794-IH16
1794-IJ2
1794-IJ2XT
1794-IM16
1794-IM8
1794-IP4
1794-IR8
1794-IRT8
1794-IRT8XT
1794-IT8
1794-IV16
1794-IV32
1794-LBL
1794-N2
1794-NM1
1794-OA16
1794-OA8
1794-OA8I
1794-OB16
1794-OB16D
1794-OB16P
1794-OB16PXT
1794-OB32P
1794-OB8
1794-OB8EP
1794-OB8EPXT
1794-OC16
1794-OE12
1794-OE4
1794-OE4XT
1794-OE8H
1794-OF4I
1794-OF4IXT
1794-OF8IH
1794-OG16
1794-OM16
1794-OM8
1794-OV16
1794-OV16P
1794-OV32
1794-OW8
1794-OW8XT
1794-PS13
1794-PS3
1794-TB2
1794-TB3
1794-TB32
1794-TB32S
1794-TB37DS
1794-TB3G
1794-TB3GK
1794-TB3GS
1794-TB3GSK
1794-TB3K
1794-TB3S
1794-TB3SK
1794-TB3T
1794-TB3TK
1794-TB3TS
1794-TB3TSK
1794-TB62DS
1794-TBKD
1794-TBN
1794-TBNF
1794-TBNK
1794-VHSC
1762-IA8
1762-IF2OF2
1762-IF4
1762-IQ16
1762-IQ32T
1762-IQ8
1762-IQ8OW6
1762-IR4
1762-IT4
1762-L24AWA
1762-L24AWAR
1762-L24BWA
1762-L24BWAR
1762-L24BXB
1762-L24BXBR
1762-L40AWA
1762-L40AWAR
1762-L40BWA
1762-L40BWAR
1762-L40BXB
1762-L40BXBR
1762-MM1
1762-MM1RTC
1762-OA8
1762-OB16
1762-OB32T
1762-OB8
1762-OF4
1762-OV32T
1762-OW16
1762-OW8
1762-OX6I
1762-RPLDIN2
1762-RPLDR2
1762-RPLRTB40
1762-RTC
1764-24AWA
1764-24BWA
1764-28BXB
1764-28BXB1
1764-DAT
1764-LRP
1764-LSP
1764-MM1
1764-MM1RTC
1764-MM2
1764-MM2RTC
1764-MM3
1764-MM3RTC
1764-RPLTB1
1764-RPLTB2
1764-RTC
1766-L32AWA
1766-L32AWAA
1766-L32BWA
1766-L32BWAA
1766-L32BXB
1766-L32BXBA
1766-MM1
1768-CNB
1768-CNBR
1768-ENBT
1768-EWEB
1768-KY1
1768-L43
1768-L43S
1768-L45
1768-L45S
1768-M04SE
1768-PA3
1768-PB3
1783-BMS06SA
1783-BMS06SGA
1783-BMS06SGL
1783-BMS06SL
1783-BMS06TA
1783-BMS06TGA
1783-BMS06TGL
1783-BMS06TL
1783-BMS10CA
1783-BMS10CGA
1783-BMS10CGL
1783-BMS10CGN
1783-BMS10CGP
1783-BMS10CL
1783-BMS12T4E2CGL
1783-BMS12T4E2CGNK
1783-BMS12T4E2CGP
1783-BMS20CA
1783-BMS20CGL
1783-BMS20CGN
1783-BMS20CGP
1783-BMS20CGPK
1783-BMS20CL
1783-BMS4S2SGA
1783-BMS4S2SGL
1783-EMS04T
1783-EMS08T
1783-ETAP
1783-ETAP1F
1783-ETAP2F
1783-HMS16T4CGN
1783-HMS16TG4CGN
1783-HMS16TG4CGR
1783-HMS4C4CGN
1783-HMS4EG8CGN
1783-HMS4EG8CGR
1783-HMS4S8E4CGN
1783-HMS4SG8EG4CGN
1783-HMS4SG8EG4CGR
1783-HMS4T4E4CGN
1783-HMS8S4CGN
1783-HMS8SG4CGN
1783-HMS8SG4CGR
1783-HMS8T4CGN
1783-HMS8TG4CGN
1783-HMS8TG4CGR
1783-HMS8TG8EG4CGN
1783-HMS8TG8EG4CGR
1783-IMS28NAC
1783-IMS28NDC
1783-IMS28RAC
1783-IMS28RDC
1783-IMXAC
1783-IMXDC
1783-MCF
1783-MS06T
1783-MS10T
1783-MX04E
1783-MX04S
1783-MX04T04E
1783-MX08F
1783-MX08S
1783-MX08T
1783-NATR
1783-RMCF
1783-RMS06T
1783-RMS10T
1783-SFP100FX
1783-SFP100LX
1783-SFP1GLX
1783-SFP1GSX
1783-SRKIT
1783-US14T2S
1783-US16T
1783-US4T1F
1783-US4T1H
1783-US5T
1783-US5TG
1783-US6T2F
1783-US6T2H
1783-US6TG2CG
1783-US7T1F
1783-US7T1H
1783-US8T
1783-ZMS16TA
1783-ZMS24TA
1783-ZMS4T4E2TGN
1783-ZMS4T4E2TGP
1783-ZMS8T8E2TGN
1783-ZMS8T8E2TGP
1783-ZMS8TA
1784-CF128
1784-CP
1784-CP10
1784-CP11
1784-CP14
1784-CP6
1784-CP7
1784-PCC1
1784-PCD1
1784-PCIC
1784-PCICS
1784-PCM2
1784-PCM5
1784-PCM6
1784-PKTCS
1784-PKTX
1784-PKTXD
1784-SD1
1784-SD2
1784-U2CN
1784-U2DHP
1784-U2DN