Skip to content

Commit 4a9de2a

Browse files
authored
Merge branch 'main' into rpc_bridge_api_change
2 parents f36918e + 3bb4999 commit 4a9de2a

File tree

561 files changed

+12658
-4123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

561 files changed

+12658
-4123
lines changed

content/hardware/01.mkr/01.boards/mkr-wifi-1010/tutorials/mkr-battery-app-note/mkr-battery-app-note.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ We will go through the lines needed to create a Sketch to read the battery value
124124
**4.** We will now create a variable to store the maximum source voltage `max_Source_voltage` as well as the upper (`batteryFullVoltage`) and lower (`batteryEmptyVoltage`) values for the battery. We will also define the battery capacity as `batteryCapacity` so as to determine the charging current. Since we are using a 750 mAh battery in this example, we will set the value to `0.750`.
125125

126126
```arduino
127-
int max_Source_voltage;
127+
float max_Source_voltage;
128128
129129
float batteryFullVoltage = 4.2;
130130
float batteryEmptyVoltage = 3.3;
@@ -185,12 +185,13 @@ void loop()
185185
**13.** In order to convert `rawADC` into a voltage reading (`voltADC`) we will divide `rawADC` by 4095 and then multiply it by the analog reference voltage (3.3V).
186186

187187
```arduino
188-
voltADC = rawADC * (3.3/4095.0);
188+
voltADC = rawADC * 3.3 / 4096.0;
189189
```
190190

191-
**14.** The `voltADC` variable gives us the voltage sensed directly on the PB09 pin. This voltage is passed through the voltage divider, so it is a fraction of the actual battery voltage. We can then calculate the equivilanet battery voltage as follows.
191+
**14.** The `voltADC` variable gives us the voltage sensed directly on the PB09 pin. This voltage is passed through the voltage divider, so it is a fraction of the actual battery voltage. We can then calculate the equivalent battery voltage as follows.
192+
192193
```arduino
193-
voltBat = voltADC * (max_Source_voltage/3.3);
194+
voltBat = max_Source_voltage * rawADC / 4096.0;
194195
```
195196

196197
**15.** We can approximate the battery voltage to be proportional to the capacity level. Since the `map()` function does not work with float variables, we will manually map the values.
@@ -266,7 +267,7 @@ float voltBat; //calculated voltage on battery
266267
int R1 = 330000; // resistor between battery terminal and SAMD pin PB09
267268
int R2 = 1000000; // resistor between SAMD pin PB09 and ground
268269
269-
int max_Source_voltage; // upper source voltage for the battery
270+
float max_Source_voltage; // upper source voltage for the battery
270271
271272
// define voltage at which battery is full/empty
272273
float batteryFullVoltage = 4.2; //upper voltage limit for battery
@@ -303,8 +304,8 @@ void loop()
303304
{
304305
305306
rawADC = analogRead(ADC_BATTERY); //the value obtained directly at the PB09 input pin
306-
voltADC = rawADC * (3.3/4095.0); //convert ADC value to the voltage read at the pin
307-
voltBat = voltADC * (max_Source_voltage/3.3); //we cannot use map since it requires int inputs/outputs
307+
voltADC = rawADC * 3.3 / 4096.0; //convert ADC value to the voltage read at the pin
308+
voltBat = max_Source_voltage * rawADC / 4096.0; //we cannot use map since it requires int inputs/outputs
308309
309310
int new_batt = (voltBat - batteryEmptyVoltage) * (100) / (batteryFullVoltage - batteryEmptyVoltage); //custom float friendly map function
310311

content/hardware/02.uno/boards/uno-q/datasheet/datasheet.md

Lines changed: 116 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,120 @@ JMISC handles both domains: 1.8 V MPU lines sit alongside 3.3 V MCU signals (e.g
254254
MPU GPIO signals operate in the application processor's low-voltage domain (1.8 V). Ensure any connection to the microcontroller is level-compatible with its I/O voltage rail (3.3 V). For example, use a level shifter or an open-drain configuration with a pull-up to the microcontroller's I/O rail.
255255
</div>
256256

257+
<div style="page-break-after: always;"></div>
258+
259+
## Hardware Acceleration
260+
261+
<p style="text-align: justify;">The UNO Q provides hardware acceleration for both 3D graphics and video encoding/decoding through the integrated Adreno 702 GPU running at 845 MHz.</p>
262+
263+
### Graphics Acceleration
264+
265+
<p style="text-align: justify;">The Adreno 702 GPU provides hardware-accelerated 3D graphics rendering through open-source Mesa drivers. Applications can access GPU acceleration via standard graphics APIs, including OpenGL, OpenGL ES, Vulkan, and OpenCL.</p>
266+
267+
| **Graphics API** | **Driver** | **Hardware Support** | **Current Driver Version** | **Device Name** |
268+
|------------------|------------|----------------------|----------------------------|------------------------|
269+
| Desktop OpenGL | freedreno | - | 3.1 | FD702 |
270+
| OpenGL ES | freedreno | 3.1 | 3.1 | FD702 |
271+
| Vulkan | turnip | 1.1 | 1.0.318 | Turnip Adreno (TM) 702 |
272+
| OpenCL | Mesa | 2.0 | 2.0 | - |
273+
274+
<p style="text-align: justify;">The Adreno 702 GPU features unified memory architecture, sharing system RAM with the CPU for data transfer. It supports 64-bit memory addressing and provides direct rendering capabilities for optimal graphics performance.</p>
275+
276+
| **Parameter** | **Specification** |
277+
|--------------------------------|----------------------------------|
278+
| Clock Frequency | 845 MHz |
279+
| Memory Architecture | Unified (shared with system RAM) |
280+
| Available Video Memory | 1740 MB |
281+
| Memory Addressing | 64-bit |
282+
| Direct Rendering | Yes |
283+
| Maximum 2D Texture Size | 16384 × 16384 pixels |
284+
| Maximum 3D Texture Size | 2048³ voxels |
285+
| Maximum Cube Map Size | 16384 × 16384 pixels |
286+
| OpenGL Shading Language (GLSL) | 1.40 |
287+
| OpenGL ES Shading Language | 3.10 ES |
288+
289+
<p style="text-align: justify;">The Mesa graphics stack provides support for standard OpenGL extensions and features. Applications using OpenGL, OpenGL ES, or Vulkan will automatically use hardware acceleration without additional configuration. Standard graphics utilities such as <code>mesa-utils</code> and <code>vulkan-tools</code> work out of the box on the UNO Q.</p>
290+
291+
<div style="background-color: rgba(0, 170, 228, 0.2); border-left: 6px solid rgba(0, 120, 180, 1); margin: 20px 0; padding: 15px;">
292+
<strong>Note:</strong> The OpenGL and Vulkan drivers are available through the <strong>freedreno (OpenGL/OpenGL ES)</strong> and <strong>turnip (Vulkan)</strong> open-source Mesa drivers, providing transparency and community support. While the Adreno 702 hardware supports Vulkan 1.1, the current driver implementation provides Vulkan 1.0.318. <strong>There are no UNO Q-specific OpenGL or Vulkan examples. However, standard Mesa utilities and examples from the Mesa project can be used as references.</strong>
293+
</div>
294+
295+
### Video Acceleration
296+
297+
<p style="text-align: justify;">The Adreno 702 GPU includes dedicated hardware video encoders and decoders accessible through the <code>V4L2 (Video4Linux2)</code> API via <code>/dev/video0</code> and <code>/dev/video1</code> devices. Hardware acceleration is available for the following video codecs:</p>
298+
299+
| **Codec** | **Encoding** | **Decoding** | **GStreamer Element** |
300+
|--------------|--------------|--------------|---------------------------|
301+
| H.264 (AVC) | Yes | Yes | v4l2h264enc / v4l2h264dec |
302+
| H.265 (HEVC) | Yes | Yes | v4l2h265enc / v4l2h265dec |
303+
| VP9 | No | Yes | v4l2vp9dec |
304+
305+
<p style="text-align: justify;">The hardware video encoder and decoder offload compression and decompression tasks from the CPU to dedicated hardware, enabling efficient real-time video processing. This reduces system power consumption and allows the CPU to focus on application logic. Hardware acceleration is available for resolutions up to 1920×1080 (Full HD), including common formats such as 720p (1280×720).</p>
306+
307+
#### GStreamer Integration
308+
309+
<p style="text-align: justify;">The recommended approach for accessing hardware video acceleration is through <strong>GStreamer</strong>, which provides a high-level pipeline interface to the V4L2 devices. The following GStreamer elements provide hardware-accelerated video processing:</p>
310+
311+
For H.264 decoding, the following pipeline can be used:
312+
313+
```bash
314+
gst-launch-1.0 filesrc location=videos/xxxxx.mp4 \
315+
! qtdemux name=demux demux.video_0 ! queue ! h264parse ! v4l2h264dec \
316+
! videoconvert ! autovideosink
317+
```
318+
319+
For H.265 decoding, the following pipeline can be used:
320+
321+
```bash
322+
gst-launch-1.0 filesrc location=videos/xxxxx.mp4 \
323+
! qtdemux name=demux demux.video_0 ! queue ! h265parse ! v4l2h265dec \
324+
! videoconvert ! autovideosink
325+
```
326+
327+
For VP9 decoding, the following pipeline can be used:
328+
329+
```bash
330+
gst-launch-1.0 filesrc location=videos/xxxxx.webm \
331+
! matroskademux ! queue ! v4l2vp9dec \
332+
! videoconvert ! autovideosink
333+
```
334+
335+
For H.264 encoding, the following pipeline can be used:
336+
337+
```bash
338+
gst-launch-1.0 videotestsrc num-buffers=30 \
339+
! video/x-raw,width=1280,height=720,framerate=30/1 \
340+
! v4l2h264enc ! h264parse ! mp4mux ! filesink location=/tmp/output.mp4
341+
```
342+
343+
For H.265 encoding, the following pipeline can be used:
344+
345+
```bash
346+
gst-launch-1.0 videotestsrc num-buffers=30 \
347+
! video/x-raw,width=1920,height=1080,framerate=30/1 \
348+
! v4l2h265enc ! h265parse ! mp4mux ! filesink location=/tmp/output.mp4
349+
```
350+
351+
For concurrent encoding and decoding, the following pipeline can be used:
352+
353+
```bash
354+
gst-launch-1.0 -v videotestsrc num-buffers=1000 \
355+
! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
356+
! v4l2h264enc capture-io-mode=4 output-io-mode=2 ! h264parse \
357+
! v4l2h264dec capture-io-mode=4 output-io-mode=2 ! videoconvert \
358+
! autovideosink
359+
```
360+
361+
<div style="background-color: rgba(0, 170, 228, 0.2); border-left: 6px solid rgba(0, 120, 180, 1); margin: 20px 0; padding: 15px;">
362+
<strong>Developer Access:</strong> The V4L2 video devices are accessible through standard Linux APIs, allowing direct integration into C/C++ applications using libv4l2 or through higher-level frameworks like GStreamer, FFmpeg, or OpenCV with V4L2 backend support.
363+
</div>
364+
365+
### OpenCL Support
366+
367+
<p style="text-align: justify;">OpenCL 2.0 support is available through the Mesa implementation, allowing general-purpose GPU (GPGPU) computing for parallel processing tasks, scientific computing, and compute-intensive operations. The Adreno 702's OpenCL capabilities allow offloading compute-intensive workloads from the CPU to the GPU for improved performance.</p>
368+
369+
<div style="page-break-after: always;"></div>
370+
257371
## Peripherals
258372

259373
![UNO Q Peripherals](assets/ABX00162-ABX00173_headers.png)
@@ -538,7 +652,7 @@ For first time setting up:
538652

539653
1. Install Arduino App Lab [1], launch it, and connect UNO Q, use a **USB-C data** cable for PC-hosted mode, or simply power the board for SBC mode.
540654
2. The board will automatically check for updates. If there are any updates available, you will be prompted to install them. Once the update is finished, the Arduino App Lab[1] will need to be restarted.
541-
3. During the first setup, you will be asked to provide a name and password for the device (default is `arduino` / `arduino`). You will also be asked to provide Wi-Fi® credentials for your local network.
655+
3. During the first setup, you will be asked to provide a name and password for the device. You will also be asked to provide Wi-Fi® credentials for your local network.
542656
4. To test the board, navigate to an example App in the **"Examples"** section of the Arduino App Lab[1], and click on the "Run" button in the top right corner. You can also create a new App in the **"Apps"** section.
543657
5. The status of the App can be monitored in the console tab of the App.
544658

@@ -727,6 +841,7 @@ Lors de l’ installation et de l’ exploitation de ce dispositif, la distance
727841

728842
| **Date** | **Revision** | **Changes** |
729843
| :--------: | :----------: | ---------------------------------------------- |
844+
| 24/11/2025 | 4 | Add hardware acceleration section (graphics APIs, video codecs, OpenCL support); remove incorrect default password reference |
730845
| 05/11/2025 | 3 | Update operational information |
731846
| 27/10/2025 | 2 | Mechanical drawing and RTC power detail update |
732847
| 01/10/2025 | 1 | First release |
1.4 MB
Loading
293 KB
Loading
2.38 MB
Loading

0 commit comments

Comments
 (0)