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

正文內(nèi)容

嵌入式web服務(wù)器boa的移植及其應(yīng)用畢業(yè)論文-資料下載頁(yè)

2025-06-28 14:04本頁(yè)面
  

【正文】 env_relocate ()。
6. 外圍設(shè)備初始化
devices_init()
7. I2C總線初始化
i2c_init()。
8. LCD初始化
drv_lcd_init()。
9. VIDEO初始化
drv_video_init()。
10. 鍵盤初始化
drv_keyboard_init()。
11. 系統(tǒng)初始化
drv_system_init()。
12.初始化網(wǎng)絡(luò)設(shè)備
初始化相關(guān)網(wǎng)絡(luò)設(shè)備,填寫IP、MAC地址等。
/* IP Address */
gdbdbi_ip_addr = getenv_IPaddr (ipaddr)。
/* MAC Address */
{
int i。
ulong reg。
char *s, *e。
uchar tmp[64]。
i = getenv_r (ethaddr, tmp, sizeof (tmp))。
s = (i 0) ? tmp : NULL。
for (reg = 0。 reg 6。 ++reg) {
gdbdbi_enetaddr[reg] = s ? simple_strtoul (s, amp。e, 16) : 0。
if (s)
s = (*e) ? e + 1 : e。
}
}
13 進(jìn)入主UBOOT命令行
進(jìn)入命令循環(huán)(即整個(gè)boot的工作循環(huán)),接受用戶從串口輸入的命令,然后進(jìn)行相應(yīng) 的工作。
for (。) {
main_loop ()。 /* 在mon/ */
}
uboot的移植過程[10]: :
mkdir /root/build_uboot
cd /root/build_uboot
,解壓;
tar jxvf
cd ubootgec2410
把實(shí)驗(yàn)提供的 工具鏈拷貝到/usr/local/arm/目錄下,解壓它然后輸入如下命令:
export PATH=/usr/local/arm/:$PATH

配置;
make gec2410_config
編譯;
make
編譯的結(jié)果生成 flash[10][6][7]
,也可以通過JTAG小板,由工具燒入到nand flash中。通過開發(fā)板自帶的bootloader的燒寫步驟如下:
連接好PC機(jī)與開發(fā)板,連接串口線,usb線,電源;打開dnw串口通訊軟件,啟動(dòng)開發(fā)板打印出如下信息。
輸入0,選擇通過USB下載文件; 。
傳輸完之后,輸入“n”,不直接運(yùn)行;
輸入“2”,選擇2號(hào)燒寫nandflash功能;

輸入“0”,選擇燒寫的分區(qū),然后輸入“y”,確認(rèn)燒寫;
重新啟動(dòng)開發(fā)板,可以看到uboot的啟動(dòng)信息如下:
注意:實(shí)驗(yàn)提供的uboot源代碼只支持從nand flash啟動(dòng),,只能燒寫到nandflash里。 uboot的使用[2]uboot:是通過輸入命令來(lái)操作的。下面簡(jiǎn)單介紹幾個(gè)常用的uboot命令printenv:打印環(huán)境變量,在uboot的提示符下輸入printenv命令,就可以打印出uboo的環(huán)境變量。setenv: 設(shè)置環(huán)境變量如:setenv ipaddr Setenv serverip saveenv:保存設(shè)定的環(huán)境變量,我們經(jīng)常要設(shè)置的環(huán)境變量有ipaddr,serveripbootcmd,bootargstftp:即將內(nèi)核鏡像文件從PC中下載到SDRAM的指定地址,然后通過bootm來(lái)引導(dǎo)內(nèi)核前提是所用 PC要安裝設(shè)置tftp服務(wù)。如: tftp 30008000 zImagenand erase: 擦除nand flash中數(shù)據(jù)塊如:nand erase 0x40000 0x1c0000 (nand erase 起始地址 大?。? nand write:把RAM中的數(shù)據(jù)寫到Nand Flash中如:nand write 要燒寫文件在內(nèi)存中的起始地址 燒 寫到flash中的地址 大小nand write 0x30008000 0x40000 0x1c0000nand read: 從nand flash中讀取數(shù)據(jù)到RAM如:nand read 內(nèi)存地flash地址大小 nand read 0x30008000 0x40000 0x1c0000go: 直接跳轉(zhuǎn)到可執(zhí)行文件的入口地址,執(zhí)行可執(zhí)行文件。 5 嵌入式 linux 內(nèi)核移植實(shí)現(xiàn)
linux 簡(jiǎn)介[6][7][5]LINUX 是一個(gè)類似UNIX 的操作系統(tǒng),其代碼是完全重新開放的,內(nèi)核功能強(qiáng)大,實(shí)現(xiàn)簡(jiǎn)潔。它提供了類似UNIX 的編程接口和系統(tǒng)調(diào)用,可以方便的將UNIX系統(tǒng)上的應(yīng)用程序,移植到Linux上運(yùn)行。Linux具有一下特點(diǎn): 1.可移植性:Linux內(nèi)核源代碼是用C語(yǔ)言編寫的,可以運(yùn)行到各種平臺(tái)。
2.支持多種處理器體系結(jié)構(gòu):
Linux內(nèi)核能夠支持的處理器要求是32位處理器,有沒有MMU都可以。沒有MMU的處理器只有uClinux支持。Linux-。3.開放源代碼的優(yōu)勢(shì):Linux內(nèi)核是開放源代碼的,也就是說,用戶可以免費(fèi)獲取,修改linux源碼。龐大的linux 社區(qū)和內(nèi)核源代碼工程,有很多各種各樣的驅(qū)動(dòng)程序和應(yīng)用程序可以利用。開發(fā)者可以免費(fèi)得到社區(qū)的貢獻(xiàn)、支持。眾所周知,Linux在嵌入式系統(tǒng)中的應(yīng)用已經(jīng)非常普遍。為了進(jìn)一步促進(jìn)這方面的應(yīng)用在Linux ,引入了很多非常有利于嵌入式應(yīng)用的功能。這些新功能包括實(shí)時(shí)性能的增強(qiáng)、更方便的移植性、對(duì)大容量?jī)?nèi)存的支持、支持微控制器和I/O系統(tǒng)的改進(jìn)等。 [10]
1.改進(jìn)了響應(yīng)時(shí)間
,要想讓Linux獲得更好的響應(yīng)能力,就需要一些特殊的補(bǔ)丁。通常情況下,需要用戶從廠商處購(gòu)買補(bǔ)丁來(lái)改進(jìn)中斷性能和調(diào)度反應(yīng)時(shí)間。如今,因此無(wú)需再對(duì)其進(jìn)行特殊的配置。
2.搶占式內(nèi)核
Linux 。因此,在一些時(shí)效性比較強(qiáng)的 事件中,Linux 。當(dāng)然了,它實(shí)際上并不是一個(gè)真正的RTOS,但是與以前的內(nèi)核相比較,“停頓”的感覺要少得多。3.高效的調(diào)度程序,進(jìn)程調(diào)度經(jīng)過重新編寫,去掉了以前版本中效率不高的算法。調(diào)度程序每次不再掃描所有的任務(wù),而是在一個(gè)任務(wù)變成就緒狀態(tài)時(shí)將其放到一個(gè)名為“當(dāng)前隊(duì)列”的隊(duì)列之中。當(dāng)進(jìn)程調(diào)度程序運(yùn)行時(shí),它只選擇隊(duì)列中最有利的任務(wù)來(lái)執(zhí)行。這樣,調(diào)度就 可以在一個(gè)恒定的時(shí)間里完成。當(dāng)任務(wù)執(zhí)行時(shí),它就會(huì)得到一個(gè)時(shí)間段,或在其轉(zhuǎn)到另外一個(gè)線程之前得到一段時(shí)間的處理器使用權(quán)。當(dāng)它的時(shí)間段用完之后,任務(wù)就會(huì)被移到另外一個(gè)名為“過期”的隊(duì)列中。而在該隊(duì)列中,任務(wù)會(huì)根據(jù)其優(yōu)先級(jí)進(jìn)行排序。4.新的同步措施多進(jìn)程應(yīng)用程序有時(shí)需要共享一些資源,比如共享內(nèi)存或設(shè)備。為了避免競(jìng)爭(zhēng)的出現(xiàn),程序員會(huì)使用一個(gè)名為互斥的功能來(lái)確保同一時(shí)刻只有一個(gè)任務(wù)在使用資源。到目前為止,Linux還是通過一個(gè)包含在內(nèi)核中的系統(tǒng)調(diào)用來(lái)完成互斥的實(shí)現(xiàn),并由該系統(tǒng)調(diào)用來(lái)決定一個(gè)線程是等待還是繼續(xù)執(zhí)行。但當(dāng)決定繼續(xù)執(zhí)行時(shí),這個(gè)耗時(shí)的系統(tǒng)調(diào)用就不需要了5.共享內(nèi)存的改進(jìn)嵌入式系統(tǒng)有時(shí)也是一個(gè)有很多處理器的設(shè)備,比如在電信網(wǎng)絡(luò)或大型存儲(chǔ)系統(tǒng)中就是如此。而不論是均衡或是松散連接的多處理器,一般都是共享內(nèi)存的。均衡多進(jìn)程的設(shè)計(jì)是所有的處理器都有對(duì)內(nèi)存有均等使用權(quán),而限制使用內(nèi)存的決定性因素是進(jìn)程的效率。,即所謂的NUMA(Non Uniform Memory Access)。這種方法中,內(nèi)存和處理器是相互連接的,但是對(duì)于每一個(gè)處理器,一些內(nèi)存是“關(guān)閉”的,而有的內(nèi)存則是“更遠(yuǎn)”的。這就意味著當(dāng)內(nèi)存競(jìng)爭(zhēng)出現(xiàn)時(shí),“更近”的處理器對(duì)就近的內(nèi)存有更高的使用權(quán)。6.POSIX線程、信號(hào)和計(jì)時(shí)器與POSIX線程一起, 分。POSIX信號(hào)比以前Linux版本中使用的Unix模式的信號(hào)有了很大的改進(jìn)。新的POSIX信號(hào) 不能被丟失,并且可以攜帶信息作為參數(shù)。此外,POSIX信號(hào)也可以從一個(gè)POSIX線程傳送至 另外一個(gè)線程,而不是像Unix信號(hào)一樣,只能從一個(gè)進(jìn)程至另外一個(gè)進(jìn)程。
嵌入式系統(tǒng)通常要求硬件能夠在固定的時(shí)間安排下來(lái)運(yùn)行任務(wù)。POSIX計(jì)時(shí)器可以輕松地讓任何一個(gè)任務(wù)都可以周期性地得到預(yù)定安排的時(shí)間。計(jì)時(shí)器的時(shí)鐘可以達(dá)到很高的精度,從而可以讓軟件工程師更加精確地控制任務(wù)的調(diào)度。 7.支持通用設(shè)計(jì)嵌入式世界里的硬件設(shè)計(jì)通常都要經(jīng)過定制,以滿足特定的應(yīng)用程序。因此,設(shè)計(jì)人員經(jīng)常需要使用原始的方式來(lái)解決設(shè)計(jì)上的問題。比如,為特定目的制造的主板可能使用不同的IRQ管理器而不是使用類似的設(shè)計(jì)。,就引入了一個(gè)名為子框架的概念。在新的定義中,各組件被清晰地分開,并且可以獨(dú)立進(jìn)行更改或替換,而不會(huì)對(duì)其它的組件或軟件包造成影響,或者影響非常小。
8.設(shè)備、總線和I/O
現(xiàn)在Linux正在變成行業(yè)用戶的第一選擇。(Advanced Linux Sound Architecture),該體系結(jié)構(gòu)可以安全地使用USB和MIDI設(shè)備。通過使用ALSA,系統(tǒng)可以同時(shí)播放和記錄音頻。用于支持視頻的Video4Linux系統(tǒng)。雖然其不能向后兼容,但卻可用于最新的廣播、電視、數(shù)碼相機(jī)和其它的多媒體。Linux ,它要比一般的USB快40倍??梢灶A(yù)見,在不久的將來(lái),高 速設(shè)備將非常普及,而在對(duì)USB ,Linux可以說是一個(gè)先行者。9.,對(duì)于那些需要大量?jī)?nèi)存的嵌入式Linux開發(fā)人員就可以選擇64位的處理器。也提供了對(duì)微處理控制器的支持。 linux內(nèi)核源代碼
由于linux內(nèi)核版本不斷升級(jí)更新,所以最好下載新版本的內(nèi)核源碼。Linux官方發(fā)布的內(nèi)核版本可以從以下網(wǎng)站獲?。海涂梢宰屑?xì)分析內(nèi)核源碼了。Linux內(nèi)核源代碼非常龐大,隨著版本的發(fā)展不斷增加新的內(nèi)容。
初次接觸linux內(nèi)核,可以仔細(xì)閱讀頂層目錄的readme,它是linux內(nèi)核的概述和編譯命令說明。內(nèi)核源碼的頂層目錄下有許多子目錄,分別存放內(nèi)核子系統(tǒng)的各個(gè)源文件。目錄說明如下:
[10] 內(nèi)核已經(jīng)支持 S3C24x0 處理器的多種硬件板,這里我們用開發(fā)板光碟提供的 內(nèi)核為例,實(shí)現(xiàn)內(nèi)核的移植。
(1)準(zhǔn)備工作
(2)修改頂層 Makefile
(3)修改內(nèi)核源碼
(4)配置編譯內(nèi)核
(5)下載到開發(fā)板上運(yùn)行 準(zhǔn)備工作建立工作目錄,下載源碼,安裝交叉工具鏈,步驟如下。
mkdir /root/build_kernel
mkdir /root/build_kernel/linux
cd /root/build_kernel/linux
解壓
tar jxvf
export PATH=/usr/local/arm/:$PATH Makefile修改內(nèi)核目錄樹根下的的 Makefile,指明體系結(jié)構(gòu)是 arm,交叉編譯工具是 armlinux。
cd /root/build_kernel/linux/
vi Makefile
找到 ARCH 和CROSS_COMPILE,修改
ARCH := arm
CROSS_COMPILE := /usr/local/arm/
保存退出。
這里注意,如果要用 uboot 來(lái)引導(dǎo)linux 內(nèi)核,則需要修改內(nèi)核源碼;如果用 gec2410_bois 程序來(lái)引導(dǎo) linux 內(nèi)核,則不需要修改內(nèi)核源碼,可以跳過這一步。(1)修改 include/asmarm/archs3c2410/ 文件,指定輸入為串口 0;
vi include/asmarm/archs3c2410/
將第 30 行的:“define uart_base (S3C2410_PA_UART + 0x4000)”
改成 “define uart_base (S3C2410_PA_UART)”
(2)禁止內(nèi)核的Flash ECC校驗(yàn)
如果內(nèi)核和根文件系統(tǒng)的燒寫是通過uboot的“nand write”命令來(lái)寫到Nand Flash的, 那么就要在內(nèi)核源碼的nand驅(qū)動(dòng)中禁止的Flash ECC校驗(yàn)。這是因?yàn)閡boot通過的軟件ECC算法產(chǎn)生ECC校驗(yàn)碼, 這與內(nèi)核校驗(yàn)的ECC碼不一樣, 內(nèi)核中的ECC碼是由S3C2410中Nand Flash控制器產(chǎn)生的. 所以, 我們要禁止內(nèi)核ECC校驗(yàn)。如果內(nèi)核和根文件系統(tǒng)的燒寫是通過“gec2410_bois”程序來(lái)燒寫的,則不用禁止內(nèi)核的Flash ECC校驗(yàn)。
修改如下:
vi drivers/mtd/nand/
找到s3c2410_nand_init_chip()函數(shù),在該函數(shù)體最后加上一條語(yǔ)句:
chipeccmode = NAND_ECC_NONE。
保存,退出。
cp .config注意: 文件是開發(fā)板提供的默認(rèn)內(nèi)核配置文件,我們這里首先把內(nèi)核配置成默認(rèn)配置,在此基礎(chǔ)上用make menuconfig 進(jìn)一步配置; make menuconfig
出現(xiàn)如下配置菜單
基礎(chǔ)上,我們可以選擇自己的配置選項(xiàng),定制內(nèi)核;
保存退出,.
編譯內(nèi)核
make
編譯結(jié)束后,生成ar
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1