Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cbiffle/m4vgalib
VGA-style video generation for STM32F4 processors
https://github.com/cbiffle/m4vgalib
Last synced: 18 days ago
JSON representation
VGA-style video generation for STM32F4 processors
- Host: GitHub
- URL: https://github.com/cbiffle/m4vgalib
- Owner: cbiffle
- License: bsd-2-clause
- Archived: true
- Created: 2014-05-11T05:00:43.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-06-11T19:28:35.000Z (over 1 year ago)
- Last Synced: 2024-07-31T22:43:35.875Z (3 months ago)
- Language: C++
- Size: 200 KB
- Stars: 102
- Watchers: 6
- Forks: 12
- Open Issues: 0
-
Metadata Files:
- Readme: README.mkdn
- License: LICENSE
Awesome Lists containing this project
README
This is my original, C++-based attempt at embedded high quality video. For a
newer, more featureful, and far more robust version, see:https://github.com/cbiffle/m4vga-rs
Original Readme
===============This library provides high-quality, high-resolution color graphics output from
STM32F40x/1x microcontrollers, using very few external components.This repository contains only the reusable library bits. To try it out, or just
see an example of how it's used, see the [m4vgalib-demos] repository.Brief Overview
==============The STM32F407 is a Cortex-M4 microcontroller that has neither a video
controller, nor enough RAM for a framebuffer at any reasonable resolution.m4vgalib works around this to produce stable 800x600 (or 640x480) video with
256 colors. Instead of a video controller, m4vgalib uses two timers, one
DMA controller, and a GPIO port. Instead of a framebuffer, m4vgalib uses a
modular rasterization system that lets applications "race the beam" -- prepare
video output on the fly from some compact representation.Out of the box, m4vgalib includes canned rasterizers for both palettized pixel
graphics and attributed text graphics, with various formats and depths.
Applications can change rasterizers at any scanline to achieve split-screen or
raster effects.Even though m4vgalib is maintaining a 320Mb/s data stream on a processor not
designed for anything of the sort, most of the CPU and hardware resources are
left available to applications. To avoid introducing jitter, applications must
only agree to keep their filthy hands off AHB1 during certain phases of
execution. (Interrupts are available to notify the application of this.)The application runs as a "thread" parallel to m4vgalib, and it's even possible
to run an application using an RTOS with a bit of porting effort. (Hint: the
RTOS must coordinate with m4vgalib on the use of the PendSV handler.)[m4vgalib-demos]: https://github.com/cbiffle/m4vgalib-demos