Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2117460
  • 博文数量: 438
  • 博客积分: 3871
  • 博客等级: 中校
  • 技术积分: 6075
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-10 00:11
个人简介

邮箱: wangcong02345@163.com

文章分类

全部博文(438)

文章存档

2017年(15)

2016年(119)

2015年(91)

2014年(62)

2013年(56)

2012年(79)

2011年(16)

分类: LINUX

2011-11-01 20:01:22

一.编译
1. uboot的编译
  1. a. 修改 /work/tq/uboot/Makefile
  2.     #CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
  3.     CROSS_COMPILE = /work/tq/bak/toolchain/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
  4.  b. make EmbedSky_config
  5.  c. make -j8
  6.  d. 烧写 dnw
2. 内核的编译
  1. a. 修改交叉编译工具链
  2.   由于没有在path环境变量中设arm-linux-gcc,
  3.   所以需要改/work/tq/bak/toolchain/4.3.3/bin/arm-linux-gcc
  4.   #exec arm-none-linux-gnueabi-gcc -march=armv4t $*
  5.   exec /work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-gcc -march=armv4t $*
  6.  b. 修改 /work/tq/kernel/Makefile
  7.    #CROSS_COMPILE = arm-linux-
  8.    CROSS_COMPILE = /work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-
  9.  c. cp -arf ./config_EmbedSky_W35 .config
  10.  d. make -j16 zImage 在当前目录下生成zImage.bin
2.1 问题:如果不选启动时会出现Kernel panic - not syncing: Attempted to kill init!
  1. Kernel Features --->
  2.             [*] Use the ARM EABI to compile the kernel
  3.             [*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
3.busybox的编译
  1. /work/tq/rootfs/busybox-1.16.0/Makefile
  2.  164 #CROSS_COMPILE ?=
  3.  165 CROSS_COMPILE ?=/work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-

  4.  191 #ARCH ?= $(SUBARCH)
  5.  192 ARCH ?= arm
4.文件系统
  1. 从2.6.30.4目录下将root_qt_4.5_2.6.30.4_20100601.tar.bz2出来
  2. cong@msi:/work/tq/rootfs$ sudo /work/tq/bak/toolchain/sbin/mkyaffs2image ./opt/EmbedSky/root_qt_4.5_2.6.30.4/ rootfs.img
5.烧写
ubuntu下用dnw
二. 具体使用
1. nfs的访问
  1. 主机端:
  2. a. 安装nfs: root@ubuntu: # apt-get install nfs-kernel-server
  3. b. 安装nfs客户端: root@ubuntu: # apt-get install nfs-common
  4. c. 配置文件/etc/exports,添加如下一行
  5.     /tmp/ *(rw,sync,no_subtree_check,no_root_squash,insecure)
  6. d. 启动NFS: root@ubuntu: # /etc/init.d/nfs-kernel-server start

  7. TQ2440端:
  8. [root@EmbedSky sky]# mount -t nfs 192.168.4.87:/tmp /mnt/ -o nolock -o tcp
 nfs: server ******* not responding, still trying
  解决: a.改nfs的协议,从udp该到tcp
        b.改每次传输的块,更改rsize和wsize
2.网络设定
  1. a.临时修改mac地址
  2. [root@EmbedSky /]# ifconfig eth0 down
  3. [root@EmbedSky /]# ifconfig eth0 hw ether 10:44:45:67:89:AB
  4. [root@EmbedSky /]# ifconfig eth0 up
  5. b. 永久修改
  6. /etc/net.conf
  7. IPADDR=192.168.4.239
  8. NETMASK=255.255.255.0
  9. GATEWAY=192.168.4.1
  10. MAC=10:AC:45:67:89:ab
3. 通过nfs挂载根文件系统
3.1 主机端的设置:
  1. a.将root_qt_4.5_2.6.30.4_20100601.tar.bz2解压到/work/tq/rootfs_nfs中
  2. cong@msi:/work/tq/rootfs_nfs$ ls
  3. bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var web

  4. b.将/work/tq/rootfs_nfs添加到/etc/exports下
  5. cong@msi:/work/tq/rootfs_nfs$ cat /etc/exports
  6. # /etc/exports: the access control list for filesystems which may be exported
  7. /work/tq/rootfs_nfs *(rw,sync,no_subtree_check,no_root_squash,insecure)

  8. c.并重启nfs-server
  9. cong@msi:/work/tq/rootfs_nfs$ sudo /etc/init.d/nfs-kernel-server restart
3.1 TQ2440的设置
参考

4.tftp服务器的配置
  1. 1.1 搭建tftp服务器
  2. TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场 合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。
  3. 在嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。
  4. 一般的发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd, 然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。 无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已,下面以ubuntu为例进行说明。
  5. 安装xinetd:
  6. ky@ubuntu:~$ sudo apt-get install xinetd
  7.  安装tftp和tftpd:
  8. ky@ubuntu:~$ sudo apt-get install tftp tftpd
  9. 或者安装tftp的增强版本tftp-hpa:
  10. ky@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa
  11. 建立配置文件。建立/etc/xinetd.d/tftp文件,写入如下内容:
  12. service tftp
  13. {
  14.         socket_type = dgram
  15.         protocol = udp
  16.         wait = yes
  17.         user = root
  18.         server = /usr/sbin/in.tftpd
  19.         server_args = -/var/tftpboot/
  20.         disable = no
  21.         per_source = 11
  22.         cps = 100 2
  23.         flags = IPv4
  24. }
  25. 其中server_args设置的/var/tftpboot目录是tftp服务器的目录,设置其访问权限为777:
  26. ky@ubuntu:~$ sudo mkdir -pv /var/tftpboot/
  27. ky@ubuntu:~$ sudo chmod 777 /var/tftpboot/
  28. 启动或者重启xinetd服务:
  29. ky@ubuntu:~$ sudo /etc/init.d/xinetd start或者restart
  30. 本机测试。在/tftpboot目录下创建一个ky文件,启动另外一个终端,输入:
  31. ky@ubuntu:~$ tftp 127.0.0.1
  32. tftp> get ky #获取ky文件
  33. tftp> q #退出tftp
  34.   在终端输入ls命令,可以看到当前目录下看到ftp获取到的ky文件。
  35. 用开发板来验证tftp服务器是否可用。启动开发板,进入U-Boot命令行,用tftp命令加载tftp服务器中的文件,如:
  36. U-Boot$ tftp 80008000 zImage
  37. ENET:auto-negotiation complete
  38. ENET:Link status up
  39. ENET:FULL DUPLEX
  40. ENET:100MBase
  41. MAC: 00:61:62:69:6e:67
  42. TFTP from server 192.168.1.3; our IP address is 192.168.1.5
  43. Filename 'zImage'.
  44. Load address: 0x80008000
  45. Loading: #################################
  46. done
  47. Bytes transferred = 479927 (752b7 hex)
  48. 说明:
  49. (1)使用开发板与虚拟机安装的客户系统进行TFTP通讯,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。
  50. (2)如果以上设置都确认无误,但tftp还是不成功,请检查主机的防火墙是否已经关闭。
  51. []http://www.diybl.com/course/6_system/linux/ubuntu/20110902/559396.html
噢了
阅读(2102) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~