我们调试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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取磁力计iis2mdc被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取LPS22HH气压、温度被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取STTS751温度被打赏¥17元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
我要赚赏金
