|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
有在lpc2200系列移植vxworks的吗? |
作者:db10 栏目:ARM技术 |
最近项目里可能要玩玩这个系统,可是我还是第一次用这个让我觉得神的操作系统。可以交流! |
2楼: | >>参与讨论 |
作者: dahanzk 于 2006/5/6 11:52:00 发布:
尝试过,但后来因为项目变动没有做完 因为当时没有使用专门的调试BSP的工具,只能靠点灯和跟踪汇编代码来调试,有些痛苦。感觉比较难的部分是把LPC系列的中断系统和vxworks结合起来。串口部分也要费些心神。整个过程会让你获益良多。 |
3楼: | >>参与讨论 |
作者: db10 于 2006/5/17 12:59:00 发布:
没人顶阿 |
4楼: | >>参与讨论 |
作者: db10 于 2006/5/21 22:58:00 发布:
看来没有多少人在上面用过!?? |
5楼: | >>参与讨论 |
作者: efly_gg 于 2006/5/21 23:02:00 发布:
(: 一直在想试试 因为手上有个周公的板子闲置着 在公司目前是在arm9上跑的 希望大家把这个内容太论开 |
6楼: | >>参与讨论 |
作者: db10 于 2006/5/21 23:33:00 发布:
efly_gg 是的,应该用用,俺现在准备开始用。 |
7楼: | >>参与讨论 |
作者: lpcfans 于 2006/5/22 8:01:00 发布:
帮顶........... |
8楼: | >>参与讨论 |
作者: cmos2345 于 2006/5/24 21:10:00 发布:
经过实践,不行! vxworks5.5 for arm固定把中断向量表放在内存0x100开始的地方,而LPC的这一段空间是不可写的。所以,在系统初始化中断向量表时会引起数据中止异常。要修改中断向量表存放的地址才能运行通过。而中断向量表已经被编译好放在target\lib目录中的某一个(具体是哪一个我不记得了)lib文件中了。这就是说要有vxworks for arm的源码才能修改。 |
9楼: | >>参与讨论 |
作者: dahanzk 于 2006/5/25 9:29:00 发布:
楼上说的有道理,但,是可以改的。 楼上说的问题是BSP里遇到的第一个难点,但可以改过去的,需要在某个.s文件加上初始化中断向量表的汇编代码,可以调试通过的。找找当时改动的程序后,贴上来。 * - 本贴最后修改时间:2006-5-25 9:38:02 修改者:dahanzk |
10楼: | >>参与讨论 |
作者: dahanzk 于 2006/5/26 11:26:00 发布:
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 于 2006/5/26 16:31:00 发布:
lpc2200跑VXWORKS 我对VXWORKS修改了一通,中断已改,串口通信成功,现在要加入网卡驱动程序,没有时间,停在那。。。。(BOOT程序) |
12楼: | >>参与讨论 |
作者: db10 于 2006/7/9 12:48:00 发布:
dahanzk 能否将你的文件发给我看看,谢谢! |
13楼: | >>参与讨论 |
作者: db10 于 2006/7/11 12:58:00 发布:
chengxupin和dahanzk 怎么联系你们? |
14楼: | >>参与讨论 |
作者: aah 于 2006/7/11 13:06:00 发布:
dahanzk@hotmail.com 不上QQ~~ |
15楼: | >>参与讨论 |
作者: db10 于 2006/7/11 13:29:00 发布:
OK |
16楼: | >>参与讨论 |
作者: oe01 于 2006/11/11 16:24:00 发布:
^_^ 本人小硕,最近买了smartarm2200,想移植vxworks,不值该如何入门,能否给小弟指点一二? |
17楼: | >>参与讨论 |
作者: limingchzz 于 2006/12/17 11:16:00 发布:
LPC2210 VXWORKS上电复位不成功 小弟在EasyARM2210上移植了VXWORKS但上电复位不成功,只能通过JTAG来复位, 众位看看是什么原因? |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |