{"id":28139105,"url":"https://github.com/broadcom/aeolus","last_synced_at":"2025-08-25T00:48:09.827Z","repository":{"id":21963929,"uuid":"25288642","full_name":"Broadcom/aeolus","owner":"Broadcom","description":"Bootloader for bcm3384","archived":false,"fork":false,"pushed_at":"2017-05-24T22:15:07.000Z","size":12378,"stargazers_count":39,"open_issues_count":0,"forks_count":8,"subscribers_count":13,"default_branch":"master","last_synced_at":"2023-02-26T12:26:31.649Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Broadcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-16T06:04:47.000Z","updated_at":"2022-12-01T08:46:32.000Z","dependencies_parsed_at":"2022-08-29T10:10:19.759Z","dependency_job_id":null,"html_url":"https://github.com/Broadcom/aeolus","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broadcom%2Faeolus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broadcom%2Faeolus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broadcom%2Faeolus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Broadcom%2Faeolus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Broadcom","download_url":"https://codeload.github.com/Broadcom/aeolus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254190389,"owners_count":22029639,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-14T17:16:27.341Z","updated_at":"2025-05-14T17:19:15.931Z","avatar_url":"https://github.com/Broadcom.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"Aeolus: a program to boot the Zephyr MIPS\n=========================================\n\n## Compiling\n\n### Prerequisites\n\nInstall the \u003ccode\u003emips-linux-gcc\u003c/code\u003e cross toolchain:\n\n    wget https://github.com/Broadcom/stbgcc-4.8/releases/download/stbgcc-4.8-1.0/stbgcc-4.8-1.0.tar.bz2\n    mkdir -p /opt/toolchains\n    tar -C /opt/toolchains -jxf stbgcc-4.8-1.0.tar.bz2\n\n(or pick any other suitable 32-bit MIPS BE toolchain\n[from this list](http://www.linux-mips.org/wiki/Toolchains))\n\nInstall the Device Tree Compiler, either\n[from source](http://www.devicetree.org/Device_Tree_Compiler) or from a\ndistribution package, e.g.\n\n    apt-get install device-tree-compiler\n    yum install dtc\n\nInstall the other miscellaneous development tools:\n\n    apt-get install build-essential texinfo\n    yum groupinstall \"Development Tools\"\n\nThen clone the bootloader and kernel source trees:\n\n    git clone git://github.com/Broadcom/aeolus.git\n    git clone git://github.com/Broadcom/stblinux.git linux\n\n### Build process\n\nTypical usage:\n\n    export PATH=/opt/toolchains/stbgcc-4.8-1.0/bin:$PATH\n    cd aeolus\n    make zephyr.img\n\nThis will build a BCM3384 kernel with default options, targeted for the\nBCM93384WVG reference platform, and using \u003ccode\u003emr-rootfs.cpio.xz\u003c/code\u003e\nas an initramfs.\n\n## Flashing images\n\nAfter building zephyr.img, copy it to a TFTP server.  Then make sure your\nserial ports are set up correctly:\n\n* UART0 is the CM console.  Typically this is broken out on a daughtercard;\nthe daughtercard is connected to the mainboard with a 14-pin cable.  The\ndaughtercard should provide either a standard RS232 female DB-9, or a USB\n'B' port connected to an FTDI converter chip.\n* UART1 is the Linux console.  This might just be a 4-pin header with 3.3V,\nground, and 3.3V TX/RX lines.\n\nBoth ports should be configured for 115200 8N1, no flow control.\n\nTo flash a new zephyr.img:\n\n1. Wait for the \u003ccode\u003eEnter '1', '2', or 'p'\u003c/code\u003e prompt on the CM\nconsole while booting\n2. Hit 'p' and then set up your IP addresses when prompted\n3. For \u003ccode\u003eInternal/External phy?\u003c/code\u003e you can answer 'a' for \"auto\"\n4. From the menu, choose 'd' for \u003ccode\u003eDownload and save to flash\u003c/code\u003e\n5. Enter TFTP server information\n6. For \u003ccode\u003eDestination image\u003c/code\u003e, choose '3'\n7. Answer 'y' to \"Store parameters to flash\"\n\nAfter the board reboots, it should bring up the Zephyr CPU and you should\nsee Linux booting on UART1.\n\nIf you have [ip2ser](http://ip2ser.sf.net) set up to talk to the CM console\non localhost:2300 and control power to the target board, you can run\n[misc/flash-3384.expect](misc/flash-3384.expect) to automate the flashing\nprocess.  Edit the IP addresses at the top of the file to taste.\n\nSample boot logs: [CM console](misc/cm-log.txt),\n[Linux console](misc/linux-log.txt).\n\n## Boot sequence\n\nThe BCM3384 SoC has two onchip big-endian MIPS32R1 processors:\n\n* One Viper (BMIPS4355) responsible for the cable modem (CM) subsystem.\nThis runs an RTOS (eCos).\n* One Zephyr (BMIPS5000) application processor that can run SMP Linux, Samba\nservices, CUPS, netfilter based routing, etc.\n\nWhen the chip is powered on, the Viper is released from reset and performs\na number of helpful tasks, including:\n\n* Configure the DRAM controller, console UART, pinmux, and other basic\nperipherals\n* Figure out which CM image to load from flash, and start it up\n* Copy the Linux image from flash to DRAM\n* Write the user-configurable kernel command line to a fixed memory address\n* Release the Zephyr CPU from reset\n\nAeolus implements a minimal bootloader for the Zephyr, handling the following\nfunctions:\n\n* Initialize L1/L2 caches and processor configuration\n* Configure BCM3384-specific USB hardware\n* Configure BCM3384-specific memory hardware\n* Pass a device tree blob (DTB) describing the BCM3384 register layout to\nthe kernel\n* Determine the Zephyr-owned memory ranges, and add them into the DTB\n\"memory@0\" node\n* Copy the kernel command line passed from CM into the DTB chosen bootargs\nproperty\n\nWhen you build zephyr.img, the bootloader image is concatenated with a kernel\nimage (linked to run at virtual address 0x8001_0000).  When the Zephyr\nCPU is released from reset, it first runs Aeolus to perform basic setup and\nthen jumps into a mostly-stock MIPS Linux kernel.\n\nA BCM3384 DTB blob is built into both Aeolus and the kernel.  The kernel's\nbuiltin DTB is used as a fallback only.  The DTB provided by Aeolus will\naccurately reflect the system's memory configuration and the kernel command\nline arguments configured through the CM console.  It is also possible for\ndifferent builds of Aeolus for different boards to incorporate board-specific\nchanges in device tree (e.g. leaving out the OHCI/EHCI nodes if the board has\nno USB ports).\n\nThe memory map is documented in [map.lds.S](map.lds.S).\n\n## Licensing\n\nAeolus and ProgramStore are licensed under GPLv2.\n\nThis program incorporates portions of newlib (BSD), libfdt (GPLv2/BSD),\nand gcc (GPLv3 + runtime exception).  Various macros and code snippets\nwere copied from the Linux tree (GPLv2).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroadcom%2Faeolus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbroadcom%2Faeolus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbroadcom%2Faeolus/lists"}