欢迎来到天天文库
浏览记录
ID:15554620
大小:775.00 KB
页数:13页
时间:2018-08-04
《嵌入式驱动设计实训报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2011-2012学年第2学期实验报告书 课程名称嵌入式驱动设计 系(部)信息工程系专业班级计算机09-4教改班学生姓名王军学生学号0943020120山东科技大学(泰山科技学院)一、Mini2440开发板的介绍我们这次实训用的板子是Mini2440,Mini2440是一款基于ARM9的开发板,采用SamsungS3C2440芯片,并采用专业稳定的CPU内核电源芯片和复位芯片来保证系统运行时的稳定性。在进行器件地址说明之前,有一点需要注意,nGCS0片选的空间在不同的启动模式下,映射的器件是不一样的。在N
2、ANDFlash启动模式下,内部的4KBytesBootSram被映射到nGCS0片选的空间;在NorFlash启动模式下(非NandFlash启动模式),与nGCS0相连的外部存储器NorFlash就被映射到nGCS0片选的空间SDRAM地址空间:0x30000000~0x34000000。Supervivi在出厂的时候已经预装入板子的NorFlash中,设置拨动开关S2为NORFlash启动,即可进入BIOS模式,此时开发板上的绿色LED1会呈现闪烁状态,其启动界面如下图:双击运行光盘中的“window
3、s平台工具usb下载驱动FriendlyARMUSBDownloadDriverSetup_20090421.exe”安装程序,开始安装USB下载驱动。注意:此处安装的USB驱动仅在BIOS模式下有用。安装完成后,打开光盘中的dnw.exe下载软件,可以看到USB连接OK,如图:功能主菜单如下图:一、实训流程1.确定supervivi版本、开发平台及交叉编译器;2.获取Linux内核源代码(采用版本为Linux-2.6.32.2);3.克隆建立自己的目标平台(制定交叉编译环境变量及配置内核菜单中的MIN
4、I2440);4.移植Nand驱动并更改分区信息;5.移植yaffs2;6.移植DM9000网卡驱动;7.实训扩展;三、实训内容1.确定supervivi的版本为supervivi-0945-2K,supervivi的功能可通过USB下载配合DNW这个程序使用。功能如图所示:2.获取Linux内核源代码对于Linux-2.6.32.2,我们是基于Ubuntu10.04平台做开发的,所有的配置和编译脚本也基于此平台,并使用符合EABI标准的新型编译器:arm-linux-gcc-4.3.2。3.克隆建立自己的
5、目标平台一般步骤为:(1)、获取mini2440.c我们要参考SMDK2440加入自已的开发板平台,我们使用的是mini2440,因此取名为MINI2440。在linux-2.6.32.2/arch/arm/tools/mach_types文件中,我们可以看到mini2440的机器码为1999。接下来,我们注意到linux-2.6.32.2/arch/arm/mach-s3c2440目录下有个mach-mini2440.c文件,把它直接删除。将linux-2.6.32.2/arch/arm/mach-s3c
6、2440/目录下的mach-smdk2440.c复制一份。命名为mach-mini2440.c,找到MACHINE_START(S3C2440,“SMDK2440”),修改为MACHINE_START(MINI2440,“FriendlyARMMini2440developmentboard”)。开发板运行后,在命令行终端输入:cat/proc/cpuinfo可以看到我们添加的开发板信息。(2)、修改时钟源频率在mach-mini2440.c(就是我们刚刚通过复制mach-smdk2440.c得到的)的第1
7、60行staticvoid__initsmdk2440_map_io(void)函数中,把其中的16934400(代表原SMDK2440目标板上的晶振是16.9344MHz)改为mini2440开发板上实际使用的12000000(代表mini2440开发板上的晶振12MHz,元器件标号为X2)。(3)、从SMDK2440到MINI2440制作自己的mini2440平台体系,需要把mach-mini2440.c中所有的smdk2440字样改为mini2440,可以使用批处理命令修改,在vim的命令模式下输入:
8、%s/smdk2440/mini2440/g。(把所有和“smdk2440”匹配的字符串全部替换为“mini2440”,前面的“%s“代表字符串匹配,最后的“g”代表global,是全局的意思),除此之外,还有一个地方需要改动,在mini2440_machine_init(void)函数中,把smdk_machine_init()函数调用注释掉。(因为我们后面会编写自己的初始化函数,不需要调用smdk2440原来
此文档下载收益归作者所有