音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

uClinux 2.6  porting s3c44B0

作者:jxyhome 欄目:ARM技術(shù)
uClinux 2.6  porting S3C44B0.html">S3C44B0
uClinux 2.6  porting S3C44B0.html">S3C44B0 based on uClinux-armsys-050101.tar.gz
荊瀟影      2006.9.28
(E-mail:huazjxy@126.com)
目錄:
1.檢查linux 各編譯工具版本
2.立宇泰2.4內(nèi)核編譯
3.2.6.9內(nèi)核及補(bǔ)丁下載
4.2.6.9內(nèi)核編譯過程
5.結(jié)語

開發(fā)板:FSIIsc344b0 board ,CPU:SC344B0   RAM:8M  FALSH:2M 不帶網(wǎng)卡

1.    檢查linux 各編譯工具版本
以root登陸linux,打開終端,使用命令gcc –v 檢查下gcc的版本及是否存在.,如果不存在(我裝的Redhat 9.0就遇到了這樣的情況),則需要重新安裝gcc.對(duì)于新手而言,去下個(gè)gcc版本再重新安裝,并不簡(jiǎn)單,至少我這樣的菜鳥就不會(huì).(linux 才剛剛接觸).網(wǎng)上搜索了下搜到篇好文章:
http://bbs.chinaunix.net/viewthread.php?tid=596499
上面提到了一種方法: (2)更好的方法就是在X-window下選“主菜單”──>;“系統(tǒng)設(shè)置”──>;“添加/刪除應(yīng)用程序”──>;“開發(fā)工具”中的gcc并安裝它.
安裝過程中毫無懸念,電腦會(huì)自動(dòng)提醒你插入相應(yīng)的安裝盤.
2.立宇泰2.4內(nèi)核編譯
準(zhǔn)備好uClinux-armsys-050101.tar.gz和arm-elf-tools-20030314.sh
將uClinux-armsys-050101.tar.gz解壓縮,
運(yùn)行解壓命令:
#tar xvzf uClinux-armsys-050101.tar.gz
解壓結(jié)束將會(huì)在/root下生成uClinux-dist目錄.
2.1.安裝編譯環(huán)境
下面開始配置編譯環(huán)境,將arm-elf-tools-20030314.sh拷貝到/root下,運(yùn)行安裝:
#sh arm-elf-tools-20030314.sh

2.2.配置和裁剪uClinux

#cd uClinux-dist
#make menuconfig
此時(shí)將出現(xiàn)圖象界面,可以對(duì)其相應(yīng)的配置和裁減.進(jìn)入uClinux配置(uClinux v3.1.0 Configuration),選中”Kernel/Libarary /Defaults Selection->”.其中有兩個(gè)選項(xiàng)要選取:內(nèi)核設(shè)置和用戶選項(xiàng)設(shè)置:
[*]Customize Kernel Settings
[*]Customize Vendor/User Settings
選中這兩項(xiàng),按下ESC鍵退出,在詢問是否保存時(shí),選擇yes并回車.
終端將進(jìn)入內(nèi)核配置選單.我們?cè)谂渲胾Clinux可以根據(jù)自己的需要,對(duì)相應(yīng)的選項(xiàng)進(jìn)行自由選擇.

2.3.編譯uClinux

按下面步驟對(duì)uClinux源碼包進(jìn)行編譯:
make dep ……………………建立依賴關(guān)系
make clean……………………清除舊的編譯結(jié)果
make lib_ONLY………………編譯庫
make user_ONLY………………編譯用戶程序
make romfs……………………產(chǎn)生romfs
make image……………………產(chǎn)生映象文件
make………………………………編譯內(nèi)核
注意事項(xiàng):在上面六個(gè)步驟的編譯中,不建議在 make dep后就直接make了,一般建議一步步來,make clean下可以避免網(wǎng)上有些朋友出現(xiàn)的死機(jī)現(xiàn)象。 在make image的過程中會(huì)出現(xiàn)兩個(gè)錯(cuò)誤,這個(gè)兩個(gè)錯(cuò)誤大概是交叉編譯工具的某個(gè)庫被復(fù)制時(shí)出的錯(cuò)誤,沒有什么大的影響,不用去管。繼續(xù)下一步make編譯內(nèi)核。
這樣就在uClinux-dist 目錄下將生成三個(gè)文件:image.ram、image.rom和romfs.img就是我們用來下載和燒錄的映象文件。下載燒錄這些映象文件,啟動(dòng)和運(yùn)行uClinux就OK了。因?yàn)閘inux環(huán)境下對(duì)中文支持很差,只能夠換到windows環(huán)境下寫這篇東西,不能夠?qū)⒁恍┫鄳?yīng)指令的運(yùn)行情況給Copy下來,請(qǐng)見諒。但我這樣記憶書寫的,基本沒有問題。

3.2.6.9內(nèi)核及補(bǔ)丁下載

因?yàn)?.4內(nèi)核的編譯,因?yàn)榱⒂钐┑膗Clinux-armsys-050101.tar.gz補(bǔ)丁做的很好,基本不會(huì)出現(xiàn)問題,對(duì)于新學(xué)者來說,起個(gè)了解整個(gè)過程的作用這將是無比重要的。接著我們來探討下2.6內(nèi)核的移植問題。

S3C44B0 CPU 2.6內(nèi)核的官方網(wǎng)站是http://opensrc.sec.samsung.com/, 看了網(wǎng)站的資料后,我們首先要做的就是下載最新的內(nèi)核來試試看.其中下面的文章值得一讀.
http://opensrc.sec.samsung.com/document/Getting_Familiar_with_uClinuxARM2_6.html

最新內(nèi)核編譯
http://opensrc.sec.samsung.com
/下載補(bǔ)丁linux-2.6.11.8-hsc0.PATCH.gz
www.kernel.org
下載linux-2.6.11.8.tar.gz.

[root@jingxiaoying]# tar zxvf linux-2.6.11.8.tar.gz
[root@jingxiaoying ]# cd linux-2.6.11.8
[root@jingxiaoyinglinux-2.6.11.8]# PATCH -p1 < ../linux-2.6.11.8-hsc0.PATCH
[root@jingxiaoyinglinux-2.6.11.8]# ARCH=arm CROSS_COMPILE=arm-elf- make menuconfig
[root@jingxiaoyinglinux-2.6.11.8]# ARCH=arm CROSS_COMPILE=arm-elf- make
CC arch/arm/kernel/asm-offsets.s
In file included from arch/arm/kernel/asm-offsets.c:13:
include/linux/sched.h: In function `arch_pick_mmap_layout':
include/linux/sched.h:1174: `TASK_UNMAPPED_BASE' undeclared (first use in this function)
include/linux/sched.h:1174: (Each undeclared identifier is reported ONLY once
include/linux/sched.h:1174: for each function it appears in.)
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [arch/arm/kernel/asm-offsets.s] Error 2
include/asm/arch/memory.h中增加TASK_UNMAPPED_BASE定義
[root@jingxiaoyinglinux-2.6.11.8]# ARCH=arm CROSS_COMPILE=arm-elf- make
usr/initramfs_data.S: Assembler messages:
usr/initramfs_data.S:29: Error: UNKNOWN pseudo-op: `.incbin'
make[1]: *** [usr/initramfs_data.o] Error 1
make: *** [usr] Error 2

這個(gè)編譯器不支持.incbin的緣故, 下載新的編譯器
我現(xiàn)在使用的是arm-elf-tools-20030314.sh.下載新的編譯器:
http://opensrc.sec.samsung.com/download/arm-elf-tools-20040427.sh
并安裝后,重新編譯:

[root@jingxiaoyinglinux-2.6.11.8]# ARCH=arm CROSS_COMPILE=arm-elf- make
arch/arm/mach-s3c44b0x/time.c: In function `s3c44b0x_time_init':
arch/arm/mach-s3c44b0x/time.c:95: `gettimeoffset' undeclared (first use in this function)
arch/arm/mach-s3c44b0x/time.c:95: (Each undeclared identifier is reported ONLY once
arch/arm/mach-s3c44b0x/time.c:95: for each function it appears in.)
arch/arm/mach-s3c44b0x/time.c:99: warning: implicit declaration of function `s3c44b0x_clear_pb'
arch/arm/mach-s3c44b0x/time.c:100: warning: implicit declaration of function `s3c44b0x_unmask_irq'
make[1]: *** [arch/arm/mach-s3c44b0x/time.o] Error 1
make: *** [arch/arm/mach-s3c44b0x] Error 2
[root@jingxiaoyinglinux-2.6.11.8]#

現(xiàn)在注釋掉gettimeoffset = s3c44b0x_gettimeoffset后,編譯:
[root@jingxiaoyinglinux-2.6.11.8]# ARCH=arm CROSS_COMPILE=arm-elf- make
CC arch/arm/mach-s3c44b0x/driver/rtl8019.o
arch/arm/mach-s3c44b0x/driver/rtl8019.c: In function `nic_8019_open':
arch/arm/mach-s3c44b0x/driver/rtl8019.c:218: `MOD_INC_USE_COUNT' undeclared (first use in this function)
arch/arm/mach-s3c44b0x/driver/rtl8019.c:218: (Each undeclared identifier is reported ONLY once
arch/arm/mach-s3c44b0x/driver/rtl8019.c:218: for each function it appears in.)
arch/arm/mach-s3c44b0x/driver/rtl8019.c:216: warning: unused variable `j'
arch/arm/mach-s3c44b0x/driver/rtl8019.c: In function `nic_8019_stop':
arch/arm/mach-s3c44b0x/driver/rtl8019.c:286: `MOD_DEC_USE_COUNT' undeclared (first use in this function)
arch/arm/mach-s3c44b0x/driver/rtl8019.c: In function `nic_8019_start_xmit':
arch/arm/mach-s3c44b0x/driver/rtl8019.c:296: warning: unused variable `priv'
make[2]: *** [arch/arm/mach-s3c44b0x/driver/rtl8019.o] Error 1
make[1]: *** [arch/arm/mach-s3c44b0x/driver] Error 2
make: *** [arch/arm/mach-s3c44b0x] Error 2
[root@jingxiaoyinglinux-2.6.11.8]#

注釋掉MOD_DEC_USE_COUNT和MOD_INC_USE_COUNT

GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
arch/arm/mach-s3c44b0x/built-in.o(.text+0x170): In function `v3_dma_clean_range':
: multiple definition of `v3_flush_user_cache_range'
arch/arm/mm/built-in.o(.text+0x1480): first defined here
arch/arm/mach-s3c44b0x/built-in.o(.text+0x170): In function `v3_dma_clean_range':
: multiple definition of `v3_flush_user_cache_all'
arch/arm/mm/built-in.o(.text+0x1480): first defined here
arch/arm/mach-s3c44b0x/built-in.o(.text+0x170): In function `v3_dma_clean_range':
: multiple definition of `v3_coherent_kern_range'
arch/arm/mm/built-in.o(.text+0x148c): first defined here
arch/arm/mach-s3c44b0x/built-in.o(.init.data+0x0): multiple definition of `v3_cache_fns'
arch/arm/mm/built-in.o(.init.data+0x70): first defined here
/usr/local/bin/arm-elf-ld.real: Warning: size of symbol `v3_cache_fns' changed from 36 in arch/arm/mm/built-in.o to 32 in arch/arm/mach-s3c44b0x/built-in.o
arch/arm/mach-s3c44b0x/built-in.o(.text+0x170): In function `v3_dma_clean_range':
: multiple definition of `v3_dma_flush_range'
arch/arm/mm/built-in.o(.
2樓: >>參與討論
jxyhome
yumen
沒有人理,自己頂下:(

3樓: >>參與討論
mxh0506
不錯(cuò),我頂
 
4樓: >>參與討論
jxyhome
謝謝
謝謝看來自己在論壇還努力不夠哦:)

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)問各位大蝦,很簡(jiǎn)單的一個(gè)問題,我想不明白,在51中可以???
請(qǐng)教最簡(jiǎn)單的在用戶空間對(duì)物理地址進(jìn)行讀寫的方法
緊急求助
告訴大家一個(gè)資料區(qū)
想找一款12位的高速DA轉(zhuǎn)換器
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)