正点原子使用nfs和sftp启动开发板

本文详细描述了如何在开发板上通过NFS和SFTP启动,包括安装NFS服务,配置文件共享,启用SSH服务,以及使用UBOOT进行网络操作如DHCP、ping和TFTP传输文件,以实现Linux驱动开发的网络访问。
摘要由CSDN通过智能技术生成

正点原子使用nfs和sftp启动开发板

1 NFS 服务开启

后面进行 Linux 驱动开发的时候需要 NFS 启动,因此要先安装并开启 Ubuntu 中的 NFS 服务,使用如下命令安装 NFS 服务:

sudo apt-get install nfs-kernel-server rpcbind

以后我们可以在开发板上通过网络文件系统来访问nfs文件夹,要先配置 nfs,使用如下命令打开 nfs 配置文件/etc/exports

sudo vim /etc/exports
#打开后添加如下命令
/home/zuozhongkai/linux/nfs *(rw,sync,no_root_squash)

#重启 NFS 服务,使用命令如下
sudo /etc/init.d/nfs-kernel-server restart

紧接着就是测试nfs是否成功打开

使用nfs操作之前需要 创建一个文件夹

使用如下命令测试nfs是否配置成功

nfs [loadAddress] [[hostIPaddr:]bootfilename]
nfs 80800000 192.168.1.253:/home/user/linux/nfs/zImage

2 SSH 服务开启

使用如下命令

sudo apt-get install openssh-server

3 网络操作命令

uboot 是支持网络的,我们在移植 uboot 的时候一般都要调通网络功能,因为在移植 linux kernel 的时候需要使用到 uboot 的网络功能做调试。uboot 支持大量的网络相关命令,比如 dhcp、ping、nfs tftpboot,我们接下来依次学习一下这几个和网络有关的命令。

在使用 uboot 的网络功能之前先用网线将开发板的 ENET2 接口和电脑或者路由器连接起来,I.MX6U-ALPHA 开发板有两个网口:ENET1 ENET2,一定要连接 ENET2,不能连接错了。

设置环境变量

setenv ipaddr 192.168.1.50  #这个是开发板的本地地址
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.253 #这个是ubuntu的网络地址
saveenv

使用ping命令查看ubuntu和开发板是否连接成功

ping 192.168.1.253

如果网口没有打开就需要打开网口

ifconfig -a #查看网口情况
ifconfig eth0 up

4 tftp传输文件

tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpatftpd-hpa,命令如下:

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

和 NFS 一样,TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录,命令如下:

mkdir /home/user/linux/tftpboot
chmod 777 /home/user/linux/tftpboot

最后配置 tftp,安装完成以后新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,然后在里面输入如下内容:

 server tftp
{
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /home/user/linux/tftpboot/
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
}

完了以后启动 tftp 服务,命令如下:

sudo service tftpd-hpa start

打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/user/linux/tftpboot"
TFTP_ADDRESS=":69" 
TFTP_OPTIONS="-l -c -s"

TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。

最后输入如下命令, 重启 tftp 服务器:

sudo service tftpd-hpa restart

tftp 服务器已经搭建好了,接下来就是使用了。将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:

cp zImage /home/user/linux/tftpboot/
cd /home/user/linux/tftpboot/
chmod 777 zImage

万事俱备,只剩验证了,uboot 中的 tftp 命令格式如下:

tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
tftp 80800000 zImage
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在MFC项目中使用SFTP协议进行文件传输,可以使用开源库libssh2作为SFTP客户端。 以下是一个简单的示例代码,用于从SFTP服务器下载文件到本地: ```c++ // 连接SFTP服务器 LIBSSH2_SESSION *session; LIBSSH2_SFTP *sftp_session; LIBSSH2_SFTP_HANDLE *sftp_handle; int rc; char *sftp_server = "sftp.example.com"; char *sftp_user = "username"; char *sftp_password = "password"; int sftp_port = 22; rc = libssh2_init(0); if (rc != 0) { // 初始化失败 return; } session = libssh2_session_init(); if (!session) { // session初始化失败 libssh2_exit(); return; } rc = libssh2_session_handshake(session, sock); if (rc) { // 连接SFTP服务器失败 libssh2_session_free(session); libssh2_exit(); return; } sftp_session = libssh2_sftp_init(session); if (!sftp_session) { // 初始化SFTP会话失败 libssh2_session_free(session); libssh2_exit(); return; } // 下载文件到本地 char *remote_file_path = "/path/to/remote/file.txt"; char *local_file_path = "C:\\path\\to\\local\\file.txt"; sftp_handle = libssh2_sftp_open(sftp_session, remote_file_path, LIBSSH2_FXF_READ, 0); if (!sftp_handle) { // 打开远程文件失败 libssh2_sftp_shutdown(sftp_session); libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing"); libssh2_session_free(session); libssh2_exit(); return; } FILE *local_file = fopen(local_file_path, "wb"); if (!local_file) { // 创建本地文件失败 libssh2_sftp_close(sftp_handle); libssh2_sftp_shutdown(sftp_session); libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing"); libssh2_session_free(session); libssh2_exit(); return; } char buffer[1024]; int read_len; while ((read_len = libssh2_sftp_read(sftp_handle, buffer, sizeof(buffer))) > 0) { fwrite(buffer, 1, read_len, local_file); } // 关闭SFTP会话和本地文件 fclose(local_file); libssh2_sftp_close(sftp_handle); libssh2_sftp_shutdown(sftp_session); // 断开SFTP服务器连接 libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing"); libssh2_session_free(session); libssh2_exit(); ``` 需要注意的是,以上示例并没有处理错误情况,需要根据实际情况进行修改。同时,需要在项目中添加libssh2相关的头文件和库文件,并将libssh2.dll文件放在可执行文件所在目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值