浏览代码

update K210 BSP

shinu_61 3 年之前
父节点
当前提交
4e21c1254d
共有 3 个文件被更改,包括 37 次插入3 次删除
  1. 10 1
      bsp/k210/README.md
  2. 25 0
      bsp/k210/link.lds
  3. 2 2
      bsp/k210/rtconfig.py

+ 10 - 1
bsp/k210/README.md

@@ -31,9 +31,18 @@ Kendryte中文含义为勘智,而勘智取自勘物探智。这颗芯片主要
 
 ## 2. 编译说明
 
-编译K210,需要有RT-Thread的代码,因为K210的sdk是以软件包方式,所以需要在bsp/k210下做软件包更新。Windows下推进使用[env工具][1],然后在console下进入bsp/k210目录中,运行:
+编译 K210,需要有 RT-Thread 的代码,因为 K210 的 sdk 是以软件包方式,所以需要在 bsp/k210 下做软件包更新。注意,需要使用 latest 的 RT-Thread 源码和 Latest 的软件包,软件包在menuconfig中的配置路径如下:
+
+​			RT-Thread online packages ---> peripheral libraries and drivers ---> kendryte K210 SDK package for rt-thread 。
+
+最新的 k210 SDK 使用了 C++17 编写了部分代码,因此需要打开 C++ 组件,C++组件在menuconfig中的配置路径如下:
+
+​			RT-Thread Components --->  C++ features
+
+Windows下推进使用[env工具][1],然后在console下进入bsp/k210目录中,运行:
 
     cd bsp/k210
+    menuconfig # 在软件包中选择最新的 k210 SDK
     pkgs --update
 
 如果在Linux平台下,可以先执行

+ 25 - 0
bsp/k210/link.lds

@@ -44,6 +44,18 @@ SECTIONS
         *(.glue_7)
         *(.glue_7t)
         *(.gnu.linkonce.t*)
+
+        . = ALIGN(8);
+
+        PROVIDE(__ctors_start__ = .);
+        /* old GCC version uses .ctors */
+        KEEP(*(SORT(.ctors.*)))
+        KEEP(*(.ctors))
+        /* new GCC version uses .init_array */
+        KEEP (*(SORT(.init_array.*)))
+        KEEP (*(.init_array))
+        PROVIDE(__ctors_end__ = .);
+        
      
         /* section information for finsh shell */
         . = ALIGN(8);
@@ -63,6 +75,13 @@ SECTIONS
         __rt_init_end = .;
         . = ALIGN(8);
 
+
+        __spi_func_start = .;
+        KEEP(*(.spi_call))
+        __spi_func_end = .;
+
+        . = ALIGN(8);
+        
         __rt_utest_tc_tab_start = .;
         KEEP(*(UtestTcTab))
         __rt_utest_tc_tab_end = .;
@@ -93,6 +112,12 @@ SECTIONS
 
         *(.sdata)
         *(.sdata.*)
+
+        PROVIDE(__dtors_start__ = .);
+        KEEP(*(SORT(.dtors.*)))
+        KEEP(*(.dtors))
+        PROVIDE(__dtors_end__ = .);
+        
     } > SRAM
 
     /* stack for dual core */

+ 2 - 2
bsp/k210/rtconfig.py

@@ -15,7 +15,7 @@ if os.getenv('RTT_CC'):
 
 if  CROSS_TOOL == 'gcc':
     PLATFORM    = 'gcc'
-    EXEC_PATH   = r'/opt/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.1-20190425-1021/bin'
+    EXEC_PATH   = r'D:\K210\xpack-riscv-none-embed-gcc-8.3.0-1.2-win32-x64\xpack-riscv-none-embed-gcc-8.3.0-1.2\bin'
 else:
     print('Please make sure your toolchains is GNU GCC!')
     exit(0)
@@ -51,7 +51,7 @@ if PLATFORM == 'gcc':
     else:
         CFLAGS += ' -O2 -Os'
 
-    CXXFLAGS = CFLAGS
+    CXXFLAGS = CFLAGS + ' -std=gnu++17 -Wno-multichar'
 
 DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtt.asm\n'
 POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'