TI专家:
悠龙咨询的开源、物联网嵌入式操作系统uTenux支持ARM公司的ARM7/9、Cortex M微控制器,可以作为uC/OS II的免费替代品,而且功能更强,详细地介绍可以参考www.uloong.cc网站或者www.tecoss.org社区。
现在正在移植到LM3S9b96上,但调试时碰到了问题,问题如下:
背景:
1.uTenux移植时涉及到时钟、GPIO、UART、Flash;
2.uTenux是直接使用汇编控制外设的寄存器进行初始化;
3.使用的开发板是TI委托英蓓特生产的DK-LM3S9b96;
问题:
主要发生在时钟初始化时,参考了TI的Datasheet以及C库的代码,目的是使用PLL,设置系统时钟为50MHz,现在的初始化流程如下:
1 SYSCTL_RCC |= 0x01<<11 旁路PLL
2 SYSCTL_RCC &=~(0x01<<22) 不使用分频器
3 SYSCTL_RCC &=~(0x1f<<6 ) 设置MOSC频率为16MHz
4 SYSCTL_RCC |= 0x15<<6
5 SYSCTL_RCC &=~(0x03<<4 ) MOSC为时钟源
6 SYSCTL_RCC &=~(0x01<<0) MOSC使能
7 If (SYSCTL_RIS&(0x1<<8) ) MOSC稳定?
8 SYSCTL_MISC = 0x1<<8 清除锁定
9 SYSCTL_RCC &=~(0x0f<<23 ) 设置分频为4,主频50MHz
10 SYSCTL_RCC |= 0x03<<23
11 SYSCTL_RCC &=~(0x01<<13 ) PLL上电
12 If (SYSCTL_RIS&(0x1<<6) ) PLL稳定?
13 SYSCTL_MISC = 0x1<<6 清除锁定
14 SYSCTL_RCC |= 0x01<<22 使用分频器
15 SYSCTL_RCC &=~(0x01<<11) PLL输出到系统时钟
但实际运行时,第7行和12行一直无法等待到RIS寄存器中MOSC稳定和PLL稳定相关位。
建议:
如果有类似的汇编代码直接初始化时钟的,麻烦发送一份。
如果没有,麻烦告知以上流程的问题在哪里?
谢谢。
uTenux已经支持的MCU有:ATMEL的AT91SAM7、SAM9、SAM3;NXP的LPC2100、FUJITSU的FM3、SUMSANG的S3C2440等.