网站导航: 首页 > 设计参考 > 正文 文章搜索
基于s3c2410的ARMer9开发平台的使用
 
文章编号:
081211163658
文章分类: 单片机 ARM
点 击:
...
关 键 词: s3c2410,开发平台
文章来源:
网络,作者:韩海锋
摘 要:

五. 用U-Boot下载Linux kernel和root fs到目标开发板(在不同的开发板上,下载地址可能不同)。
       # setenv ipaddr 192.168.1.2
       # setenv serverip 192.168.1.1  (确保开发板和宿主机在同一网段)
       # tftpboot 0x30007fc0 uImage.s3c2410-f
       # tftpboot 0x30800000 ramdisk.u-boot-f
       # bootm 0x30007fc0 0x30800000

如果要下载档案并且写入到NOR Flash中,方法如下:
把uImage.s3c2410-f通过tftp download到SDRAM中的0x30007fc0的位置
SMDK2410> tftpboot 0x30007fc0 uImage.s3c2410-f
将0x30007fc0位置开始长度为0x100000(即1M,这个长度取决于uImage.s3c2410-f的大小,比uImage.s3c2410-f的大小要大,在256K字节的边界上即可)的字节烧写到flash中(地址为0x200000)
SMDK2410> cp.b 0x30007fc0 0x200000 0x100000
把ramdisk.u-boot-f通过tftpdownload到SDRAM中的0x30800000 的位置
SMDK2410> tftpboot 0x30800000 ramdisk.u-boot-f
将0x30007fc0位置开始长度为0x1000000(即16M,这个长度取决于ramdisk.u-boot-f的大小,比ramdisk.u-boot-f的大小要大,在256K字节的边界上即可)的字节烧写到flash中(地址为0x800000)
SMDK2410> cp.b 0x3080000 0x800000 0x1000000
这时候,linux kernel和ramdisk已经保存到flash的0x200000和0x800000这两个位置了。
如果不需要每次起来自动启动linux,就在复位后进入u-boot命令界面,输入下面的命令即可:
       SMDK2410> cp.b 0x200000 0x30007fc0 0x100000
       SMDK2410> cp.b 0x800000 0x30800000 0x1000000
       SMDK2410> bootm 0x30007fc0 0x30800000
如果想每次复位后自动启动linux,就把上面3条命令通过setenv命令设置到u-boot的环境变量bootcmd中。 
       SMDK2410>setenv bootcmd cp.b 0x200000 0x30007fc0 0x100000; cp.b 0x800000 0x30800000 0x1000000; bootm 0x30007fc0 0x30800000
       SMDK2410>protect off 0x00040000 0x0007ffff
       SMDK2410>saveenv
       SMDK2410>protect on 0x00040000 0x0007ffff

六. 基于s3c2410嵌入式处理器的开发板上,mp3播放程序madplay编译总结
1. 编译zlib,因为libid3tag需要这个库
       # ./configure --prefix=/opt/host/armv4l/
   修改Makefile
   AR=/opt/host/armv4l/bin/armv4l-unknown-linux-ar
   CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
   RANLIB=/opt/host/armv4l/bin/armv4l-unknown-linux-ranlib
   最后AR命令要添加rcs,否则会出错
   具体操作:
   libz.a : $(OBJS)$(OBJA)
   $(AR) rcs$@$(OBJS)$(OBJA)
   -@($(RANLIB)$@||true)>/dev/null 2>&1
       # make
       # make install

2. 编译libid3tag
       # ./configure --host=armv4l-unknown-linux
       CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
       --disable-debugging --disable-shared
       --prefix-/opt/host/armv4l/
       # make
       # make install

3. 编译libmad
       # ./configure --enable -fpm=arm --host=armv4l-unknown-linux
       --disable-shared --disable-debugging
       --prefix=/opt/host/armv4l/
       CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
       # make
       # make install
4. 编译madplay
       # ./configure --host=armv4l-unknown-linux
       CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc
       --disable-debugging
       --disable-shared
       CPPFLAGS='-I/opt/host/armv4l/include'
       LDFLAGS='-L/opt/host/armv4l/lib'
       # make

NOTE:可以在Makefile里加上 -static 选项,从而得到静态链接的程序。
另外,madplay官方主页是:
www.underbit.com
zlib下载地址是:
http://www.zlib.net,当前版本是zlib 1.2.3 (2005.7)

七.root文件系统的制作
Ramdisk是分配了一部分内存作为一个分区来使用。对于系统运行时不断使用的程序,将它们放在Ramdisk中将加快计算机的操作,如大数据量的网络服务器、无盘工作站等。为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。它既可以直接编译进内核,也可以编译成模块,在需要的时候加载。如果在启动时就用它(例如加载ramdisk作为rootfs),就必须将它直接编译进内核。
在Linux下建立目录/myramdisk,将在此目录下创建的文件系统对应的文件结构。一般不需要对于系统运行是完全无用的文件,如帮助手册、信息页,头文件、内核源码等。
General:要建立的目录是,dev,设备;etc,系统配置文件;sbin,重要的系统程序;bin,基本应用程序;lib,共享函数库;mnt,装载其他磁盘节点;usr,附加应用程序;proc,proc文件系统;其中,proc,mnt,usr可以是空的。
一些要包含在 Ramdisk 中的重要目录是:
/bin — 保存大多数如 init、busybox、shell、文件管理实用程序等二进制文件;
/sbin — 保存系统启动过程通常需要的命令,如e2fsck、mke2fs、fdisk、insmod、rmmod、depmod、modprobe、lsmod、shutdown、reboot、login、init、getty、mount、umount、等;
/dev — 包含用在设备中的所有设备节点,一定要有的是console,kmem,mem,null,ram,tty* 等文件;
/etc — 包含必不可少的系统配置文件,一般包含rc.d/* (系统启动脚本),fstab(列出要登陆的文件系统),inittab(包含启动过程参数),passwd(用户名和目录),group(用户组),shadow(用户加密密码)。如果不使用init作为登陆进程,而将init链接到/bin/bash,即,#ln –s /bin/bash /sbin/init,则/etc目录下可以不含任何文件,这种情况类似单用户登陆系统,同样,也不需要输入用户名和密码;
/proc — 这是一个必须设置的特殊目录,在系统运行之后它下面有许多内容,这些内容是实时、不断跟踪系统内核和正在运行的进程的状态而产生的,但不占用任何磁盘空间,而是驻留在内存中;在某些情况下,可以通过它来进行系统设置,许多工具从这里获取信息,如dmesg、ps、top等;在内核编译选项文件系统选择中,我们选择对文件系统proc的支持;
/lib — 包含所有必需的库,根据/bin和/sbin目录下的可执行文件需要的动态链接库来确定lib目录下的内容,其中必须有函数装载器,或是ld.so(对a.out库)或是ld-linux.so(对ELF库)。 

文件系统制作完成,看看这个/myramdisk目录大小为多大,然后确定需要多大的Ramdisk,在内核编译的时候,修改Ramdisk大小(缺省为4096k)为所需要的尺寸。
现在我们以制作一个4M的Ramdisk为例子,步骤如下:
1.      在宿主机上编译运行在目标机linux内核时,将block device中的Ramdisk支持选上,设定Ramdisk的大小为缺省的4096K,对initrd的支持也选上。
2.      在宿主机上建立/myramdisk目录,按照上述的原则建立必要的目录和文件。
3.      执行下列步骤: 

  1. 在根目录下建立一个文件 /images/initrd.img,从设备文件/dev/zero中读取数据填充文件initrd.img(NOTE:/dev/zero是一个特殊的设备文件,从这个文件读出来的数据全是0,以便后面得到更高的压缩率);
    # mkdir /images
    # dd  if=/dev/zero  of=/images/initrd.img  bs=1k  count=4096 
  2. 在Ramdisk上建立4M的ext2类型的文件系统;
    # mke2fs  -m0  -F  /images/initrd.img  4096
    也可以是:# mke2fs  -F  -v  -m0  /images/initrd.im
    若要建立ext3类型的filesystem,命令是:
    # mke2fs  -j  -m0  -F  /images/initrd.img  4096 ,同样,也可以不指定大小) 
  3. 在/mnt下建立目录rootfs, 将已经格式化为ext2类型文件系统的ramdisk挂载至目录/mnt/rootfs上;
    # mkdir –p /mnt/rootfs
    # mount  –o  loop  /images/initrd.img  /mnt/rootfs 
  4. 将宿主机上/myramdisk目录下的文件结构拷贝至/mnt/rootfs目录中(这就相当于拷贝至文件initrd.img中了);
    # cp  -av  /myramdisk/*  /mnt/rootfs
    NOTE:必须用命令拷贝的方式,否则可能出错) 
  5. 卸载掉/mnt/rootfs;
    # umount  /mnt/rootfs 
  6. 产生一个压缩的映象文件。
    # gzip  -9  < images/initrd.img >  images/initrd.bin 
  7. 最后,用mkimage工具将其制作成U-Boot的可执行ramdisk映像
    # ./mkimage -n 'RAM disk' -A arm -O linux -T ramdisk -C gzip -d initrd.bin initrd.boot
    也可以是:
    # ./mkimage –A arm –O linux –T ramdisk –C gzip –a 0x30800000 –e 0x30800000 –n  ‘ramdisk’  –d  initrd.bin  initrd.boot

 ………………………………………………………………………………………………………………………………

韩海锋   email:hanhf@163.com  MSN:springmagus@hotmail.com  QQ:34196145

 
相关文章:
s3c2410 Timer工作原理[图]
虚拟SPI时序在TC77与S3C2410通信中的应用[图]
s3c2410 MMU(存储器管理单元)讲解[图]
s3c2410 CACHES,WRITE BUFFER讲解[图]
S3C2410中的脉宽调制定时器(PWM)
S3C2410 中断程序的实现
s3c2410 watchdog详解
s3c2410 中断异常处理[图]
基于ARM9芯片S3C2410a的GPRS数据终端设计
ARM系统中DMA方式在数据采集中的应用[图]
AD7888与S3C2410的SPI接口及Linux下嵌入式驱动的实现[图]
ARM S3C2410硬件手册重点
基于ARM S3C2410与TMS320C6416的接口设计[图]
S3C2410上Jffs2的移植
ARM S3C2410驱动TFT-LCD的研究[图]
MINIGUI在S3C2410开发板的移植
mplayer在S3C2410上的移植
在S3C2410上移植yaffs2文件系统
S3C2410 bootloader(vivi)阅读笔记
s3c2410 LCD图片显示
S3C2410 LCD 驱动程序移植及GUI程序编写[图]
S3C2410X开发总结及心得
U-Boot在S3C2410开发板上的移植
S3C2410初始化
S3C2410通过IIS总线与音频芯片UDA1380进行通信
在S3C2410上移植bluetooth(蓝牙)
S3c2410软件调试总结
S3C2410上触摸屏的应用实例
S3c2410的触摸屏及模数转换
S3C2410的快速启动技术
基于嵌入式linux和s3c2410平台的视频采集
S3c2410 LCD驱动学习心得
s3c2410移植MPlayer到linux2.6

上一页 12
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4