亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3718 | 回復(fù): 2
打印 上一主題 下一主題

Jx2410上進(jìn)行l(wèi)inux2.6.14內(nèi)核的全移植過(guò)程,實(shí)踐證明成功 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-08-02 09:29 |只看該作者 |倒序?yàn)g覽
Jx2410上進(jìn)行linux2.6.14內(nèi)核的全移植過(guò)程,實(shí)踐證明成功

作者:馮知凡

[引用:我參考網(wǎng)上的資料做了linux2.6.14內(nèi)核的移植。創(chuàng)維特jx2410的配置:cpu:s3c2410, 32M Nor Flash(Intel 28F12, 64M SDRAM。Nor Flash啟動(dòng)。移植有很長(zhǎng)一段時(shí)間了,2.6的移植網(wǎng)上很火的,可是nor flash啟動(dòng)的比較少,希望它對(duì)你有用。] 以上是原作者的話,我參考他的進(jìn)行了移植,但是出現(xiàn)了錯(cuò)誤,因此只能自己一點(diǎn)一點(diǎn)的摸索,最后寫下了這篇文章,希望對(duì)你們有用!
一、準(zhǔn)備必要的文件
1.首先去官方網(wǎng)站下載最新的llinux內(nèi)核                  
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2
2.因?yàn)?/font>linux2.6.14內(nèi)核需要更新版本的編譯器,所以需要下載交叉編譯器
ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2
二、安裝文件
1、把gcc解壓到/usr/local/arm/3.4.1目錄下
2、接下來(lái)需要解壓linux內(nèi)核,輸入命令:
# tar -jxvf linux-2.6.14.tar.bz2
將內(nèi)核解壓到linux-2.6.14目錄下。
三、修改makefile文件                             
內(nèi)核的編譯是根據(jù)makefile文件的指示進(jìn)行的,Makefile文件來(lái)組織內(nèi)核的各模塊之間的關(guān)系,記錄了各個(gè)模塊之間的相互聯(lián)系和依賴關(guān)系。首先修改linux-2.6.14的根目錄下的makfile文件,須改的主要內(nèi)容是目標(biāo)代碼的類型和為編譯內(nèi)核指定一個(gè)編譯器。注釋掉以下內(nèi)容:
  
#ARCH   ?= $(SUBARCH)

   
#CROSS_COMPILE      ?=


修改成如下的內(nèi)容:
   
ARCH     ?= arm

  
CROSS_COMPILE
?=/usr/local/arm/3.4.1/bin/arm-linux-

四、安裝根文件系統(tǒng)
   
1.
首先對(duì)flash進(jìn)行分區(qū)。網(wǎng)上的經(jīng)典文章《Linux 2.6.10 以后版本對(duì)S3C2410的支持》僅提到了對(duì)Nand flash分區(qū)的方法,對(duì)Nor flash不適用。對(duì)Nor flash的分區(qū),是通過(guò)在linux/drivers/mtd/maps下增加特定mapping驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。該目錄下的驅(qū)動(dòng)程序結(jié)構(gòu)相似,可以找一個(gè)來(lái)修改成自己的。我用的是cfi_flagadm.c這個(gè)。
cp cfi_flagadm.c s3c2410.c
/*
把文件的結(jié)構(gòu)給復(fù)制下來(lái),具體的文件見(jiàn)同文件夾內(nèi)面的s3c2410.c */
/* 注意:可能是時(shí)間倉(cāng)促,原作者的修改里面有一些錯(cuò)誤,我都進(jìn)行了改進(jìn),希望對(duì)大家有用 */
   
FLASH_PHYS_ADDRFLASH_SIZE這兩個(gè)宏分別修改成自己板子的flash起始地址和大小。然后修改結(jié)構(gòu)體數(shù)組flagadm_parts添加自己的分區(qū)信息。(具體的修改見(jiàn)同文件夾內(nèi)面的s3c2410.c)
   
接下來(lái)告訴內(nèi)核使用該驅(qū)動(dòng)程序。修改maps目錄下的Kconfig文件,該文件決定出現(xiàn)在menuconfig中的項(xiàng)目,在config MTD_CDB89712之后添加
   
config MTD_S3C2410

           
tristate "gggggg 2410 board"

   
修改該目錄下的Makefile,添加如下內(nèi)容:
   
obj-$(CONFIG_MTD_S3C2410)       += s3c2410.o

   
現(xiàn)在make menuconfig時(shí),在MTD項(xiàng)目中將出現(xiàn)gggggg 2410 board選項(xiàng),選中它并重新編譯內(nèi)核就完成了分區(qū)工作,啟動(dòng)時(shí)將看到分區(qū)信息,F(xiàn)在,內(nèi)核可以檢測(cè)到分區(qū),并找到了壓縮的RAMDISK,并試圖解壓縮。如果你使用smdk2410默認(rèn)配置,這時(shí)會(huì)報(bào)錯(cuò),類似RAMDISKincomplete 云云。解決辦法很簡(jiǎn)單,將內(nèi)核配置中的BLK_DEV_RAM_SIZE的值從默認(rèn)的4096改為8192即可。(在make menuconfig后,見(jiàn)device driver中的block devices里面,同時(shí)最后因?yàn)橛?/font>ramdisk的加載,同時(shí)要選中ram disk support,見(jiàn)圖2)。
   
2.
linux/arch/arm/mach-s3c2410/mach-smdk2410.c中添加ramdisk支持相關(guān)的代碼。具體請(qǐng)參考我的文件貼圖。(見(jiàn)本文件夾內(nèi)面的mach-smdk2410.c文件
   
3.
修改啟動(dòng)參數(shù):
   
修改 linux/arch/arm/kernel/文件夾下的head.S文件如下:
ENTRY(stext)
/****************boot required ggggggg****************/
         mov     
r0,  #0
         mov     
r1,  #0xc1
         ldr     
r2,  =0x30000100
/*********************end****************************/
r0
恒為0,r1architecture ID。r2為啟動(dòng)地址。
五、支持啟動(dòng)時(shí)掛載devfs
為了我們的內(nèi)核支持devfs以及在啟動(dòng)時(shí)并在/sbin/init運(yùn)行之前能自動(dòng)掛載/devdevfs文件系統(tǒng),修改fs/Kconfig文件
找到menu "seudo filesystems"
添加如下語(yǔ)句:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
六、配置內(nèi)核產(chǎn)生.config文件
cp arch/arm/configs/smdk2410_defconfig .config
/*這是為了把當(dāng)前的配置文件設(shè)置為smdk2410_defconfig并有一個(gè)保存的功能*/
make menuconfig
smdk2410_defconfig基礎(chǔ)上,我所增刪的內(nèi)核配置項(xiàng)如下:
Loadable module support >
Enable loadable module support
Automatic kernel module loading
System Type >
S3C2410 DMA support
Boot options >
Default kernel command string:
noinitrd root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,115200
/* 注意這里有錯(cuò)誤,應(yīng)該改成:initrd=0x30800000,0x440000
mem=64M
root=/dev/ram init=/linuxrc
console=ttySAC0,115200
,因?yàn)槲覀兪菑?/font>ramdisk進(jìn)行啟動(dòng)的,因此這里一定得改,不然內(nèi)核無(wú)法正常運(yùn)行 */
/* 注意,修改了幾個(gè)地方:
1.boot options
中的修改為initrd=0x30800000,0x440000 mem=64M root=/dev/ram init=/linuxrc console=ttySAC0,115200。就是要和ppcboot一致;
2.file system
中選中devfs之類的選項(xiàng);
3.device driver
中的block devices要選中ram disk support (不然會(huì)找不到文件系統(tǒng))見(jiàn)圖(1*/
#console=ttySAC0,115200使kernel啟動(dòng)期間的信息全部輸出到串口#   
# linux2.6內(nèi)核對(duì)于串口的命名改為ttySAC0,但這不影響用戶空間的串口編
程。用戶空間的串口編程針對(duì)的仍是/dev/ttyS0等。
Floating point emulation >
NWFPE math emulation
This is necessary to run most binaries!
#接下來(lái)要做的是對(duì)內(nèi)核MTD子系統(tǒng)的設(shè)置
Device Drivers >
Memory Technology Devices (MTD) >
MTD partitioning support
#支持MTD分區(qū),這樣我們?cè)谇懊嬖O(shè)置的分區(qū)才有意義
Command line partition table parsing
#支持從命令行設(shè)置flash分區(qū)信息,靈活
RAM/ROM/Flash chip drivers >
<*> Detect flash chips by Common Flash
Interface (CFI) probe
<*> Detect nonCFI
AMD/JEDECcompatible flash chips
<*> Support for Intel/Sharp flash chips
<*> Support for AMD/Fujitsu flash chips
<*> Support for ROM chips in bus mapping
NAND Flash Device Drivers >
<*> NAND Device Support
<*> NAND Flash support for S3C2410/S3C2440 SoC
Character devices >
Nonstandard serial port support
S3C2410 RTC Driver
#接下來(lái)做的是針對(duì)文件系統(tǒng)的設(shè)置,本人實(shí)驗(yàn)時(shí)目標(biāo)板上要上的文件系統(tǒng)是ext2,故做如下配置
File systems >
<*> Second extended fs support #ext2的支持
Pseudo filesystems >
/proc file system support
Virtual memory file system support (former shm fs)
/dev file system support (OBSOLETE)
Automatically mount at boot (NEW)
#這里會(huì)看到我們前先修改fs/Kconfig的成果,devfs已經(jīng)被支持上了
Miscellaneous filesystems >
<*> Compressed ROM file system support (cramfs)
#支持cramfs
Network File Systems >
<*> NFS file system support
保存退出,產(chǎn)生.config文件.
.config文件能從提供的2.4.14.1的內(nèi)核包中找到,文件名為config.back.
七、編譯內(nèi)核
make zImage
八、下載到開(kāi)發(fā)板就可以啟動(dòng)了。
九、然后就是進(jìn)行其它驅(qū)動(dòng)的移植了,這些是后話了。


論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-08-02 09:31 |只看該作者

Jx2410上進(jìn)行l(wèi)inux2.6.14內(nèi)核的全移植過(guò)程,實(shí)踐證明成功(附錄)

附錄:

mach-smdk2410.c

/***********************************************************************

*

* linux/arch/arm/mach-s3c2410/mach-smdk2410.c

*

* Copyright (C) 2004 by FS Forth-Systeme GmbH

* All rights reserved.

*

* $Id: mach-smdk2410.c,v 1.1 2004/05/11 14:15:38 mpietrek Exp $

* @Author: Jonas Dietsche

*

* This program is free software; you can redistribute it and/or

* modify it under the terms of the GNU General Public License as

* published by the Free Software Foundation; either version 2 of

* the License, or (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place, Suite 330, Boston,

* MA 02111-1307 USA

*

* @History:

* derived from linux/arch/arm/mach-s3c2410/mach-bast.c, written by

* Ben Dooks <ben@simtec.co.uk>

*

* 10-Mar-2005 LCVR  Changed S3C2410_VA to S3C24XX_VA

* 20-Sep-2005 BJD  Added static to non-exported items

*

***********************************************************************/



#include <linux/kernel.h>

#include <linux/types.h>

#include <linux/interrupt.h>

#include <linux/list.h>

#include <linux/timer.h>

#include <linux/init.h>



#include <asm/mach/arch.h>

#include <asm/mach/map.h>

#include <asm/mach/irq.h>



#include <asm/hardware.h>

#include <asm/io.h>

#include <asm/irq.h>

#include <asm/mach-types.h>



#include <asm/arch/regs-serial.h>



/********************gggggggggggggggggggggg************************************/

#include <asm-arm/setup.h>

#include <linux/initrd.h>

#include <linux/kdev_t.h>

#include <linux/major.h>

#include <asm-arm/arch-s3c2410/fb.h>

//#include <asm-arm/mach/map.h>

//#include <asm-arm/arch-s3c2410/gggggg.h>

//**********************end ***************************************************/



#include "devs.h"

#include "cpu.h"



static struct map_desc smdk2410_iodesc[] __initdata = {

  /* nothing here yet */

};



#define UCON S3C2410_UCON_DEFAULT

#define ULCON S3C2410_LCON_CS8 | S3C2410_LCON_PNONE | S3C2410_LCON_STOPB

#define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE



/*****************added---gggggggggggggg***************************************/

extern dev_t ROOT_DEV;

extern unsigned long  initrd_start ,initrd_end;

extern  void __init setup_ramdisk(int doload, int prompt, int image_start, unsigned int rd_sz);



void __init setup_ramdisk(int doload, int prompt, int image_start, unsigned int rd_sz)

{

/* #ifdef CONFIG_BLK_DEV_RAM*/

       extern int rd_size, rd_image_start, rd_prompt, rd_doload;

             rd_image_start = image_start;

    rd_prompt = prompt;

       rd_doload = doload;

              if (rd_sz)

                rd_size = rd_sz;

/* #endif*/

}



static void __init setup_initrd(unsigned int start, unsigned int size)

{

#ifdef CONFIG_BLK_DEV_INITRD

         if (start == 0)

                   size = 0;

         initrd_start = start;

         initrd_end   = start + size;

#endif

}

static void __init fixup_smdk(struct machine_desc *desc, struct param_struct *params, char **cmdline, struct meminfo *mi)

{

         /* TODO */

#if 0         /* hacked by nandy. Is these codes need ? */

         struct tag *t = (struct tag *)params;

         if (t->hdr.tag != ATAG_CORE)

                   convert_to_tag_list(params, 1);

         if (t->hdr.tag != ATAG_CORE) {

                   t->hdr.tag = ATAG_CORE;

                   t = tag_next(t);

                   t->hdr.tag = ATAG_MEM;

                   t->u.mem.start = 0x0c000000;

                   t->u.mem.size = 32 * 1024 * 1024;

         }

#endif

#if 1 /* used in asm/kernel/setup.c and asm/arch/arch.c  */

         #define S3C2410_MEM_SIZE     (64*1024*1024)

         #define PA_SDRAM_BASE         0x30000000         /* used in asm/arch/arch.c     */

         #define RAMDISK_DN_ADDR       0x30800000       /* used in asm/arch/arch.c     */

         #define ZIP_RAMDISK_SIZE      (10*1024*1024)            /* used in asm/arch/arch.c     */

         /* setup ramdisk */

         mi->bank[0].start = PA_SDRAM_BASE;

         mi->bank[0].size =  S3C2410_MEM_SIZE;

         mi->bank[0].node =  0;

         mi->nr_banks = 1;

                                                                                 

         ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);

#ifdef CONFIG_BLK_DEV_RAM_SIZE

         setup_ramdisk( 1, 0, 0, CONFIG_BLK_DEV_RAM_SIZE);

#else

         setup_ramdisk( 1, 0, 0, BLK_DEV_RAM_SIZE);

#endif

         setup_initrd( __phys_to_virt(RAMDISK_DN_ADDR), ZIP_RAMDISK_SIZE);

#endif

}

/***************************************ggggggggggggggg****************************/



/********************lcd ggggggggggggggggggggggggggg*******************************/



   static struct s3c2410fb_mach_info gggggg_lcdcfg  __initdata = {

                   .fixed_syncs= 0,

                   .regs={

                            .lcdcon1=   S3C2410_LCDCON1_TFT16BPP | S3C2410_LCDCON1_TFT | S3C2410_LCDCON1_CLKVAL(2),  

                            .lcdcon2=   S3C2410_LCDCON2_VBPD(10) | S3C2410_LCDCON2_LINEVAL(479) | S3C2410_LCDCON2_VFPD(25) | S3C2410_LCDCON2_VSPW(30),

                            .lcdcon3=   S3C2410_LCDCON3_HBPD(2) | S3C2410_LCDCON3_HOZVAL(639) | S3C2410_LCDCON3_HFPD(4),

                            .lcdcon4=   S3C2410_LCDCON4_MVAL(13) | S3C2410_LCDCON4_HSPW(79),

                            .lcdcon5=   S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_HWSWP,

                   },

                   .lpcsel=    0x0,

                   .gpccon=           0xaaaaaaaa,

                   .gpccon_mask=   0xffffffff,

                   .gpcup=         0xffffffff,

                   .gpcup_mask=    0xffffffff,

                   .gpdcon=       0xaaaaaaaa,

                   .gpdcon_mask=   0x0,

                   .gpdup=        0xffffffff,

                   .gpdup_mask=    0xffffffff,

                   .width=          640,

                   .height=          480,

                   .xres=           {640,640,640},

                   .yres=           {480,480,480},

                 .bpp=             {16,16,16},

};

static void __init smdk2410_init(void){

         set_s3c2410fb_info(&gggggg_lcdcfg);

}

/**********************end gggggggggggggg**********************************************/



static struct s3c2410_uartcfg smdk2410_uartcfgs[] = {

         [0] = {

                   .hwport          = 0,

                   .flags              = 0,

                   .ucon              = UCON,

                   .ulcon             = ULCON,

                   .ufcon            = UFCON,

         },

         [1] = {

                   .hwport          = 1,

                   .flags              = 0,

                   .ucon              = UCON,

                   .ulcon             = ULCON,

                   .ufcon            = UFCON,

         },

         [2] = {

                   .hwport          = 2,

                   .flags              = 0,

                   .ucon              = UCON,

                   .ulcon             = ULCON,

                   .ufcon            = UFCON,

         }

};



static struct platform_device *smdk2410_devices[] __initdata = {

         &s3c_device_usb,

         &s3c_device_lcd,

         &s3c_device_wdt,

         &s3c_device_i2c,

         &s3c_device_iis,

         &s3c_device_nand,

};



static struct s3c24xx_board smdk2410_board __initdata = {

         .devices       = smdk2410_devices,

         .devices_count = ARRAY_SIZE(smdk2410_devices)

};



static void __init smdk2410_map_io(void)

{

         s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));

         s3c24xx_init_clocks(0);

         s3c24xx_init_uarts(smdk2410_uartcfgs, ARRAY_SIZE(smdk2410_uartcfgs));

         s3c24xx_set_board(&smdk2410_board);

}



static void __init smdk2410_init_irq(void)

{

         s3c24xx_init_irq();

}



MACHINE_START(SMDK2410, "SMDK2410" /* @TODO: request a new identifier and switch

                                         * to SMDK2410 */

         /* Maintainer: Jonas Dietsche */

         .phys_ram         = S3C2410_SDRAM_PA,

         .phys_io   = S3C2410_PA_UART,

         .io_pg_offst      = (((u32)S3C24XX_VA_UART) >> 1 & 0xfffc,

         .boot_params   = S3C2410_SDRAM_PA + 0x100,

         .map_io             = smdk2410_map_io,

         .init_irq     = smdk2410_init_irq,

         .timer                  = &s3c24xx_timer,

         /*******************added gggggggggggggg****************************/

         .fixup  = fixup_smdk,

         .init_machine   = smdk2410_init,



MACHINE_END



s3c2410.c

/*

*  Copyright ?2001 Flaga hf. Medical Devices, K醨i Dav眇sson <kd@flaga.is>

*

*  $Id: cfi_flagadm.c,v 1.14 2004/11/04 13:24:14 gleixner Exp $

*  

*  This program is free software; you can redistribute  it and/or modify it

*  under  the terms of  the GNU General  Public License as published by the

*  Free Software Foundation;  either version 2 of the  License, or (at your

*  option) any later version.

*

*  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED

*  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF

*  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN

*  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,

*  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT

*  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF

*  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON

*  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT

*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF

*  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*

*  You should have received a copy of the  GNU General Public License along

*  with this program; if not, write  to the Free Software Foundation, Inc.,

*  675 Mass Ave, Cambridge, MA 02139, USA.

*/



#include <linux/module.h>

#include <linux/types.h>

#include <linux/kernel.h>

#include <linux/init.h>

#include <asm/io.h>

#include <linux/mtd/mtd.h>

#include <linux/mtd/map.h>

#include <linux/mtd/partitions.h>





/* We split the flash chip up into four parts.

* 1: bootloader firts 128k                           (0x00000000 - 0x0001FFFF) size 0x020000

* 2: kernel 640k                                           (0x00020000 - 0x000BFFFF) size 0x0A0000

* 3: compressed 1536k root ramdisk       (0x000C0000 - 0x0023FFFF) size 0x180000

* 4: writeable diskpartition (jffs)(0x00240000 - 0x003FFFFF) size 0x1C0000

*/

/*######################modified according to jx2410*/

#define FLASH_PHYS_ADDR 0x0

#define FLASH_SIZE 0x02000000  



#define FLASH_PARTITION0_ADDR 0x0000000

#define FLASH_PARTITION0_SIZE 0x00080000



#define FLASH_PARTITION1_ADDR 0x00080000

#define FLASH_PARTITION1_SIZE (0x00800000-0x00080000)



#define FLASH_PARTITION2_ADDR 0x00800000

#define FLASH_PARTITION2_SIZE (0x02000000-0x00800000)



#define FLASH_PARTITION3_ADDR 0x02000000

#define FLASH_PARTITION3_SIZE 0x0





struct map_info gggggg_map = {

                   .name =             "gggggg flash device",

                   .size =                 FLASH_SIZE,

                   .bankwidth =    4,

};



struct mtd_partition gggggg_parts[] = {

         {

                   .name =             "Bootloader",

                   .offset       =       FLASH_PARTITION0_ADDR,

                   .size =                 FLASH_PARTITION0_SIZE

         },

         {

                   .name =             "jffs2(8m)",

                   .offset =    FLASH_PARTITION1_ADDR,

                   .size =                 FLASH_PARTITION1_SIZE

         },

         {

                   .name =             "reserved",

                   .offset =    FLASH_PARTITION2_ADDR,

                   .size =                 FLASH_PARTITION2_SIZE

         },

         {      

                   .name =             "nothing",

                   .offset =    FLASH_PARTITION3_ADDR,

                   .size =                 FLASH_PARTITION3_SIZE

         }

};



#define PARTITION_COUNT (sizeof(gggggg_parts)/sizeof(struct mtd_partition))



static struct mtd_info *mymtd;



int __init init_gggggg(void)

{      

         printk(KERN_NOTICE "S3C2410-gggggg flash device: %x at %x\n",

                            FLASH_SIZE, FLASH_PHYS_ADDR);

         

         gggggg_map.phys = FLASH_PHYS_ADDR;

         gggggg_map.virt = ioremap(FLASH_PHYS_ADDR,

                                               FLASH_SIZE);



         if (!gggggg_map.virt) {

                   printk("Failed to ioremap\n";

                   return -EIO;

         }



         simple_map_init(&gggggg_map);



         mymtd = do_map_probe("cfi_probe", &gggggg_map);

         if (mymtd) {

                   mymtd->owner = THIS_MODULE;

                   add_mtd_partitions(mymtd, gggggg_parts, PARTITION_COUNT);

                   printk(KERN_NOTICE "S3C2410-gggggg flash device initialized\n";

                   return 0;

         }



         iounmap((void *)gggggg_map.virt);

         return -ENXIO;

}



static void __exit cleanup_gggggg(void)

{

         if (mymtd) {

                   del_mtd_partitions(mymtd);

                   map_destroy(mymtd);

         }

         if (gggggg_map.virt) {

                   iounmap((void *)gggggg_map.virt);

                   gggggg_map.virt = 0;

         }

}



module_init(init_gggggg);

module_exit(cleanup_gggggg);





MODULE_LICENSE("GPL";

MODULE_AUTHOR("K醨i Dav眇sson <kd@flaga.is>";

MODULE_DESCRIPTION("MTD map driver for S3C2410  digital module";

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-08-02 10:19 |只看該作者
為什么移植2.6.14的? 2.6.24不是更好嗎
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP