8083|20

241

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

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/目录下 创建一个新的脚本文件(名字随意)

  1. [root@jyxtec /]# cd /etc/rc.d/init.d/
  2. [root@jyxtec init.d]# vi sdcard
复制代码
脚本内容如下

  1. #!/bin/sh

  2. #See how we were called
  3. case "$1" in
  4.   start)
  5.     insmod /g_file_storage.ko file=/dev/mmcblk0p1 removable=1
  6.     mount /dev/mmcblk0p1 /home/yuanlai
  7.     ;;
  8.   stop)
  9.     unmount /home/yuanlai
  10.     rmmod /g_file_storage.ko file=/dev/mmcblk0p1 removable=1
  11.     ;;
  12. esac
  13. exit 0
复制代码
创建完后保存退出,修改脚本权限!

  1. [root@jyxtec init.d]# chmod 777 sdcard
复制代码

接着要让此脚本在开机启动的时候被运行:

cd 到 /etc/init.d/目录下 修改rcS文件

  1. [root@jyxtec init.d]# cd /etc/init.d/
  2. [root@jyxtec init.d]# vi rcS
复制代码
只需要在rcS文件#sleep 1 后加入如下这条命令就行了

  1. #sleep 1                                          
  2. /etc/rc.d/init.d/sdcard start  
复制代码
保存退出后重启开发板就可以了,这里我直接通过命令来实现

  1. [root@jyxtec init.d]# shutdown -r now
复制代码
重启后就可以发现在PC机自动弹出一个可移动磁盘的盘符哦!



接着测试一下:

把在目标机上编译好的hello文件拷贝到刚出现的可移动磁盘里面


接着通过串口终端cd到以上目录中,然后执行该文件

  1. [root@jyxtec /etc]# cd /home/yuanlai/Linux_Programing/000_Hello_world/
  2. [root@jyxtec 000_Hello_world]# ./hello
  3. Hello world!
  4. [root@jyxtec 000_Hello_world]#
复制代码
成功打印hello world出来!(注意文件一定是使用arm-linux-gcc编译出的,如果是使用宿主机上的gcc编译的,在开发板就运行不了了)



但是也发现一个问题,如果我在目标机中在sd卡上创建文件,能成功创建(目标机能看到创建好的文件),但是写完后,并不能在PC上的可移动磁盘中看到,但是重启后,却可以看到之前在目标机创建的文件!

望指点迷津


论坛ID:yuanlai2010

发表时间:2014-08-05



最新回复

用串口传小测试程序也可以,用XMODEM, ZMODEM协议也很方便,特别是如果是没有系统的时候,调试裸机阶段,在bootloader里面加上xmodem等协议的支持,用串口终端程序从串口传文件到板子上内存里面执行,很方便;  详情 回复 发表于 2015-1-29 14:17
点赞 关注(1)

回复
举报

20

帖子

0

TA的资源

一粒金砂(中级)

推荐
 
yuanlai2010 发表于 2014-8-6 22:27
主要是以书本《Linux 程序设计 第四版》为主,视频《国嵌培训视频》为辅,我觉得书本会写的比较详细,而 ...

恩 好的 多谢指点
 
 

回复

554

帖子

0

TA的资源

版主

沙发
 
gadget方式设备是独占的,如果在板上改了东西,你要再次挂到电脑才能看得到,如果是用MTP协议的话,就没有这个问题,不过,MTP我们还没有实现过,有兴趣可以研究一下。。。
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

554

帖子

0

TA的资源

版主

板凳
 
其实,最方便的方法是通过网络来传,tftp,nfs等,开发的时候,一般以nfs为主

点评

对NFS还不怎么了解,NFS服务是安装在宿主机上的,目标板可以直接访问宿主机上开启NFS服务的目录吗?  详情 回复 发表于 2014-8-6 12:34
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

4
 
NFS 是王道! 简单方便快捷

点评

多谢指点,我得去学习下NFS该怎么使用了,很有必要的是还要去弄一条长一点的网线!  详情 回复 发表于 2014-8-6 12:36
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

5
 
spacexplorer 发表于 2014-8-5 19:53
其实,最方便的方法是通过网络来传,tftp,nfs等,开发的时候,一般以nfs为主

对NFS还不怎么了解,NFS服务是安装在宿主机上的,目标板可以直接访问宿主机上开启NFS服务的目录吗?
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

6
 
wuyongwang2345 发表于 2014-8-6 10:33
NFS 是王道! 简单方便快捷

多谢指点,我得去学习下NFS该怎么使用了,很有必要的是还要去弄一条长一点的网线!

点评

电脑与板子之间直接连网线就可以了,可以直接与虚拟机通讯的  详情 回复 发表于 2014-8-6 13:33
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

7
 
我直接接在远端路由器上,和这边建立NFS连接,远端有台笔记本通过串口和板子连接方便,通过win7自带的远程管理就能远端控制了,感觉挺方便的

点评

多谢指点,现在可以使用了,感觉确实很方便。不过配置的时候,敲的那些命令都不知道是什么意思,网络方面的知识欠缺太多了!  详情 回复 发表于 2014-8-6 15:22
 
 
 

回复

554

帖子

0

TA的资源

版主

8
 
yuanlai2010 发表于 2014-8-6 12:36
多谢指点,我得去学习下NFS该怎么使用了,很有必要的是还要去弄一条长一点的网线!

电脑与板子之间直接连网线就可以了,可以直接与虚拟机通讯的

点评

多谢BOSS指点,只是我没有用虚拟机,使用的是另外一台PC,安装的是CentOS6.5 一直都是跑着个SAMBA服务,到买了根网线,新搭建了个NFS服务,现在已成功挂载到目标板上了,只是我在win7下用mount挂载的  详情 回复 发表于 2014-8-6 15:19
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

9
 
spacexplorer 发表于 2014-8-6 13:33
电脑与板子之间直接连网线就可以了,可以直接与虚拟机通讯的

多谢BOSS指点,只是我没有用虚拟机,使用的是另外一台PC,安装的是CentOS6.5 一直都是跑着个SAMBA服务,到买了根网线,新搭建了个NFS服务,现在已成功挂载到目标板上了,只是我在win7下用mount挂载的时候提示没有此命令。PC上就还是用samba好了
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

10
 
wuyongwang2345 发表于 2014-8-6 13:28
我直接接在远端路由器上,和这边建立NFS连接,远端有台笔记本通过串口和板子连接方便,通过win7自带的远程 ...

多谢指点,现在可以使用了,感觉确实很方便。不过配置的时候,敲的那些命令都不知道是什么意思,网络方面的知识欠缺太多了!
 
 
 

回复

554

帖子

0

TA的资源

版主

11
 
慢慢来吧,用多了,就自然意会了!呵呵
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

12
 
恩 慢慢来!
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

13
 
顺便问问楼主,要学Linux应用层的话,你是按照什么步骤来的呢,有什么书籍或者视频推荐么

点评

主要是以书本《Linux 程序设计 第四版》为主,视频《国嵌培训视频》为辅,我觉得书本会写的比较详细,而且结构清晰。  详情 回复 发表于 2014-8-6 22:27
 
 
 

回复

241

帖子

4

TA的资源

纯净的硅(初级)

14
 
wuyongwang2345 发表于 2014-8-6 17:04
顺便问问楼主,要学Linux应用层的话,你是按照什么步骤来的呢,有什么书籍或者视频推荐么

主要是以书本《Linux 程序设计 第四版》为主,视频《国嵌培训视频》为辅,我觉得书本会写的比较详细,而且结构清晰。

点评

恩 好的 多谢指点  详情 回复 发表于 2014-8-7 08:55
 
 
 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

16
 

已经实现2440的usbslave的裸机传输,就像用uboot+dnw升级程序一样
查看2416的pdf发现usb设备端的和2440的很不一样,无法入手
请教,help2416的usbslave的裸机传输,楼主有研究过么?
 
 
 

回复

554

帖子

0

TA的资源

版主

17
 
uboot里有完整的dnw源码,可以参考一下
 
个人签名My dreams will go on...
http://www.jyxtec.com
 
 

回复

5979

帖子

8

TA的资源

版主

18
 
是不是需要执行一下sync
 
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

19
 
help2416的uboot确实有dnw的功能,但是不太明白如何才能分离出dnw的功能单独做成一个裸机程序测试。
2440的dnw功能可实现裸机程序单独测试,发现help2416的uboot里dnw的IRQ中断没有处理居然是判断中断标志而不是在中断里处理。
请教,uboot如何才能分离出单一的dnw功能啊 或者 精简 到只有一个dnw的功能?
 
 
 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

20
 
int do_usbd_dnw ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{

...
        while (1) {
                if (S3C_USBD_DETECT_IRQ()) {
                        s3c_udc_int_hndlr();
                        S3C_USBD_CLEAR_IRQ();
                }
...
}
这个是uboot_1.3.4的usb使用dnw传输代码用于s3c2416的板子,有一点不太明白
usb传输中断在这c函数判断标志位把所有传输的事情都做了,找了start.S启动文件为什么汇编里面的就不用中断入口函数调用c的usb中断了?

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表