九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[轉(zhuǎn)]Linux2.6.37.1內(nèi)核的交叉編譯
  [轉(zhuǎn)]Linux 2.6.37.1內(nèi)核的交叉編譯 收藏
Linux 2.6.37.1內(nèi)核的交叉編譯
轉(zhuǎn)自
本文主要介紹適合ARM 處理器S3C2440目標(biāo)板的最新版本linux 內(nèi)核 linux-2.6.37.1的交叉編譯。環(huán)境為:Fedora14,編譯器arm-linux-4.3.2
 
1、linux內(nèi)核的編譯過(guò)程
首先必須獲得最新版本的內(nèi)核,可以在ftp.kernel.org上下載我們需要的2.6.37.1版本的內(nèi)核。獲得相應(yīng)內(nèi)核包后,解壓:
對(duì)于 Linux-2.6.37.1.tar.gz為
tar  zxvf  Linux-2.6.37.1.tar.gz
對(duì)于 Linux-2.6.37.1.tar.bz2為
tar  xjvf  Linux-2.6.37.1.tar.bz2
之后進(jìn)入Linux-2.6.37.1文件夾內(nèi)。:
cd linux-2.6.37.1
 
準(zhǔn)備工作結(jié)束后,我們開始配置內(nèi)核。在本機(jī)編譯內(nèi)核時(shí),我們可以直接make menuconfig之類,就可根據(jù)我們機(jī)器當(dāng)前內(nèi)核的配置生產(chǎn).config文件。但對(duì)于嵌入式當(dāng)然就很困難。幸虧Linux支持上百種平臺(tái)。對(duì)于不同平臺(tái)都有默認(rèn)的配置文件,對(duì)于我們使用的arm,可以在/arch/arm/configs文件夾下看到,我們要根據(jù)自己所使用的平臺(tái)來(lái)選擇。如S3C2440目標(biāo)板,可以選擇s3c2410_defconfig。之后只要運(yùn)行
make ARCH=arm CROSS_COMPILE=arm-linux-  menuconfig
對(duì)于我們使用的兩個(gè)宏ARCH和CROSS_COMPILE,分別是指我們選擇的體系結(jié)構(gòu)(Linux在內(nèi)核代碼樹arch文件夾中列出支持的體系結(jié)構(gòu))和交叉編譯器的前綴。(當(dāng)然也可以直接修改Makefile中ARCH和CROSS_COMPILE參數(shù))。
這里我們通過(guò)配置界面中“Load an Alternate Configuration File”加載/arch/arm/configs/s3c2410_defconfig
然后我們根據(jù)平臺(tái)的特性進(jìn)行相應(yīng)的配置,配置完畢保存成默認(rèn)配置(.config)。
之后就是編譯了,對(duì)于嵌入式大多是編譯成鏡像文件,這里編譯成zImage
make ARCH=arm CROSS_COMPILE=arm-linux-
一般而言編譯好的鏡像文件zImage是在 Linux-2.6.26/arch/$ARCH/boot里,本次當(dāng)然是在 Linux-2.6.26/arch/arm/boot找到他了,一看居然有1.7兆這么大。怎么變小呢?關(guān)鍵就是在make menucnfig階段了,這階段才是技術(shù)要求所在。
2 、編譯適應(yīng)S3C2440目標(biāo)板的linux內(nèi)核
1)、首先linux啟動(dòng)過(guò)程中需要校驗(yàn)machine ID,因此我們修改linux內(nèi)核的文件arch\arm\tools\mach-types中:
s3c2440      ARCH_S3C2440    S3C2440       1008 //1008,與uboot中一致
說(shuō)明:不建議直接修改arch/arm/kernel/head.S文件通過(guò)R1寄存器直接傳遞machine ID給內(nèi)核。
修改內(nèi)核文件arch/arm/plat-s3c24xx/common-smdk.c文件中Nand Flash分區(qū)。這里只創(chuàng)建四個(gè)分區(qū),其他多余的分區(qū)屏蔽掉(這里的分區(qū)需要和u-boot中的分區(qū)信息一致)
static struct mtd_partition smdk_default_nand_part[] = {
   [0] = {
       .name  = "bootloader",
       .size  = 0x30000,
       .offset    = 0,
   },
   [1] = {
       .name  = "params",
       .offset = 0x30000,
       .size  = 0x10000,
   },
   [2] = {
       .name  = "kernel",
       .offset = 0x50000,
       .size  = SZ_2M,
   },
   [3] = {
       .name  = "root",
       .offset    = 0x250000,
       .size  = (0x4000000-0x2500000),
   },
};
 2)、配置內(nèi)核模塊的功能,有幾種方式可以進(jìn)行界面選擇:
make menuconfig(文本選單的配置方式,在有字符終端下才能使用)
make xconfig(圖形窗口模式的配置方式,圖形窗口的配置比較直觀,必須支持Xwindow下才能使用)
make oldconfig(文本配置方式,在原內(nèi)核配置的基礎(chǔ)修改時(shí)使用)
這里使用make menuconfig命令。
 
1> [*]Enable loadable module support--->
[*]Forced module loading
[*]Module unloading
2> System Type--->
S3C2410 Machines--->
[*]SMDK2410/A9M2410選上 其余不選
S3C2440 Machines--->
[*]SMDK2440
[*]SMDK2440 with S3C2440 CPU module,其余不選
其余的Machines下選項(xiàng)全部不選(如2400,2412,2442,2443)
3> Kernel Features--->
[*]Use the ARM EABI to compile the kernel
注:如果所使用的的交叉編譯arm-linux-gcc-4.3.2是符合EABI標(biāo)準(zhǔn)交叉編譯器,對(duì)于浮點(diǎn)運(yùn)行會(huì)預(yù)設(shè)硬浮點(diǎn)運(yùn)算FPA(Float Point Architecture),而沒有FPA的CPU,比如SAMSUNG S3C2410/S3C2440,會(huì)使用FPE(Float Point Emulation 即軟浮點(diǎn)),這樣在速度上就會(huì)遇到極大的限制,使用EABI(Embedded Application Binary Interface)則可以對(duì)此改善處理,ARM EABI有許多革新之處,其中最突出的改進(jìn)就是Float Point Performance,它使用Vector Float Point(矢量浮點(diǎn)),因此可以極大提高涉及到浮點(diǎn)運(yùn)算的程序。
4> Boot options-
noinitrd root=/dev/mtdblock3 init=/linuxrc  console=ttySAC0
5> Userspace binary formats--->
[*]Kernel support for ELF binaries
其它的可以全部不選。
6> 選擇支持yaffs2文件系統(tǒng)
Filesystem--->
Miscellaneous filesystems--->
<*>YAFFS2 file system support
[*] Lets Yaffs do its own ECC
Native language support
<*> Codepage 437 (United States,Canada)
<*>Simplified Chinese charset(GB2312)
<*>Traditional Chinese charset(Big5)
<*>NLS ISO 8859-1(Latin1:Western European Languages)
<*>NLS UTF-8
配置完成以后,我們就可以通過(guò)make ARCH=arm CROSS_COMPILE=arm-linux- 命令生成我們需要的zImage鏡像文件了,然后再通過(guò)mkimage工具生成可以由u-boot直接引導(dǎo)的uImage鏡像文件了。
說(shuō)明:原始的linux內(nèi)核是不支持Yaffs2文件系統(tǒng)的,關(guān)于文件系統(tǒng)的支持和制作參見本博其他文章。
 
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/skykingf/archive/2011/03/08/6232679.aspx
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
成功移植linux-2.6.33.5到fs2410上
建立針對(duì)arm
Arm Linux交叉編譯和連接過(guò)程分析(2) - Linux - Linux My world
Linux內(nèi)核開發(fā)工具介紹
Linux下移植OpenCV + Qt 到ARM(Tiny6410)總結(jié) 轉(zhuǎn)
PB PBD 反編譯
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服