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

正文內(nèi)容

基于arm與大容量nandflash的gnss數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-11-03 15:37本頁(yè)面

【導(dǎo)讀】用相結(jié)合后的產(chǎn)物。它可以根據(jù)應(yīng)用需求對(duì)軟硬件進(jìn)行適當(dāng)裁剪,以滿(mǎn)足應(yīng)用系統(tǒng)對(duì)功。能、可靠性、成本、體積等的需求。作為一種新興的嵌入式RISC微處理器,ARM微處理。器目前已經(jīng)成為嵌入式系統(tǒng)中應(yīng)用最為廣泛的微處理器。GPS定位導(dǎo)航技術(shù)與計(jì)算機(jī)技術(shù)的融合在近幾年來(lái)現(xiàn)代信息通信領(lǐng)域內(nèi)發(fā)展迅速。本文設(shè)計(jì)開(kāi)發(fā)了一款基于ARM處理器與GPS接收模塊的GNSS數(shù)據(jù)采集系統(tǒng)。其次,設(shè)計(jì)實(shí)現(xiàn)了GPS模塊與ARM處理器的通信功能、人機(jī)交互的控制功能。各模塊的設(shè)計(jì)包括接口驅(qū)動(dòng)程序和應(yīng)用程序兩部分。GPS定位衛(wèi)星數(shù)據(jù),并通過(guò)RS-232接口向處理器傳輸數(shù)據(jù);處理器處理數(shù)據(jù)并進(jìn)行存儲(chǔ);統(tǒng)未來(lái)改進(jìn)目標(biāo)的設(shè)想。本系統(tǒng)采用的是現(xiàn)成的硬件平臺(tái),所以要做的工作主要是軟件

  

【正文】 址、頁(yè)地址、和塊地址以及上下半頁(yè)地址實(shí)現(xiàn)的。只是實(shí)際讀寫(xiě)時(shí)采用以頁(yè)為單位讀寫(xiě)比較方便。 文件管理模塊 在軟件方案論證中已經(jīng)論述,本系統(tǒng)的文件管理系統(tǒng)是根據(jù)本課題需求和硬件特點(diǎn) XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 15 頁(yè) 共 43 頁(yè) 編寫(xiě)的,沒(méi)有采用現(xiàn)有的文件系統(tǒng),如 FATFS, FAT16, FAT32, YAFF2 等。該文件系統(tǒng)的主要功能包括文件的 flash 格式化,文件系統(tǒng)的初始化,文件的 創(chuàng)建,讀,寫(xiě),刪除等基本操作,但沒(méi)有實(shí)現(xiàn)目錄的創(chuàng)建功能。它主要分為 3個(gè)模塊:驅(qū)動(dòng)接口模塊,數(shù)據(jù)組織結(jié)構(gòu)模塊,應(yīng)用層模塊。 ⑴ 驅(qū)動(dòng)接口模塊 驅(qū)動(dòng)接口模塊主要是由若干個(gè) Nand Flash 讀、寫(xiě)、擦除等基本驅(qū)動(dòng)函數(shù)組成,這些驅(qū)動(dòng)函數(shù)已經(jīng)在 NAND FLASH 模塊中分析過(guò),這里不再累述。 ⑵ 數(shù)據(jù)組織結(jié)構(gòu)模塊 文件管理指的主要是以文件的形式管理 Nand Flash 內(nèi)部的數(shù)據(jù)信息。對(duì)于整個(gè)Flash 有個(gè)與之對(duì)應(yīng)的文件信息結(jié)構(gòu)體,它包含文件的總數(shù),文件的總?cè)萘?,存?chǔ)介質(zhì)的剩余空間和一個(gè)文件結(jié)構(gòu)體數(shù)組。如下所 示: typedef __packed struct { u8 FileNum。//文件總數(shù) File FileIndex[FILECOUNT]。 u32 AllFileSize。 //所有文件大小 單位 BYTE u32 FreeSize。//剩余空間 單位 BYTE }FsInfo。 其中的結(jié)構(gòu)體數(shù)組 File FileIndex[FILECOUNT] 中的每一個(gè)元素是一個(gè)具體的文件, File 也是一種結(jié)構(gòu)體類(lèi)型,包括每個(gè)文件的大小,創(chuàng)建時(shí)間,起始頁(yè)地址,塊地址等 如下: typedef __packed struct { u32 FileSize。 //文件大小 單位 BYTE Time FileTime。//文件創(chuàng)建時(shí)間 u16 block_begin。 //起始?jí)K地址 u16 block_end。 //結(jié)束塊地址 u8 page_begin。 //起始頁(yè)地址 u8 page_end。 //結(jié)束頁(yè)地址 }File。 其中的 Time 是一個(gè)時(shí)間結(jié)構(gòu)體,用來(lái)指定該文件的創(chuàng)建時(shí)間: typedef __packed struct { u16 year。//年 XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 16 頁(yè) 共 43 頁(yè) u8 month。//月 u8 day。 //日 u8 hour。//小時(shí) u8 minute。//分鐘 u8 second。//秒 }Time。 那么每次運(yùn)行程序是怎么加載這些文件信息的呢?首先看一個(gè)文件系統(tǒng)的初始化函數(shù) u8 Fs_Init(void),該函數(shù)用來(lái)初始化文件系統(tǒng),得到 Flash 內(nèi)部的文件信息,代碼如下: u8 Fs_Init(void) { ReadPage(0,0,FsInfoCache)。 NandFileInfo = (FsInfo*)FsInfoCache。 return 0。 } 函數(shù)很簡(jiǎn)單,但卻很有技巧性。 ReadPage(0,0,FsInfoCache)函數(shù)是從 Flash 的第 0塊,第 0 頁(yè)讀取上次程序運(yùn)行時(shí)存儲(chǔ)的文件信息,不過(guò)讀取出來(lái)的信息是字符串格式的,怎樣將這些信息加載到 FsInfo 結(jié)構(gòu)體中呢?先看 FsInfoCache,該變量是一個(gè)全局型字符串變量,它的大小和 FsInfo 結(jié)構(gòu)體的大小相同,定義如下: u8 FsInfoCache[FsInfo_SIZE]。 當(dāng)上一次保存的文件信息讀入 FsInfoCache后,通過(guò)一個(gè)類(lèi)型強(qiáng)制轉(zhuǎn)換,將它轉(zhuǎn)換為 FsInfo* 類(lèi)型并賦給一個(gè) FsInfo* 型的指針變量 NandFileInfo,這樣 NandFileInfo中的結(jié)構(gòu)體信息就加載到了最新的文件系統(tǒng)的信息。 要得正確文件系統(tǒng)的信息離不開(kāi)一個(gè)很重要的關(guān)鍵字: __packed。在上述 3個(gè)幾個(gè)體定義的時(shí)候都加上了這個(gè)關(guān)鍵字,它的作用主要是該屬性可以使得變量或者結(jié)構(gòu)體成員使用最小的對(duì)齊方式,即對(duì)變量是一字節(jié)對(duì)齊,使數(shù)據(jù)在內(nèi)存中連續(xù)存放。這樣在進(jìn)行類(lèi)型強(qiáng)制轉(zhuǎn)換的時(shí)候就不會(huì)出錯(cuò)。 ⑶ 應(yīng)用層模塊 應(yīng)用層模塊主要是一些格式化文 件系統(tǒng)、初始化文件系統(tǒng)、創(chuàng)建文件、讀寫(xiě)文件的函數(shù)接口。主要有 7個(gè)函數(shù),分別為: u8 Fs_Format(void)。 //格式化文件系統(tǒng) u8 Fs_Init(void)。 //文件系統(tǒng)初始化 u8 Fs_CreateFile(void)。 //創(chuàng)建一個(gè)新的文件 u8 Fs_Write(u8 filenumber,u8* Buffer,u16 WriteNum)。 //寫(xiě)文件,參數(shù) 1為文件列號(hào),參數(shù) 2為要寫(xiě)入數(shù)據(jù)所在緩沖區(qū),參數(shù) 3 為要寫(xiě)入 XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 17 頁(yè) 共 43 頁(yè) 的字節(jié)數(shù); u8 Fs_Read(u8 FileName,u8* Buffer)。 //讀文件,參數(shù) 1 為文件序列號(hào),參數(shù) 2 為要讀入數(shù)據(jù)所在緩沖區(qū),參數(shù) 3為要寫(xiě)入的字節(jié)數(shù); u16 Fs_GetFileNum(void)。 //獲取總的文件數(shù) u32 Fs_GetFileSize(u32 number)。 //獲取指定文件的大小 下面分析幾個(gè)比較重要的函數(shù),文件系統(tǒng)第一次使用首先要進(jìn)行格式化,首先對(duì) flash 全部擦除,然后填充文件結(jié)構(gòu)體。格式化函數(shù) Fs_Format(void)代碼如下: u8 Fs_Format(void) { u16 i。 FsInfo *format = (FsInfo*)(FsInfoCache)。 for(i = 0。i1024。i++) //擦除整個(gè) FLASH Erase_Cluster(i)。 formatFileNum = 0。 //文件總數(shù)為 0 formatAllFileSize = 0。 //文件總大小為 0 formatFreeSize = NAND_FREE_SIZE。 //文件當(dāng)前空閑容量 for(i = 0。iFILECOUNT。i++) //初始化每一個(gè)文件,初始化起始地址,創(chuàng) 建時(shí)間 { formatFileIndex[i].block_begin = 1。 formatFileIndex[i].page_begin = 0。 formatFileIndex[i].block_end = 1。 formatFileIndex[i].page_end = 0。 formatFileIndex[i].FileSize = 0。 formatFileIndex[i]. = 0。 formatFileIndex[i]. = 0。 formatFileIndex[i]. = 0。 formatFileIndex[i]. = 0。 formatFileIndex[i]. = 0。 formatFileIndex[i]. = 0。 } WritePage(0,0,FsInfoCache)。 //更新文件信息 memset(FsInfoCache,0,FsInfoCache_SIZE)。 return 0。 } XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 18 頁(yè) 共 43 頁(yè) 格式化以后就可以進(jìn)行文件系統(tǒng)初始化了,然后就是創(chuàng)建文件: u8 Fs_CreateFile(void),創(chuàng)建文件主要要作的工作是分配新的文件號(hào),并設(shè)置文件創(chuàng)建時(shí)間,這個(gè)時(shí)間采用的是 GPS時(shí)間。代碼如下: u8 Fs_CreateFile(void) { NandFileInfoFileNum += 1。//文件數(shù)加 1 CurrentFileNum = NandFileInfoFileNum。//當(dāng)前操作的文件序列號(hào) if(CurrentFileNum = 1) { NandFileInfoFileIndex[CurrentFileNum 1].block_begin =1。 //將文件的開(kāi)始地址保存 NandFileInfoFileIndex[CurrentFileNum 1].page_begin = 0。 } else if(NandFileInfoFileIndex[CurrentFileNum 2].page_end != 31) { NandFileInfoFileIndex[CurrentFileNum1].block_begin=NandFileInfoFileIndex[CurrentFileNum 2].block_end。//將文件的開(kāi)始地址保存 NandFileInfoFileIndex[CurrentFileNum1].page_begin=NandFileInfoFileIndex[CurrentFileNum 2].page_end + 1。 } else { NandFileInfoFileIndex[CurrentFileNum1].block_begin=NandFileInfoFileIndex[CurrentFileNum 2].block_end + 1。//將文件的開(kāi)始地址保存 NandFileInfoFileIndex[CurrentFileNum 1].page_begin = 0。 } //設(shè)置文件的創(chuàng)建時(shí)間,采用的時(shí)間是 GPS 時(shí)間 NandFileInfoFileIndex[CurrentFileNum1].=2020+10*CharToInt([4]+CharToInt([5])。 NandFileInfoFileIndex[CurrentFileNum1].=10*CharToInt( [2]) + CharToInt([3])。 NandFileInfoFileIndex[CurrentFileNum1].=10*CharToInt( [0]) + CharToInt([1])。 NandFileInfoFileIndex[CurrentFileNum1].=10*CharToInt( [0]) + CharToInt([1])。 NandFileInfoFileIndex[CurrentFileNum1].=10*CharToInt( XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 19 頁(yè) 共 43 頁(yè) [2]) + CharToInt([3])。 NandFileInfoFileIndex[CurrentFileNum1].=10*CharToInt( [4]) + CharToInt([5])。 Erase_Cluster(0)。 WritePage(0,0,FsInfoCache)。//更新最新的文件系統(tǒng)信息 return 0。 } 當(dāng)創(chuàng)建好文件以后就可以對(duì)文件進(jìn)行寫(xiě)了,寫(xiě)之前先獲取文件的起始地址,即起始頁(yè)地址,起始?jí)K地址。接著寫(xiě)數(shù)據(jù),同時(shí)更新文件的相關(guān)信息,如總文件大小,被操作的文件的大小,結(jié)束地址等信息。下位機(jī)文件操作流程圖如圖 所示: 圖 文件管理程序流程圖 代碼如下: u8 Fs_Write(u8 filenumber,u8* Buffer,u16 WriteNum) 否否否判斷參數(shù)不合法否第一個(gè)文件 ?上一文件的結(jié)束頁(yè)地址是否為 31 ?是設(shè)置寫(xiě)起始地址是設(shè)置寫(xiě)起始地址該文件是否是新創(chuàng)建文件 ?是該文件的頁(yè)結(jié)束地址是否為 31 ?設(shè)置寫(xiě)起始地址是設(shè)置寫(xiě)起始地址是開(kāi)始結(jié)束設(shè)置寫(xiě)起始地址 XXX 大學(xué)畢業(yè)設(shè) 計(jì)(論文)報(bào)告用紙 第 20 頁(yè) 共 43 頁(yè) { u16 block,page,Write。 u8 *p = Buffer。 if((Buffer == NULL) || WriteNum = 0 || filenumber1) return 1。 if(filenumber == 1) { block =1。//如果是第一個(gè)文件,則起始?jí)K地址為 1,頁(yè)地址為 0 page = 0。 } else if((NandFileInfoFileIndex[filenumber 1].page_end) != 31) //如果上該
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1