久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    淺談嵌入式MCU軟件開發之S32K1xx系列MCU的啟動過程和啟動時間優化方法詳細

     xingqingzl 2020-08-18

    內容提要

    引言

    1. S32K1xx系列MCU的啟動過程詳解

    1.1 S32K1xx系列MCU的啟動過程的硬件啟動序列(boot squence)

    1.2 S32K1xx系列MCU的啟動過程的軟件啟動程序(startup)

    2. S32K1xx系列MCU的啟動時間優化方法詳解

    2.1 設置startup和clock初始化部分的SDK代碼的優化等級(Assembler/C compiler optimization level)為-O1

    2.2 使用串行(Sequential) Secure boot而不是并行(Parallel) Secure boot

    2.3  配置Flash選項字節(0x40D@P-Flash)保證復位后CPU內核和系統時鐘分配系數最小,運行頻率為硬件允許的最快頻率

    2.4  減少.data段數據

    2.5 配置使能S32K14x系列MCU的內核硬件FPU

    2.6 配置使能S32K14x系列MCU的內核Cache

    2.7 優化bootloader,盡早跳轉到APP應用程序

    2.8 選擇頻率更高的外部晶振并配置合適的增益模式

    總結

    引言

    一些功能安全要求較高的汽車ECU應用,比如電子助力轉向(EPS)、電子檔位控制(gear control)等,對于ECU的啟動時間(startup/boot time)有嚴格的要求, 希望ECU使用的MCU能夠盡快完成系統啟動初始化,執行功能程序。此外,一些整車的網絡管理也要求ECU在低功耗模式喚醒后,能夠盡快響應CAN/LIN總線報文,也要求MCU的啟動時間要足夠快。

    針對這一需求,汽車ECU軟件的開發工程師必須對其使用的MCU啟動過程(包括硬件boot和軟件startup)十分了解,才能夠有針對性的對其進行優化,從而滿足ECU系統對啟動時間的要求。

    接下來,本文就以NXP的通用汽車MCU--S32K1xx系列MCU為例,介紹其啟動過程和啟動時間的優化方法,希望對大家有所幫助和啟發。
    1. S32K1xx系列MCU的啟動過程詳解

    如上文所講,在開始對S32K1xx系列MCU的啟動時間進行優化之前,我們必須首先了解其啟動過程。

    S32K1xx系列MCU從復位到這些用戶應用程序(main()函數)的啟動過程包括硬件boot過程和軟件startup兩部分。

    1.1 S32K1xx系列MCU的啟動過程的硬件啟動序列(boot squence)

    S32K1xx序列MCU上電后,內部的電源管理器(regulator)將系統置于POR復位狀態,直到VDD電壓上升到超過POR復位門限電平,然后低電壓檢測模塊會接管系統復位,直到VDD電壓上升超過其LVR復位門限電平。在完成POR和LVR復位后,MCU系統的電源系統已經能夠為內部時鐘(FIRC、SIRC和LPO等)和存儲器(NVM)模塊以及CPU內核提供穩定的工作電壓了,接下來,硬件將使能MCU boot所需的時鐘(比如core clock, system clock, flash clock和 busclocks等)并根據用戶的配置(FOPT @ 0x40D)內核和系統時鐘分頻器, 然后,啟動Flash控制器初始化,等待其完成初始化后,才會釋放RESET_B的外部復位引腳,系統退出復位,CPU從默認中斷向量(0x0000地址開始的P-Flash存儲器)中加載內核主堆棧(MSP @0x0000)和PC的初始化值(Reset_Handler @ 0x0004),并將LR寄存器設置為0xFFFF_FFFF,從而MCU就可以開始運行用戶可控的Startup軟件代碼了,與此同時,若用戶使能了EEE數據自動拷貝功能(在調用FlexNVM partition命令時,設置FCCOB3 = 1),備份在FlexNVM中的EEE數據將被自動拷貝到FlexRAM中:

    1.2 S32K1xx系列MCU的啟動過程的軟件啟動程序(startup)

    關于S32K1xx系列MCU的startup過程,請參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀):

    淺談嵌入式MCU軟件開發之S32K1xx系列MCU啟動過程及重映射代碼到RAM中運行方法詳解

    本文不再贅述。

    2. S32K1xx系列MCU的啟動時間優化方法詳解

    基于以上介紹,下面我們就一起來看看S32K1xx系列MCU的啟動時間優化具體方法和步驟。

    2.1 設置startup和clock初始化部分的SDK代碼的優化等級(Assembler/C compiler optimization level)為-O1

    startupclock初始化部分的SDK代碼設置優化等級(Assembler/C compiler optimization level)為-O1,通過編譯器優化,減少執行這部分功能時的CPU指令,從而加快startup代碼和clock初始化代碼的執行。

    具體方法可以參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀):

    S32DS GNU GCC編譯優化選項與配置方法詳解及S32 SDK代碼編譯優化選項設置建議》;
    2.2 使用串行(Sequential) Secure boot而不是并行(Parallel) Secure boot

    根據1.1小節的介紹,若在應用中使用了S32K1xx系列MCU的硬件加密模塊CSEc的安全啟動(Secure boot)功能,建議使用串行(Sequential) Secure boot而不是并行(Parallel) Secure boot, 因為后者工作時CSEc和CPU內核都會訪問P-Flash,從而導致CPU內核從P-Flash取指令的速度變慢,從而拉長Startup運行時間,而且Secure boot運行完之前不允許修改系統時鐘配置(尤其是Flash的工作時鐘FLASH_CLK):

    Tips: 關于S32K1xx系列MCU的Secure boot配置,請參考以下應用筆記(點擊文章標題即可直接跳轉閱讀):

    AN5401, Getting Started with CSEc Security Module (REV 1)  AN5401SW.zip
     
    2.3  配置Flash選項字節(0x40D@P-Flash)保證復位后CPU內核和系統時鐘分配系數最小,運行頻率為硬件允許的最快頻率

    根據1.1小節的介紹,要獲得最短的S32K1xx系列MCU復位序列(reset sequence)和啟動時間(boot time),用戶需要檢查確認為其地址0x40D的Flash選項配置字節的最低位(FTFC->LPBOOT)是否為1(默認Flash擦除狀態),以確保復位和啟動過程中使用硬件運行的最快頻率--48MHz(FIRC時鐘,S32K1xx系列MCU復位后默認的系統參考時鐘):

    Tips: 配置Flash選項配置字節的最低位(FTFC->LPBOOT)為0,則將復位過程中內核和系統時鐘分頻系數為2(將48MHz FIRC二分頻),使用24MHz的core clock和system clock,可以降低復位和啟動過程的平均功耗。

    Tips: S32K1xx系列MCU的P-Flash地址0x400~0x40F的16個字節為Flash配置區域(Flash configuration filed),其中包括8字節的Flash加密解密驗證后門秘鑰(unsecure verify key),P-Flash和D-Flash以及EEE存儲器的保護(protection)配置字節、Flash選項配置(FOPT)字節以及Flash加密(FSEC)配置字節等:

    Tips: 關于S32K1xx系列MCU的Flash配置區域(Flash configuration filed)定義和配置方法,請參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀)

    S32K1xx系列MCU應用指南之芯片鎖死(lockup)復位原因分析與恢復方法詳解》;

    2.4  減少.data段數據

    減少.data段數據,包括用戶定義使用的帶初始化值的全局變量和Processor Expert生成的SDK外設驅動初始化配置結構體(double check所有的SDK外設驅動和中間件組件配置的Read only選項勾選,如下為CAN_PAL組件的SDK配置,默認都是勾線的,除非用戶需要在驅動和中間件運行時改變其配置(重新初始化)。

    Tips:  若不可避免的需要這樣使用,也可以選擇多生成一個配置(configuration),運行時調用不同的初始化配置即可):

    2.5 配置使能S32K14x系列MCU的內核硬件FPU

    在startup代碼和時鐘配置時會用到一些除法計算,配置使能S32K14x系列MCU的內核硬件FPU,能夠縮短計算時間。具體方法可以參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀):‘

    淺談嵌入式MCU軟件開發之S32K1xx系列MCU CPU內核性能優化方法詳解》;

    2.6 配置使能S32K14x系列MCU的內核Cache

    配置使能S32K14x系列MCU的內核Cache,能夠加速CPU內核的取指(Fetch Instruction),從而縮短starup代碼的執行時間。具體方法可以參考如下公眾號文章(點擊文章標題即可直接跳轉閱讀):

    淺談嵌入式MCU軟件開發之S32K1xx系列MCU CPU內核性能優化方法詳解》;

     2.7 優化bootloader,盡早跳轉到APP應用程序

    對于帶有bootloader功能的ECU應用程序,由于每次MCU復位(無論是POR復位還是看門狗溢出復位或者RESET外部引腳復位、時鐘丟失復位,內核lockup復位以及低功耗外設確認終止復位等)后,CPU內核都將首先運行bootloader代碼,所以其實現用戶ECU功能的應用程序的真實starup啟動時間(APP actual startup time)是包含bootloader執行時間的(如下圖所示)。

    因此,在bootloader實現時,將跳轉到用戶應用程序(APP)盡量提前,比如放到系統時鐘和外設的初始化,甚至是bootloader的reset_handler最開始進行ECC初始化之前就判斷APP是否ready和valid(如下圖所示),從而進行快速跳轉,這樣的bootloader設計不但可以避免bootloader中初始化時鐘和外設對APP的影響還可以大大提高此類應用的startup啟動時間

    2.8 選擇頻率更高的外部晶振并配置合適的增益模式

    另外,若使用了外部無源石英晶振(Crystal)作為S32K1xx系列MCU的參考時鐘,則選擇不同的晶振頻率和XOSC模塊的增益配置都會影響其啟動時間,晶振頻率越高,所以的啟動越快配置High-gain模式,時鐘的穩定工作時的信號幅值越大,抗干擾能力越強,但是所需的啟動時間也越長

    Tips: 對S32K14x系列MCU,其內部集成了SPLL倍頻模塊,其要求≥8MHz的時鐘(High Range Mode)輸入作為為參考時鐘:

    Tips: 若配置使能外部晶振且配置使用high-gain模式時,硬件設計必須外接1MΩ的反饋電阻(RF),而使能low-gain模式時,則不需RF:

    Tips: Freescale S12G系列汽車MCU的外部晶振時鐘起振時間如下,作為參考,也是頻率越高,啟動越快(start-up時間越短):


    總結

    本文詳細介紹了S32K1xx系列通用汽車MCU的啟動過程(硬件boot + 軟件Startup)和從復位到用戶應用功能程序真正開始執行的啟動時間優化原理及具體實現方法。
    當然,除了以上2. S32K1xx系列MCU的啟動時間優化方法詳解介紹的優化選項外,若不考慮用戶軟件與S32K1xx SDK的兼容性,縮短軟件Startup代碼執行的最好辦法是在復位函數(Reset_Handler)中盡早初始化SPLL(可在系統初始化函數SystemInit()中調用SDK的時鐘初始化API函數,甚至是在關閉CPU全局中斷之后就用匯編代碼配置系統時鐘,這樣ECC初始化也將加快),提高CPU內核和系統總線頻率:

    以上就是今天要跟大家分享的內容,雖然是基于S32K1xx系列MCU進行介紹的,但是對于其他嵌入式MCU,比如Qorivva MPC56/57xx系列MCU的啟動時間優化也是有參考價值的。希望本文對大家有所幫助和啟發。

    本公眾號近期文章精選推薦(點擊文章標題即可直接跳轉閱讀):

    1. 深入淺出談嵌入式MCU 內核之ARM Cortex-M系列CPU內核功能特性概述與對比(強烈推薦!!!)

    2. 深入淺出談嵌入式MCU 內核之ARM Cortex-M系列CPU內核特權模式定義與切換方法詳解

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 久久精品国产亚洲AV高清热| 精品国产一区AV天美传媒| 日本一区二区在线高清观看| 国语做受对白XXXXX在线| 中文无码乱人伦中文视频在线| 四川丰满少妇A级毛片| 久久久久亚洲AV成人网人人软件| 2021国产精品视频网站| 亚洲AV日韩AV永久无码电影| 中文文字幕文字幕亚洲色| 卡一卡2卡3卡精品网站| 好男人官网资源在线观看| 久久亚洲2019中文字幕| 67194熟妇在线观看线路| 亚洲综合色成在线观看| 肥臀浪妇太爽了快点再快点| 国产97人人超碰CAO蜜芽PROM| 色偷偷www.8888在线观看| 亚洲AV午夜电影在线观看| 日韩精品中文字幕有码| 久久精品国产亚洲夜色AV网站| 最新亚洲人成网站在线影院| 69久久夜色精品国产69| 成人做受120秒试看试看视频| 精品国产免费一区二区三区| 午夜自产精品一区二区三区| 四虎在线成人免费观看| 欧美黑人又粗又大高潮喷水| 欧洲亚洲精品免费二区| 人妻AV中文字幕一区二区三区| 国产网友愉拍精品视频手机| 欧美伊人久久大香线蕉综合| 欧美在线人视频在线观看| 亚洲国产成人无码电影| 老熟妇乱子交视频一区| 国产白嫩护士在线播放| 亚洲成人高清av在线| 四虎成人精品无码| 又湿又紧又大又爽A视频| 亚洲中文字幕日产无码成人片| 亚洲另类激情专区小说图片|