freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于cortex-a8nandflash的設(shè)計與現(xiàn)實本科論文(編輯修改稿)

2025-07-03 15:33 本頁面
 

【文章內(nèi)容簡介】 FFFF 128MB SROM Bank 0 0x9800_0000 0x9FFF_FFFF 128MB SROM Bank 0 0xA000_0000 0xA7FF_FFFF 128MB SROM Bank 0 0xAB00_0000 0xAFFF_FFFF 128MB SROM Bank 0 0xC000_0000 0xCFFF_FFFF 256MB MP3_SRAM output 0xD000_0000 0xD000_FFFF 64KB IROM 0xD001_0000 0xD001_FFFF 64KB Reserved 0xD002_0000 0xD003_7FFF 96KB IRAM 0xDB00_0000 0xDFFF_FFFF 512MB DMZ ROM (二) 完整的啟動序列 系統(tǒng)剛啟動時,會運行 IROM 中的固化代碼,進行一些通用的初始化,具體步驟包括: 第一步 關(guān)閉看門狗; 第二步 初始化 icache; 第三步 初始化堆棧; 第四步 設(shè)置時鐘; 第五步 判斷啟動設(shè)備 (nand/sd/onenand 等 ),檢查校驗和,然后從啟動設(shè)備中拷貝前 16K 的 代碼到 IRAM 的 0xD0020xx0 處; 第六步 若是安全模式啟動,則進行完整性檢查; 第七步 跳轉(zhuǎn)到 IRAM 的 0xD0020xx0 地址上繼續(xù)運行; (三) 使用 MiniTools 燒寫裸機程序 用裸機程序燒寫到 sd卡上,然后通過 sd啟動來運行我們的程序,這樣做缺點太多。 MiniTools 是一個燒寫下載工具,其簡要特性如下: 中國傳媒大學南廣學院本科畢業(yè)論文 7 1) 無需串口連接 : MiniTools 完全采用 USB 線傳輸數(shù)據(jù),無需串口,連接更簡單,桌面更整潔。 2) 真正一鍵燒寫: MiniTools 真正實現(xiàn)一鍵燒寫,燒寫文件可單選,也 可全選,不僅可以燒寫系統(tǒng) (android, linux, wince),還是燒寫裸機,下載和燒寫一氣呵成。 3) 快速啟動 : 以前的燒寫方式需要不斷來回插拔 sd 卡,這樣不但容易損壞卡座,而且效率低下;現(xiàn)在使用 MiniTools,所有操作均在 PC上完成,無需拔卡,無需接觸開發(fā)板,立馬查看到程序的運行效果,可以令開發(fā)更加快速方便。 4) 集成串口助手 :借鑒了國內(nèi)其他類似串口軟件功能,更加方便實用,比如可自動定時發(fā)送任何數(shù)據(jù)或文件等。 5) 支持 32/64bit電腦: MiniTools安裝程序已經(jīng)包含 32/64bit電腦所需的 USB下載驅(qū)動,可通吃所有 Windows 平臺,如 WinXP, Win7 等;底層驅(qū)動采用 Google 官方提供的 Fastboot,因此更加穩(wěn)定可靠,不會藍屏。 6) 跨平臺:采用 Qt4 開發(fā),可以支持各種 Windows 系統(tǒng)或 Linux 發(fā)行版。 燒寫有兩種方式:第一種方式下載到 DRAM,第二種方式下載到 NAND FLASH, 方式一 下載到 DRAM,其設(shè)置方式如圖 5: 圖 5 平臺工具 先選中上方的 ” Download and run“,設(shè)置好下載地址,并且需要將地址發(fā)送給cpu“ RAMAddress(Download/Loading)”,選擇要運行的裸機程序, 再點擊“下載運行”就可以了。 MiniTools 首先會把裸機程序下載到 DRAM 的地址 0x20xx0000 處,然后跳中國傳媒大學南廣學院本科畢業(yè)論文 8 轉(zhuǎn)到該地址上運行裸機程序,所以只要 PC 上一點擊“下載運行”就可以馬上看到開發(fā)板上裸機程序的運行效果了。 對于 Mini210S 開發(fā)板, MiniTools 支持的裸機程序下載地址是 :0x20xx0000~0x3F5FFFFF(共 502M) ,剩下的 0x3F600000~0x3FFFFFFF 的 10M空間用來運行 Superboot, 502M 的空間足夠讓我們運行任何裸機程序了。 注意:不同的 CPU 會有不同的起始地址,在此為 0x20xx0000 。 第二種方式是下載到 NAND FLASH,其設(shè)置方式如下圖 6: 圖 6 平臺工具 選中“ Install to NAND Flash”,設(shè)置好加載地址“ RAM Address”,選擇使用 Superboot加載裸機程序,并選擇要加載的裸機程序,點擊“開始燒寫”; MiniTools首先把Superboot和裸機程序都燒寫到 NAND FLASH中,然后點擊“快速啟動”,這時 NAND FLASH中的 Superboot會把裸機程序拷貝到 DRAM的 0x20xx0000地址處,然后跳轉(zhuǎn)到該地址上運行裸機程序,這樣我們就可以在開發(fā)板上觀察裸機的運行效果了。 上面兩種方式都可以燒寫運行我們的裸機程序,由于方式一較為便捷,并且不會損壞 NAND Flash中的原有數(shù)據(jù),本設(shè)計所涉及的所有的程序都統(tǒng)一采用了第一種方式進行燒寫和運行。 四、 NAND FLASH 驅(qū)動的具體的實現(xiàn) (一) NAND FLASH 壞塊的處理 中國傳媒大學南廣學院本科畢業(yè)論文 9 NAND FLASH 的固有原因 ,壞塊不可避免 ,所以我們的驅(qū)動必須具有壞塊管理功能 ,壞塊又分為出廠壞塊和 使用中產(chǎn)生的壞塊 ,NAND FLASH 一般出廠時會有壞塊,生產(chǎn)廠商會標記出出廠壞塊 ,對應(yīng)的標記位在初始化的過程中會被讀出來 ,不同廠商的壞塊標記也不都相同 ,為了考慮兼容性 ,我們的驅(qū)動必須考慮常用的所有情況 ,如果是壞塊就會記錄下來 ,以后的使用中不再使用這個壞塊 。當我們在日常正常操作過程中 ,出現(xiàn)三次失敗對一個壞塊的操作 ,我們就認為這個塊壞了 ,這就是使用中壞塊 ,將這個塊標記為壞塊 ,并從預(yù)留的塊中找一塊來替換它 ,預(yù)留塊是事先預(yù)留用來進行壞塊替換的塊 ,預(yù)留塊不直接參加讀寫 ,所以預(yù)留塊的大小不計算在整個 NAND FLASH 可以使用的存儲空間中 ,這樣設(shè)計的原因是避免了因為壞塊的出現(xiàn)而造成的存儲容量的不斷減小 ,對于用戶來說更容易接受 ,預(yù)留塊的多少可以在驅(qū)動中根據(jù)需求來調(diào)整。在我們的設(shè)計中 ,我們預(yù)留 Flash 芯片容量, 10%的容量大小的塊來作為壞塊替換預(yù)留塊。 對于 MLC規(guī)格的 NAND FLASH芯片 ,讀操作也可能給塊中的數(shù)據(jù)帶來不確定性 ,這種干擾稱作讀操作帶來的干擾 ,為了避免這種干擾 ,我們會根據(jù)芯片說明書中建議的讀次數(shù) ,當一個塊的讀次數(shù)達到了建議值 ,我們會將該塊的內(nèi)容擦除掉再重新寫回,所以在驅(qū)動中我們也必須保留每個塊的讀次數(shù)。 (二) 相關(guān)程序代碼分析 代碼中 NAND Flash 初始化函數(shù) nand_init(),代碼如下 void nand_init(void) { //1. 配置 NAND Flash NFCONF =(TACLS12)|(TWRPH08)|(TWRPH14)|(03)|(02)|(11)|(00)。 NFCONT =(018)|(017)|(016)|(010)|(09)|(08)|(07)|(06)|(0x31)|(10)。 // 2. 配置引腳 MP0_1CON = 0x22333322。 MP0_2CON = 0x00002222。 MP0_3CON = 0x22222222。 // 3. 復(fù)位 nand_reset()。 } 共 3 個步驟: 第一步 配置 NAND FLASH,主要是設(shè)置 NFCONF 和 NFCONT 兩個寄存器。 第二步 配置引腳,用于 NAND Flash 相關(guān)功能; 第三步 復(fù)位 ;復(fù)位代碼如下: 中國傳媒大學南廣學院本科畢業(yè)論文 10 static void nand_reset(void) { nand_select_chip()。 nand_send_cmd(NAND_CMD_RES)。 nand_wait_idle()。 nand_deselect_chip()。 } NAND Flash 的復(fù)位操作共 4 個步驟: ( 1) 發(fā)片選,實質(zhì)就是 NFCONT amp。= ~(11)。往 NFCONT 的 bit[1]寫 0; ( 2) 發(fā)命令復(fù)位命令 NAND_CMD_RES (0xff)。實質(zhì)就是 NFCMMD = cmd。將命令寫到NFCMMD 寄存器; (3) 等待 NAND Flash 就緒;實質(zhì)就是 while( !(NFSTAT amp。 (BUSY4)) ),讀 NFSTAT的 bit[4]檢查 NAND Flash 是否就緒; (4) 取消片選,實質(zhì)就是 NFCONT |= (11)。 往 NFCONT 的 bit[1]寫 1; Flash 讀 ID 函數(shù) nand_read_id(),核心代碼如下 void nand_read_id(void) { nand_id_info nand_id。 // 1. 發(fā)片選 nand_select_chip()。 // 2. 讀 ID nand_send_cmd(NAND_CMD_READ_ID)。 nand_send_addr(0x00)。 nand_wait_idle()。 = nand_read()。 = nand_read()。 = nand_read()。 = nand_read()。 = nand_read()。 printf(NDFH:mcode=%x,devicecode=%x\r\n,)。 nand_deselect_chip()。 } 中國傳媒大學南廣學院本科畢業(yè)論文 11 Device DeviceCode(2nd Cycle) 3rd Cycle 4th Cycle 5th Cycle K9K8G08U0A D3h 51h 95h 58h K9WAG08U1A Same as K9K8G08U0A in it K9NBG08U5A 圖 7 NAND Flash 讀 ID操作 根據(jù)上圖 7, NAND Flash 的讀 ID 操作共 5 個步驟: 第一步 發(fā)片選; 第二步 發(fā) 讀 ID 命令 NAND_CMD_READ_ID(0x90); 第三步 發(fā)地址 0x00;調(diào)用函數(shù) nand_send_addr(); 第四步 等待 NAND Flash 就緒; 第五步 讀 ID;調(diào)用了 nand_read()函數(shù),實質(zhì)就是讀 NFDATA 寄存器; 下面是 nand_send_addr()的代碼: { // 列地址,即頁內(nèi)地址 col = addr % NAND_PAGE_SIZE。 // 行地址,即頁地址 row = addr / NAND_PAGE_SIZE。 // Column Address A0~A7 NFADDR = col amp。 0xff。 for(i=0。 i10。 i++)。 // Column Address A8~A11 NFADDR = (col 8) amp。 0x0f。 for(i=0。 i10。 i++)。 // Row Address A12~A19 NFADDR = row amp。
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1