<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>
<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>
<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">
<p class="details" style="font-style: italic; color: #737278;">
<a href="https://gitlab.rtems.org/atharvdubey101">Atharv Dubey</a> created an issue: <a href="https://gitlab.rtems.org/rtems/programs/gsoc/-/issues/86">#86</a>
</p>
<div class="md" style="position: relative; z-index: 1; color: #28272d; word-wrap: break-word;">
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #28272d; margin: 0 0 16px;" align="initial">
<a href="#background" aria-hidden="true" class="anchor" id="user-content-background" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Background</h2>
<p dir="auto" style="color: #28272d; margin: 0 0 16px;" align="initial">The STM32F4 BSP in RTEMS currently supports RCC, USART, and I2C, which is just enough to run RTEMS on the board. However, it lacks support for GPIO, SPI, and DMA, limiting its functionality.</p>
<p dir="auto" style="color: #28272d; margin: 0 0 16px;" align="initial">This project aims to expand the STM32F4 BSP by adding support for these peripherals. The goal is to implement basic GPIO configuration, SPI communication, and DMA transfers, making the BSP more useful for real applications.</p>
<p dir="auto" style="color: #28272d; margin: 0 0 16px;" align="initial">The implementation will take inspiration from the STM32H7 BSP and use HAL and LL drivers as a backend to keep it maintainable and aligned with other STM32 BSPs.</p>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #28272d; margin: 24px 0 16px;" align="initial">
<a href="#approach" aria-hidden="true" class="anchor" id="user-content-approach" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Approach</h2>
<ol dir="auto" style="text-align: initial; margin: 0 0 16px; padding: 0;">
<li style="margin-top: 0; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<p style="color: #28272d; margin: 0 0 16px;"><strong style="font-weight: 600; margin-top: 0;">GPIO Support</strong>: The STM32F4 BSP currently provides a GPIO driver in the bsp/io.h header. Adding a configuration option to enable the HAL layer would be beneficial, as it eliminates the need to work directly with register definitions. A generic GPIO interface with essential functionalities such as set_pin, get_pin, read_pin, and set_pin_exti, along with proper status code returns, would greatly improve usability within the STM32F4XX Boards.</p>
</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<p style="color: #28272d; margin: 0 0 16px;"><strong style="font-weight: 600; margin-top: 0;">SPI Support</strong>: RTEMS provides SPI support across various BSPs, such as arm/stm32h7 and BeagleBoard platforms, which serve as excellent references. Implementing SPI functionality for the STM32F4 BSP can be guided by the existing STM32H7 support and insights from Chapter 28 of the <a href="https://www.st.com/resource/en/reference_manual/dm00031020-stm32f405-415-stm32f407-417-stm32f427-437-and-stm32f429-439-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf" rel="nofollow noreferrer noopener" target="_blank">RM0090 reference manual</a>.</p>
</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<p style="color: #28272d; margin: 0 0 16px;"><strong style="font-weight: 600; margin-top: 0;">DMA Support</strong>: The STM32F4 series includes a dual-channel DMA controller (DMA1 and DMA2), with 8 independent streams and 8 channels per streams supporting peripherals like SPI,I2C.This task would involve setting up a proper generic BSP API for data transfer,Direction,Size,Stream,channels and interupt handling.</p>
</li>
</ol>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #28272d; margin: 24px 0 16px;" align="initial">
<a href="#knowledgeskills" aria-hidden="true" class="anchor" id="user-content-knowledgeskills" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Knowledge/Skills</h2>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0 0 16px; padding: 0;">
<li style="margin-top: 0; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">C, assembly</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">Hardware-level debugging</li>
</ul>
<h2 dir="auto" style="font-size: 1.5em; font-weight: 600; padding-bottom: .3em; border-bottom-width: 1px; border-bottom-color: #bfbfc3; border-bottom-style: solid; color: #28272d; margin: 24px 0 0;" align="initial">
<a href="#possible-mentors" aria-hidden="true" class="anchor" id="user-content-possible-mentors" style="margin-top: 0; float: left; margin-left: -20px; text-decoration: none; outline: none;"></a>Possible Mentors</h2>
</div>
</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #737278;">
—
<br>
<a href="https://gitlab.rtems.org/rtems/programs/gsoc/-/issues/86">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.rtems.org">gitlab.rtems.org</a>. <a href="https://gitlab.rtems.org/-/sent_notifications/ca319b8cb6664cfc7cbc81fce049204b/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.rtems.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.rtems.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Issue","url":"https://gitlab.rtems.org/rtems/programs/gsoc/-/issues/86"}}</script>
</p>
</div>
</body>
</html>