RISC-V MCU应用方案之Little VGL(LVGL)移植(一)

一、Little VGL(LVGL)图形库简介

1. LVGL是一个开源图形库,提供完善的GUI开发组件,具有易于使用的图形元素,绚丽的界面和占用内存低等特点。LVGL官网

2. 几乎所有的MCU都能够支持LVGL的运行,显然您的MCU至少要满足以下参数:
1.16, 32 或 64 位微控制器或处理器
Clock: >=16MHz主频
Flash/ROM:至少> 64 kB (> 180 kB 可运行大部分显示库组件)
Stack: 至少> 2kB (推荐> 8 kB)
Dynamic data (heap): > 4 KB (如果工程使用多个组件,建议> 32 kB )。在 in lv_conf.h头文件中设置LV_MEM_SIZE参数。
Display buffer: > “Horizontal resolution” pixels (> 10 × “Horizontal resolution” is recommended)
One frame buffer in the MCU or in an external display controller
编译器支持C99 ,keil5中在c/c++选项框中勾选C99。Mountain River编译器无需额外设置。
以上的内存推荐设置是官方给定的,实际开发无需拘泥于具体的参数设置,要根据实际的工程灵活调整。另外,同一工程使用不同架构的编译器编译,其存储空间的使用量及分配也有一定差异。

3. 官方提供了众多Demo,多变的风格,总能找到它的应用场景。

二、CH32V307单片机简介

1. 单片机使用了RISC-V内核,遵循BSD License开源协议,使用RISC-V内核无需另外支付授权费用,是一个非常有前景的开源处理器架构。

 2. 使用Mountain River IED软件辅助开发

三、TFT LCD显示屏简介

1. TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。(显示原理,请自行搜索)大概长相为下图所示。

 2. TFT LCD接受8080端口时序控制(自行学习),重要引脚如下表所示

这里需要注意的一点是,对于TFT LCD显示器,其工作原理决定了需要背光,背光引脚在购买到的模块中,有的标注“BL”,有的直接连接vcc。RST引脚可以连接在单片机复位引脚,也可以连接一个GPIO口,实现软复位(初始化:推挽输出-SetBits,主程序:ResetBits+Delay_Ms(100)+SetBits)。

3. 显示屏驱动程序由厂家提供,您可以找到屏幕制造商,拨打技术电话索要例程。或者,您购买某一款stm32开发板,可参照开发板例程学习驱动程序的使用。

四、FSMC简介

1. FSMC(Flexible Static Memory Controller,可变静态存储控制器)是一种新型的存储器扩展技术,应用在外扩存储器(SRAM等),自动生成匹配外扩存储器的控制时序,降低了外扩驱动编写的难度。

2. FSMC模块框图(左)与存储块(右),FSMC可以控制8bit或16bit的SRAM,这个速度相比用GPIO模拟时序控制SRAM是非常快的。FSMC一些重要引脚如下表所示

3. 接下来,将分析如何使用FSMC控制TFT LCD。要实现一个系统控制另一个系统,重要的是如何实现引脚的对接。注意到TFT LCD与FSMC的引脚有些类似,需要处理两个有差异的引脚

对于TFT LCD而言,RS引脚高电平表示读写数据,低电平表示读写命令;对于FSMC而言A16-A23引脚表示读写地址。那么怎样实现用FSMC地址引脚控制RS呢?这要从FSMC与AHB总线地址的映射关系说起。

FSMC挂接在AHB总线上,AHB总线地址是按照8位寻址。当FSMC外接16位器件(TFT LCD)时,FSMC需要在程序中设置为16位,需要将AHB总线地址重新映射到FSMC。如下表所示

这种映射关系可以理解为一种约定,有点像结构体。即在FSMC看来的地址为“AHB结构体”的首地址,“AHB结构体”有两个8位成员。另一个有趣的现象是,FSMC地址为AHB总线地址右移一位。我们在程序中操作的地址实际上是AHB总线地址,所以要设置FSMC地址为001 1111 1111 1111 1111,在程序中应该设置地址为011 1111 1111 1111 1110 。

在数字电路中操作指令,例如操作FSMC的某个地址Ax引脚(x=16~23),一般有高(1)低(0)两种状态,这恰能与TFT LCD 中RS引脚(0:命令,1:数据)的二态性对应起来。若,我们将A17引脚接RS端口,通过控制A17引脚高低来控制RS引脚高低,实现FSMC与TFT LCD端口的对接,引脚对应如下表所示

 CH32V307只有NE1,所以表中的NEx应为NE1。

我们想让RS引脚为零(命令),则A17引脚必须为零;RS引脚为1(数据),则A17引脚必须为1。FSMC地址中A17引脚电平被横杠标识了,因为程序中的代码为AHB总线对应的地址。所以,FSMC令A17引脚为0的地址(00 1 1111 1111 1111 1111),在程序中应写为AHB对应地址(011 1111 1111 1111 1110),即0x3FFFE;FSMC令A17引脚为1的地址( 01 0 0000 0000 0000 0000),在程序中应写为AHB对应地址(100 0000 0000 0000 0000),即0x40000。在程序中实现A17与RS对应的代码片段如下

/* LCD addr */
typedef struct
{
    vu16 LCD_REG;
    vu16 LCD_RAM;
} LCD_TypeDef;

/* A17, Bank1, sector1 */
#define LCD_BASE        ((u32)(0x60000000 | 0x0003FFFE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)

由FSMC存储块图可知,块1的起始绝对地址为0x60000000,A17引脚相较于0x60000000的偏移量为 0x0003FFFE(AHB总线地址),所以LCD_BASE表示的是A17引脚的绝对偏移量。定义LCD为LCD_TypeDef类型结构体,并将LCD_BASE地址强制赋给LCD_TypeDef首成员LCD_REG。又因为LCD_TypeDef结构体成员类型为16位,所以成员地址LCD_REG:0x6003FFFE,LCD_RAM:0x60040000。在程序中通过调用结构体成员,就能控制RS了。

到此为止,FSMC与TFT LCD对应关系已经讲完了,以上属于个人理解,欢迎交流。

下一篇文章将分享移植一个LVGL案例到CH32V307单片机的操作过程。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: rt-thread是一个轻量级的实时操作系统,并且它可以被移植到不同的处理器架构上,包括RISC-V。移植rt-thread到RISC-V处理器需要进行一些步骤。 首先,需要根据RISC-V处理器的体系结构和指令集特性,进行rt-thread的适配和修改。这可能涉及到整理处理器的文件和寄存器初始化的代码,以匹配RISC-V的特性。 其次,需要编写RISC-V处理器对应的启动代码,这些代码的目的是初始化处理器并设置一些必需的环境变量,例如堆栈指针和中断向量表。 接下来,需要实现RISC-V处理器的硬件抽象层(HAL),包括时钟管理、中断管理、内存管理和设备驱动等。这些代码将负责处理处理器底层的硬件操作和通信。 然后,根据目标RISC-V处理器的内存映射和外设配置,进行rt-thread的内核配置和编译。这包括选择所需的组件、功能和驱动器,并进行相应的配置。 最后,在RISC-V处理器上运行rt-thread,并进行测试和调试。这可能包括验证系统的稳定性、性能和功能。如果有必要,还可以进行性能优化和问题修复。 通过以上步骤,就可以成功地将rt-thread移植RISC-V处理器上,并实现在该处理器上运行实时操作系统的功能。这样可以为RISC-V处理器提供更多的应用和开发选择。 ### 回答2: rt-thread是一个开源的实时操作系统,支持多种硬件平台。而RISC-V是一种基于开源指令集架构的处理器架构。要将rt-thread移植RISC-V平台,需要进行以下步骤: 1. 首先,需要了解RISC-V处理器的初步知识,包括其指令集、寄存器、内存架构等等。这样才能更好地理解RISC-V的工作方式和特性。 2. 接下来,需要根据RISC-V处理器的特点,对rt-thread进行修改和适配。这包括对内核的调度器、中断处理、任务管理等进行适配,以使其能够在RISC-V平台上正常工作。 3. 在适配过程中,需要根据RISC-V的指令集架构,对rt-thread的汇编代码进行修改。这涉及到对寄存器、堆栈、内存访问等方面的调整,以确保rt-thread能够在RISC-V上正确运行。 4. 还需要根据RISC-V平台的硬件特性,对rt-thread的设备驱动进行适配。这包括对串口、GPIO、定时器等外设的驱动程序进行修改,以使其能够与RISC-V平台上的硬件相匹配。 5. 最后,进行一系列的测试和验证,确保rt-thread在RISC-V平台上的正常运行。这包括对实时性、稳定性、性能等方面进行测试,以验证移植的正确性和可靠性。 综上所述,rt-thread移植RISC-V平台需要对rt-thread进行修改和适配,同时还需要对汇编代码和设备驱动程序进行调整。最终需要进行测试和验证,以确保rt-thread在RISC-V平台上的正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值