前言
细心的朋友可能发现,RT-Thread的bsp目录下有一个simulator文件夹,simulator可以用于模拟开发板环境进行学习RT-Thread,本文将详细讲述如何在没有开发板环境下学习RT-Thread。使用visual studio 2015作为编译器,因为在这里我还搭建了虚拟LCD。
一、搭建RT-Thread simulator环境
1、下载RT-Thread源码
我是在Windows环境下开发的,使用git工具从码云克隆RT-Thread源代码,我克隆的是最新版本,这里推荐使用码云克隆,因为这样会快很多。
2、使用ENV工具运行scons命令生成Visual Studio工程
(1)、打开\rt-thread\bsp\目录下的simulator文件夹,可以看到有vs2005和vs2012工程模板,可以阅读readme.txt了解如何搭建环境。
(2)、使用ENV工具运行scons --target=vs -s
或者scons --target=vs
命令生成vs2005工程。
(3)、生成工程之后,发现多了一个如下的文件,使用VS2015打开它。
3、使用Visual Studio 2015编译
(1)、使用VS2015打开project.vcproj
文件,弹出如下窗口都点击确定。
(2)、按快捷键F5
进行编译,编译完成之后会弹出如下窗口,至此环境搭建完成,可以开始进行RT-Thread的学习了,需要添加自己的文件,可以在解决方案资源管理器添加。
二、编写一个线程测试
1、创建一个线程
(1)、打开application.c文件
,在里面添加如下代码创建一个线程。
void test_thread_entry(void *parameter)
{
while (1)
{
rt_kprintf("Hello RT-Thread Simulator\n");
rt_thread_mdelay(500);
}
}
void test_thread_start(void)
{
rt_thread_t test_thread = RT_NULL;;
test_thread = rt_thread_create("test",
test_thread_entry,
RT_NULL,
512,
RT_THREAD_PRIORITY_MAX / 2 - 5,
50);
if (test_thread != RT_NULL)
{
rt_thread_startup(test_thread);
}
}
(2)、将test_thread_start
放在rt_init_thread_entry
里面。
2、编译运行工程
可以看到运行效果如下,线程能正常创建。
三、移植虚拟LCD
1、下载虚拟LCD文件
https://download.csdn.net/download/Sanjay_Wu/12088833
https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=423298#lastpost
2、移植到VS工程
(1)、下载后解压压缩包文件,可以看到包含如下文件。
(2)、将这些文件放在simulator目录下。
(3)、关闭原先的VS工程,使用ENV工具重新运行scons --target=vs -s
命令生成工程。
(4)、打开新生成的VS工程,可以看到相关文件已经加入工程了。
3、初始化虚拟LCD
(1)、打开board.h
文件,在里面包含lcd.h
头文件。
(2)、打开board.c
文件,rt_hw_board_init
函数里面加入LCD初始化函数。
4、测试LCD显示字符串
(1)、在application.c
的test_thread_entry
加入这段代码。
lcd_show_string(100, 100, (8 * rt_strlen("Hello RT-Thread Simulator")), 16, "Hello RT-Thread Simulator", 16, 1);
(2)、按快捷键F5
编译工程,可以看到已经生成虚拟LCD界面,并显示字符串在上面。
5、修改虚拟LCD分辨率
(1)、打开lcd.h
文件,找到如下代码,可以根据实际需要修改分辨率大小。
(2)、修改后效果,例如把分辨率改为320*320。
#define LCD_WIDTH 240
#define LCD_HEIGHT 240