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

正文內容

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

2025-06-08 23:36 本頁面
 

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