ATMEL公司的AT91RM9200调试手册

来源:互联网 发布:软件项目管理岗位职责 编辑:程序博客网 时间:2024/05/29 14:29

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输入以下可以在指定的网站查询指定的信息: