如何从OPENWRT固件上,用TFTP软手机固件升级软件新版本OP

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
I live in Wuhan,The Yangtze river @ its tributary meet in Wuhan and cut the city into three towns.grid OM70DO.In 1990s, I affiliated to a ham club BY6RC, soon afterward, I obtained my personal callsign BG6QAM.
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(5090)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'在中兴H118B 和中兴H618B无线路由器安装aprs4rz 之一: 刷openwrt系统',
blogAbstract:'中兴H118B 和中兴H618B(CPU都是BCM5354的)&===中兴ZXV10 H118B ===硬件配置===CPU:BCMMHZ 内存:32M&DDR闪存:16M(S29芯片可任意刷固件)USB接口:1个 可接USB HUB扩展多个(USB2.0)===中兴ZXV10 H118B ===硬件配置==END=',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:8,
publishTime:5,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'I live in Wuhan,The Yangtze river @ its tributary meet in Wuhan and cut the city into three towns.grid OM70DO.In 1990s, I affiliated to a ham club BY6RC, soon afterward, I obtained my personal callsign BG6QAM.',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在AR9331上使用Openwrt
我的图书馆
在AR9331上使用Openwrt
http://m.blog.csdn.net/blog/jiaozi07/该文章讲解一下在AR9331上使用Openwrt的编译修改方法,前面先介绍一下硬件平台特点,为后面的代码修改做铺垫,然后描述一下Openwrt的编译烧写流程,最后再重点讲述编译配置、代码修改细节。
1.&硬件平台
手头上ar9331模块64MB&DDR2,8MB&spi&flash,配合底板的硬件特点如下:
LED0_GPIO0
WLAN_LED(Active&High)
LED1_GPIO1
USB_LED(Active&High)
LED2_GPIO13
LAN1_LED(Active&High)
LED3_GPIO14
LAN2_LED(Active&High)
LED4_GPIO15
LAN3_LED(Active&High)
LED5_GPIO16
LAN4_LED(Active&High)
LED6_GPIO17
WAN_LED(Active&Low)
LED7_GPIO27
SYSTEM_LED(Active&Low)
LED8_GPIO26
ResetSwitch_GPIO12
GPIO18/I2S_CK
GPIO22/I2S_MICIN
2.&编译烧写流程
2.1.&依赖库
使用Ubuntu进行编译开发,需要安装的依赖库如下:
apt-get&install&build-essential&asciidoc&binutils&bzip2&gawk&gettext&\git&libncurses5-dev&libz-dev&patch&unzip&zlib1g-dev等等。
还需要安装svn,apt-get&install&subversion。
2.2.&下载源码
svn&co&svn://svn.openwrt.org/openwrt/trunk/
以下为编译步骤,在make&menuconfig中做的配置将在后面具体介绍,在make&V=s前需要做一些移植修改也将在后面具体介绍。
cp&feeds.conf.default&feeds.conf
./scripts/feeds&update&-a
./scripts/feeds&install&-a
make&menuconfig
最终在trunk/bin/ar71xx/目录下得到最终的烧写目标代码(在此以mr3220-v2路由为基础),openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin。
官方的Linux&SDK开发包的烧录代码与Openwrt的烧录代码的分区规划不同,如果原来开发板上烧录的是官方的linux&SDK代码,则需要先将刷新适用于Openwrt的Uboot,然后再烧写上一步中生成的openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin。
对开发板烧写程序可以通过多种方式实现:在Uboot中烧写Uboot与固件、编程器烧写、Web配置界面中程序升级。
2.4.1.&烧写Uboot
使用网线连接开发板与PC,然后连接上串口监控(-n-1,这里使用SecureCRT),开发板上电,在SecureCRT中看到Uboot打印信息,按任意键打断启动进入Uboot命令行,使用printenv命令查看启动参数,记录下serverip,例如为192.168.1.2,并将PC更改为该IP。PC端开启Tftp&Sever软件,在uboot命令行中输入命令如下:
#tftpboot&0x&u-boot-ar9331.bin
#erase&0x9fx200000
#cp.b&0xx9fx20000
重启开发板,看到uboot正常打印。
2.4.2.&烧写固件
同上面烧写uboot一样,进入uboot命令行模式,输入如下命令:
#tftpboot&0x&openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin
#erase&0x9fx7c0000
#cp.b&0xx9fc0000
2.4.3.&编程器拯救板砖
上面两种方式前提是目标板不是板砖,万一变砖或者开发板上未烧写过程序,则需要使用编程器来烧写目标代码,这就是对普通的SPI&flash烧录程序方法,只要知道芯片型号,有固件就行了。
2.4.4.&Web升级程序
对于能正常启动的AR9331开发板可以通过web升级程序,登录到web配置界面后选择System-&Backup/Flash&Firmware,然后选择要升级的固件。
注意这种方式只能升级统一型号的路由固件,如现在正在运行的是wr720的固件,你编译了一个wr740的固件,是无法通过web升级的,只能通过上面在Uboot中烧写固件的方式进行升级。
3.&menuconfig配置
这里将介绍上面编译步骤中的make&menuconfig中的具体配置。在这里配置时候使用MR3220-V2路由器为蓝本。
开始配置,首先选择CPU与路由型号:
&Target&System—–Atheros&AR71xx/AR7240/AR913x/AR934x
Target&Profile—-TP-LINK&MR3220
Kernel&Modules配置:
Kernel&modules&—&&Native&Language&Support&—&&&*&&kmod-nls-utf8
Luci配置如下:
LuCI—&Collections—–&&*&&luci
LuCI—&Applications&—&&&*&luci-app-qos
LuCI—&Themes&—&&&*&luci-theme-openwrt
LuCI—&Translations—-&&*&&luci-i18n-Chinese
LuCI—&Translations—-&&*&&luci-i18n-English
Network配置:
Network—&Routing&and&Redirection—-&&*&&ip
在这里我们只做了必须的配置,更加丰富的功能可以再额外配置添加,如常见的USB&storage、3G、Network&Share(Samba)等等。
4.&代码修改
在这里我们做的移植中有些可以通过直接修改开发板中的配置文件来实现,而不需要重新编译固件,但是我们要的是一个编出来就是默认配置的固件,所以以下移植都将是在编译前实现的。
4.1.&编译权限
个人不喜欢在非root权限下编译,为此做一下简单修改使得能够在root权限下进行编译,修改/trunk/include/prereq-build.mk将原来的require&non-root修改为root
define&Require/non-root
#[&"$$(shell&whoami)"&!=&"root"&]
[&"$$(shell&whoami)"&!=&"noroot"&]
4.2.&flash配置
手头上的AR9331核心板上使用的是8MB的dataflash,而标配的MR3220-V2路由是4MB,为此我们需要修改:
trunk/tools/firmware-utils/src/mktplinkfw中MR3220-V2配置为8MB
.id&=&"TL-MR3220v2",
.hw_id&=&HWID_TL_MR3220_V2,
.hw_rev&=&1,
.layout_id&=&"4Mlzma",&//改为&8Mlzma
trunk/target/linux/ar71xx/image/Makefile中对应MR3220-V2处flash大小为8MB:
MR3220-V2,MR3220-V2,MR3220-V2,ttyATH0,x,8Mlzma
4.3.&Wifi配置
Openwrt编译出来的固件,wifi默认是不开启的,需要做一些修改让其上电自动开启AP模式。修改trunk/package/kernel/mac80211/files/lib/wifi/mac80211.sh,其中的detect_mac80211函数中就对wifi-device和wifi-iface即无线物理设配与无线接口做了具体的配置。
在wifi-device配置中屏蔽掉“option&disable&1”这句就能使wifi上电自启动了,也可以对channel、hwmode、txpower做进一步的配置,如channel设置为auto,txpower设置为30dBm。
在wifi-iface配置中可以改变wifi的模式(mode)、名字(ssid)、加密方式(encryption)、密码(key)。
如下是一个最终配置示例,这其实也就是生成的/etc/config/wireless配置文件。
4.4.&设置默认登陆密码
Openwrt默认不设置密码,而我们需要一个默认的登陆密码,这可以通过修改package/base-files/files/etc/shadow来实现,修改root项如下:
root:$1$PjtjPtvn$F7wPtGnsC8lhpfJsB39.E/:99:7:::&&(对应密码123456)
root:$1$0CVWiweD$4Xsq83ZIZtPJe8PVLfqJH0:99:7::: (对应密码admin)
注意Openwrt的登陆用户名为root,且当设置了密码后将不能在使用Telnet来登陆目标板,需使用SSH。
4.5.&设置LAN默认IP
Openwrt固件LAN口默认ip为192.168.1.1,我们可以通过如下方法在编译中修改默认ip:
在trunk目录下新建files/etc/config/目录,然后将已经个性化定制好的network配置文件放在这个目录下,这样再编译出来的固件将执行这个network配置。在此我们只要修改lan口的ipaddr即可,如下所示:
config&interface&'lan'
&&&&&&&&option&ifname&'eth1'
&&&&&&&&option&force_link&'1'
&&&&&&&&option&type&'bridge'
&&&&&&&&option&proto&'static'
&&&&&&&&option&netmask&'255.255.255.0'
&&&&&&&&option&ip6assign&'60'
&&&&&&&&option&ipaddr&'192.168.12.10'
最根本的方式是通过修改文件package/base-files/files/lib/functions/uci-defaults.sh实现,修改函数ucidef_set_interface_lan中lan口ip即可。
4.6.&串口释放
AR9331只有一个调试串口,如果想要释放调试串口用作他用比如通信等,为此需要释放系统console打印,具体方法如下:
在target/linux/ar71xx/base-files/etc/inittab中注释掉::askconsole:/bin/ash&--login,也就是注释掉这个console登陆。
在package/base-files/files/etc/config/system文件中config&system下添加以下两句
option&'conloglevel'&'1'
option&'kconloglevel'&'1'
简单测试:开发板串口连接pc,打开SecureCRT,配-n-1,使用ssh登陆到开发板,命令行下输入”echo&test&serial&&&/dev/ttyATH0”,看到PC端接收正常。
4.7.&GPIO控制
如果想使用AR9331的一些GPIO引脚来做一些简单逻辑控制,则需要通过注册gpio设备来实现,修改target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr741nd-v4.c文件
在tl_mr3220_v2_setup函数中添加我们需要的GPIO管脚注册即可,如:
gpio_request_one(18,GPIOF_OUT_INIT_LOW&|&GPIOF_EXPORT_DIR_FIXED,&"Control&GPIO18");
这里的18即是GPIO18,GPIOF_OUT_INIT_LOW限定初始化输出低电平,后面的名字可以自定。
系统启动后可以看到GPIO注册成功:
#ls /sys/class/gpio/
#export gpio18/ gpio22/ gpiochip0/ uexport/
可以使用cat命令获取管脚当前输出值,使用echo命令设置管脚输出。如下:
#cat gpio18/value&
#echo 0 & gpio18/value
#cat gpio18/value&
这里说明一下,在写C代码程序控制时候可以直接调用system()函数运行linux命令,比如在你的代码中你想控制GPIO18引脚的输出,那么你可以如下使用。
system(“echo&0&&&/sys/class/gpio/gpio22/value”);
4.8.&按键与指示灯
target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr741nd-v4.c文件中对各按键及指示灯定义,具体如下:
l&GPIO12做复位按键,短按则实现路由复位,长按大于5s则复位路由并恢复默认设置l&GPIO11做WPS输入按键l&GPIO17&做WAN口指示灯,对应Port4,低有效l&GPIO13&LAN1指示灯,对应Port1,高有效l&GPIO14&LAN2指示灯,对应Port1,高有效l&GPIO15&LAN3指示灯,对应Port1,高有效l&GPIO16&LAN4指示灯,对应Port1,高有效l&GPIO0&&WIFI指示灯,高有效l&GPIO27&SYSTEM指示灯,低有效
此外将Port4与Port0的对换撤销掉,即恢复为使用Port4做wan口,将tl_ap121_setup函数中的
ath79_setup_ar933x_phy4_switch(true,true);
ath79_setup_ar933x_phy4_switch(false, false);
修改target/linux/ar71xx/base-files/etc/uci-defaults/01_leds中mr3220-v2灯定义如下:
tl-mr3220-v2)
ucidef_set_led_netdev&"wan"&"WAN"&"tp-link:green:wan"&"eth1"
ucidef_set_led_switch&"lan1"&"LAN1"&"tp-link:green:lan1"&"switch0"&"0x02"
ucidef_set_led_switch&"lan2"&"LAN2"&"tp-link:green:lan2"&"switch0"&"0x04"
ucidef_set_led_switch&"lan3"&"LAN3"&"tp-link:green:lan3"&"switch0"&"0x08"
ucidef_set_led_switch&"lan4"&"LAN4"&"tp-link:green:lan4"&"switch0"&"0x10"
ucidef_set_led_wlan&"wlan"&"WLAN"&"tp-link:green:wlan"&"phy0tpt"
#ucidef_set_led_usbdev&"usb"&"USB"&"tp-link:green:3g"&"1-1"
4.9.&时间同步
修改package/base-files/files/etc/config/system文件如下,这样默认同步时间正确。
config&system
&&&&&&&&option&hostname&'You&can&Define'
&&&&&&&&option&zonename&'Asia/Shanghai'
&&&&&&&&option&timezone&'CST-8'
注:这里hostname可以改成你想要的主机名字,将来在web页面中显示的也将是这个主机名。
4.10.&语言及主题设置
编译中的默认设置为auto,即自动识别,这将根据浏览器设置而定,例如我们使用ie、360浏览器,登陆后得到的是英文界面,而使用火狐则是中文界面。如果向默认设置问中文,则修改build_dir/feeds/luci/modules/base/root/etc/config/luci配置文件,将默认auto修改问zh_cn,并将主题锁定为bootstrap
config&core&'main'
&&&&&&&&option&lang&'zh_cn'
&&&&&&&&option&mediaurlbase&'/luci-static/bootstrap'
&&&&&&&&option&resourcebase&'/luci-static/resources'
4.11.&自定义脚本的使用
Openwrt为用户预留的自定义启动脚本/package/base-files/files/etc/rc.local来实现一些扩展功能,我们可以在这里添加一些命令,或者调用一个外部脚本来实现一些扩展功能。&&
TA的最新馆藏[转]&
喜欢该文的人也喜欢网件4300刷op后想刷回管官方固件,但是tftp模式下ping不通!【openwrt吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:14,704贴子:
网件4300刷op后想刷回管官方固件,但是tftp模式下ping不通!
刷了明月的中秋版,但是无奈自己小白,做共享太麻烦,因此想刷回原厂固件。但是重启按reset键知道power灯绿色闪烁,但是ping不通,因此无法使用模式恢复官方固件。另外试过telnet也不行,求各位大神指点一二,在此谢过各位了!!
明月的ip是192.168.10.1,试试
还有一点。如果再ping不到,你在重置reset键,需要注意一下按法。。先按re键后插电源,再开关。。3.4秒后松开,灯全亮,再立刻按re键,直至出现绿灯。。ip会变回192.168.1.1
我的 也是这个问题
刷不回来——来自 爱贴吧 Windows Phone 8.1 客户端
贴吧热议榜
使用签名档&&
保存至快速回贴(ERROR:15) & 访客不能直接访问}

我要回帖

更多关于 手机固件升级软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信