14个版本 (7个破坏性更新)
使用旧Rust 2015
0.9.0 | 2019年8月30日 |
---|---|
0.8.1 | 2019年7月13日 |
0.8.0 | 2019年6月29日 |
0.7.4 | 2018年10月22日 |
0.4.0 | 2018年7月27日 |
#565 in 嵌入式开发
每月 40 次下载
在 2 软件包 中使用
1MB
26K SLoC
VGA Framebuffer
此软件包实现了在嵌入式微控制器上执行基本的VGA文本输出,无需使用任何其他定时器外设和几个GPIO引脚。
此软件包编写为硬件无关。
- 您需要提供一个实现
Hardware
特性的对象。 - 必须在每行扫描的开始处调用函数
isr_sol()
,例如使用定时器中断。 - 然后这将调用给定的
Hardware
对象的write_pixels()
函数,为该扫描行中的每个八位(或8像素块)提供RGB值。 - 这些像素值应在适当的时候(例如当
line_start
定时器触发时)缓冲(例如在SPI FIFO中)并发送到屏幕。 configure()
回调为您提供了所有这些适当的时序。
示例代码使用ANSI转义序列渲染到控制台,以设置颜色并打印适当颜色的 '█' 字符。显然,在具有真实VGA输出的系统上,您需要将像素以0V到0.7V之间的模拟值发送到显示,并带有适当的水平和垂直同步信号。这留给读者作为特定平台的练习,但 Monotron 是一个特定嵌入式平台的示例。
规格
- 800 x 600 @ 60 Hz 输出信号,带有40 MHz像素时钟
- 文本模式下的有效分辨率 400 x 600(以半速运行像素时钟)
- 8色RGB输出(红色、绿色、蓝色、青色、品红色、黄色、黑色和白色)
- 8像素 x 16像素位图字体,来源于FreeBSD
- MS-DOS CodePage 850字符集
- 48列 x 36行文本输出
- 支持双高度文本
- 每个字符单元存储一个前景/背景对
- 单缓冲
- 通过指针修改共享内存,但最坏情况是轻微的屏幕闪烁,在下一帧中修复
- 可选的Mono 384x288帧缓冲区,使用文本模式属性着色。
- 将每行水平线翻倍以降低内存使用
- 比文本模式多使用13,824字节
- 会遭受严重的属性冲突,就像ZX Spectrum :)
- 可以为图形模式设置起始和结束扫描线,以允许具有降低内存消耗的混合文本/图形分屏
由于没有足够的CPU处理能力在40 MHz下渲染彩色像素,像素是双宽的。我在一个分支中有一个实验性的40 MHz支持,但只有黑白。
在搭载80 MHz Cortex-M4F核心的德州仪器Tiva-C TM4C123上测试过Monotron。
即将推出...
- 可选的3位/像素RGB 192x288帧缓冲区模式。
- 比文本模式多使用20,736字节。
- 没有属性冲突,但分辨率减半。
- 8像素 x 8像素字体,更适合图形模式
- 无边框80列 x 25行单色文本模式(使用10x24位图字体)
贡献
我很乐意接受补丁以启用其他分辨率和/或其他文本分辨率。