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

正文內(nèi)容

嵌入式汽車定位系統(tǒng)開發(fā)研究-底層研究畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2025-06-28 13:18本頁(yè)面
  

【正文】 MEM_FLASH_ADDR1 = CMD_UNLOCK_BYPASS。MEM_FLASH_ADDR1 = CMD_PROGRAM。 //*addr = CMD_PROGRAM。*addr = data。///* wait until flash is ready *///chip = 0。//do {// result = *addr。// /* check timeout */// if (get_timer_masked () CONFIG_SYS_FLASH_ERASE_TOUT) {// chip = ERR | TMO。// break。// }湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 23 // if (!chip amp。amp。 ((result amp。 0x80) == (data amp。 0x80)))// chip = READY。// if (!chip amp。amp。 ((result amp。 0xFFFF) amp。 BIT_PROGRAM_ERROR)) {// result = *addr。// if ((result amp。 0x80) == (data amp。 0x80))// chip = READY。// else// chip = ERR。// }//} while (!chip)。//*addr = CMD_READ_ARRAY。//if (chip == ERR || *addr != data)// rc = ERR_PROG_ERROR。while (1){ if ((*addr amp。 0x40) != (*addr amp。 0x40)) continue。 if ((*addr amp。 0x80) == (data amp。 0x80)) { rc = ERR_OK。 break。 }}修改完后重新編譯 uboot,下載 文件到 RAM 中運(yùn)行,這時(shí)候 uboot 已經(jīng)對(duì)我們開發(fā)板上的 Nor Flash 完全支持了。(6)準(zhǔn)備進(jìn)入 uboot 的第二階段(在 uboot 中添加對(duì)我們開發(fā)板上 Nand Flash 的支持)。目前 uboot 中還沒(méi)有對(duì) 2440 上 Nand Flash 的支持,也就是說(shuō)要想 uboot 從 Nand Flash上啟動(dòng)得自己去實(shí)現(xiàn)了。1 在 include/configs/ 頭文件中定義 Nand 要用到的宏和寄存器,如下: define CONFIG_S3C2440_NAND_BOOT 1define NAND_CTL_BASE 0x4E000000 湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 24 define STACK_BASE 0x33F00000 //定義堆棧的地址define STACK_SIZE 0x8000 //堆棧的長(zhǎng)度大小define oNFCONF 0x00 define oNFCONT 0x04 define oNFADDR 0x0c define oNFDATA 0x10 define oNFCMD 0x08 define oNFSTAT 0x20 define oNFECC 0x2c 2 修改 cpu/arm920t/ 這個(gè)文件,使 uboot 從 Nand Flash 啟動(dòng),在上一節(jié)中提過(guò),uboot 默認(rèn)是從 Nor Flash 啟動(dòng)的。修改部分如下: ifndef CONFIG_SKIP_LOWLEVEL_INIT bl cpu_init_critendif if 0 //屏蔽掉 uboot 中的從 Nor Flash 啟動(dòng)部分ifndef CONFIG_SKIP_RELOCATE_UBOOT............endif /* CONFIG_SKIP_RELOCATE_UBOOT */endif ifdef CONFIG_S3C2440_NAND_BOOT mov r1, NAND_CTL_BASE //復(fù)位 Nand Flash ldr r2, =( (712)|(78)|(74)|(00) ) str r2, [r1, oNFCONF] //設(shè)置配置寄存器的初始值,參考 s3c2440 手冊(cè) ldr r2, [r1, oNFCONF] ldr r2, =( (14)|(01)|(10) ) str r2, [r1, oNFCONT] //設(shè)置控制寄存器 ldr r2, [r1, oNFCONT]湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 25 ldr r2, =(0x6) //RnB Clear str r2, [r1, oNFSTAT] ldr r2, [r1, oNFSTAT] mov r2, 0xff //復(fù)位 mand strb r2, [r1, oNFCMD] mov r3, 0 //等待nand1: add r3, r3, 0x1 cmp r3, 0xa blt nand1nand2: ldr r2, [r1, oNFSTAT] //等待就緒 tst r2, 0x4 beq nand2 ldr r2, [r1, oNFCONT] orr r2, r2, 0x2 //取消片選 str r2, [r1, oNFCONT] ldr sp, DW_STACK_START mov fp, 0 ldr r0, =TEXT_BASE mov r1, 0x0 //傳遞給 C 代碼的第二個(gè)參數(shù):Nand Flash 的起始地址 mov r2, 0x30000 //傳遞給 C 代碼的第三個(gè)參數(shù):uboot 的長(zhǎng)度大小(128k) bl nand_read_ll tst r0, 0x0 beq ok_nand_readbad_nand_read: loop2: b loop2 //infinite loop湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 26 ok_nand_read: mov r0, 0 ldr r1, =TEXT_BASE mov r2, 0x400 //4 bytes * 1024 = 4Kbytesgo_next: ldr r3, [r0], 4 ldr r4, [r1], 4 teq r3, r4 bne notmatch subs r2, r2, 4 beq stack_setup bne go_nextnotmatch: loop3: b loop3 //infinite loopendif //CONFIG_S3C2440_NAND_BOOT_start_armboot: .word start_armboot .align 2DW_STACK_START: .word STACK_BASE+STACK_SIZE4 cpu/arm920t/3 在 board/samsung/my2440/目錄下新建一個(gè) 文件,在該文件中來(lái)實(shí)現(xiàn)上面匯編中要調(diào)用的 nand_regeditboard/samsung/my2440/ //新建一個(gè) 文件,記得保存 ad_ll 函數(shù),代碼如下: include define NF_BASE 0x4E000000 //Nand Flash 配置寄存器基地址define __REGb(x) (*(volatile unsigned char *)(x))define __REGi(x) (*(volatile unsigned int *)(x))define NFCONF __REGi(NF_BASE + 0x0 ) 湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 27 define NFCONT __REGi(NF_BASE + 0x4 ) define NFCMD __REGb(NF_BASE + 0x8 ) define NFADDR __REGb(NF_BASE + 0xC ) define NFDATA __REGb(NF_BASE + 0x10) define NFSTAT __REGb(NF_BASE + 0x20) define NAND_CHIP_ENABLE (NFCONT amp。= ~(11)) //Nand 片選使能define NAND_CHIP_DISABLE (NFCONT |= (11)) //取消 Nand 片選define NAND_CLEAR_RB (NFSTAT |= (12))define NAND_DETECT_RB { while(! (NFSTATamp。(12)) )。}define NAND_SECTOR_SIZE 512define NAND_BLOCK_MASK (NAND_SECTOR_SIZE 1)/* low level nand read function */int nand_read_ll(unsigned char *buf, unsigned long start_addr, int size){ int i, j。 if ((start_addr amp。 NAND_BLOCK_MASK) || (size amp。 NAND_BLOCK_MASK)) { return 1。 //地址或長(zhǎng)度不對(duì)齊 } NAND_CHIP_ENABLE。 //選中 Nand 片選 for(i=start_addr。 i (start_addr + size)。) { NAND_CLEAR_RB。 NFCMD = 0。 NFADDR = i amp。 0xFF。 NFADDR = (i 9) amp。 0xFF。 NFADDR = (i 17) amp。 0xFF。 NFADDR = (i 25) amp。 0xFF。湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 28 NAND_DETECT_RB。 for(j=0。 j NAND_SECTOR_SIZE。 j++, i++) { *buf = (NFDATA amp。 0xFF)。 buf++。 } } NAND_CHIP_DISABLE。 //取消片選信號(hào) return 0。} 4 在 board/samsung/my2440/Makefile 中添加 的編譯選項(xiàng),使他編譯到uboot 中,如下: COBJS := 還有一個(gè)重要的地方要修改,在 cpu/arm920t/ 中,這個(gè) uboot 啟動(dòng)連接腳本文件決定了 uboot 運(yùn)行的入口地址,以及各個(gè)段的存儲(chǔ)位置,這也是鏈接定位的作用。添加下面兩行代碼的主要目的是防止編譯器把我們自己添加的用于 nandboot 的子函數(shù)放到 4K 之后,否則是無(wú)法啟動(dòng)的。如下: .text :{ cpu/arm920t/ (.text) board/samsung/my2440/ (.text) board/samsung/my2440/ (.text) *(.text)}最后編譯 uboot,生成 文件。然后先將 mini2440 開發(fā)板調(diào)到 Nor 啟動(dòng)檔,利用 supervivi 的 a 命令將 下載到開發(fā)板的 Nand Flash 中,再把開發(fā)板調(diào)到 Nand 啟動(dòng)檔,(7)現(xiàn)在進(jìn)入 uboot 的第二階段(添加 Nand Flash(K9F1208U0C)的有關(guān)操作支持)。在上一節(jié)中我們說(shuō)過(guò),通常在嵌入式 bootloader 中,有兩種方式來(lái)引導(dǎo)啟動(dòng)內(nèi)核:從 Nor 湖南科技大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 29 Flash 啟動(dòng)和從 Nand Flash 啟動(dòng),但不管是從 Nor 啟動(dòng)或者從 Nand 啟動(dòng),進(jìn)入第二階段以后,兩者的執(zhí)行流程是相同的。當(dāng) uboot 的 運(yùn)行到“_start_armboot: .word start_armboot”時(shí),就會(huì)調(diào)用lib_arm/ 中的 start_armboot 函數(shù),至此 uboot 正式進(jìn)入第二階段。下面我們結(jié)合代碼來(lái)分析一下 uboot 在第二階段的執(zhí)行流程:1  lib_arm/ 文件中的 start_armboot 函數(shù)調(diào)用 drivers/mtd/nand/ 文件中的 nand_init 函數(shù). 2 nan
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1