精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FSP庫啟動文件說明

RA生態工作室 ? 2024-06-04 08:06 ? 次閱讀

本篇文章主要是介紹FSP在e2studio下生成的啟動文件的代碼說明,讓用戶對瑞薩RA MCU的啟動過程有個初步了解。

wKgaomaCaumAB97XAAAGsLfviRI327.png

瑞薩靈活軟件包(FSP)是一個靈活配置的軟件包,旨在提供易于使用、可擴展、高質量的嵌入式系統設計軟件。它適用于RA系列的MCU,提供了統一直觀的API,并有詳細的解釋和例程應用,可以按照客戶不同的需求自動生成相應驅動程序。

wKgaomaCavGAKkayAAAJQSBHiuQ788.png

啟動文件是程序上電復位后執行的第一個程序。它一般包括如下幾個:

1.初始化堆棧

2.使能FPU

3.定位中斷向量表

4.配置系統時鐘

5.啟用CORTEX-M33棧監視器

6.初始化C語言運行環境

7.初始化變量SystemCoreClock,這個變量存放的是處理器時鐘的頻率

8.初始化用于觸發NVIC中斷的ELC(事件鏈接控制)

9.BSP初始化

wKgZomaCavyAKZ3PAAAJmU2UgZU585.png

3.1 棧區(Stack)

一種順序數據結構,滿足后進先出原則。由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。棧特別方便用來保存/恢復調用現場。在函數被調用時,其參數也會被壓入發起調用的進程棧中,并待到調用結束后,函數的返回值也會被存放回棧中。如果函數調用時,如果函數參數和局部變量較多,寄存器放不下,則需要適當增加棧區的大小。

3.2 堆區(heap)

通常由程序員手動分配,使用malloc和free進行分配和釋放。注意,使用完需及時釋放(free),否則容易造成內存泄漏。

3.3 e2Studio中堆棧的設置

宏“BSP_CFG_STACK_MAIN_BYTES”可以在FSP Configuration的“BSP”屬性欄中的“RA Common”中通過修改“Main stack size”設置,默認為1KB(0x400 Byte)。

宏“BSP_CFG_HEAP_BYTES”可以在FSP Configuration的“BSP”屬性欄中的“RA Common”中通過修改“Heap size”設置,默認為1KB(0x400 Byte)。如圖3-3-1所示。

wKgZomaCbAqAYHczAAGe7HULgnM715.png

圖3-3-1 堆棧區的大小設置

g_main_stack和g_heap分別代表主棧和堆區的數組,后面還有屬性修飾。

“BSP_PLACE_IN_SECTION(BSP_SECTION_STACK)”,宏展開后為“__attribute__((section( “.stack”))) __attribute__((__used__))”

“BSP_PLACE_IN_SECTION(BSP_SECTION_HEAP)”,宏展開后為“__attribute__((section( “.heap”))) __attribute__((__used__))”

其修飾屬性解釋如下:

__attribute__((section( “參數名”))):可以將變量定義到指定的輸入段“參數名”中。

__attribute__((__used__)):參數“__used__”告訴編譯器,這個變量會被使用,即使在編譯器優化時沒有被顯式地調用。這個屬性可以防止編譯器將未使用的函數或變量優化掉,確保它們在程序中存在。

wKgZomaCbAqARZWtAAK0GC6JoWo499.png

圖3-3-2 堆棧區數組屬性修飾

代碼中的“BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT)” ,宏展開后為“__attribute__((aligned(8)))”,代表堆棧區在分配時,會按照8字節對齊方式進行。

__attribute__((weak)):用戶可以在用戶文件中重新定義一個同名函數,最終編譯器編譯的時候,會選擇用戶定義的函數,如果用戶沒有重新定義這個函數,那么編譯器就會執行_weak 聲明的函數,并且編譯器不會報錯。所以我們可以在別的地方定義一個相同名字的函數。該函數不能在同一個.C文件中。

wKgaomaCbAuAIYouAASjGNj-xFI215.png

圖3-3-2 函數屬性宏定義

wKgaomaCa1qATWKsAAAJt8pY29I852.png

定義一個中斷向量指針數組__Vectors[16],將此表放入到“.fixed_vectors”的輸入段中。

wKgaomaCbAuAZ05YAANzBbFcnkk875.png

圖4-1 中斷向量表定義

wKgZomaCa2qAZKVFAAAI12LoT6c554.png

系統上電或復位后直接執行入口函數Reset_Handler(),包括兩個函數:SystemInit()和main()。SystemInit()主要是用BSP對系統進行初始化,隨后通過main函數進入用戶代碼。BSP負責使MCU從復位狀態進入到用戶的應用程序。在到達用戶的應用程序之前,BSP設置堆棧、時鐘、中斷、C語言運行環境和堆棧監視器。

wKgZomaCbAuARAyRAABe-XT-KJI507.png

圖5-1 入口函數調用

wKgaomaCa5GAGEIsAAAKxuapKCU544.pngwKgaomaCbA2AAbikAAKFHD8lmnc428.pngwKgZomaCbA2ASD7bAAJozQoy11I775.pngwKgaomaCbA2ABTxyAAE-SnN1akg588.pngwKgaomaCbA2AFhS8AALOO1fmSpw202.pngwKgZomaCbA2AdimsAAEYCmc88so078.pngwKgaomaCbA2AMV_0AAJdn2FlG-Q480.png

圖6-1 系統函數初始化

wKgaomaCa6aARDQrAAAMTowHwYg098.png

通過e2studio打開Memory Usage,可以看到各段的定義名稱,起止地址,占用容量大小、對齊方式等。也可以通過打開工程文件夾下\e2studio\Debug\*.map文件。

wKgaomaCa7eAP1x1AACYwKZuilI568.png

wKgZomaCbA6AcrfBAARZIddYBJY254.png

圖7-1 內存函數分配

wKgaomaCa9WAawsYAAAmsw8zSpE244.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16676

    瀏覽量

    347864
  • 代碼
    +關注

    關注

    30

    文章

    4672

    瀏覽量

    67781
  • FSP
    FSP
    +關注

    關注

    0

    文章

    34

    瀏覽量

    7075
收藏 人收藏

    評論

    相關推薦

    FSP在e2 studio下生成的啟動文件的代碼說明

    瑞薩靈活軟件包(FSP)是一個靈活配置的軟件包,旨在提供易于使用、可擴展、高質量的嵌入式系統設計軟件。
    的頭像 發表于 10-07 12:18 ?1341次閱讀
    <b class='flag-5'>FSP</b>在e2 studio下生成的<b class='flag-5'>啟動</b><b class='flag-5'>文件</b>的代碼<b class='flag-5'>說明</b>

    用于Atom Denverton的英特爾FSP

    5th-gen-core-i5-5350u-eval-kit-fsp-user-guide.pdf(附件中)3.告訴我一個下載手冊的鏈接,其中包含有關英特爾固件支持包(FSP)二進制文件集成過程到coreboot的
    發表于 11-07 11:10

    啟動文件和HAL

    STM32F7xx —— 啟動文件和HAL 目錄STM32F7xx —— 啟動文件和HAL
    發表于 08-04 09:25

    AVR的Protel文件 (含pcb文件)

    AVR的Protel文件 (含pcb文件)
    發表于 01-16 10:33 ?386次下載
    AVR的Protel<b class='flag-5'>庫</b><b class='flag-5'>文件</b> (含pcb<b class='flag-5'>文件</b>)

    S7200脈沖數出MAP文件使用說明

    S7200脈沖數出MAP文件使用說明
    發表于 09-17 16:23 ?59次下載
    S7200脈沖數出MAP<b class='flag-5'>庫</b><b class='flag-5'>文件</b>使用<b class='flag-5'>說明</b>

    USB-CAN用戶編程說明及通訊文件

    USB-CAN用戶編程說明及通訊文件
    發表于 12-14 17:24 ?3次下載

    由MATLAB的.m文件生成動態鏈接的方法說明

    由MATLAB的.m文件生成動態鏈接的方法說明
    發表于 08-16 18:54 ?0次下載

    稱重模塊文件及使用說明

    合信文件及使用實例(基于microwin)
    發表于 12-29 18:42 ?1次下載

    數據課件教程之數據啟動與關閉講解資料說明

    本文檔的詳細介紹的是數據課件教程之數據啟動與關閉講解資料說明主要內容包括了:1.數據啟動
    發表于 01-24 11:34 ?7次下載
    數據<b class='flag-5'>庫</b>課件教程之數據<b class='flag-5'>庫</b>的<b class='flag-5'>啟動</b>與關閉講解資料<b class='flag-5'>說明</b>

    STM32啟動過程--啟動文件--分析

    STM32啟動過程--啟動文件--分析一、概述1、說明  每一款芯片的啟動文件都值得去研究,因為
    發表于 11-30 13:21 ?4次下載
    STM32<b class='flag-5'>啟動</b>過程--<b class='flag-5'>啟動</b><b class='flag-5'>文件</b>--分析

    STM32學習記錄——固件目錄及文件介紹

    工程,需要先準備STM32芯片提供的庫函數,包括啟動的匯編文件,STM32寄存器宏定義,內核以及外設的寄存器操作函數等,按照以下目錄結構放置相應STM32固件文件:├─Doc
    發表于 12-02 13:06 ?13次下載
    STM32學習記錄——固件<b class='flag-5'>庫</b>目錄及<b class='flag-5'>文件</b>介紹

    STM32 之 標準外設版USB驅動詳解(架構+文件+函數+使用說明+示例程序)

    STM32 之 標準外設版USB驅動詳解(架構+文件+函數+使用說明+示例程序)
    發表于 12-08 20:36 ?0次下載
    STM32 之 標準外設版USB驅動<b class='flag-5'>庫</b>詳解(架構+<b class='flag-5'>文件</b>+函數+使用<b class='flag-5'>說明</b>+示例程序)

    STM32啟動文件學習筆記

    STM32啟動文件學習筆記一、Stack–棧EQU:宏定義的偽指令,就是給數字取一個符號名,相當于C語言中的defineSPACE:分配內存空間AREA:告訴匯編語言一個新的代碼段或數據段
    發表于 12-27 18:44 ?2次下載
    STM32<b class='flag-5'>啟動</b><b class='flag-5'>庫</b><b class='flag-5'>文件</b>學習筆記

    FSP啟動文件詳解

    這是系統上電或復位后執行的第一個程序,使用BSP對系統進行初始化,隨后通過main函數進入用戶代碼。 BSP負責使MCU從復位狀態進入到用戶的應用程序。在到達用戶的應用程序之前,BSP設置棧、堆、時鐘、中斷、C語言運行環境和堆棧監視器。
    的頭像 發表于 02-15 15:48 ?1307次閱讀
    <b class='flag-5'>FSP</b><b class='flag-5'>庫</b><b class='flag-5'>啟動</b><b class='flag-5'>文件</b>詳解

    MongoDB數據庫文件損壞的數據恢復案例

    在MongoDB數據服務未關閉的情況下,管理員將MongoDB數據庫文件從原分區拷貝到其他分區,然后將MongoDB數據所在原分區格式化,格式化完成又將MongoDB數據庫文件拷回
    的頭像 發表于 04-18 14:53 ?683次閱讀
    MongoDB數據<b class='flag-5'>庫文件</b>損壞的數據恢復案例