BSP 初始化时,地址重定位 data 段被改写而导致的系统异常

BSP 初始化时,地址重定位 data 段被改写而导致的系统异常

 问:BSP 初始化时,地址重定位 data 段被改写而导致的系统异常

1、 问题现象

     SylixOS 系统启动进入了初始化阶段不应该走入的流程,对判断条件在bsp入口处打印,
地址已被改写,因此推测data 段被踩。

2、问题原因

      查询ld链接和.S启动脚本,分析可知TEXT和DATA段的对应关系如下:

      代码段运行地址VMA与装载地址LMA相同(ORIGIN(TEXT)),而数据段需先从LMA地址(ORIGIN(TEXT)+text实际大小)拷贝data大小到VMA段地址(ORIGIN(DATA))。所以bspMap.h里定义的TEXT大小不仅包括实际text大小,还需预留data大小,即总的为bin文件大小。

3、解决方法

      bsp.bin超过bspMap.h中BSP_CFG_TEXT_SIZE大小,改大BSP_CFG_TEXT_SIZE解决。且启动参数仍保存不变。


    • Related Articles

    • QT 异常:QNativeSocketEngine::initialize unable to inline out-of-band data

      Q:TCPClient 通信,普通 QT 正常,翼辉 QT 异常:QNativeSocketEngine::initialize unable to inline out-of-band data 翼辉系统的协议层暂不支持 OOB
    • Qt for Embedded Linux data directory has incorrect permissions

      Q:SylixOS 下运行 QT 程序出现提示 tmp 下目录无权限导致运行失败。 设备在更换镜像及文件系统后,启动正常,调试串口提示 QT 程序启动运行错误,提示信息如下: Qt for Embedded Linux data directory has incorrect permissions: /tmp/qtembedded-1 Qt for Embedded Linux data directory has incorrect permissions: ...
    • tmp 目录无权限运行失败分析

      Q:SylixOS 下运行 QT 程序出现提示 tmp 下目录无权限导致运行失败。 设备在更换镜像及文件系统后,启动正常,但是调试串口提示QT程序启动运行错误,提示信息如下: Qt for Embedded Linux data directory has incorrect permissions: /tmp/qtembedded-1 Qt for Embedded Linux data directory has incorrect permissions: ...
    • 处理器包含多级中断系统,BSP部分该如何设计?

      Q:处理器包含多级中断系统 (例如: 级联 8259),而 SylixOS 的中断向量仅为单级,BSP 部分该怎么设计? SylixOS 使用单级中断系统,可以通过编译配置来设置操作系统向量表的条目数(内核并不限制中断向量的个数), BSP 需要将硬件多级中断机制抽象为 SylixOS 系统的单级中断机制,从而使设备驱动程序编写变得更加容易可靠,平台无关性好. 更多扩展知识见: 参考文章:缺页中断后,系统被重启(任务被kill) 参考文章:系统遇到哪些异常时,会导致系统重启
    • libamp_virnetdrv 虚拟网卡在 T3 AMP 上的移植案例

      libamp_virnetdrv 可以方便的移植到各种平台,为 AMP 架构提供简单、高效的核间通信机制。下面以 T3 AMP(SylixOS + SylixOS)为例介绍具体的移植过程。 1、驱动支持 虚拟网卡包含 libamp_virnetdrv与 libamp_virnetdrv_config 两个部分。T3 是 ARM 平台,因此首先拷贝 libamp_virnetdrv\src\demo\arm_aarch64 下的四个文件到 T3 每个系统的 BSP 目录 ...