當前位置:首頁 » 編程軟體 » 路由器uboot編譯

路由器uboot編譯

發布時間: 2023-01-25 07:11:59

⑴ 你好,請教一個問題:openwrt 能夠編譯自己寫的C/C++程序嗎

openwrt就好比redhot,ubuntu,fedora等都是linux。所以肯定支持gcc。
如果你要編譯編譯你自己定義的C/C++程序到你的無線路由器上,如果你的路由器具有燒寫的條件,當然是可以往裡面燒寫的。

首先聲明:這是一個很復雜的過程,如果只是偶爾的玩玩,我建議你不要看下邊的了。
1. 首先裝一個linux虛擬機(redhot,ubuntu,fedora都可以);
2. 然後下載openwrt的bsp源碼,根據你的路由器選擇合適和架構和板子型號,然後編譯生成開發環境;
3. 再然後上openwrt官網上學習如何在bsp中創建一個自己的程序包,從爾編譯你自己的c/c++程序。
4. 然後編譯生成linux鏡像和文件系統,然後再到你的路由器上使用uboot在對應的位置上燒寫你生成的文件系統。
5. 然後重啟就能運行你寫的c/c++程序了。
(當然也可以在編譯好了之後通過NFS服務進行運行你的程序。)

最後溫馨提示:刷機須謹慎,小心變磚頭。

⑵ 為什麼在ubuntu編譯下uboot時總是出錯

1.U-boot的使用:
ubuntu下基本只能用
kermit協議,進行串口通信了:
loadb
Ctrl+\,再按c,切換到C-kermit的命令行模式:
send
<文件路徑>,回車。
傳送完畢後,輸入c,回到U-boot串口界面。

若能和PC機ping成功,則可用tftp和nfs傳輸文件:
dhcp:使用
DHCP/TFTP 協議獲取文件
rarpboot :使用 RARP/TFTP 協議獲取文件
nfs:使用 NFS
協議獲取文件
tftpboot :使用 TFTP 協議獲取文件
bootp:使用 BOOTP/TFTP
協議獲取文件
以上命令的格式都為:指令 [目的 SDRAM 地址] [[主機 IP:]文件名]
注意:
要使用 dhcp、rarpboot 或 bootp 要路由器或 Host
支持的這些協議和服務。
如果沒有輸入[目的SDRAM 地址],系統就是用編譯時定義的CONFIG_SYS_LOAD_ADDR
在使用如果
tftpboot 和 nfs 命令沒有定義[主機 IP:],則使用 ENV 中的 serverip
其它命令必需定義[主機 IP:],否則使用提供動態 IP 服務的主機
IP。

Nand Flash
操作指令:
nand info
nand device [dev]
nand read addr off size
nand
write addr off size
nand write[.yaffs[1]] addr off size
nand erase [clean]
[off size]
nand bad
nand mp[.oob] off
nand scrub
nand markbad
off
nboot loadAddr dev offset

內存/寄存器操作指令:
nm [.b, .w, .l]
address
mm [.b, .w, .l] address
md [.b, .w, .l] address [# of
objects]
mw [.b, .w, .l] address value [count]
cp [.b, .w, .l] source
target count

Nor Flash 指令:
flinfo
(N)
md
protect
cp

USB 操作指令:
usb reset
usb
stop [f]
usb tree
usb info [dev]
usb storage
usb dev [dev]
usb
part [dev]
usb read addr blk# cnt
SD 卡(MMC)指令:
mmc init
mmc
device
FAT 文件系統指令:
fatinfo <interface>
<dev[:part]>
fatload <interface> <dev[:part]> <addr>
<filename> [bytes]
fatls <interface> <dev[:part]>
[directory]

系統引導指令:
boot 和 bootd 都是運行
ENV」bootcmd」中指定的指令
bootm [addr [arg ...]]

run 運行一個 ENV
定義的命令腳本
reset 重啟 CPU

使用 U-boot
將映像文件燒寫到板上的 Flash,一般步驟是:
(1)通過網路、串口、U盤、SD卡等方式將文件傳輸到SDRAM;
(2)使用 Nand
Flash 或 Nor Flash 相關的讀寫命令將 SDRAM 中的數據燒入 Flash。

內核的引導步驟如下:
(1)用
U-boot 的 mkimage 工具處理內核映像 zImage。
(2)通過網路、串口、U 盤、SD 卡等方式將處理過的內核映像傳輸到 SDRAM
的一定
位置(一般使用 0x30008000)
(3)然後使用」bootm"等內核引導命令來啟動內核。

2.U-boot在mini2440上的移植
在U-boot根目錄下:
vim Makefile
將 CROSS_COMPILE = arm-tekkaman-linux-gnueabi-
修改為CROSS_COMPILE = arm-linux-
make mini2440_config
make
注意:修改交叉編譯器一定要在make之前完成!
終於完成了U-boot
的移植。以前一直掐住瓶頸的問題,居然出在這里!
至此,總算完成了U-boot+內核+rootfs根文件系統等的移植,一個嵌入式系統搭建起來了。然而在這里,基本上只是拿了人家現成的代碼稍加修改而已,不值得沾沾自喜。接下來該在應用程序上進行開發了。

⑶ 如何從uboot中推算路由器flash燒寫地址

首先從uboot中得到flash分區的基地址
一、找到uboot編譯生成的bootstrap.map或者u-boot.map文件,找到下面這句,
.text 0x000000009f000000 0x3520
其中 0x9f000000 就是flash分區的基地址;
二、查看uboot的源代碼,例如qca9531晶元,其flash分區的基地址就定義在下面這個頭文件中;
u-boot\include\configs\board953x.h
/* NOR Flash start address */
#define CFG_FLASH_BASE 0x9f000000

查看路由器flash分區信息
~ # cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00630000 00010000 "rootfs"
mtd3: 00160000 00010000 "uImage"
mtd4: 00010000 00010000 "mib0"
mtd5: 00010000 00010000 "ART"

~ # cat /proc/partitions
major minor #blocks name
31 0 256 mtdblock0
31 1 64 mtdblock1
31 2 6336 mtdblock2
31 3 1408 mtdblock3
31 4 64 mtdblock4
31 5 64 mtdblock5

開始計算各自模塊的flash地址及燒寫命令
燒寫uboot:
tftp 0x80060000 u-boot.bin
erase 0x9f000000 +0x40000
cp.b 0x80060000 0x9f000000 0x40000

燒寫jffs2
tftp 0x80060000 ap143-jffs2
erase 0x9f050000 +0x630000
cp.b 0x80060000 0x9f050000 0x630000

燒寫vmlinux
tftp 0x80060000 vmlinux.lzma.uImage
erase 0x9f680000 +0x160000
cp.b 0x80060000 0x9f680000 0x160000

燒寫art:
tftp 0x80060000 art.bin
erase 0x9f7f0000 +0x10000
cp.b 0x80060000 0x9f7f0000 0x10000

⑷ openwrt sdk下編譯uboot(添加usb埠功能)

在ehci-ra.c的ehci_hcd_init中加入MT7620_ASIC_BOARD定義:

MT7620#usbreset
(Re)startUSB...
USB:inusb_lowlevel_init
Mediatek/_length16
Register1111NbrPorts1
USBEHCI1.00
scanningbusfordevices...2USBDevice(s)found
scanningbusforstoragedevices...1StorageDevice(s)found
MT7620#usbinfo
1:Hub,USBRevision0.2
-u-bootEHCIHostController
-Class:Hub
-PacketSize:64Configurations:1
-Vendor:0x0000Proct0x0000Version0.1
Configuration:1
-Interfaces:1SelfPowered0mA
Interface:0
-AlternateSettings0,Endpoints:1
-ClassHub
-

2:MassStorage,USBRevision2.0
-HPUSB2.0Flash00CCCBB99999
-Class:(fromInterface)MassStorage
-PacketSize:64Configurations:1
-Vendor:0x0204Proct0x6025Version1.0
Configuration:1
-Interfaces:1BusPowered100mA
Interface:0
-AlternateSettings0,Endpoints:2
-ClassMassStorage,Transp.SCSI,Bulkonly
-Endpoint1OutBulkMaxPacket512
-Endpoint1InBulkMaxPacket512

⑸ 解鎖uboot分區路由器固件怎麼編譯

參考如下:

1、首先到路由器的官網下載最新固件。
2、登陸路由器,選擇系統工具-軟體升級。

3、點擊瀏覽,找到下載的路由器固件。
4、等待升級完成,路由器會自動重啟就完成升級了。
希望能幫到您。

⑹ ARM (UBOOT)編譯出錯問題

我以前用的是fedora12,我以為是系統問題(因為以前我也做過uboot編譯,沒有-rd
asm-arm/arch即可
意思就是強行刪除
不行聯系我635123374
嵌入式

⑺ 編譯uboot出錯,怎麼解決,求助

這個是沒有指定架構和交叉編譯器造成的錯誤,解決的辦法有兩種: 以smdk2410為例: 第一種:先執行$ make smdk2410_config 然後執行 $ make ARCH=arm CROSS_COMPILE=arm-linux- 就不會出現上面的錯誤了。 第二種: 修改頂層目錄下的Makefile文件...

⑻ 怎樣用winhex從路由器編程器固件中提取art和uboot

ART在OP固件的最後面,從0F0000到0FFFFF這64K數據就是ART,但是並不是所有的固件都是在最後面,無賴之下,仔細對比起其中的位元組,發現FW150R之類的固件是在最後面,跟OP一樣,跟換了ART再刷,效果比壇子里下的那個效果要好,可以穩定選擇20DB
可是效果還是很差,因為功放沒啟動,反而成了信號阻礙的了,手機放在AP上,可以達到-40DB,但是一拿開就不行了,裝天線根本沒用,試了千萬種ART,一個個比對,修改了刷,刷了焊,焊了再拆。拆了再刷,那個艱辛啊,幸虧有熱風槍,焊接並不是很費神
最後突然想到,原產自帶的既然能啟動,那麼他的AR應該可以用吧,打開備份的原廠固件,按照OP的方法,卻不是的,現在終於知道,原來ART真的不是都在最後面,這個固件的最後面既然是UBOOT
過後查看OP及其他AR9331的ART發現,其中都有一段字元,好像是HB6什麼的,找到原廠固件搜索這段字元,嘿,還真有,仔細研究起始斷和結束段,保存下來正好64K,反正拆習慣了,也刷習慣了,說實話,這編程真的好慢,刷好後,上機測試,哈,終於成功了,可穩定選擇27DB,而且效果明顯,站在5米處,選擇27DB和20DB明顯相差7個DB,奉上ART及編譯好的固件。

⑼ 編譯uboot時出現如下錯誤,求大神告知!!!

沒有指定交叉編譯器,定義Makefile中CROSS_COMPILE

⑽ 無線路由器怎樣刷uboot

"具體操作步驟如下:
1.用到的東西
網線 一條
USB轉TTL線 一條
SecureCRT終端模擬程序
2.接駁TTL線
路由器PCB板上的TX、RX、GND分別連接到USBTTL(USB轉串口)的TX、RX、GND插針上
拔掉路由器WAN和LAN口所有網線
3.電腦預設(筆者用的是XP系統)
將USB轉TTL接到電腦上,裝好USBTTL驅動,選擇正確的COM口
4.把電腦的網卡地址改成靜態IP地址(筆者設置為192.168.1.100)
5.設置SecureCRT COM口的速率為每秒位數57600(筆者這里用的是SecureCRT,)。
設置SecureCRT里(Protocol:Serrial Port:COM9 Baud rate:57600 Data bits:8 Parity:None Stop bits:1)
Flow control選項 DTR/DSR,RTS/CTS,XON/XOFF都不打勾(COM口根據設備管理器中選擇相應的數字)。
6.點「Connect」完成SecureCRT COM口連接設置,如果連接正確,窗口前會有一個綠色的勾
7.可以打開路由的電源,如SecureCRT有顯示就表示接駁正確,關上電源。如沒有,把RX和TX兩根線對調。
把相關的文件(u-boot、eeprom及Openwrt固件),與TFTPD32放在同一文件夾內,運行TFTPD32(什麼都不要設置)。
8. 開始刷機——刷入u-boot(確保TTL線已經正確接好)
(一)在SecureCRT,打開HG255D電源, 當出現
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Enter boot command line interface.
9: Load Boot Loader code then write to Flash via TFTP.
(二)馬上按4後出現如下(不能按9,按9更新U-boot 100%變磚頭——鍵盤上的數字鍵4)
4: System Enter Boot Command Line Interface.
U-Boot 1.1.3 (Nov 28 2012 - 12:00:15
Main_loop !!
9.(三)設置tftp服務的網路地址與上傳文件到內存
輸入命令
setenv serverip 192.168.1.100
回車
接著輸入
tftpboot 0x80100000 tftpd-uboot.bin
回車
SecureCRT窗口返回信息如下:
RT3052 #
10.等SecureCRT里顯示2個Arp Timeout Check插上網線時,把網線插入路由器的LAN口(黃色的介面),隨便哪個口都可以。
注意:如果沒有提示成功下載到問題,千萬不要繼續下面的操作。等完全tftp上傳好,出現NetBootFileXferSize= 00023874)後 (00023874為tftpd-uboot.bin文件大小的16進制數值,別的U-boot文件的值可能不同)
11.(五)解鎖flash 保護
輸入
protect off all
回車
12.(六)擦除U-BOOT
輸入
erase 0xBF000000 0xBF03FFFF
回車
13.寫入U-BOOT
輸入
cp.b 0x80100000 0xBF000000 0x40000
回車
14.備份EEPROM
cp.b 0xBFFA0000 0x80100000 0x20000
md 0x80100000
erase 0xBF060000 0xBF07ffff
cp.b 0x80100000 0xBF060000 0x20000
md 0xBF060000
15.刷完系統會自行重啟,如果沒有重啟請按Ctrl+C來重啟機器,如果再不行就直接關路由器電源。
16.到這里u-boot刷完成,關閉tftpd32.exe
這里筆者刷的是tftpd版的uboot,這種方法還可以刷電信原版的uboot和httpd版的uboot。
注意:如果要刷eeprom要先刷tftfd版的uboot,再刷eeprom。刷httpd版後是不能刷eeprom的,因為eeprom是需要tftp刷的。"

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:710
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:972
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:681
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:833
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:741
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1081
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:312
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:192
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:880
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:837