打印

威视锐ZYNQ开发板-ZingSK嵌入式入门设计--Linux_Hello_LED

[复制链接]
3122|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zingsoc|  楼主 | 2013-7-11 11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    ZingSK嵌入式入门设计--Linux_Hello_LED
   
一、概述
   本例程在ZingSK入门设计--Hello_LED基础之上,通过编写Linux下的LED驱动程序,使用户可以在应用层通过Linux系统的标准接口来访问设备,而不用关心寄存器等具体的硬件问题,本篇将介绍ZingSK-Linux下LED驱动的编写及Device Tree的配置。
   
硬件平台:ZingSK开发套件
开发环境:Windows7-32位、VMware 9.0 + Ubuntu 12.04、arm- xilinx- linux-gnueabi交叉编译环境 
嵌入式Linux: zynq_base_trd_14.3(基于ZingSK修改)

LED例程运行需要一系列二进制文件如下表所示:

文件名        描述
   
BOOT.BIN        由EDK bootgen工具创建,包含 FSBL (First Stage Boot Loader), FPGA bit-stream, U-Boot(基于zynq_base_trd_14.3构建)
uImage        Linux kernel(基于zynq_base_trd_14.3内核编译)
devicetree.dtb        Device Tree Blob
uramdisk.image.gz        根文件系统
led_driver.ko        LED驱动
led-test        LED测试程序
   表1-1
二、软件设计
   1、Device Tree修改部分:
   添加led节点:
   
  led: led@65e00000 {
          compatible = "zing,led-1.00.a";
          reg = < 0x65e00000 0x10000 >;
          xlnx,dphase-timeout = <0x8>;
          xlnx,family = "zynq";
          xlnx,num-mem = <0x1>;
          xlnx,num-reg = <0x1>;
          xlnx,s-axi-min-size = <0x1ff>;
          xlnx,slv-awidth = <0x20>;
          xlnx,slv-dwidth = <0x20>;
          xlnx,use-wstrb = <0x0>;
          } ;
   

  compatible 属性是一个字符串的列表,列表中的第一个字符串表征了结点代表的确切设备,是连接驱动与硬件平台信息的桥梁。
  
  LED驱动是一个简单的字符设备驱动。
  代码片段:
  驱动probe函数,注册设备:
  static int driver_probe(struct platform_device *pdev)
  {
          int result;
          result = led_init(pdev->dev.of_node);
          if (result < 0) {
                  pr_err("%s: error %d\n", __func__, result);
                  return result;
          }
          pr_info("led: driver probed!\n");
          return 0;
  }
  物理地址到虚拟地址的映射:
  pLED_BASEADDR = of_iomap(np, 0);
  if (pLED_BASEADDR == NULL) {
          pr_err("of_iomap error!\n");
          return -ENOMEM;
          }
  LED节点中的compatible属性:
  static struct of_device_id led_of_match[] __devinitdata = {
          {.compatible = "zing,led-1.00.a"},
          { /* end of table */ },
  };

   应用程序通过ioctl函数对LED进行操作:
  #ifdef  IOCTL
          while(1)
          {
                  if(ioctl(fd, LED_ON, i) < 0)
                  {
                          perror("ioctl");
                          return -1;
                  }
                  usleep(200000);
                  ioctl(fd, LED_OFF,i);
                  usleep(200000);
                  i += 1;
                  if(i > 11)
                          i = 0;
          }
  #endif
三、快速启动
   在ZingSK上启动LED例程需要一下几步:
   · 格式化TF并将表1-1中所有文件拷贝到其中。
   · 将TF卡插入ZingSK的TF卡插槽中。
   · 确保ZingSK板卡跳线正确设置为TF卡启动模式。
   6V电源、USB-UART连接线
   以下分步介绍:
 开发板连接6 V电源(JP1),不要打开电源。
 
 图 1-1
 
 将包含了LED例程二进制文件的TF闪存卡,插入到Zing SK开发板的TF卡插槽内。
 
 图 1-2
 
 用USB Type-A -USB Mini-B 电缆连接开发板UART与电脑.
 
 图 1-3
 
 使用“设备管理器”,以确定COM端口。 打开一个串口调试程序,配置为115200/8/n/1/n。
 
 图 1-4
 
 
 图 1-5
 
 打开电源开关(SP1) ,开发板上电运行。
 
 图 1-6
 
 在串口调试工具的窗口将会显示Linux的引导过程。
 
 
 图 1-7
 
 约半分钟左右,串口调试工具的窗口将会显示zynq>提示符,首先加载LED驱动”insmod  /mnt/led_driver.ko”,然后键入”/mnt/led-test”运行LED测试例程。
   
 
 效果图
   
   

相关帖子

沙发
GoldSunMonkey| | 2013-7-11 21:38 | 只看该作者
没图,我真想封了你

使用特权

评论回复
板凳
GoldSunMonkey| | 2013-7-11 21:38 | 只看该作者
要转就好好转

使用特权

评论回复
地板
王紫豪| | 2013-7-11 21:54 | 只看该作者
是的哈,弄得知识不是知识,广告不是广告的

使用特权

评论回复
5
shiyinjita| | 2013-7-11 23:01 | 只看该作者
价格啊,是硬伤,一款Z的开发板都要3000大洋,弄的想移植个ARM的IP来玩系统了

使用特权

评论回复
6
iampeter| | 2013-7-12 13:25 | 只看该作者
实在太贵了,还不如自己做一个!!!

使用特权

评论回复
7
qin552011373| | 2013-7-12 19:18 | 只看该作者
这板子多少钱一个

使用特权

评论回复
8
GoldSunMonkey| | 2013-7-12 19:48 | 只看该作者
iampeter 发表于 2013-7-12 13:25
实在太贵了,还不如自己做一个!!!

;P欢迎自己做板

使用特权

评论回复
9
GoldSunMonkey| | 2013-7-12 19:49 | 只看该作者
qin552011373 发表于 2013-7-12 19:18
这板子多少钱一个

估计3000元左右

使用特权

评论回复
10
qin552011373| | 2013-7-13 15:11 | 只看该作者
GoldSunMonkey 发表于 2013-7-12 19:49
估计3000元左右

好贵

使用特权

评论回复
11
冥顽的石头| | 2013-7-15 02:01 | 只看该作者

使用特权

评论回复
12
GoldSunMonkey| | 2013-7-18 00:05 | 只看该作者
qin552011373 发表于 2013-7-13 15:11
好贵

不贵啊

使用特权

评论回复
13
GoldSunMonkey| | 2013-7-18 00:05 | 只看该作者
qin552011373 发表于 2013-7-13 15:11
好贵

一点都不贵,亲

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
Tianya283 + 3
14
qin552011373| | 2013-7-18 08:38 | 只看该作者
GoldSunMonkey 发表于 2013-7-18 00:05
一点都不贵,亲

我一个月工资才比这个多一点  贵死了

使用特权

评论回复
15
GoldSunMonkey| | 2013-7-20 15:11 | 只看该作者
qin552011373 发表于 2013-7-18 08:38
我一个月工资才比这个多一点  贵死了

:L工资那么少啊

使用特权

评论回复
16
GoldSunMonkey| | 2013-7-20 15:11 | 只看该作者
:)

使用特权

评论回复
17
Tianya283| | 2013-7-20 20:08 | 只看该作者
GoldSunMonkey 发表于 2013-7-20 15:11
工资那么少啊

挺多啦

使用特权

评论回复
18
qin552011373| | 2013-7-21 09:20 | 只看该作者
GoldSunMonkey 发表于 2013-7-20 15:11
工资那么少啊

今年的本科狗出来在广州基本就是这个价钱   悲催啊

使用特权

评论回复
19
GoldSunMonkey| | 2013-7-21 21:03 | 只看该作者
qin552011373 发表于 2013-7-21 09:20
今年的本科狗出来在广州基本就是这个价钱   悲催啊

:L妄自菲薄

使用特权

评论回复
评分
参与人数 1威望 +10 收起 理由
qin552011373 + 10 神马都是浮云
20
GoldSunMonkey| | 2013-7-21 21:04 | 只看该作者
以后会慢慢成长啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

9

帖子

0

粉丝