|
威视锐ZYNQ开发板-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 IOCTLwhile(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连接线以下分步介绍:1. 开发板连接6 V电源(JP1),不要打开电源。 图 1-1 2. 将包含了LED例程二进制文件的TF闪存卡,插入到Zing SK开发板的TF卡插槽内。 图 1-2 3. 用USB Type-A -USB Mini-B 电缆连接开发板UART与电脑. 图 1-3 4. 使用“设备管理器”,以确定COM端口。 打开一个串口调试程序,配置为115200/8/n/1/n。 图 1-4 图 1-5 5. 打开电源开关(SP1) ,开发板上电运行。 图 1-6 6. 在串口调试工具的窗口将会显示Linux的引导过程。 图 1-7 7. 约半分钟左右,串口调试工具的窗口将会显示zynq>提示符,首先加载LED驱动”insmod /mnt/led_driver.ko”,然后键入”/mnt/led-test”运行LED测试例程。 效果图
|
|