0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FSP庫(kù)啟動(dòng)文件說(shuō)明

RA生態(tài)工作室 ? 2024-06-04 08:06 ? 次閱讀

本篇文章主要是介紹FSP在e2studio下生成的啟動(dòng)文件的代碼說(shuō)明,讓用戶(hù)對(duì)瑞薩RA MCU的啟動(dòng)過(guò)程有個(gè)初步了解。

wKgaomaCaumAB97XAAAGsLfviRI327.png

瑞薩靈活軟件包(FSP)是一個(gè)靈活配置的軟件包,旨在提供易于使用、可擴(kuò)展、高質(zhì)量的嵌入式系統(tǒng)設(shè)計(jì)軟件。它適用于RA系列的MCU,提供了統(tǒng)一直觀的API,并有詳細(xì)的解釋和例程應(yīng)用,可以按照客戶(hù)不同的需求自動(dòng)生成相應(yīng)驅(qū)動(dòng)程序。

wKgaomaCavGAKkayAAAJQSBHiuQ788.png

啟動(dòng)文件是程序上電復(fù)位后執(zhí)行的第一個(gè)程序。它一般包括如下幾個(gè):

1.初始化堆棧

2.使能FPU

3.定位中斷向量表

4.配置系統(tǒng)時(shí)鐘

5.啟用CORTEX-M33棧監(jiān)視器

6.初始化C語(yǔ)言運(yùn)行環(huán)境

7.初始化變量SystemCoreClock,這個(gè)變量存放的是處理器時(shí)鐘的頻率

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

9.BSP初始化

wKgZomaCavyAKZ3PAAAJmU2UgZU585.png

3.1 棧區(qū)(Stack)

一種順序數(shù)據(jù)結(jié)構(gòu),滿(mǎn)足后進(jìn)先出原則。由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。棧特別方便用來(lái)保存/恢復(fù)調(diào)用現(xiàn)場(chǎng)。在函數(shù)被調(diào)用時(shí),其參數(shù)也會(huì)被壓入發(fā)起調(diào)用的進(jìn)程棧中,并待到調(diào)用結(jié)束后,函數(shù)的返回值也會(huì)被存放回棧中。如果函數(shù)調(diào)用時(shí),如果函數(shù)參數(shù)和局部變量較多,寄存器放不下,則需要適當(dāng)增加棧區(qū)的大小。

3.2 堆區(qū)(heap)

通常由程序員手動(dòng)分配,使用malloc和free進(jìn)行分配和釋放。注意,使用完需及時(shí)釋放(free),否則容易造成內(nèi)存泄漏。

3.3 e2Studio中堆棧的設(shè)置

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

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

wKgZomaCbAqAYHczAAGe7HULgnM715.png

圖3-3-1 堆棧區(qū)的大小設(shè)置

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

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

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

其修飾屬性解釋如下:

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

__attribute__((__used__)):參數(shù)“__used__”告訴編譯器,這個(gè)變量會(huì)被使用,即使在編譯器優(yōu)化時(shí)沒(méi)有被顯式地調(diào)用。這個(gè)屬性可以防止編譯器將未使用的函數(shù)或變量?jī)?yōu)化掉,確保它們?cè)诔绦蛑写嬖凇?/p>

wKgZomaCbAqARZWtAAK0GC6JoWo499.png

圖3-3-2 堆棧區(qū)數(shù)組屬性修飾

代碼中的“BSP_ALIGN_VARIABLE(BSP_STACK_ALIGNMENT)” ,宏展開(kāi)后為“__attribute__((aligned(8)))”,代表堆棧區(qū)在分配時(shí),會(huì)按照8字節(jié)對(duì)齊方式進(jìn)行。

__attribute__((weak)):用戶(hù)可以在用戶(hù)文件中重新定義一個(gè)同名函數(shù),最終編譯器編譯的時(shí)候,會(huì)選擇用戶(hù)定義的函數(shù),如果用戶(hù)沒(méi)有重新定義這個(gè)函數(shù),那么編譯器就會(huì)執(zhí)行_weak 聲明的函數(shù),并且編譯器不會(huì)報(bào)錯(cuò)。所以我們可以在別的地方定義一個(gè)相同名字的函數(shù)。該函數(shù)不能在同一個(gè).C文件中。

wKgaomaCbAuAIYouAASjGNj-xFI215.png

圖3-3-2 函數(shù)屬性宏定義

wKgaomaCa1qATWKsAAAJt8pY29I852.png

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

wKgaomaCbAuAZ05YAANzBbFcnkk875.png

圖4-1 中斷向量表定義

wKgZomaCa2qAZKVFAAAI12LoT6c554.png

系統(tǒng)上電或復(fù)位后直接執(zhí)行入口函數(shù)Reset_Handler(),包括兩個(gè)函數(shù):SystemInit()和main()。SystemInit()主要是用BSP對(duì)系統(tǒng)進(jìn)行初始化,隨后通過(guò)main函數(shù)進(jìn)入用戶(hù)代碼。BSP負(fù)責(zé)使MCU從復(fù)位狀態(tài)進(jìn)入到用戶(hù)的應(yīng)用程序。在到達(dá)用戶(hù)的應(yīng)用程序之前,BSP設(shè)置堆棧、時(shí)鐘、中斷、C語(yǔ)言運(yùn)行環(huán)境和堆棧監(jiān)視器。

wKgZomaCbAuARAyRAABe-XT-KJI507.png

圖5-1 入口函數(shù)調(diào)用

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

圖6-1 系統(tǒng)函數(shù)初始化

wKgaomaCa6aARDQrAAAMTowHwYg098.png

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

wKgaomaCa7eAP1x1AACYwKZuilI568.png

wKgZomaCbA6AcrfBAARZIddYBJY254.png

圖7-1 內(nèi)存函數(shù)分配

wKgaomaCa9WAawsYAAAmsw8zSpE244.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351184
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68603
  • FSP
    FSP
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    7141
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FSP在e2 studio下生成的啟動(dòng)文件的代碼說(shuō)明

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

    用于Atom Denverton的英特爾FSP

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

    啟動(dòng)文件和HAL庫(kù)

    STM32F7xx —— 啟動(dòng)文件和HAL庫(kù) 目錄STM32F7xx —— 啟動(dòng)文件和HAL庫(kù)
    發(fā)表于 08-04 09:25

    S7200脈沖數(shù)出MAP庫(kù)文件使用說(shuō)明

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

    USB-CAN用戶(hù)編程說(shuō)明及通訊庫(kù)文件

    USB-CAN用戶(hù)編程說(shuō)明及通訊庫(kù)文件
    發(fā)表于 12-14 17:24 ?3次下載

    由MATLAB的.m文件生成動(dòng)態(tài)鏈接庫(kù)的方法說(shuō)明

    由MATLAB的.m文件生成動(dòng)態(tài)鏈接庫(kù)的方法說(shuō)明
    發(fā)表于 08-16 18:54 ?0次下載

    稱(chēng)重模塊庫(kù)文件及使用說(shuō)明

    合信庫(kù)文件及使用實(shí)例(基于microwin)
    發(fā)表于 12-29 18:42 ?1次下載

    數(shù)據(jù)庫(kù)課件教程之?dāng)?shù)據(jù)庫(kù)啟動(dòng)與關(guān)閉講解資料說(shuō)明

    本文檔的詳細(xì)介紹的是數(shù)據(jù)庫(kù)課件教程之?dāng)?shù)據(jù)庫(kù)啟動(dòng)與關(guān)閉講解資料說(shuō)明主要內(nèi)容包括了:1.數(shù)據(jù)庫(kù)啟動(dòng)
    發(fā)表于 01-24 11:34 ?7次下載
    數(shù)據(jù)<b class='flag-5'>庫(kù)</b>課件教程之?dāng)?shù)據(jù)<b class='flag-5'>庫(kù)</b>的<b class='flag-5'>啟動(dòng)</b>與關(guān)閉講解資料<b class='flag-5'>說(shuō)明</b>

    STM32啟動(dòng)過(guò)程--啟動(dòng)文件--分析

    STM32啟動(dòng)過(guò)程--啟動(dòng)文件--分析一、概述1、說(shuō)明  每一款芯片的啟動(dòng)文件都值得去研究,因?yàn)?/div>
    發(fā)表于 11-30 13:21 ?4次下載
    STM32<b class='flag-5'>啟動(dòng)</b>過(guò)程--<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>文件</b>--分析

    STM32學(xué)習(xí)記錄——固件庫(kù)目錄及文件介紹

    工程,需要先準(zhǔn)備STM32芯片提供的庫(kù)函數(shù),包括啟動(dòng)的匯編文件,STM32寄存器宏定義,內(nèi)核以及外設(shè)的寄存器操作函數(shù)等,按照以下目錄結(jié)構(gòu)放置相應(yīng)STM32固件庫(kù)文件:├─Doc
    發(fā)表于 12-02 13:06 ?13次下載
    STM32學(xué)習(xí)記錄——固件<b class='flag-5'>庫(kù)</b>目錄及<b class='flag-5'>文件</b>介紹

    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說(shuō)明+示例程序)

    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)庫(kù)詳解(架構(gòu)+文件+函數(shù)+使用說(shuō)明+示例程序)
    發(fā)表于 12-08 20:36 ?0次下載
    STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動(dòng)<b class='flag-5'>庫(kù)</b>詳解(架構(gòu)+<b class='flag-5'>文件</b>+函數(shù)+使用<b class='flag-5'>說(shuō)明</b>+示例程序)

    STM32啟動(dòng)庫(kù)文件學(xué)習(xí)筆記

    STM32啟動(dòng)庫(kù)文件學(xué)習(xí)筆記一、Stack–棧EQU:宏定義的偽指令,就是給數(shù)字取一個(gè)符號(hào)名,相當(dāng)于C語(yǔ)言中的defineSPACE:分配內(nèi)存空間AREA:告訴匯編語(yǔ)言一個(gè)新的代碼段或數(shù)據(jù)段
    發(fā)表于 12-27 18:44 ?2次下載
    STM32<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>文件</b>學(xué)習(xí)筆記

    FSP庫(kù)啟動(dòng)文件詳解

    這是系統(tǒng)上電或復(fù)位后執(zhí)行的第一個(gè)程序,使用BSP對(duì)系統(tǒng)進(jìn)行初始化,隨后通過(guò)main函數(shù)進(jìn)入用戶(hù)代碼。 BSP負(fù)責(zé)使MCU從復(fù)位狀態(tài)進(jìn)入到用戶(hù)的應(yīng)用程序。在到達(dá)用戶(hù)的應(yīng)用程序之前,BSP設(shè)置棧、堆、時(shí)鐘、中斷、C語(yǔ)言運(yùn)行環(huán)境和堆棧監(jiān)視器。
    的頭像 發(fā)表于 02-15 15:48 ?1477次閱讀
    <b class='flag-5'>FSP</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>啟動(dòng)</b><b class='flag-5'>文件</b>詳解

    MongoDB數(shù)據(jù)庫(kù)文件損壞的數(shù)據(jù)恢復(fù)案例

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

    e2+fsp+qe安裝說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《e2+fsp+qe安裝說(shuō)明.docx》資料免費(fèi)下載
    發(fā)表于 09-29 11:07 ?0次下載