WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#2 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/ » ------版主特批,借宝地打个广告----------- (江苏 昆山 高薪招聘) » 2019-04-11 17:42:28

kgp0213
回复: 12

某台资IC公司昆山分公司招聘图像处理开发人员,要求如下:

1,C语言功底扎实
2,具备初步光学图像相关知识
3,具有初步的图像处理,分析能力
4,matlab懂一点最好
5,无其他要求,但C语言一定要好

具体工作内容:
1,其他人负责对采集的图像通过matlab进行图像处理,实现效果实现。再由招聘对象来通过C语言实现。
2,图像的处理内容:摩尔纹去除,色块消除,白平衡调整,

工作地点:昆山 ,薪资待遇:五险一金,年薪30W+
联系人:super周13625271455  或版主管理员

#4 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 荔枝派nano有大虾把usb模块调通,能用u盘鼠标的没 » 2018-08-01 19:59:44

连接usb设备后,确认usb接口电压低于3.3,基本连不上;
另外,看我手上的nano板上的usb接口的usbvcc貌似(之所以说貌似是因为,我不确定我手上的原理图是否是最新版)没连,请自行确认电压

#6 Cortex M0/M3/M4/M7 » STM32 usb虚拟串口 最大速度可以达到多少 波特率可以设置到多少? » 2018-07-18 22:19:04

kgp0213
回复: 6

如题~
看资料说最大可以达到20mb/s,不知道如何实现的?

#8 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 自制F1C100S板不工作,请大家分析 » 2018-06-13 22:25:05

串口只要能出乱码就应该找对了位置,否则乱码也不应有,你查查波特率设置
另外如果是串口收到干扰导致的乱码,那简直不可想象啊

#9 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 自制F1C100S板不工作,请大家分析 » 2018-06-13 22:23:36

TV-VCC, HP-VCC, 这个我可以确认不用连接是可以正常工作的
当初我也遇到类似的问题,逐个拆解晕哥送我的唱戏机,发现usb不工作和这两处肯定无关的,因为我是手工焊接的芯片,所以芯片地步没有办法接地
挖洞灌锡的操作也不好使。
后来拖了2·3个礼拜,实在找不到原因,就判断自己的电路应该没问题,后来就直接打件回来,然后一切都正常了

#14 Re: RT1050/RT10XX » step by step 把 LittleVGL porting到野火 RT1052开发板上去裸奔 » 2018-05-28 19:40:56

电子是什么 说:

晕哥,那个触摸屏的函数应该怎么理解呢,就是littevgl官网上的,涉及到了什么,我屏幕一直成功了,也能跑demo例程了,但是触摸一直出错,比如按下按键,没反应,但是例程上的下陷的动作,然后我加了一个返回真  (return ture)  他就能按下有反应了,但是,上下移动出现问题了,不管怎么移动,最后都是切换到向下滑动的界面。

就是你上报触摸数据错了
两个参数,三种组合:根据报坐标时候的按压条件判断是点按、长按、拖移,仔细按照范例去改,包好~~~~

#16 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 讲个关于 人工智能AI的笑话 » 2018-05-25 21:20:46

加上反向自学功能,添加领导人参数(模式),应该就能克服这个问题了吧

#21 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » F1C100S接上USB后反应 » 2018-05-25 20:50:19

送分题
1, 没有启动设备(sd tf),上电必然进入usb fel模式
2,把硬件在windows下连入电脑,若没有任何提示或反应,则硬件挂了
3,若提示不能识别的usb设备,则检查 usb d+ d—是否反了
4,若连线没问题,则坚持100s的芯片焊是否接地良好
5,请问你的板子是成品还是自制的?

#22 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » win7 下的F1C100S+eclipse+xboot+jlink调试 » 2018-05-22 14:14:56

晕哥 说:

这个简单的, 搜一下 gdb的break命令。

搜到的都是一些gdb命令的介绍。但是这些命令在哪里输入? pc端?  系统的控制台?还是 eclipse debug 脚本?
实在对gdb调试没有概念。 有没有对啥是gdb调试的入门介绍资料?

#25 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » win7 下的F1C100S+eclipse+xboot+jlink调试 » 2018-05-21 21:26:10

或者换一种问法,我要是来调试uboot的时候,就必须用jlink的gdbserver了吧? 那调试这个uboot的时候怎么把代码停在uboot执行的第n行语句处呢?

#26 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » win7 下的F1C100S+eclipse+xboot+jlink调试 » 2018-05-21 21:23:35

晕哥 说:

linux应用就是酱紫调试的,
系统级调试就得用 jlink自带的gdbserver

那你的系统里面的tp驱动部分算不算系统的一部分?

假设系统本身不带tp驱动部分,那么我来执行一个应用,这个应用会自己加载驱动,此应用执行的时候,tp就可以输入信息到系统,该应用执行之后,再卸载tp驱动,不给别人用,那么此应用,到底算系统的一部份呢,还是只是一个应用?

#27 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » win7 下的F1C100S+eclipse+xboot+jlink调试 » 2018-05-21 20:51:31

晕哥 说:

表示对你写的那个看不懂,gdbserver不是应该在pc端运行的吗?怎么跑到开发板上运行了?
开发板不能工作的情况下如何运行gdbserver?

#28 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » win7 下的F1C100S+eclipse+xboot+jlink调试 » 2018-05-21 19:29:12

kgp0213
回复: 12

不知道xboot在eclipse中如何用jlink进行硬件调试,搜到下面的帖子:
JLink + GDBServer + gdb 调试 全志Allwinner V3s 的 u-boot-spl程序
挖坑网/填坑网 JLink + GDBServer + gdb 调试 全志Allwinner V3s 的 u-boot-spl程序

unbutu16下添加jlink驱动,不确定是否成功。
所里转到win7下面来调试
打开J-link GDB Server:
jlink 测试
这样貌似已经连接了F1C100S

eclipse里面的设置如下:
jlink 测试

jlink 测试


然后开始debug,顺利的卡在这里:
jlink 测试
请问,上面的过程要修改哪里?

#30 Re: 计算机图形/GUI/RTOS/FileSystem » 请教一下,关于littlevgl触摸屏问题 » 2018-05-05 22:43:36

kgp0213 说:
775624981 说:

是这样的,我用imx283开发板,由于还没有移植好tslib,所以就用mouse_hid.c改了一下,在获取坐标的函数里直接赋坐标值模拟按键触摸,但是屏幕没有反应?

界面是自带的demo例程

bool mouse_hid_read(lv_indev_data_t * data)
{
    static lv_indev_state_t st;
    static unsigned char b;
    //ts_read(touch_pad,&sample,1);
    data->point.x = 240;
    data->point.y = 25;
    if(st == LV_INDEV_STATE_PR)
    {
        b ++;
        if(b > 20)
        {
            b = 0;
            st = LV_INDEV_STATE_REL;
        }
    }
    else
    {
        b ++;
        if(b > 20)
        {
            b = 0;
            st = LV_INDEV_STATE_PR;
        }
    }
    data->state = st;
    printf("x = %d y = %d state = %d\r\n",data->point.x,data->point.y,data->state);

    return false;
}

感觉这段就干了一件事:
  data->point.x = 240;
    data->point.y = 25;
data->state = LV_INDEV_STATE_PR;

littlevgl官网的范例里面已经有了一个自带滑动的宏定义(define LV_DEMO_SLIDE_SHOW)了,开了之后就可以自动左右滑动了

src/external/lvgl-v5.1/lv_ex_conf.h 查看文件 @ 5c41db8
@@ -36,6 +36,7 @@
          #define USE_LV_DEMO        1
          #if USE_LV_DEMO
          #define LV_DEMO_WALLPAPER  1    /*Create a wallpaper too*/
    +#define LV_DEMO_SLIDE_SHOW 0    /*Automatically switch between tabs*/

#31 Re: 计算机图形/GUI/RTOS/FileSystem » 请教一下,关于littlevgl触摸屏问题 » 2018-05-05 22:35:24

775624981 说:

是这样的,我用imx283开发板,由于还没有移植好tslib,所以就用mouse_hid.c改了一下,在获取坐标的函数里直接赋坐标值模拟按键触摸,但是屏幕没有反应?

界面是自带的demo例程

bool mouse_hid_read(lv_indev_data_t * data)
{
    static lv_indev_state_t st;
    static unsigned char b;
    //ts_read(touch_pad,&sample,1);
    data->point.x = 240;
    data->point.y = 25;
    if(st == LV_INDEV_STATE_PR)
    {
        b ++;
        if(b > 20)
        {
            b = 0;
            st = LV_INDEV_STATE_REL;
        }
    }
    else
    {
        b ++;
        if(b > 20)
        {
            b = 0;
            st = LV_INDEV_STATE_PR;
        }
    }
    data->state = st;
    printf("x = %d y = %d state = %d\r\n",data->point.x,data->point.y,data->state);

    return false;
}

感觉这段就干了一件事:
  data->point.x = 240;
    data->point.y = 25;
data->state = LV_INDEV_STATE_PR;

#33 Re: 计算机图形/GUI/RTOS/FileSystem » 请教一下,关于littlevgl触摸屏问题 » 2018-05-05 22:16:18

while(1) {
        lv_tick_inc(5);
        lv_task_handler();
        usleep(5000);
    }
原来还可以这样操作~

#34 Re: 计算机图形/GUI/RTOS/FileSystem » 请教一下,关于littlevgl触摸屏问题 » 2018-05-05 22:13:45

lv_indev_drv_init(&pdat->indev);
    pdat->indev.type = LV_INDEV_TYPE_POINTER;     //1
    pdat->indev.read = ex_tp_read;     //2
    lv_indev_drv_register(&pdat->indev);

我用的是这种输入的,用tp。

#38 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » C++调用C#DLL中的函数碰到的问题求各位大神支招! » 2018-05-02 13:13:03

以下内容是我搬运过来的~
-----------------------------------------------
N种方法使用C++调用C#.NET库
2015年12月08日 17:27:51
阅读数:2139
为了减少篇幅,此文不描述何种场景下需要使用C++调用C#/VB等托管代码,而直接给出三种常规方法和一些变通方法以供参考。

常规方法1:COM
使用C#把托管类注册成COM,用regasm.exe注册output assembly,然后用C++像调用COM一样调用assembly里面的type。
优点:编写代码简单,调用方便
缺点:需要注册output,发布不够简单
参考:http://www.codeproject.com/KB/cs/ManagedCOM.aspx

常规方法2:CLR
C#常规编写类,生产assembly,C++使用CLR编译既可直接引用托管类。
优点:编写代码简单,调用方便
缺点:需要了解C++ CLR语法(既不像C++,又不像C#,总之很奇怪)
参考:http://www.codeproject.com/KB/mcpp/cppcliintro01.aspx ,http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx

常规方法3(推荐):API
C#常规编写类,生产assembly,C++使用SDK提供的CLR非托管接口(CLRCreateInstance)进行调用。
优点:传统C#编程,传统C++编程
缺点:暂时还没发现
参考:http://nport.codeplex.com/SourceControl/changeset/view/45681#903468 ,http://msdn.microsoft.com/en-us/library/dd537633.aspx

变通方法:
1. 使用C#/VB包装现有托管类,注册成Windows服务,暴露SOAP web service。VC2005可以使用非托管代码添加引用Web service。
2. 使用C#/VB包装现有托管类,注册成Windows服务。C++利用Windows message和服务通讯。
3. 使用C#/VB包装现有托管类,注册成Windows服务。C++利用Windows共享内存和服务通讯。
其实利用双进程通讯的方法,可以演变出各种各样调用的思路。聪明的你可以充分发挥想象力,写出自己独有的调用模式。

#40 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » XBOOT 部分功能小结---2 » 2018-05-01 00:34:07

kgp0213
回复: 0

XBOOT 部分功能小结---2

1,do_init_kobj这个里面一堆超级技巧

整个模块化加载,就靠这个

简单理解了后,会发现超级简单

就是划一片内存,然后管理

就是搞一些链表什么的,链接各种内存片段

2,pump_event

pump_event这个是异步的,xboot的外设,鼠标 键盘 触摸屏 等任何event消息,都是丢进fifo的,用的时候,仅需要取,就行了

3,获取程序耗时

    profiler_reset();
    //void profiler_snap(const char * name, int event, int data);
    profiler_snap("name",0,0);  //抓取一次时间,标记为name,多次执行本语句,计算平均耗时
    profiler_dump()    //显示相应的耗时
    //例如:
    int n=100;
    while (n<1)
    {
        mdelay(2);
        profiler_snap(testmdelay,0,0);
        n--;
    }
    profiler_dump();

4,滤波,filter

在目录xboot\src\lib\libc\filter下有一些通用滤波器代码,可以直接用

5, 链接脚本

    MEMORY
    {
        ram  : org = 0x40000000, len = 16M
        dma  : org = 0x41000000, len = 16M
        heap : org = 0x42000000, len = 32M
    }

上述三者之和要和DRAM一样大。heap段为malloc用;ram段其实,就是text段,data段;dma段预留,几个frambuffer的大小,其实没啥用(因为F1C100S的FB驱动中其实frambuffer是设定在heap段)。

6,查看时钟频率

查时钟频率,可以去/sys/device/clk/下查看,cat xxx/summary 就可以了,时钟树的配置,以及调试,xboot已经做得很方便了

7,查看内存用量

使用memory相关sysfs,可以查看当前内存用量,dma内存使用情况

    cat /sys/class/memory/meminfo
    cat /sys/class/memory/dmainfo

#41 Re: ST/STM8/STM8S/STM8L » STM8 写的 433Mhz 解码器 » 2018-04-30 22:35:22

433解码一旦有量,就会被cob方案搞得死翘翘

#42 Re: 硬件设计/Protel/DXP/PADS/ORCAD/EAGLE » 为了剩下模具的钱,害苦了PCB攻城狮 » 2018-04-30 22:33:43

你们这帮做技术的永远无法理解老板的思维,利润最大化才是第一要考量的东西~

#43 Re: ESP32/ESP8266 » XBOOT移植littlevgl » 2018-04-30 17:57:18

我想问一下xboot的设备树在系统哪里读取解析的啊
XBOOT(8192542) 2018-4-11 11:32:36查看前后消息do_init_kobj这个里面一堆超级技巧
XBOOT(8192542) 2018-4-11 11:32:55查看前后消息整个模块化加载,就靠这个
XBOOT(8192542) 2018-4-11 11:33:30查看前后消息简单理解了后,会发现超级简单
XBOOT(8192542) 2018-4-11 11:33:53查看前后消息就是划一片内存,然后管理
XBOOT(8192542) 2018-4-11 11:34:18查看前后消息就是搞一些链表什么的,链接各种内存片段

#48 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 从删库(rm -rf /)到跑路系列 之一 » 2018-04-30 16:31:36

网站的宣传:
服务可靠

我们对于所有的服务均有可靠性承诺,我们将会对每一位用户的数据进行备份,保障您的数据安全,一旦您的利益受到损失,我们将及时补偿

这分明是赤裸裸的打脸啊

#50 Re: Python » 学 Python 得自带 游标卡尺 是什么梗? » 2018-04-30 16:26:06

pycharm等高级的IDE都附送全自动数字化一键对齐游标卡尺的。
也就VIM用户需要手动肉眼对齐←_←
有些抱残守缺的遗老遗少总是对vim念念不忘

#56 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 外国友人来求助,如何把xboot直接烧录到9.9的dram并运行? » 2018-04-20 16:46:49

记得看过几周前的一个周末,版主刚编译出能在win下工作的孙媳妇的时候,那时好像有个人烧录到dram中速度可达到400~500k。

#58 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » [随便聊聊]在这个节骨眼上(某兴被禁止使用美帝的芯片),阿里把中天微收购了,是好事还是坏事? » 2018-04-20 13:43:46

国内这些骗钱的芯片公司太多了,早就来几个巨头打破目前这种怪像。然后像当年的移动网络一样做大之后再拆分~
不过腾讯百度估计是不指望了,毕竟腾讯要对股民负责,百度只会卖药卖隐私~

#59 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 【貌似解决了】licheepi nano不接串口内核起不来 » 2018-04-20 09:52:53

msr06rr 说:

一开始以为是内核或者boot.scr的问题,后来发现每次插上串口都能一次性成功启动到登录界面
但是一旦拔了串口,就不行了,只停留在uboot的那一步,后面不动了。。
看了这篇博文后https://blog.csdn.net/guet_kite/article/details/78264740,说是串口的引脚受到干扰,以为是有按键输入。。。干扰怎么会有这么大的。。。,将信将疑,我把RX引脚接到地,再上电,有了!
各位坑有有木有谁也遇到过这种问题,你们是怎么解决的?

推测串口rx为浮空输入,可以尝试改为下拉输入(不确定有无此设置)
可能串口的rx和其他信号线太近受到干扰,导致uboot误判

#61 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 【貌似解决了】licheepi nano不接串口内核起不来 » 2018-04-20 09:43:36

qianhao 说:

以前也遇到过这个问题 自己做的jlink 上的串口 没有上拉电阻  会一直往外面发0.
加上拉电阻:
1、让电路保持稳定的状态,避免误触发;
2、当有高频干扰信过来时,可以通过上拉对电源泄放掉;
3、很多口线和信号线是开漏输出,因此要加上拉,如IIC;(看全志的uboot源码,好像把gpio配置为上拉给注释了 你可以试试看)
4、为了阻抗匹配,多是信号完整性考虑.

1、让电路保持稳定的状态,避免误触发;     -----没用,或心里作用
2、当有高频干扰信过来时,可以通过上拉对电源泄放掉; ---高频干扰不会影响串口收发,因为串口是固定波特率,心里作用
3、很多口线和信号线是开漏输出,因此要加上拉,如IIC;(看全志的uboot源码,好像把gpio配置为上拉给注释了 你可以试试看) -----全志的端口设置包括端口复用和驱动能力,一旦选择了相应的功能,端口的上下拉或者开漏就自动设定 了,能改变的是只能调整上下拉电阻的大小,从而改变驱动能力
4、为了阻抗匹配,多是信号完整性考虑.---这么低速的信号完全不存在阻抗匹配

#62 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 【貌似解决了】licheepi nano不接串口内核起不来 » 2018-04-20 09:38:27

一般,芯片的tx都是带上拉的,否则无法输出1.
rx通常浮空输入,此时容易收到干扰,哪怕手摸一下也会可能会被认为有数据进入

#63 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » 编译 cairo/basicdrawing/演示代码,出现错误,不能正常运行, 搜了一圈,发现有人出现一模一样问题 » 2018-04-19 13:39:56

晕哥 说:

https://www.ibm.com/developerworks/cn/linux/l-cairo/

#include <gtk/gtk.h>
#include <cairo.h>
#include <cairo-pdf.h>
#include <cairo-ps.h>
#include <cairo-svg.h>
#include <math.h>
#include <gdk/gdkkeysyms.h>
#include <string.h>



#define WIDTH  800
#define HEIGHT 600
#define STRIDE WIDTH*4
#define MAX_COORDS 1024



/* This path desribes what will be drawn later 
   The bulk of it is doing the IBM letters by connect the dots
   at the very end, we will get fancy and add a (R) Registered logo.
*/
static void
travel_path (cairo_t *cr)
{
   gint     pen_radius         = 10;

   cairo_set_source_rgb (cr, 1,1,1);
   cairo_paint (cr);

   cairo_set_line_width (cr, pen_radius*2);

   /* Use IBM Blue Pen Color with no ALPHA */
   cairo_set_source_rgba (cr, .3, .42, .69, 1);


   /* This Draws the IBM 8 Lines "I" Logo */
   cairo_move_to (cr, 10, 10);
   cairo_line_to (cr, 160, 10); 

   cairo_move_to (cr, 10, 40);
   cairo_line_to (cr, 160, 40);

   /* NOTE: Narrower Middle: 1/3 width */
   cairo_move_to (cr, 60, 70);
   cairo_line_to (cr, 110, 70);

   cairo_move_to (cr, 60, 100);
   cairo_line_to (cr, 110, 100);

   cairo_move_to (cr, 60, 130);
   cairo_line_to (cr, 110, 130);

   cairo_move_to (cr, 60, 160);
   cairo_line_to (cr, 110, 160);
   /* END Narrower Middle */

   cairo_move_to (cr, 10, 190);
   cairo_line_to (cr, 160, 190);

   cairo_move_to (cr, 10, 220);
   cairo_line_to (cr, 160, 220);
   /* END "I" DRAWING */




   /* This Draws the IBM 8 Lines "B" Logo */
   cairo_move_to (cr, 170, 10);
   cairo_line_to (cr, 340, 10); 

   cairo_move_to (cr, 170, 40);
   cairo_line_to (cr, 360, 40); 

   cairo_move_to (cr, 200, 70);
   cairo_line_to (cr, 250, 70);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 70); 
   cairo_line_to (cr, 360, 70); 


   cairo_move_to (cr, 210, 100);
   cairo_line_to (cr, 350, 100); 


   cairo_move_to (cr, 210, 130);
   cairo_line_to (cr, 350, 130); 


   cairo_move_to (cr, 200, 160);
   cairo_line_to (cr, 250, 160);
   /*B's have holes in them! */
   cairo_move_to (cr, 300, 160); 
   cairo_line_to (cr, 360, 160); 


   cairo_move_to (cr, 170, 190);
   cairo_line_to (cr, 360, 190); 


   cairo_move_to (cr, 170, 220);
   cairo_line_to (cr, 340, 220); 
   /* END "B" DRAWING */
	



   /* THE EVER POINTY "M"  */
   cairo_move_to (cr, 370, 10);
   cairo_line_to (cr, 470, 10); 
   cairo_move_to (cr, 560, 10);
   cairo_line_to (cr, 660, 10); 


   cairo_move_to (cr, 370, 40);
   cairo_line_to (cr, 490, 40); 
   cairo_move_to (cr, 540, 40);
   cairo_line_to (cr, 660, 40); 


   cairo_move_to (cr, 400, 70);
   cairo_line_to (cr, 510, 70); 
   cairo_move_to (cr, 520, 70);
   cairo_line_to (cr, 630, 70); 


   cairo_move_to (cr, 400, 100);
   cairo_line_to (cr, 630, 100); 


   cairo_move_to (cr, 400, 130);
   cairo_line_to (cr, 470, 130);
   cairo_move_to (cr, 480, 130);
   cairo_line_to (cr, 550, 130);
   cairo_move_to (cr, 560, 130);
   cairo_line_to (cr, 630, 130); 


   cairo_move_to (cr, 400, 160);
   cairo_line_to (cr, 470, 160);
   cairo_move_to (cr, 490, 160);
   cairo_line_to (cr, 540, 160);
   cairo_move_to (cr, 560, 160);
   cairo_line_to (cr, 630, 160); 


   cairo_move_to (cr, 370, 190);
   cairo_line_to (cr, 470, 190);
   cairo_move_to (cr, 500, 190);
   cairo_line_to (cr, 530, 190);
   cairo_move_to (cr, 560, 190);
   cairo_line_to (cr, 660, 190); 


   cairo_move_to (cr, 370, 220);
   cairo_line_to (cr, 470, 220);
   cairo_move_to (cr, 510, 220);
   cairo_line_to (cr, 520, 220);
   cairo_move_to (cr, 560, 220);
   cairo_line_to (cr, 660, 220); 
 
   /* END POINTY LETTERS */
   
   /* We stroke the path so we see everything we just specified
      by connecting the dots
   */
   cairo_stroke(cr);
 



   /* Let us add a disclaimer and show some fancy cairo: */
   /* We are going to want a nice fine lined circle around the R 
   you need to make sure you have stroked existing things
   that you wanted drawn with the larger pen before continuing. 
   */
   cairo_set_line_width (cr, pen_radius*.5);

   /* Now we will draw the fancy circle around the "R" */
   /* NOTE: The angles are in radians */
   cairo_move_to (cr, 710, 200);
   double angle1 = 0 * (M_PI/180.0);  
   double angle2 = 360 * (M_PI/180.0);

   /* We draw a large black circle */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   cairo_stroke (cr);

   /* We draw a smaller white circle centered on it */
   cairo_set_source_rgba (cr, 1, 1, 1, 1);
   cairo_arc (cr, 710, 200, 20, angle1, angle2);
   /* We use the fill operator to fill in the circle! */
   cairo_fill (cr);

   /* We are going to draw the letter "R" with black pen*/

   cairo_move_to (cr, 695,212); /* Bottom left of text at point */
   cairo_set_source_rgba (cr, 0, 0, 0, 1);
   cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL,
                                       CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size (cr, 40);
   cairo_show_text (cr, "R");

    /* We stroke everything we have just done 
       to actually draw it...
    */ 
    cairo_stroke (cr);	 

}




/* Apply our path to the surface specified */
static void
draw (cairo_surface_t *surface)
{
    cairo_t *cr;
    cr = cairo_create (surface);

    /* Try applying the scale and rotate factors here to examine their effects on the output!*/
    /* cairo_rotate (cr, -M_PI / 4); */
    /* cairo_scale (cr, 2, 1.0);  */

    travel_path (cr);
    cairo_destroy (cr);
}


/* Function needed to draw to gtk window */
static void
draw_gtk (GtkWidget      *widget,
          GdkEventExpose *eev,
          gpointer        data)
{
  cairo_t *cr;
  cr = gdk_cairo_create (widget->window);
  travel_path (cr);
  cairo_destroy (cr);
}


/* We will draw our path on multiple surfaces to demonstrate 
   some of the various cairo backend
*/
int
main (gint    argc,
      gchar **argv)
{
    cairo_surface_t *surface;



    /* PDF Backend */
    surface = cairo_pdf_surface_create ("IBM.pdf",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Postscript Backend */
    surface = cairo_ps_surface_create ("IBM.ps",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* Image backend */
    surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
					  WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_write_to_png (surface, "IBM.png");
    cairo_surface_destroy (surface);


    /* Scalable Vector Graphics Backend */
    surface = cairo_svg_surface_create ("IBM.svg",
					WIDTH, HEIGHT);
    draw (surface);
    cairo_surface_destroy (surface);


    /* GTK Window using Cairo */
    gtk_init (NULL, NULL);        /* Fire up GTK!       */
    GtkWidget *mainwin;           /* Make a new windows */
    GtkWidget *canvas = NULL;     /* Make a new canvas  */
  
    mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    canvas = gtk_drawing_area_new ();
    gtk_widget_set_size_request (canvas, WIDTH, HEIGHT);     

    gtk_container_add (GTK_CONTAINER (mainwin), canvas); /* Place the canvas in the window */
 
    g_signal_connect (mainwin, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Quit graphically */

    /* Instead of drawing like usual, we connect the expose event to do the drawing! */
    g_signal_connect (G_OBJECT (canvas), "expose-event",
                      G_CALLBACK (draw_gtk), NULL);

    gtk_widget_show_all (mainwin); /* Show the window on the screen */
    gtk_main ();
    return 0;
}

编译指令:

gcc -o e e.c -I/usr/include/gtk-2.0/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/ -I/usr/include/gdk-pixbuf-2.0/ -I/usr/include/atk-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0 -lrt -lglib-2.0 -pthread -lcairo

https://whycan.cn/files/members/3/QQ20180419110143.png

这段代码我没编译成功,然后我就把其中的cairo部分直接cut至xboot的analogclock里面,然后就可以看到和你一样的效果了

#65 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » fc100s的spi闪存 » 2018-04-18 00:03:06

sunwei 说:

也可能是个特制的BROM

这里所说的brom应该和fel是指的同一个东西的不同的面。

我的理解是,cpu上电后就从brom里面面的程序开始执行,执行的内容应该是 读 spiflash sd usb 等,若 都读不到启动信息,然后就进入fel模式,所谓fel就是等待usb接口传数据进来,然后再把数据放到特定的地方,例如spi flash里面~

如果上面的sd卡里面有spl之类的文件,短接spiflash的1 4 或者1 2脚应该就不可能起作用了,因为,100s根本就不会来读取spi了。

#66 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 3个坑 » 2018-04-17 23:55:33

3 ------------------- 最大的坑------------------------
   当把spi闪存1-4脚连接后,连usb是可以进入FEL模式。
   但是把1-4脚断开后,也还是在EFL模式。
   不管是重新上电,还是重新连usb,都回不到正常的状态了。
   估计闪存的程序丢了。
   所以1-4脚不可靠。因为cS片选一直激活,闪存芯片很容易有误操作。

这里完全说错了
100s上电后就会从spi flash里面读数据,此时100s输出cs信号。短接cs后,spi flash 就不会再响应。此时f1c100s就认为spi flash 不存在,再加上从sd也读不到信息,此时100s就自动进入了fel模式,等待烧录固件进来。
而断开1,4脚后,100s输出正常,spi flash反应正常,那么此时就可以正常启动或再次进入fel模式,不可能出现楼主说的什么cs一直激活这种事,绝对不可能!

之所以出现楼主说的这种事情,很可能此时插sd卡了,或者板子本身焊接不良,或者 短接不可靠

#68 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » fc100s的spi闪存 » 2018-04-17 23:38:31

sunwei 说:

进入到FEL时.
读0x00---0x7fff里面有代码

其它所有地址空间读出来的数据都是0,包括
1 SRAM 0x0010000---0x0019ffff
2 DDR 0x80000000---0x81000000
3设备空间地址0x01cxxxxx

1.sram肯定读出来都为0,因为这是给spl用的,spl没进来,sram当然为零了
2,ddr没初始化,当然这里读出来的都是零
3,没有spl,就没有设备初始化,设备地址读出来也必然为零啊

#69 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » fc100s的spi闪存 » 2018-04-17 23:36:00

达克罗德 说:

我用短接CS到地的方法很管用,就是不方便。不知底板是否能方便点

飞线+按键,轻松又愉快

#70 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » fc100s的spi闪存 » 2018-04-17 23:33:06

翻了上面的对话,感觉sunwei和晕哥一直在个说各话。

以我烧录F100s超过100次(吹牛),手焊100s套件3套,usb调试2礼拜的经验来看,短接板子没有问题的情况下短接spi flash 是一定可以强制进入fel模式的。 嫌短接不方便,那就飞两根线,连接一个按钮,使用起来可以轻松又愉快!

#74 Re: 计算机图形/GUI/RTOS/FileSystem » Ubuntu 下载编译运行xboot四部曲 » 2018-04-14 22:34:35

2048目录据此修改:
XBOOT(8192542) 18:19:24
jjj@jjj-desktop:~/xboot/xboot$ git diff   src/romdisk/application/examples/main.lua
diff --git a/src/romdisk/application/examples/main.lua b/src/romdisk/application/examples/main.lua
index bdcf5af..9148461 100644
--- a/src/romdisk/application/examples/main.lua
+++ b/src/romdisk/application/examples/main.lua
@@ -19,7 +19,7 @@ local prevbtn = Widget.Button.new({x = 50, y = sh - 100, width = 100, height = 5
stage:addChild(prevbtn)

local nextbtn = Widget.Button.new({x = sw - 150, y = sh - 100, width = 100, height = 50})
-       :addEventListener("Click", function(d, e) testcases:next() end)
+       :addEventListener("Click", function(d, e) stage:animate({scalex = 0.5, scaley = 0.5, rotation = stage:getRotation() + 360}, 5, "outBounce") end)
stage:addChild(nextbtn)

stage:addEventListener(Event.KEY_DOWN, function(d, e)
@@ -34,5 +34,8 @@ stage:addEventListener(Event.KEY_DOWN, function(d, e)
        e.stop = true
end)

+stage:setPosition(320,240)
+stage:setAnchor(0.5, 0.5)
+stage:animate({rotation = stage:getRotation() + 360}, 5, "outBounce")
stage:showfps(true)

实现旋转效果

#78 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 有哪位大神做过V3S内核做七寸RGB的,求分享 » 2018-04-13 23:58:14

个人猜测7寸LCD背光耗电过高,把板子的系统拖垮了。你可以把屏的背光先断开,然后再看看串口的信息是不是就正常了

#79 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 本站网友 @kgp0213 在荔枝派nano f1c100s 开发板运行xboot + littlevgl 视频 » 2018-04-13 23:53:22

有设置缓冲区的地方,但是好像没啥用。下次把缓冲区设定到和屏幕一样的,然后通过指针切换试试。不过我好像应该去lv的官网去找找答案。
晕哥,别睡了,快醒醒,去lv官网看看有没啥好的方法~

#80 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 荔枝派V3S如何把XBoot烧到SD卡上加载? » 2018-04-13 23:39:31

达克罗德 说:
晕哥 说:

在ROM里面都是这种方式存放的:
spl + u-boot
spl + xboot

上电之后, BROM(固化在全志芯片内部) 依次检测 eMMC(SD), spi nand, spi nor 是否存在合法的spl,
如果发现有合法的spl 则把spl 搬到芯片内部 SRAM 里面运行(SRAM无需任何初始化), 并把PC指针指向SRAM,
这样你的spl接管了V3s芯片,接着你当然可以为所欲为了。

spl 初始化系统资源,包括调试串口, DDR什么的,初始化DDR之后你就有了更广大的空间,
可以把u-boot(非spl部分)或者xboot(非spl部分)搬到DDR指定地址, 再次把PC指针指过去,
这样u-boot或者xboot正式接管了V3s.

这下明白了,非常感谢!spl xboot应该已经有了,缺的是spl加载后实现对SD卡的读取。话说v3s的boot程序已经可以读SD卡了为什么不能直接在spl执行完后加载SD卡指定位置指定长度的代码到DDR呢。

大佬一时对sd卡启动提不起兴趣,所以没动力去做而已

#81 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 本站网友 @kgp0213 在荔枝派nano f1c100s 开发板运行xboot + littlevgl 视频 » 2018-04-13 23:32:05

达克罗德 说:

另外@kgp0213兄,是否试过xboot自带的guidemo,是否卡顿?它那个实现用的cairo画图库应该开销更大

这个实测效果还不错,那个2048的程序大概可以跑到20帧左右。
cairo的原理是先把内容写满一帧,然后把帧数据地址送fb显示,然后,cairo再写另一块区域,然后再把其地址送fb显示,如此循环。
而lv是把生产的内容送的自己的缓冲区内,缓冲区满了之后在flush到fb相应的空间去,感觉速度上应该差不多,只是flush的时候可能觉得不爽吧

#82 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » DDR 设置 » 2018-04-13 23:23:59

内部上电后从0地址启动,然后执行一小段“芯片设置数据”,例如读sd ,spi flash等,然后再跳到uboot的地址

以上都是瞎猜的

#84 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 本站网友 @kgp0213 在荔枝派nano f1c100s 开发板运行xboot + littlevgl 视频 » 2018-04-13 23:15:38

实测了一下,跑上述demo的时候,lv绘图每帧大约需要35ms~75ms不等,绘图后flush数据到fb的时候耗时极短(不知是测试方法不对还是其他问题,耗时居然为零),暂时还不知道具体卡顿原因~

#86 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 请问各位大佬谁有F1D100的资料? » 2018-04-13 23:09:46

刚才我想贴图来着,但是上传好卡就放弃了,没想到大佬手真快~

#88 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 荔枝派V3S如何把XBoot烧到SD卡上加载? » 2018-04-13 23:06:42

达克罗德 说:
晕哥 说:
达克罗德 说:

请教uboot的实现原理是什么?修改xboot的难点在哪里?

你得驱动SDIO外设, DMA, 中断等,还得熟悉xboot架构.
u-boot因为有ice大神,他一直做全志soc的u-boot和kernel的适配工作,
所以比较顺利弄好了。

别介意我比较菜,我本来以为uboot和xboot都是被v3s自动读到SDRAM,所以以为放到spi flash和SD卡没什么区别。看来没这么简单

我也是这么想的,上电后,v3s会自动从sd卡里面读取数据进行初始化,然后再搬数据到sdram里面,看起来难度好像没那么大

#89 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 荔枝派V3S如何把XBoot烧到SD卡上加载? » 2018-04-13 23:04:06

达克罗德 说:
daydayup 说:

目前还不支持tf卡启动,确实需要得自己改,难度不小。

请教uboot的实现原理是什么?修改xboot的难点在哪里?

xboot大佬说现在没空,等段时间再开发这个~

#92 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 请教两个Linux应用层操作i2c的问题 » 2018-04-12 09:22:47

zhen8838 说:
kgp0213 说:

1,刚翻了一下1306的资料,看起来是支持400k的速度的,楼主先用示波器抓一下现有的iic波形,看系统输出有没有异常(sclk周期,波形),若波形不好添加上拉电阻试试。
2,通常芯片的linux驱动里面默认应该都是400k,具体能不能通过dts来改,还是建议源码里面具体的驱动实现(这里面经常有坑的)
3,另外楼主用的芯片是什么型号?最好翻一下其寄存器看能否支持速度调整

我用的芯片是V3S,上拉电阻我使用的是10K。
我也觉得这个芯片应该是支持400Khz的速度,因为我找了些STM32硬件I2c的程序,他们设置的就是400Khz速率,可以正常通信。
但是我相同的接口去连接mpu6050可以直接读写,说明芯片I2c是正常工作的,这就让我摸不着头脑了。

1,不同的芯片对信号的兼容性不同,原来我点过一款屏幕,同样的程序,使用nxp来点总是显示异常,换用st的就一切正常。从那以后就再没用过nxp的东西,信号不好~
2,你把上拉电阻换成4.7k试试,还不行的话就换成2k试试。最好用示波器看一下,很容易确认问题。

#93 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 请教两个Linux应用层操作i2c的问题 » 2018-04-12 08:59:37

1,刚翻了一下1306的资料,看起来是支持400k的速度的,楼主先用示波器抓一下现有的iic波形,看系统输出有没有异常(sclk周期,波形),若波形不好添加上拉电阻试试。
2,通常芯片的linux驱动里面默认应该都是400k,具体能不能通过dts来改,还是建议源码里面具体的驱动实现(这里面经常有坑的)
3,另外楼主用的芯片是什么型号?最好翻一下其寄存器看能否支持速度调整

#94 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » xboot 启动代码分析 » 2018-04-11 19:46:19

请问楼主,我要把你这个转载走可以吧,会给你署名的。

#95 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » xboot 启动代码分析 » 2018-04-10 10:33:35

用心的楼主,版主可以过来开一个xboot的专栏板块了

#97 ESP32/ESP8266 » XBOOT移植littlevgl » 2018-04-09 16:27:21

kgp0213
回复: 9

1,尝试在eclipse中移植lv的时候,莫名原因被坑的一愣一愣的,各种库不能用,又是修改makefile又是修改eclipse,无论如何都报100+的错误,改了几天之后 心情郁闷、烦躁、无助、伤心 、沮丧、 忧伤,开始 心灰意冷,自暴自弃,暗自流泪,不思进取,自生自灭~
                         
                     a:把lvgl放在/xboot/src/external/lvgl-v5.1目录下,lv_conf.h(要额外添加几个宏定义)也放到这个目录下。再放一个stdbool.h在这哥目录下

2,突然有一天,想还是把lv删了吧,不玩了,结果删除lv部分之后,xboot编译依然各种报错,心里大喜啊,看来eclipse真的被我搞坏啦~

                    b:修改xbot/src目录下的makefile文件添加上述lvgl目录的路径(帖子下方有修改好的makefile下载)

3,开心的重解压eclipse,添加xboot,编译正常,加入lv,再次报错,错误和之前差不多~再次的沮丧、 忧伤,开始 心灰意冷,自暴自弃~

                   c:参照lvg  pc_simulator目录下的main.c在 xboot下的cmd-test添加相应的函数(这里https://github.com/littlevgl/lvgl的reamde有个大坑,坑了我一天)

4,转机终于在清明放假来了,记得那天睡觉没关窗帘,窗外阳光明媚晒醒了我,习惯性打开挖坑网,随意浏览的时候发现了晕哥的视频,一直以为晕哥是一个200+KG的宅男,没想到晕哥居然是玉树临风,风流倜傥,英俊潇洒,高大威猛 ,面如冠玉 目如朗星的大帅哥 ,更重要的是晕哥的性感的声音在清晨听来就像黄鹂鸟鸣那样清脆入耳使人欲罢不能~ ,想到这里心里都有点小激动呢!

                   d:用附件中文件放到相应的位置,在src目录下make一下试试,如果有问题,参加上面3条。开启模拟器, 终端输入 test,人家偶一天~

5,在晕哥声音的诱惑下,无意中看到晕哥的一句警示名言“eclipse对啥的支持不好,还是换用传统的makebalabala”,顿时就像黑夜中的明星“@流光”给我指引了方向~
                   e:回复“最爱晕哥”获取下载链接~
                   f:补充,源码包:https://gitee.com/hufz/xboot/tree/master
                   g:以上内容基于ubuntu16+xboot已经能正常的情形,关于xboot的编译请参考:xboot-system-development-guide-zh-CN.md




















------------------------------------------------------------------
以下是 @晕哥 补充
1. 下载 eclipse-mars-for-arm-windows-x86_64.7z , 解压缩, 把 arm-linux-gnueabihf-gcc.exe, cpio.exe 所在的目录加到系统的 PATH
2. eclipse.exe 打开 xboot 工程, 编译, 或者也可以打开命令行用 make 编译.

#99 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » XBOOT中GPIO操作 » 2018-04-06 22:28:32

kgp0213
回复: 0

XBOOT中GPIO操作

XBOOT在gpio.h中提供有c api和lua api ,后面可以写个gpio的通用lua app,这样,以后想测什么功能,直接打开app。

在gpio.h中可以找到:

   void gpio_set_cfg(int gpio, int cfg);

另外在l-gpio.c中可以找到:

static const luaL_Reg m_gpio[] = {

    {"setCfg",        m_gpio_set_cfg},
    {"getCfg",        m_gpio_get_cfg},
    {"setPull",        m_gpio_set_pull},
    {"getPull",        m_gpio_get_pull},
    {"setDrv",        m_gpio_set_drv},
    {"getDrv",        m_gpio_get_drv},
    {"setRate",        m_gpio_set_rate},
    {"getRate",     m_gpio_get_rate},
    {"setDir",        m_gpio_set_dir},
    {"getDir",        m_gpio_get_dir},
    {"setValue",    m_gpio_set_value},
    {"getValue",    m_gpio_get_value},
    {NULL,    NULL}
};

在c中可以这样写:

gpio_set_cfg(F1C100S_GPIOA0,0x01);  //初始化端口功能
gpio_set_pull(F1C100S_GPIOA0,GPIO_PULL_NONE);   
gpio_set_drv(F1C100S_GPIOA0,GPIO_DRV_WEAKER);
gpio_set_direction(F1C100S_GPIOA0,GPIO_DIRECTION_OUTPUT);
gpio_set_rate(F1C100S_GPIOA0,GPIO_RATE_FAST);
{
    gpio_set_value(F1C100S_GPIOA0,1);  //PA0=1
    gpio_set_value(F1C100S_GPIOA0,0);  //PA0=0
}

另外也可以借用下面的LED 操作函数来变通处理 (不一定是led,可以用来测试,还有buzzer/vibrator)

driver/led/led-gpio.c

driver/led/ledtrig-breathing.c

driver/led/ledtrig-heartbeat.c

首先在设备树可以看到

    "led-gpio@0": {
        "gpio": 0,
        "gpio-config": 1,
        "active-low": false,
        "default-brightness": 0
    },
    "led-gpio@0": {
        "gpio": 1,
        "gpio-config": 1,
        "active-low": false,
        "default-brightness": 0
    },

    "ledtrig-heartbeat@0": {
        "led-name": "led-gpio.1",
        "period-ms": 1260
    },

上面的“led-gpio”是驱动名,"led-gpio.1"是设备名,删除"led-gpio.1"部分的配置,然后shell进入"sys": /sys/device/led/led-gpio.0/brightness

    write 1 /sys/device/led/led-gpio.0/brightness

    write 0 /sys/device/led/led-gpio.0/brightness

把led看成一个gpio就可以了,向文件里面写数据。因为,xboot的shell没有开发 echo aaa > xxx ,这个重定向功能,所以需要一个专用命令写文件。

当然也可以下面那样看当前led的亮度

    cat /sys/device/led/led-gpio.0/brightness

上面的设备树定义:

"led-gpio@0": {    //@后面的数字代表起始索引,如果是0,就是自动分配
                //如果非零,就从这个值开始,尝试,直到这个设备名字没有占有
                //能注册到系统里面的去的所有资源,名字保证是唯一的
        "gpio": 0, //这里的“0”对应GPIO的端口号,可以去xxx-gpio.h里面去查看
        "gpio-config": 1,   //gpio的端口配置,1:gpio设定为输出。
        "active-low": false,
        "default-brightness": 0   //初始亮度(如果亮度可调的话)亮度的范围是0 - 1000,1000 最亮
    },
    "led-gpio@0": { //
        "gpio": 1,
        "gpio-config": 1,
        "active-low": false,
        "default-brightness": 0
    },

可以自己用c写一个命令,xboot里面有个system函数,通过system可以调用各种命令行,可以加分号,运行多个命令(例如:system("echo aadfg; delay 3000; echo aaaas;"); )。

system("write 0 /sys/device/led/led-gpio.0/brightness"); //PA0=0
2.XBOOT的测试命令

\kernel\command目录下有个cmd_test.c,其中:

static int do_test(int argc, char ** argv)
{
    return 0;
}

这个文件,就是专门留出来,试验各种代码的,任何想测试的api,代码,什么的,都往这个文件丢吧,然后,命令行下,敲test 就可以测试的想法了。

查看某个命令的帮助则可以敲 help cmdxxx
3.pwm播放铃声与马达

pwm口,接上个喇叭,一条命令就可以播各种nokia铃声(rtttl格式)

写个设备树

“buzzer-pwm@0":{
    "pwm-name":"pwm-xx.x",
    "pwm-polarity“:true
},

对应好pwm-name,然后那个pwm口接喇叭,然后

write "aadams:d=4,o=5,b=160:8c,f,8a,f,8c,b4,2g,8f,e,8g,e,8e4,a4,2f,8c,f,8a,f,8c,b4,2g,8f,e,8c,d,8e,1f,8c,8d,8e,8f,1p,8d,8e,8f#,8g,1p,8d,8e,8f#,8g,p,8d,8e,8f#,8g,p,8c,8d,8e,8f
" play

aadams 是歌曲名字,可以随便 。 (play 的路径在 /sys/device/buzzer/buzzer-pwm.0/play)

添加vibrator设备,其实就是振动马达,然后向节点里写:

write "SOS" play
write "i'm hummer" play
write "helo 12313" play

就将字符编码成马达振动了~
4.确认设备树参数

尝试源码目录下

    jjj@jjj-desktop:~/xboot/xboot/src$ grep "ledtrig-breathing" . -rn ./driver/led/ledtrig-breathing.c:2: * driver/led/ledtrig-breathing.c ./driver/led/ledtrig-breathing.c:146: .name = "ledtrig-breathing", ./arch/arm32/mach-h3/romdisk/boot/nanopi-m1.json:458: "ledtrig-breathing@0": {

    "ledtrig-breathing@0": { "led-name": "led-pwm.0", "interval-ms": 20, "period-ms": 3000 },

或者直接搜索,一般都能在某些平台,找到参考配置,如果实在没有,就看驱动文件。找驱动里面的字符串,基本就可以判断出来,这个设备树可以填充哪些参数了,例如:

static struct device_t * ledtrig_breathing_probe(struct driver_t * drv, struct dtnode_t * n)
{
struct ledtrig_breathing_pdata_t * pdat;
struct ledtrig_t * ledtrig;
struct device_t * dev;
struct led_t * led;

led = search_led(dt_read_string(n, "led-name", NULL));    //此处的"led-name"为设备树参数
if(!led)
    return NULL;

pdat = malloc(sizeof(struct ledtrig_breathing_pdata_t));
if(!pdat)
    return NULL;

ledtrig = malloc(sizeof(struct ledtrig_t));
if(!ledtrig)
{
    free(pdat);
    return NULL;
}

timer_init(&pdat->timer, ledtrig_breathing_timer_function, ledtrig);
pdat->led = led;
pdat->interval = dt_read_int(n, "interval-ms", 20);  //此处的"interval-ms"为设备树参数
pdat->period = dt_read_int(n, "period-ms", 3000);
pdat->phase = 0;

ledtrig->name = alloc_device_name(dt_read_name(n), dt_read_id(n));
ledtrig->activity = ledtrig_breathing_activity;
ledtrig->priv = pdat;

timer_start_now(&pdat->timer, ms_to_ktime(pdat->interval));

5.XBOOT支持CTP(电容触摸屏)么?

支持,已经有gsl1680,ft5406驱动,其他型号找厂商要linux驱动过来,自己修改一下即可。读i2c这种问题,对xboot而言轻车熟路,在sys目录下里的i2c总线设备目录个,有个设备节点,不要写任何一句代码,就可以探测挂在总线上的设备,类似于i2c_detect这个命令,输出也是很人性化的。
6.关于system函数

system接口,包装太多层次,这个一般是给debug用的,gpio操作最好还不不要经过sysfs接口,直接操作gpio api。system的速度要看是加载什么样的程序,内置程序很快,如果是lua程序,这个稍微慢了点,因为要启动lua虚拟机。具体的说要看system("xxxx"),这个xxxx是什么内容,首先从命令里面找,找不到就到文件系统里找。

https://gitee.com/hufz/xboot/blob/master/XBOOT%20%E9%83%A8%E5%88%86%E5%8A%9F%E8%83%BD%E5%B0%8F%E7%BB%93.md

#102 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » MiniGUI 重装上阵! 全志F系列后期将搭载MiniGUI,UI更酷炫,开发更方便了 » 2018-04-04 23:11:06

kgp0213
回复: 2

MiniGUI 重装上阵!
原创 2018-03-07 魏永明 智能系统百家谈

北京飞漫软件技术有限公司即将正式发布 MiniGUI V3.2.0 版本。

“飞漫软件还活着呢?”很多人看到上面这个消息的第一反应大概如此。飞漫软件当然还活着,毕竟关闭运行了十几年的公司比维持这个公司要麻烦多了。再说,还有很多公司在使用 MiniGUI,没有飞漫软件这样一个公司实体,怎么收费,怎么开发票?!

虽然整个嵌入式行业,甚至 IT 产业发生了巨大的变化,但技术并没有发生太大的变化。尽管这几年一会儿移动互联网,一会儿 O2O,一会儿人工智能,一会儿区块链,你方唱罢我登场,热闹非凡,但 Linux 内核、SSH、GNU 项目等,作为计算机系统的基石仍然在发挥着不可取代的作用。开发者访问服务器,使用的还是 SSH,要做 3D 图形或者游戏,使用的还是 OpenGL(或者 OpenGL ES),而 OpenGL 的发展历程已经超过了三十年!

MiniGUI 本质上也是一种基础软件,是不是持续迭代和演进,取决于市场,取决于开发者。

2018 年元月,飞漫软件和全志科技达成了一项合作,由全志科技支付 MiniGUI 的使用许可费用,而使用全志科技任何一款主控芯片的客户,均可免费使用 MiniGUI,无需向 MiniGUI 的知识产权权利人(即北京飞漫软件技术有限公司)支付商业许可费用。这是一种创新的自由软件许可模式。通过这种模式,飞漫软件可以获得持续发展 MiniGUI 的资金,而 MiniGUI 的用户,则可以以近乎免费的模式获得合法的商业许可。

飞漫软件将继续复制和全志科技的合作模式,首先推广到国内的主控芯片厂商,然后再拓展到海外。

目前,国内还有其他主控芯片厂商的客户在使用 MiniGUI,有的主控芯片厂商还将 MiniGUI 作为其 BSP 的一部分分发给了客户,但并没有取得合法授权。在此,笔者希望这些厂商学习全志科技,参照上述模式,尽快和飞漫软件达成合作,以取得 MiniGUI 的合法商业授权,进而支持 MiniGUI 开源社区的发展。而其他更多偷偷使用 MiniGUI 的厂商,或者没有按照已有的商业许可协议缴纳费用的,或者商用许可已经到期的,也请自重,该主动获取商业许可的,请主动联系飞漫软件,而不是采取打擦边球的手法,漠视权利人的权利要求,进而践踏新时代社会主义的法制精神。

2018 年,飞漫软件将从上市公司和外企入手,打击 MiniGUI 盗版行为以及非法的授权使用行为。也欢迎任何有线索的开发者通过本公众号后台举报未授权使用 MiniGUI 的行为;一旦有所得,必有回馈!

1998 年年底,笔者开始在清华大学开发 MiniGUI,1999 年 5 月在水木清华 BBS 上发布了 MiniGUI 的第一个版本。再过一年,MiniGUI 就二十岁了!随着飞漫软件和全志科技达成合作,MiniGUI 获得了重生的机会,从而可以再度起航。

全志科技之所以和飞漫软件达成这项合作,当然有其市场驱动力。随着物联网和嵌入式设备相关技术的发展,越来越多的嵌入式设备和智能物联网设备配备了屏幕和触摸屏,而因为如下两个原因,这些设备无法采纳类似 Android 这样的智能手机操作系统:

    成本因素。由于 Android 系统的复杂性越来越高,对处理器主频,尤其是运行内存、Flash 存储容量的要求也越来越高,而大部分嵌入式设备和智能物联网设备的功能单一,不需要使用一个完整的 Android 环境来支撑其应用的运行。而如果使用 Linux 或者 RTOS 开发这类设备,则可以大大降低运行内存和 Flash 的容量需求,最终降低设备的制造成本。

    系统复杂性。Android 系统发展到现在的 8.0 版本,系统复杂性也随之提高。要将最新的 Android 系统裁剪到适应一般的嵌入式系统或者智能物联网设备,工作量巨大,往往得不偿失。现在从主控芯片厂商开始,主控芯片的 BSP 已经从 Android 优先转移到 Linux 优先。

而对以上问题,MiniGUI 却具有先天的优势,MiniGUI 架构上的可伸缩性设计,使之可以支持计算能力很弱的硬件平台,比如运行主频只有 100MHz,运行内存只有 8MB 的功能手机,也可以支持充分发挥高端计算平台的能力,比如使用 GPU 来渲染图形界面,实现动画效果以及界面特效等。

当然,MiniGUI 也有劣势。主要的劣势在于入门门槛较高。飞漫软件在 2010 年左右发布的 miniStudio 工具部分解决了这个问题,但这个工具并没有得到有力的推广和广泛的应用,缺乏长期的维护和演进。

为了建设良性的开源社区发展氛围,抓住智能物联网设备兴起的风口,飞漫软件已经启动了新一轮的 MiniGUI 开发计划,并将于近期发布 MiniGUI 3.2.0 版本。

MiniGUI 3.2.0 基于早期的 MiniGUI 3.0.13 版本开发,主要增强有:

    全面支持 64 位架构。

    消除了大量编译缺陷,使之兼容最新的 GCC 版本。

    将 mGUtils、mGEff、mGPlus、mGNCS 等整合到了一起,并提升了 mGNCS 的地位,使之作为 MiniGUI 应用开发的首选框架。

    作为 mGNCS 扩展控件库的实例,飞漫软件还发布了 mGNCS4Touch 组件以及 cell-phone-ux-demo 演示系统,用以展示 MiniGUI 3.2 及其组件的使用以及可以达到的界面效果。

同时,飞漫软件还将以共享软件(任何人可免费下载、安装和使用)的形式发布 miniStudio 1.2.1 版本。为了降低开发者的入门门槛,飞漫软件还准备了可直接安装到 Ubuntu Linux 16.04 LTS 系统上的软件包,使用几个简单的命令,即可在 Ubuntu Linux 上轻松搭建 MiniGUI 开发环境。

在正式发布之前,着急的开发者可以访问本人的 GitHub 账号(原文链接):

https://github.com/VincentWei

来获取 MiniGUI、mGUtils 等组件,以及示例程序的完整源代码。

值得一提的是,当年 mGNCS 和 miniStudio 的架构师和主要开发者董大神,近期还发布了一个项目:MiniGUIScripted,提供了 MiniGUI/mGNCS 的 JavaScript、Python 以及 Lua 脚本语言的绑定支持。有了这个项目,在不久的将来,我们甚至可以使用 JavaScript 等脚本语言来开发 MiniGUI 应用。该项目的 GitHub 仓库如下:

https://github.com/VincentWei/minigui-scripted

飞漫软件围绕 MiniGUI 的开发,近期将围绕如下几个方面进行:

    完善使用和开发文档。包括用户手册、编程指南以及 API 参考手册。飞漫软件正在 http://wiki.minigui.com/twiki/bin/view/Products/WebHome TWiki 站点上整理这些文档。

    为 OpenGL ES 1.1/2.0 开发 EGL 支持,用以实现 3D 图形渲染以及类似智能手机的界面特效。

    尝试开发一款基于 Linux 和 MiniGUI 的 miniLinux,以方便基于 Linux 和 MiniGUI 的嵌入式设备或者智能物联网设备开发。目前,您可以使用 miniLinux 提供的脚本在 Ubuntu 上编译 MiniGUI 3.2 以及 UXDemo 示例程序。

    持续演进 miniStudio 工具。

敬请期待!

#103 Re: ESP32/ESP8266 » 问个c基础问题:程序的运行路径 » 2018-03-31 16:32:43

确实如此啊,中午装了QT creator
按网帖的零碎指导设定了各种参数,安装了MINgw
结果还是“Error while building/deploying project untitled2 (kit: wincc)
When executing step "Make"”

再次查找各种网帖,仍未奏效
FluxBB bbcode 测试
附图一张,以示哀悼~

#104 Re: ESP32/ESP8266 » 问个c基础问题:程序的运行路径 » 2018-03-31 11:46:51

尝试安装qt,根目录磁盘空间不足~
来日再战~~

#105 Re: ESP32/ESP8266 » 问个c基础问题:程序的运行路径 » 2018-03-31 10:39:31

嗯,你8楼的那个问题,我根本没遇到,因为我用的uBUNTU 16

----------------问题不一样的分割线--------------

我的意思是你用vs或qt调试的时候应该会用到和我一样的问题才对,因为qt debug的时候毕竟qt和nuk毕竟不在同一个目录下

#107 Re: ESP32/ESP8266 » 问个c基础问题:程序的运行路径 » 2018-03-31 09:47:49

我总是隐隐哪里好像不对。心有不甘.png

你的nuklear debug的时候应该遇到同样的问题才对啊

#108 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 贡献个V3S的原理图,顺便问下RGB数据线高低位的问题 » 2018-03-31 00:04:33

v3s资料的303页有寄存器说明

7.2.5.7. TCON0_CTL_REG (Default Value: 0x00000000)
Offset: 0x040
Register Name: TCON0_CTL_REG
R/W Default/Hex Description
31 R/W 0 TCON0_En
0: disable
1: enable
Note: It executes at the beginning of the first blank line of TCON0 timing.
30:29 / / /
28 R/W 0 TCON0_Work_Mode
0: normal
1: dynamic freq
27:26 / / /
25:24 R/W 0 TCON0_IF
00: HV(Sync+DE)
01: 8080 I/F
1x:reserved
23 R/W 0 TCON0_RB_Swap
0: default
1: swap RED and BLUE data at FIFO1
22 / / 21 R/W 0 20 / 19:9 / 8:4

#109 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 贡献个V3S的原理图,顺便问下RGB数据线高低位的问题 » 2018-03-31 00:01:46

v3s有个寄存器可以设定R B交换的。比如原来的输出顺序是RGB,通过寄存器设置可以调整成BGR输出

#112 ESP32/ESP8266 » 问个c基础问题:程序的运行路径 » 2018-03-30 15:15:45

kgp0213
回复: 12

FluxBB bbcode 测试 icon下有相应的文件
FluxBB bbcode 测试源码中指定了对应的目录
FluxBB bbcode 测试 可执行文件extended与icon在同一个目录下
FluxBB bbcode 测试可执行文件extended与icon在同一个目录下

此时在example目录下执行extended,程序运行正常~

FluxBB bbcode 测试 在上一级目录下(例如nuklear目录下)执行,提示找不到文件~

请问各位大佬这是为何?

#113 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » hostmybytes买了个vps主机,被系统无缘无故取消,发ticket对质。发现美国人做的东西真TMD垃圾。 » 2018-03-30 15:04:47

晕哥 说:

没有解决, 5刀就这样活生生 被 hostmybytes.com 这个垃圾黑了,
这种服务态度,就等着被中国秒杀吧.

中国此类服务不都是被政府秒杀了吗

#115 Re: 计算机图形/GUI/RTOS/FileSystem » 【github项目】又发现一个轻量级开源UI nuklear,酷炫界面,支持矢量字体。 » 2018-03-23 13:14:15

晕哥 说:

柳暗花明又一村,终于找到解决方案了: https://github.com/skeeto/opengl-demo

如果您的GPU不支持OpenGL 3.3并且您使用Mesa 10.0+,则可以使用环境变量强制渲染软件 LIBGL_ALWAYS_SOFTWARE=1。

把环境变量强制加上,终于搞定这个棘手的问题:

yunge@ubuntu:/tmp/nuklear/example/bin$ LIBGL_ALWAYS_SOFTWARE=1 ./extended
piemenu selected: 4
pushed!
piemenu selected: 4
piemenu selected: 4
piemenu selected: 4

有图有真相:
https://whycan.cn/files/members/3/QQ20180218185909.png


补充一下顺序,
安装(ubuntu 16环境):
sudo apt install libglew-dev
sudo apt install libglfw3-dev
(很遗憾,这两部没有碰到任何问题,开心脸.jpeg)
下载https://github.com/vurtun/nuklear.git
进入~/nuklear/example 目录
make
进入  ~/nuklear/example/bin$
~/nuklear/example/bin$ ./extended
demo画面应该就出来了

#119 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 据说 99% 买自动洗碗机的人都后悔了。。。 » 2018-03-22 11:05:46

有一点不好的地方就是餐具里面不能粘剩余饭菜,如果粘了会怎么样?
有没有粘剩菜的图片?

#126 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 试一试JLINK v9 烧写 spi flash (W25Q256, MX25L256等) » 2018-02-07 10:14:50

校验通不过我怀疑是你飞线传输不稳定造成的。

晕哥 说:
Lvy 说:

楼主:可否分享下是jlink和flash之间是怎么连线的?

等我把所有的问题确认完之后, 上传一份连线方法。
目前发现 jlink v6.10d 软件版本好几个问题,
不能保存flash回读文件,
校验通不过,发现有些字节写进去不对,
目前不清楚是jlink软件版本问题, jlink 时钟速度问题,还是硬件问题.

#127 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 买个全志arm9 F1C100s 方案的唱戏机回来拆一拆 » 2018-01-22 22:59:46

晕哥,修改lcd驱动参数在哪个目录下面呢? arch 下 f1c100s下的driver下面没找到

#132 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » F1C100s资料集合 » 2018-01-19 11:29:31

补一个: 先科唱戏机(看戏机)F1C100s方案运行XBOOT大神的XBOOT系统步骤
https://whycan.cn/t_439.html

#133 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 哈,用JLink把全志allwinner V3s内置的BROM读出来了 » 2018-01-17 17:41:53

f1c100s应该也可以这么操作吧?可是类似第一张图片上的地址列表哪里可以搞来?

#135 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » 买个全志arm9 F1C100s 方案的唱戏机回来拆一拆 » 2018-01-17 15:35:34

晕哥,F1C100s的内存映射表也是靠猜的吗? 参考哪个芯片猜的?

#142 Re: 全志/Allwinnertech/V3S/A64/H6/A20/A33/F1C100s » v3s现在有办法通过jlink单步裸奔么? » 2018-01-15 16:49:16

找了好久这样的帖子,终于找到这个有技术的帖子了,强烈的支持楼主。

页脚

Powered by FluxBB