Helper2416-27——Linux_Programing——传输文件到目标版
[复制链接]
Linux_Programing——传输文件到目标版
参与Helper2416开发板助学计划心得
学习Linux应用编程,却总是为怎么把在宿主机上编译好的文件传送到目标版运行而犯愁,一段琢磨后有了一个比较适合自身的解决方案,现在分享给大家!如果您有什么好的方法,请不吝赐教
在《HELPER2416_V2 开发板 LINUX 用户手册》中给我们介绍了如下几种传输方式:
1:使用U盘传输文件
2:使用SD卡传输文件
3:使用串口传输文件
4:使用usb-gadget方式传输文件
对于方式1、2来说需要插拔U盘或者SD,所以不考虑,而方式3使用串口方式传输,但是由于串口传输的效率比较低,所以也放弃了这种方式。所以我最终选择的方式是usb-gadget。
usb-gadget使用的基本步骤:
1、 将SD卡插入SD1卡座
2、 插上USB线,连接电脑和开发板的MicroUSB接口
3、 开机,并等待启动完毕
4、 登录串口终端
5、 查看SD卡所在的设备分区
6、 挂载SD卡设备
由于SD卡基本是一直插在开发板里面的,USB本来就是拿来供电用的,串口也是一直链接好的,剩下要做的就是要敲那几行命令了,由于每次开机都要输入这几行命令,有点麻烦,所以就自己写了个启动脚本,在开机的时候自动载入g_file_storage.ko模块,并将/dev/mmcblk0p1挂载到指定的目录下。以后就只要将我们在宿主机上编译好的文件复制到PC出现的U盘里,然后在通过串口终端CD到相应目录运行文件就OK了!
编写启动脚本:
在串口终端中 cd 到 /etc/rc.d/init.d/目录下 创建一个新的脚本文件(名字随意)
- [root@jyxtec /]# cd /etc/rc.d/init.d/
- [root@jyxtec init.d]# vi sdcard
复制代码 脚本内容如下
- #!/bin/sh
- #See how we were called
- case "$1" in
- start)
- insmod /g_file_storage.ko file=/dev/mmcblk0p1 removable=1
- mount /dev/mmcblk0p1 /home/yuanlai
- ;;
- stop)
- unmount /home/yuanlai
- rmmod /g_file_storage.ko file=/dev/mmcblk0p1 removable=1
- ;;
- esac
- exit 0
复制代码 创建完后保存退出,修改脚本权限!
- [root@jyxtec init.d]# chmod 777 sdcard
复制代码
接着要让此脚本在开机启动的时候被运行:
cd 到 /etc/init.d/目录下 修改rcS文件
- [root@jyxtec init.d]# cd /etc/init.d/
- [root@jyxtec init.d]# vi rcS
复制代码 只需要在rcS文件#sleep 1 后加入如下这条命令就行了
- #sleep 1
- /etc/rc.d/init.d/sdcard start
复制代码 保存退出后重启开发板就可以了,这里我直接通过命令来实现
- [root@jyxtec init.d]# shutdown -r now
复制代码 重启后就可以发现在PC机自动弹出一个可移动磁盘的盘符哦!
接着测试一下:
把在目标机上编译好的hello文件拷贝到刚出现的可移动磁盘里面
接着通过串口终端cd到以上目录中,然后执行该文件
- [root@jyxtec /etc]# cd /home/yuanlai/Linux_Programing/000_Hello_world/
- [root@jyxtec 000_Hello_world]# ./hello
- Hello world!
- [root@jyxtec 000_Hello_world]#
复制代码 成功打印hello world出来!(注意文件一定是使用arm-linux-gcc编译出的,如果是使用宿主机上的gcc编译的,在开发板就运行不了了)
但是也发现一个问题,如果我在目标机中在sd卡上创建文件,能成功创建(目标机能看到创建好的文件),但是写完后,并不能在PC上的可移动磁盘中看到,但是重启后,却可以看到之前在目标机创建的文件!
望指点迷津
论坛ID:yuanlai2010
发表时间:2014-08-05
|