OpenWRT如何實(shí)現(xiàn)不拆機(jī)刷不死的U-Boot

這篇文章將為大家詳細(xì)講解有關(guān)OpenWRT如何實(shí)現(xiàn)不拆機(jī)刷不死的U-Boot,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)于2013年開(kāi)始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元宜黃做網(wǎng)站,已為上家服務(wù),為宜黃各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

    第一個(gè)思路是刷上 DD-WRT 固件,但是找了一下 DD-WRT 木有支持 DIR-505,只好繼續(xù)蛋疼地編譯 OpenWRT。

    第一遍在虛擬機(jī)從 12:20 編譯到 23:56,花了將近 12 小時(shí)……剛開(kāi)始時(shí),有一個(gè)下載過(guò)程,不斷失敗,想想是因?yàn)楣镜木W(wǎng)絡(luò)太爛了,于是把下載腳本改了一下:

<openwrt-svn-dir>/trunk/scripts/download.pl 中的 wget -t5 --timeout=20 --no-check-certificate 改為 wget -t5 --timeout=120 --no-check-certificate

    第二天來(lái),刷上,沒(méi)問(wèn)題,于是開(kāi)始改代碼去掉 U-Boot 寫保護(hù),參考這篇《Openwrt 中刷寫 uboot ART》http://see.sl088.com/wiki/Openwrt_%E4%B8%AD%E5%88%B7%E5%86%99_uboot_art,但結(jié)果很不幸,型號(hào)不同嘛!

    接下來(lái),憑自己的編程水平了,嘗試改 <openwrt-svn-dir>/trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-dir-505-a1.c,加入下面兩個(gè)結(jié)構(gòu)體:

static struct mtd_partition dir505_partitions[] = {

 {

  .name  = "u-boot",

  .offset  = 0,

  .size  = 0x010000,

  .mask_flags = 0,

 }, {

  .name  = "art",

  .offset  = 0x010000,

  .size  = 0x010000,

 }, {

  .name  = "mac",

  .offset  = 0x020000,

  .size  = 0x010000,

 }, {

  .name  = "nvram",

  .offset  = 0x030000,

  .size  = 0x010000,

 }, {

  .name  = "language",

  .offset  = 0x040000,

  .size  = 0x040000,

 }, {

  .name  = "firmware",

  .offset  = 0x080000,

  .size  = 0x780000,

  .mask_flags = 0,

 }

};

static struct flash_platform_data dir505_flash_data = {

 .parts  = dir505_partitions,

 .nr_parts       = ARRAY_SIZE(dir505_partitions),

};

    并將 dir_505_a1_setup 函數(shù)里的 ath79_register_m25p80(NULL); 改為 ath79_register_m25p80(&dir505_flash_data);

    測(cè)試還是無(wú)效……看來(lái)必須在源頭上使 MTD_WRITEABLE 無(wú)效掉,grep -r MTD_WRITEABLE <openwrt-svn-dir>/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/mtd,看到幾處關(guān)鍵的地方:

if (!(ubi->mtd->flags & MTD_WRITEABLE)) {

if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))

    主要在 mtd_erase、mtd_write 等函數(shù),很明顯,C 語(yǔ)言不管在什么平臺(tái)都是很好懂,看幾眼就搞定了,原理是使 MTD_WRITEABLE 這個(gè)標(biāo)志無(wú)用掉,您可以設(shè)置,但是我把判斷這個(gè)標(biāo)志的代碼全干掉了,設(shè)了也是白設(shè)!

    最后編譯好的 openwrt-ar71xx-generic-dir-505-a1-squashfs-sysupgrade.bin,用 sysupgrade 刷一下,reboot 后再用 mtd 刷不死 U-Boot,一切順利,成功刷上不死 U-Boot!

關(guān)于“OpenWRT如何實(shí)現(xiàn)不拆機(jī)刷不死的U-Boot”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)頁(yè)名稱:OpenWRT如何實(shí)現(xiàn)不拆機(jī)刷不死的U-Boot
鏈接地址:http://muchs.cn/article40/ipgoho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)網(wǎng)站排名、品牌網(wǎng)站制作、網(wǎng)站收錄網(wǎng)站內(nèi)鏈、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司