Loading and starting DSP server c6accel_omap3530.x64P FAILED

用户在使用特定内核源码并重新编译模块后遇到DSP服务器启动失败的问题,错误码指示资源已存在。通过调整CMEM配置避免内存冲突后解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Loading and starting DSP server 'c6accel_omap3530.x64P' FAILED
This question is answered
Intellectual 490 points

6445.log.txt

Hello! 

I used kernel sources for my device from git://gitorious.org/devkit8000/linux-omap-devkit8000.git

I recompiled modules sdmak, cmemk, dsplinkk,  lpm_omap3530.ko. They starts ok. 

Running /usr/share/ti/gst/omap3530/loadmodules.sh[ 51.053039] CMEMK module: built on Jun 22 2012 at 15:33:52
[ 51.058837] Reference Linux version 2.6.38
[ 51.063354] File /home/chet/devkit8000/linuxutils_3_21_00_04/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
[ 51.076690] allocated heap buffer 0xc7000000 of size 0x53d000
[ 51.082763] cmemk initialized
[ 51.183105] DSPLINK Module (1.65.01.06) created on Date: Jun 22 2012 Time: 17:46:06
[ 51.292999] SDMAK module: built on Jun 22 2012 at 16:21:42
[ 51.298858] Reference Linux version 2.6.38
[ 51.303375] File /home/chet/devkit8000/linuxutils_3_21_00_04/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.c
 done

root@beagleboard:/home/c6accel-apps# lsmod
Module Size Used by
sdmak 3691 0
lpm_omap3530 6385 0
dsplinkk 123194 1 lpm_omap3530
cmemk 20119 0


But I have 2 error 

* FATAL: Module omaplfb not found.

* FATAL: Module bufferclass_ti not found


So I tried to execute c6accel sample app and I got error 

app: C6accel_create() failed

with CE_DEBUG=2 I got this in logs (see attachments)

 Loading and starting DSP server 'c6accel_omap3530.x64P' FAILED, status=[0x80008050] (look for error code 'DSP_EBASE + 0x50' in dsplink*/packages/dsplink/gpp/inc/usr/errbase.h) 

Would you please help me with this issue? 

P.S. my device is devkit8000. I used DVSDK for omap3530 but some packages I updated to the new version (with 2.6.38 kernel support)

You have posted to a forum that requires a moderator to approve posts before they are publicly available.
All Replies
  • Genius 10770 points

    Myosotis

    But I have 2 error 

    * FATAL: Module omaplfb not found.
     
    
    * FATAL: Module bufferclass_ti not found

    I'm not familiar with the above 2 modules.  They are not part of the MFP suite (CE, Linux Utils, FC), which is my area of knowledge.  It's possible that they are not needed for what you're doing.  I don't think they're related to your problem with c6accel.

    Myosotis

     Loading and starting DSP server 'c6accel_omap3530.x64P' FAILED, status=[0x80008050] (look for error code 'DSP_EBASE + 0x50' in dsplink*/packages/dsplink/gpp/inc/usr/errbase.h) 

    Error code 0x80008050 is DSP_EALREADYEXISTS.  It is returned by a number of APIs in DSPLink, so it's hard to say which one you're hitting (you could enable dsplinkk.ko kernel modole tracing to find out, but I'm not sure it's important).  Regardless, it means that some DSPLink IPC-related entity used for communicating/synchronizing with the DSP has already been created.  This could happen if your Linux boot process already launched a c6accel application "behind the scenes", or a DSPLink application crashed before having a chance to clean up "global" resources.

    Is this error happening during an initial run after boot?  Can you see if your boot process launches a DSPLink-related application ('ps' could help to see if one is already running)?

    If you'd like to see more details, you could enable DSPLink tracing, as outlined here: http://processors.wiki.ti.com/index.php/Enabling_trace_in_DSPLink.  Kernel module tracing is more useful than app-level tracing for this issue, I would think.  There's not much more that CE_DEBUG can tell you with this failure, further details are inside DSPLink.

    Regards,

    - Rob

    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Intellectual 490 points

    Robert Tivy
    thank you for aswer. 

    >Can you see if your boot process launches a DSPLink-related application ('ps' could help to see if one is already running)?

    root@dm37x-evm:/home/c6accel-apps# rmmod dsplinkk.ko
    ERROR: Module dsplinkk is in use by lpm_omap3530
    root@dm37x-evm:/home/c6accel-apps# rmmod lpm_omap3530.ko
    root@dm37x-evm:/home/c6accel-apps# rmmod dsplinkk.ko
    root@dm37x-evm:/home/c6accel-apps# rmmod cmemk.ko


    It seems that dsplinkk was in use only by lpm_omap3530

    >Is this error happening during an initial run after boot? 

    I got this one error after initial run:

    [ 31.995605] CMEMK module: built on Jun 26 2012 at 15:43:47
    [ 32.001373] Reference Linux version 2.6.37
    [ 32.005920] File /usr/local/dvsdk/linuxutils_2_26_03_06/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
    [ 32.016723] CMEM Range Overlaps Kernel Physical - allowing overlap
    [ 32.023284] CMEM phys_start (0x83700000) overlaps kernel (0x80000000 -> 0x85000000)
    [ 32.031372] CMEMK Error: Failed to request_mem_region(0x83700000, 35651584)
    FATAL: Error inserting cmemk (/lib/modules/2.6.37/kernel/drivers/dsp/cmemk.ko): Bad address

    That's why I changed the CMEM configurations in the loadmodules.sh

    Was:

    modprobe cmemk phys_start=0x83700000 phys_end=0x85000000 pools=20x4096 allowOverlap=1 

    Now:

    modprobe cmemk phys_start=0x85000000 phys_end=0x86300000 pools=20x4096 allowOverlap=1

    To be on the safe side, I attached logs with CE_DEBUG=3. Look please. 6646.log_DEBUG_3.txt

    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Genius 10770 points

    Myosotis

    Now:

    modprobe cmemk phys_start=0x85000000 phys_end=0x86300000 pools=20x4096 allowOverlap=1

    I noticed this entry in your log file:
    @0,882,750us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - entry #6:
    @0,882,781us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - entry = 0x6
    @0,882,811us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - name = "DDRALGHEAP"
    @0,882,872us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - physAddr = 0x86000000
    @0,882,903us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - dspVirtAddr = 0x86000000
    @0,882,964us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - gppVirtAddr = 0xffffffff
    @0,882,994us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - size = 0x1000000
    @0,883,055us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - shared = FALSE
    @0,883,086us: [+3 T:0x40b1e490 S:0x40b1dcec] OP - syncd = FALSE

    It appears to be clashing with CMEM's physical memory, which goes from 0x85000000 -> 0x86300000.  I don't know that a clash of this sort would cause the error you're seeing (the DSP_EALREADYEXISTS one), although it might be the cause, but it's not right and needs to be placed after CMEM's memory.  Please try changing that and report back if there's still an issue and I'll dig deeper.

    FYI, you don't need allowOverlap=1 since you're no longer clashing with kernel memory.

    Regards,

    - Rob

     

     

    You have posted to a forum that requires a moderator to approve posts before they are publicly available.
  • Intellectual 490 points

    I have no more opportunity to work with this board :(

    Anyway, Robert Tivy, thank you. 

void Aircraft::update_dynamics(const Vector3f &rot_accel) { // update eas2tas and air density #if AP_AHRS_ENABLED eas2tas = AP::ahrs().get_EAS2TAS(); #endif air_density = SSL_AIR_DENSITY / sq(eas2tas); const float delta_time = frame_time_us * 1.0e-6f; // update eas2tas and air density eas2tas = AP_Baro::get_EAS2TAS_for_alt_amsl(location.alt*0.01); air_density = AP_Baro::get_air_density_for_alt_amsl(location.alt*0.01); // update rotational rates in body frame gyro += rot_accel * delta_time; gyro.x = constrain_float(gyro.x, -radians(2000.0f), radians(2000.0f)); gyro.y = constrain_float(gyro.y, -radians(2000.0f), radians(2000.0f)); gyro.z = constrain_float(gyro.z, -radians(2000.0f), radians(2000.0f)); // limit body accel to 64G const float accel_limit = 64*GRAVITY_MSS; accel_body.x = constrain_float(accel_body.x, -accel_limit, accel_limit); accel_body.y = constrain_float(accel_body.y, -accel_limit, accel_limit); accel_body.z = constrain_float(accel_body.z, -accel_limit, accel_limit); // update attitude dcm.rotate(gyro * delta_time); dcm.normalize(); Vector3f accel_earth = dcm * accel_body; accel_earth += Vector3f(0.0f, 0.0f, GRAVITY_MSS); // if we're on the ground, then our vertical acceleration is limited // to zero. This effectively adds the force of the ground on the aircraft if (on_ground() && accel_earth.z > 0) { accel_earth.z = 0; } // work out acceleration as seen by the accelerometers. It sees the kinematic // acceleration (ie. real movement), plus gravity accel_body = dcm.transposed() * (accel_earth + Vector3f(0.0f, 0.0f, -GRAVITY_MSS)); // new velocity vector velocity_ef += accel_earth * delta_time; const bool was_on_ground = on_ground(); // new position vector position += (velocity_ef * delta_time).todouble(); // velocity relative to air mass, in earth frame velocity_air_ef = velocity_ef - wind_ef; // velocity relative to airmass in body frame velocity_air_bf = dcm.transposed() * velocity_air_ef; // airspeed update_eas_airspeed();这是飞机有关飞机仿真的运动模型的函数,要在上面的代码中嵌入一个模拟爆炸冲击波对飞机滚装角速度和三轴线加速度的影响,爆炸的位置是从地面站获取的,不用设计怎么获取。现在已经有了爆炸的位置,坐标是大地坐标系下的。要求:不用考虑爆炸的强度,只是一个数值就可以。注意地球坐标系到机体坐标系的装换。
最新发布
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值