= HelenOS on !BeagleBoard = Information pertaining to porting HelenOS to the [https://beagleboard.org/beagleboard-xm BeagleBoard-xM] single-board computer. {{{#!imagebox align=right, width=300px [[Image(bbxm1.jpg,center,280px, margin-left=10, margin-bottom=30, title="BeagleBoard-xM with serial console connected via USB-serial cable")]] BeagleBoard-xM with serial console connected via USB-serial cable }}} == Status == Supported models: * !BeagleBoard-xM The !BeagleBoard-xM has been supported since HelenOS 0.6.0. == Serial Console == !BeagleBoard has a female DB-9 connector, so one can plug a USB-serial adapter with male DB-9 connector straight to it, without any additional cabling (such as a laplink cable). Comms settings: '''115200 bd, 8 data bits, 1 stop bit, no parity, disable hardware flow control'''. Only kconsole can be used via the serial console, there is no user-space serial console. == Booting == The !BeagleBoard can be either netbooted or booted over serial. In either case, start by build HelenOS for the arm32/beagleboard target. This produces an uImage.bin binary. You need to use a microSD card with uBoot. uBoot will typically auto-boot from te SD card after a few seconds and you can press a key to interrupt and get a command line. In order to boot over network, do: {{{ U-Boot# dhcp 192.168.0.108:/helenos/uImage.bin ... U-Boot# bootm }}} where ''192.168.0.108'' is the IP address of the tftpboot server and ''/helenos/uImage.bin'' is the path to the HelenOS uboot image relative to the beginning of the tftpboot directory. }}} Boot over serial takes much longer: {{{ U-Boot# loady # after this command, start sending the uImage.bin from the terminal program using the ymodem protocol ... U-Boot# bootm }}} == Display / keyboard == The !BeagleBoard-xM has a PS/2 keyboard port, HDMI video output and USB. However, neither PS/2 nor USB is currently supported by HelenOS. TODO: What is the state of kfb and amdm37x_dispc? == Serial console output == Here is the expected serial console output from HelenOS 0.6.0: {{{ Texas Instruments X-Loader 1.5.0 (Mar 27 2011 - 17:37:56) Beagle xM Reading boot sector Loading u-boot.bin from mmc U-Boot 2011.03-rc1-00000-g9a3cc57-dirty (Apr 01 2011 - 17:41:42) OMAP36XX/37XX-GP ES2.1, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 512 MiB NAND: 0 MiB MMC: OMAP SD/MMC: 0 *** Warning - readenv() failed, using default environment In: serial Out: serial Err: serial Beagle xM Rev C No EEPROM on expansion board Die ID #6de200029ff80000016849a902025005 Hit any key to stop autoboot: 0 OMAP3 beagleboard.org # loady ## Ready for binary (ymodem) download to 0x80200000 at 115200 bps... C0(CAN) packets, 4 retries ## Total Size = 0x00a9787d = 11106429 Bytes OMAP3 beagleboard.org # bootm ## Booting kernel from Legacy Image at 80200000 ... Image Name: HelenOS-0.6.0 Image Type: ARM NetBSD Kernel Image (uncompressed) Data Size: 11106365 Bytes = 10.6 MiB Load Address: 80000000 Entry Point: 80000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK ## Transferring control to NetBSD stage-2 loader (at address 80000000) ... HelenOS bootloader, release 0.6.0 (Elastic Horse) Built on 2014-12-21 20:09:52 for arm32 Copyright (c) 2001-2014 HelenOS project Boot data: 0x80008000 -> 0x80a9783d Memory statistics 0x8000d000|0x8000d000: bootstrap stack 0x80008000|0x80008000: bootstrap page table 0x8000d6dc|0x8000d6dc: boot info structure 0x80a00000|0x80a00000: kernel entry point 0x8000dbe0|0x8000dbe0: kernel image (533160/147652 bytes) 0x80031ca4|0x80031ca4: ns image (163019/71242 bytes) 0x800432ee|0x800432ee: loader image (161521/70928 bytes) 0x800547fe|0x800547fe: init image (163707/71457 bytes) 0x80065f1f|0x80065f1f: locsrv image (170647/74824 bytes) 0x80078367|0x80078367: rd image (160990/70472 bytes) 0x800896af|0x800896af: vfs image (177104/78259 bytes) 0x8009c862|0x8009c862: logger image (166674/72926 bytes) 0x800ae540|0x800ae540: ext4fs image (228614/100234 bytes) 0x800c6cca|0x800c6cca: initrd image (29360128/10292083 bytes) Inflating components ... initrd ext4fs logger vfs rd locsrv init loader ns kernel . Booting the kernel... SPARTAN kernel, release 0.6.0 (Elastic Horse) Built on 2014-12-21 20:09:52 for arm32 Copyright (c) 2001-2014 HelenOS project Detected 1 CPU(s), 524288 KiB free memory Found DCache L1: 4-way, 128 sets, 64 byte lines (shifts: w29, s6) Found DCache L2: 8-way, 512 sets, 64 byte lines (shifts: w28, s6) Detected VFPv3+ with 32 regs Program loader at 0xf0080000 Kernel console ready (press any key to activate) RAM disk at 0x80bda000 (size 29360128 bytes) ns: HelenOS IPC Naming Service ns: Accepting connections init: HelenOS init loc: HelenOS Location Service rd: HelenOS RAM disk server rd: Found RAM disk at 0x80bda000, 29360128 bytes vfs: HelenOS VFS server logger: HelenOS Logging Service ext4fs: HelenOS ext4 file system server loc: Accepting connections vfs: Accepting connections logger: Accepting connections rd: Accepting connections ext4fs: Accepting connections init: Root filesystem mounted on / (ext4fs at bd/initrd) init: Starting /srv/tmpfs tmpfs: HelenOS TMPFS file system server tmpfs: Accepting connections init: Starting /srv/klog [kernel/other] note: Program loader at 0xf0080000 init: Starting /srv/locfs [kernel/other] note: RAM disk at 0x80bda000 (size 29360128 bytes) locfs: HelenOS Device Filesystem locfs: Accepting connections init: Starting /srv/taskmon taskmon: Task Monitoring Service init: Location service filesystem mounted on /loc (locfs) init: Temporary filesystem mounted on /tmp (tmpfs) init: Starting /srv/devman devman: HelenOS Device Manager devman: Accepting connections. root: HelenOS root device driver init: Unable to stat /srv/apic init: Unable to stat /srv/i8259 [devman] note: The `root' driver was successfully registered as running. init: Unable to stat /srv/icp-ic init: Unable to stat /srv/obio init: Unable to stat /srv/cuda_adb init: Unable to stat /srv/s3c24xx_uart init: Unable to stat /srv/s3c24xx_ts init: Starting /srv/loopip loopip: HelenOS loopback IP link provider loopip: Accepting connections. init: Starting /srv/ethip virt: HelenOS virtual devices root driver amdm37x: HelenOS AM/DM37x(OMAP37x) platform driver [devman] note: The `virt' driver was successfully registered as running. [devman] note: The `amdm37x' driver was successfully registered as running. [amdm37x] note: Base frequency: 13.0Mhz [virt] note: Registered child device `kfb' [amdm37x] note: MPU running at 600.0 MHz [amdm37x] note: CORE CLK running at 332.0 MHz [amdm37x] note: L3 interface at 166.0 MHz [amdm37x] error: USB TLL is not accessible [amdm37x] fatal: Failed to init USB TLL!. ethip: HelenOS IP over Ethernet service ethip: Accepting connections. init: Starting /srv/inetsrv kfb: HelenOS kernel framebuffer driver [devman] note: The `kfb' driver was successfully registered as running. kfb: Accepting connections inetsrv: HelenOS Internet Protocol service inetsrv: Accepting connections. init: Starting /srv/tcp tcp: TCP (Transmission Control Protocol) network module tcp: Accepting connections. init: Starting /srv/udp udp: UDP (User Datagram Protocol) service udp: Accepting connections. init: Starting /srv/dnsrsrv dnsres: DNS Resolution Service dnsres: Accepting connections. init: Starting /srv/dhcp dhcp: DHCP Service dhcp: Accepting connections. init: Starting /srv/nconfsrv nconfsrv: HelenOS Network configuration service [nconfsrv] note: Found IP link '24' [nconfsrv] note: Configure link net/loopback nconfsrv: Accepting connections. init: Starting /srv/clipboard clipboard: HelenOS clipboard service clipboard: Accepting connections init: Starting /srv/remcons remcons: HelenOS Remote console service init: Starting /srv/input input: HelenOS input service input: Accepting connections init: Starting /srv/output output: HelenOS output service output: Accepting connections init: Unable to stat /srv/hound init: Starting /srv/compositor compositor: HelenOS Compositor server compositor: Accepting connections init: Spawning /app/barber comp:0/winreg init: Spawning /app/vlaunch comp:0/winreg init: Spawning /app/vterm comp:0/winreg init: Starting /srv/console console: HelenOS Console service console: Accepting connections init: Spawning /app/getterm term/vc0 /loc --msg --wait -- /app/bdsh init: Spawning /app/getterm term/vc1 /loc --wait -- /app/bdsh init: Spawning /app/getterm term/vc2 /loc --wait -- /app/bdsh init: Spawning /app/getterm term/vc3 /loc --wait -- /app/bdsh init: Spawning /app/getterm term/vc4 /loc --wait -- /app/bdsh init: Spawning /app/getterm term/vc5 /loc --wait -- /app/bdsh kconsole> }}} {{{#!imagebox align=right, width=300px [[Image(bbxm2.jpg,center,280px, margin-left=10, margin-bottom=30, title="BeagleBoard-xM from the side showing serial (female DB-9) port")]] BeagleBoard-xM from the side showing serial (female DB-9) port }}}