如下是ADS下的boot的MMU.c的MMU初始化代碼。在2440init.S中跳入Main,這個Main函數(shù)在U2440mom.c中實現(xiàn),這個Main函數(shù)包括了對端口,中斷服務,MMU,VGA等的初始化函數(shù)的調(diào)用。MMU.c中進行了MMU的初始化,其中調(diào)用了很多初始化函數(shù),使用匯編寫的,確切的說是用協(xié)處理指令寫的。這些函數(shù)的聲明部分在2440slib.h,實現(xiàn)在2440slib.c中。在MMU的初始化程序MMU_Init中,首先禁止了Dcache,Icache,清除了Dcache和Icache。禁止了MMU,TLB。然后對存儲系統(tǒng)進行了虛擬地址到物理地址的映射。然后設置了轉化表的基地址,設置了域,開啟了MMU,Icache,Dcache。
void MMU_Init(void)
{
? ? int i,j;
? ? //========================== IMPORTANT NOTE =========================
? ? //The current stack and code area can't be re-mapped in this routine.
? ? //If you want memory map mapped freely, your own sophiscated MMU
? ? //initialization code is needed.
? ? //===================================================================
? ? MMU_DisableDCache();
? ? MMU_DisableICache();
? ? //If write-back is used,the DCache should be cleared.
? ? for(i=0;i<64;i++)
? ?? ?? ?? ?for(j=0;j<8;j++)
? ?? ?? ?? ?? ? MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
? ? MMU_InvalidateICache();
? ?
? ? #if 0
? ? //To complete MMU_Init() fast, Icache may be turned on here.
? ? MMU_EnableICache();
? ? #endif
? ?
? ? MMU_DisableMMU();
? ? MMU_InvalidateTLB();
? ? //MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
? ? //MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);??//bank0
? ? if(rBWSCON&0x6)//nor啟動
? ?? ?? ?? ?? ?? ? MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_NCNB);? ?//bank0
? ?? ?? ???else//nand 啟動
? ?? ?? ?? ?? ?? ? MMU_SetMTT(0x00000000,0x00001000,0/*(int)__ENTRY*/,RW_CB);? ?//bank0
? ? //MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB);? ?? ?? ?? ?? ?? ?? ?? ???//bank0
? ? MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_NCNB);??//bank1
? ? MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
? ? MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
? ? //MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
? ? MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_NCNB); //bank4 for STRATA Flash
? ? MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
? ? MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB);? ?? ?? ? //bank6-1? ?1
? ? MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_NCNB); //bank6-2? ?? ?60
? ? //
? ? MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CB);? ?//bank6-3? ?? ???
? ? MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7
? ?
? ? MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR? ?? ?? ???127
? ? MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR? ?? ?? ???303
? ? MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
? ? MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used
? ?
? ? MMU_SetTTBase(_MMUTT_STARTADDRESS);
? ? MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR);
? ?? ?? ?? ?//DOMAIN1: no_access, DOMAIN0,2"15=client(AP is checked)
? ? MMU_SetProcessId(0x0);
? ? MMU_EnableAlignFault();
? ?? ?? ?? ?
? ? MMU_EnableMMU();
? ? MMU_EnableICache();
? ? MMU_EnableDCache(); //DCache should be turned on after MMU is turned on.
}? ?
for(i=0;i<64;i++)
? ?? ?? ?? ?for(j=0;j<8;j++)
? ?? ?? ?? ?? ? MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
? ? MMU_InvalidateICache();
這里是因為ARM920T有64路,每路有8個組。所以。。。為什么要i<<26,j<<5呢,看下圖便知


這是一個MMU的虛擬地址向物理地址映射的函數(shù)。通過上邊的調(diào)用可以看到物理地址和虛擬地址的地址是相同的,那為什么還要開MMU呢,不是多此一舉嗎,Dcache的開啟必須在MMU開啟后才能開啟,Icache不受MMU影響。開啟Cache對系統(tǒng)性能會有很大提升。所以,哈哈。這里_MMUTT_STARTADDRESS是轉換表的基址,因為沒有使用復雜的操作系統(tǒng),所以只使用了一級頁表,每個頁表項對應的是一個1MB的段。pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);相當于獲得相應的頁表項。看一下下圖就會明白。nSec=(vaddrEnd>>20)-(vaddrStart>>20);這句是計算有幾個段。for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);分別映射每段。Attr是域。
void MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
{
? ? volatile U32 *pTT;
? ? volatile int i,nSec;
? ? pTT=(U32 *)_MMUTT_STARTADDRESS+(vaddrStart>>20);
? ? nSec=(vaddrEnd>>20)-(vaddrStart>>20);
? ? for(i=0;i<=nSec;i++)*pTT++=attr |(((paddrStart>>20)+i)<<20);
}


這里就不列出那些被調(diào)用的匯編代碼,這個是飛凌的boot,網(wǎng)上好多人說沒開MMU,真是誤人子弟啊。
ADS下bootloader之MMU研究
- ADS1220(126315)
- bootloader(47760)
- MMU(19133)
相關推薦
熱點推薦
對于系統(tǒng)啟動,bootloader的功能的簡單分析
(因為沒有去映射,直接輸出到地址線上了),mmu可以當坐中間的翻譯,系統(tǒng)上電后,cpu自然要從某一處讀指令,那么我們要做的就是把初始化系統(tǒng)的代碼(請允許我叫他bootloader)放在那,
2018-02-05 10:23:23
11184
11184
嵌入式Linux啟動時間優(yōu)化的秘密之五-Bootloader
本文主要講述嵌入式Linux啟動時間優(yōu)化的秘密,我們繼續(xù)上篇沒有講完的嵌入式Linux啟動時間優(yōu)化方法,本文主要會講Bootloader。想看上一篇的請查看本文結尾的鏈接。 Bootloader
2020-04-21 17:24:51
3358
3358
什么是Bootloader 淺談STM32中bootloader的內(nèi)存分配
1. 什么是Bootloader Bootloader是硬件啟動的引導程序,是運行操作系統(tǒng)的前提。在操作系統(tǒng)內(nèi)核或用戶應用程序運行之前運行的一段小代碼。對硬件進行相應的初始化和設定,最終為操作系統(tǒng)
2021-02-15 06:10:00
18473
18473
STM32單片機Bootloader的實現(xiàn)
之前一篇的文章中,主要介紹了STM32的啟動流程和內(nèi)存主要空間的分配,這篇文章將在上一篇文章的基礎上,來闡述一下STM32 Bootloader的實現(xiàn)。
2023-01-11 17:29:44
8028
8028
為什么沒有MMU就無法運行Linux系統(tǒng)呢?
MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬內(nèi)存管理。
2023-08-03 10:05:00
1400
1400
ARM MMU/TLB的學習筆記和總結
Memory Management Unit (MMU)** 的**主要功能**就是 **能夠讓系統(tǒng)在執(zhí)行多任務時,作為一個獨立的程序運行它自己的虛擬地址空間中,它們無需知道真正的物理地址是什么** 。
2023-08-04 14:39:01
2590
2590
Bootloader驅動相關代碼
S32K144提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加例如:第一章 Python 機器學習入門之pandas的使用提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助
2021-08-17 06:17:02
MMU的產(chǎn)生及MMU工作過程詳解
MMU的調(diào)度下是如何進行映射的: 在這個例子中我們有一臺可以生成16位地址的機器,它的虛擬地址范圍從0x0000~0xFFFF(64K),而這臺機器只有32K的物理地址,因此他可以運行64K的程序,但
2018-07-03 08:19:31
研究下stm32基于BootLoader的IAP功能
近期想研究下stm32基于BootLoader的IAP功能,要想實現(xiàn)這個,必須先搞明白程序跳轉,在真正開搞前折騰了半晚上,完成了程序跳轉的簡單測試。stm32代碼下載到0x8000000開始的地址
2021-12-21 06:44:10
AVR之BOOTLOADER技術詳解
本帖最后由 一只耳朵怪 于 2018-6-26 10:42 編輯
AVR之BOOTLOADER技術詳解 ATmega128具備引導加載支持的用戶程序自編程功能(In-System
2018-06-26 06:22:07
STM32F407的系統(tǒng)bootloader之串口IAP固件升級
STM32F407的系統(tǒng)bootloader之串口IAP固件升級,STM32F407的系統(tǒng)bootloader之串口IAP固件升級本章節(jié)為大家講解使用系統(tǒng)bootloader做程序升級的方法,即使
2021-08-10 07:26:18
STM32H7的系統(tǒng)bootloader之串口IAP固件升級
第69章 STM32H7的系統(tǒng)bootloader之串口IAP固件升級本章節(jié)為大家講解使用系統(tǒng)bootloader做程序升級的方法,即使不依賴外部boot引腳也可以方便升級。IAP的全稱是In Application Programming...
2021-08-20 06:04:02
arm_mmu詳細圖解
arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解arm_mmu詳細圖解
2009-11-21 23:58:12
【OK210試用體驗】簡易Bootloader的實現(xiàn)
。us5pv210.icf,IAR下鏈接文件,指定板載內(nèi)存范圍,代碼以及RAM等布局。這里筆者說明一下,在建立c運行環(huán)境之前的Bootloader代碼均是地址無關的,CPU上電后會加載部分的Bootloader代碼到內(nèi)部
2015-07-26 12:01:24
為什么mmu代碼改成在ADS環(huán)境下編譯并下載到nandFLASH中一直出不來效果?
我把書中光盤里hardware目錄中的mmu代碼改成在ADS環(huán)境下編譯并下載到nandFLASH中一直出不來效果,現(xiàn)在有兩個疑問!請大家伙幫個忙哈!感激涕零哈(1)編譯led.c的時候:總是在
2019-07-11 05:45:22
使用MMU進行多用戶場景下的FLASH分區(qū)保護
或修改其它用戶區(qū)的FLASH內(nèi)容。我們可以使用國民技術MCU內(nèi)置的MMU,將FLASH主存儲區(qū)的區(qū)域進行劃分和設置訪問權限,同時可保護各個應用存儲區(qū)域內(nèi)的代碼與數(shù)據(jù)不被非法訪問及篡改,并指示出存儲器
2022-11-02 06:45:02
使用系統(tǒng)bootloader做程序升級的方法
第29章 STM32F407的系統(tǒng)bootloader之USB DFU方式固件升級本章節(jié)為大家講解使用系統(tǒng)bootloader做程序升級的方法,即使不依賴外部boot引腳也可以方便升級。DFU的全稱
2021-08-10 06:31:55
使用系統(tǒng)bootloader做程序升級的方法
第29章 STM32F429的系統(tǒng)bootloader之USB DFU方式固件升級本章節(jié)為大家講解使用系統(tǒng)bootloader做程序升級的方法,即使不依賴外部boot引腳也可以方便升級。DFU的全稱
2021-08-10 08:15:24
使用系統(tǒng)bootloader做程序升級的方法
第30章 STM32F429的系統(tǒng)bootloader之串口IAP固件升級本章節(jié)為大家講解使用系統(tǒng)bootloader做程序升級的方法,即使不依賴外部boot引腳也可以方便升級。IAP的全稱
2021-08-10 06:29:51
關于頁表和MMU的問題
剛開始學,好多東西都云里霧里的TT為什么在bootloader里要進行頁表初始化然后開啟MMU,然后在進入內(nèi)核后還要創(chuàng)建頁表開啟MMU?這兩個有什么不一樣么?s3c2410,bootloader用的是vivi-0.1.4,kernel是linux-2.6.14望賜教。
2013-05-06 17:25:50
如何配置MMU page table walk的訪問屬性
的頁表項可以在cache中緩存如何配置MMU page table walk的訪問屬性如果需要在MMU enable的情況下,運行時修改頁表項。如上所述,因為MMU page table walk
2022-10-24 15:45:24
嵌入式Linux中的bootloader
一、bootloader: 它就是一個稍微復雜的裸板程序。但是要把這裸板程序看懂寫好一點都不容易。Windows下好用的工具弱化了我們的編程能力。很多人一玩嵌入式就用ADS、KEIL。你能回答這幾
2017-11-10 21:29:08
有對MMU比較了解的嗎?
我最近在寫一個MMU的裸機程序,但是無論怎么映射都不行,一旦開啟MMU,程序就會卡住。我想問的是寫MMU的程序對鏈接腳本和程序本身有什么特別的要求嗎?我的映射代碼如下(0~0x60000000全部
2014-01-10 21:43:32
WinCE系統(tǒng)下BootLoader 的開發(fā)
介紹WinCE.NET 系統(tǒng)的定制方法; 說明板級支持包(BSP)的基本構成; 從開發(fā)實例出發(fā),詳細闡述如何開發(fā)BSP 中的重要部件—— BootLoader。
2009-04-15 11:16:44
45
45基于ARM核的Bootloader代碼的分析與設計
Bootloader 是系統(tǒng)上電或復位后首先運行的一段代碼,Bootloader 代碼(即啟動代碼)的好壞對整個系統(tǒng)的運行效率有著重要的影響, 而Bootloader 代碼與芯片的特性有著緊密的聯(lián)系。本
2009-08-15 09:45:31
48
48ADS5525IRGZT:高性能模數(shù)轉換器的技術之巔
ADS5525IRGZT:高性能模數(shù)轉換器的技術之巔在數(shù)字信號處理的世界中,模數(shù)轉換器(ADC)扮演著至關重要的角色。它們是將連續(xù)的模擬信號轉換為離散的數(shù)字信號的關鍵組件。而ADS
2024-01-14 21:52:30
以智財單元為基系統(tǒng)晶片設計之測試技術研究
本計畫是在“以智財單元為基系統(tǒng)晶片設計之驗證與測試技術開發(fā)研究”總計畫項下之一子計畫,目的是研究有關以智財單元為基之系統(tǒng)晶片於深次微米情況下之測試諸
2010-09-03 10:04:58
14
14S3C2410內(nèi)存管理單元MMU基礎實驗
(11)實驗十一:MMU 在理論上概括或解釋MMU,這不是我能勝任的。我僅基于為了理解本實驗中操作MMU的代碼而對MMU做些說明,現(xiàn)在先簡單地描述虛擬地址(VA)、變換后的虛擬地址(MVA)、物理地址(PA) 之間的關系: 啟動MMU后,S3C2410的CPU核看到的、用到的只是虛擬
2009-01-01 02:29:42
17
17BootLoader_BootLoader是什么
ARM實現(xiàn)手指靜脈識別系統(tǒng)_本文將從 BootLoader的概念、BootLoader 的框架結構與安裝等四個方面來討論。
2011-11-30 10:32:31
3517
3517ARM的Bootloader啟動流程研究
講述了基于ARM 處理器的嵌入式系統(tǒng)在上電啟動后應用程序或操作系統(tǒng)運行前,對處理器及其內(nèi)部功能模塊進行初始化的過程,并結合經(jīng)過實際驗證的代碼詳細的分析了S3C44B0 Bootloader 的
2012-02-03 14:48:05
70
70解鎖BootLoader
BootLoader就是在操作系統(tǒng)內(nèi)核運行之前運行的一段小程序。本內(nèi)容介紹了BootLoader是什么及解鎖Bootloader
2012-05-30 17:00:54
3931
3931德州儀器經(jīng)典模數(shù)轉換器講解之ADS805
德州儀器經(jīng)典模數(shù)轉換器講解之ADS805,ADS805它可以用在CCD成像、數(shù)字化基帶處理、復印機和測試儀器等等。
2012-11-30 09:56:04
7774
7774WinCE系統(tǒng)下BootLoader的開發(fā)
本文介紹WinCE.NET系統(tǒng)的定制方法;說明板級支持包(BSP)的基本構成;從開發(fā)實例出發(fā),詳細闡述如何開發(fā)BSP中的重要部件—— BootLoader。
2016-04-18 10:02:17
1
1pic18單片機在BootLoader中的應用
與之相關的內(nèi)容,如CONFIRM_DATA,可以使用任何特定的字符串來確認是否需要進入BootLoader狀態(tài),增加了BootLoader程序的安全性,避免受到干擾而誤進入程序升級狀態(tài)。
2017-07-03 14:13:15
1163
1163Host端MSD類的Bootloader程序
研究了一下AN4368,該AplplicationNote講述了如何基于飛思卡爾支持USB功能的Coldfire和Kinetis芯片如何開發(fā)一個Host端MSD類的Bootloader程序,以及如何修改應用程序配置。通俗來講就是完成了通過U盤更新芯片程序代碼。
2017-09-15 17:50:08
10
10ARM存儲管理單元MMU詳解
級的操作系統(tǒng)采用基于硬件的存儲管理單元MMU來實現(xiàn)上述操作。 MMU提供的一個關鍵服務是使各個任務作為各自獨立的程序在其自己的私有存儲空間中運行。在帶MMU的操作系統(tǒng)控制下,運行的任務無須知道其他與之無關的任務的存儲需求情況,這就簡化
2017-10-17 16:24:11
4
4PXA255處理器在WinCE系統(tǒng)下的BootLoader的設計與實現(xiàn)
PXA255處理器在WinCE系統(tǒng)下的BootLoader的設計與實現(xiàn)
2017-10-25 10:04:28
4
4bootloader如何更新
BootLoader就是單片機啟動時候運行的一段小程序,這段程序負責單片機固件的更新,也就是單片機選擇性的自己給自己下程序。可以更新,也可以不更新,更新的話,BootLoader更新完程序后,跳轉到新程序運行;不更新的話,BootLoader直接跳轉到原來的程序去運行。
2017-11-10 08:22:53
8313
8313
對MMU和頁表工作機制的簡單評析
對于一個有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時候,一切時候,發(fā)出的地址都是虛擬地址,這個虛擬地址發(fā)給MMU后,MMU通過頁表來在頁表里面查出來這個虛擬地址對應的物理地址是什么,從而去訪問外面的內(nèi)存條。MMU里面的頁表地址寄存器,記錄了頁表本身的存放位置。
2018-02-02 14:08:57
11718
11718
淺談ARM MMU工作原理和過程
在沒有使用虛擬存儲器的機器上,虛擬地址被直接送到內(nèi)存總線上,使具有相同地址的物理存儲器被讀寫。而在使用了虛擬存儲器的情況下,虛擬地址不是被直接送到內(nèi)存地址總線上,而是送到內(nèi)存管理單元——MMU(主角終于出現(xiàn)了)。
2018-03-12 09:17:00
4135
4135
AVR的bootloader的設置步驟教程及注意事項
熔絲位的燒寫:BOOTRST要進行編程,這樣單片機在復位后自動跳轉到bootloader區(qū)執(zhí)行bootloader的代碼,然后要根據(jù)自己bootloader的大小設置boot區(qū)的的熔絲位。
2018-05-20 09:46:00
7464
7464
如何ADC的內(nèi)置2X模式下使用ADS1605和ADS1606的詳細概述
該應用報告討論了ADS1605和ADS1606 ADC的內(nèi)置2X模式。在這種模式下,數(shù)據(jù)被發(fā)送到10 MSPS。該報告簡要介紹,PIN配置,時序要求,關鍵性能的總結,以及典型的特點。此外,還示出了數(shù)字抽取濾波器的穩(wěn)定時間、脈沖響應和頻率響應。
2018-05-25 08:48:54
10
10技術盛宴 | 淺析RDMA網(wǎng)絡下MMU水線設置
了廣泛應用。為保障RDMA的穩(wěn)定運行,基礎網(wǎng)絡需要提供端到端無損零丟包及超低延時的能力,這也催生了PFC、ECN等網(wǎng)絡流控技術在RDMA網(wǎng)絡中的部署。在RDMA網(wǎng)絡中,如何合理設置MMU(緩存管理單元
2018-11-22 12:44:01
1571
1571啟動代碼與bootloader有什么區(qū)別
我主要遇到了這樣一個問題,啟動代碼和Bootloader的區(qū)別以及它們在ARM上運行操作系統(tǒng)和不運行操作系統(tǒng)(只有用戶程序)的關系。啟動代碼是Bootloader,但不能說Bootloader是啟動代碼。當然這也不是絕對的,只在某些情況下可以這么說。
2018-12-11 17:11:34
10
10Bootloader是什么Bootloader的介紹和過程詳細解
本文檔的主要內(nèi)容詳細介紹的是Bootloader是什么Bootloader的介紹和過程詳細解主要內(nèi)容包括了: 1. Bootloader簡介2.幾種發(fā)布的Bootloader
2018-12-11 17:33:20
49
49Bootloader的詳細資料分析免費下載
本文檔的主要內(nèi)容詳細介紹的是Bootloader的詳細資料分析免費下載。主要內(nèi)容包括了:熟悉BootLoader的實現(xiàn)原理,認識Bootloader的主要任務,熟悉BootLoader的結構框架,I U-boot使用
2018-12-13 17:08:39
45
45詳談嵌入式之Bootloader
可以增強 Bootloader 的功能,比如增加網(wǎng)絡功能、從 PC 上通過串口或網(wǎng)絡下載文件、 燒寫文件、將 Flash 上壓縮的文件解壓后再運行等,這就是一個功能更為強大的 Bootloader, 也稱為 Monitor。實際上,在最終產(chǎn)品中用戶并不需要這些功能,他們只是為了方便開發(fā)。
2019-02-04 15:27:00
6715
6715STM32系統(tǒng)bootloader的應用有哪些
嵌入式開發(fā)中,經(jīng)常需要bootloader進行程序固件升級和系統(tǒng)維護,所以bootloader是必不可少的功能。STM32系統(tǒng)自帶的系統(tǒng)bootloader很方便使用。大量減少了工程師開發(fā)bootloader的工作。
2020-10-22 12:19:45
6515
6515
如何編寫ARM處理器的Bootloader
作者 | strongerHuang 微信公眾號 | strongerHuang 之前從應用的角度給大家分享過Bootloader相關的文章,今天從底層原理來給大家描述ARM處理器如何編寫
2020-10-27 11:02:36
4772
4772
MMU的工作原理梳理
本文從內(nèi)存管理的發(fā)展歷程角度層層遞進,介紹 MMU 的誕生背景,工作機制。而忽略了具體處理器的具體實現(xiàn)細節(jié),將 MMU 的工作原理從概念上比較清晰的梳理了一遍。 MMU 誕生之前:在傳統(tǒng)的批處理
2020-12-17 16:13:56
14281
14281
ARM920T的MMU與Cache介紹
CPU通過地址來訪問內(nèi)存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內(nèi)存管理單元),或者有MMU但沒有啟用,CPU核在取指令或訪問內(nèi)存
2021-03-28 11:05:03
14
14剖析汽車ECU的bootloader程序
主要講述汽車bootloader程序的工作原理和設計方法。 01 bootloader的功能 BootLoader,通常是駐留在ECU非易失性存儲器(NVM,None Valitale Momory
2021-09-24 10:52:42
4602
4602
MPU和MMU、MPU和MCU的區(qū)別
一、MMU vs MPU內(nèi)存是現(xiàn)代計算機最重要的組件之一。因此,它的內(nèi)容不能被任何錯誤的應用所篡改。這個功能可以通過MMU(Memory Management Unit)或者MPU(Memory
2021-10-26 16:36:23
4
4幾種MCU bootLoader的實現(xiàn)方案
幾種MCU bootLoader的實現(xiàn)方案 mcu bootLoader boot的方式可以是uart、spi、i2c、ethernet等,方式可以是多樣性,這里只介紹boot的架構方式,以下是常用的boot分類: 1、boot + ap...
2021-10-28 10:36:01
18
18MCU Bootloader總結
Bootloader本文只探討MCU(單片機)下的Bootloader,對ARM系列暫不做探討。(1)bootloader是弄啥的?(2)為什么要引入bootloader(也就是加入bootloader之后起什么作用)?(3)bootloader怎么根據(jù)自己的需求去設計流程?...
2021-11-05 15:51:03
33
33華大HC32F460 Bootloader及應用程序的實現(xiàn)
在MCU市場缺貨的情況下,選擇一個合適的MCU有點困難。華大半導體的HC32F460具有較高的性價比,有辣么大的flash和ram,可以做很多事了。 先搞個bootloader吧,這個玩意用處多
2021-11-23 18:06:50
100
100STM32系統(tǒng)bootloader應用
嵌入式開發(fā)中,經(jīng)常需要bootloader進行程序固件升級和系統(tǒng)維護,所以bootloader是必不可少的功能。STM32系統(tǒng)自帶的系統(tǒng)bootloader很方便使用。大量減少了工程師開...
2021-11-26 13:36:04
17
17stm32 IOT_STM32通用Bootloader——FOTA
bootloader 升級模式bootloader 的升級模式常見有以下兩種:bootloader 分區(qū) + app1 分區(qū) + app2 分區(qū)模式該模式下, bootloader 啟動后,檢查 app1 和...
2021-11-30 19:21:12
23
23BootLoader啟動過程的顯示策略研究與實現(xiàn)
在嵌入式操作系統(tǒng)中,BootLoader是嵌入式操作系統(tǒng)得以運行的重要前提,因為它可以初始化必要的硬件設備,比如電源、存儲器等,從而可以完成上電、建立內(nèi)存空間映射圖,以便為接下來加載操作系統(tǒng)內(nèi)核
2022-04-02 17:14:45
1
1為什么要用MMU?為什么要用虛擬地址?
既然MMU開啟后,硬件會自動的將虛擬地址轉換成物理地址,那么還需要我們軟件做什么事情呢?即創(chuàng)建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?
2022-04-26 14:37:31
5990
5990關于在Bootloader模式下的應用程序下載
STM32 MCU 在 bootloader 模式下,可以通過多種可用外設(USART、CAN、USB、I2C、SPI等)將程序下載到內(nèi)部存儲器中,詳細內(nèi)容可參考應用筆記 AN2606《STM32
2022-06-16 16:57:03
5309
5309如何實現(xiàn)簡單的bootloader功能
考慮到瑞薩的MCUBoot的ROM占用和某些客戶的需求,本篇主要講述在不使用瑞薩MCUboot驅動下,如何實現(xiàn)簡單的bootloader功能。
2022-09-06 13:13:39
3325
3325RTOS多線程必須要MMU才行?
前兩天看到有人說:計算機的多線程,必須要有MMU才行,否則系統(tǒng)不能正常運行。 MMU:Memory Management Unit,即內(nèi)存管理單元,它是一個“好東西”,在大型的操作系統(tǒng)中,起到了關鍵
2022-10-11 18:56:28
3180
3180國民技術N32G4FR使用MMU進行多用戶場景下的FLASH分區(qū)保護
使用MMU進行多用戶場景下的FLASH分區(qū)保護 ? ? 簡介 在嵌入式產(chǎn)品研發(fā)過程中,有時會存在單個MCU內(nèi)部需要多個用戶分階段進行應用軟件開發(fā)的場景,在此場 景中,各用戶的代碼及數(shù)據(jù)可能出于版權或
2022-11-07 11:35:46
9
9ADS使用記錄之功率放大器設計
14、ADS使用記錄之功率放大器設計 基于ADS2022 參考的書籍是盧益鋒老師的ADS射頻電路設計與仿真學習筆記 前置教程: 01、ADS使用記錄之新建工程 02、ADS使用記錄之導入各類仿真模型
2023-02-16 14:17:27
7
7CC2640R2:如何利使用芯片內(nèi)部Bootloader燒寫程序
我們來看一下CC2640R2的Bootloader是怎么Run的。CC13x0, CC26x0 SimpleLink Wireless MCU Technical Reference Manual
2023-04-04 10:10:47
2740
2740為什么沒有MMU就無法運行Linux系統(tǒng)
MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬內(nèi)存管理。
2023-04-23 10:48:05
1342
1342
STM32H7實現(xiàn)BootLoader內(nèi)SDRAM的初始化注意事項
Function Implementation:在 ArtPi 的環(huán)境下,實現(xiàn)一個簡單的 BootLoader,該 BootLoader 實現(xiàn)了 QSPI 和 SDRAM 功能的初始化
2023-06-07 15:51:16
5417
5417
介紹一下CAN Bootloader的整個實現(xiàn)過程
對于大多數(shù)汽車軟件開發(fā)者來說,從客戶需求的角度,他們更多關心Bootloader的下載模式。
2023-06-29 11:13:38
2707
2707
MMU內(nèi)存管理單元的工作原理和作用
MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬內(nèi)存管理。
2023-08-03 10:03:42
4227
4227
什么是MMU?linux為什么需要MMU?
在內(nèi)存管理方面,MMU可以通過頁面表(Page Table)實現(xiàn)虛擬內(nèi)存管理。頁面表是一種數(shù)據(jù)結構,記錄了每個虛擬頁面和其對應的物理頁面之間的映射關系。
2023-10-09 11:27:33
2561
2561
嵌入式Linux運行一定需要MMU嗎?為什么需要MMU?
嵌入式Linux運行一定需要MMU嗎?為什么需要MMU?? 嵌入式Linux運行需要MMU,這是因為MMU是嵌入式系統(tǒng)中最重要的子系統(tǒng)之一,它扮演著以硬件的方式隔離不同應用程序,為操作系統(tǒng)提供
2023-10-29 16:28:35
1493
1493MMU原理:CPU是如何訪問到內(nèi)存的?
當CPU訪問虛擬地址0的時候,MMU會去查上面頁表的第0行,發(fā)現(xiàn)第0行沒有命中,于是無論以何種形式(R讀,W寫,X執(zhí)行)訪問,MMU都會給CPU發(fā)出page fault,CPU自動跳到fault的代碼去處理fault。
2023-11-09 12:30:04
1920
1920
MMU內(nèi)存管理單元的宏觀理解
最近一直在學習內(nèi)存管理,也知道MMU是管理內(nèi)存的映射的邏輯IP,還知道里面有個TLB。 今天剛剛好看到了幾篇前輩的文章,很是不錯,于是這里來一起學習一下吧。 PART 一:MMU 架構篇 MMU
2023-11-26 15:21:34
1205
1205
MMU中的頁命中、缺頁介紹
頁命中、缺頁 (1)頁命中 ? a) 處理器要對虛擬地址VA進行訪問。 ? b) MMU的TLB沒有命中,通過TWU遍歷主存頁表中的PTEA(PTE地址)。 ? c) 主存向MMU返回PTE
2023-11-26 16:19:27
2033
2033
如何才能將Bootloader和Application關聯(lián)起來
接下來,我們要利用該Bootloader調(diào)試目標Application Project,如何才能將Bootloader和Application關聯(lián)起來呢?就需要借助剛才提到的Bootloader Project Build所生成的***.bld文件。
2024-06-12 14:32:53
1871
1871
深入解析ADS7852:高性能12位8通道ADC的卓越之選
轉換器(ADC),憑借其出色的特性和廣泛的應用場景,成為眾多工程師的理想之選。今天,我們就來深入探討一下ADS7852的相關特性、工作原理、應用場景以及設計要點。 文件下載: ads
2025-12-09 13:58:07
444
444
深度剖析ADS1242和ADS1243:高精度ADC的卓越之選
深度剖析ADS1242和ADS1243:高精度ADC的卓越之選 在電子工程師的日常工作中,高精度模擬 - 數(shù)字轉換器(ADC)的選擇至關重要,它直接影響到系統(tǒng)的性能和精度。今天,我們就來深入探討
2025-12-10 10:00:06
310
310
電子發(fā)燒友App






評論