Windows CE下bootloader和驱动之间的通信
2008-05-05 14:35
232 查看
本文主要介绍bootloader和image之间的通信,以ARM架构的CPU在CE5.0下的开发为例。
首先我们可以查看platform下的BIB文件(WINCEROOT/PLATFORM/MAINSTONEII/FILES),开始的一段如下:
; Memory Map
; ----------
;
; 8000.0000 -+
; | Bootloader Stack (64KB)
; 8001.0000 -+
; | Bootloader RAM (64KB)
; 8002.0000 -+
; | Bootloader Code (256KB)
; 8006.0000 -+
; | GAP (reserved for future)
; 800F.F000 -+
; | ARGS (4KB)
; 8010.0000 -+
; |
; | OS (NK) Code (48MB)
; |
; 8310.0000 -+ **auto-size**
; |
; | OS (NK) RAM (15MB)
; |
; 8400.0000 -+
;
我们看到在0x80060000到0x800FF000的这段内存是reserved for future,在bootloader的代码中我们就可以把需要传递给系统的参数拷贝到这里,可以调用memcpy来
实现,在系统起来以后我们可以在驱动中把这个地址再映射出来,就可以得到bootloader传递过来的残说。调用MmMapIoSpace来实现。
首先我们可以查看platform下的BIB文件(WINCEROOT/PLATFORM/MAINSTONEII/FILES),开始的一段如下:
; Memory Map
; ----------
;
; 8000.0000 -+
; | Bootloader Stack (64KB)
; 8001.0000 -+
; | Bootloader RAM (64KB)
; 8002.0000 -+
; | Bootloader Code (256KB)
; 8006.0000 -+
; | GAP (reserved for future)
; 800F.F000 -+
; | ARGS (4KB)
; 8010.0000 -+
; |
; | OS (NK) Code (48MB)
; |
; 8310.0000 -+ **auto-size**
; |
; | OS (NK) RAM (15MB)
; |
; 8400.0000 -+
;
我们看到在0x80060000到0x800FF000的这段内存是reserved for future,在bootloader的代码中我们就可以把需要传递给系统的参数拷贝到这里,可以调用memcpy来
实现,在系统起来以后我们可以在驱动中把这个地址再映射出来,就可以得到bootloader传递过来的残说。调用MmMapIoSpace来实现。
相关文章推荐
- linux内核两个驱动之间的通信
- linux内核两个驱动之间的通信
- 驱动与应用层之间的共享内存通信与事件通知
- 自己构造IRP包来实现驱动与驱动之间的通信(成功笔记下来以后参考用)
- linux内核两个驱动之间的通信
- Windows 驱动与驱动之间的通信
- Windows 驱动之间的通信
- JAVA多线程之——线程之间的通信
- Bundle之间的通信
- Activity通过bindService启动Service后Activity和Service之间的通信!
- hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍
- linux内核模块之间通信
- PC电脑和Android模拟器访问及模拟器之间tcp/udp通信
- 帅!简单实现flex和excel之间的通信——拷贝
- android:cha1.2 通过Intent实现Activity之间的通信
- Android Activity和Fragment之间的常规通信方式
- ppu与spu之间的邮箱通信
- Android Service与Activity之间通信的几种方式
- 【Flex Viewer】(5)Widget之间通信
- Android A/B System OTA分析(三)主系统和bootloader的通信