Ralink uBoot

Получить доступ к uBoot можно получить через аппаратный UART, пады которого расположены на плате устройства и зачастую подписаны.

Я подключаю роутер через USB-UART преобразователь. Это может быть преобразователь на базе микросхем FT232, PL2303, CP2102 и им подобные. Главное, что бы напряжение на выводах TXD/RXD не превышал 3.3в.

Другая особенность МК RT5350 состоит в том, что при подаче питания для нормального старта МК на его выводе RXD был низкий уровень напряжения. USB-UART преобразователь будет же держать на нём высокий уровень напряжения, что не даст МК загрузиться в нормальном режиме. Поэтому при включении преобразователь придётся отключать. (!!! TODO выяснить действительную причину, но смысл в том, что USB-UART должен быть отключен).

После включения MK из SPI Flash считывается и запускается загрузчик uBoot:

U-Boot 1.1.7 (Dec 13 2011 - 13:49:42)

Board: Ralink APSoC DRAM:  32 MB
relocate_code Pointer at: 81fb4000
******************************
Software System Reset Occurred
******************************
spi_wait_nsec: 42 
spi device id: c2 20 17 c2 20 (2017c220)
find flash: MX25L6405D
raspi_read: from:30000 len:1000 
.*** Warning - bad CRC, using default environment

============================================ 
Ralink UBoot Version: 3.6.0.0
-------------------------------------------- 
ASIC 5350_MP (Port5<->None)
DRAM_CONF_FROM: Boot-Strapping 
DRAM_TYPE: SDRAM 
DRAM_SIZE: 256 Mbits
DRAM_WIDTH: 16 bits
DRAM_TOTAL_WIDTH: 16 bits
TOTAL_MEMORY_SIZE: 32 MBytes
Flash component: SPI Flash
Date:Dec 13 2011  Time:13:49:42
============================================ 
icache: sets:256, ways:4, linesz:32 ,total:32768
dcache: sets:128, ways:4, linesz:32 ,total:16384 

 ##### The CPU freq = 360 MHZ #### 
 estimate memory size =32 Mbytes
raspi_read: from:40028 len:6 
.
raspi_read: from:0 len:30004 
....*************Is_update = 0 plat = 1**************

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: Entr boot command line interface.
   7: Load Boot Loader code then write to Flash via Serial. 
   9: Load Boot Loader code then write to Flash via TFTP. 

You choosed 4

 0 
   
4: System Enter Boot Command Line Interface.

U-Boot 1.1.7 (Dec 13 2011 - 13:49:42)
RT5350 # 

RT5350 # help
?       - alias for 'help'
bootm   - boot application image from memory
cp      - memory copy
erase   - erase SPI FLASH memory
go      - start application at address 'addr'
help    - print online help
loadb   - load binary file over serial line (kermit mode)
md      - memory display
mdio   - Ralink PHY register R/W command !!
mm      - memory modify (auto-incrementing)
mw      - memory write (fill)
nm      - memory modify (constant address)
printenv- print environment variables
reset   - Perform RESET of the CPU
rf      - read/write rf register
saveenv - save environment variables to persistent storage
setenv  - set environment variables
tftpboot- boot image via network using TFTP protocol
version - print monitor version

По умолчанию загрузчик читает и запускает ядро linux, но я вовремя нажал 4 и попал в командную строку uBoot.

Но более употребительные операции это 2 позволяющая обновить прошивку роутера и 9/7 позволяющая обновить сам uBoot.

Обновить uBoot может потребоваться если была заменена SDRAM c 16Mb на 32Mb или сам uBoot слишком стар и имеет проблемы (ранние версии не умели нормально работать с Ethernet).

Рабочие версии uBoot в бинарном виде можно забрать здесь: https://github.com/JiapengLi/OpenWrt-RT5350/tree/master/u-boot

Или копию у меня на сайте:

  • uboot128.img - исправленный загрузчик для роутеров с 16Mb SDRAM;
  • uboot256.img - исправленный загрузчик для роутеров с 32Mb SDRAM;
  • hame-mpr-a1-v22-uboot128.bin - оригинальный загрузчик от оригинального HAME MPR-A1.
 
comments powered by Disqus