Lv_style的探究

1 lv_style的作用

lv_style的作用是用来为对象设置样式风格。

2 效果

如下图,比如下面的拖动条,是在设置了主题样式之后才有的这种视觉效果,其实LittlevGL默认就有一套固定的主题样式,如果你不设置主题样式,就会使用默认的主题样式,只是比较丑而已,也就是说,有了主题样式之后你才能看到这个对象的外观形态,否则是看不到的。

阅读更多
Lv_vdb的探究

1 lv_vdb 的作用

在 lv_conf 中,可以看到 LV_VDB_SIZ 是用来设置屏幕虚拟缓存的

2 效果

如果将 LV_VDB_SIZ的值设为0,在编译的时候就会提示必须关闭LIttlevGL 内置的抗锯齿功能。

  • 将屏幕虚拟缓存值设为0时,模拟器界面打开后出现闪烁的情况,并且界面上的图片无法显示,带Alpha通道的图标会显示不正常,锯齿变得很明显,而且动画效果也会消失。
  • 在屏幕虚拟缓存值为默认值时各项功能都正常。
阅读更多
win下LittlevGL模拟器环境的搭建

1. 环境配置

由于LittleVgl官方提供的Windows下的模拟环境为Eclipse工程,且模拟环境依赖SDL库运行

所以需要安装以下工具:

  • MinGW

  • JDK

  • Eclipse CDT

  • SDL2

1.1 安装MinGW

MinGW, 全称Minimalist GNU for Windows, 是GCC编译器和GNU Binutils在Windows平台的移植版本. MinGW-w64原是其分支, 后来成为独立发展的项目. 由于仅有MinGW-w64被GCC官方所支持, 而MinGW早已停止更新, 因此推荐使用MinGW-w64.

阅读更多
Slab

内存分配

传统的内存分配算法有两种,固定块大小分配法和块相连分配法:

  • 固定块大小分配法(如ucos ii的内存管理):分配速度快,算法实现简单,但由于只支持固定的一种或几种的固定块大小,使得内存空间利用率低,不够灵活,不适用于相对复杂的应用。
  • 块相连分配法:通过指针链表的形式能够实现比较灵活的不同内存大小的分配,但经常需要遍历整个链表,导致耗时长,且容易产生碎片。

而RT-Thread的slab内存分配算法是上述两种算法的折中,其分两层:

  • 底层是页分配器
  • 上层是slab分配器

其页分配器的本质其实一个以page为单位块相连的分配算法,而其slab分配器则相当个支持72种大小的固定块分配法,所以RT-Thread的slab内存分配算法很好的兼顾了内存分配时的快速性、灵活性、不易产生碎片等要求。而其底层是已page为单位的分配,所以特别适合带虚拟内存交换机制的系统。

阅读更多
计算机字符编码

计算机编码

历史背景

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节”。

再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机”

开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。

他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上00x10, 终端就换行,遇上0x07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0x20以下的字节状态称为”控制码”。

他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

阅读更多