今天考完了《光电子技术》。说起来真实让人百感交集啊!最大的感受就是悔!不为别的,就为没有准备小抄。放眼望去,抄风四起。更有甚者,交卷后直接说自己放在桌子上,让监考老师看到两次,照抄!剩下一门《DSP技术》了,所以不着急了。

话说昨天晚上和Shawn在邮件上聊Freerunner聊那么多。今天所幸没事,就拿出来玩了玩。上次兴许是太心急了,所以除了最后烧了一个不疼不痒的、耗电大、反应慢、死机频率高的系统外,没别的收获。今天这次有进步,成功SSH登录上手机了。看上去不怎么的,可是这一小步却“揭开了新的历史篇章”!

我Freerunner用的是SHR的系统,没有作任何修改。PC是ArchLinux,从内核到包管理器几乎都被我修改了。

首先总结一下如果要成功登录上SSH,需要做哪些步骤。

  • 启动Freerunner,连上USB线。

  • 设置Freerunner,使之不要待机;

  • 设置Freerunner的USB联结模式为设备(Device)模式;

  • 设置好Freerunner的root用户密码;

  • PC上加载内核模块cdc_ether、usbnet;

  • PC上配置Freerunner通过USB联结,产生的网络设备。

  • PC上设置好Freerunner所处的网段和路由;

  • 登录吧!

下面我就一步步的把这些步骤呈现出来吧!

<li>启动、连线。这个如果不会的话,就去找你幼儿园的老师吧!

需要注意的是,除非你坚信Nand Flash上的bootloader没问题;否则就从Nor Flash上启动吧!方法就是按住AUX键,然后按住电源键,然后松开AUX键,等到出现uboot画面的时候再松开电源键(大约几秒)。如果一直没有出现画面,可以尝试拔掉电池,然后按住AUX键装电池,然后按下电源键……

<li>关闭待机。

这个设置在不同的om操作系统上可能不一样。我使用的是SHR,可以通过“HOME”|“Settings”|“Power”菜单,进入到电源属性设置。在“Power setting”区域有两个设置项目“Auto-dimming”、“Auto-supspend”,分别是自动屏保和自动待机。滑动滑块,使之为“Off”即可。

<li>USB模式设置

这个在各个操作系统之间也不一样。SHR可以通过“HOME”|“Settings”|“Connectivity”菜单,进入到联结属性设置。在这个设置功能下面有个“USB settings”区,可以设置“USB mode”选项。默认是“Auto”,将滑块滑到左边,使之成为“Manual”。然后在下面会出现一个滑块,将之滑到左边,使之成为“Device”即可。

<li>设置root用户密码:

目的我就不多说了。在Freerunner上打开一个终端(SHR中是“HOME”|“Terminal”,其他OS类同)。由于Freerunner模式是以root用户登录的,所以只需输入命令passwd,然后输入两次密码即可。有过Linux经验的人不须多说。

到这里,Freerunner上的设置就完成了。其实很简单,只是需要根据操作系统不一样,慢慢的去找设置项而已。下面我们开始设置PC端:

<li>加载内核模块usbnet、cdc_ether

其实usbnet模块是cdc_ether依赖的,所以加载后者会自动加载前者。所以你只需要以root用户权限输入modprobe cdc_ether即可。大多数发行版的内核默认已经编译安装(甚至加载)这俩模块。所以这里没难度。

如果你的发行版没有这么做,或者你像我一样,是自己编译的内核。可能就需要进入内核源文件目录,编译安装他们了。其实也不难,make menuconfig后:找到Device Driver->USB support->USB Network Adapters或者Device Drivers->Network Device Support->USB Network Adapters,并启用这两个模块即可(可能会衍生出很多选项,不用管,只需要默认即可)。如果你觉得麻烦,可以直接添加“CONFIG_USB_USBNET=m”和“CONFIG_USB_NET_CDCETHER=m”两行到内核的.config文件末尾即可。当然,如果你需要编译到内核而不是模块,把m换成y即可。

  • 内核模块启用了,连上了Freerunner,内核就应该有响应了,打开终端执行“dmesg | grep cdc_ether”,看看。是不是有一行类似“eth1:register 'cdc_ether' at usb……”的。这说明PC上已经联结好了。并且手机对应的设备为eth1.

ip address add 192.168.0.200/24 dev eth1 #添加Freerunner所在的子网,PC在这个子网内的IP地址为192.168.0.200

ip link set dev eth1 up #启用Freerunner所在的子网

route add -host 192.168.0.202 dev eth1 #添加PC和Freerunner之间的路由

  • 这个时候该干吗?当然是ssh上去了!