📄 omap_init.txt
字号:
/*************************************************************/
/*************************************************************/
1.系统初始化
系统初始化过程:
CLKRST_reset -->pll setfreq-->CLKRST_setupScalableMode-->DSPCLKRST_setup
a.CLKRST_reset (Uint16 typeRst );
Resets OMAP devices as specified.
arm宏。初始化时取值为GLOBAL。
参数取值:
GLOBAL: global reset (DSP,ARM,and peripherals are reset).
DSP: DSP is reset .
ARM: ARM is reset.
ARMPER: ARM peripherals reset.
软件复位。执行完全局软件复位后,arm核和其内部外设释放,但arm外设、dsp、dsp外设
仍然处于复位状态。
b.void PLL_setFreq( PLL_Handle hpll, Uint16 mul, Uint16 div)
arm函数。
参数:
hpll is the PLL device handle.
mul: 1 – 31 integer multiplier
div: integer divisor {1, 2, 4} when mul = 1 (bypass mode = default mode) and
{1, 2, 3, 4} when mul !=1 (lock mode) where mul should not be further
divisible by div.
初始化pll以产生需要的clkout。
c.void CLKRST_setupScalableMode(CLKRST_Scalable *scalable);
arm函数。
参数:
Scalable: Pointer to CLKRST_Scalable structure.
typedef struct{
Uint16 armDiv; //values{1,2,4,8}
Uint16 dspDiv; // values {1,2,4,8}
Uint16 dspmmuDiv; //values {1,2,4,8}
Uint16 tcDiv; //values {1,2,4,8}
Uint16 perDiv; //values {1,2,4,8}
Uint16 lcdDiv; //values {1,2,4,8}
Uint16 timx0; //values{0,1}
Uint16 dspEnable;
Uint16 perEnMask;
}CLKRST_SetupScale;
perEnMask can be one of more of the following values:
LBFREECK:used to generate local bus external output clock,
so that even when LB_CK clock is stopped this clock
can still provide external system with a clock
synchronized to LB_CK.
GPIOCK:mpu gpio clk
DMACKREQ:system dma clk request
TIMCK:arm timer clk
APICK:arm port interface clk
LBCK:local bus clk
LCDCK:lcd clk
PERCK:arm peripheral clk
XORPCK:OS Timer and CLKIN reference peripheral clock
WDTCK:Watchdog Timer clock
将arm时钟设置为synchronous scalable模式(arm和tc之间、dsp mmu与
tc之间使用fifo)。同时将arm外设从复位状态变为使能状态。同时,使dsp
的clock也使能。omap1510只能支持synchronous scalable和synchronous两种
模式,后一种模式没有fifo。
d.void DSPCLKRST_setup (DSPCLKRST_Setup *setup);
arm函数,设置dsp之clk。使dsp外设从复位态释放。
参数:
Pointer to DSPCLKRST_Setup structure.
typedef struct{
Uint16 perDiv; //values{1,2,4,8}
Uint16 gpioDiv; //values{1,2,4,8}
Uint16 uartDiv; //values{4,8}
Uint16 gpiox0; //为0表示时钟为clkin,为1表示时钟为dpll1
Uint16 timx0;
Uint16 uartx0;
Uint16 perEnMask;
}DSPCLKRST_Setup;
perEnMask can be one or more of the following values:
DSP_TIMCK:DSP Timer clock
DSP_GPIOCK:DSP_GPIOCK
DSP_UARTCK:DSP_IDLECT2寄存器的bit3,TRM手册上是”reserved“.
DSP_PERCK:DSP peripheral clock
DSP_XORPCK:external reference clock
DSP_WDTCK:Watchdog Timer clock
一旦选定clkin,则前面设置的3个关于dpll分频比div就没什么意义了。
e.
/*************************************************************/
/*************************************************************/
2.pin multiplex
需要配置的是:
a. ARM public外设:
USB host、USB client、uWIre、MPUIO、PWT、PWL、keyboard、LPG、HDQ
b. DSP public外设
MCBSP3
c. ARM&DSP shared 外设
GPIO,UART1~3
不需要multiplex配置的是:
a. ARM
McBsp2,I2C,Camera,32k timer,MMC/SD,RTC
b. DSP
McBsp1,MCSI1,MCSI2
L2中断设置中断服务程序时不用”interrupt“关键字,那么,L1是否用?
/*************************************************************/
/*************************************************************/
3. DSP BOOT
/*************************************************************/
/*************************************************************/
/*************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -