= HackingEncore = Documentación de como obtuvimos el control del hardware y software de la board interna. == Encore ENTC-1000 == * Informacion de la SDRAM y la FLASH * Toolchain * U-BOOT * Instrucciones para Construir u-boot * Flashing u-boot * Kernel Linux * Construyendo el kernel * Boot del kernel Linux * Open Embedded * Cliente Delgado === Informacion de la SDRAM y la FLASH === Direccion de la Imagen en la FLASH Empezamos a probar metodicamente 0x60000000, y luego 0x60001000 (como dice la pagina del boot del manual). El "CRUS" original del Encore entc-1000 está en la direccion FLASH '''0x60001000''' :) La direccion de RAM base es '''0xc0000000''' === Toolchain === En ubuntu : {{{ apt-get install binutils-arm-linux-gnueabi cpp-4.5-arm-linux-gnueabi gcc-4.5-arm-linux-gnueabigcc-4.5-arm-linux-gnueabi-base }}} Si no : http://arm.cirrus.com/files/tools/arm-linux-gcc-4.1.1-920t.tar.bz2 http://arm.cirrus.com/files/tools/arm-elf-gcc-3.2.1-full.tar.bz2 === U-BOOT === El uboot utilizado es el de la sim1. Se modificó para : * Configurar los 64MB de RAM (el uboot de la sim1 es para 32MB) * Configurar el ambiente para la ejecucion correcta del Linux kernel (le pasamos los parametros de root/dev/sda1, etc) * Cargar el kernel nuestro desde la FLASH si se puede leer el kernel desde una particion chiquita vfat en un pendrive ==== Instrucciones para Construir u-boot ==== Fuente : http://code.google.com/p/sim1/wiki/BootLoader#Compiling_u-boot_from_source {{{ wget http://sim1.googlecode.com/files/u-boot-1.1.6-sim_one-20110329.tgz tar xzf u-boot-1.1.6-sim_one-20110329.tgz cd u-boot-1.1.6 CROSS_COMPILE=arm-linux-gnueabi- make sim_one_config CROSS_COMPILE=arm-linux-gnueabi- make u-boot.bin }}} ==== Flashing u-boot ==== En un principio copiamos U-Boot a RAM utilizando boot.S e init.S encontrado en http://arm.cirrus.com/files/download/Download_1-0-5.tar.gz. Y luego operamos uboot. Pero, el codigo fuente anterior ya trae un utilitario llamado "download", escrito funcional para esta board. Por lo que si sólo queremos copiar U-Boot en la FLASH utilizamos el programa "download" : http://arm.cirrus.com/files/download/Download_1-0-5.tar.gz {{{ download u-boot.bin }}} === Kernel Linux === El kernel tiene que ser un uImage ==== Construyendo el kernel ==== Kernel para el Encore ent-1000 {{{ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.1.tar.bz2 tar xvjf linux-3.1.1.tar.bz2 cd linux-3.1.1 cp arch/arm/configs/ep93xx_defconfig .config make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig # # Seleccionar como SDRAM base 0xc0000000 # # Deshabilitar las demas boards. Habilitar solo la edb9307a make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage }}} ==== Escribir el kernel Linux en la FLASH ==== Ejemplo: {{{ ENTC1000> erase 60080000 607FFFFF ENTC1000> tftp 60080000 uImage }}} ==== Boot del kernel Linux ==== Ejemplo: {{{ #### SIM.ONE setenv bootargs 'root=/dev/sda1 rootdelay=10 console=ttyAM video=ep93xx-fb:vout=0,vmode=1' SIM.ONE setenv bootargs 'root=/dev/sda1 rootdelay=10 console=ttyAM video=ep93xx-fb:800x600-16@60' SIM.ONE tftp c0200000 uImage SIM.ONE bootm c0200000 }}} Ejemplo para iniciar un kernel Linux desde la FLASH : {{{ ENTC1000> cp.b 0x60080000 0xc0200000 0x255000 ENTC1000> bootm c0200000 }}} === Openembedded === {{{ git clone LINK-openembedded # se utiliza el commit 10a36a519ce53c9013e117fb8eee169f903070aa # Author: Philip Balister # Date: Tue Aug 9 10:28:10 2011 -0400 # cat build/conf/local.conf BBFILES = "/home/embebidos/encore/ep9307/openembedded/recipes/*/*.bb" DISTRO = "angstrom-2010.x" MACHINE = "ep93xx" TARGET_OS = "linux" # Version de bitbake : bitbake-1.10.2 }}} === Cliente Delgado === En el servidor iniciamos el servidor vnc : {{{ tightvncserver :1 -geometry 800x600 }}} En el Encore ejecutamos el cliente VNC : {{{ Xfbdev -mouse mouse,,device=/dev/input/mouse0 & tightvncviewer 10.0.2.253:2 -fullscreen -compresslevel 9 -quality 7 }}}