ATMEL公司的AT91RM9200調試手冊

LINUX常用命令

壓縮、解壓部分

1.         tar czf  DirName.tgz DirName  (壓縮目錄)

2.         gzip –d filenames (針對以gz爲結尾的壓縮文件)

3.         tar –xvf filenames (針對以tar爲結尾的壓縮文件)

4.         tar zxvf filenames ( 針對以tar.gz爲結尾的壓縮文件)

5.         tar jxvf filenames[B1]    (針對以tar.gz2爲結尾的壓縮文件)

FTP部分

ncftp –u user_name FTP_SERVER_IP

 

備註:支持(-R-r)對目錄的操作

查找、定位部分

1.         find –name filename.C (利用文件名進行查找)

2.         locate filename.C (在當前目錄和所有子目錄下遞歸查找文件名中有filename的文件)

3.         grep ‘search word’* -r (在當前目錄和所有子目錄下遞歸查找文件中含有相應字符串的文件)

網絡設置

ifconfig ETH0 192.168.1.1

NETMASK 255.255.255.0

ROUTE ADD –NET 127.0.0.0

ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx

route del default,去掉網關,加速訪問速度,特別是NFS速度

比較、補丁部分

 

1.         Diff創建補丁,patch打補丁

2.         diffj [命令行選項][H2] 原始文件 新文件,命令舉例如下:

diff –ruNa Dir_Old Dir_New > Dir.patch

3.      zcat ../patch-2.4.26-vrs1.gz | patch -p1

4.      zcat ../*.patch.gz | patch -p1 (內核升級補丁)

5.      進入LINUX內核目錄,修改ARCH :=arm和CROSS_COMPILE=arm-linux-

6.         patch [命令行選項] [待patch的文件[patch]],命令舉例如下:

pathc –p1 < [patch_file] :在當前目錄下利用patch_file進行打補丁

LINUX內核編譯

1.         make mrproper

2.         make target_device_config

3.         make oldconfig

4.         make menuconfig

5.         make dep

6.         make Image

7.         /usr/local/arm/2.95.3/bin/arm-linux-objcopy -O binary -S vmlinux linux.bin

8.         gzip -v9 linux.bin

9.         /u-boot-1.1.1/tools/mkimage [H3]-A arm[B4] -O linux -C gzip -a 0x20008000 -e 0x20008000 -d linux.bin.gz uImage

建立NFS環境[B5]

1.         cd /

2.         setup

3.         選擇“Firewall configuration”,進入並更改設置爲“No firewall

4.         到上一層MENU選擇System services去掉“ipchains”和“iptables”兩項服務。

5.         選擇NFS服務後restart the PC

6.         all is ok now!

實際測試總結:

1.         實際設置可以在圖形界面中的服務器設置中NFS服務中設置。

2.         IP地址192.168.1.*表示對1255號地址都開通NFS服務。

3.         MOUNT命令爲:mount –o nolock 192.168.1.1:/nfs /mnt/nfs

4.         詳見<<HHARM9200_tech_manual-v2.2.pdf>>

5.         ATMEL提供的RAMDISK中的MOUNT命令沒有支持NFS,所以要刪除ramdisk/bin/mount,重新編譯BUSYBOX,選擇靜態編譯,把生成的busybox拷貝到/ramdisk/bin,執行ln –s busybox mount

U-BOOT編譯部分

1、  make mrproper (清理源代碼樹)

2、  make at91rm9200dk_config

3、  make all

4、  gzip –c u-boot.bin > u-boot.gz

5、  常用命令見附錄[H6]

U-BOOT移植

1.         在移植過程中注意參照其它類型CPU和開發板的結構

2.       Makefile中增加如下兩行:

at91rm9200dk_config  :   unconfig

@./mkconfig $(@:_config=) arm at91rm9200 at91rm9200dk

其中ARM是CPU的種類, arm920t是ARM CPU對應的代碼目錄,at91rm9200dk是開發板對應的目錄。

3.         board目錄中建立at91rm9200dk目錄,並所參考類型的開發板目錄,如S3C2410m5272C3等。

4.         include/cofings/目錄下複製

U-BOOT環境變量部分

1、  kernel=tftp 21000000 uImage

2、  ramdisk=tftp 21100000 ramdisk-rmk7

3、  ethaddr=12:34:56:78:9A:FF

4、  bootcmd=tftp 21100000 ramdisk-rmk7; tftp 21000000 uImage; bootm 21000000

5、  bootargs=root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M

6、  fl2ram_kernel=cp.b 10020000 21000000 83b9e

7、  ram2fl_kernel=cp.b 21000000 10020000 83b9e

8、  filesize=5591e6

9、  fileaddr=21100000

10、ipaddr=192.168.1.200

11、serverip=192.168.1.3

12、 ram2fl_ramdisk=cp.b 21100000 10120000 5591e6

13、 fl2ram_ramdisk=cp.b 10120000 21100000 5591e6

14、 stdin=serial

15、 stdout=serial

16、 stderr=serial

RAMDISK

Common Command

1.         ls –al /dev/ram* (look all the ramdisk info)

2.         df –k /dev/ram0 (find the really space of the ramdisk)

 

Updata the Ramdisk

1.         gunzip ramdisk.gz

2.         mkdisk /mnt/new_ramdisk

3.         mount –o loop ramdisk /mt/new_ramdisk

4.         進入/mnt/new_ramdisk進行操作,如增加刪除文件

5.         umount /mnt/new_ramdisk

6.         gzip –c –v9 ramdisk >./tftpboot/ramdisk-rmk7

MINICOM設置

FileName:minirc.dfl

# Machine-generated file - use "minicom -s" to change parameters.

pr port             /dev/ttyS0

pu baudrate         19200

pu minit           

pu mreset          

pu mhangup         

pu rtscts           No

Crate the Ramdisk

1.         mkdir /mnt/ramdisk0 (create a mount point)

2.         mke2fs[B7] /dev/ram0 (create a filesystem)

3.         mount /dev/ram0 /mnt/ramdisk0 (mount the ramdisk)

BUSYBOX

1.         cd busybox-1.x

2.         make menuconfig

change the path of cross compiler and install according to ur set-up

3.         make

now you can ls to ur rootfs/bin rootfs/sbin and can find ur binaries

備註:由於開發板廠家提供的RAMDISK都是基於ATMEL的,所以應該利用生成STATIC選項,否則在LINUX啓動時會提示相應LIB找不到。在1.0版本的busybox中,其route.c有問題,不要選擇它。另外在libbb\loop.c中LINE32幾行也有問題,建議註釋掉。利用新的busybox替換bin/busybox即可運行最新版本的busybox.

交叉編譯環境

1、  mkdir /usr/local/arm

2、  cd /usr/local/arm

3、  tar –jxvf cross-2.95.3.tar.bz2

4、  PATH=/usr/local/arm/2.95.3/bin:$PATH[B8]

5、  /etc/bashrc文件中最後增加如下內容:

  PATH=$PATH:/usr/local/arm/2.95.3/bin

6、  bash

NFS部分

1.         mount –o nolock 192.168.1.1:/nfs /mnt

空板調試指南部分

1、  將跳線JP1(負責選擇外部FLASH或內部ROM啓動)取下來

2、  設置超級終端屬性,(115200N8,1

3、  開發板上電後,在超級終端中不斷打印中“C”,表示AT91RM9200板子與計算機已正常連接,這時在超級終端中利用XMODEM協議發送文件(loader.bin)。當顯示 loader 1.0 (Aug  8 2003 - 12:01:07) 

  XMODEM: Download U-BOOT

     CCCCCCC表示(loader.bin)已發送成功

4、  利用XMODEM協議發送文件(u-boot.bin

5、  當超級終端顯示出u-boot的版本、FLASHSDRAM的信息後表示u-boot已下載成功,並且SDRAM可以正常使用

6、  u-boot>提示符下輸入:loadb 20000000,確定後超級終端會提示“## Ready for binary (kermit) download to 0x20000000 at 115200 bps...

7、  在超級終端中利用Kermit協議選擇併發送文件(boot.bin),成功後在超級終端中會有如下提示“## Total Size      = 0x00002984 = 10628 Bytes

## Start Addr      = 0x20000000

        此時啓動代碼的映像已經下載到SDRAM的地址0x20000000處,下一步的操作就是將此映像文件內容寫入到NOR FALSH0x10000000

8、  分成以下步驟:

l         解除FLASH中第一扇區的保護:protect off 1:0(其中1BANK1所在的FLASH,詳見UBOOT命令)

l         刪除FLASH中第一扇區的內容:erase 1:0

l         cp.b 20000000 10000000 5fff

l         loadb 20000000

l         在超級終端中利用Kermit協議選擇併發送文件(u-boot.bin.gz

l         cp.b 20000000 10010000 ffff

l         protect on 1:0

l         bootu-boot已成功寫入到FLASH中,此時將跳線接上,重新啓動,系統開始從FLASH進行引導

9、  快捷鍵設置部分:

   kernel

l         setenv cpfltoker cp.b 10020000 21000000 affff(從FLASH中拷貝KernelSDRAM

l         setenv cpkertofl cp.b 21000000 10020000 affff(從SDRAM中拷貝KernelFLASH

l         setenv kernel tftp 21000000 uImage

ramdisk

l         setenv cpfltoram cp.b 10120000 21100000 5fffff

l         setenv cpramtofl cp.b 21100000 10120000 5fffff

l         setenv ramdisk tftp 21100000 ramdisk-rmk7

       miscellaneous

l         setenv boot bootm 21000000

l         setenv bootcmd run cpfltoker;run cpfltoram;run boot

l         setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200 mem=32M

VMWARE

Linux下作用VFAT32的硬盤

/dev/hda5 /mnt/d vfat exec,dev,suid,rw,umask=0,iocharset=gb2312,codepage=936 0 0

在vmware的LINUX中使用本地硬盤的FAT分區

將本地的FAT分區共享,然後在VMWARE中使用SMBFS掛上。可以將如下的行放到/etc/fstab中: //win_ip/D$ /mnt/d smbfs defaults,auto,username=win_name,password=win_pass,codepage=936,iocharest=gb2312 0 0 其中win_ip是你的windows的IP地址; D$是你的windows裏面共享的D盤的共享名; /mnt/d是要將該分區mount到linux的目錄; win_name和win_pass是你的WINDOWS裏面可以讀取該分區的用戶,比如你的管理員名和密碼。 如果你運行了/etc/rc.d/init.d/netfs,那麼在啓動的時候就會自動掛載這個分區。

 

LINUX優秀站點集錦[B9]

1.         http://www.shakthimaan.com

2.         ftp://81.80.104.162ATMEL提供的下載網站)

3.         http://www.at91.com(butlerz_gaoyh,123456)

4.         http://www.joyfire.net/

5.         http://www.busybox.net/downloads

6.         www.linuxforum.com (lucky_butler,123456)

7.         www.arm.linux.org.uk(butler_gaoyh,123456)

8.          Link to the Linux Patch ressource http://www.arm.linux.org.uk/developer/patches/section.php?section=20

9.          How to build a Linux ramdisk, How to install new binaries, Informations about the User Applications,... http://www-106.ibm.com/developerworks/linux/library/l-embdev.html

10.       The Official dedicated Web Site about the use of the USB with Linux:
-The USB Standard,
-The protocol,
-The news about the last developments and the compatibility problems between the Kernel versions,.... http://www.linux-usb.org/


AT91RM9200電路板FLASH中的結構如下:

Bank # 1: INTEL 28F640J3A

  Size: 8 MB in 64 Sectors

  Sector Start Addresses:

    10000000 (RO) 10020000 (RO) 10040000 (RO) 10060000      10080000

    100A0000      100C0000      100E0000      10100000      10120000

    10140000       10160000       10180000      101A0000      101C0000

    101E0000       10200000       10220000      10240000      10260000

    10280000       102A0000      102C0000      102E0000      10300000

    10320000       10340000       10360000      10380000       103A0000

    103C0000      103E0000       10400000      10420000       10440000

    10460000       10480000       104A0000      104C0000      104E0000

    10500000       10520000       10540000       10560000       10580000

    105A0000      105C0000       105E0000      10600000       10620000

    10640000       10660000       10680000       106A0000      106C0000

    106E0000       10700000       10720000       10740000      10760000

    10780000       107A0000      107C0000       107E0000 (RO)

 

AT91RM9200內存分佈說明:

 

0x0000 0000

           INTERNAL ROM128K BYTES

0x1000 0000(第0扇區)

           boot.bin       FLASH

0x1001 0000(第0扇區)

          uboot.gz        FLASH

0x1002 0000(第1扇區)

          ulmage         FLASH

0x1012 0000(第16扇區)

          ramdisk        FLASH

0x107E0000(第63扇區)    

     u-boot環境變量 FLASH

0x2000 0000

                        SDRAM

0x2100 0000

          ulmage        SDRAM

0x2110 0000

         ramdisk        SDRAM

 

附:U-BOOT 常用命令簡介

一 環境變量操作

1Setenv

設置環境變量

舉例

setenv serverip 192.168.0.1

setenv ipaddr 192.168.0.56

setenv bootcmd ‘tftp 32000000 vmlinux; kgo 32000000’

2saveenv: 保存環境變量

在設置好環境變量以後,保存變量值

3printenv

舉例

printenv,打印所有環境變量

printenv ipaddr,打印環境變量ipaddr 的值

二 FLASH 操作

1flinfo

顯示Flash 芯片的相關信息,包括Flash 容量、扇區起始地址以及是否保護等信息

命令格式:flinfo NN 表示第N flash

2protect

保護(取消保護)Flash 的各扇區

命令格式:

protect on/off N:SF[-SL],保護(取消保護)第N Flash 上的SF SL 之間的扇區

protect on/off bank N

protect on/off all

protect on/off start end

4erase

擦除Flash 的各扇區

命令格式:

erase N:SF[-SL],擦除第N Flash 上的SF SL 之間扇區

erase bank N,擦除第N Flash 所有扇區

erase all,作用同上

舉例:

erase 1:0-2(就是對第一塊FLASH 0-2 扇區進行刪除)

 

注:N 1 開始

三 內存操作

包括讀取、比較、更改、寫入等操作,通用命令如下

[.b, .w, .l] address [length]

其中,.b.w.l 分別表示8/16/32 位操作

1md

顯示某地址處的內存值。

命令格式:md[.b, .w, .l] address [length]

舉例

md.b 10000000 16,表示以字節爲單位顯示地址0x10000000 起始的16 字節數據

2mm

更改某地址處的內存值

命令格式

mm[.b, .w, .l] address

3mw

向某地址寫入數據

命令格式

mw[.b, .w, .l] address value [count]

4cp

將一個地址處數據拷貝到另一地址處。

命令格式

cp[.b, .w, .l] source target count

注:此命令支持從SDRAM 拷貝數據到Flash

5cmp

比較兩地址處的數據

命令格式

cmp[.b, .w, .l] addr1 addr2 count

四 下載和運行控制

1go

從某地址處開始運行。

命令格式

go addr [arg ...]

2run

運行某環境變量裏面的內容

命令格式

run var [...]

3bootm

執行存儲在某地址處的uboot 格式的image 文件

命令格式

bootm [addr [arg ...]]

4tftp

通過網絡tftp 協議下載文件到內存某一地址處。

命令格式

tftp [loadAddress] [bootfilename]

5loadb

通過串口使用KERMIT 協議下載文件到內存某一地址處。

命令格式

loadb [ off ] [ baud ]

五 其它

1help/?

舉例

help,得到所有命令列表

help usb, 列出USB功能的使用說明

Build Kernel for AT91RM9200

http://hugang.dyn.soulinfo.com/wiki/index.php/Build_Kernel_for_AT91RM9200

arm-linux-gcc

Kernel source and patches

 linux-2.4.27.tar.bz2 (http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.29.tar.bz2) (~29MB)

    Download from the link above or from kernel.org and make a base directory.

    bzcat < linux-2.4.27.tar.bz2 | tar -xf -

 patch-2.4.27-vrs1.bz2 (http://www.applieddata.net/developers/linux/files/2.4.27/patch-2.4.27-vrs1.bz2) (~508kB)

   Download from the link above or from arm.linux.org.uk (ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/patch-2.4.27-vrs1.bz2).

   Change to the linux directory and apply the patch using patch level "-p1".

   cp -rl linux-2.4.27 linux-2.4.27-vrs1

   cd linux-2.4.27-vrs1

   bzcat ../patch-2.4.27-vrs1.bz2 | patch -p1

 last patch  (http://maxim.org.za/AT91RM9200/2.4.27vrs1-at91-06102004.patch.gz)

    Download from the link above

    Change to the linux directory and apply the patch.

    cp -rl linux-2.4.27-vrs1 linux-2.4.27-vrs1-06102004

    cd linux-2.4.27-vrs1-06102004

    zcat ../*.patch.gz | patch -p1

  Make it

    make CROSS_COMPILE=/skiff/local/bin/arm-linux- ARCH=arm menuconfig

    make CROSS_COMPILE=/skiff/local/bin/arm-linux- ARCH=arm zImage

 


 [B1]bzip2 –d cross-2.95.3.tar.bz2(解壓壓縮文件)

tar xvf cross-2.95.3.tar

 [H2]

-r 遞歸處理目錄      -u 輸出統一格式(unified format)

-N patch 裏包含新文件  -a patch 裏可以包含二進制文件

 

 [H3]mkinageU-BOOT/tools文件夾中

 [B4]這個目錄需要先進行創建

 [B5]您用的不是華恆的開發板,那麼可能您的busybox可能沒有加入NFS mount的支持,這樣您就需要重新編譯busybox,加入NFS mount支持,然後更新ramdisk

 [H6]U-BOOT Prompt in U-boot/include/configs/at91rm9200dk.h中。#define CFG_PROMPT "Uboot> " /* Monitor Command Prompt */

 [B7]如果對ramdisk的格式化失敗,那就是你的內核不支持ramdisk。其內核配置選項是 CONFIG_BLK_DEV_RAM

 [B8]好像只能作用一次,計算機重啓後需要重新設置,推薦步驟56

 [B9]in googel.com輸入以下可以在指定的網站查詢指定的信息:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章