調(diào)試工具:MDK 4.72 JLink8
一、MDK設(shè)置
1、Target
圖1
2.Asm
圖2
1處必須預(yù)定義NO_CRP,因為在LPC1788啟動文件startup_LPC177x_8x.s中有如下代碼
圖3
117-120這段代碼是NXP公司的LPC1700系列的MCU特有的一段代碼,其他公司的Cortex-M3 MCU的啟動程序是沒有這段代碼的。這段代碼是指定LPC1700的CRP加密級別的代碼段,芯片上電后會自動讀取0x02FC這一地址的值以確定加密方式,其中CRP_Key = 0xffffffff為0級加密,CRP_Key = 0x12345678為1級加密,CRP_Key = 0x87654321為2級加密,CRP_Key = 0x43218765為3級加密(最高級加密),3級加密將會禁止所有的ISP指令,也就是說,芯片將不能讀寫、不能擦除。
如果在圖2中的1處沒有定義了NO_CRP,118-120行代碼會被執(zhí)行,即定義CRP_key,這會導(dǎo)致退出外部RAM調(diào)試時內(nèi)核被鎖,在MDK中的Debug Setting中無法檢測到目標板;只能通過拉低P2[10]引腳后通過J_Flash軟件的Target->Connect連接目標板,然后Erase Chip擦除目標板Flash,這樣才能在Debug Setting中重新檢測到目標板
3.Linker
圖4
1)、如果圖2中1處(使用Target對話框中的內(nèi)存布局)打勾,則表示使用默認的分散加載文件生成映像文件,其內(nèi)容為
圖5
其中圖3中的地址1對應(yīng)于Target對話框中Read/Only Memory Areas區(qū)內(nèi)的默認存儲空間的起始地址,默認為片內(nèi)Flash;地址2是對應(yīng)于arget對話框中Read/Write Memory Areas區(qū)內(nèi)的默認存儲空間的起始地址,默認為片內(nèi)SRAM。如果此時圖1Target對話框中的Read/Only Memory Areas和Read/Write Memory Areas區(qū)域的存儲空間設(shè)置的不是默認值,則會出現(xiàn)編譯錯誤。
Link Control String中的內(nèi)容為(工程名為Proj1):
圖6
2)、如果圖2中1處不打勾,并在3處選擇了分散加載文件,則會按分散加載文件中的內(nèi)容生成映像文件;此時Target對話框中指定的RO和RW存儲空間無效。這次調(diào)試使用的分散加載文件內(nèi)容為
圖7
將向量表和所有必須在root region中的library sections(如__main.o, __scatter*.o, __dc*.o, 和Region$$Table)放在起始地址為0x10000000,大小為0x10000的存儲空間中(片內(nèi)SRAM)中;將剩余的代碼,讀寫數(shù)據(jù)和零初始化數(shù)據(jù)放大起始地址為0xA0000000,大小為0x1000000的存儲空間(片外SDRAM)中。
Link Control String中的內(nèi)容如圖2 ,分散加載文件名為SDRAM.sct。
3)、如果圖2中1處不打勾,且3處沒有選擇分散加載文件,則會按2處的R/O Base和R/W Base生成映像文件;此時Target對話框中指定的RO和RW存儲空間無效。
Link Control String中的內(nèi)容為(R/O Base和R/W Base如圖2)
圖8
4、Debug
圖9
Load Application at Startup處不要打勾,在1處選擇初始化命令腳本,內(nèi)容為
INCLUDE MT48LC8M32LFB5.ini
//INCLUDE SST39VF160_for_download.ini
InitSDRAM(); // Initialize memory
//EMC_NorFlashInit();
LOAD .\Flash\Lcd_LQ043T3DX0A.axf INCREMENTAL // Download program
/* RNR */
_WDWORD(0xE000ED98, 0x00000000); // Use No.0 MPU
/* RBAR */
_WDWORD(0xE000ED9C, 0xA0000000); // Set MPU base addr
/* RASR */
_WDWORD(0xE000EDA0, 0x03000031); // Set MPU size and permission
/* SHCSR */
// _WDWORD(0xE000ED24, 0x00000100); // Enable memory managemeng fault
/* MPU_CONTROL */
_WDWORD(0xE000ED94, 0x00000005); // Enable MPU
/* VTOR */
_WDWORD(0xE000ED08, 0x10000000); // Set vector table offset
SP = _RDWORD(0x10000000); // Set stack pointer
PC = _RDWORD(0x10000004); // Set program counter
10-22行的關(guān)于MPU的設(shè)置一定要有,否則程序在SDRAM中的執(zhí)行會出現(xiàn)錯誤,這是因為Cortex_M3處理器在0xA0000000-0xDFFFFFFF之間的存儲空間的默認訪問屬性是不可執(zhí)行的,是不可執(zhí)行區(qū),圖中第16行代碼通過設(shè)置MPU region屬性及容量寄存器MPURASR,使其以0xA0000000為起始地址的32MB(MPURASR[5:1]=0b11000)存儲空間為共享內(nèi)存(MPURASR[26:24]=0b011),且此區(qū)允許取指(MPURASR[28]=0)。
InitSDRAM()函數(shù)在MT48LC8M32LFB5.ini中,作用為初始化外部SDRAM,其內(nèi)容為
FUNC void PinSel(int p1, int n1, int f1)
{
_WDWORD(0x4002C000 + (p1 * 32 + n1) * 4, 0x8 | f1);
}
FUNC void InitSDRAM(void)
{
int i;
PinSel(2,16,1);
PinSel(2,17,1);
PinSel(2,18,1);
PinSel(2,20,1);
PinSel(2,24,1);
PinSel(2,28,1);
PinSel(2,29,1);
PinSel(2,30,1);
PinSel(2,31,1);
for(i = 0; i < 32; i++)
PinSel(3,i,1);
for(i = 0; i < 21; i++)
PinSel(4,i,1);
PinSel(4,24,1);
PinSel(4,25,1);
PinSel(4,30,1);
PinSel(4,31,1);
/* PCONP |= 1 << 11 */
_WDWORD(0x400FC0C4, 0x04288FDE); // Power On EMC
/* EMCCONTROL |= 1 */
_WDWORD(0x2009C000, 0x00000001); // Enable EMC
/* EMCDLYCTL */
_WDWORD(0x400FC1DC, 0x00081818); // Config data read delay
/* EMCCONFIG */
_WDWORD(0x2009C008, 0x00000000); // Little endian mode
/* DYNAMICCONTROL */
_WDWORD(0x2009C020, 0x00000003); // Set normal self refresh mode, normal power mode
// CE always HI
// Enable clock out
// Clock do not stop during idle
/* DYNAMICREFRESH */
_WDWORD(0x2009C024, 0x0000001F); // refresh timing
/* DYNAMICREADCONFIG */
_WDWORD(0x2009C028, 0x00000001); // read timing
/* DYNAMICRP */
_WDWORD(0x2009C030, 0x00000002); // tRP
/* DYNAMICRAS */
_WDWORD(0x2009C034, 0x00000003); // tRAS
/* DYNAMICSREX */
_WDWORD(0x2009C038, 0x00000005); // tSREX
/* DYNAMICAPR */
_WDWORD(0x2009C03C, 0x00000001); // tAPR
/* DYNAMICDAL */
_WDWORD(0x2009C040, 0x00000005); // tDAL
/* DYNAMICWR */
_WDWORD(0x2009C044, 0x00000003); // tWR
/* DYNAMICRC */
_WDWORD(0x2009C048, 0x00000004); // tRC
/* DYNAMICRFC */
_WDWORD(0x2009C04C, 0x00000004); // tRFC
/* DYNAMICXSR */
_WDWORD(0x2009C050, 0x00000005); // tXSR
/* DYNAMICRRD */
_WDWORD(0x2009C054, 0x00000001); // tRRD
/* DYNAMICMRD */
_WDWORD(0x2009C058, 0x00000003); // tMRD
/* DYNAMICCASRAS0 */
_WDWORD(0x2009C104, 0x00000303); // RAS/CAS Latency
/* DYNAMICCONFIG0 */
_WDWORD(0x2009C100, 0x00004500); // Config device type as SDRAM
// Config address mapping
_sleep_(100); // Wait 100 ms
/* DYNAMICCONTROL */
_WDWORD(0x2009C020, 0x00000183); // nop command
_sleep_(100); // Wait 100 ms
/* DYNAMICCONTROL */
_WDWORD(0x2009C020, 0x00000103); // pre-charge command
// /* DYNAMICREFRESH */
// _WDWORD(0x2009C024, 0x00000002); // refresh timing
_sleep_(100); // Wait 100 ms
/* DYNAMICREFRESH */
_WDWORD(0x2009C024, 0x0000001F); // refresh timing
/* DYNAMICCONTROL */
_WDWORD(0x2009C020, 0x00000083); // mode command
_RDWORD(0xA0000000 | (0x32 << (2 + 2 + 8)));
_sleep_(100); // Wait 100 ms
/* DYNAMICCONTROL */
_WDWORD(0x2009C020, 0x00000003); // noamal command
/* DYNAMICCONFIG0 */
_WDWORD(0x2009C100, 0x00084500); // enable buffer
_sleep_(100); // Wait 100 ms
}
5、Utilities
圖片10
1處不能打勾,這個選項的意思是在進入調(diào)試前先更新目標板,但是我們并沒有配置目標板的flash,所以這個選項如果不去掉,在調(diào)試時就會彈出錯誤,大意是在xxxx地址沒有找到算法。
6、Utilities Setting
圖片11
因為是在外部RAM中調(diào)試,所以1中不用加載Flash編程算法,左上角選擇Erase Sectors或Do not Erase都可以。
二、問題總結(jié)
1、在外部RAM中調(diào)試,程序中不要有操作外部RAM的代碼,初始化也不要有,包括對RAM相關(guān)引腳的操作,RAM的初始化和引腳的初始化要放到j(luò)link的下載配置文件MT48LC8M32LFB5.ini中,主要是對LPC的寄存器進行相關(guān)配置。
2、在system_LPC177x_8x.c的SystemInit()函數(shù)中如圖183-188行關(guān)于時鐘選擇設(shè)置部分要注釋掉,因為LPC1788復(fù)位后是以IRC作為時鐘源的,當(dāng)將程序下載到外部RAM中時,外部RAM是在12MHz的IRC下運行的,所以更改CPU或EMC時鐘會使程序在外部RAM運行出錯
3、步驟
1)、Target或Linker
2)、Asm (LPC1788特有)
3)、Debug
4)、Utilities
上一篇:深度討論32復(fù)位及SystemInit函數(shù)在程序中的作用
下一篇:lpc1768中結(jié)構(gòu)體在RAM中的存儲格式
推薦閱讀
史海拾趣
隨著公司業(yè)務(wù)的不斷發(fā)展,Elcoma意識到要進一步拓展市場,必須與國際同行建立合作關(guān)系。他們積極尋求與全球知名電子企業(yè)的合作機會,通過技術(shù)交流和合作研發(fā),不斷提升自身的技術(shù)水平和市場競爭力。同時,Elcoma還積極參與國際電子展會和論壇,展示公司的最新技術(shù)和產(chǎn)品,吸引了眾多國際客戶的關(guān)注。這些國際合作不僅為Elcoma帶來了更多的商業(yè)機會,也進一步提升了公司的國際影響力。
隨著全球?qū)Νh(huán)保問題的日益關(guān)注,Elcoma公司也積極響應(yīng),將環(huán)保理念融入到企業(yè)的發(fā)展戰(zhàn)略中。他們采用環(huán)保材料和工藝,減少生產(chǎn)過程中的污染排放,同時推出了一系列環(huán)保型電子產(chǎn)品,滿足消費者對環(huán)保產(chǎn)品的需求。這種對環(huán)保的重視不僅提升了Elcoma的品牌形象,也為企業(yè)帶來了可持續(xù)發(fā)展的動力。
B.B. Battery公司成立之初,面臨著資金短缺、市場競爭激烈等諸多挑戰(zhàn)。然而,公司的創(chuàng)始人憑借對電池行業(yè)的深刻理解和敏銳的市場洞察力,帶領(lǐng)團隊不斷探索和積累。他們深入調(diào)研市場需求,研發(fā)出適應(yīng)市場需求的電池產(chǎn)品,并通過優(yōu)化生產(chǎn)流程、降低成本等方式,逐步在市場上獲得了一席之地。
隨著技術(shù)的不斷成熟,Globaltech開始積極拓展國際市場。公司通過與國內(nèi)外多家系統(tǒng)廠商建立緊密的合作關(guān)系,共同開發(fā)新產(chǎn)品,進一步提升了其市場競爭力。特別是在亞洲市場,Globaltech憑借其高性價比的產(chǎn)品和快速的響應(yīng)能力,迅速占據(jù)了大量市場份額。同時,公司還積極參與國際展會,與全球客戶面對面交流,進一步提升了品牌知名度和影響力。
隨著市場競爭的加劇,CONTTEK Group GmbH公司意識到只有不斷創(chuàng)新才能在行業(yè)中立足。因此,公司加大了對研發(fā)的投入,積極引進新技術(shù)、新材料和新工藝,不斷推動產(chǎn)品的升級換代。通過持續(xù)的技術(shù)創(chuàng)新,公司成功推出了一系列具有創(chuàng)新性和競爭力的新產(chǎn)品,進一步鞏固了其在電子連接器領(lǐng)域的領(lǐng)先地位。
面對日益激烈的國際競爭,Eris Tech開始實施全球化戰(zhàn)略。公司通過在海外設(shè)立研發(fā)中心、生產(chǎn)基地和銷售網(wǎng)絡(luò),加強與國際市場的聯(lián)系和合作。同時,Eris Tech還積極參與國際標準的制定和技術(shù)交流活動,提高了公司的國際影響力和競爭力。隨著全球化戰(zhàn)略的深入實施,Eris Tech的產(chǎn)品已經(jīng)遠銷全球多個國家和地區(qū)。
在設(shè)計一個9b92的板子,請問之前有人用過別的型號的usb 接口的功能么. 但作為usb device用時,是否一定要把vbus上拉。 我的板不從usb去電,是否可以通過軟件在上電后啟動usb口進行枚舉? 因為我想省下vbus那個腳做io :-),LM的腳的復(fù)用的也太 ...… 查看全部問答∨ |
那里可以下到魅族M8和宇龍酷派N90手機的原理圖啊?想知道他們用的什么手機基帶芯片,他們的GSM協(xié)議棧怎么實現(xiàn)的。 那里可以下到魅族M8和宇龍酷派N90手機的原理圖啊?想知道他們用的什么手機基帶芯片,他們的GSM協(xié)議棧怎么實現(xiàn)的。… 查看全部問答∨ |
請問IC設(shè)計和嵌入式系統(tǒng)開發(fā)哪個更有前景 我剛上大二,對IC設(shè)計和嵌入式系統(tǒng)開發(fā)都有一定的興趣,我是讀電子的,同時對軟件也很感興趣,所以為了避免茫然,我想定一個長遠的目標,從而更好的努力。所以我想知道這兩者哪個更有前景呢,說白了就是以后出來哪個薪水相對來說會更高呢。我該如何 ...… 查看全部問答∨ |
|
鍋爐房的plc300系列有個觸摸屏,現(xiàn)在出現(xiàn)個現(xiàn)象,有三個高壓泵,2#一直運行中,1#3#備用,現(xiàn)在啟動1#泵觸摸屏?xí)@示氣壓極高,導(dǎo)致鍋爐停爐,但是起3#就沒這種現(xiàn)象,高手們都來分析下,存在干擾?… 查看全部問答∨ |
TCON的字節(jié)地址是88H,TMOD是89H,而TCON是可位尋址的,也就是說TCON中IE0位地址也是89H,豈不是和TMOD地址重復(fù)?… 查看全部問答∨ |
速度性能的應(yīng)用示例方案——傳統(tǒng)的GPIB配置與經(jīng)過優(yōu)化的開關(guān)-源表配置 吉時利707B型開關(guān)主機和2636A型源表的優(yōu)化配置時獲得的速度性能的應(yīng)用實例方案,有如下2個介紹: 方案1:傳統(tǒng)的GPIB配置 此配置如圖1所示。與黃色陰影部分的任務(wù)相關(guān)的時間進行了吞吐能力對比。藍色陰影部分的執(zhí)行任務(wù)的時間未進行吞吐能力對比 ...… 查看全部問答∨ |
|
現(xiàn)在很多儀表都是4~20MA電流方式進行信號遠傳,那我們就找到資料電流采集上的一些處理吧! 同時電源處理部分也可以學(xué)習(xí)下! … 查看全部問答∨ |
如題 如何在光板/裸板上上錫呢?就是板材已經(jīng)是加了阻焊油墨的 但是觸點都是類似于金手指那種,亮銅片的感覺。 想尋一個可以手工上錫的方法。 如下圖這種光板 … 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 座椅、天窗、電動尾門應(yīng)用 國產(chǎn)車規(guī)級高壓霍爾效應(yīng)傳感器推薦
- 突發(fā)!又一車企車機“崩了”
- 寧德時代為陳立泉院士頒發(fā)“卓越貢獻獎”
- 一文速覽吉利雷神 AI 電混 2.0 發(fā)布會重點
- 2025年1-4月ADAS供應(yīng)商裝機量排行榜:頭部集中與國產(chǎn)突圍并存
- 國內(nèi)飛行汽車無線通信測試成功,通信安全新突破
- SPAD席卷車載激光雷達市場
- 大聯(lián)大品佳集團推出基于Microchip和ams OSRAM產(chǎn)品的10Base-T1S萬級像素大燈方案
- 哈曼推出采用三星Neo QLED技術(shù)的全新顯示屏
- Syntiant推出超低功耗汽車AI創(chuàng)新技術(shù) 提升車輛安全性和用戶體驗
- ST中TB中斷只能進入一次
- 請問各位大蝦,有熟悉lwip的嗎? 問個在inet.c文件中有個inet_chksum_pseudo()的函數(shù)相關(guān)問題。
- 用MSP430單片機flash存儲數(shù)據(jù)的編程實例
- 新手跪求開發(fā)板
- msp430 PWM輸出問題
- 產(chǎn)生-7V的問題
- 使用C8051F060編的程序,這個程序為什么不能輸出方波?
- 51程序改寫AVR16程序--Nokia5110顯示程序 修改后屏幕無顯示
- 當(dāng)三極管用作開關(guān)電路,,,
- 深圳南山高薪招聘電子煙結(jié)構(gòu)工程師一枚,10-30K,早九晚六,雙休