- 0
- 0
- 约2.39千字
- 约 2页
- 2026-01-26 发布于北京
- 举报
2410到2440移植
看本文件请参考《都江堰操作系统与嵌入式系统设计》中地15章。
与本文一起共享的“2410_2440x_to_2440a_差别-040203.pdf”文件描述了2410和2440的区别。
因2410和2440的差别很小,所以移植工作量非常小。仅需修改:配置文件config.h、启动文件
initcpu.s,uart模块、nand驱动模块,键盘模块key-hard.c。
1.配置文件
config.h文件中,只需要修改主频相关的几个参数,如下:
#definecn_mclk(400*M)//主频
#definecn_hclk(cn_mclk/4)//高速外设时钟
#definecn_pclk(cn_mclk/8)//低速外设时钟
#definecn_timer_clkcn_pclk//定时器输入时钟
2.启动代码
启动代码即initcpu.s文件,该文件在2410和2440中仅两处不同。
1、时钟寄存器设置,2410需设置clkdivn、clkcon、upllcon、mpllcon共4个寄存器,2440
则多一个寄存器camdivn需要设置。2410设置完mpllcon后可以立即设置upllcon,2440
则需要在两者中间7条nop指令。
2、内存总线设置,2410和2440主频不一样,总线定时所要求的时钟数也会不一样。
3.串口驱动
2410和2440的串口结构几乎一样,不同点在于:
1、2410的串口fifo是16字节,而2440是64字节。
2、由于fifo深度不同,导致UFSTAT寄存器中个位的定义不一致。
这种相似性使得两者驱动程序的差异也非常小,读者可以直接比较两者的uart.c文件,很容易
理解的,在此不再赘述了。
4.键盘驱动
键盘驱动中需要修改的是key_hard.c文件中的两个函数。
bool_tkey_hard_init(void);//把键盘连接的口线设为输
uint8_tkey_scan_hard(uint16_t*key);
这是一个与键盘电路密切相关的函数,2410版有4个按键,2440版则有6个按键,且都是用口
线直接读入,故两个函数极为相似,仅口线不一样。
5.nand驱动
2410和2440的nand驱动也非常相似,主要区别在于:
1、2410仅支持小块nandflash,2440则同时支持大块nandflash。
2、为支持大块nandflash,2440增加了许多寄存器。
3、2440增加了一个控制寄存器NFCONT,原2410中config寄存器NFCONF中的部分功能被
转移到NFCONT中。
因此,两者代码的主要不同,体现在nand.h文件中,差异点:
1、structnand_reg结构的定义不同。
2、两者NFCONF寄存器中对talcs的定义不一样,在nand.h中的定义不不同
#definecn_talcs0//1clk(10ns)for2410
#definecn_talcs1//1clk(10ns)for2440
3、2410中,片选控制在NFCONF寄存器的bit.11中,2440则在NFCONT的bit.1中,使下列
两个宏的定义不同。
2410中:
#defin
原创力文档

文档评论(0)