登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

有在lpc2200系列移植vxworks的吗?

作者:db10 栏目:ARM技术
有在lpc2200系列移植vxworks的吗?
 最近项目里可能要玩玩这个系统,可是我还是第一次用这个让我觉得神的操作系统。可以交流!

2楼: >>参与讨论
dahanzk
尝试过,但后来因为项目变动没有做完
因为当时没有使用专门的调试BSP的工具,只能靠点灯和跟踪汇编代码来调试,有些痛苦。感觉比较难的部分是把LPC系列的中断系统和vxworks结合起来。串口部分也要费些心神。整个过程会让你获益良多。

3楼: >>参与讨论
db10
没人顶阿
 
4楼: >>参与讨论
db10
看来没有多少人在上面用过!??
 
5楼: >>参与讨论
efly_gg
(:
一直在想试试 因为手上有个周公的板子闲置着  在公司目前是在arm9上跑的
希望大家把这个内容太论开

6楼: >>参与讨论
db10
efly_gg
 是的,应该用用,俺现在准备开始用。

7楼: >>参与讨论
lpcfans
帮顶...........
 
8楼: >>参与讨论
cmos2345
经过实践,不行!
vxworks5.5 for arm固定把中断向量表放在内存0x100开始的地方,而LPC的这一段空间是不可写的。所以,在系统初始化中断向量表时会引起数据中止异常。要修改中断向量表存放的地址才能运行通过。而中断向量表已经被编译好放在target\lib目录中的某一个(具体是哪一个我不记得了)lib文件中了。这就是说要有vxworks for arm的源码才能修改。

9楼: >>参与讨论
dahanzk
楼上说的有道理,但,是可以改的。
楼上说的问题是BSP里遇到的第一个难点,但可以改过去的,需要在某个.s文件加上初始化中断向量表的汇编代码,可以调试通过的。找找当时改动的程序后,贴上来。

* - 本贴最后修改时间:2006-5-25 9:38:02 修改者:dahanzk

10楼: >>参与讨论
dahanzk
Vxworks下LPC22XX BSP中的中断修改如下:
在sysAlib.s中增加如下代码:
(1)
.globl    FUNC(armInitExp)    /* own code for armInitExceptionModes()---zk */
_ARM_FUNCTION(armInitExp)

    MRS R0, CPSR
    BIC R1, R0, #63
    ORR R1, R1, #128
    ORR R2, R1, #27
    MSR CPSR_fc, r2
    ldr sp, [pc, #-44]
    orr r2, r1, #23
    msr CPSR_fc, r2
    ldr sp, [pc, #-52]
    orr r2, r1, #18  
    msr CPSR_fc, r2
    ldr sp, [pc, #-56]
    msr CPSR_fc, r0
    mov r1, #0
    stmdb sp!, {r1}
    ldmia sp, {sp}^
    nop
    add sp, sp, #4
    mov pc, lr

(2):在bootConfig.c中增加或改变如下代码

#define LPC_EXC_VEC_BASE 0x81000100

void lpc22xxExcVecSet(void)
{
    int i;
    /*i = (int)&excEnterUndef;*/
    i = 0x04;
    *((volatile int*)(LPC_EXC_VEC_BASE + 0x0)) = i;

    /*i = (int)&excEnterSwi;*/
    i = 0x08;
    *((volatile int*)(LPC_EXC_VEC_BASE + 0x4)) = i;

    /*i = (int)&excEnterPrefetchAbort;*/
    i = 0x0c;
    *((volatile int*)(LPC_EXC_VEC_BASE + 0x8)) = i;

    /*i = (int)&excEnterDataAbort;*/
    i = 0x10;
    *((volatile int*)(LPC_EXC_VEC_BASE + 0xc)) = i;

    /*i = (int)&intEnt;*/
    i = 0x18;
    *((volatile int*)(LPC_EXC_VEC_BASE + 0x14)) = i;


}

STATUS myExcVecInit(void)
{

    FAST int i;
    
    armInitExp();
/*    
    for(i=0;i<NUM_EXC_VECS;++i)
    {
    *(UINT32 *)excEnterTbl[i].vecAddr = 0xE59FF000 | (LPC_EXC_VEC_BASE - 8 - FIRST_VECTOR);
    *(VOIDFUNCPTR *)(excEnterTbl[i].vecAddr + LPC_EXC_VEC_BASE - FIRST_VECTOR) = excEnterTbl[i].fn;
    }
    
    *(UINT32 *)LPC_EXC_VEC_BASE = 0xE7FDDEFE;


    CACHE_TEXT_UPDATE(LPC_EXC_VEC_BASE, EXC_OFF_IRQ + 4);

    _func_armIrqHandler = excIntHandle;
*/
    lpc22xxExcVecSet();
    return OK;

}

以上是往LPC22XX移植VxWorks遇到的第一个难点,也是最难的。



11楼: >>参与讨论
chengxupin
lpc2200跑VXWORKS
我对VXWORKS修改了一通,中断已改,串口通信成功,现在要加入网卡驱动程序,没有时间,停在那。。。。(BOOT程序)

12楼: >>参与讨论
db10
dahanzk
 能否将你的文件发给我看看,谢谢!

13楼: >>参与讨论
db10
chengxupin和dahanzk
 怎么联系你们?

14楼: >>参与讨论
aah
dahanzk@hotmail.com
不上QQ~~

15楼: >>参与讨论
db10
OK
 
16楼: >>参与讨论
oe01
^_^
本人小硕,最近买了smartarm2200,想移植vxworks,不值该如何入门,能否给小弟指点一二?

17楼: >>参与讨论
limingchzz
LPC2210 VXWORKS上电复位不成功
小弟在EasyARM2210上移植了VXWORKS但上电复位不成功,只能通过JTAG来复位,
众位看看是什么原因?

参与讨论
昵称:
讨论内容:
 
 
相关帖子
请教LPC2132的P0.11做IO口问题
我用记本学习,没并口怎么办
笔记本没有并口,不要调试JTAG,请推荐一款UST转并口产品
想买周功的LPC213X,可我机子没有并口...
我的USB转并口用不了
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号