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

正文內(nèi)容

畢業(yè)設(shè)計-基于arm的mp3播放器設(shè)計-資料下載頁

2025-11-24 19:39本頁面

【導(dǎo)讀】未定義書簽。未定義書簽。

  

【正文】 onfig 配置 linux 內(nèi)核,即保留需要的內(nèi)容,這樣可以減少內(nèi)核文件的大小。 在 區(qū),我將系統(tǒng)分為了 4 個區(qū),分別是引導(dǎo)區(qū),內(nèi)核區(qū),文件系統(tǒng)區(qū)和保留區(qū),代碼如下: [0] = { .name = ―Boot Loader‖, .size = SZ_1M, 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 18 .offset = 0, }, [1] = { .name = ―Linux Kernel‖, .size = SZ_4M SZ_1M, .offset = SZ_1M, }, [2] = { .name = ―File System‖, .size = SZ_8M, .offset = SZ_4M, }, [3] = { .name = ―Reserved‖, .size = SZ_64M SZ_8M SZ_4M, .offset = SZ_4M + SZ_8M, } 這些代碼為對 Nand Flash 的分區(qū)代碼,它會顯示在內(nèi)核啟動信息中。在之后設(shè)置的 uboot 引導(dǎo)參數(shù),要將其設(shè)置為內(nèi)核所在分區(qū)的地址;最后制作的文件系統(tǒng)也要放到相應(yīng)分區(qū)。 .name 為分區(qū)名; .size 為分區(qū)大??; .offset 為分區(qū)起始地址相對于 0 的偏移。可根據(jù)自己喜好設(shè)定。 編譯內(nèi)核, 當(dāng)出現(xiàn)這些信息時,代表編譯成功: Image Name: Created: Wed Mar 16 09:56:26 2021 Image Type: ARM Linux Kernel Image (unpressed) Data Size: 1910332 Bytes = kB = MB Load Address: 0x30008000 Entry Point: 0x30008000 Image arch/arm/boot/uImage is ready 編譯成功后將在 arch/arm/boot中生成可用于 uboot加載的 Linux內(nèi)核 ——uImage文件。 文件系統(tǒng) 的設(shè)計 Linux 支持多種文件系統(tǒng),不同的文件系統(tǒng)類型也有著各自的特點。所以在選擇文 件系統(tǒng)類型的時候,就需要根據(jù)存儲設(shè)備的硬件特性和系統(tǒng)的需求進(jìn)行相應(yīng)的選擇。 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 19 在 Linux系統(tǒng)中,主要的存儲設(shè)備分為隨機存取存儲器 RAM和只讀存儲器 ROM。而常用的基于這兩種存儲設(shè)備的文件類型有: jffs2, yaffs, ramfs/tmpfs 等。在本設(shè)計中采用了 Jffs2 作為文件系統(tǒng) Jffs2 文件系統(tǒng) 介紹 Jffs2 文件系統(tǒng)主要應(yīng)用與 NOR 型的存儲設(shè)備中,它最主要的特點是可讀寫、支持?jǐn)?shù)據(jù)壓縮,掉電不易失, 在掉電時會自動保存數(shù)據(jù), 為系統(tǒng)提供了一種安全的保護(hù)模式 。 Jffs2 的數(shù)據(jù)壓縮方式和 CRAMFS 一樣,其 數(shù)據(jù)可存放在全部的閃存區(qū)域中,數(shù)據(jù)的寫入和刪除分布在很大一片區(qū)域中以防止同樣的塊會被重復(fù)使用。 但是當(dāng)文件系統(tǒng)已經(jīng)接近飽和是, Jffs2 會因為垃圾收集的關(guān)系,導(dǎo)致系統(tǒng)運行速度的降低。 下面 列舉 文件系統(tǒng)中應(yīng)該包含的重要目錄: /bin 目錄 : 該目錄下存放所有用戶 (包括系統(tǒng)管理員和一般用戶 )都可以使用的基本命令。 /sbin 目錄 : 該目錄下存放系統(tǒng)命令 ,即只有管理員能夠適用的命令。 /dev 目錄 : 該目錄下存放的是設(shè)備文件 (字符設(shè)備和塊設(shè)備 ) 。 /etc 目錄 : 該目錄下存放各種配置文件。 /lib 目錄 : 該目錄下 存放共享庫和可加載模塊 (即驅(qū)動程序 ) 。 /home 目錄 : 即用戶目錄 ,它是可選的 .在該目錄下有一個以用戶名命名的子目錄 ,用于存放用戶相關(guān)的配置文件。 /root 目錄 : 根用戶 (即 root)的目錄。 /usr 目錄 : 該目錄下存放的是可以在多個主機間共享 ,只讀的程序和數(shù)據(jù)。 /var 目錄 : 與 /usr 目錄相反 ,里面存放可變的數(shù)據(jù)。 /proc 目錄 : 這是一個空目錄 ,常作為 porc 文件系統(tǒng)的掛接點。 /mnt 目錄 : 用于臨時掛接某個文件系統(tǒng)的掛接點 ,通常是空目錄。 /tmp 目錄 : 用于存放臨時文件 ,通常是空目錄 。 文件系統(tǒng)的制作 在 Boot loader 中,將文件系統(tǒng)映像燒錄到 flash 的某一個分區(qū)中,在啟動的時候,將該分區(qū)作為根文件系統(tǒng)掛載。根文件系統(tǒng)是存放 Linux 系統(tǒng)所必須的配置文件、庫文件、腳本、設(shè)備文件 和其他特殊文件的地方 ,其中配置文件用來初始化和布局文件系統(tǒng),庫文件和腳本是從編程角度上來說的,它們?yōu)槌绦虼a中的頭文件提供服務(wù),設(shè)備文件用來存放設(shè)備驅(qū)動。這些文件可以 通過復(fù)制宿主機上交叉編譯器處得文件來制作根文件系統(tǒng)。 但是如果按照這種方法,制作文件系統(tǒng)的工作量會非常的巨大,還會出現(xiàn)錯誤,所以在本設(shè)計中借助 了 BusyBox 這種工具來制作根文件系統(tǒng)。 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 20 BusyBox 被稱作是嵌入式領(lǐng)域中的一把瑞士軍刀,它是標(biāo)準(zhǔn) Linux 工具的一個單個可執(zhí)行實現(xiàn),它包含了一些簡單的工具,還包含了一些更大、更復(fù)雜的工具,如grep, find 等,他就像是一個工具箱,壓縮了 Linux 許多工具和命令。 在設(shè)計過程中,本設(shè)計采用了 BusyBox 來為系統(tǒng)提過 Linux 的命令集和必要的庫文件。 制作文件系統(tǒng)過程如下: 首先 進(jìn)入 BusyBox 的目錄下,將 BusyBox 默認(rèn)的體系結(jié)構(gòu)改為 ARM,默認(rèn)的交叉編譯器改為 armlinuxgcc: ARCH ?= arm CROSS_COMPILE ?= armlinux 然后 執(zhí)行 make defconfig 和 make menuconfig 這兩條語句,讓編譯器編程可以在開發(fā)板中運行的程序。 之后 讓 busybox 在指定的目錄下生成文件系統(tǒng): make CONFIG_PREFIX=/nfs_root/root_fs install 當(dāng)初步生成了 的文件系統(tǒng) 的框架 后,需要豐富其 系統(tǒng)中的 內(nèi)容以達(dá)到 Linux 系統(tǒng)要求的目錄結(jié)構(gòu)及其中的文件: 創(chuàng)建 dev 目錄 創(chuàng)建 dev 目錄并創(chuàng)建必要的設(shè)備節(jié) 點,其中需要 console 和 null 設(shè)備節(jié)點,故需創(chuàng)建它們。而它們的主次設(shè)備號以及其他屬性,在設(shè)計中參照可 Linux 中 dev 目錄下的 console 和 null。 創(chuàng)建 etc 目錄 回到文件系統(tǒng)的根目錄,創(chuàng)建 etc 目錄并在其中創(chuàng)建初始化腳本 inittab: 在 inittab 中輸入以下代碼 ::sysinit:/etc/ ::askfirst:/bin/sh ::shutdown:/bin/umount –a –r 在當(dāng)前的 etc 目錄下創(chuàng)建 目錄并在 目錄下創(chuàng)建 rcS: !/bin/sh echo ―Hello world!‖ mount –t sysfs none /sys mount –t proc none /proc mount –t tmpfs none /dev mount –t tmpfs none /var mount –t tmpfs none /tmp 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 21 echo ―/sbin/mdev‖ /proc/sys/kernel/hotplug mdev –s 創(chuàng)建 lib 目錄 在文件系統(tǒng)根目錄下創(chuàng)建 lib 目錄: mkdir /nfs_root/root_fs/lib 為文件系統(tǒng)添加必要的庫,并為庫創(chuàng)建軟連接: cd /opt/ cp /nfs_root/root_fs/lib cd /nfs_root/root_fs/lib ln –s ln –s ln –s 在文件系統(tǒng)根目錄下補全其它 Linux 架構(gòu)規(guī)定的目錄: cd /nfs_root/root_fs/ mkdir home root var proc mnt tmp sys 此時 根文件系統(tǒng)所需要的必備文件已經(jīng)全部制作完成,因為設(shè)計需要在開發(fā)板上執(zhí)行,所以還需要將該文件系統(tǒng)的鏡像文件燒寫到開發(fā)板中。 到此為止,制作一個 MP3 播放器的準(zhǔn)備 工作已經(jīng)全部完成,接下來,就需要實現(xiàn) MP3 播放器的具體功能 了。 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 22 4 MP3 播放器的設(shè)計與實現(xiàn) 基于 ARM 的 MP3 播放器的系統(tǒng)結(jié)構(gòu)圖 如 圖 41 所示: 圖 41 播放器結(jié)構(gòu) 圖 其中,播放模塊實現(xiàn)了 MP3 播放音樂的功能,同步歌詞模塊實現(xiàn)了讓 MP3 在播放歌曲的同時,顯示對應(yīng)的歌詞的功能。 USB 驅(qū)動模塊實現(xiàn)了通過 USB 接口向播放器中傳輸音樂歌曲。按鍵 控制 模塊實現(xiàn)了通過按鍵控制音樂的播放,停止,上一首,下一首的功能。 播放模塊的設(shè)計 聲卡驅(qū)動的設(shè)計 S3C2440 內(nèi)置 IIS 總線接口,可以直接 連接外部 8/16 位立體聲 CODEC,主要用于迷你碟機和可攜式應(yīng)用。 IIS 總線是串行數(shù)字音頻總線協(xié)議。它是一種面向多媒體的音頻總線,專用于音頻設(shè)備之間的數(shù)據(jù)傳輸,為數(shù)字立體聲提供序列的鏈接至標(biāo)準(zhǔn)編解碼器。 IIS 總線接口支持 IIS 總線數(shù)據(jù)格式和 MSBjustified 數(shù)據(jù)格式。該接口對 FIFO 的訪問采用了 DMA 模式取代了中斷,他可以在同一時間接受和發(fā)送數(shù)據(jù)。 IIS 總線有四線,包括: IISDI, IISDO, IISCLK, IISLRCK。 IISDI 是串行數(shù)據(jù)輸入總線, IISDO 是串行數(shù)據(jù)輸出總線。 IISCLK 是串行位時鐘總線,它為串行數(shù)據(jù)提供位時鐘。 IISSCLK=聲道數(shù) *采樣頻率 *采用位數(shù)。 IISLRCK是左右通道選擇總線,用于左右聲道的切換, IISLRCK 為高電平時表示正在傳輸?shù)氖亲舐暤罃?shù)據(jù),為低時傳輸?shù)氖怯衣暤罃?shù)據(jù),因此 IISLRCK 應(yīng)正好與采樣頻率相等。 由于 IIS 總線只處理音頻數(shù)據(jù),因此, UDA1341 還內(nèi)置了用于傳輸控制信號的L3 總線接口。 L3 接口相當(dāng)于混音器控制接口,可以控制輸入、輸出音頻信號的低音及音量大小等,從而來實現(xiàn)對聲音的控制。 MP3 播放器 USB 驅(qū)動模塊 播放模塊 同步歌詞模塊 按鍵控制模塊 北京聯(lián)合大學(xué) 畢業(yè)設(shè)計 23 在 S3C2440 中, PCLK 和 MLLIN 可以提供 IIS 的 時鐘信號,在本設(shè)計中選擇了PCLK 作為時鐘信號,經(jīng)過分頻后可以得到 IISCLK, IISLRCK, CDCLK。 因為 Linux 操作系統(tǒng)沒有配備 S3C2440 的聲卡驅(qū)動程序,所以 本次設(shè)計首先 需要完成聲卡驅(qū)動的設(shè)計。在本設(shè)計中根據(jù) S3C2410—UDA1341 的聲卡驅(qū)動模擬了一個S3C2440 的聲卡驅(qū)動。 對聲卡進(jìn)行編程時首先要做的是打開與之對應(yīng)的硬件設(shè)備,這是借助于 open 系統(tǒng)調(diào)用來完成的,并且一般情況下使用的是 /dev/dsp 文件。 Linux 允許應(yīng)用程序多次打開或者關(guān)閉與聲卡對應(yīng)的設(shè)備文件,從而能夠很方便地進(jìn) 入放音狀態(tài),所以在編程時盡量的使用只讀或者只寫的方式打開設(shè)備文件,因為這樣不僅能夠充分利用聲卡的硬件資源,而且還有利于驅(qū)動程序的優(yōu)化。下面的代碼就是以只寫方式打開聲卡進(jìn)行播放聲音的操作: int handle = open(―/dev/dsp‖, O_WRONLY)。 if (handle ==1) { perror(―open /dev/dsp‖)。 return 1。 } 在 Makefile 中增加 UDA1341: obj$(CONFIG_UDA1341) += 修改增加內(nèi)存映射,以使內(nèi)核知道該虛擬地址可用,而且對應(yīng)的物理地
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1