1.原理
1.1 Bank的划分
2440支持nand flash 和 nor flash启动, 不过nor flash启动时使用的是最保守的配置,即相关的时钟设置成最小值以保证低性能的nor flash也可以工作。nor flash启动时,CPU是从nor flahs读取指令,因为nor flash的访问速度慢导致程序执行的也慢,所以要加快nor flash的运行。这就需要修改nor flash配置相关的寄存器,让其达到最高的访问速度。
2440将内存的控制分成了8个Bank, 通过GCSn引脚来控制。nor flash接在Bank0上,通过GCS0来控制。这个控制是由2440自动来完成,当你访问的内存地址在0x0000_0000~0x0800_0000之间,2440就会自动选通GCS0,因此我们只关注寄存器配置部分即可。
1.2时序
先分析一下nor flash的时序。
Tsrw:读、写操作之间的潜伏期 大于45ns
Toeh:输出使能的保持时间 0
Tce:片选使能后过多久数据才有效 70ns之内
Toe:输出使能后过多久数据才有效 30ns之内
Taa:地址信号后过多久数据才有效 70ns之内
Trc:读取数据的周期 大于70ns
Tdf:输出使能或片选使能关闭 多久之后数据才稳定 最大30ns
Tch:片选使能的保持时间 0
通过时序图可以了解到,Toec Toe Taa Tce的时间都是包含在Trc里面的,如果同时发出 使能信号、地址信号、数据信号只要保证Trc大于70ns即可。
Tsrw 需要大于45ns, 不过nor flash的手册有备注说明只是取样所得,不是100%, 因此暂不管这个参数
Tdf 需要30ns,2440没有对应的参数可以设置,因此无法管了
2440可以设置时序的参数不多, 可以看到初始值Tacc是111b(14clock),Tacc刚好对应Nor flash 的Trc。因此保证Tacc大于70ns 即可保证Nor flash稳定工作
一开始2440是由外部的12M晶振提供时钟,此时Nor flash 的访问周期就等于14/12M = 11.67ms。当系统时钟配置好后,HCLK=100M, 此时的访问周期等于14/100M = 0.14ms=140ns。
这里我们要把Tacc配置成101b(8clock),让访问时间等于80ns,以最大限度提高nor flash
2.主要寄存器
2.1BWSCON
配置位宽,由2440上电读取引脚OM[1:0]决定,因此不用配置
2.2BANKCON0
只需要将Tacc配置成8clock即可。 (个人感觉前面讲 nor flash 的Tsrw Tdf可以通过配置Tcah来解决,不过目前没有配置程序一样也可以跑,所以没有管了)
3.源码
init.c
int bank0_tacc_set(int value)
{
/* nor flash can change 0->1, but can't change 1->0
so can't clear [10:8]
*/
//BANKCON0 &= ~(0x7 << 8);
//BANKCON0 |= (value << 8);
BANKCON0 = value << 8;
return 0;
}
main.c
int led_test(void)
{
int i = 0;
led_init();
for (i = 4; i <= 6; i++)
{
led_on(i);
delay(100000);
led_off(i);
}
}
int main(int argc, char *argv[])
{
int c = 0;
uart0_init();
while(1)
{
printf("please input num[0~7]nr");
c = getchar();
putchar(c);
if (c >= '0' && c <= '7')
{
bank0_tacc_set(c - '0');
led_test();
}
else
{
printf("please input num[0~7]nr");
}
}
return 0;
}
在main函数中,通过输入0~7来给Tacc赋值,led_test是一个流水灯程序。(程序必须以nor 启动)
通过流水灯执行的快慢,来观察给Tacc赋不同值得效果。可以明显的观察到当输入5(8clock)和7(14clock)时,输入5流水灯会执行的更加快。根据测试,输入4~7都可正常工作。
这里有个问题,就是不能执行BANKCON0 &= ~(0x7 << 8), 因为Tacc被清零,此时clcok=0, nor flash就不能正常工作了。
上一篇:s3c2440学习之路-012-0 异常中断基础知识
下一篇:s3c2440学习之路-008 uart实现printf函数
推荐阅读
史海拾趣
台湾稳态公司在创立之初,便明确了自身的技术发展方向和市场定位。公司创始人凭借在电子行业多年的技术积累和敏锐的市场洞察力,带领团队专注于某一特定领域的研发和生产。通过不断的技术创新和优化,稳态公司逐渐在市场中树立起了自己的技术优势和品牌形象。
背景:人才是企业发展的第一资源。Hisetec Electronic Co Ltd公司始终将人才战略作为企业发展的核心战略之一。
发展:公司建立了完善的人才培养、引进和激励机制,积极吸引国内外优秀人才加盟。同时,公司还加强与高校和科研机构的合作,共同培养高素质的电子专业人才。此外,公司还注重员工的职业发展和企业文化建设,营造了良好的工作环境和氛围。这些举措为Hisetec公司的可持续发展提供了有力的人才保障。
请注意,以上故事均为虚构,旨在展示电子行业企业可能的发展路径和策略。实际上,Hisetec Electronic Co Ltd公司的具体发展历程和故事可能有所不同。
随着国内市场的逐渐饱和,Abundance Enterprise Company开始积极拓展国际市场。公司积极参与国际电子展览和交流活动,与全球知名电子企业建立了广泛的合作关系。同时,公司还在海外设立了多个分支机构,进一步拓展国际业务。这些举措不仅提升了公司的国际影响力,也为公司的长期发展奠定了坚实基础。
在电源管理领域,ENPIRION公司不断面临各种技术挑战。例如,如何满足企业级、工业级、通信等市场对产品的高可靠性要求?如何提供最优的电源转换率以降低成本和散热?为了应对这些挑战,ENPIRION公司不断投入研发力量,推出了一系列创新的电源管理解决方案。这些解决方案不仅满足了市场的需求,还进一步巩固了ENPIRION公司在电源管理领域的领先地位。
随着市场竞争的加剧,ECC意识到单纯的技术创新已经不足以保持领先地位。因此,公司开始注重产品品质的提升。ECC引入了严格的质量管理体系,从原材料采购到生产流程,再到成品检测,每一个环节都严格把控。这一举措使得ECC的产品质量得到了显著提升,赢得了客户的广泛信任。
随着市场竞争的加剧,ECC意识到单纯的技术创新已经不足以保持领先地位。因此,公司开始注重产品品质的提升。ECC引入了严格的质量管理体系,从原材料采购到生产流程,再到成品检测,每一个环节都严格把控。这一举措使得ECC的产品质量得到了显著提升,赢得了客户的广泛信任。
1. USB 总线的简介USB(Universal Serial Bus )是一种通用串行总线,是一种标准的连接接口。在与外面的USB 从结构和USB HOST连接时,不必重新配置系统和调节接口,USB HOST 自动识别这些接口设备,并配置适当的驱动程序,因此实现了即插即用 ...… 查看全部问答∨ |
|
在6F877,18F1320,18F1220上通过的18B20程序 这是在6F877,18F1320,18F1220上通过的18B20程序,18B20主要是延时问题,这个解决了,什么都可以通过。 # include <pic18f1220.h> # define uch unsigned char # define unint unsigned int # define DQ R ...… 查看全部问答∨ |
|
由于毕业设计需要和本身兴趣,要构造ARM+uclinux,本机Linux版本:UBUNTU6 .06. 在本机上安装了www.uclinux.org上下的arm-elf-tools, 然后arm-elf-gcc-v,显示如下 Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specs gcc ver ...… 查看全部问答∨ |
|
用DS3.2的DriverWized生成一个驱动程序后. 生成的win32 console应用程序无法打开和运行.exe文件. 错误提示: Could not execute: Bad executable format (Win32 error 193) Cannot execute program 为什么我的应用程序无法运行? 另外如何直接在D ...… 查看全部问答∨ |
在项目中遇到一个问题:需要将一个变量放到一个指定的flash地址里,即flash的绝对地址中。我查看了IAR的complier手册,上面的例子说以下面的方式定义即可。const int bootKey @ 0x0801FFFC = 3; /* O ...… 查看全部问答∨ |