经过前边三个章节,想必大部分人对路由器可以有一个初步了解,甚至有的童鞋已经拿到了自己心仪的板子用来做开发测试。
从本章开始,我们将进入动手阶段,这个阶段需要有板子来操作。无板子操作干看也行,但是这就是像一桌子吃饭,别人吃的满嘴流油,你流口水,这像话么。
进入设备的开发模式
为什么说一定要进入这个呢,其实如果你不开发嵌入式设备,也可以不进串口,但是hoowa觉得,在软件调试的时候,还是需要进到这里来,这里的信息比telnet看到的多很多。
一般路由器设备上面都会留有4个针脚,有的焊了排针,有的没焊。这四个针脚就是他的调试串口。 算了说的太复杂了,就这么讲吧,我们的电脑有显示器,有鼠标有键盘,这叫输入输出接口,用于人机对话的。路由器也有,路由器上就是串口,只要把串口连接到你的电脑上,你就可以看到系统里的东西。
教学套件的硬件中已经包含了一个USB to
TTL的串口板,他是专门用来实现连接路由器串口的。如果你不是教学资料自己的板子,请去淘宝上搜索”USB to
TTL”查找自己心仪的转换器,不过需要大家注意的是,有的路由器跟转换芯片之间存在不兼容现象,如果遇到此种现象,请更换路由器或更换转换芯片。
连接设备第一步:
将串口板的小板子驱动先在系统中安装完成,如果是Linux有的已经具备了这个驱动,并且自动识别成为了dev下的一个com口设备。
连接设备第二步:
将串口板连接到计算机上,等待Windows识别这个板子,然后查看您计算机的“设备管理器”,是否多了这么一个东西:
(图:串口板的系统设备)
请记住(COMX)这个设备,其中X表示这个板子在你系统中当前的串口编号。
连接设备第三步:
将M150开发板连接到串口板上:
(图:主板串口定义)
主板跟串口板连接器的连接如下表:
主板 串口小板
RX<————->TX
TX<————->RX
GND<————>GND
上面的表大家明白吧,就是很基本的电子连接,一个收(RX),一个发(TX),再有一条地线(GND),就可以传输了。需要大家注意的是,VCC或V3.3就不要连接了,那个是供电的,如果连接了可能会烧毁串口板哦。
连接设备第四步:
去www.putty.org下载一个putty这个小工具。然后打开连接类型选择Serial。Serial line里填写COMX(就是你刚才的那个串口的号)。Speed填写115200。然后点击打开。
请注意,由于各种设备的配置不同和Uboot不同,如果你使用的不是M150,连接速率请像你的供货商询问。
(图:putty配置)
putty的使用方式,本文不再讲解。如果没用过putty的,请自己上网学习。
连接设备第五步:
打开路由器的电源。这个时候屏幕中应该可以看到很多信息了。效果差不多如下:
U-Boot 1.1.4 (Apr 11 2013 – 01:45:00) DRAM: 64 MBled turning on for 1s…id read 0x100000ffflash size 8388608, sector count = 128Flash: 8 MBUsing default environment
然后大量的数据涌出,这表明系统已经在启动了,当系统启动差不多的时候,按下回车是否有反应,如果有反应表示你的串口连接已经OK了。hoowa希望在大家没有完全掌握产品之前,多用串口操作系统,这样即使设备崩溃了,崩溃信息也可以通过串口传输到你的个人电脑上。
连接设备第六步:
串口板看起来简单,但是由于各类路由开发板产品质量不完全一样,因此可能存在的几个问题跟大家说明下。
putty打不开COM设备:驱动有问题,或参数填写有问题,或你那个板子有问题。
开发板上电以后屏幕啥都不显示:那三条线连接的有问题。
串口板过热或冒烟:恭喜你板子烧了,让你得瑟插到VCC过电了吧。
屏幕显示了,但是现实的是乱码:可能是Speed速率没设置正确,也可能是线接触不良。重新连接所有设备,包括重插串口板。
所有信息都能正常显示,但是按回车没反应并且也无法输入信息:可能还是线连接有错误注意看顺序,重新连接所有设备,包括重插串口板。
如果以上方法你连接还不行,要么是你的什么东西坏了,要么是你真的人品太烂了,请砸掉电脑。
认识bootloader
经过上面的流程,可能有的朋友已经发现了,这个时候你已经进入系统了。可以输入一些标准的linux指令。那么不要那么急,我们再回过头讲下Bootloader(引导系统)。
在嵌入式设备中Bootloader的工作要更多,他要做一些基本的外部电子设备的检测,同时完成CPU所要求的初始化,再启动Flash上的Linux内核。
Uboot是德国DENX小组开发、用于嵌入式CPU的Bootloader,它支持10多种不同的操作系统(包括x86架构)。其小巧速度快,已经成为了Atheros(高通)和Ralink(联发科)产品的标配引导系统,并且在所有嵌入式的引导系统中市场占有率最大。所以我们的开发板也是Uboot系统。
硬件启动揭秘
很多书籍都详细讲解了Uboot如何引导的,其实我觉得讲了也没多大用,那玩意都是CPU厂家提供SDK里完善的东西,有几个人需要改那个啊。所以这里我改变下说法。我说说系统到底咋启动的。
上电—>晶振发起频率抖动—>CPU启动内部代码—>Uboot启动—>Uboot根据参数设置倍频—>Uboot进行一些其他的内部寄存器配置—>Uboot启动操作系统
首先设备上电,上电后晶振开始发起一个指定频率的震动,这个时候CPU就根据晶振的频率进行了启动,CPU工作在晶振频率下启动自己的内部代码(CPU内部有一小段代码和一点点内存,用来做最基础的事情,并且查找bootloader在哪),然后启动uboot,最后进入操作系统。
好吧,我承认,这个太复杂了,我换个说法,汽车打火的时候需要启动机,启动以后,只要给发动机油,发动机就可以工作在高转速下,带着人出去跑了。CPU也是这个原理。
第一次刷机
本来hoowa想从怎么编译固件开始,但是又觉得太深了,我们要深入浅出,所以,我们先从刷固件开始。这样,让大家先熟悉系统,以后再介绍那些更为精彩的世界。
刷机第一步:
首先,请下载网上OpenWRT官方已经制作好的基本固件。如M150开发板的可用标准固件同WR743nd-v2(第二版)的硬件是接近的,因此可以刷为这个路由器所设计的OpenWRT固件。
下载地址:http://downloads.openwrt.org/snapshots/trunk/ar71xx/
文件名为:openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin
非教程开发板请向经销商咨询可刷哪个官方OpenWRT固件,如果你的经销商说没有,那就扔了那个板子换一个有的。
刷机第二步:
(ps:如果你不是本教程的M150开发板,请参考本教程的流程并向经销商询问Uboot的刷机使用方法,以下步骤均仅针对教程板型)
下载好以后,将你的电脑用网线连接到开发板三个网口里中间那个。请注意两点:1.你的串口板子要连接电脑的putty,这样才能知道刷机的过程中到底有什么信息输出;2.最好是直接连接网线并断开无线网络,防止部分交换机刷机过程中闪断失败或IP地址冲突造成电脑路由表不对。
按住Reset按钮,同时给路由器上电,通过Putty看到如下信息后松开Reset按键:
eth1: 00:03:7f:ff:ff:feathrs26_reg_init_lanATHRS26: resetting s26ATHRS26: s26 reset doneeth1 upeth0, eth1Enter Backup Mode…eth1 link downeth0 link downeth1 link downuip init…http init…eth1 link downeth1 link down……eth1 link downeth1 link downdup 1 speed 1000
刷机第三步:
将电脑网卡设置为固定IP地址192.168.1.X的地址,通过浏览器(建议使用通用浏览器如IE、Chrome等,不推荐使用加壳浏览器)访问192.168.1.1,你将看到刷机的界面。
用那个选择文件的按钮选中固件openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-sysupgrade.bin这个文件,然后提交。
提交后屏幕将显示:
upgrade firmware now! Uploaded RunTime Image is 2949124 BytesWe will update the ==firmware== NOW! First 0×2 last 0x7e sector size 0×10000 86
其中那个86表示当前处理的位置计数。当写入完成后屏幕将显示:
Erased 125 sectorswrite addr: 9f020000Finish Upgra U-Boot 1.1.4 (Apr 11 2013 – 01:45:00)….procd: – init complete -
中间有大量系统启动信息,暂时不用理会。按下回车后显示:
表示你刷机完成。
如果你在以上刷机流程遇到了问题,请清空浏览器,或更换浏览器,最不济更换个电脑吧,然后重复操作以上步骤。
在本章刷机已经完成,细心的朋友会发现这个时候系统已经可用了,没错,现在你已经有了一个自己的纯净版的OpenWRT系统,具备了最最最底层OpenWRT的支持,这个时候你可以随便的去玩。玩坏了不要紧,还可以重新刷对不对。
随便折腾吧。在下章,我们将一起讨论下系统方面的知识,以及基本的系统指令和配置方法。