Broadcom

Timeline: May - Dec 2020

I worked on a variety of interesting tasks during my co-op term at Broadcom. The areas I mainly got to improve myself in are as follows:

  • Computer Networking

    • Virtual networking, virtual routers
    • Linux networking tools
    • Performance testing using DPDK - it’s a cool tool, check it out! (tldr: it uses a user-space NIC driver instead of a kernel-space driver, making it very efficient at packet processing)
  • Linux

    • Recompiling the Linux kernel
      • via the make build tool
      • via building as a Debian package
      • cross-compiling to run on a different platform (ARM64) than it was built (x86)
    • Exploring ways to install Ubuntu & CentOS on the eMMC disk of Broadcom’s Stingray SoC products
      • via ISO images, rootfs tarball
      • fixing bugs in an existing script, adding error handling
    • Building Yocto images
      • lots of terminology around recipes!:)
      • also repeating the Yocto build process inside a Docker container
  • Storage

    • Designed and implemented a script for partition resizing of the eMMC disk on Stingray SoC
      • Implemented for efficient usage of the eMMC partitions
        • Goal: To open up more space for an empty data partition without having to reformat the existing partitions
      • The script can free up to %65 of the eMMC disk for the data partition
      • Worked on the procedure from start to end
      • Added various CLI options to customize the partition resizing procedure
        • Resizing if not all of the default partitions are available
        • Shrinking specified partitions
        • Shrinking a partition to a user-defined size (instead of the minimum possible size of the partition, which is the default behavior of the script)
      • Implemented detailed error handling
  • Bootloaders

    • Designed and implemented a methodology to add the GRUB bootloader to Stingray SoC, integrated GRUB-related changes with the existing boot procedure
      • In addition to the existing UEFI shell, added support for the GRUB bootloader as a UEFI application
      • Explored various methods for integrating GRUB with the Yocto filesystem in the best way possible
      • Added a modular pipeline to perform and maintain GRUB-related changes to an existing script responsible for updating the Yocto filesystem/kernel images
        • Created GRUB menu & submenu entries in an easy-to-navigate way for all ext4 filesystems installed on the eMMC, with kernel and DTB choices, mimicking the behavior of GRUB on common Linux systems such as Ubuntu
        • Created a default GRUB entry based on which filesystem/kernel/DTB was updated in the script, to make it easy to boot without navigating the GRUB menu
        • Made use of GRUB environment variables to store boot parameters, thus created a viable alternative to using UEFI variables
        • Prepared detailed docs to inform the team about the new procedure
Gökçe Dilek
Gökçe Dilek
Software Engineer & Open Source Contributor

Related