arm9 mini2440 supervivi燒寫方法


一:

使用JLink V8燒寫Nor Flash方法:

一. 做好準備工作:

比如安裝JLink驅動,USB轉串口驅動(如果是筆記本)...

二. 將開發板跳線撥到Nor端,連接好JLink,JLink另外一端連接在筆記本USB端口上,開發板上電。

三. 燒寫:

(1)打開 開始->SEGGER->J-Link ARM V4.081->J-Flash ARM;

(2)File->Open Project,打開s3c2440a_embedclub.jflash(此文件在)

(3)Options->Project settings

選擇Flash,點擊Select flash device,選中開發板對應Nor Flash型號。在這裏需要注意,mini2440的nor flash型號是SST39VF1601

(4)Target->connect

(5)File->Open,打開需要下載的鏡像文件,我選擇的是supervivi-128.bin文件,在mini2440官方光盤裏有。

接下來需要你選擇的都默認。

(6)Target->Program

先擦出再燒寫。

(7)燒寫完畢,斷電,取下JLink。

(8)重新上電,在超級終端中看到supervivi啓動界面:

linux

參考網址:http://www.linuxidc.com/Linux/2013-01/77393.htm

只有Superboot才能配合使用MiniTools的USB下載功能,supervivi不可以。


二:

linux2.6.32內核移植到mini2440之supervivi

平臺:Fedora9 + mini2440(64M Flash)
交叉編譯工具:arm-linux-gcc 4.4.3
 
由於本文章主要是針對內核的移植,所以有關supervivi 和文件系統的製作在此不作講解,supervivi採用mini2440官網上的最新supervivi,由於本人的開發板是64M的,最新的linux系統下的文件系統太大下載不了,依據官網上的資料對文件系統進行剪裁後的製作的,如果你的FLASH大於64M,那你就可以直接使用光盤中的製作好的文件系統,現在主要講解一下linux移植。
 
1)下載linux內核源代碼
    獲取內核的網址是:http://www.kernel.org/pub/linux/kernel/
    可以看到你裏面有各種版本的Linux,下載現在要移植的Linux-2.6.32版本,如果Linux可以上網的話,可以使用wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.tar.gz,命令直接在當前的目錄下進行下載(建議在windows系統下下載,然後通過共享複製到linux系統下)
2) 解壓linux內核源代碼
    假設內核包已經存放在/opt/FriendlyARM/mini2440/目錄下,終端下輸入以下命令:
    cd /opt/FriendlyARM/mini2440/   切換到內核存放的目錄
    tar xvzf linux-2.6.32.tar.gz    將內核解壓到當前目錄下
3) 修改源代碼中的相應文件以適應mini2440
    (1)修改Makefile文件
        由於linux內核源代碼默認的平臺爲X86平臺,編譯器默認的爲gcc 所以要修改linux內核的默認平臺爲arm平臺,編譯器默認爲arm-linux-,要修改這兩項大約在文本的182行左右,下面兩附圖爲修改前後的內容:
        修改前:
       
        修改後:
        
4) 測試linux內核能否順利通過編譯
     4.1 make s3c2410_defconfig   //使用缺省的配置文件,也就是SMDK2440的缺省配置文件,完成此步後,將會在linux-2.6.32下產生一個.config文件,想要查看此文件是否存在,使用"ls -a"命令.
     4.1 也可以將s3c2410_defconfig拷貝到linux-2.6.32目錄下,首先切換目錄到linux-2.6.32,然後執行以下命令:
     cp ./arch/arm/configs/s3c2410_defconfig  .config
     4.2 編譯內核,編譯的內核存放在/arch/arm/boot/目錄下
         make or make zImage or make bzImage  //編譯的過程比較長,大約在二十分鐘左右
         (zImage和bzImage的區別:僅僅在X86平臺下有區別,zImage只能編譯小於512K的內核)
5) 修改機器碼
      很關鍵的一點是,在啓動內核時,是根據bootloader傳入的機器碼(MACH_TYPE),來決定應啓動那種目標平臺,2.6.29以後的版本,友善之臂申請了字節的機器碼1999,在文件opt/kernel/linux-2.6.32.2/arch/arm/tools/mach-types中.
         
    由於我們在此並沒有使用mini2440的平臺,使用的是SMDK2440的平臺,但bootloader(supervivi)內的機器碼爲1999,所以這裏我們可以將s3c2440的機器碼改爲1999.
   如果傳入的機器碼不對的話,啓動的時候一般會出現下面的錯誤
        Uncompressing       
        Linux................................................................................
        done, booting
        the kernel.
   運行到這就停止了.
 
5)修改時鐘源

      在 mach-mini2440.c的第 160 行static void __init smdk2440_map_io(void)函數中,把其中的 16934400(代表原 SMDK2440 目標板上的晶振是 16.9344MHz)改爲 mini2440 開發板上實際使用的 12000000(代表 mini2440 開發板上的晶振 12MHz,元器件標號爲 X2),如果不更改的話,串口通信將會出現亂碼.
    更改後:
       
    更改前:
6) 修改NAND分區信息.
      要讓內核知道nand flash的分區信息,設置成跟bootloader一致. arch/arm/plat-s3c24xx/common-smdk.c中修改smdk_default_nand_part[],注意這個一定要跟bootloader的一致.
      查看supervivi分區信息
       (1) 輸入q進入goto shell of vivi
           Supervivi-> part show    顯示以下分區表:
           
       (2) 按上面的信息修改分區表,修改後:
     
7) 增加Yaffs2文件系統的支持
     首先到 http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/網站下載一個 yaffs文件系統的補丁,點擊下圖中的Download GNU tarball,下載.
     
得到補丁包後將其放到/opt/FrinedlyARM/mini2440/目錄下,解壓補丁,然後打上yaffs2 的補丁,方法如下:
 tar xvfz cvs-root.tar.gz  (解壓得到補丁目錄cvs)

 cd /opt/Frinedly/mini2440/cvs/yaffs2/  (進到yaffs2 的補丁目錄下)

 ./patch-ker.sh c /opt/FriendlyARM/mini2440/linux-2.6.32(執行補丁腳本,打補丁到內核中,其中/opt/FriendlyARM/mini2440/linux-2.6.32爲內核源碼的地址)此時到內核源碼的“fs/”目錄下面將會看到新添加了一個名爲“yaffs2/”的目錄,同時fs/目錄下面的Makefile文件和 Kconfig文件也添加了 yaffs2 的配置和編譯條件。

8)配置內核
     

9.配置內核

  調用自帶的一個默認配置單,該配置單在內核源碼的 “arch/arm/configs/”目錄下面,名爲:“s3c2410_defconfig”,該配置文件裏面選擇了幾乎所有的和S3C24XX 系列CPU 相關的配置選項,我們完全可以在該配置單的基礎上進行配置。

 操作前提是切換到linux-2.6.32目錄下進行:
 cp arch/arm/configs/s3c2410_defconfig .config  或者 make s3c2440_defconfig

 make menuconfig

(1).General setup --->

       [*] Configure standard kernel features (for small systems) --->

   選上這項,否則文件系統中的一些選項不會出現

(2). System Type ---->

      [*] S3C2410 DMA support [*] Support ARM920T processor

      S3C2440 Machines --->

              [*] SMDK2440

              [*] SMDK2440 with S3C2440 CPU module

(3).[*] Enable loadable module support --->

              [*] Module unloading

(4).Device Drivers --->

            <*> Memory Technology Device (MTD) support --->

                     [*] MTD partitioning support

                                <*> NAND Device Support --->

                                 <*> NAND Flash support for S3C2410/S3C2440 SoC

                                   [ ] S3C2410 NAND Hardware ECC //這個要去掉

                     [*] Network device support --->

                                 [*] Ethernet (10 or 100Mbit) --->

                                                <*> DM9000 support

                     < > Real Time Clock --->

(5).File systems----->

         Miscellaneous filesystems --->

                      <*>YAFFS2 file system support

(6).kernel Features----->

          [*]Use the ARM EABI to compile the Kernel

保存退出.

10)編譯內核
     make zImage

   編譯完成後下載內核啓動即可.

參考網址:http://blog.chinaunix.net/uid-25811099-id-310003.html



發佈了34 篇原創文章 · 獲贊 57 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章