11次发布

0.1.11 2020年12月18日
0.1.10 2020年8月26日
0.1.8 2020年5月11日
0.1.7 2020年4月1日
0.1.1 2019年11月9日

#1756 in 嵌入式开发


2 个crate中使用 (通过 himpp)

MIT 许可证

18KB
314

hifb-sys

Build Status

Hi35XX FB API的Rust不安全绑定。

要求

  1. 目标板工具链必须安装并导出到 PATH
    • hi3516ev200 - arm-himix100-linux.
    • hi3516ev300 - 与 hi3516ev200 相同。
    • hi3518ev200 - 与 hi3516ev200 相同。
    • hi3518ev300 - 与 hi3516ev200 相同。
    • hi3519av100 - arm-himix200-linux.
    • hi3531v100 - arm-hisiv100nptl-linux.
    • hi3559av100 - aarch64-himix100-linux.
  2. 必须为目标板安装rust目标
    • hi3516ev200 - armv7-unknown-linux-musleabihf.
    • hi3516ev300 - 与 hi3516ev200 相同。
    • hi3518ev200 - 与 hi3516ev200 相同。
    • hi3518ev300 - 与 hi3516ev200 相同。
    • hi3519av100 - aarch64-unknown-linux-gnu.
    • hi3531v100 - arm-unknown-linux-musleabi.
    • hi3559av100 - aarch64-unknown-linux-gnu.
  3. MPP_DIR 导出到包含 mpp-lib 的目录。
  4. SYS_INCLUDE 导出到包含系统头文件的目录。
  5. SYS_LIBDIR 导出到包含系统库的目录。

工具链和mpp-lib可以从BSP SDK中获取。

环境默认值

Hi3516EV200

Hi3616EV300、Hi3616EV200、Hi3618EV300使用相同的SDK。

export PATH=/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH
export MPP_DIR=vendor/mpp-lib-Hi3516EV200_V1.0.1.0
export SYS_INCLUDE=/opt/hisi-linux/x86-arm/arm-himix100-linux/target/usr/include

Hi3519AV100

export PATH=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin:$PATH
export MPP_DIR=vendor/mpp-lib-Hi3519AV100_V2.0.2.0
export SYS_INCLUDE=/opt/hisi-linux/x86-arm/arm-himix200-linux/target/usr/include

Hi3531V100

export PATH=/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin:$PATH
export MPP_DIR=vendor/mpp-lib-Hi3531V100_V1.0.D.0
export SYS_INCLUDE=/opt/hisi-linux-nptl/arm-hisiv100-linux/target/usr/include

Hi3559AV100

export PATH=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin:$PATH
export MPP_DIR=vendor/mpp-lib-Hi3559AV100_V2.0.2.0
export SYS_INCLUDE=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/aarch64-linux-gnu/sys-include

构建

要构建包,您必须首先设置交叉编译环境。

.cargo/ 中有一些预设,可以帮助您快速设置交叉编译。

示例

# Setup for Hi3559AV100 boards
cp .cargo/hi3559av100.toml .cargo/config
# or for link static libraries
cp .cargo/hi3559av100-static.toml .cargo/config
# Build the package ...
cargo b

确保在Cargo.toml中启用了 hi3559av100 功能,hi3559av100 指定了目标板,您可以更改为其他,例如: hi3531v100

示例

use hifb_sys::{HI_BOOL, FBIOPUT_SHOW_HIFB};
use libc::{close, ioctl, open, O_RDWR};
use std::ffi::CString;

fn main() {
    unsafe {
        let dev = CString::from("/dev/fb0");
        let fd = open(dev.as_ptr(), O_RDWR);
        assert!(fd > 0);
        let val = HI_BOOL::HI_TRUE;
        let err = ioctl(fd, FBIOPUT_SHOW_HIFB, &val);
        assert_eq!(0, err);
        close(fd);
    }
}

无运行时依赖

~0–1.8MB
~34K SLoC