![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WINCE的bootloader开发
文章平均质量分 79
chinesedragon2010
这个作者很懒,什么都没留下…
展开
-
Nboot中nand flash控制器参数TACLS、TWRPH0和TWRPH1的确定(基于K9F1208U0B)
<br /> <br />注:K9F1208U0B的供电电压时3.3V,本系统的FCLK=533Mhz,HCLK=533/4=133Mhz<br /> <br />nand flash控制器的初始化<br />在stepldr的mian函数中调用NF_Init()来初始化nand flash控制器,下面介绍这个函数<br /> <br /> <br />其中<br />// HCLK=100Mhz<br />#define TACLS 7 <br />#define TWR原创 2010-07-27 23:12:00 · 738 阅读 · 0 评论 -
CE5.0 - romimage.exe如何填充eboot.bin中的pTOC特殊指针生成.nb0
<br />eboot.bin和eboot.nb0的差别就是<br />eboot.bin中没有填充pTOC结构体,必须使用parser解释器[类似于romimage.exe luther.gliethttp]将全局变量数据段解压释放到运行时使用的地址才行,<br />eboot.nb0中经过romimage.exe填充了pTOC结构体,所以eboot.nb0可以自己将自己用到的全局量通过KernelRelocate()函数进行解压释放,这就是为什么<br />eboot.nb0比eboot.bin的siz转载 2010-10-09 10:42:00 · 2301 阅读 · 0 评论 -
MMU和cache学习
1. MMUMMU:memory management unit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(main memory)的两级也表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是disabled。MMU的主要作用是负责从CPU内核发出的虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己的地址空间(对于WINCE5.0,每个进程是32MB;而对于WINCE6.0,每个进程的独占的虚拟空间是2G原创 2010-10-05 11:34:00 · 5775 阅读 · 1 评论 -
WINCE6.0+S3C2443的启动过程---eboot2
上接:http://blog.csdn.net/chinesedragon2010/archive/2010/09/20/5895956.aspx1.2 关闭所有的CPU中断通过对INTMSK,INTSUBMSK寄存器特定为设置为1来屏蔽中断源的中断请求,接着通过对中断模式寄存器INTMOD清零来把中断设置为IRQ模式。1.3系统时钟设置我的另一篇博客介绍了S3C2443的时钟管理http://blog.csdn.net/chinesedragon2010/archive/2010/09/24/590355原创 2010-10-03 14:44:00 · 2035 阅读 · 0 评论 -
WINCE6.0+S3C2443的启动过程---eboot3
<br />上接http://blog.csdn.net/chinesedragon2010/archive/2010/10/03/5919717.aspx<br />1.6 <br />OEMAddresstable只是用来初始化一级页表,就是所谓的段(section)描述,每个段是1MB,分为4096个段,总共4G——虚拟内存空间4G就是由此而来。<br />并且这个OEMAddresstable可以用在查表法中用来转换虚拟地址、物理地址(相互转换都可以)。<br /><br /><br />PTs(p原创 2010-10-05 15:21:00 · 2391 阅读 · 0 评论 -
WINCE6.0+S3C2443的启动过程---eboot1
<br />WINCE6.0+S3C2443的启动过程---eboot<br /><br />我们知道从nboot把eboot从nandflash中拷贝到内存指定的地址后,就接着在这个地址处开始运行eboot了,之后,nboot的工作就完成了,那么那么eboot开始执行的地址在哪里呢?我们看看/Src/Bootloader/Eboot/boot.bib下面的配置<br /><br />MEMORY<br />; Name Start Size Type<br />; ---原创 2010-09-20 08:50:00 · 2313 阅读 · 0 评论 -
WINCE6.0 + S3C2443的启动过程---nboot篇
WINCE6.0 + S3C2443的启动过程---nboot篇我们启动WINCE6.0的方式是:nboot+eboot+NK。那么是如何启动WINCE6.0系统映像的呢?首先是nboot把eboot拷贝到SDRAM中执行的地址处运行,接着eboot把NK.bin拷贝到SDRAM指定的地址处运行。首先,我们需要通过JTAG把我们nboot文件编译生成的stpldr.nb0文件烧录到nandflash的第0个block中。那么系统复位或者上电启动的动作产生之后,是如何从nboot开始执行的呢?我们先看S3C2原创 2010-08-14 10:06:00 · 936 阅读 · 1 评论 -
Eboot.bib中0x30000000到0x300020000内存的作用
<br /><br /><br /><br />Src/Bootloader/Eboot/boot.bib的memeory部分如下:<br />MEMORY<br />; Name Start Size Type<br />; ------- -------- -------- ----<br /> ARGS 80020800 00000800 RESERVED<br /> RAM 80021000 0000B000 RAM原创 2010-08-08 11:25:00 · 1461 阅读 · 0 评论 -
nboot通过串口下载并运行eboot.nb0
1. 在stepldr/main.c下面的mian函数调用Uart_Init()对串口的初始化我们使用UART1来作为debug口。2. 实现nboot通过串口下载并运行eboot.nb0的函数体我们接下来分析其实现2.1 Uart_Getch()函数这个函数主要是在nboot启动的时候,判断是否有来之我们对键盘的操作,假如我们在等待的时间之内按下空格键,那么这时候nboot就处于等待用户通过DNW.exe下载并运行eboot.nb0的状态,假如我们在等待的时间内没有按键空格键原创 2010-07-31 11:45:00 · 656 阅读 · 0 评论 -
WINCE6.0+S3C2443的启动过程---eboot4
<br />http://blog.csdn.net/chinesedragon2010/archive/2010/10/05/5922489.aspx<br /> <br />2 main函数<br />void main(void)<br />{<br /> //MemoryTest_Function();<br /> BootloaderMain();<br /> // Should never get here.<br /> SpinForever();<br />}<br原创 2010-10-12 21:30:00 · 1967 阅读 · 0 评论