ARM Linux.2.6.34内核移植
生活随笔
收集整理的這篇文章主要介紹了
ARM Linux.2.6.34内核移植
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ARM-LINUX-GCC版本4.3.2.以安裝在/usr/local/arm/4.3.2下.
第一步:
修改linux-2.6.34/Makefile文件,在makefile中找到以下兩條信息并做修改
ARCH ? =arm?
CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-
第二步:
修改平臺輸入時鐘
修改平臺的時鐘頻率,修改內核源碼“arch/arm/mach-s3c2440/mach-smdk2440.c”
把時鐘初始化中(S3C24XX_init_clocks(16934400 ))的16934400 改為12000000,因為我們的開發板上為12M
第三步:
修改機器類型ID號::
?? bootloader啟動內核時,會傳遞機器類型ID進來,這里需根據bootloadr傳進的ID修改內核ID號.
?? 在內核源碼的“arch/arm/tools/mach-types”文件查找S3C2440,這里剛好與我們的bootloader相同,所以不用做修改,直接保存退出即可,如果不同則根據bootloader的內容修改此文件,或根據此文件修改boorloader的內容(在vivi中可通過param show查看)。
第四步:
解壓yaffs2.tar.gz源碼包,進入yaffs2文件夾,給內核打上補丁使內核支持yaffs2
# ./patch-ker.sh? c? /home/linux-2.6.34
結果:更新了兩個文件系統下的文件
Updating /home/linux-2.6.34/fs/Kconfig
Updating /home/linux-2.6.34/fs/Makefile
第五步:
修改內核mtd分區和bootloader(vivi)使其一致
編輯文件arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
??? [0] = {
??? ??? .name??? = "vivi",
??? ??? .size??? = 0x30000,
??? ??? .offset??? = 0,
??? },
??? [1] = {
??? ??? .name??? = "kernel",
??? ??? .offset = 0x50000,
??? ??? .size??? = 0x300000,
??? },
??? [2] = {
??? ??? .name??? = "root",
??? ??? .offset = 0x350000,
??? ??? .size??? = 0x3cac000,
??? },
};
第六步:
修改文件drivers/mtd/nand/s3c2410.c
將s3c2410_nand_init_chip函數里的NAND_ECC_SOFT改為NAND_ECC_NONE(因為在內核中默認配置不支持ECC校驗,當然也可以在內核配置時選中ECC選項)
修改后如下:
chip->ecc.mode??? ??? = NAND_ECC_NONE;
第七步:
到llinux-2.6.30目錄下執行命令
?? #cp? arch/arm/configs/s3c2410_defconfig? .config
第八步:
執行make menuconfig,并對選項進行配置
??? 1)System Type --->
??? ??? S3C2440 and S3C2442 machines --->
??? ??? ??? 僅保留SMDK2440 與SMDK2440 whith S3C2440 CPU module兩個選項,將其他的選項全部勾掉
??? 2)Kernel Features --->
??? ??? [*]Use the arm EABI to compile the kernel(選中該選項)
??? ???
??? 3)File systems --->
??? ??? a、把與ext2 ext3 ext4相關的所有選項全部去掉
??? ??? b、Miscellaneous filesystems --->
??? ??? ??? <*>yaffs2 file system support(選中此選項)
????????? 去除所有與jffs2相關的選項
保存退出
第九步:執行make?zImage 編譯生成內核.
???????????????????????????????????????????????????????????????????????????????????????? wenhao@20110609
第一步:
修改linux-2.6.34/Makefile文件,在makefile中找到以下兩條信息并做修改
ARCH ? =arm?
CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-
第二步:
修改平臺輸入時鐘
修改平臺的時鐘頻率,修改內核源碼“arch/arm/mach-s3c2440/mach-smdk2440.c”
把時鐘初始化中(S3C24XX_init_clocks(16934400 ))的16934400 改為12000000,因為我們的開發板上為12M
第三步:
修改機器類型ID號::
?? bootloader啟動內核時,會傳遞機器類型ID進來,這里需根據bootloadr傳進的ID修改內核ID號.
?? 在內核源碼的“arch/arm/tools/mach-types”文件查找S3C2440,這里剛好與我們的bootloader相同,所以不用做修改,直接保存退出即可,如果不同則根據bootloader的內容修改此文件,或根據此文件修改boorloader的內容(在vivi中可通過param show查看)。
第四步:
解壓yaffs2.tar.gz源碼包,進入yaffs2文件夾,給內核打上補丁使內核支持yaffs2
# ./patch-ker.sh? c? /home/linux-2.6.34
結果:更新了兩個文件系統下的文件
Updating /home/linux-2.6.34/fs/Kconfig
Updating /home/linux-2.6.34/fs/Makefile
第五步:
修改內核mtd分區和bootloader(vivi)使其一致
編輯文件arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
??? [0] = {
??? ??? .name??? = "vivi",
??? ??? .size??? = 0x30000,
??? ??? .offset??? = 0,
??? },
??? [1] = {
??? ??? .name??? = "kernel",
??? ??? .offset = 0x50000,
??? ??? .size??? = 0x300000,
??? },
??? [2] = {
??? ??? .name??? = "root",
??? ??? .offset = 0x350000,
??? ??? .size??? = 0x3cac000,
??? },
};
第六步:
修改文件drivers/mtd/nand/s3c2410.c
將s3c2410_nand_init_chip函數里的NAND_ECC_SOFT改為NAND_ECC_NONE(因為在內核中默認配置不支持ECC校驗,當然也可以在內核配置時選中ECC選項)
修改后如下:
chip->ecc.mode??? ??? = NAND_ECC_NONE;
第七步:
到llinux-2.6.30目錄下執行命令
?? #cp? arch/arm/configs/s3c2410_defconfig? .config
第八步:
執行make menuconfig,并對選項進行配置
??? 1)System Type --->
??? ??? S3C2440 and S3C2442 machines --->
??? ??? ??? 僅保留SMDK2440 與SMDK2440 whith S3C2440 CPU module兩個選項,將其他的選項全部勾掉
??? 2)Kernel Features --->
??? ??? [*]Use the arm EABI to compile the kernel(選中該選項)
??? ???
??? 3)File systems --->
??? ??? a、把與ext2 ext3 ext4相關的所有選項全部去掉
??? ??? b、Miscellaneous filesystems --->
??? ??? ??? <*>yaffs2 file system support(選中此選項)
????????? 去除所有與jffs2相關的選項
保存退出
第九步:執行make?zImage 編譯生成內核.
在arch/arm/boot下生成編譯好的可執行程序zImage.??這個是在vivi下使用的.
???????????????????????????????????????????????????????????????????????????????????????? wenhao@20110609
轉載于:https://www.cnblogs.com/hnrainll/archive/2011/06/09/2076522.html
總結
以上是生活随笔為你收集整理的ARM Linux.2.6.34内核移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法的时间复杂度(python版容易理解
- 下一篇: UnicodeDecodeError: