您的位置:首页 > 其它

移植busybox到开发板

2014-07-19 21:57 113 查看
折腾了两天,终于把这个做好,移植的工作还是很辛苦的,目前自己对/etc/下的配置文件的逻辑关系还不是太清晰,这还需要后续的努力,一些心得,更多的是备忘,把这些东西记录下来。
我的需求:由于目前的实验平台没有telnet和ftp,所以在软件调试过程中,只能用串口和SD卡来交互和传送文件。于是就想到自己定制一个文件系统,此文件系统包含这两个功能,另外由于项目的需求为一个演示系统,所以还需要在主板自带的屏幕上输出 程序的打印信息。

实验环境:

1.PC机位ubuntu 12.04 , 交叉编译工具gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)

2.嵌入式主板为:DevKit 8000 

3.busybox版本为:1.13.1

4.vsftp 版本为:2.0.5

实验过程:

1.首先需要编译busybox,编译的过程网上有很多的教程。telnet就再busybox中编译。

make install 之后会在 当前目前下的_install/目录下生成所需要的几个目录。

bin sbin linuxrc usr(这个我并没有编译)

2.把上边的三个文件夹放到一个新建的rootfs/下,剩下的文件我并没有自己去建。把原来devkit8000的文件系统解压之后,我放到了rootfs下,(需要注意的是,/etc目录下的文件我没有拷贝,因为之前拷贝过很多次,会出现各种各样的问题,所以/etc下的文件,我用的是天嵌的板子tq335x文件系统中的/etc/)

3.值得注意的是,profile和init.d/rcS中的文件要进行一些调整,以下是调整之后的。

/etc/profile
# Ash profile
# vim: syntax=sh

# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1

export set HOME=/root
export set QTDIR=/opt/PDA
export set QPEDIR=/opt/PDA
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
if [ -f /sys/devices/virtual/input/mice/subsystem/input$ts/uevent ] ; then
export set TSLIB_CONFFILE=/etc/ts.conf
if [ -n "$pointer" ] ; then
export set TSLIB_CALIBFILE=$pointer
fi
export set TSLIB_TSDEVICE=/dev/event$ts
export set TSLIB_PLUGINDIR=/lib/ts
export set QWS_MOUSE_PROTO="TSLIB:/dev/event$ts MouseMan:/dev/mice"
fi
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$QPEDIR/plugins/accessible:$LD_LIBRARY_PATH

#USER="`id -un`"
#LOGNAME=$USER
#PS1='[\u@\h \W]# '
#PATH=$PATH

#HOSTNAME=`/bin/hostname`

/bin/hostname FlyingGames
PS1="[""$(whoami)"@"$(hostname): "'$PWD'"]# "

export USER LOGNAME PS1 PATH

/etc/init.d/rcS
#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
#       Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#

mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
mount -n -t usbfs none /proc/bus/usb
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock

#modprobe rt5370sta

hwclock -s
#EmbedSky_wdg &

ifconfig lo 127.0.0.1
net_set &

/etc/rc.d/init.d/netd start
/etc/rc.d/init.d/httpd start
/etc/rc.d/init.d/leds start

InputAdapter
#pda &
#/bin/hostname -F /etc/sysconfig/HOSTNAME

#telnet  stream  tcp     nowait  root    /usr/sbin/telnetd       /usr/sbin/telnetd -i
/usr/sbin/telnetd &
/usr/sbin/vsftpd &

insmod /usr/lib/rt3070sta.ko
sleep 1
至此,telnet已经做完。
4.接下来要做的是vsftp的移植,vsftp不同于telnetd,telnetd是在busybox自带的就有了,但是ftpd我在make menuconfig后找了好半天,都找不到有ftpd,无奈,只能用vsftp这个第三方的程序。

参考:http://blog.163.com/sunshine_linting/blog/static/44893323201391010522601/

5.接下来要做的是把文件系统打包,拷贝到主板上。

/home/embest/work/tools/mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 812 -o ubifs.img

/home/embest/work/tools/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /home/embest/work/tools/ubinize.cfg

cp ubi.img /media/LABEL1

6.把sd卡插到主板上

mmcinit

fatload mmc 0:1 81000000 ubi.img

nand unlock

nand ecc sw

nand erase 680000

band write.i 81000000 680000 $(file size)

开机即可。

附:开机之后在主板的屏幕上是没有任何登陆信息的。这时候需要通过登陆telnet然后启动程序。启动程序的时候记得加个重定向 。

xxxx > /dev/tty0即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: