> For the complete documentation index, see [llms.txt](https://dev.solid-run.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.solid-run.com/intel/braswell/sbc-platform/ib8000-ib3710-stm32-overview.md).

# IB8000/IB3710 STM32 Overview

## IB8000/IB3710 STM32 Overview

### Revision and Notes

| **Date**    | **Owner** | **Revision** | **Notes**       |
| ----------- | --------- | ------------ | --------------- |
| 18 Apr 2022 |           | 1.0          | Initial release |

## STM32 / MCU

### Hardware

**Overview**

![](/files/xKWEenmX9tV16HzVEgVC)

The STM32 family of 32‑bit Flash microcontrollers based on the ARM® Cortex®‑M processor is

designed to offer new degrees of freedom to MCU users. It offers a 32‑bit product range that combines very high performance, real-time capabilities, digital signal processing, and low‑power, low‑voltage operation while maintaining full integration and ease of development.

The **SR IB-E8000 and IB-N3710** got the **STM32F042K4U6** on the MicroSom.

| Documents              | Link                                                                                           |
| ---------------------- | ---------------------------------------------------------------------------------------------- |
| STM32 reference manual | [Download](https://developer.solid-run.com/wp-content/uploads/2018/10/stm32-en.dm00031936.pdf) |
| STM32 datasheet        | [Download](https://developer.solid-run.com/wp-content/uploads/2018/10/stm32.pdf)               |

The STM32F042x microcontrollers incorporate the high-performance ARM Cortex-M0 32-bit RISC core operating at a 48 MHz frequency, high-speed embedded memories (up to 32 Kbytes of Flash memory and 6 Kbytes of SRAM), and an extensive range of enhanced peripherals and I/Os. All devices offer standard communication interfaces (one I2C, two SPIs/one I2S, one HDMI CEC and two USARTs), one USB Full speed device (crystal-less), one CAN, one 12-bit ADC, four general-purpose 16-bit timers, a 32-bit timer and an advanced-control PWM timer.\
(source: datasheet)

STM32 supports HDMI CEC and other features.

**STM32 Schematics on the MicroSom**

* MCU\_BOOT0 – selects boot from USB or normal – GPIO 349
* MCU\_RESET – resest the MCU – GPIO 351
* Both signals are natively pulled up high from the processor

Code-Example for controlling the GPIOs via Linux

```
cd /sys/class/gpio
echo 349 > export
cd gpio349
echo 0 > value
echo 1 > direction
cat gpio349
```

![](/files/DOHtPFAcAO50vAes8BTn)

**MCU Wakeup circuit**

The MCU got the ability to wake up the CPU from sleep mode.\
Notice that this is an example implementation on the SolidPC carrier.

Level shifts through resistors from 3.3v to 1.8v

![](/files/thuCXIdIZ3GV6hWy3Tkw)

**Testpoints**

![](/files/jiMpIohLNJk1Kk7iUMsS)

Notice that this is an example implementation on the SolidPC carrier.\
**MCU: STM32: PA1..PA4 pins**

Testpoint TP19,TP20 and TP18 is located next to UART1 (covered when the Som is assembled)\
TP21 (left one) can be found on the opposite side of the PCB.\
Additional Testpoint-information: [SolidPC Testpoints](/intel/braswell/sbc-platform/solidpc-testpoints.md)

#### Software

Thanks to our community developer GDA who created a working firmware for the stm32.

The firmware, libcec port, RainshadowAdapter-work is not maintained by Solid-Run.

**Firmware STM32**

The latest .bin file can be found here:

```
https://github.com/gdachs/cecbridge/raw/rainshadow/Debug/CECbridge.bin
```

**LibreElec (Kodi)**

All work concerning LibreElec can be found here:

```
https://github.com/vpeter4/LibreELEC.tv/commits/solidpc
```

The easiest way to get CEC running under Kodi is to use the latest SolidPC LibreElec image here:

```
http://vpeter.libreelec.tv/solidpc/
```

flash it to your storage and run

```
flashStm /usr/share/solidpc/CECbridge.bin
```

The flash process will take some time.

After a reboot cec functionality should work.

**Rainshadow/RainConf**

RainConf communicates directly with the STM32. (All processes need to be stopped which use LibCEC)

How to build rainconf:

**Hint: RainConf needs P8-Platform library**\
Which can be found here: <https://launchpad.net/~yavdr/+archive/ubuntu/main>

```
git clone https://github.com/gdachs/rainconf.git
cd rainconf 
mkdir build
cd build 
cmake ../src
make 
sudo make install
```

**LibCEC**

```
git clone https://github.com/gdachs/libcec.git
cd libcec
git checkout rainshadow
mkdir build
cd build
cmake -DHAVE_RAINSHADOW_API=1 ..
make  
sudo make install
```

#### Links

* [STM32 Website](http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus.html?querycriteria=productId=SC1169)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://dev.solid-run.com/intel/braswell/sbc-platform/ib8000-ib3710-stm32-overview.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
