娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月13日(星期二)

2020年05月13日 | 【MPC5744P】內部Flash讀寫

發布者:煙雨江湖 來源: eefocus關鍵字:MPC5744P  內部Flash  讀寫 手機看文章 掃描二維碼
隨時隨地手機看文章

MPC5744P內部Flash相當大,除了存儲代碼,多余的空間還可以另作它用,例如參數存儲,故障存儲,當然,Bootloader也是依賴于Flash讀寫。


內部Flash的結構請參考上一篇關于Flash結構及啟動原理的說明:https://blog.csdn.net/u010875635/article/details/85162135


讀?。阂淮巫x取256位。


擦除:一次擦除一個block,無論是16KB、32KB、64KB抑或256KB


編程:內置flash存儲可以通過word(32bits)或者double words(64bits)尋址編程,多個word或double words填充編程頁緩存(256bits),使能page編程(256bits,4個double words)或者quadpage編程(1024bits,16個double words)。推薦的編程操作從64bits到1024bits,并且64bits對齊。


flash讀寫示例:https://download.csdn.net/download/u010875635/10872302


建議將示例中的Flash_Check_g注釋掉,以便于支持2個32位數據編程,//ret = Flash_Check_g(startAddr,endAddr);


注意:


1、每組數據不能超過1024bits,否則會被截掉。


2、若是當前程序運行,則此partition不能被擦除,否則會死機。


MPC5744P的Flash按照地址空間分為LOW、MID、HIGH、First256K、Second256K(沒有這么多256K空間,因此Second實際上一直是空的)。

image.png


image.png

編程Flash的步驟如下:


1、激活主地址空間


2、解鎖對應Block


3、擦除對應Block


4、編程對應Block


 


 


我們在Processor Expert中添加flash_c551:flash_css模塊,然后生成代碼


解鎖、擦除、編程、讀取等操作函數如下:


flash.h


#ifndef _DRIVER_FLASH_FLASH_H_

#define _DRIVER_FLASH_FLASH_H_

 

 

#include "flash_c55_driver.h"

 

//get addressrage select block

flash_block_select_t Flash_GetSelectBlock(uint32_t startAddr, uint32_t endAddr);

 

status_t Flash_Unlock_g(uint32_t startAddr, uint32_t endAddr);

 

status_t Flash_Erase_g(uint32_t startAddr, uint32_t endAddr);

 

status_t Flash_Check_g(uint32_t startAddr, uint32_t endAddr);

 

status_t Flash_Program_g(uint32_t startAddr, uint32_t endAddr, uint32_t *buffer, uint32_t len);

 

status_t Flash_Lock_g(uint32_t startAddr, uint32_t endAddr);

 

uint32_t Flash_Read_g(uint32_t addr);

 

#endif /* End of (__BLOCK_MPC57XX__) */

flash.c


#include "Drivers/Flash/flash.h"

 

/***************************************

 * Flash Block Range

// LOW--not program, partition 0 and 1

0x00800000-0x00803FFF -- 16KB,EEPROM-low block0, RWW_P:0

0x00804000-0x00807FFF -- 16KB,EEPROM-low block1, RWW_P:0

0x00F98000-0x00F9BFFF -- 16KB,low flash memory block2, RWW_P:1

0x00F9C000-0x00F9FFFF -- 16KB,low flash memory block3, RWW_P:1

// MID , partition 2 and 3

0x00808000-0x0080FFFF -- 32KB,EEPROM-mid block0, RWW_P:2

0x00810000-0x00817FFF -- 32KB,EEPROM-mid block1, RWW_P:3

//HIGH, , partition 4 and 5

0x00FA0000-0x00FAFFFF -- 64KB,high flash memory block0, RWW_P:4

0x00FB0000-0x00FBFFFF -- 64KB,high flash memory block1, RWW_P:4

0x00FC0000-0x00FCFFFF -- 64KB,high flash memory block2, RWW_P:4

0x00FD0000-0x00FDFFFF -- 64KB,high flash memory block3, RWW_P:5

0x00FE0000-0x00FEFFFF -- 64KB,high flash memory block4, RWW_P:5

0x00FF0000-0x00FFFFFF -- 64KB,high flash memory block5, RWW_P:5

//256K--all used

0x01000000-0x0103FFFF -- 256KB,256k flash memory block0, RWW_P:6

0x01040000-0x0107FFFF -- 256KB,256k flash memory block1, RWW_P:6

0x01080000-0x010BFFFF -- 256KB,256k flash memory block2, RWW_P:6

0x010C0000-0x010FFFFF -- 256KB,256k flash memory block3, RWW_P:6

0x01100000-0x0113FFFF -- 256KB,256k flash memory block4, RWW_P:7

0x01140000-0x0117FFFF -- 256KB,256k flash memory block5, RWW_P:7

0x01180000-0x011BFFFF -- 256KB,256k flash memory block6, RWW_P:7

0x011C0000-0x011FFFFF -- 256KB,256k flash memory block7, RWW_P:7

 **************************************/

 

#define FLASH_TOTAL_BLOCKCOUNT 20

#define FLASH_LOWPART_BLOCKCOUNT 4

#define FLASH_MIDPART_BLOCKCOUNT 2

#define FLASH_HIGHPART_BLOCKCOUNT 6

#define FLASH_256KPART_BLOCKCOUNT 8

 

 

//low

#define FLASH_BLOCKPART_LOW_BLOCKNUM_0_START 0x00800000

#define FLASH_BLOCKPART_LOW_BLOCKNUM_0_END 0x00803FFF

#define FLASH_BLOCKPART_LOW_BLOCKNUM_1_START 0x00804000

#define FLASH_BLOCKPART_LOW_BLOCKNUM_1_END 0x00807FFF

#define FLASH_BLOCKPART_LOW_BLOCKNUM_2_START 0x00F98000

#define FLASH_BLOCKPART_LOW_BLOCKNUM_2_END 0x00F9BFFF

#define FLASH_BLOCKPART_LOW_BLOCKNUM_3_START 0x00F9C000

#define FLASH_BLOCKPART_LOW_BLOCKNUM_3_END 0x00F9FFFF

 

//mid

#define FLASH_BLOCKPART_MID_BLOCKNUM_0_START 0x00808000

#define FLASH_BLOCKPART_MID_BLOCKNUM_0_END 0x0080FFFF

#define FLASH_BLOCKPART_MID_BLOCKNUM_1_START 0x00810000

#define FLASH_BLOCKPART_MID_BLOCKNUM_1_END 0x00817FFF

 

//high

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_0_START 0x00FA0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_0_END 0x00FAFFFF

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_1_START 0x00FB0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_1_END 0x00FBFFFF

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_2_START 0x00FC0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_2_END 0x00FCFFFF

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_3_START 0x00FD0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_3_END 0x00FDFFFF

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_4_START 0x00FE0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_4_END 0x00FEFFFF

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_5_START 0x00FF0000

#define FLASH_BLOCKPART_HIGH_BLOCKNUM_5_END 0x00FFFFFF

 

//256k

#define FLASH_BLOCKPART_256K_BLOCKNUM_0_START 0x01000000

#define FLASH_BLOCKPART_256K_BLOCKNUM_0_END 0x0103FFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_1_START 0x01040000

#define FLASH_BLOCKPART_256K_BLOCKNUM_1_END 0x0107FFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_2_START 0x01080000

#define FLASH_BLOCKPART_256K_BLOCKNUM_2_END 0x010BFFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_3_START 0x010C0000

#define FLASH_BLOCKPART_256K_BLOCKNUM_3_END 0x010FFFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_4_START 0x01100000

#define FLASH_BLOCKPART_256K_BLOCKNUM_4_END 0x0113FFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_5_START 0x01140000

#define FLASH_BLOCKPART_256K_BLOCKNUM_5_END 0x0117FFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_6_START 0x01180000

#define FLASH_BLOCKPART_256K_BLOCKNUM_6_END 0x011BFFFF

#define FLASH_BLOCKPART_256K_BLOCKNUM_7_START 0x011C0000

#define FLASH_BLOCKPART_256K_BLOCKNUM_7_END 0x011FFFFF

 

 

/* Lock State , shift is in the setlock function*/

#define LOCK_LOW_BLOCKS               0x00003FFFU  //lock0

#define LOCK_MID_BLOCKS               0x0000FFFFU  //lock0

#define LOCK_HIGH_BLOCKS              0x0000FFFFU  //lock1

#define LOCK_FIRST256_BLOCKS          0xFFFFFFFFU  //lock2

//#define UNLOCK_SECOND256_BLOCKS         0x0000FFFFU  //lock3

 

#define UNLOCK_LOW_BLOCKS               0x00000000U

#define UNLOCK_MID_BLOCKS               0x00000000U

#define UNLOCK_HIGH_BLOCKS              0x00000000U

#define UNLOCK_FIRST256_BLOCKS          0x00000000U

//#define UNLOCK_SECOND256_BLOCKS         0x00000000U

 

 

#define NUMBER_OF_WORD_BLANK_CHECK      0x90

#define NUMBER_OF_WORD_PGM_VERIFY       0x80

#define NUMBER_OF_WORD_CHECK_SUM        0x120

 

/* Platform Flash */

#define FLASH_FMC                       PFLASH_BASE

#define FLASH_PFCR1                     0x000000000U

#define FLASH_PFCR2                     0x000000004U

#define FLASH_FMC_BFEN_MASK             0x000000001U

 

 

 

//Block part and number structure

typedef struct

{

uint32_t BlockPart; //Low,Mid,High or 256K

uint32_t BlockNum; //Block 0...n

}Flash_BlockPartAndNum;

 

 

 

uint32_t Flash_Block_Lock[4]={

LOCK_LOW_BLOCKS

,LOCK_MID_BLOCKS

,LOCK_HIGH_BLOCKS

,LOCK_FIRST256_BLOCKS

};

 

uint32_t Flash_Block_UnLock[4]={

UNLOCK_LOW_BLOCKS

,UNLOCK_MID_BLOCKS

,UNLOCK_HIGH_BLOCKS

,UNLOCK_FIRST256_BLOCKS

};

 

//every part block count

uint32_t Flash_Block_Count[4]={

FLASH_LOWPART_BLOCKCOUNT

,FLASH_MIDPART_BLOCKCOUNT

,FLASH_HIGHPART_BLOCKCOUNT

,FLASH_256KPART_BLOCKCOUNT

};

 

 

 

//low space block start array

uint32_t Flash_Block_Low_Start_Array[FLASH_LOWPART_BLOCKCOUNT]={

FLASH_BLOCKPART_LOW_BLOCKNUM_0_START

,FLASH_BLOCKPART_LOW_BLOCKNUM_1_START

    ,FLASH_BLOCKPART_LOW_BLOCKNUM_2_START

    ,FLASH_BLOCKPART_LOW_BLOCKNUM_3_START

};

 

//mid space block start array

uint32_t Flash_Block_Mid_Start_Array[FLASH_MIDPART_BLOCKCOUNT]={

 

//mid

    FLASH_BLOCKPART_MID_BLOCKNUM_0_START

    ,FLASH_BLOCKPART_MID_BLOCKNUM_1_START

};

 

//high space block start array

uint32_t Flash_Block_High_Start_Array[FLASH_HIGHPART_BLOCKCOUNT]={

//high

    FLASH_BLOCKPART_HIGH_BLOCKNUM_0_START

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_1_START

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_2_START

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_3_START

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_4_START

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_5_START

 

};

 

//256k space block start array

uint32_t Flash_Block_256K_Start_Array[FLASH_256KPART_BLOCKCOUNT]={

//256k

    FLASH_BLOCKPART_256K_BLOCKNUM_0_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_1_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_2_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_3_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_4_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_5_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_6_START

    ,FLASH_BLOCKPART_256K_BLOCKNUM_7_START

 

};

 

 

//low space block end array

uint32_t Flash_Block_Low_End_Array[FLASH_LOWPART_BLOCKCOUNT]={

FLASH_BLOCKPART_LOW_BLOCKNUM_0_END

,FLASH_BLOCKPART_LOW_BLOCKNUM_1_END

    ,FLASH_BLOCKPART_LOW_BLOCKNUM_2_END

    ,FLASH_BLOCKPART_LOW_BLOCKNUM_3_END

};

 

//mid space block end array

uint32_t Flash_Block_Mid_End_Array[FLASH_MIDPART_BLOCKCOUNT]={

 

//mid

    FLASH_BLOCKPART_MID_BLOCKNUM_0_END

    ,FLASH_BLOCKPART_MID_BLOCKNUM_1_END

};

 

//high space block end array

uint32_t Flash_Block_High_End_Array[FLASH_HIGHPART_BLOCKCOUNT]={

//high

    FLASH_BLOCKPART_HIGH_BLOCKNUM_0_END

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_1_END

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_2_END

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_3_END

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_4_END

    ,FLASH_BLOCKPART_HIGH_BLOCKNUM_5_END

[1] [2] [3]
關鍵字:MPC5744P  內部Flash  讀寫 引用地址:【MPC5744P】內部Flash讀寫

上一篇:【MPC5744P】S32DS中Processor Expert自動生成代碼工具使用教程(五
下一篇:【飛思卡爾 MC9S12】PRM文件與內存映射(Flash、RAM、EEE)

推薦閱讀

目錄:1:概述2:常用中斷功能3:PWM輸出 1:概述在開發中,定時器的應用很廣泛,簡單總結為三個方面:1.1:中斷功能的應用,常用的是利用定時器中斷,實現定時、記時、延時、超時判斷,前面博文中有總結過內核定時器的各種使用的方法;1.2:比較輸出,常用應用就是PWM輸出,用脈寬調制來實現led、電機等的控制;1.3:輸入捕獲,可以抓取輸入的方波信號,...
現在的電腦所使用的CPU大多都是AMD和INTEL的。CPU(中央處理單元)的優劣常常被我們作為評價一個電腦性能的重要指標??赡転榱俗非笮阅?,大多數人選擇了Intel的產品。最近關注了“中興”被美國商務部做出了長達7年之久的禁售令事件。從這件事反映出了我國在基層技術上的落后,我們沒有自主的操作系統,我們沒有自己的芯片產業。我們在核心技術上受制于人。...
昨天XDA大神Max Weinbach曝光了一款全新的三星折疊屏新機——Galaxy Fold e/Lite,今天它又帶來了這款折疊屏新機的更多消息。  規格上這款Galaxy Fold Lite升級為驍龍865處理器,不過不支持5G網絡,256GB存儲?! ⊥庥^上變化較大,最顯眼的應該是外屏可能同Galaxy Z Flip一樣小,換言之如果想要正常使用只能打開手機?! ∑聊粍t是塑料...
引言LPC11Cx系列是NXP公司的高性價比Cortex—M0構架ARM微控制器產品,內嵌CAN總線控制器。CAN總線位定時參數決定CAN總線能否按給定速率正常通信及其穩定性,但在實踐中發現,原版用戶手冊及國內譯本在CAN總線位定時參數配置寄存器的表述上有誤,導致用戶CAN總線無法正常通信。下面將校正錯誤,并給出CAN總線位定時參數具體計算實例。1 位定時時序及參數依...

史海拾趣

問答坊 | AI 解惑

高手幫幫忙 平面結構寬帶定向耦合器設計

QQ:58031263那位高手有經驗啊,用IE3D仿真的,指導以下,謝謝了…

查看全部問答∨

求助 燒寫2812 flash

小弟想知道 2812的flash 具體怎么燒寫 哪位大哥知道 請指點小弟一下…

查看全部問答∨

安全用電常識(一)

1、 照明開關為何必須接在火線上?   如果將照明開關裝設在零線上,雖然斷開時電燈也不亮,但燈頭的相線仍然是接通的,而人們以為燈不亮,就會錯誤地認為是處于斷電狀態。而實際上燈具上各點的對地電壓仍是220伏的危險電壓。如果燈滅時人們觸及 ...…

查看全部問答∨

魏坤第二版示波器試驗資料(125Msps采樣,雙通道)

看到“古道熱腸”強烈推薦魏坤的第二版示波器,轉載來,供大家學習:轉自www.OURDEV.cn‘魏坤手持示波儀開源DIY活動’ 12月發布的原理圖和PCB: 大概的配置為: 雙通道;每通道采樣率100Msps;每通道存儲深度4K;模擬帶寬大于30MHz(使用Agilen ...…

查看全部問答∨

對于幾人收發天線相隔距離很近情況下對電臺收信機部分的保護

作者博客:http://radiobcl.blog.163.com/ 在FT-80C等電臺的收發切換繼電器后面接收輸入處加個限幅電路:如果沒有合適的兩個背對背連接的硅瞬變吸收二極管(TVS),采用幾組用二極管1N4148串聯的組件正反向并聯也可以對地分流,輸入串聯2W/24V燈泡、 ...…

查看全部問答∨

LCD亮了,但沒有內容,不知什么原因

#include<reg52.h> #include <intrins.h> #define keyborad P0 #define LCD_data  P1             //數據口 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; #define uc ...…

查看全部問答∨

電路基礎書籍

《電路基礎》第6版這本書好么? 推薦下適合自學電路的入門書籍,最好是國外的書…

查看全部問答∨

硬件平臺為qq2440,軟件平臺為WinCE 在這上面開發簡單圖形程序可否?

我做了幾個很簡單的圖形變化的程序。。。 但發現在這上面運行時根本沒有在本地電腦上那么流暢,請問WinCE 或者 qq2440 能開發一些簡單圖形變化的程序嗎? 如何能夠在Windows CE上開發一些流暢的圖形變化程序,需要什么? 不是有個什么世界編程大 ...…

查看全部問答∨

關于使用SYMMETRIC_IO_MODE的問題

各位大蝦好! 我需要使用APIC,所以在config.h中加入了定義“#deinfe SYMMETRIC_IO_MODE“,但修改完以后,系統啟動剛過V1.6+++++++++這個畫面就藍屏了,再沒有任何改變。 我用的是pentium M處理器,vxworks5.5.1和tornado2.2.在該這個之前,一切 ...…

查看全部問答∨

怎樣破解網卡驅動

各位大哥:     小的剛到公司上班,老板要讓寫一個isdn網卡的驅動,由于以前沒有接觸過這么底層的東西,所以現在一點頭緒也沒有啊。現在得到一個類似的網卡和驅動,裝上之后能運行,現在想先破解被人的這個驅動程序看看,不知道哪位大哥 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 大安市| 五河县| 南充市| 大洼县| 临安市| 德钦县| 威海市| 榆树市| 郧西县| 泸西县| 乃东县| 江城| 乌苏市| 东港市| 肥城市| 汝州市| 开平市| 新邵县| 佛山市| 无为县| 闽清县| 华安县| 安阳县| 邯郸市| 九龙坡区| 安国市| 巴林右旗| 台湾省| 旬邑县| 三河市| 阳原县| 汽车| 海原县| 湘潭县| 诸城市| 远安县| 广饶县| 宽城| 隆昌县| 友谊县| 河北区|