rt-thread/bsp/smartfusion2
Tangyuxin d724eed9fc
分离内存分配接口与内存分配算法 (#5175)
* [kernel][mem] Multiple instances of small memory allocation algorithm

* [kernel][mem] Change small memory management algorithm memory header flag

* [kernel][mem] Fix assertion problem

* [kernel][slab] Multiple instances of slab memory management algorithm

* [kernel][memheap] Remove rt_malloc/rt_free/rt_realloc and other related memory interfaces

* [kernel][mem] Clean up memory space of small memory management objects

* [kernel][kservice] Add memory application interface and thread protection interface

* [kernel][kservice] Fix function return value problem

* [kernel][memheap] Optimize memheaptrace print

* [kernel][memheap] Support best mode

* [kernel][memory] Remove semaphore lock

* [kernel][memheap] Add locked flag

* [kernel][memory] Support malloc memory in interrupt

* [kernel][memheap] Add 'memheapcheck' cmd

* [kernel][mem] Fix failure to request full memory

* [kernel][memheap] Fix compilation warning

* [kernel][mem] Fix mem realloc ASSERT

* [examples][testcases] Add small mem testcase

* [examples][mem_tc] Modify test memory size

* [examples][testcases] Add slab memory management algorithm test case

* [examples][testcases] fix small memory management algorithm test case

* [kernel][memory] Adjusting memory allocation algorithm object definition and interface

* [kernel][memory] Fix compilation warning

* [examples][utest] Fix mem test case

* [examples][utest] fix slab test case

* [utest][testcases] Shorten test time

* [kernel][memory] Formatting code

* [examples][utest] Adjust test run time

* [examples][utest] Formatting code

* [bsp] update all rtconfig.h
2021-12-16 16:23:58 +08:00
..
CMSIS Modify the script suffix .s to .S 2020-11-13 22:48:02 +08:00
applications 1.Add scons support 2020-08-06 20:04:49 +08:00
board 1.Add scons support 2020-08-06 20:04:49 +08:00
drivers 1.Add scons support 2020-08-06 20:04:49 +08:00
figures 1.Modify project directory structure 2020-07-07 17:17:45 +08:00
libraries 1.Add scons support 2020-08-06 20:04:49 +08:00
.config 分离内存分配接口与内存分配算法 (#5175) 2021-12-16 16:23:58 +08:00
Kconfig 1.Add scons support 2020-08-06 20:04:49 +08:00
README.md 1.Add scons support 2020-08-06 20:04:49 +08:00
SConscript 1.Add scons support 2020-08-06 20:04:49 +08:00
SConstruct Revert "Fix compiler flags issue" 2021-10-14 14:36:18 +08:00
project.uvopt [update] bsp .config file and rtconfig.h file. 2021-10-14 14:49:53 +08:00
project.uvoptx [update] bsp .config file and rtconfig.h file. 2021-10-14 14:49:53 +08:00
project.uvproj 分离内存分配接口与内存分配算法 (#5175) 2021-12-16 16:23:58 +08:00
project.uvprojx 分离内存分配接口与内存分配算法 (#5175) 2021-12-16 16:23:58 +08:00
rtconfig.h 分离内存分配接口与内存分配算法 (#5175) 2021-12-16 16:23:58 +08:00
rtconfig.py 1.Add scons support 2020-08-06 20:04:49 +08:00
template.uvopt [bsp][samrtfusion2]add C99 support and update project files 2021-03-04 13:51:39 +08:00
template.uvoptx 1.Add scons support 2020-08-06 20:04:49 +08:00
template.uvproj [bsp][samrtfusion2]add C99 support and update project files 2021-03-04 13:51:39 +08:00
template.uvprojx [bsp][samrtfusion2]add C99 support and update project files 2021-03-04 13:51:39 +08:00

README.md

移植RT-Thread到Microsemi SmartFusion2系列FPGA芯片

1. BSP简介

移植 RT-Thread 操作系统到一款 FPGA 芯片——M2S010 ,该芯片属于 Microsemi现MicrochipSmartFusion2系列是一款智能混合型FPGA,片上除了 FPGA Fabric 逻辑部分,还包括一个 ARM® Cortex™-M3 内核的 MCU,主频最高 166MHz 256KB eNVM64KB eSRAM集成GPIO、UART、I2C、SPI、CAN、USB等基本外设。

关于 Microsemi第三大 FPGA 厂商,原 Actel 半导体2010 年Microsemi 收购 Actel2018 年, Microchip 收购 Microsemi。

SmartFusion2 内部框图

Microsemi_Smartfusion2_BD

2. 外设支持

移植了 RT-Thread 内核支持线程调度、线程间同步和通信等目前已经完成了PIN、Serial设备驱动FinSH组件默认使用uart0设备。

片上外设 支持情况
GPIO 支持
UART 支持
SPI 暂不支持
I2C 暂不支持
RTC 暂不支持
USB 暂不支持

3. scons构建系统

通过加入rtconfig.pySConstructSConscript文件可支持scons构建系统可以输入scons调用env工具中包含的arm-gcc编译器构建工程支持以下scons命令

  • scons使用arm-gcc编译BSP
  • scons -c:清除执行 scons 时生成的临时文件和目标文件。
  • scons --target=mdk4重新生成Keil MDK4环境下的工程。
  • scons --target=mdk5重新生成Keil MDK5环境下的工程。
  • scons --dist打包BSP工程包括RT-Thread源码及BSP相关工程文件。

添加Kconfig文件用于生成rtconfig.h。

4. 使用说明

4.1 FPGA 工程设计

FPGA 部分使用 SmartDesign 图形化设计,不需要写 HDL 代码,时钟来自外部 50M 晶体输入PLL 倍频 100M 提供给 MCU 使用,顶层配置如下图所示:

MSS 部分仅使用到了GPIO 和UARTGPIO_0配置成输出输出模式用于驱动LED。

配置完成的 FPGA 工程文件下载:sf2_fpga_prj.rar

4.2 ARM 程序设计

ARM 程序使用 Keil MDK 5.26 开发,需要安装 M2S 系列芯片支持包:Microsemi.M2Sxxx.1.0.64.pack

如果官网下载失败,可以到以下地址下载:Microsemi.M2Sxxx.1.0.64.pack

在官方生成的示例工程目录下,添加 RT-Thread 相关组件,并实现一些对接函数,最终的文件结构:

5. 下载和运行

为了能使用 ARM 调试器连接到 ARM 内核,而不是 FPGA需要把 JTAG_SEL 引脚置为低电平。使用 ARM 调试器,如 JLink对应连接 JTAG 口的 TMS、TCK、GND 引脚,如果连接正常,可以检测到 ARM 芯片,如下图所示:

配置对应的 Flash 编程算法:

下载完成:

如果编译 & 烧写无误,下载完成或者按下复位按键之后,会在串口上看到 RT-Thread 的启动 LOG 信息:

 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Jun  2 2020
 2006 - 2020 Copyright by rt-thread team
msh >

6. 注意事项

  • FPGA 开发环境基于 Libero V11.8.2.4,向上兼容,不支持低版本 IDE。
  • ARM 开发环境基于 Keil MDK 5.26如果使用SoftConsole IDE ,需要修改 libcpu 内的文件。
  • 调试内部 ARM 核,需要把 JTAG_SEL 拉低,否则调试器连接不上。
  • 使用 SoftConsole 开发环境可以直接使用官方的 Flash Pro 调试器进行 ARM 程序的调试。
  • 内核时钟需要和 FPGA 中 MSS 配置的对应Libero 自动生成的时钟文件,可以直接替换bsp\smartfusion2\libraries\sys_config文件夹下的文件 。

7. 参考资料

8. 联系我

  • Githubwhik
  • E-Mailwangchao149@foxmail.com