国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 5040|回復: 8
打印 上一主題 下一主題

Linux2.6.36移植到飛凌S3C6410開發板 步驟

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2011-2-16 15:04:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本文轉引自 飛凌OK6410 Linux討論區 http://www.witech.com.cn,感謝作者的無私奉獻。
作者:長夢   郵箱:mountmeng1990@163.com     QQ:1553625427
              今天終于讓linux內核在飛凌ok6410的板子上跑起來了,想來也是艱辛,為了移植成功,斷斷續續做了將近兩個月的努力,期間郁悶不可言語形容啊,   了解其中艱辛,將自己移植步驟與心得與大家分享,希望對初踏次領域之人有所幫助,我所寫的成果一部分也是網上前輩的所作,并非本人原創。
  
一、       移植環境
主 機:VMWare-Ubuntu
開發板:飛凌OK6410 nandflash,Kernel:2.6.36.2
編譯器:arm-linux-gcc-4.3.2.tgz
u-boot:u-boot-1.1.6
注:編譯器和u-boot 都是飛凌開發板自帶的
二、  源碼獲得
       內核源碼到http://www.all.kernel.org/下載;
三、    移植步驟:
1.將Linux2.6.34.2內核源碼放到工作目錄文件夾下,并解壓。
#tar xzvf linux2.6.36.2.tar.gz –c /
#pwd
/
# cd linux2.6.36.2
       2. 修改內核源碼根目錄下的Makefile文件(CROSS_COMPILE    =的值因個人情況而定,其他可以照做,藍色部分為修改部分。)
       #gedit Makefile
......
#SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
#                  -e s/arm.*/arm/ -e s/sa110/arm/ \
#                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
#                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
......
#ARCH        ?= $(SUBARCH)
#CROSS_COMPILE    ?=
ARCH        = arm
CROSS_COMPILE    = /usr/local/arm/usr/local/arm/4.3.2/bin/arm-none-linux- gnueabi-
3添加NandFlash分區信息.
修改arch/arm/mach-s3c64xx/mach-smdk6410.c文件,添加Nand Flash的分區信息和Nand Flash的硬件信息。(藍色字體為添加部分)
#pwd
        #gedit mach-smdk6410.c               //add here
// 注意:此處的nandflash分區信息是飛凌自帶的2.6.28的內核設置,由于此處要用到uboot是飛凌的,所以分區信息也要按人家的來
添加頭文件
#include
#include
#include
#include
struct mtd_partition s3c_partition_info[] = {      
                   {         
                      .name          = "Bootloader",
                       .offset               = 0,   
                      .size          = (256*SZ_1K),   
                        .mask_flags    =MTD_CAP_NANDFLASH,  
                     },   
                     {        
                      .name          = "Kernel",   
                     .offset               = (256*SZ_1K),     
                     .size          = (4*SZ_1M) - (256*SZ_1K),   
                      .mask_flags    = MTD_CAP_NANDFLASH,     
                     },
#if defined      (CONFIG_SPLIT_ROOT_FILESYSTEM)
                {           
                        .name          = "Rootfs",
                        .offset               = (4*SZ_1M),   
                         .size          = (80*SZ_1M),//
                },
#endif        
                  {         
                          .name          = "File System",
                          .offset               = MTDPART_OFS_APPEND,  
                       .size          = MTDPART_SIZ_FULL,   
                  }
};
static struct s3c2410_nand_set s3c_nandset[]={  
       [0]=         {        
                   .name            ="s3c24xx-nand",   
                  .nr_chips        = 1,  
                    .nr_partitions   =ARRAY_SIZE(s3c_partition_info),        
                 .partitions   =s3c_partition_info,
                    }
};
static struct s3c2410_platform_nand s3c_platform={     
              .tacls =25,           
            .twrph0 =55,        
            .sets = &s3c_nandset,      
             .nr_sets =ARRAY_SIZE(s3c_nandset),};
//add here…
static struct platform_device *smdk6410_devices[] __initdata = {
#ifdef CONFIG_SMDK6410_SD_CH0     
    &s3c_device_hsmmc0,
#endif
#ifdef CONFIG_SMDK6410_SD_CH1      
     &s3c_device_hsmmc1,
#endif        
   &s3c_device_i2c0,     
     &s3c_device_i2c1,      
    &s3c_device_fb,      
    &s3c_device_ohci,     
      &s3c_device_usb_hsotg,   
     &s3c64xx_device_iisv4,  
       //add here      
     &s3c_device_nand,      
   //add here…
}
static void __init smdk6410_map_io(void){   
       u32 tmp;     
      //add here     
      s3c_device_nand.name = "s3c6410-nand";   
       //add here…

}
static void __init smdk6410_machine_init(void){      
      u32 cs1;      
     s3c_i2c0_set_platdata(NULL);  
       s3c_i2c1_set_platdata(NULL);   
      s3c_fb_set_platdata(&smdk6410_lcd_pdata);  
       //add here      
     s3c_nand_set_platdata(&s3c_platform);//      
     //add here…
}

5.配置內核。(arch/arm/configs/目錄下是一般內核的默認配置)
支持NandFlash
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
MTD partitioning support
<*> NAND Device Support --->
<*> NAND Flash support for S3C/S3C SoC
    再把這個選項選上  
device drivers ->
Memory Technology Device (MTD) support --->
Caching block device access to MTD devices
(此出勾選可防止出現:VFS: Cannot open root device "mtdblock2" or unknown-block(2,0)  錯誤)
保存退出
復制config文件,編譯內核
#pwd
#/linux2.6.34.2
#cp –f arch/arm/configs/s3c6400_defconfig .config
可以使用make menuconfig對剛剛配置的內核根據具體的情況進行修改,開始我沒有進行修改直接make zImage,最后在arch/arm/boot/目錄下生成zImage鏡像文件。
6.編譯內核   make zImage
  下載到板子上,發現如下問題,此問題郁悶我最久,
…………………………………..
CPU: Testing write buffer coherency: ok
s3c6400-nand: failed to claim resource 0
WARNING: at drivers/base/core.c:130 device_release+0x70/0x84()
…………………………………………………….
------------[ cut here ]------------
WARNING: at drivers/base/core.c:130 device_release+0x70/0x84()
Device 's3c64xx-rtc' does not have a release() function, it is broken and must be fixed.
Modules linked in:
……………………………………………………….
[] (kernel_init+0x94/0x14c) from [] (kernel_thread_exit+0x0/0x8)
---[ end trace 1b75b31a2719ed1e ]---
------------[ cut here ]------------
WARNING: at drivers/base/core.c:130 device_release+0x70/0x84()
Device 's3c64xx-pata.0' does not have a release() function, it is broken and must be fixed.
Modules linked in:
……………………………………………………………………………..
這個問題就是在mach-smdk6410.c 中的static struct platform_device *smdk6410_devices[] __initdata = {
……………………………………………….
       &smdk6410_smsc911x,
       &s3c_device_adc,
       &s3c_device_cfcon,
       &s3c_device_rtc,
       &s3c_device_ts,
       &s3c_device_wdt,
        &s3c_device_nand,
};  結構體中 所有設備都找不到釋放函數,經過分析,可能是這些板級設備初始化時出現問題,所以系統調用釋放資源的函數,可是內核中沒有這些函數(可能是沒有必要吧,所以內核中沒有定義! 此上純屬個人胡猜,希望高手指正),所以出現如上問題,通過我大量的分析,問題在static struct resource s3c_nand_resource[](路徑:arch./arm/plat-samsung) 這個機構體中,
static struct resource s3c_nand_resource[] = {
     [0] = {
              .start = S3C_PA_NAND,
              .end   = S3C_PA_NAND + SZ_1M-1,
              .flags = IORESOURCE_MEM,
       }
};
     .end   = S3C_PA_NAND + SZ_1M-1, 這個值后面再減去1,就可以了,這是對比其他的設備資源結構做出的修改,此處涉及到這些設備的總線地址范圍,我琢磨著出現上述問題,就是這個總線地址沖突了,希望高手指正啊!(內核中的定義,怎么會出現錯誤呢,這地方我還真搞不懂啊),不知道自己修改的合適不合適
所以解決方法就是修改arch./arm/plat-samsung/dev-nand.c 中的
static struct resource s3c_nand_resource[] = {
     [0] = {
              .start = S3C_PA_NAND,
              .end   = S3C_PA_NAND + SZ_1M-1,
              .flags = IORESOURCE_MEM,
       }
};
.end   = S3C_PA_NAND + SZ_1M-1,  減去一就行了
7.再次編譯內核,下載運行:
…………………………………
ifconfig: socket: Function not implemented
Try to bring eth0 interface up......ifconfig: socket: Function not implemented
ifconfig: socket: Function not implemented
ifconfig: socket: Function not implemented
route: socket: Function not implemented
Done
                                 
Starting Qtopia, please waiting...
Please press Enter to activate this console. touch...
說明內核已經成功引導啟動文件系統,只不過現在的內核沒有觸摸板驅動,下一步你就可以移植一下觸摸板驅動了
此教程只是本人所遇到問題的總結,一些問題只做參考,交流,并不具備通用性,如按照上述步驟遇到問題,聯系我,可以幫著一起解決,本人菜鳥,教程制作倉卒,如有錯誤,請大家見諒,
引用文章:
http://hi.baidu.com/serial_story ... fd0edd267fb500.html
http://www.linuxidc.com/Linux/2010-08/27828p3.htm
http://www.witech.com.cn
沙發
發表于 2011-2-17 10:52:46 | 只看該作者
Thanks for sharing your findings.
板凳
發表于 2011-3-28 15:58:33 | 只看該作者
mark
地板
發表于 2011-4-30 07:46:23 | 只看該作者
看看
地下室
發表于 2011-11-11 14:24:48 | 只看該作者
支持一下!!!
6
發表于 2011-11-24 21:00:32 | 只看該作者
好東西就要支持下哈。
7
發表于 2012-3-7 14:42:35 | 只看該作者
謝謝分享
8
發表于 2012-3-18 11:27:45 | 只看該作者
謝謝
9
發表于 2012-4-3 09:41:17 | 只看該作者
這個 還是要頂的
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲狠狠婷婷综合久久蜜桃| 亚洲薄码区| 四虎精品免费久久| 亚洲永久精品ww47| 亚洲毛片一级带毛片基地| 深夜视频在线观看免费 | 天堂婷婷| 亚洲国产精品自产在线播放| 成年无码av片| 熟女人妻-蜜臀AV-首页| 最新2017年韩国伦理片在线| 四虎影视永久在线精品免费| 亚洲成人自拍| 一级毛片看一个| 极品少妇高潮啪啪AV无码吴梦梦| 亚洲精品中文字幕制| 天天色国产| 午夜影院网页| 亚洲综合色网| 韩国电影久久| 在线免费观看毛片| 欧美小视频在线| 在线观看国产日韩| 中文字幕日本在线| 暖暖 免费 高清 日本在线| 特级a毛片| 日韩风月片| 午夜国产精品福利在线观看| 嘟嘟嘟在线视频免费观看高清中文| 视频一区国产第一页| 欧洲亚洲精品| 午夜亚洲国产精品福利| 亚洲永久| 久久久久久久99精品免费观看| 亚洲二区在线视频| 日本一区二区高清免费不卡| 天堂中文在线免费观看| 成人手机在线| 亚洲成人一区二区| 一级欧美视频| 在线亚州|