lr java找不到符号 web_应用模块找不到符号表

报错内容:

Module: can't find led1_on in kernel symbol table

Module: can't find rt_thread_delay in kernel symbol table

平台是STM32F767正点原子阿波罗,IAR编译主程序,icf文件已经添加keep { section RTMSymTab };

编译产生的rtthread.map文件可以找到

__rtmsym_rt_thread_delay

0x0804116c 0x8 Data Gb thread.o [1]

__rtmsym_rt_thread_delay_name

0x08049cec 0x10 Data Gb thread.o [1]

__rtmsym_led1_off 0x08040a94 0x8 Data Gb drv_led.o [1]

__rtmsym_led1_off_name 0x0804a08c 0xc Data Gb drv_led.o [1]

__rtmsym_led1_on 0x08040a8c 0x8 Data Gb drv_led.o [1]

__rtmsym_led1_on_name 0x0804a6d0 0x8 Data Gb drv_led.o [1]

RTMSymTab$$Base 0x0804090c -- Gb - Linker created -

RTMSymTab$$Limit 0x080411d4 -- Gb - Linker created -

模块的rtconfig.py如下

import os

cwd = os.path.split(os.path.realpath(__file__))[0]

# RT-Thread root directory

RTT_ROOT = 'D:/rt-thread_dev/rt-thread'

BSP_ROOT = 'D:/rt-thread_dev/rt-thread/bsp/stm32f767-apollo'

# toolchains

EXEC_PATH = 'C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3/bin'

if os.getenv('RTT_ROOT'): RTT_ROOT = os.getenv('RTT_ROOT')

if os.getenv('BSP_ROOT'): BSP_ROOT = os.getenv('BSP_ROOT')

if os.getenv('RTT_EXEC_PATH'): EXEC_PATH = os.getenv('RTT_EXEC_PATH')

PLATFORM = 'gcc'

PREFIX = 'arm-none-eabi-'

CC = PREFIX + 'gcc'

CXX = PREFIX + 'g++'

AS = PREFIX + 'gcc'

AR = PREFIX + 'ar'

LINK = PREFIX + 'gcc'

TARGET_EXT = 'mo'

SIZE = PREFIX + 'size'

OBJDUMP = PREFIX + 'objdump'

OBJCPY = PREFIX + 'objcopy'

DEVICE = ' -mcpu=cortex-m7'

CFLAGS = DEVICE + ' -mthumb -mlong-calls -O0 -fPIC -fno-exceptions'

AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp'

LFLAGS = DEVICE + ' -mthumb -Wl,-z,max-page-size=0x4 -shared -fPIC -e main -nostdlib'

CPATH = ''

LPATH = ''

sconstruct 文件:

import os

import sys

import rtconfig

sconstruct = File('SConstruct')

fn = sconstruct.rfile()

name = fn.name

building_dir = os.path.dirname(fn.abspath)

program_dir = '../bin'

from rtconfig import RTT_ROOT

from rtconfig import BSP_ROOT

sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools'), BSP_ROOT]

from building import *

from rtua import GetCPPPATH

from rtua import GetCPPDEFINES

Export('RTT_ROOT')

Export('BSP_ROOT')

# add target option

AddOption('--app',

dest='app',

nargs=1, type='string',

action='store',

metavar='DIR',

help='installation prefix')

# add target option

AddOption('--type',

dest='type',

nargs=1, type='string',

action='store',

metavar='DIR',

help='installation prefix')

if GetOption('type') == 'ext':

linkflags = rtconfig.LFLAGS + ' -e 0'

else:

linkflags = rtconfig.LFLAGS + ' -e main'

CPPPATH = GetCPPPATH(BSP_ROOT, RTT_ROOT)

env = Environment(tools = ['mingw'],

AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,

CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS,

CXX = rtconfig.CXX, AR = rtconfig.AR, ARFLAGS = '-rc',

LINK = rtconfig.LINK, LINKFLAGS = linkflags,

CPPPATH = CPPPATH)

env.PrependENVPath('PATH', rtconfig.EXEC_PATH)

PrepareModuleBuilding(env, RTT_ROOT, BSP_ROOT)

app = GetOption('app')

if app:

objs = SConscript(os.path.join(app, 'D:/rt-thread_dev/rt-thread/examples/module/basicapp/SConscript'))

TARGET = os.path.join(app , app + '.' + rtconfig.TARGET_EXT)

# build program

target = env.Program(TARGET, objs)

env.Command("$TARGET", target, action = Copy(program_dir, TARGET))

确定rt_system_module_init函数运行到了下面代码:

#elif defined (__IAR_SYSTEMS_ICC__)

_rt_module_symtab_begin = __section_begin("RTMSymTab");

_rt_module_symtab_end = __section_begin("RTMSymTab");

#endif

rtua.y是自动生成的。

确定报错函数是这个

static struct rt_module *_load_shared_object(const char *name,

void *module_ptr)

求教下一步怎么查?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值