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

正文內(nèi)容

基于嵌入式arm-linux的電子相冊設計方案(編輯修改稿)

2025-06-08 23:36 本頁面
 

【文章內(nèi)容簡介】 潔性、可配置性和可移植性等特點。RedBoot集BootLoader、調(diào)試、Flash燒寫于一體,支持串口、網(wǎng)絡下載,執(zhí)行嵌入式應用程序。既可以用在產(chǎn)品的開發(fā)階段(調(diào)試功能),也可以用在最終的產(chǎn)品上(Flash更新、網(wǎng)絡啟動)。RedBoot支持下載和調(diào)試應用程序,開發(fā)板可以通過BOOTP/DHCP協(xié)議動態(tài)配置IP地址,支持跨網(wǎng)段訪問。用戶可以通過tftp協(xié)議下載應用程序和image,或者通過串口用xmodem/ymodem下載,在嵌入式系統(tǒng)應用中非常廣泛。(5)ARMboot。ARMboot是一個以ARM或StrongARM為內(nèi)核CPU的嵌入式系統(tǒng)的BootLoader固件程序,該軟件的主要目標是使新的平臺更容易被移植并且盡可能地發(fā)揮其強大性能。它只基于ARM固件,但是它支持多種類型的啟動,比如Flash,網(wǎng)絡下載通過bootp、dhcp、tftp等。它也是開源項目,可以從。//,它在ARM處理器方面應用非常廣泛。(6)DIY。DIY(Do It Youself),即自己制作。以上UBOOT、VIVI、Blob、RedBoot和ARMboot等成熟工具移植起來簡單快捷,但它們都存在著一定的局限性。首先,它們是面向大部分硬件的工具,在功能上要滿足大部分硬件的需求。一般情況下,我們只需要與特定的開發(fā)板相關的實現(xiàn)代碼,其他型號開發(fā)板的實現(xiàn)代碼對它來說是沒有用的,所以通常它們的代碼量較大。其次,它們在使用上不夠靈活。比如,在這些工具上添加自己的特有功能相對比較困難,必須熟悉該代碼的組織關系,以及了解它的配置編譯等文件。用DIY的方式自己編寫針對目標板的BootLoader不但代碼量短小,同時靈活性很大,最重要的是將來容易維護。因此,在實際嵌入式產(chǎn)品開發(fā)時大都選擇DIY的方式編寫B(tài)ootLoader。 UBOOT的簡介UBOOT的全稱為Universal Boot Loader,是遵循GPL(GNU General Public License)協(xié)議的開放源碼項目。該條款規(guī)定開發(fā)者必須開放源代碼,確保用戶可以自由地共享和修改軟件,目的是促進軟件知識的自由傳播。不少UBOOT源代碼就是相應的Linux內(nèi)核源程序的簡化,尤其是一些設備的驅(qū)動程序。UBOOT不僅支持嵌入式Linux系統(tǒng)的引導,還支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS等操作系統(tǒng),所以本設計打算選用此Boot Loader。UBOOT源代碼是由多個目錄組成的GNU項目,在不同的目錄中按功能分類存放了C語言的代碼文件,其主要目錄結構如下:Board:UBOOT所支持目標開發(fā)板相關文件。主要包含SDRAM和Flash的驅(qū)動程序;Common與處理器體系結構無關的通用代碼,如內(nèi)存大小探測與故障檢測,;Cpu:與處理器相關的文件,如ARM920t子目錄下含S3C2410的串口、IIC接口和中斷初始化等文件。;Drivers:各種外設驅(qū)動程序;Doc:UBOOT的說明文檔;Include:頭文件目錄;Lib_XXX:處理器體系相關的文件,如lib_ppc,lib_arm目錄分別包含與PowerPC、體系結構相關的文件;Net:與網(wǎng)絡功能相關的文件目錄,如bootp,nfs,tftp等網(wǎng)絡協(xié)議。UBOOT支持多種CPU體系結構,但對于不同的CPU來說,整個啟動流程是類似的。下面介紹以ARM920T為架構的CPU啟動過程。UBOOT的啟動可以分為兩個階段:第一階段用匯編語言實現(xiàn),負責初始化低層次的硬件,如CPU底層的寄存器和RAM等;第二階段用C語言實現(xiàn),負責初始化較高級的外圍硬件接口,如串口、USB、網(wǎng)卡等,另外,通過C語言可實現(xiàn)更高級的應用,如命令行調(diào)試、網(wǎng)絡傳輸?shù)?。UBOOT整個程序的入口點位于cpu/ARM920T/,它用ARM匯編語言編寫,它是ARM上電啟動后執(zhí)行的第一段代碼,實現(xiàn)UBOOT的第一階段啟動。:定義程序入口設置異常向量初始化CPU底層部件搬移ROM的程序到RAM程序轉(zhuǎn)移到RAM上執(zhí)行 BootLoader啟動步驟 UBOOT的移植和修改步驟 UBOOT由Nand Flash啟動概述UBOOT支持從NOR Flash啟動,本設計用的是Nand Flash因為Nand Flash的價格相對便宜。為了解決Nand Flash不能直接本地讀取數(shù)據(jù)的問題,本系統(tǒng)需要對UBOOT進行修改,使得啟動代碼能被存儲在Nand Flash中也能正常運行。S3C2410本身也針對從Nand Flash啟動的方案采取了相應的措施。它在Nand Flash控制器端采用了4KB的內(nèi)部緩沖區(qū),CPU上電后會把Nand Flash的前4KB代碼自動轉(zhuǎn)移到內(nèi)部緩沖中執(zhí)行。通過OM【1:0】信號跳線可以選擇是否啟用該啟動方式:OM【1:0】=00時處理器從Nand Flash啟動;OM【1:0】=01時處理器從16位寬的rom啟動;OM【1:0】=10時處理器從32位寬的rom啟動;OM【1:0】=11時測試模式的rom啟動;當使用Nand Flash啟動時,4KB的內(nèi)部緩沖區(qū)會被映射到0x0地址,此地址存放了CPU上電后的第一條指令。,要跳過之前介紹的“搬移ROM中的程序到RAM”那一步,然后插入自己修改的NAND啟動代碼。本設計中,UBOOT調(diào)試用到的硬件和功能主要有一個串口,DM9000E網(wǎng)卡支持tftp下載,工作頻率為200M的S3C2410處理器,JTAG口燒寫UBOOT映像文件,1片4M*16位數(shù)據(jù)寬度的Nand Flash地址范圍為0x01000000~0x01800000和1片32MB16位SDRAM位數(shù)據(jù)寬度的SDRAM地址范圍為0x30000000~0x32000000。Flash使用了2410處理器的BANK0單元。 UBOOT基本配置移植步驟本設計采用UBOOT ,代碼修改的步驟如下:(1) 在UBOOT :unconfig,其中的參數(shù)意思arm:CPU的架構。ARM920t:CPU的類型;(2) 建立自己開發(fā)板所需目錄、文件配置文件。1. 建立board/my2410目錄,拷貝board/smdk2410下的文件到board/my2410目錄,2. 修改my2410目錄下的Makefile文件,將OBJS= 修改為OBJS= include/configs/ include/configs/(3)排除編譯器問趔。修改cpu/ARM920t/+=$(call ccoption,mapcs32,mabi=apcsgnu)改為: cpu/ARM920t/+=$(call ccoption,mapcs32,$(call ccoption,mabi=apcsgnu))(4)修改include/configs/define CFG_PROMPT “my2410” /*我自己UBOOT的調(diào)試平臺名字*/define CONFIG_BOOTDELAY /*自動啟動時間為3秒*/define CONFIG_BOOTARGS “noinitrd root=/dev/mtdblock/3 init=linuxrc console=ttyS0” /*Nand Flash 第三分區(qū),串口0,Linux ,也可以不設,在移植后用Nand Flash的命令再設置*/ UBOOT對Nand Flash命令的支持由于UBOOT調(diào)試要用到一些Nand Flash命令,如對設置一些參數(shù)保存要用到nand write對參數(shù)的保存到Nand Flash中要用nand save命令等,所以要在UBOOT中加入一些命令。步驟如下:(1)在include/configs/。(2) 在include/linux/mtd/。(3)加入對Samsung K9F1208U0B Nand Flash的基本宏定義。(4)在lib_arm/ Flash初始化函數(shù)extern ulong nand_probe(ulong physadr)。S3C2410被配置成從NAND閃存啟動,上電后,S3C2410的NAND閃存控制器會自動把NAND閃存中的前4K數(shù)據(jù)搬移到內(nèi)部RAM中,并把0X00000000設置為內(nèi)部RAM的起始地址,CPU從內(nèi)部RAM的0X00000000位置開始啟動。因此要把最核心的啟動程序放在NAND閃存的前4K中。由于NAND閃存控制器從NAND閃存中搬移到內(nèi)部RAM的代碼是有限的,所以,在啟動代碼的前4K里,必須完成S3C2410的核心配置,并把啟動代碼的剩余部分搬到RAM中運行。在UBOOT中,前4K完成的主要工作就是U0BOOT啟動的第一個階段(stage1)。根據(jù)UBOOT的執(zhí)行流程圖,可知要實現(xiàn)從NAND閃存中啟動UBOOT首先需要初始化NAND閃存,并從NAND閃存中把UBOOT搬移到RAM中,最后需要讓UBOOT支持,NAND閃存的命令操作。 Nand Flash環(huán)境參數(shù)的設置UBOOT默認從NOR FLASH啟動,此時環(huán)境參數(shù)可以存放在NOR FLASH中,也可以存放在NAND FLASH中。在NOR FLASH中時,參數(shù)的存儲位置由CFG_ENV_ADDR決定。此外必須有CFG_ENV_IS_IN_FLASH、CFG_ENV_SIZE這兩個宏定義。如果UBOOT從NAND FLASH啟動,由于從NAND FLASH啟動時S3C2410內(nèi)部的4K SRAM被影射到Ngcso,故此時NOR FLASH是無效,也不能對NOR FLASH進行操作。因此環(huán)境變量是不能存儲在NOR FLASH上,此時只能將環(huán)境變量存儲到NAND FLASH中。/*define CFG_ENV_IS_IN_FLASH 1 */ /*注釋掉此行,添加下面三行*/define CFG_ENV_IS_IN_NAND 1define CFG_ENV_OFFSET 0xf0000define CFG_ENV_SIZE 0x10000由于uBOOT默認條件下是不傳遞環(huán)境參數(shù)到LINUX內(nèi)核的TAG區(qū)(默認從0X30000100開始),為了能夠用UBOOT引導LINUX內(nèi)核,必須定義以下配置,把信息傳入LINUX核心。define CONFIG_SETUP_MEMORY_TAGSdefine CONFIG_INITRD_TAGdefine CONFIG_CMDLINE_TAG Linux內(nèi)核移植??結合系統(tǒng)的硬件要求,需要對內(nèi)核的適當配置,主要的修改包括了根目錄和arch/arm/boot等目錄下的Makefile分別針對Nand Flash、LCD驅(qū)動、USB主機驅(qū)動、啟動掛載devfs支持文件系統(tǒng)、Cramfs,Yaffs文件系統(tǒng)的支持以及聲音系統(tǒng)的支持進行源代碼的修改。對內(nèi)核進行配置就是對其硬件進行裁剪,通過導入與S3C2410接近SMDK2410的默認配置可以簡化其配置過程。S3C2410的默認配置在kernal/arch/arm/defconfigs/。先進行手動裁剪,再進入圖形配置界面配置。 LCD驅(qū)動分析和修改S3C2410本身具有LCD控制器接口,通過設置該部分的寄存器可以比較方便地對液晶顯示屏進行控制,這樣也大大簡化了顯示驅(qū)動程序的設計。Linux對LCD是以字符設備方式加以訪問和管理的,它把要顯示的數(shù)據(jù)一字節(jié)一字節(jié)地送往LCD控制器。 配置圖形手動修改后,再終端輸入命令make menuconfig進入內(nèi)核配置畫面,選擇相關的選項之后保存退出。(1)make menuconfig:該命令用來調(diào)用圖形化菜單式的配置內(nèi)核界面。這種配置方法比用命令行方式更有效率。配置對SCSI設備的支持。在Linux中,大多數(shù)USB驅(qū)動程序會“鉤住”另外一個驅(qū)動系統(tǒng)。經(jīng)過以上配置并編譯后,對于USB存儲設備來說,一些關鍵的驅(qū)動模塊會被編譯進內(nèi)核。;;。在加載了以上模塊后,當插入U盤時系統(tǒng)中就會出現(xiàn)一個SCSI硬盤,通過正確地掛載操作則可以使用該U盤。(2)make depend:此命令用于為Linux項目產(chǎn)生,depend文件。當編譯一個龐大的項目時,如果沒有depend文件,編譯器就無法判斷出文件之間的依賴關系,這樣會造成大量的重復編譯,甚至使編譯無法正常進行。所以,在每次增加源代碼頭文件時,都必須運行一次“make depend“以更新各目標文件的依賴關系。(3)make zImage:編譯器按照之前的配置選項生成Linux內(nèi)核的機器代碼映像,其中“zImage”是經(jīng)過壓縮并可以自解壓的代碼映像。(4)下載,用UBOOT進行下載。 文件系統(tǒng)的創(chuàng)建在嵌入式Linux中,文件系統(tǒng)可分為根文件系統(tǒng)和子文件系統(tǒng)。根文件系統(tǒng)包含基本的操作系統(tǒng)命令和維護工具,啟動時需要根文件系統(tǒng)來掛載,通常在系統(tǒng)建立后無需作出改動,每次啟動都會恢復到原始的狀態(tài),這樣有利于系統(tǒng)的穩(wěn)定性,即使用戶進行了錯誤操作也不至于對操作系統(tǒng)造成永久破壞;子文件系統(tǒng)通常是適合對嵌入式存儲介質(zhì)頻繁進行讀寫操作的文件系統(tǒng),用于保存經(jīng)常需要修改的數(shù)據(jù)。常用的文件系統(tǒng)包括ROMfs,JFFS2,Yaffs,ETX2,NFS,Cramfs等。本設計用到的Cramfs(Compressed RAM File System)作為根文件系統(tǒng),是為壓縮式文件系統(tǒng),特點是數(shù)據(jù)可經(jīng)過壓縮而保存在ROM中,經(jīng)過修改的數(shù)據(jù)在掉電或重啟后不會被保留,而是恢復到原始狀態(tài);并且在讀取數(shù)據(jù)時選擇性讀取,可大大節(jié)省內(nèi)存資源。本設計還用到y(tǒng)affs(Yet Another Flash File System)子文件系統(tǒng),它是一種日志結構的文件系統(tǒng),專門為Nand Flash設計的,其速度快、占用內(nèi)存少且易于移植,還為Nand Flash供寫均衡和垃圾收集等底層操作,能有效地降低Flash出現(xiàn)壞塊的幾率。根文件系統(tǒng)是存放運行、維護系統(tǒng)的Busybox、庫文
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1