summaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2024-04-07 13:26:03 +0800
committersakumisu <[email protected]>2024-04-07 13:26:03 +0800
commit1dd45e3e5ab6a25c3cf5c86487eca18d1fc60e40 (patch)
tree1dbc39fb66090a25255dfa1458f86156cc7048f2 /docs/source
parent8119a500b2323210f5289bbf8f600e89bde1fdbe (diff)
update rst for ld
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/quick_start/other_chip.rst43
1 files changed, 35 insertions, 8 deletions
diff --git a/docs/source/quick_start/other_chip.rst b/docs/source/quick_start/other_chip.rst
index b719fd8d..7716e8a3 100644
--- a/docs/source/quick_start/other_chip.rst
+++ b/docs/source/quick_start/other_chip.rst
@@ -22,15 +22,36 @@ USB Host 移植要点
- 实现 `usb_hc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
- 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
- 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBH_IRQHandler` ,请更改 USB 协议栈中的名称
-- 如果使用的是 GCC ,需要在链接脚本(ld)中添加如下代码:
+- 如果使用的是 GCC ,需要在链接脚本(ld)中添加如下代码(需要放在 flash 位置):
.. code-block:: C
+ // 在 ld 文件中添加如下代码
+ . = ALIGN(4);
+ __usbh_class_info_start__ = .;
+ KEEP(*(.usbh_class_info))
+ __usbh_class_info_end__ = .;
- /* section information for usbh class */
+ // 举例如下
+
+ /* 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
- 如果使用的是 Segger Embedded Studio ,需要在链接脚本(icf)中添加如下代码:
@@ -56,13 +77,19 @@ GCC:
.. code-block:: C
- // 放在 no cache ram 的 region 中
- .no_cache_ram_region : AT (__no_cache_ram_addr)
+ MEMORY
+ {
+ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 256K - 64K
+ RAM_nocache (xrw) : ORIGIN = 0x20030000, LENGTH = 64K
+ FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
+ }
+
+ ._nocache_ram :
{
- . = ALIGN(4);
- *(.noncacheable)
- . = ALIGN(4);
- } > no_cache_ram
+ . = ALIGN(4);
+ *(.noncacheable)
+ } >RAM_nocache
+
SCT: