实验三 烧写实验
实验目的:
通过本实验掌握驱动程序动态加载的原理以及动态加载的步骤,另外掌握ARM开发板烧写的内容及步骤。 一、实验设备:
1、 安装vmware8.0及unbuntu10.10的计算机 2、 TQ2440开发板 3、 串口线 4、 USB线
实验原理:
1) S3C2440的启动模式
S3C2440支持两种启动模式:从nand flash启动和从NOR flash启动: 在ARM上电的情况下,流程如下: 1、 关闭看门狗,关闭所有中断。
2、 设置系统工作频率,FCLK,HCLK,PCLK,UCLK。
3、 初始化内存控制寄存器,初始化参数在段SMRDATA里定义。SDRAM初始化在这里处理。
4、 在开发板上电时,按住接在EINT0脚上的按键会清零MSDRAM。 5、 初始化堆栈
6、 读OM0,OM1引脚状态,判断是从NAND FLASH启动还是从NOR FLASH启动。
从NAND flash启动:
如果是从NAND FLASH启动,把NAND FLASH的代码拷贝到SDRAM中,接着程序开始在SDARM中运行。然后初始化数据段,最后跳转到main()函数开始运行。
从NAND FLASH启动时,在ARM上电时,ARM会自动把NAND FLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开始运行。 从nor flash启动:
如果是从NOR FLASH启动,判断ResetEntry值和BaseOfROM值是否相等,BaseOfROM值是在ADS里定义的RO BASE,如果定义为0X30000000,因为ARM上电ResetEntry值为0,所以接下来程序会把NOR FLASH里的程序拷贝到SDRAM中。如果RO BASE定义为0,将直接在NOR FLASH里运行。然后初始化数据段,最后跳转到main()函数开始运行。
从NOR FLASH启动时,因为NOR FLASH接在bank0。地址映射是0X00000000。
所以ARM上电后直接运行NOR FLASH里的程序。此时S3C2440内部SRAM地址为0X40000000。
ARM上电启动都是从0X00000000开始运行。但是对于复位程序入口,ResetEntry的值在ARM上电运行时是0X00000000,在JTAG仿真时是0X30000000。这个值很关键,在拷贝程序时会用到。
2) NOR flash以及NAND flash上存储的内容:
NOR flash上预存一段引导程序 u-boot ,可以通过Jtag对NOR FLASH上的U-BOOT
进行烧写
NAND FLASH烧写的内容:u-boot、内核、根文件系统;要烧写NAND FLASH 要事
先对NAND FLASH 进行分区;然后从NOR flash启动,从而引导对nand flash烧写; Nand flash的分区情况:参考
NAND FLASH烧写使用的工具:串口线+超级终端、USB线+DNW串口工具
DNW软件,是用来做嵌入式开发时用来下载文件镜像的,ARM系列芯片:S3C2440,S3C2410等。
NAND FLASH烧写具体步骤
(一)烧写的内容:
第一:首先烧写nor:什么都没有的开发板,需要在nor flash 烧写uboot文件,用h-jtag
或者j-link,
第二:第一步完成之后,在nor下面启动,选择1,烧写uboot,文件还是uboot 第三:在nand模式下启动,进入烧写模式,选择2,烧写eboot,然后选择3,烧写zImage, 选择b,烧写logo,最后选择6,烧写文件系统,就是那个root_qt的文件, 烧写完后,选择8可以进入linux系统,或者关电重启进入系统。
第一次进入系统需要调整触摸,首先使用usb鼠标-》我的设备-》控制面板-》笔针-》校准-》在校准,在出来的画面。利用触摸板点击十字坐标5次,十字坐标消失后再点击一次触摸屏,即可。
(二)烧写的具体步骤截图:
传送驱动程序至开发板:利用串口方式,或者网络方式 打开超级终端
安装USB驱动
开发板打到下载模式,并打开PC机上的超级终端
选择1,下载U-boot
打开DNW工具,选择菜单USB PART---transmit将U-BOOT烧写进开发板
按照相同步骤,将内核以及文件系统烧写进开发板