WhyCan Forum

本站无需注册,无需积分,无需回复可下载所有资料,如果真的喜欢小站,请您注册之后请至少回复一个帖子激活Id,谢谢支持! 站长QQ: 516333132 (挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2017-10-06 17:01:45

basicdev
会员
注册时间: 2017-10-02
累计积分: 159

开始测试v3s 荔枝派zero 接oled, 请围观.

离线

#2 2017-10-06 17:04:39

basicdev
会员
注册时间: 2017-10-02
累计积分: 159

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

貌似这个选项已经选好了:

Device Drivers  --->
    Graphics support  --->
        Frame buffer Devices  --->
            <*> Solomon SSD1307 framebuffer support

离线

#3 2017-10-06 17:09:19

basicdev
会员
注册时间: 2017-10-02
累计积分: 159

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

修改: arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts

&i2c0 {
    status = "okay";

    ns2009: ns2009@48 {
        compatible = "nsiway,ns2009";
        reg = <0x48>;
    };

ssd1306fb: ssd1306fb@3c {
        compatible = "solomon,ssd1306fb-i2c";
        reg = <0x3c>;
        solomon,width = <128>;
        solomon,height = <64>;
        reset-gpios = <&pio 1 0 GPIO_ACTIVE_HIGH>;
        solomon,page-offset = <0>;
        solomon,com-invdir;
    };

};

最近编辑记录 basicdev (2017-10-06 17:09:38)

离线

#4 2017-10-06 17:33:01

basicdev
会员
注册时间: 2017-10-02
累计积分: 159

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

终于搞定:

v3s_oled_ssd1307.jpg

写随机数:

cat /dev/urandom > /dev/fb1

清屏:

cat /dev/zero > /dev/fb1

离线

#5 2017-10-07 11:10:31

basicdev
会员
注册时间: 2017-10-02
累计积分: 159

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

注意在参数设置中要勾选字节倒叙选项。
下面写一个测试程序,加载驱动并把图像显示到屏幕上
C测试程序

#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <string.h>

    /*seconds: the seconds; mseconds: the micro seconds*/
    void setTimer(int seconds, int mseconds)
{
    struct timeval temp;
    temp.tv_sec = seconds;
    temp.tv_usec = mseconds;
    printf("timer1\n");
    select(0, NULL, NULL, NULL, &temp);
    printf("timer2\n");
    return ;
}

int main ()
{
    char lichee[] = {
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0xE0,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x60,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x07,0x3C,0x74,0xE0,0x81,0x03,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x22,0x8C,0x10,0x43,0x04,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x42,0x84,0x10,0x22,0x0C,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x03,0x84,0x08,0x22,0x08,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x01,0x84,0x18,0x22,0x08,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x01,0x84,0x18,0x20,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x00,0x04,0x01,0x84,0x08,0x20,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
        0x40,0x10,0x04,0x03,0x84,0x18,0x20,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x08,
        0x40,0x10,0x04,0x02,0x84,0x10,0x22,0x00,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x0C,
        0x40,0x18,0x04,0x06,0x84,0x30,0x40,0x04,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x06,
        0xE0,0x0F,0x1F,0x1C,0xCE,0xC1,0x80,0x03,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x07,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x80,0x07,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xBF,0xFF,0x1F,0x00,0x00,0x00,0xC0,0x07,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xDF,0xFF,0x7F,0x00,0x00,0x00,0xE0,0x07,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC7,0xFF,0xFF,0x00,0x00,0x00,0xF0,0x03,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC9,0xFF,0xFF,0x01,0x00,0x00,0xF0,0x03,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0xFF,0xFF,0x03,0x00,0x00,0xF8,0x03,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xFF,0xFF,0x07,0x00,0x00,0xF0,0x03,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0xF7,0xFF,0x0F,0x00,0x00,0xF8,0x03,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE3,0xFF,0xFF,0x1F,0x00,0x00,0xF8,0x01,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xEF,0xFF,0xFF,0x7F,0x00,0x00,0xF8,0x01,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFB,0xFF,0xFF,0xFF,0x00,0x00,0xFC,0x01,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0x00,
        0x40,0x30,0x00,0x06,0x04,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xFE,0x00,
        0x40,0x10,0x02,0x06,0x04,0xC0,0x00,0x9C,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xFF,0x00,
        0xFE,0xFF,0x07,0x06,0x04,0x80,0xC8,0x81,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x7F,0x00,
        0x40,0x10,0x00,0x06,0x04,0x80,0x08,0x00,0xFF,0xFF,0xFF,0xFF,0x7F,0x80,0x7F,0x00,
        0x40,0x13,0x00,0x16,0xCC,0x00,0x08,0x10,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x7F,0x00,
        0x00,0xC3,0xC0,0x3F,0x04,0x00,0x08,0x0E,0xFE,0xFF,0xFF,0xFF,0xFF,0xE3,0x3F,0x00,
        0x00,0xC1,0x00,0x06,0x04,0x10,0x48,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xF7,0x3F,0x00,
        0x80,0x41,0x00,0x06,0x04,0x20,0x49,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
        0x80,0x40,0x00,0x0E,0x44,0x20,0x48,0x30,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
        0x60,0x78,0x00,0x9F,0x61,0x80,0x48,0x08,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
        0x38,0x30,0x00,0x17,0x60,0x80,0x48,0x02,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
        0x20,0x60,0x00,0x17,0x21,0x80,0x48,0x02,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,
        0xFE,0xFB,0x83,0x06,0x30,0x40,0x48,0x02,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,
        0x30,0x23,0x02,0x06,0x12,0x70,0x44,0x04,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,
        0x30,0x23,0x42,0x06,0x1A,0x60,0x44,0x04,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,
        0x10,0x31,0x02,0x06,0x0C,0x40,0x44,0x08,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,
        0x18,0x11,0x03,0x06,0x0E,0x60,0x42,0x18,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,
        0x88,0x19,0x03,0x06,0x31,0x60,0xC2,0x30,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
        0xC4,0xCD,0x01,0x86,0xE0,0x61,0x41,0x20,0xE0,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,
        0x00,0x82,0x01,0x36,0x80,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x9F,0xFF,0xFF,0xFF,0x07,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0xFF,0xFF,0xFF,0x01,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0xFF,0x7F,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    };
    int fp=0;
    long screensize=0;

    char *fbp = 0;

    struct fb_var_screeninfo vinfo;
    struct fb_fix_screeninfo finfo;
    fp = open ("/dev/fb1",O_RDWR);

    if (fp < 0){
        printf("Error : Can not open framebuffer device/n");
        exit(1);
    }

    if (ioctl(fp,FBIOGET_FSCREENINFO,&finfo)){
        printf("Error reading fixed information/n");
        exit(2);
    }

    if (ioctl(fp,FBIOGET_VSCREENINFO,&vinfo)){
        printf("Error reading variable information/n");
        exit(3);
    }

    printf("The mem is :%d\n",finfo.smem_len);
    printf("The line_length is :%d\n",finfo.line_length);
    printf("The xres is :%d\n",vinfo.xres);
    printf("The yres is :%d\n",vinfo.yres);
    printf("bits_per_pixel is :%d\n",vinfo.bits_per_pixel);

    screensize = vinfo.xres * vinfo.yres * vinfo.bits_per_pixel / 8;
    printf("screensize: %d\n",screensize);
    fbp =(char *) mmap (0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED,
        fp,0);
    if ((int) fbp == -1)
    {
        printf ("Error: failed to map framebuffer device to memory./n");
        exit (4);
    }

    int i=0;
    memset(fbp, 0x00, 1024);
    setTimer(3,0);
    while(1){
        for(i=0;i<1024;i++){
            fbp[ i ]=lichee[ i ];
        }
        setTimer(3,0);
        memset(fbp, 0x00, 1024);
        setTimer(3,0);
    }
    munmap (fbp, screensize);
    close (fp);
}

离线

#6 2017-10-08 16:43:39

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

两个framebuffer可以同时工作了, 使用的是主线代码:  4.13.y 分支

离线

#7 2017-10-08 16:50:40

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

感谢楼主,终于一步一步搞定了 big_smile big_smile

20171008164740.jpg


20171008164750.jpg

离线

#8 2019-03-13 10:08:29

超级萌新
会员
注册时间: 2018-05-04
累计积分: 219

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

帮顶帮顶

离线

#9 2019-05-16 20:22:14

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

晕哥,BSP内核使用oled 可以实现么?这个是主线kernel

离线

#10 2019-05-16 20:23:15

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

晕哥小弟 说:

晕哥,BSP内核使用oled 可以实现么?这个是主线kernel

应该是可以,
实在不行再应用层也可以驱动.

离线

#11 2019-05-16 20:38:44

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

1、应用层调用接口是什么?
2、应用层调用I2C去初始化或者显示这样的屏幕的时候,可能会有延时,导致刷新或者更新缓慢。就会给人不像一个正常的产品。

离线

#12 2019-05-16 21:15:38

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

1. 应用程序操作 /dev/i2c-X   /dev/spiX 读写寄存器.
2. 延时应该几乎是一样的, 都是定时器或者应用驱动刷新. 只是驱动实现接口统一.

离线

#13 2019-05-17 11:11:01

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 88

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

围观学习

离线

#14 2019-05-17 20:01:16

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

晕哥 说:

1. 应用程序操作 /dev/i2c-X   /dev/spiX 读写寄存器.
2. 延时应该几乎是一样的, 都是定时器或者应用驱动刷新. 只是驱动实现接口统一.

晕哥,V3S配置I2C模块怎么配置,我看到有其他地方是这样的配置:

[twi0/twi_board0]                                                             
compatible  =                                                 
reg = 0x50                                                                     
;[twi0/twi_board0]                                                             
;compatible        =                                                           
;reg =


但是我用fex2bin转换的时候, /  符号报错,说无效。

离线

#15 2019-05-17 20:05:46

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

http://files.lindeni.org/lindenis-v5/documents/Driver/Sunxi%20I2C总线驱动使用文档.pdf

[twi0/twi_board0]
compatible = "atmel,24c16";
reg = 0x50;


其中:
1.twi0/twi_board0:表示挂在总线 twi0 下的设备 twi_board0;;
2.compatible:表征具体的设备,用于驱动和设备的绑定;
3.reg:设备使用的地址;

离线

#16 2019-05-17 20:14:37

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

适用于A64、B100/G102、A20E/V40、T7、H5、V5、H6硬件平台。   这个使用fex2bin 去生成.bin文件的时候,就报  /   这个是个无效字符。

离线

#17 2019-05-17 20:19:37

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

可能是语法解释错误, 试一试

[twi0\/twi_board0]

离线

#18 2019-05-17 20:22:17

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

晕哥 说:

可能是语法解释错误, 试一试

[twi0\/twi_board0]

不对。试过了。

离线

#19 2019-05-17 20:42:22

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 6,757

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

晕哥小弟 说:
晕哥 说:

可能是语法解释错误, 试一试

[twi0\/twi_board0]

不对。试过了。

这就有点尴尬了, 只能改 bsp 分析 fex 的源码了, 把斜杠去掉.

离线

#20 2019-05-17 22:08:17

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

这个思路不对吧,这样的情况别人应该早就遇到过,可是网络没有搜到相关的信息。你的板卡也是这样么?或者你在不忙的时候也试试使用fex2bin测试下。

离线

#21 2019-05-17 22:10:14

晕哥小弟
会员
注册时间: 2019-04-04
累计积分: 91

Re: 开始测试v3s 荔枝派zero 接oled, 请围观.

应该不是我的sunxi-tools版本问题吧。

离线

页脚