这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教:关于VxWorks BSP的启动过程

共8条 1/1 1 跳转至

请教:关于VxWorks BSP的启动过程

菜鸟
2008-04-28 09:48:53     打赏
我们调试bsp,这里面没有包含操作系统,只是个bsp.
它的启动过程是这样的吗:
romInit() --> romStart() --> usrInit()?
如果是这样,那么这里的usrInit()是不是bootConfig()里的那个?

现在我们发现,我们的bsp在执行到kernelInit()的时候,好象是没进去.因为我们加了个小程序在usrRoot()里,没执行.这里的kernelInit()是bootConfig里的.

没搞清楚!



关键词: 请教     关于     VxWorks     启动     过程    

菜鸟
2008-04-28 15:20:04     打赏
2楼
makefile 决定了执行哪个?

文档里,看了有个VxWorks启动过程,说的是usrInit()在usrConfig()里;但是,实际是执行的是bootConfig里的那个.根据源程序里的说明,应该是bootConfig()里的.这里会不会有个冷启动/热启动的问题?

他们写的鸟程序太复杂,看起来很困难!

现在发现,在usrInit()里,执行完usrKernelInit()以后,紧跟着的KernelInit()没有执行.
这比较怪异!

菜鸟
2008-04-28 22:10:55     打赏
3楼
romInit() --> romStart() --> usrInit()?
如果是上面的这个过程,是从romInit.s文件中执行过来的,usrInit是bootconfig里面的。如果是从sysAlib.s里面过来,就是usrconfig里面的。
说跟makefile相关也对,一般make bootrom 会使用bootcomfig,make vxWorks会使用usrconfig。
启动分两部分,第一部分是bootrom部分,里面包含了很多硬件的初始化,例如内存,bootrom执行完以后,在bootconfig里面有个go函数,会go到sysAlib.s里面执行第二部分的初始化,这里主要是cache和mmu的初始化,然后跳到usrconfig中。bootrom的设计越简洁越好,功能应该集中到usrconfig以后。
KernelInit没执行完,还是没执行?进到函数里面了吗?你说的这两个函数之间还有个cache的enable,请确认清楚。如果KernelInit进去了,没执行完,请检查一下给这个函数的各个参数是否合法,内存的范围是否越界,另外这个函数里面会打开中断,如果中断没关好,处理函数又没挂也会引起问题。

菜鸟
2008-04-29 10:19:09     打赏
4楼
中断,和内存(应该没问题)的问题,我确实没注意

因为这个bsp是按照买来的目标板带的bsp修改的,所以,好多东西没去管它,觉得不会有问题.
我们自己做的板子.


菜鸟
2008-04-29 11:30:27     打赏
5楼
我现在是使用的bootrom_uncmp,确实是应该执行bootconfig.c里的usrInit.


我看了rominit()里面清了MSR,难道还要专门再去设置SIMASK那几个寄存器?
另外,KernelInit中的中断屏蔽级这个参数是不是对于PowerPC来讲,是没意义的?


现在的问题是,执行到KernelInit的时候,要是我把闪灯程序放在usrRoot()里,是没反应的;但是要是放在sysMemTop()里,就可以看到闪灯效果.  这里,我不能确定,sysMemTop()是在执行KernelInit的时候运行的,还是在其他地方运行的.要是前者,说明,还是进入了KernelInit里面.


另外,调用 
sysClkConnect ((FUNCPTR) usrClock, 0);/* connect clock interrupt routine */
sysClkRateSet (60); /* set system clock rate */
sysClkEnable (); /* start it */
初始化系统时钟;
这里不是很清楚,这几个对系统有影响吗?  好象是对Timer进行初始化的.

菜鸟
2008-05-04 21:20:58     打赏
6楼
在config.h里的user-reserved-size应该是零吗?

在kernelinit()里,应该需要一个root stack,这样的话,user-reserved-size是不是应该不是0,应该保留一个root stack的大小?

我们买的目标板带的bsp,user-reserved-size是0.它是这样的,装了个128M的sdram,但是在config.h里,设定的却是32 M.
我们自己做的是8M的sdram,设定的也是8M.这样的话,user-reserved-size是不是应该不是0啊?

菜鸟
2008-05-05 15:54:53     打赏
7楼


本来觉得就修改那么几个文件,就应该没问题了,没想到问题还挺多

郁闷啊


菜鸟
2008-05-08 15:23:29     打赏
8楼

自己顶

问题就是进了最后这个kernelInit(),就没出来.原因是对一个无效地址取数(单步跟了下).但是,我不知道出问题的这一块反汇编是干吗的,所以,很难下手.   用IDA做函数提取,也没提取出来.

难道说第一次usrKernelInit()没把kernel配置好?kernelInit()这个函数是库函数,除了参数,我们也不能参与什么啊

唉,没办法,自己加把劲吧,又一周过去了...


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]