文档库 最新最全的文档下载
当前位置:文档库 › TP路由,打造完整的固件,无需复杂的TTL ,U-boot命令

TP路由,打造完整的固件,无需复杂的TTL ,U-boot命令

TP路由,打造完整的固件,无需复杂的TTL ,U-boot命令
TP路由,打造完整的固件,无需复杂的TTL ,U-boot命令

TP路由,打造完整的固件,无需复杂的TTL ,U-boot命令

一般tp系列路由 741/841N/941n/MR3420 固件修复或改8M固件,通常先写个u-boot ,然后通过TTL线连接,使用u-boot 命令从tftp服务器下载固件修复,操作好不容易.......

直接打造完整的编程器固件写入,方便多了。步骤:

1。winhex 新建一个8M的空白文件<未命名>,文件-新建,建立新文件,文件大小输入8MB 。编辑-全选,填充选块,填充十六进制数值 FF 。

2。打开 WR841N V7 8MB u-boot.bin 编辑-全选,复制。切换到刚建立的8M文件,编辑-写入,偏移地址0。

3。打开原机4M备份的固件,位置-转到偏移量 1FC00 和 1FE00 处,填入新建立的8M 文件对应位置。定义选块 3F1000 - 3FFFFF,复制,写入8M文件的偏移地址 7F1000 处。

原固件0x1FC00是你的MAC地址,0x1FE00是你的PIN,一般外壳背面写有。

原固件0x3F1000 - 0x3FFFFF,board_config/art 分区,包含无线部分校正数据(好像是各机不相同,否则会丢无线)

4。打开下载的固件, openwrt-ar71xx-generic-tl-mr3420-v1-squashfs-factory.bin 全选,复制,写入8M文件的偏移地址 0x20000 处。保存文件, 8M 完整编程器固件就生成了,写入flash,起动即可。

另:其实使用高级的编程器,更简单些,可以直接编辑数据缓冲区,写入MAC和PIN。可装入多个文件到数据缓冲区起始地址,备份的board_config/art 分区文件装入到

0x3F1000,固件 xxx-factory.bin 装入到0x20000。写入。

UBOOT命令详解

常用U-boot命令详解(z) 2010-09-30 15:05:52| 分类:学习心得体会|字号订阅 U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,在我编译的 U-boot-2009.11中的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。 [u-boot@MINI2440]# version U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# v U-Boot 2009.11 ( 4月04 2010 - 12:09:25) [u-boot@MINI2440]# base Base Address: 0x00000000 [u-boot@MINI2440]# ba Base Address: 0x00000000 由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧! (1)获取帮助 命令:help 或? 功能:查看当前U-boot版本中支持的所有命令。 [u-boot@MINI2440]#help ?- alias for'help' askenv - get environment variables from stdin base - print or set address offset bdinfo - print Board Info structure bmp - manipulate BMP image data boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootelf - Boot from an ELF image in memory bootm - boot application image from memory bootp - boot image via network using BOOTP/TFTP protocol

TTL路由刷机教程

先学习下编程器固件里面的内容: 编程器固件中包含uboot、fw和art。 uboot就像电脑的bios,是底层的管理系统; fw就像电脑的操作系统,实现路由器的各种功能; art就像电脑的无线驱动程序,是无线校验码; uboot的长度为128KB(0x20000);art为64KB(0x10000);fw有4M和8M的区别,4M的为3840K (0x3c0000),8M的为7936KB(0x7c0000)。在刷机之前要对要刷入flash的uboot、fw、art 的文件长度用ultraedit或winhex进行校验。尤其是uboot,如果大小不对,千万不要尝试刷入,那是一定会变砖的。 uboot、fw和art在flash中的位置如下: 4M的FLASH:flash地址从0x000000~0x3FFFFF ttl访问flash的地址从0x9F000000~0x9F3FFFFF 8M的FLASH:flash地址从0x000000~0x7FFFFF ttl访问flash的地址从0x9F000000~0x9F3FFFFF

准备工作 1、从PCB版上上引出TTL线,一般有三根:TX RX和GND,对应主板上的标记,应该是TP-IN,TP-OUT,主板上焊点较大、覆盖面积较广的一般就是GND,有USB的,外壳连接的就是GND,可以从这些地方引出。 2、USB-TTL板\串口TTL板\CH341编程器的 TTL串口功能,装好驱动,在设备管理器中查出该设备占用的COM端口号. 3、电脑IP设置192.168.1.2,网关255.255.255.0,掩码192.168.1.1,网线连接路由器LAN口和电脑网线接口。 4、需要的软件PUTTY或者SecureCRT。连接好TTL,打开PUTTY或者SecureCRT,点串口,端口改为上面查出的COM端口号,速率选择115200,点确定。如果接上路由器电源以后不出码,请交换ttl的Tx和Rx两线;如果出乱码,请查COM端口的速率是不是都是115200。(注: 有些路由用的波特率是117500,128000的才不会乱码, SecureCRT添加串口的设置RTS/CTS不要打钩) 5、需要的软件tftp32。将固件放到tftp32同一目录,打开ftfp32,一般默认的server interface 就已经是你的网卡IP地址(对于路由器uboot的远端地址不是192.168.1.2的,在TTL中断系统启动以后,输入setenv ipaddr 192.168.1.1;setenv serverip 192.168.1.*(电脑IP地址)命令)。 TTL刷固件的命令 了解以上地址信息以后,就可以利用以上信息在不拆FLASH的情况下利用TTL向FLASH写入编程器固件或者其中的某一部分。

uboot下载内核和文件系统的步骤

uboot 下载内核和文件系统的步骤 1)下载linux到系统的SDRAM运行(仅做测试之用,断电或退出后就会消失) 1>运行Uboot,设置环境变量 Uboot>setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量 Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr [目标板 ip 地址] 目标板 ip 地址 Uboot>setenv serverip [主机 ip 地址] 主机 ip 地址 2>下载linux内核,文件系统 打开tftpserver应用程序,设置根目录路径,将内核、文件系统等拷贝到所设置的根目录下。 Uboot>tftp 21100000 ramdisk.gz 下载文件系统 Uboot>tftp 21000000 uImage 下载 linux 内核 Uboot>bootm 21000000 启动 linux 然后linux操作系统就开始运行。 2)烧写 Linux 到系统的 Flash 运行 1>设置运行Linux的环境变量 Uboot> setenv bootargs root=/dev/ram rw initrd=0x21100000,6000000 ramdisk_size=15360 console=ttyS0,115200,mem=32M 启动系统环境变量Uboot>setenv image cp.b 10020000 21000000 b0000 拷贝内核到sdram Uboot>setenv ramdisk cp.b 100d0000 21100000 226000 拷贝文件系统到sdram Uboot>setenv boot bootm 设置变量boot Uboot>setenv bootcmd run ramdisk\;run image\;run boot 设置默认变量bootcmd Uboot>setenv ethaddr 12:34:56:78:99:aa mac 地址 Uboot>setenv ipaddr 目标板 ip 地址目标板 ip 地址,由你自己决定Uboot>setenv serverip 主机ip地址主机ip地址,就是你的PC的ip Uboot>saveenv 保存环境变量 2>烧写Linux内核到Flash Uboot>tftp 21100000 ramdisk.gz Uboot>cp.b 21100000 100d0000 226000

固件升级失败导致路由器变砖头无法使用了

固件升级失败导致路由器变砖头无法使用了,有办法 抢救回来吗? 路由器在进行固件升级的时候,会擦除Flash闪存上面存储的路由器固件,然后再写入新的路由器固件,这是一个比较漫长的过程,根据路由器固件的大小,可能会需要几分钟的时间。在此升级的时间里,如果出现意外状况,如路由器突然断电,或者用户误操作了路由器,就有可能会导致路由器升级失效,Flash闪存遭到破坏的情况,路由器就无法正常使用了,也就是俗称的路由器“变砖”了。实际上路由器固件有两个部分,一部分负责启动,称为Boot部分,类似于计算机的BIOS引导程序,另一部分是固件部分,也就是实际升级的部分。当路由器升级失效时,损坏的是固件部分的那一块Flash闪存,而Boot部分并没有损坏,因此是可以通过努力救援回来的。 救援模式 所谓的救援模式,就是指当路由器固件升级失效后,采用某种特殊方式,将路由器固件重新刷入的模式,也就是可以将路由器从“砖头”变活的操作模式。支持救援模式的型号主要包括:JHR-N815R JHR-N825R JHR-N828 JHR-N835R JHR-N845R JHR-N855R 3R增强版 Q5增强版 JYR-N490增强版 Q7 Q8 JYR-AC520 JYR-AC670 JIR-AC956等。 因型号太多,这里没能一一列举出来,具体情况,建议可以拆开机壳,查看芯片方案确定。本文所述的方式适用于全部Ralink/MTK方案的产品,如下图所示。

进入救援模式 进入救援模式的方法其实很简单。首先需要使用有线连接路由器的局域网接口,并且为计算机设置静态IP地址(因此时路由器已经无法工作,也自然是无法分配IP地址的)。如下图所示,将计算机连接的IP地址设置为:192.168.1.100

华为HG255D电信原版无线路由器刷机教程实战整理

方法/步骤 1 一、用到的东西 1、网线一条 2、USB转TTL线一条 3、SecureCRT终端仿真程序 4、当然路由器HG255D主体与电源适配器也少不了了 2 二、接驳TTL线 路由器PCB板上的TX、RX、GND分别连接到USBTTL(USB转串口)的TX、RX、GND 插针上 拔掉路由器W AN和LAN口所有网线 HG255D TTL插座定义(V+ 为3.3V的电压,千万不能接) 步骤阅读 3 三、电脑预设1(笔者用的是XP系统) 将USB转TTL接到电脑上,装好USBTTL驱动,选择正确的COM口(在设备管理器中查看第几个COM口,笔者这里是COM9)。

步骤阅读 4 四、电脑预设2(笔者用的是XP系统) 把电脑的网卡地址改成静态IP地址(设置为192.168.1.100) 步骤阅读 5 五、设置SecureCRT相关参数 设置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 六、完成SecureCRT相关参数的设置 点“Connect”完成SecureCRT COM口连接设置,如果连接正确,窗口前会有一个绿色的勾,如下图: 步骤阅读 7 七、准备好路由器与路由器的电源适配器 这时可以打开路由器的电源,如SecureCRT有显示就表示接驳正确。关上电源。如没有,请参考步骤二,(或把RX和TX两根线对调)。 把相关的文件(u-boot、eeprom及Openwrt固件),与TFTPD32放在同一文件夹内,运行

路由器TTL线刷机教程

路由器TTL线刷机教程 TTL线刷机前的准备 1. 购买USB转TTL线,价格一般在12到20之间。 2. 在PC上装好TTL线驱动(一定要先装驱动在将TTL线插到电脑上)。 3. 认识TTL线。TTL线一头是USB接口,另外一头一般有4个带杜邦头的插管,分别是GND、RX、TX、VCC,一般GND是黑色,VCC是红色,其他是RX和TX,不清楚的一定要咨询卖家。见下图,你手上的TTL线可能与我提供的图片不同。 4. 下载并安装SecureCRT v6. 5.8.380 汉化版,SecureCRT-v 6.58H.rar下载地址: https://www.wendangku.net/doc/7619201539.html,/file/f672fcb574安装好后,我们在PC windows上打开设备管理器,点开端口,我们能看到COM x已经作为TTL通信口。(根据每台电脑的具体情况,COM口会不一样,大多数会是COM2口,我自己的是COM5口,需要自己去设备管理器里查看) 如上图那样选中Prolific USB-to Serial Comm Port (COMx), 鼠标右键弹出菜单, 选择属性,然后如下图那样进行设置

5. 拆开机器。初看上去,设备的后盖一般是看不到螺钉的。但后盖4个角上一般都有4个圆形的海绵垫片,螺钉就藏在下面,请先去除之,然后拧开螺钉,打开后盖,我们就能看到电路板了。下面就请在电路上寻找TTL插针,4 个插针是并排的,一般而言,电路板上只有这样一组并排插针,所以并不难找。请注意并排插针的引脚标注GND,标有GND的插针就是GND。而靠近GND右边一般都是RXD插针,其他依次是TXD、VCC插针。请将TTL 线的GND的细长型插管插到GND插针上。TTL线的RXD插到RXD插针上,TXD也如此办理。但VCC插针请不要插,千万小心。 上面我们描述的是一般规律,但也有例外。 RG100A-AA、DCHG-800-A、G120-T、HA910、H108Bv1.2电路板上TTL的GND右边依次是RXD、TXD、但VCC却在GND左边,其详细接线图请参考https://www.wendangku.net/doc/7619201539.html, 站长yesdong 提供的示意图:

华为HG255D路由刷机教程

华为HG255D只要是电信原版的u-boot就刷不死,所以大家可以放心大胆的刷!(类似电脑BIOS那样,只要这个没坏,可以装系统换来换去,不管砖头还是不转头,只要按住Reast键开机,登陆网页进入刷机模式任刷) 刷openwrt 1. 前期固件准备: ①软件:1102-0x20000_hg255d-squashfs-t ②openwrt固件:0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin 2.连接网线,设置固定IP地址

3.刷机过程 ①打开IE并在地址栏输入。 ②用牙签顶住reset键后打开电源,开机后一直保持按住reset键。 ③回到IE按回车,当电源灯亮后,后面的灯常亮,立刻刷新网页,就会出现刷机画面,这时候可以松开reset键。(有时候可能由于浏览器的缘故无法进入刷机界面,我建议将地址选中按回车键,这样效果比较好!)

④出现了这个画面,马上上传1102-0x20000_hg255d-squashfs-t,快速按Update software(注意这个时候操作要快,慢了路由器就重启成功了,如果这步骤操作失败,重新从①开始)。上传成功之后,网页页面变为下图样式(这个时候就慢慢等,一开始进入刷机模式,路由器有五六个灯是亮的,等它自动刷好,会自动重启,这是电源灯一闪一闪,最后只有两三个灯亮,就可以确定刷机完成了) ⑤自动重启后不要关机,输入192.168.1.1进入管理页,账号root,密码admin,在“备份|刷机”界面中选择:0508-openwrt-ramips-rt305x-hg255d-squashfs-By_shcl.bin固件再次刷机。界面如下:

UBoot源码分析1

?UBoot源码解析(一)

主要内容 ?分析UBoot是如何引导Linux内核 ?UBoot源码的一阶段解析

BootLoader概念?Boot Loader 就是在操作系统内核运行之前运行 的一段小程序。通过这段小程序,我们可以初始 化硬件设备、建立内存空间的映射图,从而将系 统的软硬件环境带到一个合适的状态,以便为最 终调用操作系统内核准备好正确的环境 ?通常,Boot Loader 是严重地依赖于硬件而实现 的,特别是在嵌入式世界。因此,在嵌入式世界 里建立一个通用的Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对Boot Loader 归纳出 一些通用的概念来,以指导用户特定的Boot Loader 设计与实现。

UBoot来源?U-Boot 是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSROM 的源码创建了 PPCBoot 工程项目,此后不断 添加处理器的支持。而后,Sysgo Gmbh 把 PPCBoot 移 植到 ARM 平台上,创建了 ARMBoot 工程项目。最终, 以 PPCBoot 工程和 ARMBoot 工程为基础,创建了 U- Boot 工程。 ?而今,U-Boot 作为一个主流、通用的 BootLoader,成功地被移植到包括 PowerPC、ARM、X86 、MIPS、NIOS、XScale 等主流体系结构上的百种开发板,成为功能最多、 灵活性最强,并且开发最积极的开源 BootLoader。目前。 U-Boot 仍然由 DENX 的 Wolfgang Denk 维护

UBoot实验2、uboot使用实验

Uboot的使用 一、 实验目的 在实验平台上使用uboot常用命令及使用Tftp工具传输文件。 二、 实验资源 硬件资源 CPU Samsung S3C2440A Nand flash Samsung K9D1208V0M 64M RAM64M 软件资源 bootloader uboot Tftp server tftpd32.exe 三、 实验前的准备 1、一台PC机。 2、实验平台。 3、串口线、网络线。 4、tftpd32.exe软件。 四、 实验步骤 1、实验前的准备 a)将串口线、网络线连接到实验平台与PC机上。 b)在PC机上运行超级终端串口软件。

2、进入Uboot命令输出状态 实验平台上电,在超级终端串口软件中按空格键进入Uboot命令输出状态。 3、查看Uboot命令 运行help命令显示uboot提供的所有命令。

4、学习U-Boot的几个常用的命令 根据每一条命令的帮助信息,说明这些命令的功能、参数和用法。 z bootm => help bootm bootm [addr [arg ...]] - boot application image stored in memory passing arguments 'arg ...'; when booting a Linux kernel, 'arg' can be the address of an initrd image bootm 命令可以引导启动存储在内存中的程序映像。这些内存包括RAM 和可以永久保存的Flash。 第1 个参数addr 是程序映像的地址,这个程序映像必须转换成U-Boot 的格式。 第2 个参数对于引导Linux 内核有用,通常作为U-Boot 格式的RAMDISK 映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。 例如: ——从内存地址0x300000启动 0x300000 bootm z cp => help cp cp [.b, .w, .l] source target count - copy memory cp命令可以在内存中复制数据块,包括对Flash的读写操作。 第1 个参数source是要复制的数据块起始地址。 第2 个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot 写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。 第3 个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。 例如: cp.b 0x300000 0xFE040000 0x180000将1.5M数据从内存拷到flash 0xFE040000位

小米路由刷机教程

首先,我们拿到手的小米MINI ( 在以下文中以MINI 代替),系统是官方稳定版的。要想刷OpenWRT ( 在以下文中以OP 代替) , 我们需要刷入开发版的MINI 系统。 打开 miwifi 点com 点击——> 下载 然后找到小米路由器mini ROM ————> 开发版0.4.96(8月29日更新)————> 立即下载 下载好以后,我们需要用到一个U盘,随便 2G 或者 4G 都可以,把U盘格式化为 FAT32 格式。 然后把下载好的 NIMI 开发版系统复制到U盘根目录下,并改名为 miwifi.bin 路由器断电,插入U盘,按住复位键,路由器通电,指示灯闪烁的时候,放开复位键,然后等待刷机完成。 当MINI的指示灯由黄色长亮变成蓝色长亮的时候,我们的MINI 开发版系统就刷好了。 然后就是把路由器的网络接入方式设置好,并绑定你的小米帐号。 下一步,就是获取 ROOT 权限。 我们打开miwifi 点com ,点击————> 开放 下拉点击————> 开启SSH工具 然后,再打开的网页中,记住你的 root密码,在后面的操作中用得到。 点击————> 下载工具包 把下载下来的 miwifi_ssh.bin 复制到刚才的U盘中,这个时候,要把前面复制进去的开发版系统文件miwifi.bin 删除掉。 同样的,断电,插入U盘,按住复位键,通电,在黄色指示灯闪烁的时候,放开复位键,等待.... 当指示灯变成蓝色长亮的时候,说明我们获取到root 权限了。可以接下去的操作了。

我们打开h t t p : //https://www.wendangku.net/doc/7619201539.html,/PandoraBox/Xiaomi-Mini-R1CM/ 我们下载MINI 的 OP 程序 PandoraBox-ralink-xiaomi-mini-r474-20140703.bin 这个里面,已经安装了一些插件了, 我用的是这一个。 PandoraBox-ralink-xiaomi-mini-r515-20140719.bin 这个里面,是纯净版的OP 我们把它改一个名字,因为然面要把OP程序的名字打出来,所以我们就把前面的英文都删掉, 改成 20140703.bin 然后我们在百度下载一个工具 winscp 下载好后,安装完成。 打开winscp , 文件协议我们选择 SCP ,主机名是路由器IP :192.168.31.1 ,端口是:22 点击登录需要我们输入用户名,root 和密码,这个密码,就是在上面,获取ROOT 权限的时候,网页上显示的root密码, 在弹出的窗口上,我们选择是。 然后在,右边我们打开 /tmp/ 左边找到下载好的MINI 的OP程序,把它从左边的框拖到右边的框,也就是把文件复制到MINI 的/tmp/目录下 到这里,我们就可以把winscp 关掉了。 然后,再下载一个工具 百度 putty 它是一个绿色的小软件,不需要安装,下载后,直接打开 我们在 Host Name(of IP address) 下面的空白的地方,输入MINI 的IP地址:192.168.31.1

uboot环境变量设置(大地小神之个人收藏)

u-boot的环境变量 u-boot的环境变量是使用u-boot的关键,它可以由你自己定义的,但是其中有一些也是大家经常使用,约定熟成的,有一些是u-boot 自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量: 上面只是一些最基本的环境变量,请注意,板子里原本是没有环境变量的,u-boot的缺省情况下会有一些基本的环境变量,在你执行了saveenv之后,环境变量会第一次保存到flash中,之后你对环境变量的修改,保存都是基于保存在flash中的环境变量的操作。

U-boot的环境变量值得注意的有两个:bootcmd 和bootargs ◆b o o t c m d 前面有说过bootcmd是自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数。 ◆b o o t a r g s bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已,感兴趣的可以看看这篇文章说的很全:https://www.wendangku.net/doc/7619201539.html,/u2/79570/showart_1675071.html。bootargs非常的灵活,内核和文件系统的不同搭配就会有不同的设置方法,甚至你也可以不设置bootargs,而直接将其写到内核中去(在配置内核的选项中可以进行这样的设置),正是这些原因导致了bootargs使用上的困难。 下面介绍一下bootargs常用参数,bootargs的种类非常的多,而且随着kernel的发展会出现一些新的参数,使得设置会更加灵活多样。 A.r o o t 用来指定r o o t f s的位置,常见的情况有: root=/dev/ram rw root=/dev/ram0 rw 请注意上面的这两种设置情况是通用的,我做过测试甚至

UBOOT详细解读

大多数bootloader都分为stage1和stage2两部分,u-boot也不例外。依赖于CPU体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。 1、Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,他用汇编语言写成,其主要代码部分如下:(1)定义入口。由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本来完成。 (2)设置异常向量(Exception Vector)。 (3)设置CPU的速度、时钟频率及终端控制寄存器。 (4)初始化内存控制器。 (5)将ROM中的程序复制到RAM中。 (6)初始化堆栈。 (7)转到RAM中执行,该工作可使用指令ldr pc来完成。 2、Stage2 C语言代码部分 lib_arm/board.c中的start arm boot是C语言开始的函数也是整个启动代码中C语言的主函数,同时还是整个u-boot(armboot)的主函数,该函数只要完成如下操作: (1)调用一系列的初始化函数。 (2)初始化Flash设备。 (3)初始化系统内存分配函数。 (4)如果目标系统拥有NAND设备,则初始化NAND设备。 (5)如果目标系统有显示设备,则初始化该类设备。 (6)初始化相关网络设备,填写IP、MAC地址等。 (7)进去命令循环(即整个boot的工作循环),接受用户从串口输入的命令,然后进行相应的工作。 3、U-Boot的启动顺序(示例,其他u-boot版本类似) cpu/arm920t/start.S @文件包含处理 #include @由顶层的mkconfig生成,其中只包含了一个文件:configs/<顶层makefile中6个参数的第1个参数>.h #include #include

Uboot启动代码解析

U-Boot启动过程 开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot 启动函数。看一下board/smdk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm920t/start.o,那么U-Boot的入口指令一定位于这个程序中。下面分两阶段介绍启动流程: 第一阶段 1.cpu/arm920t/start.S 这个汇编程序是U-Boot的入口程序,开头就是复位向量的代码。_start: b reset //复位向量 ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq //中断向量 ldr pc, _fiq //中断向量 … /* the actual reset code */ reset: //复位启动子程序

/* 设置CPU为SVC32模式 */ mrs r0,cpsr bic r0,r0,#0x1f orr r0,r0,#0xd3 msr cpsr,r0 /* 关闭看门狗 */ ………… relocate: /* 把U-Boot重新定位到RAM */ adr r0, _start /* r0是代码的当前位置 */ ldr r1, _TEXT_BASE /*_TEXT_BASE是RAM中的地址 */ cmp r0, r1 /* 比较r0和r1,判断当前是从Flash启动,还是RAM */ beq stack_setup /* 如果r0等于r1,跳过重定位代码 */ /* 准备重新定位代码 */ ldr r2, _armboot_start ldr r3, _bss_start sub r2, r3, r2 /* r2 得到armboot的大小 */ add r2, r0, r2 /* r2 得到要复制代码的末尾地址 */ copy_loop: /* 重新定位代码 */ ldmia r0!, {r3-r10} /*从源地址[r0]复制 */

路由器固件修改教程(个人理解)-无线路由区-中国无线论坛 -

看很多人咨询修改固件问题决定做一个简易教程!使用软件:1.winhex 下载链接:winhex10.rar(493.48 KB, 下载次数: 5) 1.启动界面 启动界面后选择打开你需要的固件文件就可以了 2.固件文件结构简单讲解 编程器固件中包含uboot、fw和art。 uboot就像电脑的bios,是底层的管理系统; fw就像电脑的操作系统,实现路由器的各种功能; art就像电脑的无线驱动程序,是无线校验码;

uboot的长度为128KB(0x20000);art为64KB(0x10000);fw有4M和8M的区别,4M的为3840K (0x3c0000),8M的为7936KB(0x7c0000)。在刷机之前要对要刷入flash的uboot、fw、art的文件长度ultraedit或winhex进行校验。尤其是uboot,如果大小不对,千万不要尝试刷入,那是一定会变砖的。 uboot、fw和art在flash中的位置如下: 4M的FLASH:flash地址从0x000000~0x3FFFFF ttl访问flash的地址从0x9F000000~0x9F3FFFFF flash起始地址 TTL起始地址 flash终止地址 TTL终止地址 uboot 0X000000 0X9F000000 0X01FFFF 0X9F01FFFF fw 0X020000 0X9F020000 0X3DFFFF 0X9F3DFFFF art 0X3F0000 0X9F3F0000 0X3FFFFF 0X9F3FFFFF 8M的FLASH:flash地址从0x000000~0x7FFFFF ttl访问flash的地址从0x9F000000~0x9F3FFFFF flash起始地址 TTL起始地址 flash终止地址 TTL终止地址 uboot 0X000000 0X9F000000 0X01FFFF 0X9F01FFFF fw 0X020000 0X9F020000 0X7DFFFF 0X9F7DFFFF art 0X7F0000 0X9F7F0000 0X7FFFFF 0X9F7FFFFF

uboot命令

U-boot基础 现在为Linux开放源代码Bootloader有很多,blob、 redboot及U-BOOT等,其中U-BOOT是目前用来开发嵌入式系统引导代码使用最为广泛的Bootloader。它支持POWERPC、ARM、MIPS和 X86等处理器,支持嵌入式操作系统有Linux、Vxworks及NetBSD等。 2.1 U-boot源代码目录结构 |-- board 平台依赖,存放电路板相关的目录文件 |-- common 通用多功能函数的实现 |-- cpu 平台依赖,存放cpu相关的目录文件 |-- disk 通用。硬盘接口程序 |-- doc 文档 |-- drivers 通用的设备驱动程序,如以太网接口驱动 |-- dtt |-- examples 应用例子 |-- fs 通用存放文件系统的程序 |-- include 头文件和开发板配置文件,所有开发板配置文件放在其configs 里 |-- lib_arm 平台依赖,存放arm架构通用文件 |-- lib_generic 通用的库函数 |-- lib_i386 平台依赖,存放x86架构通用文件 |-- lib_m68k 平台依赖 |-- lib_microblaze 平台依赖 |-- lib_mips 平台依赖 |-- lib_nios 平台依赖 |-- lib_ppc平台依赖,存放ppc架构通用文件 |-- net 存放网络的程序 |-- post 存放上电自检程序 |-- rtc rtc的驱动程序 `-- tools 工具 详细实例: ?board:开发板相关的源码,不同的板子对应一个子目录,内部放着主板相 关代码。 Board/at91rm9200dk/at91rm9200.c, config.mk, Makefile, flash.c ,u-boot.lds等都和具体开发板的硬件和地址分配有关。 ?common:与体系结构无关的代码文件,实现了u-boot所有命令,其中内置 了一个shell脚本解释器(hush.c, a prototype Bourne shell grammar parser), busybox中也使用了它。 ?cpu:与cpu相关代码文件,其中的所有子目录都是以u-boot所支持的cpu 命名。

路由器刷固件教程

硬件: 1、路由器一台 2、交换机一台(交换机可以免,需划分VLAN以后介绍方法) 软件: 1、Tomato DualWAN 1.23.0483 (官方网站https://www.wendangku.net/doc/7619201539.html,) 条件: 1、上网形式必须为PPPOE拨号(无论采用网线接入还是小猫接入均可) 2、账号形式限制网速(如果是端口限制网速双拨的好处就是多获得了几个IP,没有提速效果) 首先是刷路由器,刚刚买回来的路由器如果卖家没有刷过任何固件,应该是中国电信的原有固件,需要自己对固件进行升级,升级的目的让你的路由器可以支持带宽叠加(很小的功能,更强大的功能后续介绍) 路由器如何了连接,如何插电源我就不介绍了,自己研究吧. 首先设置IP为192.168.1.2 子网掩码255.255.255.0 网关192.168.1.1 见图 然后开始--运行--输入--ping 192.168.1.1 -t 见图

ping 的通表示路由器连接正常,窗口不要关一会有用 先关闭路由器,(后面有个红色开关) 将下载的固件解压并改名为tt.bin放在C盘根目录下(使用8M版本固件文件名为tomato-ND.trx) 开始--运行--输入--cmd--回车 在命令行中输入tftp -i 192.168.1.1 put tt.bin (不要敲回车) 此时打开路由,眼睛观察ping的窗口,一旦ping通在tftp中敲回车,只要不显示下面的图,基本上固件都上传成功的,固件上传成功会显示上传了多少字节,再来说一下路由器tftp 刷机的原理,给大家补补课,高手可以无视我。

固件上传成功会如下图 tftp是一个主动连接协议,他会主动连接路由器监听端口69,当然69端口要开放,路由器加载CFE成功后就会开放69端口等待数据,这个时间很短大约1到3秒左右,一旦有数据路由器停止固件的启动(如果没有连接就会正常启动固件了,可以想象成我们电脑的操作系统,当启动的时候按了del键操作系统就不会启动了),我们就是在这1到3秒的时间内连接路由器上传固件的,固件上传到路由器的内存中,然后路由器会将内存中的固件刷到flash 中,这个过程需要3-5分钟左右,固件越大时间越长,所以我们tftp成功后可以关闭电脑,但不要关闭路由器,静静的等待几分钟是必要的。 刷好路由器,现在的工作就比较简单了 将ADSL猫出来的网线连接交换机(有些同学的网络是网线接入,例如长城宽带等,直接将网线接到交换机上),交换机在接两条线,接到路由器的WLAN1跟WLAN2口上 硬件连接基本就是这样,没有上图 软件设置见图

经典=Uboot-2-命令详解(bootm)

bootm命令中地址参数,内核加载地址以及内核入口地址 分类:u-boot2010-11-04 10:472962人阅读评论(0)收藏举报downloadlinuxbytecmdheaderimage bootm命令只能用来引导经过mkimage构建了镜像头的内核镜像文件以及根文件镜像,对于没有用mkimage对内核进行处理的话,那直接把内核下载到连接脚本中指定的加载地址0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 通过mkimage可以给内核镜像或根文件系统镜像加入一个用来记录镜像的各种信息的头。同样通过mkimage也可以将内核镜像进行一次压缩(指定-C none/gzip/bzip2),所以这里也就引申出了两个阶段的解压缩过程:第一个阶段是u-boot里面的解压缩,也就是将由mkimage压缩的镜像解压缩得到原始的没加镜像头的内核镜像。第二个阶段是内核镜像的自解压,u-boot 里面的解压实际上是bootm 实现的,把mkimage -C bzip2或者gzip 生成的uImage进行解压;而kernel的自解压是对zImage进行解压,发生在bootm解压之后。 下面通过cmd_bootm.c文件中对bootm命令进行解析以及执行的过程来分析,这三种不同地址的区别: ulong load_addr = CFG_LOAD_ADDR; /* Default Load Address */ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ...... if (argc < 2) { addr = load_addr;//当bootm命令后面不带地址参数时,将默认的加载地址赋值给addr } else { addr = simple_strtoul(argv[1], NULL, 16); //如果bootm命令后面带了加载地址,则将该地址赋值给addr,所以最终有用的地址还是bootm命令后附带的地址 } ...... //

Uboot启动流程分析和移植介绍

基于MPC83xx 的U-boot 启动流程分析和移植 董 闯 北京邮电大学信息与通信工程学院,北京(100876) E-mail :donix.dong@https://www.wendangku.net/doc/7619201539.html, 摘 要:本文首先引入Bootloader 的概念,接着介绍U-boot 这种引导程序,并以Freescale 32位微处理器MPC83xx 为例,结合代码详细分析了U-boot 的启动的各个阶段及最终引导Linux 内核的过程,最后,建立交叉编译环境,针对TC8313E 目标板,给出U-boot 移植与编译的基本步骤。 关键词:U-boot;MPC83xx;交叉编译;移植;嵌入式系统 中图分类号:TP393.05 1.引言 引导程序(Bootloader)是系统加电后运行的第一段软件代码,类似于PC 机中的引导加载程序BIOS 。虽然引导程序仅在系统启动时运行非常短的时间,但对于嵌入式系统来说,这是一个非常重要的组成部分。通过这段小程序,初始化必要的硬件设备,创建内核需要的一些信息并将这些信息传递给内核,从而将系统的软、硬件环境配置到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。 2. U-boot 介绍 目前,嵌入式领域里出现了很多种类的Bootloader ,如Armboot 、Blob 、Redboot 、vivi 和U-boot 等,其中U-boot 是使用最广泛,功能最完善的。 U-boot (Universal Boot Loader)是从PPCBOOT 发展演化而来[1] ,其源码目录、编译形式与Linux 内核很相似,事实上,不少U-boot 源码就是相应的Linux 内核源程序的简化,尤其是一些设备的驱动程序,这从U-boot 源码的注释中就能体现。U-boot 中Universal 有两层含义,一是U-boot 除了支持PowerPC 系列的处理器外,还能支持MIPS 、x86、ARM 、NIOS 、XScale 等诸多常用系列的处理器;另外一层含义则是U-boot 不仅仅支持嵌入式Linux 操作系统的引导,还支持OpenBSD, NetBSD, FreeBSD, SVR4, Solaris, VxWorks, LynxOS, pSOS, lrix, RTEMS, QNX, ARTOS 等操作系统的引导。这两个特点正是U-boot 项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看,U-boot 对PowerPC 系列处理器支持最为丰富,对Linux 的支持最完善。 3. U-boot 启动流程分析 大多数Bootloader 都分为阶段1(stage1)和阶段2(stage2)两大部分,U-boot 也不例外。依赖于CPU 体系结构的代码(如CPU 初始化代码等)通常都放在阶段1 中,这些代码一般由汇编语言实现,有些CPU 还会在这个阶段调用部分的C 函数,例如MPC83xx ;U-boot 的阶段2则用于实现复杂的功能,这部分功能通常用C 语言来实现,具有更好的可读性和移植性。下面结合MPC83xx 的启动流程进行分析: 3.1 U-boot 的stage1 https://www.wendangku.net/doc/7619201539.html, 中国科技论文在线

无线路由器固件升级

无线路由器固件升级刷新过程详解 来源: 电脑维修时间: 2011-03-28 作者: hushiquan 路由器的固件跟系统一样都需要升级,无线路由器固件升级新版本一方面可以修正旧版本固件存在的问题,新版本的固件还会提供新的功能,方便多用户多机器共享上网。到底无线路由器该如何刷新升级呢,下面笔者以TP-LINK WR340G为例,详述TP-LINK无线路由器固件刷新过程。 1、下载无线路由器最新的固件 (1)同一款无线路由器,有可能存在不同的硬件版本,不同硬件版本的无线路由器固件有可能是不通用的,因此我们需要下载相应硬件版本的固件。 查看TP-LINK的无线路由器的软件、硬件版本信息 (2)同一款无线路由器,还可能存在标准版和特制版的固件,特制版的固件适用于那些电信封锁宽带共享的区域,如果你所在的区域不存在这类情况,直接使用标准版的固件。 TP-LINK WR340G就存在V1和V5两个硬件版本

选择最新的100618标准版 2、建议使用网线连接电脑和路由端,不推荐使用无线传输的方式刷新固件,因为无线传输不稳定,可能会造成刷新过程中出现意外情况。 3、在浏览器地址栏输入192.168.1.1,并输入正确的登录口令,进入TP-LINK无线路由器管理后台。点击左侧页面的“系统工具”,选择“备份和载入配置”,在“备份和载入配置”窗口,点击“备份配置文件”来备份路由器中已设置的各项参数。

无线路由器的系统工具 备份路由器的各项参数

备份配置文件 4、点击左侧页面的“系统工具”中的“软件升级”,点击“浏览”选择刚下载的更新版固件无误后,点击下方的“升级”按钮开始固件升级,在此过程中会有进度条滚动,升级过程中大约需要1分钟时间。 选取相应的新版固件程序,开始固件升级 5、固件升级完成后,路由器会自动重启,需要注意的是,固件升级会清空一切配置文件,包括之前设置的登录IP地址和口令,所有这一切将被还原成出厂默认设置(登录IP地址变成192.168.1.1,登录口令变成admin)。

相关文档
相关文档 最新文档