注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
JasonWangSE的个人空间 https://home.eeworld.com.cn/space-uid-546173.html [收藏] [复制] [分享] [RSS]
日志

Helper2416上VxWorks的移植

已有 2334 次阅读2014-8-31 11:08 |个人分类:调试笔记


先说一下背景,我的助学计划中写的是指Helper2416上移植uC/OS,但是由于自己的粗心大意,板子寄到后才开始详细看手册,才发现S3C2416的外设和以前用过的其它ARM开发板的有较大的差异。因为我对VxWorks比较熟悉,本来的计划是将相似外设的VxWorks驱动做较小的改动就可以移植到uC/OS上的,但是发现没有相似的驱动可供移植,需要重写。
由于我对uC/OS还不是很熟悉,所以决定先在开发板上将VxWorks跑起来,这样再移植uC/OS工作量就会小一些。没想到近两个月工作的事特别多,最后只是将带串口的VxWorks跑了起来,竟然连网口都没有调完,真是汗颜。
这里先将Helper2416上VxWorks的开发心得列一下,uC/OS的待移植完毕后会补上。

移植的版本是VxWorks6.9.2,实现的驱动有
        s3cIntCtlr.c                Interrupt Controller
        s3cTimer.c                Timer
        s3cSio.c                        UART
        smscNet.c(待更新)        LAN9220
其中网口驱动还没调完,等调完后会更新上来

通过这次移植,发现Samsung芯片的手册水平还是比较差的,错误和遗漏比较多。
就举一个我调试是遇到的例子,UART的UCON0寄存器的Tx Interrupt Type和Rx Interrupt Type位域,手册中只写了配1是边沿触发,我以为只能做成边沿触发。
结果调试时串口怎么改也不好用,后来改成0(应该是配成电平触发)就一切正常了。。。

另外好的外设都和市面上常见外设架构不一样,比如串口常见的ns16550和prime cell,ARM中断控制器和定时器常见的amba。外设差别较大,驱动就得重新写。虽然是几个小驱动,如果没有三星提供驱动demo,还是增加了开发成本。
中断控制器也不像其他芯片那样,一个中断上报后可以通过置一个bit将其他低优先级的中断屏蔽,而高优先级的中断还是打开。中断嵌套需要完全由软件来实现优先级屏蔽,比较麻烦,所以我现在的驱动里面也只是做了不可中断嵌套的驱动,支持中断嵌套的后续再更新吧。

附件中是我移植的BSP,是根据integrator926ejs开发板的BSP修改过来的,时间仓促,有些注释和没用的代码还没有清除干净,后面都整好了再来更新。里面的vxWorks.bin是生成的bin文件,可以在uboot下通过如下命令加载的内存中运行VxWorks

tftp 30100000 vxWorks.bin
go 30100000

注意在笔记本调试上可能需要关掉某些TFTP软件的Option negotiation选项,否则bin文件load会不完整导致运行不起来,这个小问题也费了不少时间:(

VxWorks起来后是有shell的,可以在shell中输入'i'命令查看当前运行的任务,'ti'查看对应任务信息,‘devs’查看当前设备,可以调用函数直接执行等等。

U-Boot 1.3.4 (Mar 21 2014 - 14:13:41) for SMDK2416


CPU:   S3C2416@534MHz
       Fclk = 534MHz, Hclk = 133MHz, Pclk = 66MHz
Board: SMDK2416 DDR2
DRAM:    64 MB
Flash:   1 MB
NAND:    256 MB
In:      serial
Out:     serial
Err:     serial
smc911x: MAC 00:40:5c:26:0a:5b
Hit any key to stop autoboot:  0
Helper2416 #
Helper2416 # tftp 30100000 vxWorks.bin
smc911x: initializing
smc911x: detected LAN9220 controller
smc911x: phy initialized
smc911x: MAC 00:40:5c:26:0a:5b
TFTP from server 192.168.1.10; our IP address is 192.168.1.11
Filename 'vxWorks.bin'.
Load address: 0x30100000
Loading: #################################################################
         ##########################################################
done
Bytes transferred = 626984 (0x99128)
Helper2416 # go 30100000
## Starting application at 0x30100000 ...

Adding 3040 symbols for standalone.


]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
      ]]]]]]]]]]]  ]]]]     ]]]]]]]]]]       ]]              ]]]]         (R)
]     ]]]]]]]]]  ]]]]]]     ]]]]]]]]       ]]               ]]]]
]]     ]]]]]]]  ]]]]]]]]     ]]]]]] ]     ]]                ]]]]
]]]     ]]]]] ]    ]]]  ]     ]]]] ]]]   ]]]]]]]]]  ]]]] ]] ]]]]  ]]   ]]]]]
]]]]     ]]]  ]]    ]  ]]]     ]] ]]]]] ]]]]]]   ]] ]]]]]]] ]]]] ]]   ]]]]
]]]]]     ]  ]]]]     ]]]]]      ]]]]]]]] ]]]]   ]] ]]]]    ]]]]]]]    ]]]]
]]]]]]      ]]]]]     ]]]]]]    ]  ]]]]]  ]]]]   ]] ]]]]    ]]]]]]]]    ]]]]
]]]]]]]    ]]]]]  ]    ]]]]]]  ]    ]]]   ]]]]   ]] ]]]]    ]]]] ]]]]    ]]]]
]]]]]]]]  ]]]]]  ]]]    ]]]]]]]      ]     ]]]]]]]  ]]]]    ]]]]  ]]]] ]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]       Development System
]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]]]]]]]]]]]]]       VxWorks 6.9
]]]]]]]]]]]]]]]]]]]]]]]]]]       KERNEL: WIND version 2.13
]]]]]]]]]]]]]]]]]]]]]]]]]       Copyright Wind River Systems, Inc., 1984-2011

CPU: ARM Integrator - ARM926E (ARM).  Processor #0.
Memory Size: 0x4000000 (64Mb).  BSP version 1.0/14.
Created: Jul 19 2014, 21:56:53
ED&R Policy Mode: Permanently Deployed

->
->
->
-> i

  NAME         ENTRY       TID    PRI   STATUS      PC       SP     ERRNO  DELAY
----------  ------------ -------- --- ---------- -------- -------- ------- -----
tJobTask    30125440     301ab2a8   0 PEND       3016795c 301ab1f0       0     0
tExcTask    30124ba0     301a0a30   0 PEND       3016795c 301a0950       0     0
tLogTask    logTask      302433a8   0 PEND       301662ac 3024327c       0     0
tShell0     shellTask    3025a8b8   1 READY      3016da6c 3025a5f4       0     0
tVxdbgTask  30121400     30246628  25 PEND       3016795c 3024658c       0     0
value = 0 = 0x0
->
-> ti tVxdbgTask

  NAME         ENTRY       TID    PRI   STATUS      PC       SP     ERRNO  DELAY
----------  ------------ -------- --- ---------- -------- -------- ------- -----
tVxdbgTask  30121400     30246628  25 PEND       3016795c 3024658c       0     0

process        : kernel
options        : 0x1009003
VX_SUPERVISOR_MODE  VX_UNBREAKABLE      VX_DEALLOC_TCB      VX_FP_TASK          VX_DEALLOC_EXC_STACK

STACK      BASE     END       SP      SIZE    HIGH   MARGIN
--------- -------- -------- -------- ------- ------- -------
execution 30246628 30244628 3024658c    8192     204    7988
exception 30247820 30246874             4012      20    3992

VxWorks Events
--------------
Events Pended on    : Not Pended
Received Events     : 0x0
Options             : N/A

r0         = 0x00000000   r1         = 0x00000000   r2         = 0x00000000
r3         = 0x00000000   r4         = 0xffffffff   r5         = 0x60000013
r6         = 0x30199868   r7         = 0x301998b4   r8         = 0x00000001
r9         = 0x3019910c   r10        = 0x30198ef4   r11/fp     = 0x302465b8
r12/ip     = 0x02000000   r13/sp     = 0x3024658c   r14/lr     = 0x00000000
pc         = 0x3016795c   cpsr       = 0x60000013   ttbase     = 0x301ac000
coprocTaskShow:  TaskId 0x30246628 has no coprocessors selected
value = 0 = 0x0
->
-> devs
drv name
  0 /null
  1 /tyCo/0
value = 25 = 0x19
->
-> iosDrvShow
drv     creat     remove       open      close       read      write      ioctl
  0 0  0  3012fc2c  3012fcec  0  3012fc24  3012fc64
  1 30132630  0  30132630  30132688  30133290  30133178  301326dc
  2 30130d18  0  30130d18  30130d6c  30130e1c  30130f34  30130fc8
  3 30130cc8  0  30130cc8  30130dc0  30130eac  30130f60  301310ac
value = 20 = 0x14
->
-> l 0x30132630
30132630  e92d4800  STMDB    sp!,{r11,lr}
30132634  e2822001  ADD      r2,r2,#1
30132638  e1a0b000  MOV      r11,r0
3013263c  e5901238  LDR      r1,[r0,#0x238]
30132640  e5802250  STR      r2,[r0,#0x250]
30132644  e2811001  ADD      r1,r1,#1
30132648  e5900298  LDR      r0,[r0,#0x298]
3013264c  e58b1238  STR      r1,[r11,#0x238]
30132650  e3500000  CMP      r0,#0
30132654  0a000009  BEQ      0x30132680
value = 0 = 0x0
->
-> l 0x30133290
                        tyRead:
30133290  e92d4fc0  STMDB    sp!,{r6-r11,lr}
30133294  e1a0b000  MOV      r11,r0
30133298  e1a0a001  MOV      r10,r1
3013329c  e1a07002  MOV      r7,r2
301332a0  e28b0028  ADD      r0,r11,#0x28
301332a4  e3e01000  MVN      r1,#0
301332a8  eb00d519  BL       semTake
301332ac  e3500000  CMP      r0,#0
301332b0  0a000003  BEQ      0x301332c4
301332b4  e3a00006  MOV      r0,#6
value = 0 = 0x0
->
-> l 0x30100000
                        sysInit:
30100000  e59f10a0  LDR      r1,0x301000a8
30100004  ee011f10  MCR      p15,0x0,r1,c1,c0,#0
30100008  e3a01000  MOV      r1,#0
3010000c  ee071f9a  MCR      p15,0x0,r1,c7,c10,#4
30100010  ee071f17  MCR      p15,0x0,r1,c7,c7,#0
30100014  e59f1088  LDR      r1,0x301000a4
30100018  e5911000  LDR      r1,[r1,#0]
3010001c  ee111f10  MRC      p15,0x0,r1,c1,c0,#0
30100020  e3811a01  ORR      r1,r1,#0x1000
30100024  ee011f10  MCR      p15,0x0,r1,c1,c0,#0
value = 0 = 0x0
->
->

欢迎大家检查指正,多提批评意见。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章