本帖最后由 甲基红橙黄绿蓝 于 2017-4-17 19:45 编辑
概述
装过机的同学可能都知道主板上各种插槽,Mini PCIe插槽是其中一种经常用来挂设无线网卡的插槽。实际上PCIe总线是通用的,声卡、网卡、SD转接卡、USB转接卡、串口卡、数据采集卡,只要保证是Mini PCIe接口的,都可以往Mini PCIe插槽里插。当然,要保证正常工作,还需要相应的驱动程序。
要注意的一种叫做MSATA的插口,它常常用于挂设固态硬盘。它与Mini PCEe插口完全一致、但是信号不一样,互相不兼容,购买的时候别买错了。
Intel Galileo的背面带有一个Mini PCIe插槽。我尝试了从网上购买了一些Mini PCI外设:SD转接卡、无线网卡、RS232串口卡,现在串口卡还没到货,SD卡和无线网卡均测试通过。
图:Intel Galileo背面的Mini PCIe插槽
图:典型的Mini PCIe公头(俗称金手指)
准备工作
首先需要你已经成功用SD卡引导Linux系统,比如Yocto系统。然后你要会用你的PC机作为终端与Galileo建立远程连接,无论是串口连接还是通过有线网进行ssh连接。这也是玩Galileo最基本的手段。如果你还在用Arduino IDE为Galileo编程,甚至什么也不会,可以访问Intel创客中心获取教程:Intel Galileo上手。详细讲解了如何搭建Arduino IDE的Galileo开发环境和如何让Galileo从SD卡引导。
当你已经建立终端连接时,可以输入命令 lspci,可以看到Galileo里的PCIe总线的相应的硬件驱动至少有USB、SD卡、有线网卡、无线网卡。
图:在终端输入lspci显示的信息
我在以下示例中使用的是第一代Galileo,系统是Yocto 3.8.7。其他系统如果不可以请自行解决。
PCIe挂设更多的SD卡
我购买的SD转接板淘宝链接:Mini PCIe 双SD转接卡
另外你还需要一个已经格式化为FAT16或FAT32文件系统的SD卡,你可以先放一些文件进去便于识别。SD卡有没有大小要求我不知道,但是我测试的一个128M FAT16的和一个8G FAT32的SD卡均成功了。
图:Intel Galileo挂设SD卡转接板
操作如下:先给Galileo上电并建立终端连接,然后把SD卡转接板插入PCIe插槽(如果在上电前就插入SD卡,Galileo会试图从这个SD卡启动,有点坑爹,除非你改一下引导优先级)。看到转接板上的Power和Access灯都亮了,八成就是成功了。然后在终端输入命令:
[mw_shl_code=bash,true]fdisk -l[/mw_shl_code]
显示所有的外存设备如下:
显然,第一个disk是存放你的系统的,观察第二个disk,它的唯一一个分区在/dev/sda1、文件系统和你插入的SD卡是符合的,就是它了!要访问该卡的文件,需要进行挂载(mount),首先新建一个目录/mnt/sd作为挂载目录:
[mw_shl_code=bash,true]mkdir /mnt/sd[/mw_shl_code]
然后进行挂载:
[mw_shl_code=bash,true]mount -t vfat /dev/sda1 /mnt/sd[/mw_shl_code]
其中vfat代表该SD卡的文件系统是FAT16或FAT32,/dev/sda1是你要挂载的设备的位置,/mnt/sd是被挂载的目录。没有输出就代表成功,cd过去看看:
[mw_shl_code=bash,true]cd /mnt/sd
ls[/mw_shl_code]
如果能看到你预先放进去的文件,说明大功告成。
PCIe挂设无线网卡
Galileo只自带Intel N6205和N135无线网卡的驱动,其他网卡还要自己装驱动,比较麻烦。以下是可用的Intel N6205网卡的淘宝链接,买的时候别忘了买配套天线:Intel N6205 无线网卡
图:Galileo挂设Intel N6205网卡
首先把网卡天线装好,插入PCIe插槽,给Galileo上电,连接到终端,输入命令查看网络接口:
[mw_shl_code=bash,true]ifconfig[/mw_shl_code]
可以看到除了eth0和lo(本地回环地址),还多出了一项叫做wlp1s0,这个就是无线网卡了。要进行wifi连接,运行命令打开connmanctl来管理网络:
[mw_shl_code=bash,true]connmanctl[/mw_shl_code]
进入connmanctl命令界面后,先输入:
[mw_shl_code=bash,true]enable wifi[/mw_shl_code]
成功打开WiFi后会有提示。然后扫描wifi:
[mw_shl_code=bash,true]scan wifi[/mw_shl_code]
最后显示所有网络服务(包括wifi和有线网):
[mw_shl_code=bash,true]services[/mw_shl_code]
可以看到扫描到的WiFi如下:
其中包括无线网也包括有线网(如果你插了网线的话)。你需要复制你想连接的WiFi的那一大段名称,然后输入quit退出connmanctl,编辑配置文件/var/lib/connman/wifi.config:
[mw_shl_code=bash,true]nano /var/lib/connman/wifi.config[/mw_shl_code]
加入如下内容(其中中括号里那么一大段就是你在上一步复制的WiFi名称):
[mw_shl_code=bash,true][service_wifi_60672098d2b4_5869616f6d695f4841534545_managed_psk]
Type = wifi
Security = wpa2
Name = 你的WiFi名称
Passphrase = 你的WiFi密码[/mw_shl_code]
完成后重新打开connmanctl,输入命令:
[mw_shl_code=bash,true]connect wifi_60672098d2b4_5869616f6d695f4841534545_managed_psk[/mw_shl_code]
成功连接后,输入命令technologies,可以看到wifi的connection字段是True。大功告成!然后你就可以拔掉网线用wifi重新建立ssh连接了。
以后每次Galileo上电的时候会试图连接这个Wifi,若连接失败则试图连接无线网。如果它不自动连接无线网了,可以用connmanctl里的connect命令重新连接无线网。
PCIe挂设RS232串口卡
货还没到,占坑待写。
|