从事c6455开发遇到几个问题
1、我看到一个dsp/bios工程,没有BIOS_start()函数,并且在配置中也没有看见这个函数,请问是怎么启动bios的,在bios配置文件(比较老的版本 tcf格式的)上面也没有发现启动bios相关内容 ,并且也没有找到programcfg.snn文件
2、我想在启动bios之后执行一个初始化函数(这个函数不能在bios之前执行,因为需要用到bios的配置)仅仅执行一次,但是bios程序是调度HWI、SWI、TASK和IDLE进程的,我的函数放在哪儿?能直接放在BIOS_start()函数后面吗?
比如这样:
main()
{
BIOS_start();
init(); //我的初始化函数
}
3、我看SPRUEX3M文档第50页
The SYS/BIOS startup sequence that run when BIOS_start() is called is as follows:
1.Startup Functions.Run the user-supplied "startup functions" (see BIOS.startupFxns).
2.Enable Hardware Interrupts.
3.Timer Startup.If the system supports Timers, then at this point all configured timers are initialized per their user-configuration. If a timer was configured to start "automatically", it is started here.
4.Enable Software Interrupts.If the system supports software interrupts (Swis) (see BIOS.swiEnabled), then the SYS/BIOS startup sequence enables Swis at this point.
5.Task Startup.If the system supports Tasks (see BIOS.taskEnabled), then task scheduling begins here. If there are no statically or dynamically created Tasks in the system, then execution proceeds directly to the idle loop
按照这个启动顺序,也就是硬件中断和软件中断只能在bios_start()函数之后才能使能,那么在bios_start()之前是不是就不能使用这两个中断了
Denny%20Yang99373:
bios_start()可以看作是一个系统调用,调用LIB是BIOS启动起来。
这个函数不会返回,因此后面的INIT()不会调用。
你的初始化函数可以放到BIOS_START前面,或者放在一个TASK里
Shine:
1.保存了配置文件吗?保存后会自动生成cfg.s62,cfg.cmd等文件。bios_start函数在cfg.s62文件里。2. BIOS启动顺序如下。c_int00 -> auto_init() ->BIOS_init()->main()- >BIOS_start()->IDL_loop()3. 你用的是DSP/BIOS,应该参考DSP/BIOS user guide. http://www.ti.com/lit/ug/spru423i/spru423i.pdf
zhubaojun:
回复 Shine:
我的工程需要一个IIC接口的RTC时钟芯片,上电时首先需要配置RTC时钟芯片,然而由于配置RTC时钟芯片需要IIC中断方式进行通信,我在dsp/bios中配置了IIC中断bios.HWI.instance("HWI_INT6").interruptSelectNumber = 16; bios.HWI.instance("HWI_INT6").useDispatcher = 1; bios.HWI.instance("HWI_INT6").fxn = prog.extern("IIC_ISR"); 配置没有问题,所以初始化RTC时钟芯片需要在dsp/bios启动之后才能进行(要用到bios配置的中断),又因为初始化只能进行一次,所以我想怎么才能做到只运行一次,把初始化放到放到任务进程和空闲进程都有可能被bios多次调用。所以我想在bios之后是不是还能调用函数,由于dsp/bios版本比较老,好像不支持BIOS_start()函数。确实在cfg.s62看到了BIOS_start();但是不知道怎么在main()函数中调用。
zhubaojun:
回复 zhubaojun:
通常的初始化函数是放在bios启动之前,我想把初始化函数放在bios启动之后,在bios中有个bios.GBL.USERINITFXN 是用来定义在bios之前调用的初始化函数,我想问一下有没有类似的配置,配置函数在bios启动之后再运行。
Shine:
回复 zhubaojun:
把RTC初始化代码放在main函数中。