乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Linux 2.6.27 for ARM9/S3C2410 內(nèi)核移植筆記

       WUCANADA 2013-01-05

      [原創(chuàng)]Linux 2.6.27 for ARM9/S3C2410 內(nèi)核移植筆記

      分類: Linux 嵌入式系統(tǒng) / ARM 5530人閱讀 評(píng)論(6) 收藏 舉報(bào)

      2.6.27是Linux內(nèi)核的最新版本。昨天中午下載的,用了半天的時(shí)間完成了針對(duì)ARM CPU的基本配置,第一次做Linux移植就出乎意料的順利,其實(shí)這主要得益于Linux內(nèi)核優(yōu)良的設(shè)計(jì)和該版本對(duì)ARM處理器近乎完美的支持!

      http://blog.csdn.net/rssn_net/article/details/3073302

      關(guān)鍵詞: Linux 2.6.27 內(nèi)核 移植 ARM S3C2410

      再寫一遍:
        下面把我的整個(gè)配置過(guò)程與大家分享一下:

      第一部分 準(zhǔn)備工作
      1. 下載Linux內(nèi)核:
          從 http://www./pub/linux/kernel/v2.6/ 下載最新版的,tar.gz和tar.bz2 均可,我下載的是linux-2.6.27.tar.bz2這個(gè),使用 tar -jxvf linux-2.6.27.tar.bz2 解壓縮,cd linux-2.6.27 轉(zhuǎn)到內(nèi)核代碼根目錄;

      2. 下載安裝并配置 arm-linux-gcc 工具鏈:
          以前配置過(guò)的話,該步可以忽略。我用的是3.4.1版本,建議安裝到/usr/local/arm/3.4.1目錄下,記得要設(shè)置一下工具鏈程序的搜索目錄, export PATH=$PATH:/usr/local/arm/3.4.1/bin 即可;

      第二部分 代碼配置
      3. 修改Makefile:
          # gedit Makefile
      ARCH    ?=  arm
      CROSS_COMPILE  ?= /usr/local/arm/3.4.1/bin/arm-linux-

      4. 修改C程序文件,指明Flash分區(qū)信息,添加NAND Flash驅(qū)動(dòng)支持:
        總共只有兩個(gè)文件需要修改:
          /arch/arm/plat-s3c24xx/common-smdk.c
          /arch/arm/plat-s3c24xx/devs.c
        (1) 指明分區(qū)信息:
          common-smdk.c 中找到 static struct mtd_partition smdk_default_nand_part[],根據(jù)自己板子的分區(qū)結(jié)構(gòu)修改,例如我的vivi下的分區(qū)信息為:
      name              offset        size        flag
      ------------------------------------------------
      vivi            : 0x00000000    0x00020000     0  128k
      param           : 0x00020000    0x00010000     0   64k
      kernel          : 0x00040000    0x002c0000     0    2M+768k
      root            : 0x00300000    0x01d00000    16   29M
      rootfs          : 0x02000000    0x01f00000     0   31M

      我的Flash分了4個(gè)區(qū),這個(gè)變量就應(yīng)設(shè)置為:
      static struct mtd_partition smdk_default_nand_part[] = {
          [0] = {
              .name    = "vivi",
              .offset    = 0x00000000,
              .size    = 0x00020000,
          },
          [1] = {
              .name    = "param",
              .offset = 0x00020000,
              .size    = 0x00010000,
          },
          [2] = {
              .name    = "kernel",
              .offset = 0x00040000,
              .size    = 0x002c0000,
          },
          [3] = {
              .name    = "root",
              .offset    = 0x00300000,
              .size    = 0x01d00000,
          },
          [4] = {
              .name    = "rootfs",
              .offset    = 0x02000000,
              .size    = 0x01f00000,
          },
      };
      與上面的信息一一對(duì)應(yīng),很容易理解;

        (2) 建立NAND Flash芯片支持:
          common-smdk.c 中找到 static struct s3c2410_platform_nand smdk_nand_info,修改為:
      /*static*/
      struct s3c2410_platform_nand smdk_nand_info = {
          .tacls        = 0,
          .twrph0        = 30,
          .twrph1        = 0,
          .nr_sets    = ARRAY_SIZE(smdk_nand_sets),
          .sets        = smdk_nand_sets,
      };
      這 個(gè)變量是與NAND Flash時(shí)序有關(guān)的設(shè)置,talcs, twrph0, twrph1 的含義見(jiàn)S3C2410手冊(cè)的6-3,隨著板子的Flash芯片不同這里的值可能會(huì)有些差別,我的是K9S1208型號(hào)的;另外注意,一定要將變量前面的 static修飾詞刪除或者注釋掉,原因在后面;

        (3) 加入NAND Flash芯片支持到NAND Flash驅(qū)動(dòng):
          devs.c 中找到 struct platform_device s3c_device_nand,在前面加上前面 smdk_nand_info 變量的 extern,后面加上smdk_nand_info的指針引用,具體代碼如下:
      extern struct s3c2410_platform_nand smdk_nand_info;
      struct platform_device s3c_device_nand = {
          .name          = "s3c2410-nand",
          .id          = -1,
          .num_resources      = ARRAY_SIZE(s3c_nand_resource),
          .resource      = s3c_nand_resource,
          /* Add the NAND Flash device */
          .dev=
          {
              .platform_data = &smdk_nand_info,
          }
      };
        (4)  指定啟動(dòng)時(shí)初始化:
          找到這一段代碼:
      static struct platform_device __initdata *smdk_devs[] = {
          &s3c_device_nand,
          &smdk_led4,
          &smdk_led5,
          &smdk_led6,
          &smdk_led7,
      };
      這段代碼指定了內(nèi)核啟動(dòng)時(shí)初始化的設(shè)備,其中s3c_device_nand是必須有的,因?yàn)槲覀冃枰狽AND Flash驅(qū)動(dòng)來(lái)掛載根文件系統(tǒng),其余的根據(jù)需可自行添加,這里我們使用默認(rèn)設(shè)置,不做修改。

      5. 禁止Flash ECC校驗(yàn):據(jù)說(shuō)vivi或uboot通過(guò)軟件算法產(chǎn)生的ecc校驗(yàn)碼于S3C2410 NAND Flash 控制器產(chǎn)生的ecc校驗(yàn)碼不一致,所以我們?cè)谶@里選擇禁止內(nèi)核ECC校驗(yàn),具體做法如下:
        在drivers/mtd/nand/s3c2410.c文件中找到s3c2410_nand_init_chip()函數(shù),在函數(shù)體最后加上 chip->ecc.mode  = NAND_ECC_NONE; 保存,退出。

      以下為內(nèi)核配置部分

      6. 支持啟動(dòng)時(shí)掛載devfs:
        由于2.6內(nèi)核去掉了對(duì)devfs的支持,這里我們需要手動(dòng)將其加上,并在/sbin/init運(yùn)行之前能自動(dòng)掛上/dev為devfs文件系統(tǒng),修改fs/Kconfig文件:
      找到menu "Pseudo filesystem",在其后添加如下語(yǔ)句:
      config DEVFS_FS
          bool "/dev file system support (OBSOLETE)"
          default y
      config DEVFS_MOUNT
          bool "Automatically mount at boot"
          default y
          depend on DEVFS_FS

      7. 配置內(nèi)核產(chǎn)生.config文件
        # cp arch/arm/configs/s3c2410_defconfig ./.config
        # make menuconfig
        絕大部分選項(xiàng)都先采用默認(rèn)設(shè)置,待移植成功后我們?cè)龠M(jìn)一步裁減,這里只設(shè)置一項(xiàng):
      Boot Options ---> Default kernel command string:  noinitrd root=/dev/mtdblock4 console=ttySAC0,115200
      注:因?yàn)槲业腇lash分了5個(gè)區(qū),標(biāo)識(shí)符分別為mtdblock0、mtdblock1... mtdblock4,第五個(gè)分區(qū)(也就是mtdblock4)是我們存放cramfs根文件系統(tǒng)的分區(qū),故設(shè)置 root=/dev/mtdblock4。

      到此,內(nèi)核配置完成

      第三部分 編譯測(cè)試
      8. 編譯內(nèi)核
        # make zImage

      9. 載入內(nèi)核映像,試運(yùn)行: 可以先用tftp將zImage映像下載到RAM某個(gè)地址(通常是0x30008000),然后用vivi命令 go 0x30008000 0 193 跳到這個(gè)地址執(zhí)行(0和193是傳遞給內(nèi)核的參數(shù),用寄存器r0, r1存放),之后如果在終端中打印出設(shè)備初始化信息,那恭喜你,你已經(jīng)成功一大半了!否則,回過(guò)頭去檢查是否有遺漏或錯(cuò)誤的地方。

      第四部分 應(yīng)用程序的移植
        包括busybox的移植、啟動(dòng)腳本的編寫、cramfs映像的創(chuàng)建等,請(qǐng)參見(jiàn)《Linux系統(tǒng)移植》文檔的《應(yīng)用程序移植》章節(jié)

      再寫一遍關(guān)鍵詞: S3C2410 ARM 內(nèi)核移植 Linux 2.6.27


      參考資料:
        劉勇等. Linux系統(tǒng)移植. ---, ---  http://www./bbs/data/uploads/linux_mig_release_G4oyxcsIVyIZ.pdf
      所用設(shè)備:
        陽(yáng)初S3C2410開(kāi)發(fā)板V2.3版  http://www./

       ?。ㄔ瓌?chuàng)文章,轉(zhuǎn)載時(shí)請(qǐng)注明本文網(wǎng)址)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多