打印
[开发板与模块]

【ESK32-30519 + ESK32-21001测评】移植RT-Thread Nano

[复制链接]
1248|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 KING阿飞 于 2022-9-11 15:37 编辑

【ESK32-30519 + ESK32-21001测评】移植RT-Thread Nano

  首先,我们了解片上存储器是28 KB 片上 Flash 存储器用作指令 和 数据和选项存储 :16 KB 片上 SRAM,所以我选择小型的国产OS:RT-Thread Nano,作为项目评测OS。

一、移植过程

     我们首先下载官方的资源包,资源包点此下载(https://www.holtek.com.cn/documents/10179/052fe018-3579-46e4-a3a8-32e53fbc0033)。我们找到例程项目,.\project_template\IP\Example\MDK_ARMv537(这里由于我的keil是537的),点开项目文件。


  我们再安装RT-Thread Nano的离线安装包,离线安装包点此下载 (https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.5.pack)。我们安装完成后,找到包管理器。



  安装完毕后,需要修改的地方是:

  1、将ht32f5xxxx_01_it.c文件中的,HardFault_Handler,PendSV_Handler,SysTick_Handler注释

  2、修改RTOS中的board.c:

添加SysTick_Handler,调用rt_os_tick_callback。完善rt_hw_board_init。

/*
* Copyright (c) 2006-2019, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date           Author       Notes
* 2021-05-24                  the first version
*/

#include <rthw.h>
#include <rtthread.h>
#include "ht32.h"

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
/*
* Please modify RT_HEAP_SIZE if you enable RT_USING_HEAP
* the RT_HEAP_SIZE max value = (sram size - ZI size), 1024 means 1024 bytes
*/
#define RT_HEAP_SIZE (8*1024)

static rt_uint8_t rt_heap[RT_HEAP_SIZE];

RT_WEAK void *rt_heap_begin_get(void)
{
    return rt_heap;
}

RT_WEAK void *rt_heap_end_get(void)
{
    return rt_heap + RT_HEAP_SIZE;
}
#endif

void rt_os_tick_callback(void)
{
    rt_interrupt_enter();
   
    rt_tick_increase();

    rt_interrupt_leave();
}
u32 count = 0;

void SysTick_Handler(void)
{
        rt_os_tick_callback();
        count++;
}

/**
* This function will initial your board.
*/
void rt_hw_board_init(void)
{
    /*
     * TODO 1: OS Tick Configuration
     * Enable the hardware timer and call the rt_os_tick_callback function
     * periodically with the frequency RT_TICK_PER_SECOND.
     */
        
                /* SYSTICK configuration */
                SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);       // Default : CK_AHB/8
                SYSTICK_SetReloadValue(SystemCoreClock / 8/ RT_TICK_PER_SECOND); // (CK_AHB/8/1000) = 1ms on chip
                SYSTICK_IntConfig(ENABLE);                          // Enable SYSTICK Interrupt
                SYSTICK_CounterCmd(SYSTICK_COUNTER_CLEAR);
                SYSTICK_CounterCmd(SYSTICK_COUNTER_ENABLE);
                                
    /* Call components board initial (use INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
    rt_components_board_init();
#endif

#if defined(RT_USING_USER_MAIN) && defined(RT_USING_HEAP)
    rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#endif
}

#ifdef RT_USING_CONSOLE

static int uart_init(void)
{
#error "TODO 2: Enable the hardware uart and config baudrate."
    return 0;
}
INIT_BOARD_EXPORT(uart_init);

void rt_hw_console_output(const char *str)
{
#error "TODO 3: Output the string 'str' through the uart."
}

#endif

测试:

  HT32F_DVB_LEDInit(HT_LED1);
  HT32F_DVB_LEDInit(HT_LED2);
  HT32F_DVB_LEDInit(HT_LED3);
        
  HT32F_DVB_LEDOn(HT_LED1);
  HT32F_DVB_LEDOff(HT_LED2);
  HT32F_DVB_LEDOn(HT_LED3);


  while (1)                           /* Infinite loop                                                      */
  {
    HT32F_DVB_LEDToggle(HT_LED1);
                rt_thread_mdelay(500);
    HT32F_DVB_LEDToggle(HT_LED2);
                rt_thread_mdelay(500);
    HT32F_DVB_LEDToggle(HT_LED3);
                rt_thread_mdelay(500);
  }
二、效果

HT32F54253移植测试(https://www.bilibili.com/video/BV1qG411V7s6/?vd_source=9f29628860df295e99637badd1e5e6ae)



使用特权

评论回复

相关帖子

沙发
kkzz| | 2023-1-5 10:36 | 只看该作者
现在的操作系统分类真是太多了。              

使用特权

评论回复
板凳
gygp| | 2023-1-5 13:27 | 只看该作者
需要自己修改BootLoader吗?

使用特权

评论回复
地板
eefas| | 2023-1-6 17:46 | 只看该作者
有ucos或者freertos的例程吗?

使用特权

评论回复
5
elsaflower| | 2023-1-7 17:04 | 只看该作者
RT-Thread Nano的定时器怎么单独使用?

使用特权

评论回复
6
louliana| | 2023-1-9 14:48 | 只看该作者
需要自己修改BootLoader呢?

使用特权

评论回复
7
tabmone| | 2023-1-10 19:49 | 只看该作者
RT-Thread Nano如何添加插件?

使用特权

评论回复
8
elsaflower| | 2023-1-10 20:30 | 只看该作者
RT-Thread Nano移植难吗?

使用特权

评论回复
9
houjiakai| | 2023-3-2 11:24 | 只看该作者
现在需要自己移植RT-Thread的代码吗?

使用特权

评论回复
10
hudi008| | 2023-3-2 11:52 | 只看该作者
这个建一个模板,以后就省事了。              

使用特权

评论回复
11
zerorobert| | 2023-3-2 15:55 | 只看该作者
如何在RT-Thread建立定时任务?

使用特权

评论回复
12
biechedan| | 2023-3-3 21:31 | 只看该作者
RT-Thread可以使用定时器 的吗?

使用特权

评论回复
13
nomomy| | 2023-3-3 21:51 | 只看该作者
RT-Thread会占用多大空间?

使用特权

评论回复
14
wangdezhi| | 2023-3-3 22:00 | 只看该作者
网上有移植RT-Thread的教程吗?

使用特权

评论回复
15
bartonalfred| | 2023-3-7 14:11 | 只看该作者
RTThread将占用单片机多少空间?

使用特权

评论回复
16
yorkbarney| | 2023-3-7 20:10 | 只看该作者
这个是否需要调整stack和heap的大小?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

18

帖子

1

粉丝