我们调试bsp,这里面没有包含操作系统,只是个bsp.
它的启动过程是这样的吗:
romInit() --> romStart() --> usrInit()?
如果是这样,那么这里的usrInit()是不是bootConfig()里的那个?
现在我们发现,我们的bsp在执行到kernelInit()的时候,好象是没进去.因为我们加了个小程序在usrRoot()里,没执行.这里的kernelInit()是bootConfig里的.
没搞清楚!
共8条
1/1 1 跳转至页

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进去了,没执行完,请检查一下给这个函数的各个参数是否合法,内存的范围是否越界,另外这个函数里面会打开中断,如果中断没关好,处理函数又没挂也会引起问题。
如果是上面的这个过程,是从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进去了,没执行完,请检查一下给这个函数的各个参数是否合法,内存的范围是否越界,另外这个函数里面会打开中断,如果中断没关好,处理函数又没挂也会引起问题。

我现在是使用的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进行初始化的.
我看了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进行初始化的.
共8条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【瑞萨RA2E1开发板】:使用ADC功能实现位移传感器采集方案被打赏20分 | |
【nRF7002DK】基于sht30的温湿度计被打赏20分 | |
【nRF7002DK】日志打印被打赏20分 | |
rtthread硬件加密-5hash加密分析被打赏10分 | |
【STM32F769】SD卡驱动及其调试经验分享被打赏32分 | |
【分享开发笔记,赚取电动螺丝刀】使用看门狗降低系统隐藏bug触发概率被打赏18分 | |
【STM32F769】调试SD驱动,由于其时钟配置不对引起的错误以及排查记录被打赏35分 | |
【分享开发笔记,赚取电动螺丝刀】MCUXpressoConfigTools配置外设时的异常解决被打赏24分 |