Puerto RS232 y Consola YAMON y la FLASH del Azbox

  • 0 Respuestas
  • 2518 Vistas
*

milix

  • *
  • 538
  • +1/-0
Bueno viendo que varios users han reclamado un tuto de como poder usar el puerto RS232 del Azbox y luego usar la consola Yamon voy hacer un pequeño tuto de como hacerlo.


Nuestro Azbox dispone de conector de 4 pins en la placa como podemos observar en la siguiente foto, este puerto no podemos conectarlo directamente al PC porque emite señales de bajo nivel y al puerto serie del PC no le llegarian datos legibles por lo que tendremos que usar un conversor TTL a RS232 con chip Max232 o Max233 este conversor lo podremos comprar en Ebay por unos 8 euros y no merece la pena construirlo, es valido cualquier conversor que tengais siempre que adapteis las conexiones como esta en el grafico.



Citar
Vcc: Tensión 3v
GND (masa)
Tx (transmisión de datos)
Rx (recepción de datos)
Dependiendo del conversor que compreis necesitareis un cable yo en mi caso lo que he hecho ha sido coger un conector de alimentacion de un Disquetera de 3.5 y con un alfiler o aguja podreis desmontar sus pins para luego soldar los cables en el ordes descrito e insertarlos de nuevo asi podreis usar el dispositivo las veces que querais de manera commoda y sencilla.

Aqui os pongo una captura del conversor TTL a RS232 con Max232:



Despues de todo esto ya podemos conectarlo al PC para ello usaremos simplente un cable SERIE OJO importante no un cable NULLMODEM sino un simple DB9 o cable serie, la conexion debe hacerse con ambos equipos tanto PC o Azbox apagados.

EL ARRANQUE:

El Azbox cuando lo encendemos lo primero que hace es arrancar el zboot este le pasa el control al Yamon  que es un software que se encuentra grabado en una parte de la flash de  deficil acceso para evitar su borrarlo y se encarga de cargar el kernel,  dispone de una serie de comandos basicos que permiten leer, modificar,  la flash y la SDRAM en tiempo real.

Esto tiene multitud de ventajas como:
Poder cambiar cambiar el kernel o incluso cargar el kernel en la SDRAM  salir del yamon y pasar el control al  firmware y probar dicho kernel luego al apagar el equipo vuelve el  kernel original almacenado en la flash esto es ideal para pruebas  rapidas sin tener que flashear todo el dia.

Para que nos entendamos el Yamon es como  un Jtag muy sencillo de usar y sin muchas historias con un simple cable  serie y que cualquiera puede realizar, eso si, si borramos la parte de la flash donde esta el YAMON si que tendremos que usar un verdero JTAG para recuperar el azbox por eso digo que todo lo probeis lo hagais sabiendo donde lo haceis.

Ahora tendreis que usar o bien el putty o hyperteminal para conectarlos logicamente teniendo el cable conversor previamente conectado encendeis el azbox en el boton trasero y os saldra un log como este:

Citar
xosPe0 serial#eeb58f965774f62c6348aa0bdfca3a17 subid 0x50
xenv cs2 ok
power supply: ok
dram0 ok (9)
dram1 ok (a)
zboot (0) ok
>
**************************************
* SMP863x zboot start ...
* Version: 2.4.0-2.8.0.1
* Started at 0x91000000.
* Configurations (chip revision: 6):
*    Use 8KB DRAM as stack.
*    Support XLoad format.
*    Enabled BIST mode.
*    Enabled memory test mode.
*    Use internal memory for stage0/1.
**************************************
Boot from flash (0x48000000) mapped to 0x8c000000.
Found XENV block at 0x8c000000.
CPU clock frequency: 300.37MHz.
System clock frequency: 200.25MHz.
DRAM0 dunit_cfg/delay0_ctrl (0xf34111ba/0x000a8788).
DRAM1 dunit_cfg/delay0_ctrl (0xf34111ba/0x00098887).
Using UART port 0 as console.
Board ID.: "852-E2"
Chip Revision: 0x8634:0x86 .. Matched.
Setting up H/W from XENV block at 0x8c000000.
  Setting <SYSCLK avclk_mux> to 0x00000000.
  Setting <SYSCLK hostclk_mux> to 0x00000100.
  Setting <IRQ rise edge trigger lo> to 0xff28ca00.
  Setting <IRQ fall edge trigger lo> to 0x0000c000.
  Setting <IRQ rise edge trigger hi> to 0x0000009f.
  Setting <IRQ fall edge trigger hi> to 0x00000000.
  Setting <IRQ GPIO map> to 0x20090820.
  Setting <PB default timing> to 0x10101010.
  Setting <PB timing0> to 0x10101010.
  Setting <PB Use timing0> to 0x000003f4.
  Setting <PB timing1> to 0x00110101.
  Setting <PB Use timing1> to 0x000003f3.
  Setting <PB timing2> to 0x105f1010.
  Setting <PB Use timing2> to 0x000003f8.
  PB cs config: 0x000e0040 (use 0x000e0040)
  Enabled Devices: 0x00021ace
    BM/IDE PCIHost Ethernet I2CM I2CS USB PCIDev2 PCIDev3 SCARD
  MAC: 00:02:14:13:ef:f9
  PCI IRQ routing:
    IDSEL 2: INTA(#14) INTB(#14) INTC(#14) INTD(#14)
    IDSEL 3: INTA(#15) INTB(#15) INTC(#15) INTD(#15)
  Smartcard pin assignments:
    OFF pin = 0
    5V pin = 1
    CMD pin = 2
  Setting up Clean Divider 2 to 96000000Hz.
  Setting up Clean Divider 4 to 33333333Hz.
  Setting up Clean Divider 5 to 25000000Hz.
  Setting up Clean Divider 6 to 20000000Hz.
  Setting up Clean Divider 7 to 20000000Hz.
  GPIO dir/data = 0x76000038/0x76000000
  UART0 GPIO mode/dir/data = 0x6e/0x00/0x00
  UART1 GPIO mode/dir/data = 0x6e/0x00/0x00
XENV block processing completed.
Found existing memcfg: DRAM0(0x08000000), DRAM1(0x08000000)
Heap/Temp/Temp1/Dest start at 0x14000000/0x16000000/0x15000000/0x12000000.
Default boot index: 0
Scanning ROMFS image at 0x8c040000 (0x48040000) .. Found.
ROMFS found at 0x8c040000, Volume name = YAMON_XRPC
Found 1 file(s) to be processed in ROMFS.
Processing xrpc_xload_yamon_ES4_prod.bin (start: 0x8c040090, size: 0x0002fe84)
  Checking zboot file signature .. Not found.
  Trying xrpc_xload format .. OK
  Checking zboot file signature at 0x13000000 .. OK
  Decompressing to 0x91200000 .. OK (453328/0x6ead0).
  Load time total 173/255 msec.
Execute final at 0x91200000 ..



**********************************
* YAMON ROM Monitor
* Revision 02.06-SIGMADESIGNS-01-2.8.0.1
**********************************
Memory:  code: 0x11000000-0x11040000, 0x11200000-0x11204000
reserved data: 0x11240000-0x12440000, PCI memory: 0x12440000-0x12840000
Environment variable 'start' exists. After 1 seconds
it will be interpreted as a YAMON command and executed.
Press Ctrl-C (or do BREAK) to bypass this.
Y cuando llega a este punto hay que pulsar control+C para acceder a la  consola yamon luego a continuacion para poder  cargar/enviar cosas tenemos que establecer o habilitar nuestro puerto Ethernet  con el siguiente comando:

Citar
net down
desconecta la red ethernet

Citar
YAMON> setenv bootserver 192.168.1.2
direccion Ip del  Pc o server

Citar
YAMON> setenv gateway 192.168.1.1
direccion gateway de  la red

Citar
YAMON> set ipaddr 192.168.1.80
direccion Ip del azbox

Citar
YAMON> set netmask 255.255.255.0
mascara de red

Citar
net init
net up
Iniciamos la red y la arrancamos.

Ahora ya tenemos conexion Red con el Pc voy a detallar ahora algunos  comandos:

1) PROCESO PRUEBAS DE KERNEL EN LA RAM

En el Linux tendremos que activar el servidor TFTP y luego en la carpeta  que hayamos creado a tal efecto metemos el archivo miarchivo.ram.srec  este tipo de formato es para cargar en la RAM se obtiene con compilador y  el kernel esto todavia hay que estudiarlo de como obtenerlo.

Como instalar y arrancar TFTP en ubuntu:
You are not allowed to view links. Register or Login

Citar
YAMON>load You are not allowed to view links. Register or Login
Con  el comando load podremos cargar el kernel en este caso en la SDRAM ojo  no en la flash.

Citar
YAMON> go . / root=dev/mtdblock/0
El comando go  ejecutaria el kernel que ya esta en la RAM desde el primer bloque osea  el 0.

2) PROCESO GRABAR EN LA FLASH CUANDO NO ES POSIBLE EL ARRANQUE.

El formato de archivo que copiaremos en el sever TFTP sera  miarchivo.flash.srec este formato es para poder grabarlo en la flash.  Tengo que estudiarlo mas detenidamente los offset y tamaño de los  mismos para no liarla gorda, jeje seguire ampiando este tuto con mas  avances.


Y aqui un listado de todos los comandos disponibles del sistema yamon y  el funcionamiento del mismo:

You are not allowed to view links. Register or Login

La FLASH

El Azbox dispone de una Flash de 8 MB de tipo NOR su mapeo es el siguiente:

Creating 5 MTD partitions on "CS2: Physically mapped flash":
0x00000000-0x00020000  : "CS2-Part1" Tamaño hex 20.000 =  131.072 bytes
0x00020000-0x00040000 : "CS2-Part2"  Tamaño hex 20.000 =  131.072 bytes
0x00040000-0x00080000 : "CS2-Part3" Tamaño hex 40.000  = 262.144 bytes
0x00080000-0x00700000  : "CS2-Part4" Tamaño hex 620.000 = 6.422.528 bytes
0x00700000-0x00800000 :  "CS2-Part5" Tamaño hex 100.000 = 1.048.576 bytes

Con el siguiente comando de telnet podemos ver como temos montado nuestro sistema incluida la flash y los distintos mtd luego detallare que contiend cada parte:

Citar
MMP[~]$ cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00800000 00010000 "CS2: Physically mapped flash"
mtd1: 00020000 00010000 "CS2-Part1"
mtd2: 00020000 00010000 "CS2-Part2"
mtd3: 00040000 00010000 "CS2-Part3"
mtd4: 00680000 00010000 "CS2-Part4"
mtd5: 00100000 00010000 "CS2-Part5"
MTD0: Contiene los 8mb de la flash
Part1 MTD1: No estoy muy seguro pero creo que es el Boot de arranque
 Part2 MTD2: Contiene el Zboot
Part3 MTD3: Contiene el Yamon (xrpc_xload_yamon_ES4_prod.bin)
Part4 MTD4: Contiene el Kernel (xrpc_xload_vmlinux_ES4_prod.bin)
Part5 MTD5: Contiene la carpeta DISK1 encargada del arranque del azbox.

Con esta info ya podreis trastear y hacer pruebas espero que os sirva de ayuda, yo ahora ando muy mal de tiempo asi de momento lo tengo parado todo pero espero en breve retomar las investigaciones, no obstante para trastear podreis cargar los datos en la SDRAM asi no dañareis nunca la flash y al apagarlo y encenderlo mantendra la que teniais antes.

Salu2.
« Última modificación: 1 Ene 1970, 01:00 por Guest »