在网上看到的L138处理器,在开机后,先引导DSP,然后做一部分初始化工作后,即启动
ARM处理器开始进行引导,随后在ARM中再使能DSP工作。现在项目中暂时不打算使用ARM,只使用DSP部分。
那么是否我在使用AIS生成dsp bin文件烧写后,可以禁用ARM,只让DSP正常工作呢?比如我在PSC中通过配置禁用ARM,可以禁止ARM的BOOT?
我在网上查到的OMAPL138的BOOT过程是下面这样的:
1.开机上电,用户在BOOT 管脚上配置的启动方式被锁定采样到SYSCFG模块的BOOTCFG寄存器,从而确定可处理器的启动方式。
2.PSC模块中的启动默认值是:ARM核休眠,DSP核使能。所以这时候DSP启动,DSP从片内DSP L2 ROM处读取指令执行。这里有
ti已经固化的仅DSP核可以访问的ROM Bloader,简称DSP RBL。
3.DSP的RBL做一些简单的初始化后,就通过PSC模块使能ARM核,休眠自己。然后ARM就开从片内的RAM Local ROM处读取指令并执行,这里面有TI已经固化好的ARM ROM Bootloader,简称ARM RBL。
4.ARM 的RBL做一些初始化后,根据BOOTCFG寄存器的设定,从指定的地方读取用于启动U-Boot的Bootloader,即U- Boot BootLoader,简称UBL。UBL可以放在Nandflash,或者通过串口下载等方式取得。值得说明的是,这里的UBL是 (AIS Application Image Script )格式,而不是通常的BIN格式。
5.当ARM RBL读取到UBL后就根据AIS格式中的命令初始化、加载并运行UBL。然后就是UBL加载运行U-Boot,U-Boot根据启动参数启动Linux,Linux根据启动参数加载根文件系统。
6. 这时ARM核上的Linux就运行起来了,但DSP还处于休眠状态。在Linux经过一系列初始化后会执行跟文件系统中/etc/profile的指令。 我们在这里添加插入DSP Link内核模块的命令,就会在/dev目录下产生一个叫dsplink的设备文件。这个DSP Link内核模块就是通过前 面所说的中断和PSC设定就可以完成与DSP的
通信与控制。
7. 然后再执行我们自己的ARM端程序,在ARM端程序中使用 DSP Link的库函数来访问dsplink设备,从而在用户空间实现对DSP核的控制与通信。在我们写的ARM端程序中使用DSP Link库函数加 载DSP端的应用程序到内存,使用DSP Link的PROC函数启动DSP核。然后ARM核和DSP核就都各自独立运行起来了,通过DSP Link来 进行通信