- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LED流水灯
一、【实验目的】
1、掌握基本的ARM中C语言编程方法. 深入理解ARM开发环境的体系结构。
2、演示程序的效果,并对程序结果进行分析。
3、熟悉并掌握windows平台下的嵌入式开发的基本步骤和原理,并对嵌入式系统有更深入的了解。
二、【实验步骤】
一、打开Virtual Machine虚拟机软件,在打开的软件中打开存在的虚拟机或分组,并在E盘中找到ubuntu系统打开。
二、安装交叉编译器
1、将cross-4.2.2-eabi.tar.bz2文件拷贝到Ubuntu的/forlinux目录下。在Uuntu中新建一个终 端,输入下面的命令安装交叉编译器:
#cd /forlinux (进入/forlinux目录)
#mkfir /usr/local/arm (创建目录,若目录存在会提示错误,跳过即可)
#tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm (编译器解压到/usr/local/arm)
2、完成解压后将在/usr/local/arm目录下生成“4.2.2-eabi”目录。
三、挂载NFS文件系统目录
1、启动nfs服务之前,必须在Ubuntu上准备好NFS共享目录。
例如我们采用Ubuntu的“/forlinux/root”作为NFS共享目录,就需要将“FORLINX_6410_yaffs2_v1.0.tgz”压缩文件拷贝到这个目录下,然后解压缩,得到根文件系统所需要的目录。
2、在Ubuntu上打开一个终端,输入以下命令:#mkdir /forlinux/root
3、将FORLINX_6410_yaffs2_v1.0.tgz文件拷贝到该目录下,
4、解压命令:#tar -zxf FORLINX_6410_yaffs2_v1.0.tgz
四、启动超级终端
1、启动开始—附件—通讯—超级终端。
2、在超级终端弹出的连接描述中输入111作为名称,接着选择第一个电话图案,接着点击确定。
3、在弹出的COM1属性窗口中选择每秒位数为115200,数据位为8,奇偶校验为无,,停止位为1,数据流控制为无,然后点击确定。如下图所示
4、完成配置后,用串口线连接开发板的COM1,接着在打开开发板的电源时立刻不断敲键盘的空格键。这时,超级终端里面完成一些配置后停住,我们在 SMDK6410 #setenv bootargs root=/dev/nfs nfsroot=172.43.24.140:/forlinux/root ip=172.43.24.141:172.43.24.140:172.43.24.0:255.255.255.0::eth0: console=ttySAC0,
115200.
5、保存 SMDK6410 # saveenv
6、重新启动开发板,Linux内核启动后会自动挂载NFS文件系统。
LED驱动
1、编写LED驱动程序myled.c
2、编写Makefile
3、编写应用程序myled_app.c
4、在Ubuntu的forlinux目录下新建一个led目录把上面编写的3个文件拷贝到led目录下,在led目录下输入make编译myled.c生成myled.ko。
5、用交叉编译工具链编译应用程序myled_app.c,在nfs的共享目录/forlinux/root新建myled目录,并把myled_app,myled.ko拷贝到led目录下
6、开发板上电,进入myled目录,加载myled模块使用insmod,最后输入./app number on/off运行程序,观察led的变化。
三、【Makefile文件分析】
obj-m := myled.o //目标文件:myled.o
KDIR := /linux2.6.28 //内核路径
all:
make -C $(KDIR) M=$(PWD) modules //在内核路径KDIR := /linux2.6.28下生成myled.o
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order//删除这些后缀的文件
四、【驱动程序分析】
1、
static int __init Led_init(void)
{
int ret;
/* 实现地址映射*/
Clock_Address=ioremap(SEG_LED, 1);
Led_Address=ioremap(LED_DATE, 1);
Gpkcon_Address=ioremap(GPKCON0, 1);
文档评论(0)