ZYNQ 移植 Linux -- SPI
修改 vivado 工程,启用 PS-SPI
Ubuntu 安装 Tensorflow-gpu
更正!!!
tensorflow1.14.0 似乎有 bug,在 NVIDIA 2070 super 上运行时会直接把显存占满,导致进程被 kill,换成 tensorflow1.15.3 后就好了,因此最终配置如下:
Software Version nvidia driver nvidia-440.82 Python 3.6.9 tensorflow tensorflow-gpu==1.15.3 cuDNN 7.6.4 CUDA 10.1(V10.1.243)
安装 NVIDIA 显卡驱动
下载 NVIDIA 显卡对应的驱动,下载后的文件格式为 .run
bios 禁用 secure boot,也就是设置为 disable
如果没有禁用 secure boot,会导致 NVIDIA 驱动安装失败,或者不正常。
禁用 nouveau 开源驱动
编辑 /etc/modprobe.d/blacklist.conf 文件,在最后加入:
1
blacklist nouveau
由于nouveau是在内核中的,还需要更新一下,执行如下命令:
1
sudo update-initramfs -u
之后重启电脑:
1
sudo reboot
重启后查看禁用是否成功:
1
lsmod | grep nouveau
没有输出代表nouveau被禁用了
关闭 GUI 界面,进入命令行模式
1
sudo telinit 3
安装 NVIDIA 驱动
如果以前安装过 nvidia 驱动,需要卸载:
1
sudo apt-get autoremove –purge "*nvidia*"
首先给驱动文件增加可执行权限:
1
sudo chmod a+x NVIDIA-Linux-*******.run
然后执行安装:
1
sudo sh ./NVIDIA-Linux-*******.run -no-opengl-files
安装完成后重启 !!!
–no-opengl-files 参数必须加否则会循环登录,也就是 loop login
参数介绍:
–no-opengl-files 只安装驱动文件,不安装 OpenGL 文件,这个参数最重要; –no-x-check 安装驱动时不检查 X服务; –no-nouveau-check 安装驱动时不检查 nouveau; 后面两个参数可不加。
最后切换回 GUI 界面
1
sudo telinit 5
输入 nvidia-smi
查看驱动安装是否成功
最后我装的是 430.50 版本的驱动
设置ssh通过秘钥登录
无论是个人的 VPS 还是企业允许公网访问的服务器,如果开放 22 端口的 SSH 密码登录验证方式,被众多黑客暴力猜解捅破菊花也可能是经常发生的惨剧。企业可以通过防火墙来做限制,普通用户也可能借助修改 22 端口和强化弱口令等方式防护,但目前相对安全和简单的方案则是让 SSH 使用密钥登录并禁止口令登录。
ZYNQ 移植 Linux -- USB
在之前 ZYNQ 移植 Linux 的基础上,下一步就是要移植驱动了,但是每次都把 SD 卡拔下来把驱动拷进去再重新开机太麻烦了,ZYNQ 上有两个 USB 外设,可以配成 Host、Peripheral、OTG 三种模式,因此我们可以将 USB 配置成 Host 模式,这样 ZYNQ 上的 Linux 系统就可以读取 USB 接口上的 U盘了。
ZYNQ 移植 Linux -- VDMA
https://lauri.xn--vsandi-pxa.com/hdl/zynq/xilinx-video-capture.html
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842337/Linux+Soft+DMA+Driver
Linux Wake on Lan
Wake on Lan 原理
局域网唤醒(“ WOL”)使用称为魔术包的特殊设计的帧实现,该帧发送到网络中的所有计算机,其中包括要唤醒的计算机。魔术包包含目标计算机的MAC地址,每个网卡内置的标识号(“ NIC”)或计算机中的其他以太网设备,使其能够在网络上被唯一识别和寻址。局域网唤醒功能需要计算机包含能够在系统关闭电源时以低功耗模式“侦听”传入数据包的网络设备。如果收到指向设备 MAC 地址的魔术包,则 NIC 会以与按电源按钮相同的方式向计算机的电源或主板发出信号,以启动系统唤醒。
魔术包在数据链路层(OSI 模型中的第 2 层)上发送,并在发送时使用网络广播地址广播到给定网络上的所有连接的设备;IP地址(OSI 模型中的第 3 层)未使用。
由于局域网唤醒是基于广播技术构建的,因此它通常只能在当前网络子网中使用。但是,也有一些例外情况,只要适当的配置和硬件(包括跨 Internet 的远程唤醒),局域网唤醒实际上就可以在任何网络上运行。
为了使局域网唤醒工作,部分网络接口需要保持打开状态。这消耗了少量的待机功率,远低于正常工作功率。通常将链路速度降低到可能的最低速度,以免浪费功率(例如,千兆以太网 NIC 仅保持10 Mbit / s的链路)。在不需要时禁用LAN唤醒可以非常轻微地减少已关闭但仍插入电源插座的计算机的功耗。
Magic Packet
Magic Packet 是一个广播帧(frame),透过端口 7 或端口 9 进行发送,且可以用无连接(Connectionless protocol)的通讯协议(如UDP、IPX)来传递,不过一般而言多是用 UDP。
Magic Packet 首先是连续 6 个字节的 “FF”(十六进制),其次是目标计算机的 48 位 MAC 地址的 16 次重复(有时还会带出 4 字节或 6 字节的密码),总共102个字节。
注意事项
局域网被唤醒的IP地址是广播地址:192.168.x.255,端口为 9,路由器收到后通过广播,数据包一定可以发送该局域网内待唤醒的这台机器;
公网唤醒我们无办法填写具体的内网地址,只能配置路由器的公网 IP,然后通过数据转发到具体的电脑 IP 地址,由于不是广播地址,也由于路由器 ARP 映射表在电脑关机后一定时间会丢失,所以路由器没有办法知道哪个 IP 是MAC所对应那台机器,所以魔术包被丢弃,所以要么增加 ARP 绑定,要么添加端口转发规则到广播地址 (192.168.x.255 和 端口 9)。
广播地址计算方法:
<IP>
| (~<net mask>
)如:
192.168.0.11
| (~255.255.255.0
) =192.168.0.255
ZYNQ 移植 Linux
使用传统方式在 ZYNQ 上移植 Linux。
reference: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841738/Getting+Started
硬件平台: PYNQ-Z2
Vivado版本: 2018.2
RISC-V SOC Design (1)
使用 vivado blockdesign 搭建,比较直观
Config static IP address on Ubuntu 18.04
Netplan network configuration had been first introduced to Ubuntu 18.04 LTS Bionic Beaver. It is available to all new Ubuntu 18.04 installations.