zoukankan      html  css  js  c++  java
  • 迅为4412开发板编写简单应用调用驱动

    本文转自迅为4412精英版群:

    本期实验比较简单,就是写一个简单的应用程序调用前面写的驱动。

    硬件工具

    1iTOP4412 开发板

    2盘或者 TF 

    3PC 

    4)串口

    9.1.1.2软件工具

    1)虚拟机 Vmware

    2Ubuntu12.04.2

    3)超级终端(串口助手)

    4)实验配套源码文件夹“invoke_hello

    视频资源

    本节配套视频为“视频 09-编写简单应用调用驱动”

    学习目标

    本章需要学习以下内容:

    学会调用设备节点

    实验操作

    本期实验很简单,在前面 Linux 应用中就已经学习过设备节点的调用。

    需要用到函数 extern void printf(const char *format,...);定义在标准 语言头文件

    stdio.h 中。

    下面几个头文件在应用中一般一起调用。

    头文件 #include <sys/types.h>包含基本系统数据类型。系统的基本数据类型在 32 

    译环境中保持为 32 位值,并会在 64 编译环境中增长为 64 位值。

    头文件<sys/stat.h>包含系统调用文件的函数。可以调用普通文件、目录、管道、socket

    字符、块的属性。

    <fcntl.h>定义了 open 函数

    <unistd.h>定义了 close 函数

    <sys/ioctl.h>定义了 ioctl 函数

    另外提醒一下,这些头文件是和编译器在一起。

    这里使用,如下图所示,进入目录“/usr/local/arm/arm-2009q3”。

     

    使用查找命令“find ./ -name stat.h,如下图所示,使用的头文件是目录

    /arm-none-linux-gnueabi/libc/usr/include/sys/stat.h”中的<sys/stat.h>.

     

    其它几个头文件可以采用类似的方法查找,这里给大家提醒这一点,因为有时候拿到源码

    之后,可能编译器版本和源码不完全对应,这个时候就有可能需要修改和处理一下头文件。不过这种问题一般都可以通过网络查找错误提示的方法一个一个解决。

    如下图所示,是一个简单的调用程序。

     

    新建“invoke_hello”文件夹,将上图的中的文件拷贝进入,进入新建的“invoke_hello

    目录,使用编译命令

    arm-none-linux-gnueabi-gcc -o invoke_hello invoke_hello.c -static

    编译,如下图所示。

     

    将 “invoke_hello” 拷贝到 盘, 启动开发板, 加载前一期的 “devicenode_linux_module

    驱动,如下图所示,使用 invoke_hello 调用设备节点“/dev/hello_ctl123”。

    先使用命令“mount /dev/sda1 /mnt/udisk/”加载 盘;

    使用命令“insmod /mnt/udisk/devicenode_linux_module.ko”加载驱动;

    使用命令“./mnt/udisk/invoke_hello,运行 invoke_hello

     

    如上图所示,运行“invoke_hello”之后,会打印以下内容”

    hello open

    cmd is 1,arg is 6

    hello release

    如下图所示,设备节点 opencloseioctl 分别对应打印信息

    printk(KERN_EMERG "hello open ");

    printk(KERN_EMERG "hello release ");

    printk("cmd is %d,arg is %d ",cmd,arg);ioctl 会打印第二个和第三个参数。

     

    通过前面的分析,可以看到上层应用对设备节点 opencloseioctl 分别对应驱动层的

    openreleaseunlocked_ioctl

  • 相关阅读:
    ThinkPhp6.x+AntDesign+Vue前后端分离快速开发平台
    Laravel8.x+AntDesign+Vue前后端分离快速开发平台
    JavaWeb v1.0.0后台开发框架,专业版发布——细节完善,体验优化
    高并发情况下的DB重复插入解决方案随笔
    jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO
    新能源车牌的问题
    OCR识别移动端的实现与应用
    在拥有vin码识别的时代,您还在傻乎乎手工录入吗?
    国内的车牌识别算法怎样选择
    一码在手运车无忧
  • 原文地址:https://www.cnblogs.com/topeet/p/4798420.html
Copyright © 2011-2022 走看看