硬汉嵌入式论坛

 找回密码
 立即注册
查看: 527|回复: 17
收起左侧

[RTOS] RTX5全家桶中间件源码移植方式,从8.0版本升级至8.2版本相关注意事项(2025-12-28,相关问题更新到各个楼层了)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
发表于 2025-12-28 02:01:14 | 显示全部楼层 |阅读模式

直接替换原有文件后,发现头文件找不到了,简单整理下升级过程中遇到的问题

1、文件系统,网络协议栈和USB协议栈文件夹下相关头文件位置被调整

12.png
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-28 11:50:37 | 显示全部楼层
确实有点麻烦,部分C文件改成了H文件,并且一些配置也修改了
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-29 02:01:37 | 显示全部楼层
折腾了一天,移植完成了,改动的地方确实比较多,当前编译已经没有错误,白天了测试下各个功能是否正常

123.png
回复

使用道具 举报

3

主题

121

回帖

130

积分

初级会员

积分
130
发表于 2025-12-29 09:14:34 | 显示全部楼层
eric2013 发表于 2025-12-29 02:01
折腾了一天,移植完成了,改动的地方确实比较多,当前编译已经没有错误,白天了测试下各个功能是否正常

...

什么配置的电脑,8秒就编译完了
回复

使用道具 举报

719

主题

3771

回帖

5953

积分

论坛元老

积分
5953
发表于 2025-12-29 09:54:25 | 显示全部楼层
eric2013 发表于 2025-12-29 02:01
折腾了一天,移植完成了,改动的地方确实比较多,当前编译已经没有错误,白天了测试下各个功能是否正常

...

mdk 升级到 543 了是不是变异速度会提升一些 ?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-29 10:10:44 | 显示全部楼层
萌军总司令 发表于 2025-12-29 09:14
什么配置的电脑,8秒就编译完了

没这么快,是仅修改了一个小地方。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-29 10:11:03 | 显示全部楼层
hpdell 发表于 2025-12-29 09:54
mdk 升级到 543 了是不是变异速度会提升一些 ?

好像没怎么提升,跟之前的版本差不多。
回复

使用道具 举报

4

主题

1481

回帖

1493

积分

至尊会员

积分
1493
发表于 2025-12-29 13:18:58 | 显示全部楼层
硬汉大哥,功能基本正常吧?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-30 01:39:16 | 显示全部楼层
morning_enr6U 发表于 2025-12-29 13:18
硬汉大哥,功能基本正常吧?

还有几个功能没测试完毕,小问题不少,再逐一修正。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:08:44 | 显示全部楼层
默认大小只给512,小了,是会溢出


1234.png
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:22:18 | 显示全部楼层
bsp_fmc_nand_flash.c 加大k检测,否则容易检测出问题



/* 必须等待,否则读出数据异常, 此处应该判断超时*/
#define WAIT_BUSY()        {        \
         uint16_t k;         \
        for (k = 0; k < 2000; k++)        \
        {        \
                if ((BUSY_GPIO->IDR & BUSY_PIN) == 0) break;        \
        }        \
        for (k = 0; k < 20000; k++)        \
        {        \
                if ((BUSY_GPIO->IDR & BUSY_PIN) != 0) break;        \
        }        \
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:29:45 | 显示全部楼层
USBD_STM32.c文件修改,要增加初始化才行

/**
  \fn          int32_t USBDn_Initialize (const RO_Info_t * const        ptr_ro_info,
                                         ARM_USBD_SignalDeviceEvent_t   cb_device_event,
                                         ARM_USBD_SignalEndpointEvent_t cb_endpoint_event)
  \brief       Initialize USB Device Interface.
  \param[in]   ptr_ro_info        Pointer to USBD RO info structure (RO_Info_t)
  \param[in]   cb_device_event    Pointer to \ref ARM_USBD_SignalDeviceEvent
  \param[in]   cb_endpoint_event  Pointer to \ref ARM_USBD_SignalEndpointEvent
  \return      \ref execution_status
*/
static int32_t USBDn_Initialize (const RO_Info_t * const        ptr_ro_info,
                                 ARM_USBD_SignalDeviceEvent_t   cb_device_event,
                                 ARM_USBD_SignalEndpointEvent_t cb_endpoint_event) {

  // Clear run-time info
  memset((void *)ptr_ro_info->ptr_rw_info, 0, sizeof(RW_Info_t));

  // Register callback functions
  ptr_ro_info->ptr_rw_info->cb_device_event   = cb_device_event;
  ptr_ro_info->ptr_rw_info->cb_endpoint_event = cb_endpoint_event;

  // Set driver status to initialized
  ptr_ro_info->ptr_rw_info->drv_status.initialized = 1U;
                                    
  hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
  hpcd_USB_OTG_FS.Init.dev_endpoints = 8;
  hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
  hpcd_USB_OTG_FS.Init.dma_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
  hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.battery_charging_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;
  hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
  hpcd_USB_OTG_FS.Init.ep0_mps = 0x40;

  return ARM_DRIVER_OK;
}

回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:31:32 | 显示全部楼层
USBH_STM32.c修改

/**
  \fn          int32_t USBHn_Initialize (const RO_Info_t * const    ptr_ro_info,
                                         ARM_USBH_SignalPortEvent_t cb_port_event,
                                         ARM_USBH_SignalPipeEvent_t cb_pipe_event)
  \brief       Initialize USB Host Interface.
  \param[in]   ptr_ro_info    Pointer to USBD RO info structure (RO_Info_t)
  \param[in]   cb_port_event  Pointer to \ref ARM_USBH_SignalPortEvent
  \param[in]   cb_pipe_event  Pointer to \ref ARM_USBH_SignalPipeEvent
  \return      \ref execution_status
*/
static int32_t USBHn_Initialize (const RO_Info_t * const    ptr_ro_info,
                                 ARM_USBH_SignalPortEvent_t cb_port_event,
                                 ARM_USBH_SignalPipeEvent_t cb_pipe_event) {
                                    
  uint8_t max_ch;
      
  hhcd_USB_OTG_HS.Instance = USB_OTG_HS;
  hhcd_USB_OTG_HS.Init.Host_channels = 16;
  hhcd_USB_OTG_HS.Init.speed = HCD_SPEED_FULL;
  hhcd_USB_OTG_HS.Init.dma_enable = DISABLE;
  hhcd_USB_OTG_HS.Init.phy_itface = USB_OTG_EMBEDDED_PHY;
  hhcd_USB_OTG_HS.Init.Sof_enable = DISABLE;
  hhcd_USB_OTG_HS.Init.low_power_enable = DISABLE;
  hhcd_USB_OTG_HS.Init.use_external_vbus = ENABLE;
                                    
  // Clear run-time info
  memset((void *)ptr_ro_info->ptr_rw_info, 0, sizeof(RW_Info_t));

  // Calculate maximum number of available Host Channels
  max_ch = USBH_MAX_PIPE_NUM;
  if (max_ch > ptr_ro_info->ptr_hhcd->Init.Host_channels) {
    max_ch = ptr_ro_info->ptr_hhcd->Init.Host_channels;
  }
  ptr_ro_info->ptr_rw_info->max_channels = max_ch;

  // Register callback functions
  ptr_ro_info->ptr_rw_info->cb_port_event = cb_port_event;
  ptr_ro_info->ptr_rw_info->cb_pipe_event = cb_pipe_event;

  // Set driver status to initialized
  ptr_ro_info->ptr_rw_info->drv_status.initialized = 1U;
  
  return ARM_DRIVER_OK;
}
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:32:29 | 显示全部楼层
ETH_MAC_STM32.c修改

/**
  \fn          int32_t ETH_MAC_Initialize (ARM_ETH_MAC_SignalEvent_t cb_event)
  \brief       Initialize Ethernet MAC Device.
  \param[in]   cb_event  Pointer to \ref ARM_ETH_MAC_SignalEvent
  \return      \ref execution_status
*/
static int32_t ETH_MAC_Initialize (ARM_ETH_MAC_SignalEvent_t cb_event) {
  static const uint8_t mac_def[6] = { 2, 0, 0, 0, 0, 0 };

  heth.Instance = ETH;
  heth.Init.TxDesc         = DMATxDscrTab;
  heth.Init.RxDesc         = DMARxDscrTab;
  heth.Init.RxBuffLen      = ETH_MAX_PACKET_SIZE;
  heth.Init.MACAddr        = (uint8_t *)(uint32_t)mac_def;
  heth.Init.MediaInterface =  HAL_ETH_RMII_MODE;

  /* Set Tx packet config common parameters */
  memset (&TxConfig, 0 , sizeof(ETH_TxPacketConfig));
  TxConfig.Attributes     = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
  TxConfig.ChecksumCtrl   = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
  TxConfig.CRCPadCtrl     = ETH_CRC_PAD_INSERT;

  // Clear run-time info
  memset((void *)&eth_mac0_rw_info, 0, sizeof(RW_Info_t));

  // Register callback function
  eth_mac0_rw_info.cb_event = cb_event;

  // Set driver status to initialized
  eth_mac0_rw_info.drv_status.initialized = 1U;

  return ARM_DRIVER_OK;
}
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2025-12-31 00:32:55 | 显示全部楼层
最后一点,ETH中断,USB Device中断和USB Host中断都要单独添加。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 2026-1-1 00:17:52 | 显示全部楼层
FreeRTOS移植额外注意事项


1、不支持

下载.png


2、注意优先级分组设置

234.png


3、

123.png
回复

使用道具 举报

11

主题

724

回帖

757

积分

金牌会员

积分
757
发表于 6 天前 | 显示全部楼层
这次改动有点大。安装比较复杂了。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
 楼主| 发表于 6 天前 | 显示全部楼层
hqgboy 发表于 2026-1-4 09:01
这次改动有点大。安装比较复杂了。

例子,我MDK5和MDK6都支持了,MDK6不顺手的,继续MDK5即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-10 07:59 , Processed in 0.059129 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表