• linux 应用编程APIS


    common api

    atoi
    sleep
    usleep
    mknod
    isdigit
    getpwuid struct passwd
    getgrgid struct group
    system
    sync
    getopt_long 应用程序命令行参数解析函数

    sem_init
    sem_wait
    sem_post

    IO 多路复用 API

    open O_NONBLOCK
    poll
    epoll

    fd_set
    struct timeval
    FD_ZERO
    FD_SET
    FD_ISSET
    select

    IO api

    FILE
    fopen
    fgets
    fseek
    ftell
    fread
    fwrite
    fclose
    fflush
    fsync

    open
    read
    write
    ioctl
    lseek
    mmap
    close
    access

    fprintf
    printf
    fscanf
    sscanf
    snprintf
    scanf

    opendir
    closedir
    readdir

    字符串/内存 API

    strlcat
    strcmp
    strncmp
    strncpy
    strtok_r
    strchr
    strrchr
    strlen
    strlcpy
    strstr
    strcasestr
    strcasecmp
    strcat
    strspn
    strtol
    strpbrk
    strdup

    calloc
    malloc
    realloc
    free
    memset
    memcpy
    memmove

    IPC API

    socket (netlink)
    setsockopt
    bind
    recv

    key_t
    ftok
    msgget
    msgrcv
    msgsnd

    mkfifo
    pipe
    popen

    多线程pthread API

    pthread_create
    pthread_detach
    pthread_mutex_init
    pthread_mutex_lock
    pthread_mutex_unlock
    pthread_mutex_t

    uart 编程 API

    uart设备文件:/dev/ttyHSx

    struct termios // 配置串口参数 数据位、parity(none、odd、even)、波特率、停止位、流控(none、hardware、software)
    tcgetattr
    tcsetattr
    cfmakeraw
    bzero
    cfsetispeed
    cfsetospeed
    tcflush
    open
    close
    read
    write

    i2c 编程 API

    i2c_dev.c 这个驱动模块是 用户空间 i2c 接口
    /dev/i2c-x 设备文件,代表一个 i2c adapter

    struct i2c_msg
    struct i2c_rdwr_ioctl_data
    ioctl I2C_RDWR
    open
    close

    在定义 struct i2c_msg数组时,涉及参数有:i2c 7位地址、读写 flag、buffer、buffer长度。
    注意:
    寄存器地址是大端传输。
    对于i2c 写,buffer的前几个字节是寄存器地址。
    对于i2c 读,i2c_msg数组第一个元素是写寄存器地址消息,第二元素是读消息。

    spi 编程 API

    spidev.c spidev.h 用户空间 spi接口
    /dev/spidevX.Y 设备文件

    struct spi_ioc_transfer
    open
    ioctl SPI_IOC_RD_MODE SPI_IOC_WR_MODE SPI_IOC_MESSAGE() 支持全双工
    close
    read 半双工read
    write 半双工write

    rtc 编程 API

    rtc-dev.c rtc.h 用户空间 rtc 接口
    /dec/rtcX 设备文件
    rtc.txt 参考文档

    struct rtc_wkalrm
    struct rtc_time
    open
    ioctl RTC_RD_TIME
    ioctl RTC_WKALM_SET
    close
    备注:
    rtc-lib.c 包含了rtc相关辅助函数,例如把struct rtc_time转化为秒,或把秒时间转化为 struct rtc_time。

    用户空间 gpio device 控制 接口

    soc pins支持功能复用,对于gpio pins需要给应用程序导出控制接口,配置方向、值、中断、driver、pull等。
    gpio pins分为两类:一类用于专用功能如wakeup_in、wakeup_out等,这些专用管脚在驱动层已经配置OK。另一类则由应用程序控制使用。
    应用程序->pinctrl-msm.c(直接读写 pin 寄存器实现gpio配置,gpiolib api 无法满足需求)/pinctrl-mdm9607.c

    audio应用程序 编程接口(aplay,arec,amix)

    audio应用程序基于 alsalib库 实现,alsa驱动框架给应用程序提供的接口头文件
    路径:include/uapi
    #include <sound/asound.h>
    #include <sound/compress_params.h>
    #include <sound/compress_offload.h>

    frame大小=channel采用精度(字节单位)
    1秒的frame个数 = 采样率
    channel采用精度(字节单位) / channel采用精度(字节单位), 可以看出1秒的frame个数就是采样率。
    PCM接口的fsync信号频率和i2s接口的lrc信号频率就是采样率,一个采样周期传输的数据大小就是1个frame大小。
    raw文件格式和wave文件格式区别就是 wave文件多了 wave header。

  • 相关阅读:
    [NOI2009]管道取珠 DP + 递推
    poj3207 Ikki's Story IV
    NOIP2016Day1T2天天爱跑步(LCA+桶)
    NOIP2016Day2T3愤怒的小鸟(状压dp) O(2^n*n^2)再优化
    NOIP2016Day1T3换教室(floyd+期望dp)
    bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)
    [CodeVs4927]线段树练习5
    基数排序的奇技淫巧
    bzoj2724: [Violet 6]蒲公英(离散化+分块)
    bzoj1483: [HNOI2009]梦幻布丁(链表+启发式合并)
  • 原文地址:https://www.cnblogs.com/bobfly1984/p/14596902.html
Copyright © 2020-2023  润新知