{"id":19338191,"url":"https://github.com/jserv/stm32f429-linux-builder","last_synced_at":"2026-01-29T06:31:47.628Z","repository":{"id":13964061,"uuid":"16664527","full_name":"jserv/stm32f429-linux-builder","owner":"jserv","description":"create a uClinux distribution for STM32f429 Discovery board","archived":false,"fork":false,"pushed_at":"2023-11-30T07:26:41.000Z","size":57,"stargazers_count":143,"open_issues_count":0,"forks_count":98,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-10-12T07:21:55.534Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jserv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-02-09T10:38:37.000Z","updated_at":"2025-09-09T15:11:53.000Z","dependencies_parsed_at":"2024-11-10T03:16:46.257Z","dependency_job_id":"767ba234-e49a-4ec8-84c4-5078c9cf8e76","html_url":"https://github.com/jserv/stm32f429-linux-builder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jserv/stm32f429-linux-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jserv%2Fstm32f429-linux-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jserv%2Fstm32f429-linux-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jserv%2Fstm32f429-linux-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jserv%2Fstm32f429-linux-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jserv","download_url":"https://codeload.github.com/jserv/stm32f429-linux-builder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jserv%2Fstm32f429-linux-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28866984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T05:56:06.453Z","status":"ssl_error","status_checked_at":"2026-01-29T05:55:57.668Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2024-11-10T03:16:35.436Z","updated_at":"2026-01-29T06:31:47.612Z","avatar_url":"https://github.com/jserv.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"stm32f429-linux-builder\n======================\nThis is a simple tool designed to create a uClinux distribution for STM32f429\nDiscovery board from [STMicroelectronics](http://www.st.com/). STM32F429 MCU\noffers the performance of ARM Cortex M4 core (with floating point unit) running\nat 180 MHz while reaching reasonably lower static power consumption.\n\n\nPrerequisites\n=============\nThe builder requires that various tools and packages be available for use in\nthe build procedure:\n\n* [OpenOCD](http://openocd.sourceforge.net/)\n  - OpenOCD 0.7.0 (and the 0.7.0-2 from Debian) can't write romfs to flash\n    because of a post-0.7.0-stable bug (bad flash detection on stm32f429).\n    You need to use 0.8.0 development version.\n```\n    git clone git://git.code.sf.net/p/openocd/code openocd\n    cd openocd\n    ./bootstrap\n    ./configure --prefix=/usr/local --enable-stlink\n    echo -e \"all:\\ninstall:\" \u003e doc/Makefile\n    make\n    sudo make install\n```\n* Set ARM/uClinux Toolchain:\n  - Download [arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2](https://sourcery.mentor.com/public/gnu_toolchain/arm-uclinuxeabi/arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2) from Mentor Graphics\n  - only arm-2010q1 is known to work; don't use SourceryG++ arm-2011.03\n```\n    tar jxvf arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2\n    export PATH=`pwd`/arm-2010q1/bin:$PATH\n```\n* [genromfs](http://romfs.sourceforge.net/)\n```\n    sudo apt-get install genromfs\n```\n* GNU Toolchain\n\n  - We extensively rely on the GNU toolchain to streamline our development process. At its core, we utilize the \"Make\" utility as the orchestration engine, automating the compilation and building of our source code. With a meticulously crafted Makefile, we define rules and dependencies necessary for compiling, linking, and generating binary images from our codebase.\n\n\n  - Open a terminal and update your package repository to ensure you have the latest information about available packages.\n\n```bash\n    sudo apt update\n```\n  - Use the package manager to install the GNU Toolchain, which includes tools like gcc, g++, and binutils.\n\n```bash\n    sudo apt-get install build-essential\n```\n\n  - After the installation is complete, you can verify it by checking the installed version of GCC.\n\n```bash\n    gcc --version\n```\n* STLINK Tools\n  - To facilitate programming and downloading firmware to the microcontroller, we use the ST-Link V2, a critical component in our project workflow. Here are the steps for its installation:\n\n```bash\n    cd ~\n    git clone https://github.com/texane/stlink.git\n    cd ./stlink\n    sudo apt-get install libusb-1.0-0-dev\n    sudo apt-get -y install cmake\n    sudo apt-get install libstlink1\n    make\n    cd build/Release\n    sudo make install\n```\n\n  - To verify the successful installation of ST-Link V2 and confirm its functionality, execute the following command:\n```bash\n    st-flash\n```\n  - Upon execution, the terminal should display a response indicating that ST-Link V2 is installed and ready for use.\n\nBuild Instructions\n==================\n* Simply execute ``make``, and it will fetch and build u-boot, linux kernel, and busybox from scratch:\n```\n    make\n```\n* Once STM32F429 Discovery board is properly connected via USB wire to Linux host, you can execute ``make install`` to flash the device. Note: you have to ensure the installation of the latest OpenOCD in advance.\n```\n    make install\n```\nBe patient when OpenOCD is flashing. Typically, it takes about 55 seconds.\nUse `make help` to get detailed build targets.\n\n\n## 64-bit System Support\nSince the ARM-2010q1 toolchain is intended for 32-bit systems and if your system is 64-bit, you'll need to enable 32-bit support and install necessary libraries. Execute the following commands:\n```bash\n    sudo dpkg --add-architecture i386\n    sudo apt-get update\n    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386\n```\n\n## \"timeconst.pl\" Script Error \nTo resolve the Perl-related error, we need to edit the \"timeconst.pl\" script. We can use a text editor like nano:\n```bash\n    nano uclinux/kernel/timeconst.pl\n```\nIn the \"timeconst.pl\" script, locate the problematic line (line 373) that checks for defined array values. Change the line from:\n```perl\n    if (! defined(@val)) {\n```\nto:\n```perl\n    if (!@val) {\n```\nThis modification adjusts the logic to check if the array @val is empty rather than if it’s defined. Save the changes to the \"timeconst.pl\" file and exit the text editor.\nAfter making the modification, attempt to build the kernel again:\n```bash\n    make\n```\nNow, the build process should proceed without encountering the Perl-related error, enabling the successful building of the kernel for our STM32F429 project.\n\nUSART Connection\n================\nThe STM32F429 Discovery is equipped with various USARTs. USART stands for\nUniversal Synchronous Asynchronous Receiver Transmitter. The USARTs on the\nSTM32F429 support a wide range of serial protocols, the usual asynchronous\nones, plus things like IrDA, SPI etc. Since the STM32 works on 3.3V levels,\na level shifting component is needed to connect the USART of the STM32F429 to\na PC serial port.\n\nMost PCs today come without an native RS232 port, thus an USB to serial\nconverter is also needed.\n\nFor example, we can simply connect the RX of the STM32 USART3 to the TX of\nthe converter, and the TX of the USART3 to the RX of the converter:\n* pin PC10 -\u003e TXD\n* pin PC11 -\u003e RXD\n\n\nReference Boot Messages\n=======================\n```\nU-Boot 2010.03-00003-g934021a ( Feb 09 2014 - 17:42:47)\n\nCPU  : STM32F4 (Cortex-M4)\nFreqs: SYSCLK=180MHz,HCLK=180MHz,PCLK1=45MHz,PCLK2=90MHz\nBoard: STM32F429I-DISCOVERY board,Rev 1.0\nDRAM:   8 MB\nUsing default environment\n\nHit any key to stop autoboot:  0 \n## Booting kernel from Legacy Image at 08020000 ...\n...\n\nStarting kernel ...\n\nLinux version 2.6.33-arm1 (jserv@venux) (gcc version 4.4.1 (Sourcery G++ Lite 2010q1-189) ) #2 Sun Feb 9 17:54:20 CST 2014\nCPU: ARMv7-M Processor [410fc241] revision 1 (ARMv7M)\nCPU: NO data cache, NO instruction cache\nMachine: STMicro STM32\n...\nVFS: Mounted root (romfs filesystem) readonly on device 31:0.\nFreeing init memory: 16K\nstarting pid 25, tty '/dev/ttyS2': '/bin/login -f root'\nWelcome to\n          ____ _  _\n         /  __| ||_|                 \n    _   _| |  | | _ ____  _   _  _  _ \n   | | | | |  | || |  _ \\| | | |\\ \\/ /\n   | |_| | |__| || | | | | |_| |/    \\\n   |  ___\\____|_||_|_| |_|\\____|\\_/\\_/\n   | |\n   |_|\n\nFor further information check:\nhttp://www.uclinux.org/\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjserv%2Fstm32f429-linux-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjserv%2Fstm32f429-linux-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjserv%2Fstm32f429-linux-builder/lists"}