手上有一块beaglebone的板子,也做了一些实验,这是前言
现在我的需求是,希望能从NOR Flash启动AM335x,当然beaglebone是无能为力了。
根据TRM上所述,有两种方式,一个是MEM启动选择XIP方式,还有一种是FEB(快速外部启动)。
然后问题就来了!
如果用MEM启动,根据TRM上说的,Boot ROM的引导程序会从GPMC的CS0的地址0x08000000地址执行,又说在Boot过程中只有地址线A0~A11有效(26.1.7.2.2),这怎么解释,是不是启动过程中有地址线屏蔽???
如
果选择外部快速启动(fast external
booting),TRM上出现了两个地址,GPMC的CS0地址0x00000000(26.1.6.1)和图表中出现的
0x08000000(Figure26-7),难以理解。另外如果选择这种模式启动,是不是意味着启动过程中DDR,PLL等初始化都得用户完成,等于
是抛弃了Boot ROM内的初始化过程???
坐等高手科普讲解,小弟不胜感激涕零!!!
Yaoming Qin:
1. 你说的0x8000000,和地址线,一个是memory map,一个是寻址空间。谈不上地址线屏蔽,只是寻址空间有限。
2. 一个是最开始执行的地址,而另一个是rom code执行完后跳到的一个地址。 系统所需要做ddr,pll的配置,ddr的配置在spl中进行,pll的部分配置在spl进行,部分在uboot中进行。我建议你搞个linux玩玩,不要只看文档
Y tck:
回复 Yaoming Qin:
非常感谢你的回答,让我受益匪浅。
现在还只有beaglebone的板子,正在前期评测,准备自己画板子的,所以一些实践的调试工作还没法进行。
根据你的意思,是不是说:如果是MEM启动,虽然CPU从0x08000000处执行,但是实际因为启动过程中高位的地址线没办法被驱动,还是在外设的寻址空间0x00000000中执行。
对于Fast external booting,你说的‘’最开始执行的地址‘’是什么概念,是在rom code执行之前吗?
谢谢!
Yaoming Qin:
回复 Y tck:
我的理解是ARM core会有一个入口地址,大概也是放中断向量表的地方,然后同个这个地方的跳转指令跳到romcode中运行,你可以多看看ARM core的启动的文档,如果有兴趣的话,不过没什么必要花很多时间在这个地方,因为这里的rom code是不公开,会配置就行了
yuanqi li:
回复 Yaoming Qin:
想问一下,那就是说在memory boot模式中,是无法使用NOR flash 启动的 是么?我可以这么理解么?
Y tck:
回复 Yaoming Qin:
明兄说的对,其实这不需要太多关注,好吧再最后一个问题,我应该把启动代码烧到FLASH的地址0x00000000还是0x08000000?
我看到了ICE版本里面原理图的连接方式,地址线从0到15,20到23,中间跳开了几根。
谢谢
Y tck:
回复 yuanqi li:
可以从NOR FLASH启动,你可以参考一下TI的ICE版本