linux系统小灯项目报告,嵌入式实验报告流水灯.doc

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 运行程序,观察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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。在Keil5中使用嵌入式开发板点亮小灯通常需要以下步骤: 1. 打开Keil5软件,在新建项目时选择相应的芯片型号和开发板类型。 2. 在代码编辑器中编写点亮小灯的C语言代码,通常需要包含头文件和初始化GPIO端口等操作。 3. 编译代码,生成相应的可执行文件。 4. 将开发板连接到电脑上,并通过Keil5软件下载可执行文件到开发板中。 5. 在开发板上观察小灯是否点亮。 以下是一个简单的嵌入式Keil5小灯点亮的示例代码: ```c #include <stm32f4xx.h> //包含芯片头文件 int main(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); //使能GPIO G端口时钟 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //设置GPIO G6引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //设置为输出模式 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //设置为100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOG, &GPIO_InitStructure); //初始化GPIO G端口 while (1) { GPIO_SetBits(GPIOG, GPIO_Pin_6); //设置GPIO G6引脚电平为高,点亮LED Delay(1000); //延时1秒 GPIO_ResetBits(GPIOG, GPIO_Pin_6); //设置GPIO G6引脚电平为低,熄灭LED Delay(1000); //延时1秒 } } void Delay(__IO uint32_t nCount) //延时函数 { while(nCount--) { } } ``` 这段代码实现了控制开发板上的GPIO G6引脚,通过设置引脚电平来点亮或熄灭小灯。在主函数中使用while循环不断重复点亮和熄灭的操作,通过自定义的延时函数实现了1秒钟的时间间隔。你可以根据自己的需要修改GPIO引脚和延时时间等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值