openwrt
什么是Flash闪存?
闪存是一种非易失性内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。而各类 DDR 、 SDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存。
【1】NOR和NAND是市场上两种主要的非易失闪存技术
【2】NOR Flash 的特点是芯片内执行(XIP ),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。
XIP的含义:XIP即芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。flash内执行是指nor flash 不需要初始化,可以直接在flash内执行代码。但往往只执行部分代码,比如初始化RAM.
注:片内执行不是说程序在存储器内执行哦,CPU的基本功能就是取指、译码和执行。norflash能在芯片内执行,就是指CPU的取指模块能够直接从norflash中把指令取出来,供后面的译码和执行模块使用
名词解释
【1】openwrt——是一个基于linux的系统,可以运行在路由器上,可以安装软件,实现不同的功能,如认证校园网,ftp等
【2】固件——固件就是操作系统啦,和windows10/8/7.。。。。的一样,路由器等设备上称他们的系统为固件,固件的版本叫发行版,就像windows10/8/7就是不同的“发行版”吧,肯定就有稳定版,测试版/开发版。
【3】源——类似于手机的应用商店,我们可以在这里下载软件和固件,还可以获取源代码,然后自己编译软件,系统
【4】bootloader——bootloader就是个引导程序,像电脑的BIOS,现在路由器上使用的bootloader有第三方的breed ,uboot,还有就是路由器自带的。bootloader也可以帮助我们给路由器装系统,备份系统之类的
路由器开机前按住reset键,通电,一会就进入bootload的操作环境(breed,uboot提供网页端操作,网件自带boot loader提供tftp刷机通道)具体bootloader和路由器型号不同存在差异
TFTP——文件传输协议,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
注:恢复系统时推荐保留原有bootloader(若没有保留,没有bootload,只得编程器刷机)
如果bootload没有了,可使用,TTL刷机或者把flash拿下来用编程器刷机,不同的flash类型针脚不一样,编程器不通用
##远程管理
Xshell或类似软件
用于ssh,telnet登录openwrt或者ubuntu等Linux系统
WinSCP或类似软件
支持ssh就可以使用scp协议连接路由器,用户名密码为ssh的用户名和密码
用于使用scp或者ftp协议登录openwrt或者ubuntu等Linux系统进行文件修改
可以在很大程度上减少vi cd mv cp等Linux有关文件操作的命令,而且图形化界面操作方便
开发环境的搭建
openWrt英文官网:
https://openwrt.org/ 中文官网:
http://www.openwrt.org.cn/
openwrt开发网址:
dev.openwrt.org 如下所示:
图的红 {MOD}圈中的部分,是告诉我们如何去下OpenWRT的代码,点击进入之后,选择git的方式来下载。如下所示:(下载第一个)
官网给的教程可供参考:
https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigence#downloading_sources
##编译环境:
VMware虚拟机、ubuntu系统
安装相关工具和库:
(1) 安装 SVN 工具,用于下载 openwrt 源码:
sudo apt-get install subversion
(2) 安装 git 工具
sudo apt-get install git-core
(3) 安装依赖的库文件
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk
(4)通过git来下载OpenWrt bleeding edge(trunk版本):
git clone git://git.openwrt.org/openwrt.git
这将会创建’openwrt’这个目录。这个目录将会是OpenWrt的编译主目录。
OpenWrt的交叉编译工具链也已经被包含在内。
**注:**在Ubuntu系统中可能出现以下问题
fedal:remote error:access denied or repository not exported:/openwrt.git
解决方法:将命令变为git clone
http://git.openwrt.org/openwrt.git
(5)下载并安装所有可用的"feeds"(参见OpenWrt Feeds以获取更多选择):
cd openwrt
./scripts/feeds update -a(更新源码包)
./scripts/feeds install -a(下载更新包)
需要注意的是,这个时候并没有将OpenWRT的任何源码下载下来,而是需要通过make命令之后才会去下载OpenWRT项目中所需要的源码的,这一点请一定要注意哦,这也是为什么编译的速度会很慢的根本原因。在OpenWRT项目中有个README文件,有些注意事项需要看看,如下所示
图中已经说的很清楚啦,首先需要安装一些必须的工具和第三方库,比如:gcc, binutils, bzip2, flex, python, perl, make, find, grep, diff, unzip, gawk, getopt, subversion, libz-dev and libc headers.安装完这些工具和三方库之后,就采用make defconfig命令设置默认的配置文件,然后在这个配置文件的基础上去修改和配置自己项目所需的配置,后续的配置就都可以采用:make menuconfig来配置和修改,这个跟Linux配置菜单是一样的,当然里面的配置项目很多,需要花点时间去熟悉,目前我也在熟悉当中,不能讲太多的东西。