我们调试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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |