Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
链接脚本_lds_sct_icf_分散加载
rtthread 修改了.ld 与borad.h 的ram起始地址后,有些线程会神奇溢出,没修改前正常
发布于 2024-01-11 15:49:50 浏览:337
订阅该版
.ld链接文件 ```c OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(system_vectors) MEMORY { RAM (rwx) : ORIGIN = 0x02000000, LENGTH = 0x06000000 } SECTIONS { . = 0x02000000; . = ALIGN(4); .text : { PROVIDE(__vectors_start = .); *(.vectors) PROVIDE(__vectors_end = .); . = ALIGN(4); *(.text) *(.gnu.linkonce.t*) /* section information for finsh shell */ . = ALIGN(4); __fsymtab_start = .; KEEP(*(FSymTab)) __fsymtab_end = .; . = ALIGN(4); . = ALIGN(4); __vsymtab_start = .; KEEP(*(VSymTab)) __vsymtab_end = .; . = ALIGN(4); /* section information for modules */ . = ALIGN(4); __rtmsymtab_start = .; KEEP(*(RTMSymTab)) __rtmsymtab_end = .; . = ALIGN(4); /* section information for initial. */ . = ALIGN(4); __rt_init_start = .; KEEP(*(SORT(.rti_fn*))) __rt_init_end = .; . = ALIGN(4); /* section information for utest */ . = ALIGN(4); __rt_utest_tc_tab_start = .; KEEP(*(UtestTcTab)) __rt_utest_tc_tab_end = .; . = ALIGN(4); } . = ALIGN(4); .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) } . = ALIGN(4); .ctors : { PROVIDE(__ctors_start__ = .); KEEP(*(SORT(.ctors.*))) KEEP(*(.ctors)) PROVIDE(__ctors_end__ = .); } .dtors : { PROVIDE(__dtors_start__ = .); KEEP(*(SORT(.dtors.*))) KEEP(*(.dtors)) PROVIDE(__dtors_end__ = .); } . = ALIGN(4); .data : { *(.data) *(.data.*) *(.gnu.linkonce.d*) } . = ALIGN(4); .nobss : { *(.nobss) } . = ALIGN(4); __bss_start__ = .; __bss_start = .; .bss : { *(.bss)} . = ALIGN(4); __bss_end = .; __bss_end__ = .; . = ALIGN(4); /* stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_info 0 : { *(.debug_info) } .debug_line 0 : { *(.debug_line) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_aranges 0 : { *(.debug_aranges) } _end = .; } ``` borad.h ```c /**************************************************************************//** * * @copyright (C) 2019 Nuvoton Technology Corp. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2020-1-16 Wayne First version * ******************************************************************************/ #ifndef __BOARD_H__ #define __BOARD_H__ #include "NuMicro.h" #include "drv_sys.h" #if defined(__CC_ARM) extern int Image$$RW_RAM1$$ZI$$Limit; #define BOARD_HEAP_START (void*)&Image$$RW_RAM1$$ZI$$Limit #else extern int __bss_end; #define BOARD_HEAP_START ((void *)&__bss_end) #endif #define BOARD_SDRAM_START 0x2000000 #define BOARD_SDRAM_SIZE 0x6000000 #define BOARD_HEAP_END ((void*)BOARD_SDRAM_SIZE) #if defined(RT_USING_MTD_NAND) #include
#define MTD_SPINAND_PARTITION_NUM 3 extern struct rt_mtd_nand_device mtd_partitions[MTD_SPINAND_PARTITION_NUM]; #endif extern void rt_hw_board_init(void); extern void nu_clock_init(void); extern void nu_clock_deinit(void); extern void nu_pin_init(void); extern void nu_pin_deinit(void); #endif /* BOARD_H_ */ ``` mmu映射关系 ```c static struct mem_desc hw_mem_desc[] = { { 0x00000000, 0xFFFFFFFF, 0x00000000, RW_NCNB }, /* None cached for 4G memory */ { 0x02000000, BOARD_SDRAM_SIZE - 1, 0x00000000, RW_CB }, /* 64M cached DDR memory */ { BIT31, (BIT31 | BOARD_SDRAM_SIZE) - 1, BIT31, RW_NCNB }, /* Shadow DDR Map */ { 0x3C000000, 0x3C004000 - 1, 0x3C000000, RW_NCNB }, /* 16K SRAM memory */ { 0xBC000000, 0xBC004000 - 1, 0xBC000000, RW_NCNB } /* 16K Shadow memory */ }; ``` 原本ram的起始地址是0x0,因为我做了一个boot,所以我app的地址需要往后移0x02000000,编译后,有几个线程出现溢出,注释掉又可以,这个问题应该和boot没关系,尝试过直接用烧录工具直接烧到0x02000000的位置。
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
337
关于作者
aaa123
这家伙很懒,什么也没写!
提问
6
回答
2
被采纳
0
关注TA
发私信
相关问题
1
程序分散加载到外部QSPI FLASH 启动问题
2
studio的链接脚本使用问题。跳转过后程序不执行。
3
link.lds每次修改后,编译会忽略修改
4
RTT-stdio 设置flash地址
5
ethernet 和 use memory layout冲突
6
studio创建的工程为什么链接脚本里ROM和RAM都比MCU本身的小
7
请问如何修改IAR的工程的linker的路径?
8
程序分散加载,使用 use mcroslib 程序无法启动
9
OTA升级链接脚本的修改
10
rthread studio怎么修改link.lds文件来支持外部sram
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部