嵌入式Linux之我行——s3c2440的IO静态映射的分析
来源:互联网 发布:女程序员容易老吗 编辑:程序博客网 时间:2024/06/03 09:25
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。
内存映射分3个层次:
- 开发板的层次(如:声卡,网卡和开发板相关的部分)
- 最小系统的层次(系统必需的几个,如GPIO,IRQ,MEMCTRL,UART)
- 其他系统的层次(不影响开机的部分,如:usb,lcd,adc)
开发板的mapio的初始化:
smdk2440_map_io函数中会调用:
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
而开发板相关的内存映射在smdk2440_iodesc,有ISA,声卡,网卡等。定义如下:
static struct map_desc smdk2440_iodesc[] __initdata = {
/* ISA IO Space map (memory space selected by A24) */
/* ISA IO Space map (memory space selected by A24) */
{ (u32)S3C24XX_VA_ISA_WORD, S3C2410_CS2, SZ_16M, MT_DEVICE },
{ (u32)S3C24XX_VA_ISA_BYTE, S3C2410_CS2, SZ_16M, MT_DEVICE },
};
{ (u32)S3C24XX_VA_ISA_BYTE, S3C2410_CS2, SZ_16M, MT_DEVICE },
};
最小系统的io初始化:
s3c24xx_init_io函数会调用:
s3c24xx_init_io函数会调用:
iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));
而最小系统相关的io映射在s3c_iodesc,定义如下:
而最小系统相关的io映射在s3c_iodesc,定义如下:
static struct map_desc s3c_iodesc[] __initdata = {
IODESC_ENT(GPIO),
IODESC_ENT(IRQ),
IODESC_ENT(MEMCTRL),
IODESC_ENT(UART)
};
这个部分是系统启动必须的映射。后续会调用(cpu->map_io)(mach_desc, size);来完成其他映射。
这个函数会调用:
IODESC_ENT(GPIO),
IODESC_ENT(IRQ),
IODESC_ENT(MEMCTRL),
IODESC_ENT(UART)
};
这个部分是系统启动必须的映射。后续会调用(cpu->map_io)(mach_desc, size);来完成其他映射。
这个函数会调用:
iotable_init(s3c2440_iodesc, ARRAY_SIZE(s3c2440_iodesc));
定义如下:
static struct map_desc s3c2440_iodesc[] __initdata = {
IODESC_ENT(USBHOST),
IODESC_ENT(USBDEV),
IODESC_ENT(CLKPWR),
IODESC_ENT(LCD),
IODESC_ENT(TIMER),
IODESC_ENT(ADC),
IODESC_ENT(WATCHDOG),
};
定义如下:
static struct map_desc s3c2440_iodesc[] __initdata = {
IODESC_ENT(USBHOST),
IODESC_ENT(USBDEV),
IODESC_ENT(CLKPWR),
IODESC_ENT(LCD),
IODESC_ENT(TIMER),
IODESC_ENT(ADC),
IODESC_ENT(WATCHDOG),
};
综合上述发现,如果一个新加驱动,首先要看是否完成了IO映射,如果没有的话,就在开发板部分加入。
原文地址 http://blog.chinaunix.net/u2/71164/showart_1880000.html
- 嵌入式Linux之我行——s3c2440的IO静态映射的分析
- 嵌入式Linux之我行——s3c2440的IO静态映射的分析
- s3c2440的IO静态映射的分析
- s3c2440的IO静态映射的分析
- s3c2440的IO静态映射的分析
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解
- 嵌入式Linux之我行——S3C2440上触摸屏驱动实例开发讲解
- 嵌入式Linux之我行——S3C2440上RTC时钟驱动开发实例讲解
- 嵌入式Linux之我行——S3C2440上Flash驱动实例开发讲解
- 嵌入式Linux之我行——S3C2440上 ADC驱动实例开发讲解 .
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解
- 嵌入式Linux之我行——S3C2440上Flash驱动实例开发讲解(一)
- 嵌入式Linux之我行——S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
- 嵌入式Linux之我行——S3C2440上看门狗(Watchdog)驱动开发实例讲解
- 嵌入式Linux之我行——S3C2440上触摸…
- 嵌入式Linux之我行——S3C2440上触摸…
- 嵌入式Linux之我行——C+CGI+Ajax在S3C2440中的应用
- 嵌入式Linux之我行——C+CGI+Ajax在S3C2440中的应用
- float在内存中的存放方式
- myDialogBar的动态大小
- Linux CPU 信息查看
- MySQL笔记(覆盖索引)
- a
- 嵌入式Linux之我行——s3c2440的IO静态映射的分析
- 设置Gvim的启动位置与窗口大小,代码折叠及配色等
- 百度笔试题5.1
- RMAN备份(九)
- Android Camera Framework Stream(一)
- dbus 初探 版本 dbus-1.4.0
- 嵌入式Linux之我行——设备文件系统剖析与使用
- request_irq() | 注册中断服务
- Python-csrf