at91sam9263芯片資源與CAN驅(qū)動(dòng)調(diào)試心得
at91sam9263嵌入了一個(gè)基于200 MIPS(每秒百萬(wàn)條指令)的ARM926EJ-S微控制器(MCU),從而解決了在圖形界面、數(shù)據(jù)密集型應(yīng)用(比如聯(lián)網(wǎng)的醫(yī)療監(jiān)測(cè)設(shè)備和GPS導(dǎo)航系統(tǒng))中基于ARM9的傳統(tǒng)微控制器遭遇的瓶頸問(wèn)題。
本文引用地址:http://butianyuan.cn/article/201710/366284.htmat91sam9263采用了27條DMA(直接存儲(chǔ)器存?。┩ǖ?,包括Atmel 18通道的PDC(外圍直接存儲(chǔ)器存取控制器)、一個(gè)9層的總線矩陣以及用于數(shù)據(jù)/指示TCM(緊密耦合式內(nèi)存)的兩條其他的總線,以便增強(qiáng)CPU性能并提供高達(dá)41.6 Gbps的片上數(shù)據(jù)傳輸速率。兩個(gè)EBI(外部總線接口)支持十億字節(jié)以上的外部?jī)?nèi)存。
人機(jī)接口。片上人機(jī)接口外圍設(shè)備包括一個(gè)相機(jī)接口、TFT/STN LCD控制器、一個(gè)6通道音頻前端接口(AC97)、I2S和一個(gè)2D圖形協(xié)處理器,該處理器可減輕CPU的畫(huà)線、區(qū)塊傳輸、多邊形填充和剪輯功能負(fù)擔(dān)。
聯(lián)網(wǎng)和通信。聯(lián)網(wǎng)外圍設(shè)備包括一個(gè)12Mbps的USB主機(jī)和設(shè)備、10/100 Ethernet MAC(以太網(wǎng)媒體接入控制器)以及1 Mbps CAN(控制器局域網(wǎng))。另外還有四個(gè)USART(通用同步/異步收發(fā)器)、兩個(gè)50 Mbps SPI(同步平行接口)、CompactFlash、SDIO(MCI)和一個(gè)TWI(雙線接口),該TWI能被連接到諸如GPRS調(diào)制解調(diào)器和Wi-Fi等有線和無(wú)線通信模塊上。
外圍的DMA控制器使從外圍設(shè)備到內(nèi)存的數(shù)據(jù)傳輸無(wú)需使用CPU——基于ARM9的傳統(tǒng)處理器通過(guò)發(fā)出裝載-存儲(chǔ)指示(要求至少80個(gè)CPU 周期)實(shí)現(xiàn)內(nèi)存和外圍設(shè)備之間的一個(gè)字節(jié)的數(shù)據(jù)的傳輸。這些處理器以200 MHz(總線頻率為100 MHz)運(yùn)行,即使在內(nèi)存管理單元和指示/數(shù)據(jù)緩存控制器都被激活的狀態(tài)下,它們通常也會(huì)在傳輸達(dá)到約20 Mbps時(shí)達(dá)到其功能極限。
Atmel的at91sam9263整合了18個(gè)簡(jiǎn)單、硅高效(silicon-efficient)、單一周期的外圍PDC、五個(gè)DMA控制器(擁有對(duì)USB主機(jī)的突發(fā)模式支持)、Ethernet MAC、相機(jī)接口、LCD 控制器、2D圖形控制器,以及一個(gè)內(nèi)存到內(nèi)存的DMA控制器(支持突發(fā)模式、分散聚集和鏈表)。DMA控制器徹底減輕了外部串行端口和內(nèi)存之間的數(shù)據(jù)傳輸負(fù)擔(dān)。當(dāng)傳輸速度為20 Mbps時(shí),Atmel的SAM9263仍然有88%的MIPS可用于應(yīng)用執(zhí)行。
11層的總線和96千字節(jié)的片上SRAM(靜態(tài)存儲(chǔ)器)消除了帶寬瓶頸。Atmel在AT92SAM9263上配置了11條總線和96千字節(jié)的片上暫存SRAM。該SRAM可被部分地設(shè)定為緊密耦合式數(shù)據(jù)和指示內(nèi)存。這些總線可提供多條并列片上傳輸通道和總計(jì)41.6 Gbps的片上帶寬。
兩個(gè)EBI使ARM9 CPU和圖形處理器可同時(shí)、并行工作。at91sam9263擁有兩個(gè)EBI:一個(gè)是系統(tǒng)內(nèi)存接口,另一個(gè)則是人機(jī)接口。第二個(gè)接口使LCD控制器和CPU無(wú)需共享內(nèi)存,同時(shí)使可用的CPU MIPS增長(zhǎng)20%到40%。
【at91sam9263芯片資源】
1、融合了ARM926EJ-STM ARM THUMB的處理器
-DSP指令擴(kuò)展,用于JAVA 加速處理器的JAZELLE技術(shù)
-16K字節(jié)高速緩沖器,16K字節(jié)指令高速緩沖器,寫(xiě)緩沖器
-在220MHZ 220MIPS
-內(nèi)存管理單元
-EmbededICETM,調(diào)試通訊信道支持
-中等規(guī)模的執(zhí)行內(nèi)嵌式宏單元結(jié)構(gòu)
2、總線矩陣
-9個(gè)32位層矩陣,允許片上總線帶寬合計(jì)達(dá)28.8Gbps
-引導(dǎo)模式選項(xiàng),映像命令
3、嵌入式內(nèi)存
-一個(gè)128K字節(jié)的內(nèi)部ROM,以最大總線矩陣速度實(shí)現(xiàn)單周期訪問(wèn)
-一個(gè)80K字節(jié)的內(nèi)部SRAM,以處理器最大速度或最大總線矩陣速度實(shí)現(xiàn)單周期訪問(wèn)
-一個(gè)16K字節(jié)的內(nèi)部SRAM,以最大總線矩陣速度實(shí)現(xiàn)單周期訪問(wèn)
4、雙外部總線接口(EBI0-EBI1)
-EBI0支持SDRAM,靜態(tài)內(nèi)存,使能的ECC Nand Flash 和compact Flash。
-EBI1支持SDRAM,靜態(tài)內(nèi)存,使能的ECC Nand Flash。
5、DMA控制器
-充當(dāng)一個(gè)總線矩陣主控器
-內(nèi)嵌兩個(gè)單向信道,這兩個(gè)信道具備編程優(yōu)先權(quán)、地址產(chǎn)生、信道緩存和控制。
6、20個(gè)外設(shè)DMA控制器信道
7、LCD控制器
-支持主動(dòng)或被動(dòng)顯示
-在TFT模式下每個(gè)像素最大可以24bit,在STN彩色模式下每個(gè)像素最大可以16bit。
-在TFT模式下最大可以16M彩色,分辨率可達(dá)2048X2048,支持虛擬屏幕緩存。
8、2D圖形加速器
-直線拖動(dòng),塊轉(zhuǎn)移,多邊形填充,剪切,命令排隊(duì)。
9、攝像傳感器接口
-ITU-R BT.601/656外部接口,可編程幀捕捉速率。
-12bit接口,可以支持高靈敏度傳感器。
-SAV和EAV同步,preview path with scaler,YcbCr格式。
l0、USB2.0全速(12Mbit/秒)主機(jī)雙端口
-雙片上收發(fā)器
-集成的FIFO和專(zhuān)用的DMA信道。
l1、USB2.0全速(12Mbit/秒)設(shè)備端口
-片上收發(fā)器,2,432字節(jié)可配置的集成DPRAM。
l2、10/100 Base-T以太網(wǎng)MAC
-獨(dú)立的媒體接口或簡(jiǎn)化的獨(dú)立的媒體接口。
-有用于接收和發(fā)送的28字節(jié)FIFO和專(zhuān)用的DMA信道。
l3、全部特性的系統(tǒng)控制器,包括
-復(fù)位控制器,停止控制器。
-20個(gè)32bit電池后備寄存器,總計(jì)達(dá)80字節(jié)。
-時(shí)鐘發(fā)生器和電源管理控制器。
高級(jí)中斷控制器和調(diào)試單元。
周期間個(gè)計(jì)時(shí)器,看門(mén)狗計(jì)時(shí)器和雙實(shí)時(shí)計(jì)時(shí)器。
1)復(fù)位控制器(RSTC)
-基于兩個(gè)上電復(fù)位單元,復(fù)位源識(shí)別和復(fù)位輸出控制。
2)停止控制器(SHDWC)
-可編程管腳控制和喚醒電路。
3)時(shí)鐘發(fā)生器(CKGR)
-32768Hz低耗電振蕩器用于后備電源供應(yīng),提供一個(gè)永久的低速時(shí)鐘。
-3-20MHz片上振蕩器,兩個(gè)最大240MHz的PLL。
4)電源管理控制器(PMC)
-較低時(shí)鐘運(yùn)行模式,軟件可編程電源優(yōu)化容量。
-4個(gè)可編程外部時(shí)鐘信號(hào)。
5)高級(jí)中斷控制器(AIC)
-可單獨(dú)屏蔽,8級(jí)優(yōu)先權(quán),矢量中斷源。
-兩個(gè)外部中斷源和一個(gè)快速中斷源,虛假中斷保護(hù)。
6)調(diào)試單元(DBGU)
-2線UART并且支持調(diào)試通訊信道,可編程ICE存取阻止。
7)周期性間隔計(jì)時(shí)器(PIT)
-20bit間隔計(jì)時(shí)器加12bit間隔計(jì)數(shù)器。
8)看門(mén)狗計(jì)時(shí)器(WDT)
-加密保護(hù),僅一次性編程,視窗化的16-bit計(jì)數(shù)器運(yùn)行于低時(shí)鐘
9)兩個(gè)實(shí)時(shí)計(jì)時(shí)器(RTT)
-帶有16-bit預(yù)分頻器的自由備份計(jì)數(shù)器運(yùn)行于低時(shí)鐘
l4、5個(gè)32-bit并行輸入/輸出控制器(PIOA,PIOB,PIOC,PIOD和PIOE)
-160可編程的I/O線同時(shí)傳輸于外部設(shè)備2 I/O
-每一條I/O線的信號(hào)輸入、改變、中斷性能
-個(gè)別可編程的漏極開(kāi)路輸出、上拉電阻、同步輸出
-16全面可編程信息目標(biāo)郵箱,時(shí)間戳計(jì)數(shù)器
l5、兩個(gè)多媒體接口卡 (MCI)
– SD卡/SDIO 和 MultiMediaCard 驅(qū)動(dòng)
– 自動(dòng)化協(xié)議控制和用PDC快速自動(dòng)化數(shù)據(jù)傳輸
– 每一控制器帶有兩個(gè)SD卡槽支持
l6、兩個(gè)同步串行控制器(SSC)
–每一個(gè)接收器和轉(zhuǎn)換器有獨(dú)立時(shí)鐘和幀同步信號(hào)
– I2S模擬接口支持, 時(shí)間分區(qū)同步傳輸支持
– 以32-bit數(shù)據(jù)轉(zhuǎn)換器高速持續(xù)數(shù)據(jù)流性能
l7、一個(gè)AC97 控制器 (AC97C)
– 6-頻道信號(hào) AC97 模擬前端接口,插槽分配
l8、3個(gè)通用同步和異步收發(fā)器 (USART)
– 獨(dú)立的波特率發(fā)生器, IrDA紅外線調(diào)制、解調(diào),曼徹斯特編碼、解碼
– 支持 ISO7816 T0/T1 Smart 卡,硬件握手信號(hào), RS485 支持
l9、兩個(gè)主從串行總線接口(SPI)
– 8到16-bit 可編程的數(shù)據(jù)長(zhǎng)度,4個(gè)外部總線芯片選擇
– 每秒 90Mbits速度的同步通信
20、一個(gè)3頻道的16-bit 計(jì)時(shí)器和計(jì)數(shù)器(TC)
– 三個(gè)外部時(shí)鐘輸入端, 每個(gè)頻道提供2個(gè)多功能 I/O 插口
– 雙 PWM 發(fā)生器, 原理圖攫取,波形攫取模式,連接、斷開(kāi)性能
2l、一個(gè)四頻道16-bit PWM 控制器WMC)
22、一個(gè)兩線接口 (TWI)
– 主模式支持,支持所有的 Atmel EEPROMs
23、所有數(shù)字引腳的IEEE 1149.1 JTAG邊界掃描
24、電源供應(yīng)
–VDDCORE 和 VDDBU 電壓為1.08V 至1.32V
–VDDOSC 和 VDDPLL電壓為 3.0V 至 3.6V
–VDDIOP0 (外設(shè)I/Os)電壓為2.7V 至 3.6V
–VDDIOP (外設(shè) I/Os)電壓為11.65V 至 3.6V
–VDDIOM0/VDDIOM1 可編程電壓為 1.65V 至 1.95V 或者 3.0V 至 3.6V (內(nèi)存 I/Os)
at91sam9263 CAN驅(qū)動(dòng)調(diào)試心得
之前調(diào)試CAN設(shè)備,一般用的是一個(gè)從淘寶上買(mǎi)的USB轉(zhuǎn)CAN的調(diào)試工具,100K -- 800K波特率基本沒(méi)有什么問(wèn)題,我們也就沒(méi)有過(guò)多的去考慮一些細(xì)節(jié)的問(wèn)題。忽一日,某客戶說(shuō)我們的CAN驅(qū)動(dòng)有問(wèn)題,跟他們的CAN調(diào)試設(shè)備通信不上,疑慮ing.遂帶工具前往之,試之,果然。。。。
遂借其CAN調(diào)試工具回來(lái)捯飭,久未果 查其為ZLG公司的產(chǎn)品,遂前往之。遇到周立功公司一個(gè)大牛,CAN專(zhuān)家,號(hào)稱(chēng)沒(méi)有他解決不了的CAN問(wèn)題,事實(shí)證明,卻是有料,周立功公司的CAN 分析儀就是他們一幫人弄的,現(xiàn)在不做研發(fā),轉(zhuǎn)做服務(wù)了。拿Can分析儀查之,發(fā)現(xiàn)我們的CPU發(fā)出的CAN波形 波特率對(duì)不上,雖然設(shè)置為500K,可是由于CPU時(shí)鐘頻率非常規(guī)頻率,分頻以后,CAN時(shí)鐘再512K左右,ZLG公司的CAN調(diào)試工具是標(biāo)準(zhǔn)品,他們一般要求時(shí)序是比較嚴(yán)格的,所以我們的設(shè)備跟他的調(diào)試工具之間通信通不上,但是網(wǎng)上購(gòu)買(mǎi)的USB轉(zhuǎn)CAN的調(diào)試工具則將SJW域設(shè)置的比較大 3或者4 左右,可以跟大部分的CAN通信上,即使是對(duì)方的CAN波特率不精確,存在比較大的誤差。
CAN問(wèn)題絕大部分呢,應(yīng)該就是出在波特率的精確度上,但是一般情況下沒(méi)有那么精準(zhǔn)的測(cè)試儀器,所以搞的大家一頭霧水。適當(dāng)調(diào)整SJW 同步跳轉(zhuǎn)寬度的大小,可以一定程度的解決這個(gè)問(wèn)題,但是不是最佳的解決方案。雖然現(xiàn)象上看到,哦,通信正常了,我發(fā)的包對(duì)方可以收到,對(duì)方發(fā)的數(shù)據(jù)包我也可以收到,但是,事實(shí)是,這里面有了多次的重發(fā),得益于CAN協(xié)議,重發(fā),應(yīng)答等等。
下面簡(jiǎn)單描述下CAN波特率的分析
比如說(shuō)500K波特率,一個(gè)比特被分為16個(gè)時(shí)間因子
500K * 16 = 8M
所以CAN時(shí)鐘應(yīng)該盡量使8M的倍數(shù)。誤差盡量小。
同理推算其他波特率跟時(shí)鐘的對(duì)應(yīng)關(guān)系。
在我們的9263應(yīng)用中,MCLK = PLLA/2,CAN時(shí)鐘從MCLK分頻而來(lái)。
所以PLLA的取值應(yīng)為16M的整數(shù)倍。我們的PLLA一般設(shè)置再200M---150M,所以PLLA可取192M 176M 160M等。
WinCE下設(shè)置就比較簡(jiǎn)單了,Eboot啟動(dòng)后,空格可以進(jìn)入eboot配置菜單,可以直接設(shè)置CPU的主頻 跟 分頻,不贅述。
裸奔的程序 則需要自己去設(shè)置倍頻跟分頻系數(shù),從ATMEL官網(wǎng)下載了PLL計(jì)算工具,幫了不上忙,可能沒(méi)有那么精準(zhǔn),但是盡量接近就好。
#define BOARD_MCK ((16367660 * 98 / 10) / 2) /*160M*/
如上設(shè)置為160M的設(shè)置
除了這個(gè)宏定義的修改以為,在board_lowlevel.c中也需要做一些修改,
#define BOARD_MULA (AT91C_CKGR_MULA (97 《《 16))
#define BOARD_DIVA (AT91C_CKGR_DIVA 10)
就是那兩個(gè)系數(shù),注意分頻系數(shù)不變,但是倍頻系數(shù)減一了,原因看數(shù)據(jù)手冊(cè)就明白。
原來(lái)以為這樣就可以了,可是還有一個(gè)地方忽略了,看代碼
void LowLevelInit( void )函數(shù)中
void LowLevelInit( void )
{
……。
#if !defined(sdram)
/* Initialize main oscillator
初始化主振蕩器,時(shí)鐘等一系列操作
#endif //#if !defined(sdram)
。。。。。。。。。。。
}
整個(gè)過(guò)程包含在了對(duì)sdram宏的判斷內(nèi),如果定義了sdram則不做下面的處理,乖乖,你不做這個(gè)處理怎么可以呢,遂注釋掉上面兩個(gè)宏定義。
這個(gè)宏定義不是在文件中定義的,而是在編譯器的工程設(shè)置里面,
Options-àC/C++ Compiler Preprocessor選項(xiàng)卡,最下面 Defined symbols
也可以直接把sdram去掉。
一直在糾結(jié)SDRAM的初始化是在什么地方進(jìn)行的?
調(diào)試心得之關(guān)于SPI啟動(dòng)的問(wèn)題
到底是什么問(wèn)題呢:SPI DATA FLASH本身的質(zhì)量有問(wèn)題造成的。
反映的現(xiàn)象是:從SPI DATAFLASH的0地址讀取數(shù)據(jù)是沒(méi)有任何問(wèn)題的,但是如果從中間任何一段讀取數(shù)據(jù),就有嚴(yán)重的地址偏移問(wèn)題。
調(diào)試過(guò)程及步驟如下:
原來(lái)認(rèn)為是CPU(AT91SAM9263有A版本和B版本)版本有問(wèn)題,造成無(wú)法讀取FLASH造成,反饋的現(xiàn)象是:
當(dāng)DATA FLASH啟動(dòng)后,會(huì)將第一段代碼EBOOT.nb0,存放于DATA FLASH的0X5000偏移地址,加載后,會(huì)進(jìn)行WINCE的引導(dǎo)。
但是實(shí)際結(jié)果是:
================================= 》RomBOOT 》RomBOOT 》RomBOOT 》
INFO: Low Level Init: OK Starting main… AT45DB321 …
Load CE-BOOT from Flash to SDRAM Jumping… -
==================================
從現(xiàn)象上看,DATA FLASH已經(jīng)找到了,也就說(shuō)明SPI線路是正確的,但是為什么讀的數(shù)據(jù)有問(wèn)題呢?
懷疑問(wèn)題有如下幾個(gè):
第一:DATA FLASH的SPI本身硬件有問(wèn)題,可能存在干擾。
第二:在從DATA FLASH拷貝數(shù)據(jù)到SDRAM中,出現(xiàn)錯(cuò)誤,數(shù)據(jù)不正確,SDRAM初始化有問(wèn)題。 第三:因我們的SPI線路和以前的版本不同,采用了MAX3002進(jìn)行了隔開(kāi),懷疑MAX3002本身造成SPI線路的 不穩(wěn)定。
第四:CPU版本有問(wèn)題,AT91SAM9263從A到B版本,SPI已經(jīng)改過(guò)了,就我知道的是AT91SASM9263 B版本的SPI,需要兩次復(fù)位才可以工作。
一個(gè)一個(gè)懷疑的問(wèn)題進(jìn)行驗(yàn)證:
一:SAM BA 2.8可以對(duì)SDRAM進(jìn)行初始化,都可以進(jìn)行讀寫(xiě),說(shuō)明SDRAM本身硬件上無(wú)問(wèn)題。
第二:DATA FLASH ,SAMBA 2.8都可以進(jìn)行讀寫(xiě),也無(wú)任何問(wèn)題,同時(shí)啟動(dòng)代碼可以正確執(zhí)行。那么就應(yīng)該可以證明SPI部分是能夠工作的,但是問(wèn)題在于AT91SAM9263 B版本內(nèi)部的ROM BOOT和AT91SAM9263 A版本的ROM BOOT有不同,那么就證明說(shuō):在SPI這個(gè)部分的初始化部分做了修正。所以,找到AT91SAM9263 B版本的SPI部分的ERR DATA SHEET。找問(wèn)題。改了半天代碼,問(wèn)題還是依舊。
第三:實(shí)在沒(méi)有辦法了,2008年11月18日,找到百特的雷工,初步認(rèn)定是CPU版本的問(wèn)題,我自己認(rèn)為自己的代碼水平比較落后,請(qǐng)求雷工幫忙,最后驗(yàn)證結(jié)果如下:
從DATA FLASH讀出的數(shù)據(jù),放到SDRAM后出現(xiàn)了問(wèn)題,我們以前的老板子,是無(wú)問(wèn)題的??梢哉_將數(shù)據(jù)從DATA FLASH讀出來(lái),然后,顯示在串口上。每次從DATA FLASH中讀10個(gè)字節(jié),發(fā)現(xiàn)讀出來(lái)的數(shù)據(jù)每次都是一致的,但是就是不正確。
沒(méi)有辦法,雷工也是好久沒(méi)有寫(xiě)代碼了,只好約好第二天,到白特找他們的工程師劉工,劉工是我老鄉(xiāng),真的夠朋友,那天晚上搞到半夜,最后驗(yàn)證出來(lái),現(xiàn)象是:從DATA FLASH偏移0X8000地址中讀取的數(shù)據(jù)放到SDRA M中,某一個(gè)位置找到差不多的數(shù)據(jù)。最后給出結(jié)果:可能是AT91SAM9263 B版本可能有問(wèn)題,但是最大的問(wèn)題是:SDRAM工作后,影響了SPI的穩(wěn)定性。
第四:太晚了,大家都各自回家了(這個(gè)時(shí)候我找百特定好了A版本的CPU,說(shuō)是他們現(xiàn)在沒(méi)貨,第二天能送來(lái)),實(shí)在是沒(méi)有任何頭緒了,沒(méi)有辦法,趕快定了CPU,AT91SAM9263 A版本,恰好,百特沒(méi)有貨,他們老板從香港定來(lái)后,我們拿到,趕快去貼上,這個(gè)過(guò)程不過(guò)是1天的時(shí)間,下午了,下午3點(diǎn)就搞好,帶上測(cè)試軟件,跑到李工(我們焊接的師傅)那里,把工具全部架好,一測(cè)試,郁悶死了,竟然還是不行。天呀……
第五:看來(lái)A版本也不行,那只能懷疑是板的布線有問(wèn)題了,因?yàn)闆](méi)有別的辦法可以想了,這個(gè)時(shí)候,我反倒放松了,因?yàn)槲艺J(rèn)為問(wèn)題已經(jīng)找到了。但是,到底是SPI的哪條線受到了干擾呢?我對(duì)百特劉工的話深信不已。實(shí)在沒(méi)有辦法,上午我趕快拿著A版本的板子跑到百特,找到劉工,(想把他驗(yàn)證的結(jié)果再重演一下,劉工改了半天,發(fā)現(xiàn)是從DATA FALSH的0地址,讀出來(lái)數(shù)據(jù)放到SDRAM中是無(wú)問(wèn)題的,一直也懷疑SDARM初始化有問(wèn)題)根據(jù)這幾天的測(cè)試結(jié)果,發(fā)現(xiàn)有一個(gè)疑點(diǎn),我發(fā)現(xiàn)A版本的芯片,我寫(xiě)了一個(gè)小程序,從DATA FLASH中讀取數(shù)據(jù)放到SRAM中也是不正確的。而且,和以前的測(cè)試結(jié)果完全一樣。一直懷疑和芯片有關(guān)系,現(xiàn)在看,可以完全排除芯片AT91SAM9263的問(wèn)題了。
第六:從DATA FLASH中讀取數(shù)據(jù)放到SRAM中也是不正確的(我把SDRAM關(guān)閉了),我就推翻了劉工說(shuō)的SDRAM對(duì)SPI DATA FLASH有干擾想法。
劉工發(fā)現(xiàn)是從DATA FALSH的0地址,讀出來(lái)數(shù)據(jù)放到SDRAM中有大部分是相同的,這次把代碼全部恢復(fù)過(guò)來(lái),把DATA FLASH的0地址的數(shù)據(jù)放到0X23F00000(LINUX引導(dǎo)程序U-BOOT的地址)-0X8000的位置,這樣,就可以保證在0X23F00000的位置上,有正確的U-BOOT程序。但是,等程序運(yùn)行起來(lái),還是沒(méi)有得到正確的啟動(dòng)結(jié)果。有可能是有部分?jǐn)?shù)據(jù)讀出來(lái)后,還是有不正確的。
第七,實(shí)在是沒(méi)有辦法了,我們開(kāi)始懷疑DATA FLASH有問(wèn)題,恰好,我也問(wèn)過(guò)我們的LISA(LISA是我們的采購(gòu),我原來(lái)一直認(rèn)為這個(gè)DATA FLASH是從百特采購(gòu)的,最后發(fā)現(xiàn)這個(gè)東西是從市場(chǎng)上采購(gòu)來(lái)的,我很暈了,但是當(dāng)時(shí)問(wèn)LISA的時(shí)候,我沒(méi)有放在心上,LISA說(shuō)這個(gè)芯片是原裝的),恰好我?guī)狭艘粋€(gè)我們老版本的板子,將老版本的板的DATA FLASH換上去后,完全OK了。
評(píng)論