十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)OpenWRT如何實現(xiàn)不拆機刷不死的U-Boot,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元宜黃做網(wǎng)站,已為上家服務(wù),為宜黃各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
第一個思路是刷上 DD-WRT 固件,但是找了一下 DD-WRT 木有支持 DIR-505,只好繼續(xù)蛋疼地編譯 OpenWRT。
第一遍在虛擬機從 12:20 編譯到 23:56,花了將近 12 小時……剛開始時,有一個下載過程,不斷失敗,想想是因為公司的網(wǎng)絡(luò)太爛了,于是把下載腳本改了一下:
第二天來,刷上,沒問題,于是開始改代碼去掉 U-Boot 寫保護(hù),參考這篇《Openwrt 中刷寫 uboot ART》http://see.sl088.com/wiki/Openwrt_%E4%B8%AD%E5%88%B7%E5%86%99_uboot_art,但結(jié)果很不幸,型號不同嘛!
接下來,憑自己的編程水平了,嘗試改
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);
測試還是無效……看來必須在源頭上使 MTD_WRITEABLE 無效掉,grep -r MTD_WRITEABLE
if (!(ubi->mtd->flags & MTD_WRITEABLE)) {
和
if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))
主要在 mtd_erase、mtd_write 等函數(shù),很明顯,C 語言不管在什么平臺都是很好懂,看幾眼就搞定了,原理是使 MTD_WRITEABLE 這個標(biāo)志無用掉,您可以設(shè)置,但是我把判斷這個標(biāo)志的代碼全干掉了,設(shè)了也是白設(shè)!
最后編譯好的 openwrt-ar71xx-generic-dir-505-a1-squashfs-sysupgrade.bin,用 sysupgrade 刷一下,reboot 后再用 mtd 刷不死 U-Boot,一切順利,成功刷上不死 U-Boot!
關(guān)于“OpenWRT如何實現(xiàn)不拆機刷不死的U-Boot”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。