summaryrefslogtreecommitdiff
path: root/docs/source/quick_start
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/quick_start')
-rw-r--r--docs/source/quick_start/rtthread.rst26
-rw-r--r--docs/source/quick_start/transplant.rst2
2 files changed, 27 insertions, 1 deletions
diff --git a/docs/source/quick_start/rtthread.rst b/docs/source/quick_start/rtthread.rst
index 062e6eab..4df1633f 100644
--- a/docs/source/quick_start/rtthread.rst
+++ b/docs/source/quick_start/rtthread.rst
@@ -91,7 +91,7 @@
INIT_APP_EXPORT(usbh_init);
* 使用 `scons --target=mdk5` 或者 `scons` 进行编译,如果是mdk,需要使用 AC6 编译器
-* 如果使用的是 GCC ,需要在链接脚本(ld)中添加如下代码:
+* 如果使用的是 GCC ,需要在链接脚本(需要放在 flash 位置)中添加如下代码:
.. code-block:: C
@@ -102,6 +102,30 @@
__usbh_class_info_end__ = .;
+举例如下:
+
+.. code-block:: C
+
+ /* The program code and other data into "FLASH" Rom type memory */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+ . = ALIGN(4);
+ __usbh_class_info_start__ = .;
+ KEEP(*(.usbh_class_info))
+ __usbh_class_info_end__ = .;
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } > FLASH
+
借助 STM32CubeMX 生成 USB 初始化
----------------------------------
diff --git a/docs/source/quick_start/transplant.rst b/docs/source/quick_start/transplant.rst
index 0f8e4b92..bde9d830 100644
--- a/docs/source/quick_start/transplant.rst
+++ b/docs/source/quick_start/transplant.rst
@@ -76,6 +76,8 @@ GCC 举例如下:
协议栈以及 port 中不会对 cache 区域的 ram 进行 clean 或者 invalid,所以需要使用一块非 cache 区域的 ram 来维护。 `USB_NOCACHE_RAM_SECTION` 宏表示将变量指定到非 cache ram上,
因此,用户需要在对应的链接脚本中添加 no cache ram 的 section。默认 `USB_NOCACHE_RAM_SECTION` 定义为 `__attribute__((section(".noncacheable")))`。
+.. note:: 需要注意,光指定 section 是不够的,还需要配置该 section 中的 ram 是真的 nocache,一般需要配置 mpu 属性(arm 的参考 stm32h7 demo)。
+
GCC:
.. code-block:: C