vivtis调试linux应用程序,linux笔记2

1.****设置****nfs服务器

sudo apt-get install nfs-kernel-server

sudo vim /etc/exports 增加一行内容:

/nfs *(rw,sync,no_root_squash)

其中/nfs表示作文根文件系统的目录, *表示任何主机都可以访问

重启nfs服务:

sudo /etc/init.d/portmap restart

sudo /etc/init.d/nfs-kernel-server restart

然后把之前用busybox制作好的_install目录下内容全部拷到/nfs下

设置主机ip:

ifconfig eth0 192.168.5.1 netmask 255.255.255.0

2. 设置uboot

uboot中include/configs/versatile.h中设置参数和命令

define CONFIG_BOOTARGS"root=/dev/nfs nfsroot=192.168.5.1:/nfs "\

"nfsaddrs=192.168.5.3:192.168.5.1:192.168.5.2:255.255.255.0::eth0:off "\

"mem=128M "\

"netdev=25,0,0xf1010000,0xf1010010,eth0 "\

"console=ttyAMA0,38400n1"

define CONFIG_SMC91111_EXT_PHY

define CONFIG_NETMASK 255.255.255.0

define CONFIG_IPADDR 192.168.5.3

define CONFIG_SERVERIP 192.168.5.1

define CONFIG_INITRD_TAG

define CONFIG_BOOTCOMMAND \

"set ipaddr 192.168.5.3;"\

"set serverip 192.168.5.1;"\

"tftpboot 0x00008000 uImage;"\

"bootm 0x8000 "

uImage在/tftpboot下,要开启tftp server服务

其中192.168.5.3为uboot ip, 192.168.5.2为qemu ip,192.168.5.1为主机ip

3. 启动uboot

qemu-system-arm加载uboot:

sudo modprobe tun

qemu-system-arm -M versatilepb -kernel u-boot -net nic,vlan=0,macaddr=00:4c:4c:00:00:01 -net tap,vlan=0 -nographic

这样uboot启动后就会通过tftp把主机上的/tftpboot目录下的zImage下载到ram 0×8000处,并把主机中/nfs目录作为根文件系统

手动启动命令为:

tftp 0×8000 uImage

bootm 0×8000

如果tftp失败,则添加一条路由 route add -host 192.168.5.3 gw 192.168.5.2

启动日志:

U-Boot 2015.07 (Aug 20 2015 - 10:44:36 +0200)

DRAM: 128 MiB

WARNING: Caches not enabled

Flash: ## Unknown flash on Bank 1 - Size = 0x00000000 = 0 MB

*** failed ***

*** Warning - bad CRC, using default environment

In: serial

Out: serial

Err: serial

Net: SMC91111-0

Warning: SMC91111-0 using MAC address from net device

Warning: Your board does not use generic board. Please read

doc/README.generic-board and take action. Boards not

upgraded by the late 2014 may break or be removed.

Hit any key to stop autoboot: 0

SMC91111: MAC 00:4c:4c:00:00:01

Using SMC91111-0 device

TFTP from server 192.168.5.1; our IP address is 192.168.5.3

Filename 'uImage'.

Load address: 0x8000

Loading: T #################################################################

#######################################################

321.3 KiB/s

done

Bytes transferred = 1756040 (1acb88 hex)

Booting kernel from Legacy Image at 00008000 ...

Image Name: Linux-3.2.0

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 1755976 Bytes = 1.7 MiB

Load Address: 00008000

Entry Point: 00008000

Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

Linux version 3.2.0 (user@instant-contiki) (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29) ) #6 Tue Aug 18 19:59:05 CEST 2015

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00093177

CPU: VIVT data cache, VIVT instruction cache

Machine: ARM-Versatile PB

Memory policy: ECC disabled, Data cache writeback

sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms

Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512

Kernel command line: root=/dev/nfs nfsroot=192.168.5.1:/nfs nfsaddrs=192.168.5.3:192.168.5.1:192.168.5.2:255.255.255.0::eth0:off mem=128M netdev=25,0,0xf1010000,0xf1010010,eth0 console=ttyAMA0,38400n1

PID hash table entries: 512 (order: -1, 2048 bytes)

Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

Memory: 128MB = 128MB total

Memory: 126444k/126444k available, 4628k reserved, 0K highmem

Virtual kernel memory layout:

vector : 0xffff0000 - 0xffff1000 ( 4 kB)

fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)

vmalloc : 0xc8800000 - 0xd8000000 ( 248 MB)

lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)

modules : 0xbf000000 - 0xc0000000 ( 16 MB)

.text : 0xc0008000 - 0xc030cf1c (3092 kB)

.init : 0xc030d000 - 0xc0329000 ( 112 kB)

.data : 0xc032a000 - 0xc03474a0 ( 118 kB)

.bss : 0xc03474c4 - 0xc0361444 ( 104 kB)

NR_IRQS:192

VIC @f1140000: id 0x00041190, vendor 0x41

Console: colour dummy device 80x30

Calibrating delay loop... 307.20 BogoMIPS (lpj=1536000)

pid_max: default: 32768 minimum: 301

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

NET: Registered protocol family 16

Serial: AMBA PL011 UART driver

dev:f1: ttyAMA0 at MMIO 0x101f1000 (irq = 12) is a PL011 rev1

console [ttyAMA0] enabled

dev:f2: ttyAMA1 at MMIO 0x101f2000 (irq = 13) is a PL011 rev1

dev:f3: ttyAMA2 at MMIO 0x101f3000 (irq = 14) is a PL011 rev1

fpga:09: ttyAMA3 at MMIO 0x10009000 (irq = 38) is a PL011 rev1

bio: create slab <bio-0> at 0

Switching to clocksource timer3

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 4096 (order: 3, 32768 bytes)

TCP bind hash table entries: 4096 (order: 2, 16384 bytes)

TCP: Hash tables configured (established 4096 bind 4096)

TCP reno registered

UDP hash table entries: 256 (order: 0, 4096 bytes)

UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

NET: Registered protocol family 1

RPC: Registered named UNIX socket transport module.

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

RPC: Registered tcp NFSv4.1 backchannel transport module.

NetWinder Floating Point Emulator V0.97 (double precision)

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.

ROMFS MTD (C) 2007 Red Hat, Inc.

msgmni has been set to 246

Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)

io scheduler noop registered

io scheduler deadline registered

io scheduler cfq registered (default)

clcd-pl11x dev:20: PL110 rev0 at 0x10120000

clcd-pl11x dev:20: Versatile hardware, VGA display

Console: switching to colour frame buffer device 80x60

brd: module loaded

physmap platform flash device: 04000000 at 34000000

physmap-flash physmap-flash.0: map_probe failed

smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>

eth0: SMC91C11xFD (rev 1) at c8800000 IRQ 25 [nowait]

eth0: Ethernet addr: 00:4c:4c:00:00:01

mousedev: PS/2 mouse device common for all mice

TCP cubic registered

NET: Registered protocol family 17

VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0

eth0: link up

IP-Config: Complete:

device=eth0, addr=192.168.5.3, mask=255.255.255.0, gw=192.168.5.2,

host=192.168.5.3, domain=, nis-domain=(none),

bootserver=192.168.5.1, rootserver=192.168.5.1, rootpath=

input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0

input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1

VFS: Mounted root (nfs filesystem) on device 0:11.

Freeing init memory: 112K

Please press Enter to activate this console.

/ # ls

bin dev etc linuxrc proc sbin sys usr

主机、qemu和uboot三者的ip要设置为同一个网段。

1.修改u-boot/include/configs/versatile.h

define CONFIG_SMC91111_EXT_PHY

没有这句ping时总会报“SMC91111: PHY auto-negotiate timed out”

然后重新编译uboot

2.修改/etc/qemu-ifup

!/sbin/bash

ifconfig $1 192.168.5.2

3.启动qemu

sudo modprobe tun

qemu-system-arm -M versatilepb -kernel u-boot -net nic,vlan=0,macaddr=00:4c:4c:00:00:01 -net tap,vlan=0 -nographic

3.设置主机IP添加路由表项

ifconfig eth0 192.168.5.1 netmask 255.255.255.0

route add -host 192.168.5.3 gw 192.168.5.2

route add -host 192.168.5.1 gw 192.168.5.2

可以用route -n 查看设置后的路由表

4.设置uboot IP

set ipaddr 192.168.5.3

set netmask 255.255.255.0

用print可以打印env查看设置的参数:

VersatilePB # printbaudrate=38400bootargs=root=/dev/nfs mem=128M ip=dhcp netdev=25,0,0xf1010000,0xf1010010,eth0 console=ttyAMA0,38400n1bootdelay=2bootfile=/tftpboot/uImageethact=SMC91111-0ethaddr=00:4c:4c:00:00:01ipaddr=192.168.5.3netmask=255.255.255.0serverip=192.168.5.1stderr=serialstdin=serialstdout=serialverify=n

之后就可以在uboot中ping通主机了

VersatilePB # ping 192.168.5.1SMC91111: MAC 00:4c:4c:00:00:01Using SMC91111-0 devicehost 192.168.5.1 is alive

参考: 为qemu中的u-boot增加网络支持http://blog.chinaunix.net/uid-20552523-id-2191633.html

安装$ apt-get install tftp-hpa tftpd-hpa

建立目录$ mkdir /tftpboot # 这是建立tftp传输目录。$ sudo chmod 0777 /tftpboot$ sudo touch test.txt # test.txt文件最好输入内容以便区分

配置$ sudo vi /etc/default/tftpd-hpa

TFTP_USERNAME=”tftp”** TFTP_DIRECTORY=”/tftpboot” # 这里是你的tftpd-hpa的服务目录,这个想建立在哪里都行TFTP_ADDRESS=”0.0.0.0:69″** TFTP_OPTIONS=”-l -c -s” # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定

重启服务$ sudo service tftpd-hpa restart # 启动服务,这里要注意,采用的独立服务形式。

测试$ tftp 127.0.0.1tftp>get test.txttftp>put test1.txttftp>qverbose可以开启显示详细信息

1.安装qemu

sudo apt-get install qemu qemu-kvm qemu-kvm-extras

ubuntu us的源很慢,可以改成国内阿里的源。

sudo vim /etc/apt/sources.list

:%s/us.archive/cn.archive

安装好后,qemu-system-arm M ? 可以查看qemu支持的开发板

user@instant-contiki:~/qemu/busybox-1.23.2$ qemu-system-arm -M ?

Supported machines are:

beagle Beagle board (OMAP3530)

beaglexm Beagle board XM (OMAP3630)

collie Collie PDA (SA-1110)

nuri Samsung NURI board (Exynos4210)

smdkc210 Samsung SMDKC210 board (Exynos4210)

connex Gumstix Connex (PXA255)

verdex Gumstix Verdex (PXA270)

highbank Calxeda Highbank (ECX-1000)

integratorcp ARM Integrator/CP (ARM926EJ-S) (default)

mainstone Mainstone II (PXA27x)

musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)

n800 Nokia N800 tablet aka. RX-34 (OMAP2420)

n810 Nokia N810 tablet aka. RX-44 (OMAP2420)

n900 Nokia N900 (OMAP3)

sx1 Siemens SX1 (OMAP310) V2

sx1-v1 Siemens SX1 (OMAP310) V1

overo Gumstix Overo board (OMAP3530)

cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)

realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)

realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)

realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8

realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9

akita Akita PDA (PXA270)

spitz Spitz PDA (PXA270)

borzoi Borzoi PDA (PXA270)

terrier Terrier PDA (PXA270)

lm3s811evb Stellaris LM3S811EVB

lm3s6965evb Stellaris LM3S6965EVB

tosa Tosa PDA (PXA255)

versatilepb ARM Versatile/PB (ARM926EJ-S)

versatileab ARM Versatile/AB (ARM926EJ-S)

vexpress-a9 ARM Versatile Express for Cortex-A9

vexpress-a15 ARM Versatile Express for Cortex-A15

z2 Zipit Z2 (PXA27x)

2.去官网下载uboot、linux内核、busybox最新代码还有arm-linux交叉编译工具链

最好在~/.bashrc里加上两句

export PATH=$PATH:/usr/local/arm-2014.05/bin

export CROSS_COMPILE=arm-none-linux-gnueabi-

方便后面编译linux内核和busybox.

然后source ~/.bashrc让它生效

3.编译linux内核

在linux源码目录下

make versatile_defconfig ARCH=arm后生成.config文件

然后把.config文件修改下,加上一句CONFIG_AEABI=y,不然后面加载initramfs会出错

然后make -j12 all ARCH=arm

之后再arch/arm/boot下生存zImage

4.编译busybox

make defconfig ARCH=arm

make menuconfig进入配置界面

build option下选择生成静态库文件

make ARCH=arm

编译完成后

make install会在busybox目录下生成_install目录,然后在该目录下

mkdir dev etc proc sys etc/init.d,之后_install目录如下

bin dev etc linuxrc proc sbin sys usr

在init.d目录下创建文件rcS, 内容如下

!/bin/sh

mount -t proc none /proc

mount -t sysfs none /sys

/sbin/mdev -s

给rcS加上可执行权限 chmod +x rcS

生成ramdisk文件

在_insall目录下执行命令

find . | cpio -o --format=newc > ../initramfs

5.启动linux

qemu-system-arm -M versatilepb -kernel arch/arm/boot/zImage -initrd ../busybox-1.23.2/initramfs -serial stdio -append “console=ttyAMA0 root=dev/arm rdinit=/sbin/init”

之后就能看到启动Linux后的Please press Enter to activate this console.

其实也不一定就要使用busybox制作的ramfs文件系统,也可以启动一个简单的hello world。

参考:

http://blog.csdn.net/caspiansea/article/details/12361787

http://blog.csdn.net/caspiansea/article/details/12342053

网上说得太复杂,我只需要简单的文件传输功能。整个过程分五步:

1.安装vsftpd

sudo apt-get install vsftpd

2.配置vsftpd

sudo vim /etc/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

chroot_local_user=YES

local_root=/home/ftp

3.创建可访问的目录

sudo mkdir /home/ftp

sudo chmod a+w /home/ftp

4.创建可访问的用户

sudo useradd -d /home/ftp -M fuser

sudo passwd fuser

5.重启vsftpd服务

sudo service vsftpd restart

就下来就可以在该linux上浏览器里用ftp://127.0.0.1测试, 或者在windows用cuteftp工具测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值