注:要食用本文请先阅读 JXARM9-2410-3实验一
上传内核和根文件系统
首先用 FileZilla 或者 WinSCP 把 zImage
和 ramdisk.gz
传送到 red hat 上。
主机:红帽ip地址,确保和pc在同一个网段。
用户名:红帽登录用户名。
密码:红帽登录密码。
端口:默认选择22。
挂载ramdisk
先把 ramdisk
解压。
# 首先切换到ramdisk.gz所在的目录
gunzip ramdisk.gz
解压完毕后,ramdisk.gz
变成了 ramdisk
,通过 ls
可以看到这是一个文件,那是因为没有挂载~
挂载 ramdisk
文件
# 如果/mnt下没有loop命令,就创建
mkdir /mnt/loop
mount -o loop ramdisk /mnt/loop
装载自己想要的模块,比如加个 helloworld
的可执行文件
cd /mnt/loop
cd usr/local/
vim helloworld.c
# i插入,编写好代码后,:wq退出
arm-linux-gcc -o helloworld helloworld.c
# 没有报错,就会在当前目录生成一个名为helloworld的可执行文件
rm -rf helloworld.c
取消挂载 ramdisk
文件
cd /
umount /mnt/loop
压缩 ramdisk
文件
gzip -v9 ramdisk
把 ramdisk.gz
和 zImage
拷贝到 /tftpboot
目录下:
# 进入ramdisk.gz和zImage目录
cp ramdisk.gz zImage /tftpboot/ -rf
启动开发板
这次,不要输入 run bootlinux
命令了。
要通过 tftp
进行文件传输了。
tftp 30800000 ramdisk.gz
# 如果看到 Loading: ################################################################# 说明tftp可以,正在装载根文件系统的
# 如果是 Loading: T T T说明网络不通
# 等待下,出现这个
# done
# Bytes transferred = 4632504 (46afb8 hex)
# JX2410 #
# 就可以输入命令了
tftp 30008000 zImage
# 第一步没问题,这一步也没问题的
# 最后运行linux
go 30008000
# 即可启动
查看 /usr/local/
目录下是否有刚刚的可执行文件。
cd /usr/local/
ls helloworld
# 如果有,直接运行
./helloworld
终端显示跟程序预计的结果一致即可~
到这一步,实验二就大功告成了。
特别注意:tftp
命令后面的地址不要敲错,因为 JXARM9
是统一编址的,错了的话可能会导致把 U-Boot
覆盖,无法使用,而板子擦写次数以达到最大,则会导致开发板无法再次使用。